27 de febrer 2018

Equivalente a Voicemeeter para Linux


Actualización marzo 2021: Hace tiempo que jack-mixer dejó de estar disponible en los repositorios de Debian. El programa vuelve a estar en desarrollo pero no parece que vayamos a tenerlo de vuelta pronto (en Ubuntu ya está). Por su parte Patchage hace mucho que no se actualiza y dejó de funcionarme.
Como alternativa a estos programas no me quedó más remedio que instalar los repositorios de KXStudio, que albergan toda una serie de programas y plugins que no están disponibles en las ramas oficiales.
De ahí instalé Catia, un gestor de conexiones casi idéntico a Patchage aunque ya no haría tanta falta desde que el propio QjackCtl incorpora un gestor gráfico del estilo.
Como mezclador opté por Non-Mixer, similar a Jack Mixer pero con más funcionalidades como por ejemplo poder añadir directamente plugins, eliminando la necesidad de usar otra aplicación para cargar los filtros.
____________________


Para finalizar esta serie de entradas acerca del uso de filtros de sonido en videoconferencias y/o podcasts haremos un montaje imitando la funcionalidad del famoso programa de Windows VoiceMeeter. Para ello usaremos el servidor de sonido JACK, cuya instalación y configuración explicamos en el anterior artículo.
Empezaremos nombrando los distintos elementos que usaremos para el montaje.

Mezclador

No es imprescindible, pero viene bien tener una ventanita donde visualizar todos los niveles de entradas y salidas y poder ajustar los volúmenes de cada elemento.
Usaremos el sencillo pero efectivo Jack Mixer.

jack_mixer
La primera vez que abramos el programa nos aparecerá un único canal, una salida llamada MAIN. El resto de entradas y salidas las tendremos que agregar nosotros con las instrucciones New Input Channel y New Output Channel del menú Mixer. Sólo hay que escoger nombre y seleccionar stereo; no tiene más.
Crearemos tres entradas: una para el micrófono que llamaremos Micro, una para el reproductor de música que llamaremos Music y otra para la llamada entrante, por decirlo así, que llamaremos Web.
En cuanto a las salidas usaremos MAIN para nuestros auriculares y añadiremos dos más: una para la llamada saliente, o sea, lo que enviaremos a nuestros interlocutores, que llamaremos CALL y una salida para grabación que obviamente llamaremos REC.
Por defecto todas las entradas están conectadas a todas las salidas. Para separarlas usaremos los botones M (mute). Los casos que queremos evitar son dos: enviar el sonido del micrófono a nuestros auriculares, para no oírnos a nosotros mismos y enviar la llamada entrante a la saliente, lo que causaría retorno a nuestros interlocutores.
El botón S (solo) se utiliza para dirigir una entrada de forma exclusiva a una salida, silenciando el resto. No lo usaremos.
El botón inferior MON (monitor) sirve para seleccionar qué canal enviamos a la salida de monitores. Esto puede ser útil si utilizamos dicha salida para nuestros auriculares en vez de MAIN, de manera que en un momento dado podamos comprobar qué es lo que nuestros interlocutores están escuchando o qué se está grabando, de cara a diagnosticar algún problema.
Cuando estén todos los canales listos no os olvidéis de guardar la configuración.

Mezclador en funcionamiento

Grabación

Tal vez queramos grabar la sesión, como haríamos en un podcast. Para ello usaremos un programa dedicado, que consuma pocos recursos y que sobretodo escriba directamente en disco, de manera que si pasa alguna catástrofe no se pierda lo que llevamos grabado.
La primera opción es jack_capture, programa de consola sencillo y directo al grano, como nos gustan aquí. Permite grabar directamente en el formato que le digamos. Así por ejemplo, si queremos guardar en FLAC para ahorrar espacio sin perder calidad haríamos:

jack_capture -f flac --port jack_mixer:REC*

La segunda opción es la aplicación gráfica QjackRcd. Es poco más que un botón que pulsamos para empezar a grabar. Entre sus opciones destaca una curiosa función de pausa automática: cuando el volumen de la señal baja de un determinado nivel de decibelios durante un determinado tiempo, la grabación se pausa, retomándola en cuanto el nivel supera de nuevo el umbral. Una función útil para eliminar silencios largos en nuestras grabaciones.
Al contrario de jack_capture la grabación se realiza exclusivamente en formato wav, pero se le puede decir que convierta a posteriori al formato que queramos.

Dale al botón verde para empezar a grabar

Reproductor

Sea cual sea el reproductor multimedia que usemos, de lo que tenemos que asegurarnos es de que sea compatible con JACK y que tenga la salida configurada para usarlo. Tened en cuenta que no aparecen en el esquema de conexiones hasta que están reproduciendo algo.
Como ya advertimos anteriormente, no podremos utilizar música desde el navegador porque viene por el mismo canal que la videollamada y no hay manera de separarla. Si queremos usar música de internet podemos usar algún reproductor que permita streaming (como por ejemplo VLC).

Filtros

Usando alguno de los programas mencionados en la entrada anterior podemos añadir distintos filtros o efectos a nuestro micrófono (o a la música). Como mínimo una puerta de ruido siempre viene bien para eliminar molestos sonidos de fondo (lo más importante es buscarse un entorno lo más silencioso posible).

Conectándolo todo

Usando Patchage realizaremos todas las conexiones pertinentes, con el mezclador como centro del montaje.

Esquema de conexiones

Conviene probarlo todo y asegurarse de que cada salida recibe lo que le pertoca.
Una vez esté verificado todo el montaje guardaremos el cableado para que de aquí en adelante se conecte todo solito sin tener que repetirlo cada vez. Esto se conseguía de la siguiente forma: entramos en el menú Patchbay de QjackCtl, pulsamos New, respondemos sí cuando nos pregunte si queremos importar las conexiones actuales y luego le damos a Save para guardarlo con el nombre que más nos plazca. Finalmente dejaremos pulsado Activate para que QjackCtl fuerce las conexiones según están en el esquema.

Tendremos que hacer una modificación en la configuración de JACK respecto al tutorial anterior, concretamente al cargar los módulos de Pulseaudio. Estos, por defecto, se conectan automáticamente a la entrada y salida del sistema, lo cual está muy bien de normal, pero no en nuestro montaje donde todo pasa por el mezclador. Esto nos creará conexiones duplicadas que tendremos que quitar manualmente cada vez. Para evitarlo añadiremos una coletilla a los comandos en que invocamos dichos módulos:

pactl load-module module-jack-sink connect=0
pactl load-module module-jack-source connect=0
pacmd set-default-sink jack_out
pacmd set-default-source jack_in

Todos los programas multimedia que he probado incluyen también conexiones automáticas que se añaden independientemente de las del Patchbay. En casi todos encontré la opción para desactivarla. Otra manera de evitarlas se encuentra en el propio Patchbay:
Dentro de dicho menú seleccionamos el programa en cuestión y le damos a Edit. En la ventana que nos aparece marcamos Exclusive, que significa que sólo se permite una única conexión por puerto. De esta forma la conexión del Patchbay tendrá preferencia y no se permitirá ninguna otra.


Conexiones exclusivas

Y con esto ya estaremos listos para grabar y/o iniciar la conferencia.

Bonus track

Todo este trabajo lo tendremos que hacer sólo la primera vez. A partir de entonces sólo nos preocuparemos de arrancar JACK y abrir los programas. Para agilizar esto podemos modificar los ejecutables de algunos de ellos para que carguen directamente la configuración guardada.
Con jack_mixer lo haríamos así:

jack_mixer -c /ruta/al/archivo/de/conf

Si usamos Calf JACK Host para los filtros podemos cargar la configuración así:

calfjackhost --load /ruta/al/archivo/de/conf

Quien quiera ir más allá puede crearse un script o echar un vistazo al LADI Session Handler o LADISH, un gestor de sesiones pensado específicamente para JACK. Este gestor se encarga de arrancar JACK, los programas con sus configuraciones y gestionar todas las conexiones. Requiere su trabajo y daría para una entrada entera, pero lo menciono aquí para los interesados.



Enlaces de interés

Conexiones de JACK Audio Connection Kit mediante Ladish (Gaius Baltar)
The LADI Session Handler (The Penguin Producer)

8 comentaris:

  1. Gracias por la entrada... mi problema con esto es que yo uso Spotify para reproducir la música y no tiene soporte (que yo sepa) para Jack. ¿Sabéis alguna opción para hacerlo funcionar?

    ResponElimina
    Respostes
    1. He visto que hay varios programas compatibles con Spotify, como Clementine o Tomahawk, pero no veo que sean compatibles con JACK. Una opción podría ser usar Mopidy junto a un cliente que sí sea compatible con JACK, como mplayer.

      Elimina
  2. Jo, como no haber visto esto algunos años antes
    me parece complicadísimo, pero veré de dedicarle tiempo a ver si lo aprendo
    uso windows solo por voicemeeter, una mesa de mezclas virtual, pero parace que con ese jackmixer esto es posible
    Graciasssssssss

    ResponElimina
  3. Como instalo Jack Mixer? no esta en los repositorios, (o yo no lo encuentro)
    Graciassss y perdona las molestias

    ResponElimina
  4. Este post tiene un par de años y a lo mejor esta obsoleto, pero si en lugar de pachbay uso carla y Cadence, funciona. Pero no he encontrado la manera de instalar Jack Mixer

    ResponElimina
  5. Desde ayer que intento instalar Jack Mixer en Linux Mint Ulyana, sin conseguirlo. En teoría esta en el repositorio Universe, pero despues de agregarlo me dice que no hay candidato para la instalación
    Realmente la solución que planteas como alternativa a voicemeeter, a mi me vendría de maravilla, ¿Alguna sugerencia??
    Gracias anticipadas

    ResponElimina
    Respostes
    1. Parece que han retirado jack-mixer. En Debian ya no está disponible en testing.
      Si lo único que necesitas es aplicar filtros al micro prueba pulseeffects. Funciona con pulseaudio y trae cantidad de plugins. Lo que pierdes es la capacidad de "cablear" las distintas señales.

      Elimina