How to sample multi-channel sound input in Java

馋奶兔 提交于 2019-12-04 11:50:58

问题


I realised this might be relatively niche, but maybe that's why this is good to ask anyway. I'm looking at a hardware multiple input recording console (such as the Alesis IO 26) to take in an Adat lightpipe 8 channel input to do signal processing. As I have yet to acquire the device and need to work out whether this is feasible (budgetary concerns), I'd like to ask if anyone has any experience tapping all these 8 inputs for data in Java? I've seen tons of examples of recording sound using the Javax.sound.sampled libraries but I couldn't find any information on multichannel that is more than 2. What I'm interested in is sampling the 8 channels individual as mono source to perform some simple DSP on them. Would the hardware device be treated as one mixer? And the 8 channels be represented as 8 lines? I hope I got my terminology right.

I would appreciate if someone can point me to any relevant information. Thanks!


回答1:


Multi-channel audio is supposed to be possible in Java depending on the version of Java you are running, the platform you are running on, and the type of soundcard you are running. See the excellent Java Audio Faq For more details. I've never been able to use this reliably across all platforms.

If you really care about doing robust multichannel audio, I would recommend using a C API, such as PortAudio, Juce, or PulseAudio.

I've had excellent luck with PortAudio and Juce both.

To use these in Java you would need to create a JNI interface to the C APIs.

This obviously is more work than just using javax.sound, but it gives you a lot more control over the audio hardware you are using. In my experience dealing with audio devices, being too far removed from the hardware (i.e. 4 layers of abstraction instead of 2) often removes your ability to do serious multi-channel, high bit depth, high sample rate audio.




回答2:


I have implemented something similar with Terratec cards cascaded to 32 inputs, the only library at the time was Jsyn.

Its a really good library once you get to know it.

http://www.softsynth.com/jsyn

I am not sure if there is anything else that can help.




回答3:


I have just added a Java JNI wrapper for PortAudio. The plan is to maintain this along with PortAudio source. PortAudio supports multi-channel audio where N>2.

Today, 9/3/12, JPortAudio is still in alpha mode. By the time you read this it may be stable.

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




回答4:


I cannot give you an answer directly to whether the javax.sound API works with multi channels (But according to the API doc it should).

However, I've gone another way for multi channel audio processing with Java, that may be working for you as well. I used Jack (Jack Audio Connection Kit) to channel the signals from and to the audio device and then the JJack library to perform signal processing. You did not mention your target OS. I used this approach successfully under Linux. AFAIR there was a Windows port for Jack on the way.

ciao, elm



来源:https://stackoverflow.com/questions/434803/how-to-sample-multi-channel-sound-input-in-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!