Pregunta

Me di cuenta de que esto podría ser relativamente nicho, pero tal vez por eso es bueno preguntar de todos modos. Estoy mirando una consola de grabación de entrada múltiple de hardware (como la Alesis IO 26) para tomar una entrada de 8 canales Adat lightpipe para hacer el procesamiento de la señal. Como todavía tengo que adquirir el dispositivo y necesito determinar si esto es factible (preocupaciones presupuestarias), me gustaría preguntar si alguien tiene alguna experiencia aprovechando estas 8 entradas para datos en Java. He visto toneladas de ejemplos de grabación de sonido usando las bibliotecas Javax.sound.sampled, pero no pude encontrar ninguna información en multicanal que sea más de 2. Lo que me interesa es probar los 8 canales individuales como fuente mono para realizar algunos DSP simples en ellos. ¿Se trataría el dispositivo de hardware como un mezclador? ¿Y los 8 canales se representarán como 8 líneas? Espero tener mi terminología correcta.

Agradecería si alguien me puede señalar cualquier información relevante. Gracias!

¿Fue útil?

Solución

Se supone que el audio multicanal es posible en Java dependiendo de la versión de Java que esté ejecutando, la plataforma en la que se esté ejecutando y el tipo de tarjeta de sonido que esté ejecutando. Consulte el excelente Java Audio Faq para obtener más detalles. Nunca he podido usar esto de manera confiable en todas las plataformas.

Si realmente le interesa hacer un audio multicanal robusto, le recomendaría usar una API C, como PortAudio , Juce , o PulseAudio .

He tenido excelente suerte con PortAudio y Juce ambos.

Para utilizarlos en Java, deberá crear una interfaz JNI para las API de C .

Obviamente, esto es más trabajo que simplemente usar javax.sound, pero le da mucho más control sobre el hardware de audio que está utilizando. En mi experiencia con los dispositivos de audio, estar demasiado alejado del hardware (es decir, 4 capas de abstracción en lugar de 2) a menudo elimina su capacidad de hacer audio multicanal serio, de alta profundidad de bits y alta velocidad de muestreo.

Otros consejos

He implementado algo similar con las tarjetas Terratec conectadas en cascada a 32 entradas, la única biblioteca en ese momento era Jsyn.

Es una biblioteca realmente buena una vez que la conoces.

http://www.softsynth.com/jsyn

No estoy seguro de si hay algo más que pueda ayudar.

Acabo de agregar un contenedor JNI de Java para PortAudio. El plan es mantener esto junto con la fuente PortAudio. PortAudio admite audio multicanal donde N > 2.

Hoy, 9/3/12, JPortAudio todavía está en modo alfa. Para cuando lea esto, puede ser estable.

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

No puedo darle una respuesta directa a si la API javax.sound funciona con canales múltiples (pero de acuerdo con el documento API debería hacerlo).

Sin embargo, he seguido otro camino para el procesamiento de audio multicanal con Java, que también puede estar funcionando para usted. Usé Jack (Jack Audio Connection Kit) para canalizar las señales desde y hacia el dispositivo de audio y luego la biblioteca JJack para realizar el procesamiento de la señal. No mencionaste tu sistema operativo objetivo. Usé este enfoque con éxito en Linux. AFAIR había un puerto de Windows para Jack en el camino.

chao, olmo

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top