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

问题描述 投票:7回答:5

我意识到这可能是相对利基的,但也许这就是为什么无论如何要问这个问题。我正在看一个硬件多输入记录控制台(例如Alesis IO 26),以接收Adat光导管8通道输入来进行信号处理。由于尚未购买该设备,需要确定这是否可行(预算方面的问题),我想问一下是否有人有使用Java的所有这8个输入数据的经验?我已经看到了使用Javax.sound.sampled库录制声音的大量示例,但是我找不到多于2个的多声道信息。我感兴趣的是采样8个声道作为单声道源对它们执行一些简单的DSP。硬件设备将被视为一个调音台吗?并且8个通道代表8条线?我希望我的术语正确。

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

java audio-recording javasound
5个回答
2
投票

应该根据您所运行的Java版本,所运行的平台以及所运行的声卡的类型,在Java中实现多声道音频。有关更多详细信息,请参见出色的Java Audio Faq。我从未能够在所有平台上可靠地使用它。

如果您真的很想做健壮的多声道音频,我建议您使用C API,例如PortAudioJucePulseAudio

我对PortAudio和Juce都非常幸运。

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

显然,这不仅仅是使用javax.sound的工作,但它使您对使用的音频硬件有更多的控制。以我在处理音频设备方面的经验来看,与硬件的距离过远(即4层抽象层,而不是2层抽象层)通常会使您无法处理严重的多通道,高位深度,高采样率音频。


1
投票

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

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

http://www.softsynth.com/jsyn

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


1
投票

我刚刚为PortAudio添加了Java JNI包装器。计划是与PortAudio源一起维护它。 PortAudio支持多声道音频,其中N> 2。

[今天,2012年9月3日,JPortAudio仍处于Alpha模式。在您阅读本文时,它可能很稳定。

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


0
投票

我无法直接给您答案javax.sound API是否可用于多渠道(但是根据API文档,它应该如此。)>

但是,我采用Java进行多通道音频处理的另一种方法,也可能对您有用。我使用Jack(杰克音频连接套件)在音频设备之间来回传输信号,然后在JJack库中进行信号处理。您没有提到目标操作系统。我在Linux下成功使用了这种方法。 AFAIR在途中为Jack提供了Windows端口。

ciao,榆木


0
投票

[伙计们以为id会破坏这个线程,我刚刚能够使用jport实现一个针对sin波的小型测试用例之一。尽管我缺少有关该api的文档,但无法在任何地方找到它,即使上面的链接也不再指向任何东西。我知道它很旧,但我猜是不再使用端口音频的Java绑定吗?那里有任何新架构。...我听说JUCE很好

© www.soinside.com 2019 - 2024. All rights reserved.