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

时间:2009-01-12 08:36:41

标签: java audio-recording javasound

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

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

4 个答案:

答案 0 :(得分:2)

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

如果你真的关心做强大的多声道音频,我建议使用C API,例如PortAudioJucePulseAudio

我和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端口。

侨, 榆树