我意识到这可能是相对利基,但也许这就是为什么无论如何这都是好事。我正在寻找一个硬件多输入录音控制台(例如Alesis IO 26)来接收Adat lightpipe 8声道输入来进行信号处理。由于我还没有获得该设备并且需要弄清楚这是否可行(预算问题),我想问一下是否有人有任何经验来获取Java中的所有这8个数据输入?我已经看过很多使用Javax.sound.sampled库录制声音的例子,但是我找不到任何超过2的多声道信息。我感兴趣的是将8个声道单独作为单声道源采样到在它们上执行一些简单的DSP。硬件设备是否会被视为一个混音器? 8个通道表示为8行?我希望我的术语合适。
如果有人可以向我指出任何相关信息,我将不胜感激。谢谢!
答案 0 :(得分:2)
根据您运行的Java版本,运行的平台以及正在运行的声卡类型,可以在Java中实现多通道音频。查看优秀的Java Audio Faq了解更多详情。我从来没有能够在所有平台上可靠地使用它。
如果你真的关心做强大的多声道音频,我建议使用C API,例如PortAudio,Juce或PulseAudio。
我和PortAudio以及Juce都有很好的运气。
要在Java中使用它们,您需要为C API创建一个JNI接口。
这显然比使用javax.sound更有用,但它可以让您更好地控制所使用的音频硬件。根据我处理音频设备的经验,与硬件相差太远(即4层抽象而不是2层)通常会使您无法进行严肃的多通道,高位深度,高采样率音频。
答案 1 :(得分:1)
我已经实现了类似的Terratec卡级联到32个输入,当时唯一的库是Jsyn。
一旦你了解它,它就是一个非常好的图书馆。
http://www.softsynth.com/jsyn
我不确定是否还有其他任何有用的方法。
答案 2 :(得分:1)
我刚刚为PortAudio添加了一个Java JNI包装器。计划是与PortAudio源一起保持这一点。 PortAudio支持多声道音频,其中N> 2。
今天,9/3/12,JPortAudio仍处于alpha模式。当你读到它时,它可能是稳定的。
http://www.portaudio.com/docs/v19-doxydocs/java_binding.html
答案 3 :(得分:0)
我无法直接回答javax.sound API是否适用于多渠道(但根据API文档应该如此)。
然而,我已经采用另一种方式进行使用Java的多声道音频处理,这也可能对您有用。我使用Jack(Jack Audio Connection Kit)将信号传入和传输到音频设备,然后使用JJack库来执行信号处理。 你没有提到你的目标操作系统。我在Linux下成功使用了这种方法。 AFAIR在途中有一个用于Jack的Windows端口。
侨, 榆树