Sonido Linux: ¿cómo funciona y por qué necesito encadenar 3 architectures para usar JACK?

Novato de Linux: ¿Cómo uso Jack? ¿Cómo funciona el sonido de Linux?

Tengo una aplicación que intenta emitir sonido a través de ALSA o JACK, pero no escucho nada.

Aquí hay un par de artículos , de los cuales aprendí que ALSA es el controller de sonido en modo kernel para Linux, y libasound es la biblioteca de espacio de usuario a la que se conectan las aplicaciones.

Además PulseAudio y JACK son serveres de audio / enrutadores para permitir que múltiples aplicaciones controlen múltiples aplicaciones y hardware.

Aquí hay un buen artículo sobre cómo enrutar all-applications -> jack -> PulseAudi -> ALSA . Parece bastante simple, pero no entiendo por qué la necesidad de tantas capas. ¿Por qué no directamente a Jack alsa?

  • ¿Cómo enumero las aplicaciones del cliente, usando alsa? (Necesito averiguar por qué no escucho nada)
  • ¿Cómo envío el jack directamente a alsa? ¿O debería hacer lo que señala el último artículo, pasarlo por PulseAudio?
  • Después de todo esto, ¿cómo puedo hacer una list de las aplicaciones de todos los clientes en Jack?

Puedo entender tu confusión, he estado allí 🙂

Comencemos con el hecho de que PulseAudio, como JACK, son serveres de sonido en cierto sentido, aunque con diferentes objectives en mente. JACK está dirigido al usuario de audio profesional / músico, mientras que PA tiene como objective proporcionar facilidad de uso.

La ruta de audio es un poco diferente de lo que tienes en tu pregunta.

 all-applications->PA to jack sink->jack audio server -> libasound and ALSA. 

De esta forma, el PA que es, como es habitual, la salida de audio pnetworkingeterminada (sumidero) canaliza el sonido a jack. Lo anterior se ve así en el patchbay de Jack (después de que los modules sumidero y fuente hayan sido cargados con load-module )

jack patchbay

las inputs del 'sistema' son provistas por el backend ALSA, mientras que el receptor PA JACK y la fuente son proporcionados por los modules PA a jack.

Si está ejecutando un poco de ubuntu, puede agregar lo siguiente en qjackctl -> configuration -> pestaña "opciones" -> ejecutar después del inicio

 pactl load-module module-jack-sink channels=2; pactl load-module module-jack-source channels=2; pactl set-default-sink jack_out; pactl set-default-source jack_in 

Lo anterior debe cargar los modules "PA to jack" (2 canales L + R para cada uno) y configurar el dispositivo de reproducción pnetworkingeterminado para todas las aplicaciones para que sea el module de receptor PA a jack. Además, conecta la input de línea / micrófono a la input de fuente PA a jack, de modo que las aplicaciones que necesitan acceso al dispositivo de input pnetworkingeterminado (como skype) pueden acceder a través del module fuente de PA a jack.

Ahora, si una aplicación emite sonido a ALSA, debería reproducirse a través del dispositivo pnetworkingeterminado, es decir, a través de pulseaudio. Lo que hace la pregunta, ¿realmente necesitas Jack? ¿Y qué aplicación es esa?

En cualquier caso, si la aplicación es compatible con jack, debería aparecer en el patchbay de qjackctl y luego puedes conectarlo en la ruta de audio como mejor te parezca.

Para más información, mira aquí . Además, las preguntas frecuentes y la wiki de JACK son tremendamente útiles.