El Poderoso e incomprendido JACK

Desde la Red de Radios Comunitarias y Sofware Libre compartimos este tutorial, enfocado en el conocimiento y aprovechamiento de las capacidades de Jack un servidor de Audio, el mismo que viene en GNU/EterTics (GET), una distro para radios comunitarias pensado en producción radiofónica, automatización radial y streaming.

Sistemas de Audio

Cualquiera que desee usar GET u otra distro multimedia GNU/Linux para trabajar con aplicaciones de audio debe entender que es y como se relacionan entre si Jack, Cadence, Alsa, Ffado, Pulse Audio.

alt_text

En el gráfico podemos ver 2 sistemas, uno para Difusión, Producción Radiofónica, streaming y el otro para uso estándar de escritorio como ver vídeos, escuchar musica y comunicaciones.

Cada sistema inicia con el uso de una o mas aplicaciones de audio, pasando por una interface o administrador como Cadence o Alsa Mixer que nos permite controlar los servidores de audio Jack o Pulse Audio, finalmente pasa por Alsa quien nos conecta con la tarjeta de sonido y nos indica sus cualidades.

Como dijo Jack el destripador, vamos por partes.

ALSA

ALSA (Advanced Linux Sound Architecture) Arquitectura de Sonido Avanzada para Linux, ALSA es la parte del kernel Linux que brinda soporte para audio y MIDI, brinda una API para implementar aplicaciones que soporten audio y/o MIDI e implementa un conjunto de drivers (controladores). La aplicación alsa-mixer (terminal) y control de volumen son muy útiles para establecer los niveles y parámetros de las tarjetas de sonido.

Por otro lado están los controladores FFADO para tarjetas de sonido FireWire. Análogo a alsa-mixer o control de volumen, está FFADO Mixer.

En muchos casos y dependiendo del hardware, ALSA solo soporta que una aplicación utilice la tarjeta de sonido simultáneamente. Para solucionar esto y para brindar una experiencia transparente a los usuarios, se creó Jack y PulseAudio.

PulseAudio

Es un proxy entre las aplicaciones de usuario y ALSA. Es decir, es quien permite que aplicaciones como Firefox, el plugin de Flash, Skype, etc. utilicen los recursos brindados por ALSA. Normalmente no hay que preocuparse por la existencia de PulseAudio, excepto cuando se quiere lograr que aplicaciones de Jack y aplicaciones de PulseAudio funcionen simultáneamente.

ALSA, FFADO y PulseAudio vienen instaladas por defecto en la mayoría de las distribuciones de GNU-Linux.

Jack

Es un servidor que permite correr aplicaciones de audio y MIDI (Interface Digital de Instrumentos Musicales) con muy baja latencia, facilita la conexión interna simultanea de entradas y salidas entre varias aplicaciones de audio y vídeo, para compartir datos de audio y MIDI entre ellos mismos.

JACK se puede usar como un panel de conexión de audio virtual, como en una mesa de mezclas físicas, ofrece una flexibilidad sin precedentes para combinar diferentes herramientas en la forma que desee. se ha convertido en el estándar de interconexión de aplicaciones de audio profesional bajo GNU/Linux y es cada vez más popular en otras plataformas.

Algunas Aplicaciones trabajan directamente con Jack, tienen sus propias conexiones de enchufe, y sin la función de ALSA al puente de Jack, pero sus conexiones no son persistentes. Se conectarán temporalmente a JACK mientras se reproduce, pero abandonan su conexión tan pronto como se detiene la reproducción. Ejemplos de estas aplicaciones son: Audacity, Mplayer, VLC.

Jack y RT: El “kernel libre” versión 4.1.5 compilado para EterTICs Mezcal tiene el parche de Real Time funcionando

Cadence

Cadence es una herramienta gráfica que permite controlar y configurar Jack para hacer conexiones entre aplicaciones.

alt_text

¿Qué significa todo esto y cómo se usa?

System Information

Indica la versión del kernel o nucleo, el sistema operativo, si es de 32 o 64 bits. El núcleo podría decirse que es el motor de Linux, las distribuciones para multimedia incluyen un kernel de baja latencia que ha sido optimizado para conseguir el mejor rendimiento de JACK.

System Status

Ajusta la velocidad de funcionamiento de la CPU según la demanda (cuando hay muchas aplicaciones funcionando y consumiendo procesador, la CPU funciona mas rápido y cuando no, funciona mas lento). Cuando estamos trabajando con Jack, queremos que el governor deje trabajando a la CPU a su velocidad máxima todo el tiempo para evitar retardos y/o glitches en el audio.

System Checks

Verifica el núcleo actual, si el kernel esta en tiempo real y la baja latencia del sistema, también si el usuario está incluido en el grupo audio. Ser miembro del grupo de audio permite ejecutar JACK en modo de tiempo real para un rendimiento óptimo. Usted puede añadir su usuario al grupo audio ejecutando:

sudo adduser <username> audio

Reemplace con su nombre de usuario, al ejecutar este comando en un terminal. A continuación, tendrá que salir y volver a iniciar el sistema o antes de que su usuario será reconocido como estar en el grupo de audio.

JACK Status

  • Server Status le indica si el servidor JACK está funcionando o no. No se puede ejecutar ningún software JACK dependiente a menos que el servidor JACK se inicie con anterioridad.
  • Realtime le indica si JACK se está ejecutando con la programación en tiempo real o no. programación en tiempo real permite a Jack tener prioridad sobre otras aplicaciones, mejorando el rendimiento de las aplicaciones JACK.
  • DSP Load es la carga de la CPU actual estimada por JACK. Si se pone demasiado alta puede experimentar problemas de rendimiento.
  • Xruns son interrupciones o cortes en el audio que ocurren cuando el buffer de la memoria no proporciona un flujo constante de datos a una aplicación Jack. La clave del éxito con JACK es eliminar o evitar xruns.
  • Buffer Size Determina la latencia (retardo) entre el audio que está siendo recibido por Jack y el que se envía al dispositivo de salida. los tamaños de búfer más pequeños tienen menos latencia. 1024 es el valor predeterminado y es por lo general un valor seguro, pero pruebe valores diferentes para grabar o reproducir sin generar Xruns. El funcionamiento de los Buffer de menor tamaño depende de la potencia de la CPU y los detalles de su dispositivo de audio.
  • Sample rate es la frecuencia de muestreo, JACK reproduce y grabar audio en 44,1 kHz estándar de un CD de audio, 48kHz para trabajar con vídeo u otro tipo de audio. frecuencias de muestreo más altas permiten una mayor calidad, pero ocupan más espacio en disco. Incluso para fines profesionales.
  • Latency es el retraso de captura en JACK, mide el tiempo necesario para llenar el búffer de captura de audio. Este valor se determina con los ajustes en buffer Size y sample rate utilizados al iniciar JACK.

JACK Controls

  • Start Inicia el servidor JACK, esta es la forma recomendada para iniciar JACK.
  • Stop detiene el servidor JACK. Por seguridad es recomendable guardar y cerrar las aplicaciones que usen Jack.
  • Force restart obliga el reinicio del servidor JACK, pero es posible que pierda los últimos cambios realizados en la configuración de JACK.
  • Configure abre la ventana de configuración de JACK.
  • Switch Master le dice a Jack que aplique todos los cambios realizados en la ventana de configuración de JACK.
  • Auto-start JACK or LADISH at login te permite elegir: si desea iniciar JACK o un estudio LADISH. Cadence incluye una aplicación llamada Claudia que permite crear escenarios virtuales de aplicaciones de audio conectadas entre sí llamados estudio. Después de crear un estudio dentro de Claudia, puede utilizar CADENCE para configurar el arranque automático de este con todos los ajustes guardados.

JACK Bridges (Puentes)

La ventana principal CADENCE integra el control de JACK bridges, que permiten funcionar sin problemas Alsa y Pulse Audio junto a JACK.

El puente ALSA audio permite a una o más aplicaciones de audio ALSA acceder a su dispositivo JACK cuando se inicia, aplicaciones no-JACK como Firefox, Si usted ha elegido en Jack el puente ALSA audio, entonces iniciara automáticamente.

El puente ALSA MIDI debe estar en ejecución, si desea utilizar cualquier hardware MIDI.

El puente PulseAudio permite que las aplicaciones que usan Pulse Audio puedan funcionar a través del servidor JACK.

Configuración de Jack

Las opciones de configuración mas importantes de Jack se establecen dentro en la pestaña DRIVER de la ventana de Configuración JACK SETTINGS en Cadence, al mismo se puede acceder a través CONFIGURE que se encuentra en la ventana principal de Cadence.

alt_text

JACK Driver

La columna de la izquierda DRIVER, es para seleccionar el controlador que JACK configurara y utilizara la próxima vez que se inicie con Candence. Aquellos que utilizan dispositivos FireWire debe utilizar el controlador FireWire, por lo demás se debe seleccionar el controlador de ALSA para JACK.

Dentro de la configuración del DRIVER ALSA en cadence encontramos 3 opciones desplegables, son los más importantes ya que permiten seleccionar qué dispositivo (tarjeta de sonido), se utilizará para la entrada y salida de audio. Si selecciona el “Modo Dúplex ‘, se pueden asignar diferentes dispositivos ALSA para la entrada y salida de forma individual.

Esto podría ser útil, por ejemplo, si necesita una entrada de micrófono, pero quería tener la salida de sonido a través de un dispositivo de audio USB que no tiene una entrada de micrófono. En este caso, usted podría utilizar su tarjeta de sonido interna, que tiene una entrada de micrófono, como un dispositivo de entrada separada. Si no se selecciona el modo dúplex, en el menú desplegable superior podrá seleccionar el dispositivo ALSA para la entrada y salida de audio.

JACK Properties

Sample Rate, Buffer Size y Periods/Buffer determinan la latencia en JACK. Sus valores por defecto de 48000, 1024 y 2, respectivamente, deben trabajar con la mayoría de dispositivos, pero una latencia más de 10 ms no se considera lo suficientemente bueno como para ser llamado ‘‘en tiempo real’‘. Cualquier persona interesada en la grabación multipista puede experimentar con estos parámetros, para conseguir una latencia muy baja sin Xruns que su hardware lo permita. Es posible lograr 1ms latencia con buen hardware y la configuración correcta.

  • Sample Rate Debido a la forma en que se calcula la latencia, se recomienda que utilice 48000 o 96000 Hz para la latencia más baja.
  • Buffer Un búfer más pequeño da una menor latencia. El menor tamaño que la mayoría de los dispositivos pueden manejar es 64. Hardware de baja calidad no puede manejar bufers menores a 512.
  • Periods/Buffer Cuanto mayor sea el tamaño de período, mayor es la latencia, pero menor será la posibilidad de xruns. Experimentar con el uso de 2 o 3 Periods/Buffer.
  • Extra Latency Para lograr el más alto nivel de precisión en el doblaje debe proporcionar los valores de latencia adicionales (en frames) que se puede obtener con jack_iodelay.

Comprobación de errores con Cadence-logs

Si no puede iniciar JACK, puede averiguar cuál es la causa del problema mediante la comprobación de los registros de Cadence. Se puede acceder a cadence-logs en la pestaña “Tools” de la ventana principal de cadence o puede ejecutar cadence-logs desde una terminal.

JACK y FireWire

kmix y alsamixer no son compatibles con FFADO. Para ajustar los niveles, activar la alimentación fantasma y cambiar otras opciones para utilizar dispositivos FireWire ffado-mezclador después de haber iniciado la toma con el controlador FireWire. Si tiene problemas, corriendo ffado-diag en una terminal puede saber más en los registros de errores JACK de Cadence.

Configuración rtirq

Este es un paso opcional que puede ayudar a reducir la latencia. rtirq es un script que detecta los dispositivos de audio y les da prioridad con el kernel de acuerdo a una lista especificada en el archivo de configuración. la configuración por defecto rt IRQ se ve así:

RTIRQ NAME_LIST = "FireWire y USB i8042"

Aquí vemos que los dispositivos FireWire tienen prioridad sobre los dispositivos ALSA y USB debido a que es mencionado en primer lugar. Si está ejecutando un dispositivo principal USB es posible que desee hacer del USB el primer elemento de la lista, mediante la edición de esta línea en el archivo de configuración rtirq con un comando como:

sudo kate /etc/default/rtirq

Creación de un estudio simple LADISH usando Claudia

JACK permite el enrutamiento complejo de datos de audio y MIDI entre aplicaciones compatibles con JACK. Esto permite al usuario crear sus propios instrumentos personalizados o estudios virtuales mediante la combinación de varias aplicaciones JACK. Sin embargo, tener tal poder sería de uso limitado si se tiene que realizar manualmente estas configuraciones cada vez que se inicia cadence. Este problema lo soluciona el administrador de sesiones LADISH.

Cadence incluye una aplicación llamada Claudia, que utiliza el estándar de gestión de sesiones Ladish JACK para guardar y restaurar configuraciones de Jack o ‘Ladish Studios’. Claudia es una de las dos aplicaciones JACK patchbay para la creación y la eliminación de las conexiones JACK. Otra aplicación es Catia, un programa simple sin ninguna vista previa y no se pueden guardar las conexiones realizadas (y disponible para Windows y OSX, a diferencia de Claudia).

El uso de Claudia y Ladish se demuestra mejor con un simple ejemplo: Digamos que con frecuencia encuentra ganas de grabar el audio de una aplicación como Firefox y utiliza Qtractor para grabar el audio. Para ello debe asegurarse que el puente de Jack ALSA-audio en cadence se están ejecutando, debe conectar los puertos de captura alsa2jack a las entradas de Jack Qtractor.

En esta guía vamos a crear un estudio Ladish sencillo con Claudia que iniciara a Jack y el puente ALSA, Qtractor carga y conecta alsa2jack a sus entradas lista para grabar desde Firefox.

Creando un estudio LADISH

Antes de poder crear un estudio Ladish, es necesario asegurarse de que puede iniciar JACK correctamente, idealmente sin Xruns. Si Jack no está ejecutándose, Claudia intentará iniciarlo automáticamente, utilizando los ajustes actuales que comparte con cadence. Se producirá un error si se inicia un estudio si la configuración de Jack no es correcta. Ver “introducción a cadence’‘ y ‘‘configuración de JACK’‘ para obtener consejos sobre la configuración de JACK.

La Interfaz de Claudia se divide en cuatro áreas principales: los menús y los controles están en la parte superior, una lista de estudios y la sala de muestras arriba a la izquierda, una vista previa de la capa en la parte inferior izquierda (cuando se carga un estudio) a continuación, el estudio seleccionado actualmente ocupa el resto de la ventana de Claudia. Al iniciar la aplicación Claudia puede crear automáticamente un nuevo estudio, de lo contrario la capa principal estará en blanco a excepción de algunas instrucciones para ayudarle a empezar con la creación de un estudio. Puede crear un nuevo estudio Ladish seleccionando “Nuevo Estudio” desde el menú del estudio de Claudia. Puede nombrar como prefiera el nuevo estudio, voy a utilizar ‘‘Qtractor’‘ para el nombre del estudio.

Iniciar JACK y el puente ALSA

Si aún no ha conseguido iniciar JACK, entonces ahora es un buen momento. Se puede iniciar tanto Jack desde Cadence, seleccione “Start Studio” desde el menú del estudio de Claudia o presione F5 en Claudia. Al hacer esto, se dará cuenta de los controles de transporte de Claudia están disponibles y al menos dos elementos aparecen en la capa del estudio los puertos ‘‘Hardware Capture’‘ y ‘‘Hardware Playback’‘. Estos sólo son visibles en Claudia cuando el servidor JACK se está ejecutando. A los efectos de este ejemplo también necesitamos que el puente ALSA audio en cadence esté funcionando. Cuando se tiene el puente ALSA audio corriendo verá un extra de dos artículos (clientes Jack) en la zona alsa2jack, que conecta automáticamente los puertos “Hardware Playback” y jack2alsa los puertos “Hardware capture”.

Añadir una aplicación a un estudio

Ahora vamos a añadir Qtractor en nuestro estudio con la opción ‘‘Agregar nuevo …’‘ en el menú de la aplicación, seleccionar Qtractor bajo la etiqueta de DAW del lanzador Claudia, luego Aceptar. Esto abrirá Qtractor y lo añadirá a nuestro estudio. Es posible que desee minimizar o mover Qtractor a un escritorio virtual diferente, ahora debería ver un nuevo cuadro de cliente JACK para Qtractor dentro del editor así como un nuevo elemento llamado Qtractor, añadido a la lista de estudio.

Establecimiento de las conexiones JACK

Queremos que este estudio se conecte automáticamente las salidas de alsa2jack (que emite el sonido de todas las aplicaciones no-JACK, como Firefox) en Qtractor los que hay que conectar uno con otro. Haga clic izquierdo en capture_1 dentro de la caja alsa, manteniendo pulsado el botón del ratón arrastre el puntero sobre el Master/in_1 input de Qtractor. A continuación, debería ver una línea azul que une el cliente alsa2jack al puerto de entrada de Qtractor – esto indica que ha creado una conexión JACK entre los dos. Ahora hacer lo mismo para capture_2 de alsa2jack y Master/in_2 input de Qtractor, de modo que los canales izquierdo y derecho sean enviados de ALSA a Qtractor. Por último, conecte el Master/out_1 y Master/out_2 a los puertos Hardware Playback para que pueda oír la salida de qtractor. Esto completa la configuración de nuestro estudio así que guarda el estudio, que debe ser algo como esto:

Cargando un estudio al inicio

Si lo desea, Cadence puede cargar automáticamente un estudio de Claudia al inicio del sistema. Esto se debe evitar si está usando un sistema donde no siempre está conectado la tarjeta de sonido.

alt_text

Para establecer un estudio de carga automática, vaya a la ventana principal de cadence, compruebe que “Auto-start JACK or LADISH at login” está marcada y haga clic en los tres puntos a la derecha de este texto. Elija “Load LADISH studio”, seleccione el recién creado estudio “Qtractor” y luego haga clic en Aceptar. La próxima vez que reinicie usted verá que Jack comienza a utilizar la configuración guardada dentro de su estudio, Qtractor carga de forma automática y si se abre Claudia (o Catia) también debería ver alsa2jack conectada a Qtractor.

Consejos para la reducción de Xrun

Compensación de latencia de bucle invertido “loopback”

Aunque la mayoría de la latencia se refiere al tamaño de búfer que retrasa la retroalimentación inmediata de la entrada, hay una latencia adicional debido al procesamiento básico de la interfaz de audio. No hay manera de reducir esta latencia “bucle invertido”, este afectará a la sincronización de doblajes grabados. El software por sí solo no puede descubrir la latencia, por lo que se necesita el siguiente procedimiento para determinar la cantidad de compensación requerida:

Usted necesitará un cable en bucle cerrado capaz de conectar su entrada física dispositivo de audio a su salida física.

1 – Conecte la entrada (micrófono) a su salida (auriculares) con el cable de bucle invertido

2 – Iniciar JACK con buenos ajustes conocidos

3 – Abrir un terminal y ejecutar jack_iodelay. Se imprimirá la “señal por debajo del umbral … ‘hasta que se hagan las conexiones de la clavija

4 – Use Catia o Claudia para conectar el system capture_1 ‘jack_delay en’ y conectar ‘jack_delay out’ al puerto system playback_1

5 – Con las dos conexiones físicas y Jack hechos, Jack iodelay debe imprimir las salidas como “use X for the backend arguments -I and -O”

6 – En la terminal, use Ctrl-C para detener jack_iodelay

7 – En Cadence o Claudia, abra la configuración de JACK e introduzca el valor de X jack_iodelay para la latencia adicional de entrada y de salida.

8 – Enganche la nueva configuración con el botón “Switch Master”. Si vuelve a ejecutar la prueba anterior no debería haber ninguna latencia de bucle de retorno adicional.

Esta información se utiliza para decirle cómo ajustar los programas de grabaciones por lo tanto, el resultado se ajustará exactamente con la forma en la interpretación original alineado con las pistas anteriores.

Dado que estos valores no se guardan en el software, si cambia de tarjeta de sonido, tendrá que cambiarlos. La forma más sencilla de hacer esto es tener sesiones de Claudia para cada tarjeta de sonido, así todos los ajustes se guardan juntos.

Minimizando Xruns: desactivar la conexión inalámbrica a Internet durante la grabación

Los adaptadores WiFi han sido conocidos por causar xruns al azar. Algunos ordenadores portátiles tienen un interruptor de hardware externo para desactivar wifi. De lo contrario, desactive la casilla “activar la conexión inalámbrica” en el control de la red de la bandeja del sistema. Si usa Ethernet, desactive wifi (también conocido como 802.11 a / b / g / n) en el menú de la BIOS o UEFI.

Cerrar los navegadores cuando se graba

Muchos anuncios pop-up y los sitios web más populares hacen uso de Adobe Flash, si tiene alguna pestaña del navegador abierta con flash es suficiente para causar una gran pérdida de CPU, menor latencia y más xruns. Al grabar debe evitar la ejecución de aplicaciones innecesarias que consuman mucho CPU.

Evitar el nuevo muestreo en tiempo real

Al utilizar las estaciones de trabajo de audio digital y aplicaciones similares, tales como muestreadores, etc, se recomienda convertir cualquier archivo de sonido que desea importar a utilizar la misma frecuencia de muestreo que está utilizando para JACK. Muchas aplicaciones permiten importar y utilizar archivos de sonido de diferentes frecuencias de muestreo a la que se está ejecutando con JACK pero luego intente volver a muestrear el audio “al vuelo” esto genera xruns si su CPU no puede mantener el ritmo.

Puede comprobar la frecuencia de muestreo de los archivos de audio usando el reproductor multimedia favorito, como SMPlayer (presionar CTRL + I cuando se reproduce el archivo) o VLC (presionar CTRL + J) o puede averiguar a través de la terminal usando mediainfo. soundKonverter y XCFA son buenas herramientas para la conversión por lotes de archivos de audio.

Compruebe si hay conflictos de IRQ

Abrir un terminal y ejecutar:

cat /proc/interrupts

Asegúrese de que el controlador de audio no está compartiendo una IRQ con otro dispositivo. La solución puede ser tan simple como cambiar el puerto USB que un dispositivo de audio está utilizando, pero por lo demás consulte esta guía para la solución de los conflictos de IRQ.

Créditos

Traducido y adaptado por Luis Salazar de las siguientes fuentes:
http://kxstudio.linuxaudio.org/Documentation
http://activata.org/como-configurar-gnulinux-para-produccion-de-audio-y-musica/

Producido con Software Libre: Libre Office + Inkscape + GET
Marzo, 2016

Descargar tutorial en ODT

Descargar tutorial en PDF

El Poderoso e incomprendido JACK

También te puede interesar

5 comentarios sobre «El Poderoso e incomprendido JACK»

  1. Una pregunta, ¿alguien podría decirme por que cuando suspendes el equipo el demonio jackdbus no se cierra comeos resto de demonios?, luego cuando recuperas la sesión te quedas sin sonido y tienes que reiniciar a lo bestia jackdbus con todo que ello conlleva.
    Es una de los impedimentos que me están retrasando la posible migración a GNU/Linux.

  2. saludos estoymontado en mi proyectode una radio web usando etertics8 me gsytaira saber si esxiste alguna aplicacion que haga de mixercomo por ejemplo esta http://ttrgames.hu/mimix/ es para no usar una consola pasiva si no mas bien usar sodtwrtee en todoes to para abrir y cerrar el microfono, ahora estoy usando veromix pero me gustaria lago mas intuitivo y profesional saludos

    1. Saludos Amando, pues te cuento que podrías usar el Mix básico que trae GET, con ese es suficiente para poder cortar y abrir micrófono, pero si quieres algo más completo y para Jack, puedes probar con las aplicaciones de Catia/Claudia que vienen instaladas. O con JackMixer http://home.gna.org/jackmixer/ (hace tiempo que no lo uso, no sé cómo estará en el desarrollo).
      En LinuxAudio recomiendan varias otras para que pruebes, pero está un poco desactualizado:
      http://wiki.linuxaudio.org/apps/categories/mixers
      Y siempre puedes probar con Mixxx que viene instalado.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *