tutorials tutorial libreria español docs audioclip java usb record microphone javasound

tutorial - ¿Grabación USB multicanal con Java Sound API?



libreria audioclip java (3)

Creo que una forma sencilla de hacerlo sería utilizar Soundflower y Soundflowerbed.

No puedo ver cómo hacer las entradas de los micros USB a Soundflower y luego canalizarlas a un Java.

Parece que ya tienes instalado Soundflower. Soundflowerbed se encuentra en la misma imagen de disco que Soundflower y es una aplicación de barra de menú. Le permite enrutar el sonido entre aplicaciones que no tienen controles integrados para seleccionar dispositivos de sonido. Instala eso desde la imagen de disco y haz clic para ejecutarlo.

Todo lo siguiente utilizará mi Echo Audiofire 4, pero en principio debería funcionar en cualquier dispositivo de audio.

Utilizando Soundflowerbed

Abra Soundflower y marque el dispositivo de audio que desea usar en Soundflower (16ch). Como soy un usuario nuevo, no puedo publicar imágenes pero están vinculadas a continuación. Si obtengo la recompensa, editaré la publicación para incluir las imágenes en línea.

Desde aquí, utilizarías Soundflower (16ch) como dispositivo de entrada de audio en el sonido Java.

Creando un dispositivo de audio agregado

Una forma alternativa de resolver esto si eso no funciona es crear un dispositivo agregado. Abra Aplicaciones> Utilidades> Configuración de Audio Midi y haga clic en el signo más para crear un nuevo dispositivo agregado.

Marque el dispositivo que desea agregar. Solo desea su USBMIC (ya que soy un nuevo usuario SO, solo puedo publicar dos imágenes por respuesta, por lo que las dos siguientes están vinculadas aquí).

La parte clave que puede estar causándole problemas es el reloj del dispositivo. Si selecciona la Mac como la fuente del reloj, entonces puede ser más estable.

Si esto todavía no funciona, puede intentar agregar el audio incorporado de Mac al dispositivo agregado y convertirlo en el reloj maestro haciendo clic derecho en el dispositivo que desea que sea el maestro.

Otras opciones

Finalmente, no he usado esto antes, pero Pulse Audio (búsquelo en Google, no puedo insertar más enlaces en esta publicación) podría ser una posible solución para mezclar sus transmisiones de audio. Aunque parece bastante pesado.

Estoy tratando de grabar / procesar algo de audio de tres micrófonos USB con Java Sound en Snow Leopard (pero puedo cambiar a Windows si arregla las cosas). El problema es que cuando intento usar el mezclador que corresponde al micrófono USB, Java Sound me dice que la línea no es compatible. Específicamente, dice esto ...

Mezcladores disponibles:

Java Sound Audio Engine

Serie USBMIC # 041270067

Entrada incorporada Micrófono incorporado

Flores de sonido (2 canales)

Flor de sonido (16ch)

Excepción en el hilo "AWT-EventQueue-0" java.lang.IllegalArgumentException: Línea no compatible: interfaz TargetDataLine compatible con el formato PCM_SIGNED 96000.0 Hz, 8 bits, estéreo, 2 bytes / cuadro

... cuando le pido que seleccione el mezclador USBMIC:

Mixer mixer = AudioSystem. getMixer(mixerInfo[1]);

He intentado hacer coincidir el formato de audio con las especificaciones exactas de los micrófonos (16 bits, 44100 Hz, estéreo) y no hizo ninguna diferencia.

El problema está surgiendo aquí:

final TargetDataLine line = (TargetDataLine) mixer.getLine(info);

Parece que el mezclador y TargetDataLine no se gustan. ¿Hay alguna manera de hacer que estos dos se combinen y se lleven bien?

Los micrófonos que estoy usando son un poco extraños. Fueron hechos para ser utilizados en un videojuego de karaoke llamado SingStar. Los propios micrófonos tienen conectores de línea mono estándar que se conectan a un pequeño concentrador (dos a un concentrador) que los convierte en un único conector USB macho. Sin embargo, a pesar de la extrañeza, parecen funcionar perfectamente bien con Audacity como canales separados, por lo que la grabación multicanal con ellos es claramente posible, pero quizás no en Java.

También he considerado usar un programa como Soundflower que comparta audio entre diferentes programas. Sin embargo, no estoy seguro de que esto funcione, ya que no puedo ver cómo hacer que las entradas de micros USB a Soundflower y luego canalizarlas en un Java. Un experimento rápido me mostró que podía grabar audio en Audacity desde los micrófonos, canalizarlo a través de Soundflower y luego procesarlo en mi programa Java. Sin embargo, lo que me gustaría hacer es que todo suceda en tiempo real en Java.

¿Alguien familiarizado con este tipo de problema?


El AudioFormat no coincide con el formato compatible con TargetDataLine. No sé si fue un error tipográfico o no, pero la Excepción arrojada dice que TargetDataLine admite audio de 8 bits y, justo debajo, dice que está utilizando un AudioFormat de 16 bits. También admite hasta 2 bytes por fotograma, ¿qué tan rápido y en qué tamaño intenta leer los datos? Lo siento si eso no ayuda, pero pensé en señalarlo en caso de que se pasara por alto.


Según mi investigación, especialmente en hilos como this , es muy probable que el micrófono que está utilizando esté causando el problema. El hilo indica que el micrófono es incluso un problema cuando se trata de cambiar de juego, así que supongo que también será un problema al cambiar de plataforma.

Mi sugerencia es que, si aún no lo ha intentado, ¡utilice un micrófono diferente! La mayoría de los micrófonos con los que he entretenido tienen controladores de chips especiales que convierten los datos en datos compatibles para el sistema de juego. Dado que está utilizando esto en un sistema operativo para la computadora, probablemente esté recibiendo algunos efectos muy extraños que no obtendría en un sistema de juegos como Playstation u otros.

Esperemos que esto ayude! ¡Feliz codificación!