如何在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,JucePulseAudio.

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

要在Java中使用它们,您需要创建一个到C API的JNI接口.

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

相关文章

Java中的String是不可变对象 在面向对象及函数编程语言中,不...
String, StringBuffer 和 StringBuilder 可变性 String不可变...
序列化:把对象转换为字节序列的过程称为对象的序列化. 反序...
先说结论,是对象!可以继续往下看 数组是不是对象 什么是对...
为什么浮点数 float 或 double 运算的时候会有精度丢失的风险...
面试题引入 这里引申出一个经典问题,看下面代码 Integer a ...