Usando Jack con Rivendell para que no se apodere de la tarjeta de sonido

5 comentarios
Grabando Rivendell con Audacity. Al mismo tiempo, tenemos un navegador abierto y podríamos poner a sonar una canción en Youtube si así lo deseáramos. 
Si alguien ha intentado instalar y usar Rivendell en su computador personal siguiendo los consejos de la guía publicada en este blog unos meses atrás, se habrá dado cuenta de un molesto problema: Cuando se enciende el computador y Rivendell levanta sus servicios, se apodera de la tarjeta de sonido de tu computador, evitando que cualquier otro programa pueda usarla.


En una emisora con recursos suficientes, esto no es problema. Se tiene un computador dedicado exclusivamente para salir al aire, y nadie desea que se active un reproductor de música o un navegador web que, por accidente, emita sonidos que escuchen miles de personas. Por ende, la única aplicación con permiso para usar la tarjeta de sonido es Rivendell.

Pero, ¿qué hay si yo quiero tener Rivendell en mi computador a modo de demostración o simplemente para aprenderlo, y no quiero que se apodere de mi tarjeta de sonido, sino que trabaje junto a las demás de aplicaciones de audio de mi computador?

Esa es la pregunta que se hacen en muchas de nuestras emisoras comunitarias y alternativas, donde sólo hay un computador para toda la radio. El mismo computador que pone la música al aire es el mismo en el que una señora escribe las cartas al Consejo Comunal, o en el que el director de la radio está sacando las cuentas administrativas, o en el que alguien pueda estar haciendo una investigación por Internet, o incluso editando un audio. Allí no pueden darse el lujo de que una sola aplicación se apodere de la tarjeta de sonido y bloquée a las demás.

Hay una solución a todo esto: utilizar el servidor de sonido Jack. 

En este artículo, aprenderemos a instalar Rivendell en Ubuntu 10.04 con el servidor de audio Jack y con Pulseaudio funcionando al mismo tiempo. Primero que nada, ¿qué es Jack, qué es Pulseaudio y por qué queremos hacer todo esto?

Qué es un servidor de audio 

Ocurre que las tarjetas de sonido de hoy, sólo pueden ser utilizadas por una aplicación a la vez. "Epa, eso es mentira -me dirás-. Yo puedo tener un reproductor de MP3 sonando una canción, y al mismo tiempo un juego sonando disparos, y un navegador web mostrándome un video de Youtube, y todo eso sonando al mismo tiempo". Eso es porque se diseñó una pieza de software, llamada "servidor de audio", que se encarga de recibir todo el sonido de esas aplicaciones, lo mezcla y lo entrega a la tarjeta de sonido.


Qué es ALSA

En el pasado (hasta hace unos 4 ó 5 años), Linux venía únicamente con ALSA (Advanced Linux Sound Architecture), que no es otra cosa sino una serie de bibliotecas y controladores  que interactúan directamente con tu tarjeta de sonido y permiten que las aplicaciones se puedan conectar con ella. En esa época, ALSA era muy primitivo y sólo una aplicación podía usar tu tarjeta de sonido a la vez. En otras palabras, no podías escuchar un MP3 y jugar un videojuego al mismo tiempo, pues sólo una de las dos aplicaciones podía usar la tarjeta de sonido.

Fueron muchas las soluciones que trataron de implementarse para solucionar ese problema. Un grupo de programadores comenzó a trabajar en Jack, otros en Pulseaudio, ESD, aRts, mientras que el propio equipo de ALSA también trabajó en sus propias soluciones. Hoy, ese problema de ALSA está corregido, y de hecho, distribuciones de GNU/Linux como Debian Squeeze vienen configuradas únicamente con ALSA, y funcionan bastante bien reproduciendo muchos sonidos a la vez.

Qué es Pulseaudio

Pulseaudio es un servidor de sonido (una pieza de software que permite que múltiples aplicaciones puedan usar la tarjeta de sonido de tu computador), orientado principalmente al usuario común, y no al experto en audio. Es el sistema que viene ya preinstalado en Ubuntu, y a él se conectan aplicaciones como Firefox, Google Chrome,  juegos, reproductores de audio como VLC, Totem, Banshee, y una larguísima lista de etcéteras. Entendamos la diferencia: ALSA se conecta directamente a la tarjeta de sonido, mientras que Pulseaudio es una capa por encima de ALSA, que requiere a éste para funcionar.

Qué es Jack

Jack también es un servidor de audio, pero además de permitir que múltiples aplicaciones puedan usar la tarjeta de sonido, también permite que el usuario pueda conectar las diferentes aplicaciones de sonido entre sí, así como las entradas y las salidas. A diferencia de Pulseaudio, que busca simplificar las cosas lo más posible, Jack busca que el usuario tenga el control completo sobre todos los aparatos de audio y música conectados a su computador. Por ende, es más complejo y hay que dedicarle más tiempo para entenderlo.

Jack es muy usada por músicos y especialistas en audio debido a su gran flexibilidad; por ejemplo, permite que el sonido que emite una aplicación sea usado por otra en tiempo real, o que varias aplicaciones distintas puedan capturar audio desde una misma tarjeta de sonido, algo que no se puede hacer fácilmente en Windows u otros sistemas operativos.

Ardour y Jack siendo usados en un estudio de grabación. Ver más aquí.
Con Jack podrías hacer muchas tareas, como por ejemplo:
  • Grabar el audio de Youtube o de MySpace usando Audacity. 
  • Redireccionar la salida de programas como Rosegarden (secuenciador MIDI y compositor musical) o Hydrogen (batería electrónica) a un software como Ardour, que grabe el audio y le coloque efectos, y a otra como Darkice, que envíe el streaming por Internet. 
  • Si tienes una consola sofisticada, como una Mackie Onyx, podrías usar a Jack y Ardour para hacer grabaciones multipistas, en las cuales la voz y los diferentes instrumentos musicales se graben simultáneamente en pistas separadas, a las que podrías aplicar efectos más adelante. No hay absolutamente nada qué envidiarle a ProTools.
  • Los camaradas de Radio GNU utilizan Jack e IDJC para su emisora por Internet.
Estamos hablando entonces de Jack como un entorno para aplicaciones de audio de caracter profesional. Además de software como el antes mencionado, podemos encontrar a Hydrogen (batería electrónica y secuenciador), LMMS (alternativa a Fruity Loops o FL Studio), QTractor (editor de sonido, software de grabación y secuenciador MIDI), Internet DJ Console (software para mezclas, radio y shows en vivo), Mixxx (software para mezclas de DJs), el propio Rivendell (automatización de radioemisoras) y muchísimas otras.

Aquí estamos grabando con Audacity una canción de Latecnika que suena en MySpace. Con Jack hacemos la conexión desde "Pulseaudio JACK Sink" a "Portaudio" (Audacity), o también podemos especificar desde Audacity  Editar  Preferencias  Dispositivos  Grabación  Pulseaudio Jack Sink. Luego, al darle grabar, estaremos grabando lo que suene por el navegador web automáticamente.

Músicos usan aplicaciones como Ardour (para grabación profesional), Hydrogen (batería electrónica) y Jack para crear música.
Si Jack es ta increíble, ¿por qué no viene ya funcionando en Ubuntu, Debian, Canaima, etc.?

La razón principal es que Jack fue pensado para aplicaciones profesionales de audio, y no para las aplicaciones destinadas a usuarios normales, como los navegadores web, programas de mensajería instantánea y videoconferencia, videojuegos y similares. Para este tipo de aplicaciones, se han desarrollado los servicios Pulseaudio y Alsa.

Pulseaudio y Jack se pelean

Ahora bien, hay un problema interesante en Ubuntu, Debian y similares: Pulseaudio y Jack vienen configurados de forma tal que ambos no puedan trabajar simultáneamente. Por ejemplo,  si Pulseaudio está activado, Jack no se iniciará debido a que Pulseaudio tiene bloqueada la tarjeta de sonido (Jack dará el error: "the playback device "hw:0" is already in use. Please stop the application using it and run JACK again"). Si Jack se levanta primero y Pulseaudio después, te darás cuenta de que aplicaciones como Firefox simplemente no suenan.

Esto ha venido solucionándose en algunas distribuciones de Linux orientadas a trabajar con música y sonido profesional, como por ejemplo KXStudio, la excelente distribución de Linux creada por Filipe Coelho "falkTX", basada en Ubuntu. KXStudio viene configurada de forma tal que Pulseaudio y Jack puedan trabajar simultáneamente. De hecho, las aplicaciones Pulseaudio se ven en Jack, de manera tal que alguien podría grabar el sonido emitido desde Firefox usando una aplicación como Ardour o Audacity.

El principal problema de KXStudio es que utiliza el entorno gráfico KDE, al que muchas personas que están entrando en el mundo Linux no están acostumbradas (Debian, Ubuntu y Canaima  usan el entorno Gnome). Pero encontramos una solución a este problema: usaremos los repositorios de KXStudio para instalar en Ubuntu 10.04 lo que necesitamos.

Rivendell se apodera de la tarjeta de sonido

El hecho de que Rivendell, en modo ALSA, se apodere de la tarjeta de sonido de forma exclusiva, es problemático para los productores, musicalizadores y periodistas, pues ellos no sólo trabajan con Rivendell, sino con toda una gama de aplicaciones de sonido, como Audacity. En esas computadoras, usar Rivendell en modo ALSA ha sido algo realmente molesto, pues él se apodera de la tarjeta de sonido, evitando que Firefox y otras aplicaciones Pulseaudio suenen. 

Afortunadamente, Rivendell también funciona en modo Jack, lo que le da una enorme flexibilidad y permite tenerlo funcionando junto a aplicaciones como Audacity y Firefox muy fácilmente. Y Rivendell no sólo sonaría por las cornetas de tu computador, sino que podrías grabar el audio usando Ardour, y emitir por streaming con Darkice, todo eso desde un mismo computador. Podrías usarlo de esa forma para crear una emisora por Internet.

Los pasos

Una vez instalado Ubuntu 10.04, añadamos el repositorio de KXStudio. Desde una consola o terminal, escribamos lo siguiente:

$ sudo add-apt-repository ppa:kxstudio-team/ppa

Ahora añadamos el repositorio de Rivendell:

$ sudo nano /etc/apt/sources.list

Añadimos el siguiente texto al final del archivo, y lo guardamos:

# Rivendell
deb http://debian.tryphon.org lucid main
deb-src http://debian.tryphon.org lucid main

Añada las claves del repositorio de Rivendell

$ wget -q -O - http://debian.tryphon.eu/release.asc | sudo apt-key add -

$ sudo aptitude update

$ sudo aptitude install mysql-server mysql-server-5.1  mysql-query-browser mysql-admin

Una vez instale MySQL, le pedirá una clave para el usuario root, y luego le pedirá que la repita. Guárdela, pues Rivendell se la pedirá más adelante. En nuestro ejemplo, usaremos "1234".


Opcional: agreguemos los restricted-extras para que funcionen cosas como Youtube, las páginas web con Flash y similares. Esto instala algunos componentes de software privativo.

$ sudo aptitude install ubuntu-restricted-extras

Ahora, instalemos los paquetes de KXStudio necesarios para que Jack y Pulseaudio funcionen simultáneamente.

$ sudo aptitude install pulse-jack pulseaudio-module-jack jackd qjackctl

Con esto, habremos instalado los scripts y paquetes necesarios para que Jack y Pulseaudio funcionen simultáneamente, y las aplicaciones que usen sonido con Pulseaudio se enruten a través de Jack. Para asegurarse de que todo funciona, inicia en Aplicaciones → Sonido el programa "Jack Control". Se abrirá una pequeña ventanita, que controla el servicio Jack. Oprime el botón "Iniciar".


Al iniciarse, cualquier aplicación que use Jack (por ejemplo, Ardour, Hydrogen o Rosegarden) podrá funcionar y sonará sin problemas. Sin embargo, si abres Firefox o Chrome y tratas de navegar por Youtube o por cualquier página que emita sonidos, verás que nada suena. Esto se debe a que Jack se ha apoderado del sistema de sonido, bloqueando a Pulseaudio. Por fortuna, los scripts de KXStudio vienen al rescate.

Abre un terminal y desde el mismo ejecuta:

$ pulse-jack

Emitirá un mensaje diciendo que Pulseaudio está ejecutándose, lo detendrá, y luego lo reiniciará, enrutándolo a través de Jack. En teoría, ya deberías poder entrar a Firefox, meterte en Youtube o cualquier página web con sonido, y escucharlos.

Instalar Rivendell

Ahora, instalaremos Rivendell.

$ sudo aptitude install rivendell librivendell

Una vez se descargue, iniciará una serie de preguntas.
  • ¿Configurar? Responda sí.
  • Remove Rivendell audio store and database if purging Rivendell?  No
  • How should the Rivendell daemons be started? init.d
  • Password for Rivendell: (déjelo vacío)
  • Unix User Account: su usuario de Linux (en mi caso, "luigino")
  • UNIX group account for Rivendell: rivendell
  • Select the samplerate to use for Rivendell:  44100
  • Hostname for Rivendell: localhost
  • Enter the MySQL account with which to connect to the MySQL server: rduser
  • Enter the MySQL account password to use when connecting to the MySQL server: Aquí NO va a introducir la clave de root Mysql, sino otra distinta. Por ejemplo, "abcdef".
  • Select the audio adapters to use: JACK solamente
Ahora, ejecute rdadmin, ya sea desde un terminar o desde el menú de Aplicaciones → Sonido y Video.

$ rdadmin

Aparecerá una ventana indicándole que no se encontró la base de datos Rivendell. Aquí es donde usaremos la clave de root que introdujimos cuando instalamos Mysql: Usuario: root, clave: 1234

Indicará que se creó la base de datos, y luego le pedirá un usuario y una clave. En este momento ya estará funcionando el sistema básico de Rivendell. Para entrar al administrador, use "admin" y deje vacía la clave.

Jack con Rivendell

Para hacer que esto funcione así siempre, oprime el botón "Setup" de Jack Control (Jack Audio Conection Kit).
  • En "Opciones", activa "Script a ejecutar luego de iniciar" y coloca allí:
    pulse-jack; /etc/init.d/rivendell start
    (Esto hará que Rivendell se levante después que Jack)
  • Activa "Script a ejecutar al iniciar el servidor" y coloca:
    /etc/init.d/rivendell stop
    (En caso de que los servicios Rivendell estén levantados, queremos detenerlos antes de iniciar Jack, para que no bloquéen la tarjeta de sonido)
  • Activa "Script a ejecutar antes de detener" y coloca:
    /etc/init.d/rivendell stop
  • En "Otras", selecciona "Iniciar el servidor JACK al cargar qjackctl". Oprime Aceptar.
Luego, en el menú de Ubuntu selecciona "Sistema" → "Preferencias" → "Aplicaciones al inicio". Desactiva el Sistema de Sonido Pulseaudio y añade un nuevo item, con el nombre "Jack Control" y el comando "/usr/bin/qjackctl" (sin las comillas). Con estos pasos, lo que estamos diciéndole a Ubuntu es que, al iniciar sesión, ya no ejecute más el sistema de audio Pulseaudio sino que ejecute JackControl, y JackControl entonces iniciará Jack y se encargará de iniciar Pulseaudio.


Si hiciste todo bien, deberías poder reiniciar tu máquina y entonces, al iniciar sesión, se abrirá automáticamente JackControl y debería funcionar perfectamente cualquier aplicación que emita sonido, incluyendo Firefox con Flash, Ardour y Rivendell. 

Si usas Audacity, te aconsejo lo configures de una vez para que funcione con Jack y no con Pulseaudio. Podrás hacer cosas interesantes, como grabar desde Audacity los sonidos que se emitan desde Firefox.


Una vez todo te funcione, te aconsejo te dediques a aprender cómo funciona Jack y todas las bondades que trae. Puedes leer esta guía encontrada en la web de la distribución Musix.

¿Por qué no con Canaima Linux?

Tuve este artículo detenido algunas semanas, mientras buscaba una forma de hacer funcionar esto con las versiones candidatas de Canaima 3. De hecho, sí hay una forma: con el paquete "pulseaudio-module-jack" (que también es instalado por pulse-jack), que permite que aplicaciones de Pulseaudio se conecten al servidor Jack.

El problema es que, con Canaima Linux, algo pasa que evita que Pulseaudio y Jack funcionen bien con el plugin Flash, necesario en páginas como Youtube y Myspace. En KXStudio 10.04.3 se usan versiones mucho más nuevas de Pulseaudio y pulseaudio-module-jack de las que hay en Canaima 3 y Debian Squeeze 6, en las cuales este problema está superado. Habrá que seguir investigando y haciendo pruebas, o en todo caso prescindir del apoyo a Flash plugin, que cada día se vuelve más innecesario con la existencia de FlashVideoReplacer y otros complementos para Firefox.

Si a usted le gusta este artículo, ¡compártalo!
Digg it StumbleUpon del.icio.us Google Yahoo! reddit

5 Response to Usando Jack con Rivendell para que no se apodere de la tarjeta de sonido

sábado, 14 de mayo de 2011, 21:04:00 GMT-4:30

puedo instalarlo en una partición del mismo disco con su sistema operativo exclusivo y así tenerlo para probarlo sin molestias a las otras aplicaciones, ya instale ubuntu 10.10 y me funciona de maravilla todo, ahora quiero dar el siguiente paso, probar ribendell con todo para ver que hasta donde puedo comenzar la migración.
pedroteatro@gmail.com

lunes, 4 de julio de 2011, 15:16:00 GMT-4:30

Seguí todos sus pasos hasta que teclee la orden: $ pulse-jack
Por algun motivo que desconozco me devuelve:

/usr/bin/pulse-jack: línea 23: echo: error de escritura: No hay espacio libre en el dispositivo
/usr/bin/pulse-jack: línea 32: echo: error de escritura: No hay espacio libre en el dispositivo
E: main.c: Falló el inicio del demonio.
Failed to initialize Pulseaudio!

¿Alguna solución conocida al conflicto? :(

lunes, 4 de julio de 2011, 16:03:00 GMT-4:30

Lo m{as seguro es que tienes el disco duro lleno.

lunes, 23 de julio de 2012, 16:08:00 GMT-4:30

hola a todos no puedo ininicializar
pulse audio
E: [pulseaudio] main.c: Falló el inicio del demonio.
Failed to initialize Pulseaudio!

miércoles, 6 de febrero de 2013, 12:33:00 GMT-4:30

Sería excelente publicar el proceso de instalasión bajo las actuales distribuciones.

Publicar un comentario en la entrada