如何在Java中对多声道声音输入进行采样

我意识到这可能是相对利基,但也许这就是为什么这是好的问题无论如何。 我正在寻找一个硬件多输入录音控制台(例如Alesis IO 26)来接收Adat lightpipe 8声道输入来进行信号处理。 由于我还没有获得该设备并且需要弄清楚这是否可行(预算问题),我想问一下是否有人有任何经验来获取Java中的所有这8个数据输入? 我已经看过很多使用Javax.sound.sampled库录制声音的例子,但是我找不到任何超过2的多声道信息。我感兴趣的是将8个声道单独作为单声道源采样到对它们执行一些简单的DSP。 硬件设备会被视为一个混音器吗? 8个通道表示为8行? 我希望我的术语合适。

如果有人可以向我指出任何相关信息,我将不胜感激。 谢谢!

根据您运行的Java版本,运行的平台以及正在运行的声卡类型,可以在Java中实现多通道音频。 查看优秀的Java Audio Faq了解更多详情。 我从来没有能够在所有平台上可靠地使用它。

如果你真的关心做强大的多声道音频,我建议使用C API,如PortAudio , Juce或PulseAudio 。

我和PortAudio以及Juce都有很好的运气。

要在Java中使用它们,您需要为C API创建JNI接口。

这显然比使用javax.sound更多的工作,但它让您可以更好地控制您正在使用的音频硬件。 根据我处理音频设备的经验,与硬件相差太远(即4层抽象而不是2层)通常会使您无法进行严肃的多通道,高位深度,高采样率音频。

我实现了类似的Terratec卡级联到32个输入,当时唯一的库是Jsyn。

一旦你了解它,它就是一个非常好的图书馆。

http://www.softsynth.com/jsyn

我不确定是否还有其他任何可以帮助的方法。

我刚刚为PortAudio添加了一个Java JNI包装器。 计划是与PortAudio源一起保持这​​一点。 PortAudio支持N> 2的多声道音频。

今天,9/3/12,JPortAudio仍处于alpha模式。 当你读到它时,它可能是稳定的。

http://www.portaudio.com/docs/v19-doxydocs/java_binding.html

我无法直接回答javax.sound API是否适用于多通道(但根据API文档应该如此)。

但是,我已经采用另一种方式进行使用Java的多声道音频处理,这也可能对您有用。 我使用Jack(Jack Audio Connection Kit)将信号传入和传输到音频设备,然后使用JJack库来执行信号处理。 你没有提到你的目标操作系统。 我在Linux下成功使用了这种方法。 AFAIR在途中有一个用于Jack的Windows端口。

c,榆树