La configuración de tiempo real es una característica de los sistemas GNU/Linux que permite a una aplicación gestionar de manera eficiente los eventos de tiempo. Algunas de las distribuciones consideran que esto puede ser una fuente de problemas por lo que limitan el acceso a esta funcionalidad. Es importante que sepas que no necesitas un núcleo RT para usar la configuración de tiempo real. La nomenclatura puede inducir a malinterpretar esto, algo que es bastante común. JACK necesita de privilegios a tiempo real para funcionar de manera fiable.

Configurar nuestro sistema para que JACK tenga privilegios de tiempo real

Editar los límites de seguridad

Busca el directorio /etc/security/limits.d (si no existiese busca /etc/security/limits.conf). En su interior crea el fichero /etc/security/limits.d/99-realtime.conf con el siguiente contenido:

@realtime - rtprio 99
@realtime - memlock unlimited
Añadir tu usuario al grupo realtime

El siguiente paso sería que nuestro usuario esté incluido en el grupo realtime. Si el fichero 99-realtime.conf ya existiese comprueba que tu usuario está incluido en ese grupo. Ten en cuenta que los nombres puede variar; por ejemplo, en Manjaro esto ya viene correctamente configurado y el grupo se llama simplemente “audio”. Distros como Kxstudio añaden al usuario inicial a ese grupo, si tu usuario no es el inicial deberás añadirlo.

Para crear un grupo que no existe, ejecuta como root:

groupadd nombredegrupo

Para añadir un usuario a un grupo, también como root:

usermod -a -G nombredegrupo IDdetuusuario

Los cambios no surtirán efecto hasta que reinicies la sesión de ese usuario.

Otros ajustes para optimizar las prestaciones de nuestro sistema

Ajustar CPU Scaling Governor

CPU Scaling Governor es una propiedad del núcleo que nos permite controlar la velocidad de la CPU. Tiene dos modos:

  • Performance: Ofrece mejores prestaciones a cambio de mayor consumo de energía y posibles ruido de ventiladores.
  • Powersave/On demand: Es común en equipos que funcionan con batería como los portátiles. Hay diferentes programas que nos pueden mostrar en qué estado están funcionando nuestros microprocesadores, en XFCE yo uso xfce4-cpufreq-plugin. Desde terminal:
    cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

Si quieres poner tu máquina en modo Performance, ejecuta como root:

cpupower frequency-set -g performance
Usar un kernel parcheado para Real Time

Usar los núcleos Linux-RT no es estrictamente necesario si usas una versión superior a la 2.6.31, cosa bastante probable. Aunque los núcleos normales ofrecen buenos resultados, es posible que con un kernel RT tengas mejores resultados. Prueba ambos y decide cuál se adapta mejor a tus necesidades.

Compensar la latencia interna de nuestra interfaz de audio

Aunque la latencia de nuestro equipo depende sobre todo del tamaño de buffer, existe una latencia adicional que se genera en nuestra tarjeta de sonido. Si averiguamos el valor de esta latencia interna, podremos configurar las aplicaciones para que sincronicen de forma más precisa las grabaciones en overdubbing eliminando ese pequeño retraso. Es uno de los parámetros que pregunta Ardour al configurar una sesión. Si queréis profundizar en este tema podéis visitar este enlace a linuxaudio.org, donde lo explican detenidamente.

Algunas consideraciones más para minimizar los xruns
  • Desconecta la tarjeta Wifi. Los adaptadores Wifi y Networkmanager generan muchos xruns.
  • Cierra programas innecesarios. Fundamentalmente los navegadores web, el más mínimo uso de Adobe Flash causará una enorme pérdida de CPU y aumento de xruns. Si quieres ser más radical puedes cerrar los demonios y servicios que no sean indispensables.
  • Evita el resampleado. Cuando usas tu DAW con samplers es recomendable que conviertas previamente los samples a la frecuencia de muestreo a la que tienes configurado JACK. Puedes usar los samplers con otras frecuencias, pero esto implica que se realice un resampleado al vuelo que obliga a un esfuerzo adicional a nuestra CPU y, por consiguiente, posibles desbordamientos.
  • Vigila conflictos IRQ. Ejecuta
    cat /proc/interrupts

    y comprueba que el controlador de audio no está compartiendo IRQ con otros dispositivos. De darse el caso, se puede solucionar cambiando nuestra tarjeta de sonido a otro puerto USB.

  • El paquete rtirq permite detectar y modificar las prioridades que el núcleo asigna a los dispositivos de audio. En su fichero de configuración, que probablemente se halle en /etc/default/rtirq, debería haber una línea con el contenido
    RTIRQ_NAME_LIST=“firewire snd usb i8042”.

    Si no vas a usar una interfaz Firewire puedes poner en primer lugar “usb”.

Para terminar este apartado, en este repo de Github tienes un script para comprobar la configuración de nuestro sistema y que además ofrece algunos consejos para optimizarlo.

realtimequickscan

Cadence, la GUI para manejar y configurar JACK

Cadence es una suite de herramientas orientadas a la producción musical en GNU/Linux y también recibe ese nombre la interfaz que los ordena. Nos facilitará acceder y gestionar las configuraciones de JACK de manera gráfica. Está desarrollado por falkTX dentro de los paquetes de software específicos de la distribución Kxstudio. Para Debian y derivadas está disponible en los repos de Kxstudio. Para Arch y derivadas está en AUR. Tienes más información en su página de descargas.

Interfaz de Cadence
Pantalla inicial de Cadence

System information nos muestra la información general de nuestro sistema.

System Status nos muestra en qué estado está funcionando nuestra CPU, recuerda que es importante que esté en modo “Performance”. En mi caso no se muestra nada, ignoro el motivo.

System checks nos dice si tenemos correctamente configurado el grupo de usuario y nos dice qué núcleo que estamos usando.

JACK status nos muestra los datos de configuración del kit de conexión.

  • Server status muestra si está encendido el servidor JACK.
  • Realtime nos dice si tenemos configurados los privilegios de tiempo real.
  • DSP Load muestra la carga DSP. Si es demasiado alta podemos tener problemas.
  • Xruns irá sumando los desbordamientos de buffer sufridos. Debemos evitarlos para que todo funcione correctamente.
  • Buffer size: Determina la latencia. Cuanto más bajo sea el tamaño menos latencia pero mayor posibilidad de xruns. El tamaño de 1024 suele estar bien si el sistema está configurado correctamente. Interfaces de calidad pueden alcanzar 64 mientras que las mediocres no bajarán de 512.
  • Sample rate: Una frecuencia de muestreo de 48 kHz o 96 kHz ofrece mejores resultados de latencia. Visita el artículo sobre el audio digital si quieres más información.
  • Block Latency: Muestra el valor de latencia. Una configuración óptima no debería superar los 10 ms. A partir de 20 ms ya tendríamos problemas de sincronización.

A continuación tenemos los controles de JACK . Start, stop y forzar reinicio. Nos interesa fundamentalmente Configure que veremos en el siguiente apartado y Switch master para aplicar los cambios que hagamos en la configuración de JACK.

JACK Bridges nos permite establecer los puentes entre ALSA y JACK. Seleccionar ALSA permite que aplicaciones que usen ALSA tengan acceso a JACK. Se utiliza si queremos dar acceso al servidor de audio a aplicaciones que no soportan JACK de forma nativa, por ejemplo Firefox. Si vamos a usar hardware MIDI debemos utilizar ALSA-MIDI.

Configuracion de JACK en Cadence

Configuración de JACK a través de Cadence
Configuración de JACK a través de Cadence

Debemos irnos a la pestaña Driver. Seleccionaremos ALSA a no ser que se use Firewire.

Device. Seleccionamos la interfaz de audio que vamos a utilizar. Si marcamos el modo Duplex podemos configurar JACK para usar tarjetas de entrada y salida diferentes.

Properties. Para establecer los parámetros de funcionamiento que hemos visto antes. Podríamos pasar Periods a 3 para disminuir la posibilidad de xruns, aunque esto aumentará la latencia.

Extra latency. Aqui introduciremos el valor de la latencia interna de nuestra tarjeta de sonido para grabar en overdubbing. Lo hemos visto unos párrafos más arriba.

Ahora ya tenemos JACK arrancado y funcionando optimizado. El siguiente paso es entender los ruteos internos y externos en Ardour, y ver las interfaces que nos facilitan los ruteos externos a través de JACK: Catia y QjackCtl. Esto nos llevará a Hydrogen…

Fuentes:

Imagen de cabecera: Sony Ilce-6300 (CC0) | Imagen de hardware: jarmoluk (CC0) | Capturas de pantalla: xphnx (CC BY-SA)

avatar
4 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
3 Comment authors
Informe 7 días (5ª semana de 2017)ppnmanxphnxOptimizar nuestro equipo, JACK y su configuración con Cadence | PlanetaLibrezerberros Recent comment authors

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

  Subscribe  
más nuevo más antiguo más votado
Notificarme de
zerberros
Lector
zerberros

WAU! 10/10

trackback

[…] Visitar la fuente original […]

ppnman
Lector
ppnman

eh?

trackback

[…] El martes: del tratamiento de la imagen pasamos al sonido gracias a xphnx (hemos notado que algunos de vosotros no sabíais como pronunciar el nick de este colaborador, sería Exfenix (en su comienzo, Xphoenix, pero llegó la crisis y hubo recortes hasta en las letras). Disfrutad de su artículo: Optimizar nuestro equipo, JACK y su configuración con Cadence. […]