domingo, 23 de julio de 2017

Cómo grabar con Jack desde la terminal (jack-capture)

Ayer mismo, Yoyo compartió cómo grabar el audio tal como lo escuchamos en el equipo, al estilo de "lo que se oye" en los antiguos Windows (os recuerdo que no uso Windows desde el venerable XP). Pero en su caso lo ha hecho usando Pulseaudio.

En esta entrada voy a explicar cómo hacer lo mismo... O incluso más, pero usando nuestro querido Jack... Pero vamos por partes... ¡Nunca mejor dicho!

Lo primero es tener jackd instalado, obviamente, pero también necesitamos el paquete jack-capture (con guión entre medias) que en distribuciones tipo Ubuntu, Mint y derivados se consigue con un simple:

sudo apt install jack-capture

El uso más simple y básico es ejecutar esta orden mientras suena por los altavoces la fuente que quieres capturar:

jack_capture

Importante: para la orden en la terminal es con guión bajo.

Con esta orden se generará por defecto un wav estéreo a 32 bits en coma flotante, en el directorio de trabajo de la terminal, con un nombre tipo jack_capture_01.wav. Pero podemos tener un poco más de control sobre el formato y códec final. Supongamos que queremos un flac a 24 bits en estéreo, y como nombre pruebas.flac. Este ejemplo lo podéis ver en la imagen de cabecera de la entrada:

jack_capture -f flac -b 24 pruebas.flac

En ambos casos he grabado un audio cualquiera que salía de una aplicación cualquiera del equipo. Por ejemplo VLC, Clementine, el navegador de internet reproduciendo algún streaming, etc. Pero con jack-capture podemos hacer aún más... Por ejemplo, grabar la salida de un cliente en concreto de Jack. Para ello, primero conoceremos los que tenemos disponibles con esta utilidad:

jack_lsp

Teniendo Ardour abierto, con una sesión de uno de los episodios del podcast, me sale esta larga lista de puertos de entrada y salida virtuales:

system:capture_1
system:capture_2
system:playback_1
system:playback_2
PulseAudio JACK Source:front-left
PulseAudio JACK Source:front-right
a2j:Midi Through [14] (capture): Midi Through Port-0
a2j:Midi Through [14] (playback): Midi Through Port-0
PulseAudio JACK Sink:front-left
PulseAudio JACK Sink:front-right
ardour:LTC-in
ardour:LTC-out
ardour:Click/audio_out 1
ardour:Click/audio_out 2
ardour:MIDI control in
ardour:MIDI control out
ardour:MMC in
ardour:MMC out
ardour:Scene in
ardour:Scene out
ardour:MTC in
ardour:MTC out
ardour:MIDI Clock in
ardour:MIDI Clock out
ardour:Master/audio_in 1
ardour:Master/audio_in 2
ardour:Master/audio_out 1
ardour:Master/audio_out 2
ardour:Voz [SHURE] 2/audio_in 1
ardour:Voz [SHURE] 2/audio_out 1
ardour:Voz [SHURE]/audio_in 1
ardour:Voz [SHURE]/audio_out 1
ardour:MUSICA 1/audio_in 1
ardour:send 2/audio_send 1
ardour:send 3/audio_send 1
ardour:send 6/audio_send 1
ardour:MUSICA 1/audio_in 2
ardour:MUSICA 1/audio_out 1
ardour:MUSICA 1/audio_out 2
ardour:Sidechain 5/audio_in 1
ardour:JINGLES/audio_in 1
ardour:JINGLES/audio_in 2
ardour:JINGLES/audio_out 1
ardour:JINGLES/audio_out 2
ardour:Sidechain 3/audio_in 1
ardour:REVERB-LARGA/audio_in 1
ardour:REVERB-LARGA/audio_in 2
ardour:REVERB-LARGA/audio_out 1
ardour:REVERB-LARGA/audio_out 2
ardour:REVERB-CORTA/audio_in 1
ardour:REVERB-CORTA/audio_in 2
ardour:REVERB-CORTA/audio_out 1
ardour:REVERB-CORTA/audio_out 2
ardour:DELAY/audio_in 1
ardour:DELAY/audio_in 2
ardour:DELAY/audio_out 1
ardour:DELAY/audio_out 2
ardour:MEZCLA_SECA/audio_in 1
ardour:MEZCLA_SECA/audio_in 2
ardour:MEZCLA_SECA/audio_out 1
ardour:MEZCLA_SECA/audio_out 2
ardour:EFECTOS/audio_in 1
ardour:EFECTOS/audio_in 2
ardour:EFECTOS/audio_out 1
ardour:EFECTOS/audio_out 2
ardour:Voz [SHURE] 2/audio_out 2
ardour:Voz [SHURE]/audio_out 2
ardour:auditioner/audio_out 1
ardour:auditioner/audio_out 2
ardour:auditioner/midi_out 1

Supongamos que tenemos algún problema para exportar el audio de la mezcla de Ardour, o que simplemente queremos grabarlo mientras lo vamos escuchando. Con esta simple orden y Ardour abierto lo solucionamos:

jack_capture -f flac -b 24 --jack-transport --channels 2 --port ardour:Master/audio_out*

Con esto grabamos en un FLAC estéreo la salidas izquierda y derecha del master de Ardour (para eso está el asterisco final). El argumento --channels en este caso podría ser innecesario, pero podemos grabar varios canales a la vez en el caso de que nuestra fuente disponga de ellos. El argumento --jack-transport permite que jack-capture espere a que pulsemos play en la aplicación de origen para empezar a grabar... Y aquí lo dejo. Queda en manos de la creatividad de quien lea esta entrada qué uso le acaba dando.

Para más opciones avanzadas:

jack_capture --advanced-options
Puedes visitar la entrada original en www.JoseGDF.net, leer los comentarios e incluso dejar el tuyo, si lo deseas.

No hay comentarios:

Publicar un comentario

No hay normas especiales para publicar comentarios en este blog. Sólo las básicas: respeta, no insultes, y no hagas SPAM descaradamente. Tampoco se admitirán comentarios que vulneren la Ley. Cualquier aportación, consulta y crítica es bienvenida, a condición de cumplir estas normas básicas.

Si lo que quieres es ponerte en contacto directamente conmigo, dispones para ello de un formulario de contacto.