Una de las cosas que más rabia me da cuando uso Sonic Pi en Ubuntu es no poder escuchar música en el navegador o reproductor al mismo tiempo. Si quiero escuchar una canción para usar algún efecto, melodía o ritmo de batería, primero tengo que apagar Sonic Pi, JACK, escuchar la canción y luego volver a encender JACK, Sonic Pi y repetir la operación varias veces hasta que conseguir lo que pretendía. Un verdadero coñazo!

500px-pulseaudio-diagram-es-svg

Este meollo es resultado de cómo funciona el sonido en GNU/Linux. De forma simplificada, Sonic Pi utiliza el servidor de audio de SuperCollider para sintetizar el sonido mediante ALSA, el servidor de sonido principal de GNU/Linux. Éste se encarga de trasladar el sonido de la tarjeta de audio, conectada al Kernel Linux y lo distribuye a las diferentes aplicaciones (Sonic Pi, SuperCollider,…) y otros dispositivos de salida (como altavoces o auriculares). La mayoría de distros actuales tienen otro servidor, digamos que más moderno, Pulse Audio, que recibe el sonido de ALSA y lo distribuye por las aplicaciones y demás dispositivos.

Y aquí viene el problema, al iniciar el servidor de JACK – que utiliza ALSA -, si nuestra distro usa también PulseAudio, puede interferir en el sonido de algunas aplicaciones1, como por ejemplo Firefox2. Es decir, si utilizamos Sonic Pi o SuperCollider en una distro GNU/Linux, el servido de JACK bloquea la señal de audio que recibe de ALSA y no permite que salga por Pulse Audio.

Cadence

La solución parece ser utilizar3 Cadence, desde los repositorios de KXStudio, que permite crear un puente entre ALSA y JACK, aislando PulseAudio. Así podemos utilizar de forma independiente ambas. Es decir, podemos utilizar Sonic Pi mediante ALSA y escuchar a su vez música en nuestro reproductor de sonido o desde el navegador a traves de Pulse Audio.

KXStudio es una distribución, basada en Ubuntu, dedicada a la producción y edición musical que además proporciona multitud de aplicaciones y plugins en sus repositorios compatibles con Debian y Ubuntu, como por ejemplo, Aria Maestosa, que instalé en un post anterior.

Instalar Cadence

NOTA: Si QJackCtl está instalado en nuestro ordenador, debemos borrarlo antes de instalar Cadence ya que ambos se encargan de la misma tarea e interferirían. Podemos hacerlo desde Synaptic, el Centro de Software de Ubuntu o desde la terminal con el siguiente comando:

sudo apt remove qjackctl

Para instalar Cadence debemos añadir los repositorios oficiales de KXStudio, para ello, como aconsejan ellos mismos, lo mejor es ir a su página web y seguir las instrucciones que figuran en ella.

Tras instalar los repositorios de KXStudio, ya podemos instalar Cadence. Además de éste4, necesitamos instalar el paquete pulseaudio-module-jack que es el módulo de JACK para PulseAudio. Desde la terminal ejecutamos:

sudo apt-get install cadence pulseaudio-module-jack

Después de instalar Cadence

Tras instalar Cadence es recomendable habilitar el audio en tiempo real de JACK, que ya traté en un post anterior y agregar nuestro usuario al grupo audio, para mejorar el rendimiento y la latencia. Para agregar nuestro usuario al grupo audio podemos hacerlo desde Usuarios y Grupos en el Menú de Configuración o desde la terminal, con el comando:

sudo usermod -a -G audio USUARIO

NOTA: Sustituye USUARIO por el nombre de tu usuario.

Configurar JACK en Cadence

Ya tenemos todo preparado para configurar Cadence. Al abrirlo aparece una ventana con tres pestañas:

  • System: En la parte izquierda del panel se muestra información sobre el sistema y a la derecha, el estado actual del servidor JACK y los bridges.

  • Tools: Un set de aplicaciones para la producción de audio, Catarina, Catia, Claudia y otras como Cadence-JackMeter y Claudia-Launcher.

  • Tweaks: Permite configurar algunas tareas que relacionan el audio con el sistema5.

Me voy a centrar en la pestaña System.

cadence1

En la parte superior se encuentra información sobre el estado de JACK (JACK Status) – realtime, carga de CPU, Xruns, tamaños del Buffer (frames/seg), sample rate (kHz) y latencia – y los controles (JACK Controls) para encender, parar y configurar el servidor (muy similar a otras herramientas como QjackCtl).

Más abajo encontramos la opción para iniciar JACK al loguearnos “Auto-start JACK or LADISH at Login”. Si usas el ordenador exclusivamente para hacer música es recomendable marcarlo. Te ahorrarás quebraderos de cabeza!

En la parte de abajo de la pestaña se encuentran la configuración de los puentes –Bridges– de ALSA, MIDI y Pulse Audio.

JACK Bridge

El puente de ALSA permite que una o más aplicaciones ALSA puedan acceder al servidor JACK cuando se ejecuta, así te aseguras que mientras usas JACK las aplicaciones que no la usan, como Firefox tengan audio. Si hemos elegido que JACK se ejecute al inicio el puente (bridge) de ALSA se enciende actomaticamente. Hay varias opciones a escoger pero si usas Pulse Audio hay que seleccionar “ALSA-> PulseAudio -> JACK”.

El puente ALSA MIDI sirve, como su nombre indica, si utilizamos herramientas MIDI. Yo no voy a utilizarlas, así que de momento no hay que hacer nada en este apartado.

Por último, el puente de Pulse Audio. Para que funcione está opción, es necesario tener instalado el paquete pulseaudio-module-jack.

PulseAudio bridge

Simplemente hay que seleccionar la opción “Auto-start at login” y darle al botón START.

Ahora, sólo queda reiniciar el sistema! (y cruzar los dedos para que todo funcione)

Problemas con PulseAudio

Es posible que no tengas sonido en Firefox y aplicaciones que usen Pulse Audio si no activas el Auto-start at login de JACK. Al instalar Cadence, éste se apodera de la gestión del audio y deja apagados ciertos servicios, por lo que, si el servidor de JACK no arranca al comenzar sesión, Cadence no permite la ejecución de Pulse Audio6. Por supuesto, podemos “levantar” Pulse Audio escribiendo pulseaudio –start en la terminal, pero es una solución temporal, que tendremos que repetir cada vez que encendamos el ordenador.

La solución definitiva pasa por eliminar el archivo de configuración de Pulse Audio ~/.pulse/client.conf, que se encuentra en la carpeta de nuestro usuario.


  1. Sonic Pi FAQ 
  2. Más aún con la nueva versión 52 que solo utiliza Pulse Audio. Fuente: OMG! Ubuntu 
  3. How to configure JACK with PulseAudio 
  4. Podemos instalar varios paquetes adicionales, como kxstudio-default-settings e indicator-cpufreq (applet para la bandeja del sistema que permite optimizar el procesador dela reproducción de audio, seleccionando “Rendimiento”) para mejorar la “experiencia” pero no son imprescindibles. Fuente: staberman 
  5. Algunas opciones no estan disponibles en todos los sistemas. 
  6. Foro Linux Musicians 
Anuncios