18 de gener 2018

Aplicar filtros de sonido al micrófono (JACK)


Imagen CC0

Ha llegado al fin el momento de ponernos con JACK, el servidor de audio profesional de Linux.
Veremos que no tiene mayor complicación.
A parte de trabajar a baja latencia JACK permite redirigir el flujo de sonido entre aplicaciones a nuestro gusto, por ejemplo conectando la salida de un programa a la entrada de otro y este a su vez a otros dos, o mezclarlo con un tercero… etc.

Instalación

La manera más sencilla es indicar a nuestro gestor de paquetes que instale qjackctl, el controlador de JACK, de manera que el propio gestor se encargará de instalarnos todos los paquetes necesarios. Si en vuestra distribución tenéis disponible Cadence quizá prefiráis instalarlo en vez de QjackCtl, ya que es algo más moderno.
Al ejecutar QjackCtl nos aparecerá una ventanita con varios botones y la indicación de que JACK está parado. Como veis no reemplaza nuestro servidor de sonido habitual y podemos usarlo solo cuando lo necesitemos, así que no supone ningún cambio traumático en nuestros sistemas.

QjackCtl en marcha

Configuración

Le damos a Setup… y en Settings / Parameters nos aseguramos que esté marcado Realtime, que esté seleccionado el driver ALSA y finalmente en Interface seleccionamos la tarjeta de sonido que vayamos a utilizar. En la pestaña Advanced podemos seleccionar un dispositivo distinto para la salida y otro para la entrada (Output Device / Input Device) por si por ejemplo disponemos de un micrófono USB a parte de la tarjeta de sonido propia del PC.
Esta es la configuración básica. No entraré aquí en otros ajustes como los relativos a la latencia pero si os interesa al final del artículo añadiré enlaces a entradas que detallan más éste y otros parámetros.

Ajustes básicos

Hecho esto podemos volver a la pantalla principal y darle a Start. Si todo va bien arrancará el servidor y estaremos listos para trabajar.

La mayoría de programas multimedia son compatibles con JACK, por lo que simplemente tendremos que cambiar en sus respectivos ajustes el driver correspondiente. Entre los programas que no son compatibles tenemos nada menos que a los navegadores web, lo cual supone un grave problema especialmente para videoconferencia. Afortunadamente hay manera de hacer trabajar conjuntamente Pulseaudio con JACK y además se puede automatizar.
Para ello entraremos en Setup… pestaña Options y activaremos y rellenaremos los cuadros de Scripting con los siguientes comandos:

Execute script on startup:
pacmd suspend true
Execute script after startup:
pactl load-module module-jack-sink ; pactl load-module module-jack-source ; pacmd set-default-sink jack_out ; pacmd set-default-source jack_in
Execute script on Shutdown:
pactl unload-module module-jack-source ; pactl unload-module module-jack-sink ; sleep 5
Execute script after Shutdown:
pacmd suspend false
Es más elegante si escribimos los cuatro scripts a parte y ponemos aquí la ruta a cada uno de ellos, pero lo he puesto así por simplificar.
A partir de ahora cuando arranquemos JACK se creará un puente con Pulseaudio y podremos oír todos aquellos programas que no son compatibles con aquel.

Pulseaudio y JACK pueden trabajar juntos

Entramos ahora en Connect. Aquí aparecen todos los programas/clientes JACK, entradas en un lado y salidas al otro. En este momento solo tendremos la entrada y salida del sistema (micrófono y altavoces) el PulseAudio JACK Sink, que es donde van a parar todos los sonidos que vienen por Pulseaudio y el PulseAudio JACK Source, que es por donde mandaremos sonido a Pulseaudio (para transmitir por videoconferencia web, por ejemplo). Si abrimos otros programas compatibles nos irán apareciendo aquí y podremos conectar sus entradas y salidas a placer. Pero eso no lo haremos aquí, porque utilizaremos un programa más amigable y visual llamado Patchage.

Haciendo conexiones con Patchage

Aplicar filtros al micrófono

Lo que necesitamos ahora es un programa que nos permita cargar plugins de audio. Uno muy ligero es Qtractor. Aunque es un secuenciador lo único que nos interesa es la sección Mixer, donde podemos añadir plugins de diversos formatos.
A parte de los plugins LADSPA que usamos en anteriores entradas podremos usar un estándar más moderno como el LV2, que entre otras cosas incorpora ventana gráfica propia lo que los hace no solo más molones sino más útiles.

Filtro LADSPA cargado en Qtractor

Otra opción es Jalv, una aplicación de consola que nos permite cargar un plugin LV2 de forma independiente. Para usarlo primero tenemos que ejecutar lv2ls (paquete lilv-utils) que nos listará los plugins disponibles en el sistema. Copiaremos la dirección del plugin que nos interese y la agregaremos como parámetro a Jalv.
Por ejemplo:
jalv.gtk http://invadarecords.com/plugins/lv2/compressor/stereo
No, no sé por qué se utiliza una dirección web, si están instalados en el sistema.
Se pueden ejecutar varias instancias con sendos plugins y permite guardar la configuración de cada uno de ellos.

Compresor Invada funcionando autónomamente gracias a Jalv

Me dejo para el final otra opción que tal vez sea la más apropiada a nuestras necesidades. Se trata del pack de plugins de Calf Studiogear (paquete calf-plugins) que a parte de ser un set muy completo incorpora también su propio “rack” independiente de otros programas.
Así pues abrimos dicho programa, cargamos los plugins que queramos, hacemos las conexiones pertinentes (conectamos el micrófono a la entrada del primer plugin y la salida del último a los auriculares y/o a un programa grabador) jugamos con los filtros y cuando los tengamos a nuestro gusto guardamos la configuración del rack (guardará también los ajustes de cada plugin).
Al final del texto he puesto varios enlaces a diversos artículos que hablan sobre cómo usar la compresión y ecualización de voz para quien quiera más información al respecto.

El rack de Calf Studiogear con 3 plugins

Antes de recoger

Las conexiones se pierden cada vez que reiniciemos JACK o cerremos alguno de los programas del circuito. Para evitar tener que recablear cada vez podemos usar la función Patchbay de QjackCtl.
Una vez dentro de Patchbay pulsamos New y cuando nos pregunte si queremos importar las conexiones actuales le diremos Si. Obtendremos entonces un esquema similar al que veríamos en Connect.
Acto seguido le damos a Save para guardar dicha configuración y dejamos pulsado Activate si queremos mantenerla aplicada.
Gracias a esto, cada vez que arranquemos un programa implicado se conectará automáticamente tal y como aparece en el esquema.

El Patchbay de QjackCtl

Emitir voz y música por videoconferencia

Hacer esto con JACK es muy fácil. Conectamos la salida filtrada del micrófono al PulseAudio JACK Source (para que la reciba el navegador, por ejemplo, si estamos usando hangouts o appear.in) y conectamos al mismo punto la salida del reproductor que utilicemos para la música (también a nuestra salida de auriculares, para poder oírla nosotros). Además, si quisiéramos grabarlo todo podríamos añadir fácilmente un programa como Audacity o jack_capture al esquema.

Conexionado para una videoconferencia

Hay que tener en cuenta que no podremos usar el navegador para reproducir la música, ni siquiera otro navegador nos valdría, porque todo va metido junto en el PulseAudio JACK Sink, y si lo conectamos al PulseAudio JACK Source para que la oigan nuestros interlocutores escucharían también sus propias voces de la videollamada. Como solución se pueden utilizar aplicaciones como VLC o Mplayer, que permiten reproducir multimedia desde internet, como los vídeos de Youtube.

Puerta de ruido, compresor y ecualizador de Calf Studiogear

Con JACK se pueden hacer muchas cosas más, pero para empezar con esto es más que suficiente.
En la próxima entrada haremos un montaje paso a paso que tratará de emular la funcionalidad del programa Voicemeeter de Windows.



Enlaces de interés

Cap comentari:

Publica un comentari a l'entrada