Configurar dos tarjetas de sonido con jackd

From zerutek.com
Jump to: navigation, search

Configurar dos tarjetas de sonido con "jackd"

Por fin has conseguido un programa que soporta dos tarjetas de sonido, idjc, con el que puedes realizar preescucha de las canciones, pero, ¿cómo consigues que estas funcionen?.

Configurar tarjetas de sonido

Esto puede parecer obvio, pero necesario para no tener sorpresas desagradables en algún reinicio. En mi caso voy a configurar una "SB Audigy" como tarjeta primaria, y una "CM8738" como secundaria. para ello crearemos el fichero '/etc/modprobe.d/alsa-local' con las líneas

options snd_emu10k1 index=0
options snd_cmipci index=1

JACK

JACK es un servidor de sonido muy versátil utilizado por multitud de aplicaciones. Existen dos versiones del mismo, el vetusto "jack 1", el más utilizado, escrito en C y cuyas versiones empiezan por 0.x, y su futuro sustituto, "jack 2", que todavía no tiene todas las opciones de su antecesor pero que se supone supera muchas de sus carencias, escrito en C++ y cuyas versiones empiezan por 1.9.x.

Configurar y lanzar el demonio jack

En mi caso esta configuración no difiere entre versiones. Para poder conseguir latencias menores sin recurrir a 'root' hay que elevar los límites del usuario o grupo colocando en '/etc/security/limits.conf'

@audio          -       rtprio          100
@audio          -       nice            -10
@audio          -       memlock         4000000

Lanzamos el demonio 'jackd', con prioridad en tiempo real, y utilizando la tarjeta de sonido primaria:

jackd -R -d alsa -dhw:0

Esto se puede automatizar. Los programas que usan 'jackd' recurren a '~/.jackdrc' o '/etc/jackdrc' si el servidor 'jackd' no está arrancado en el sistema

JACK 1

Para utilizar la segunda tarjeta de sonido en con 'jackd' utilizaremos el cliente 'alsa_out'. Este cliente no está disponible en todas las versiones (me suena algo de 0.116 o superiores), utilizando en este caso la versión '0.118+svn3796-1' enpaquetada en Debian Squeeze:

alsa_out -dhw:1

Comprobamos que 'jackd' reconoce las salidas de las dos tarjetas:

$ jack_lsp
system:capture_1
system:capture_2
system:playback_1
system:playback_2
alsaout:playback1
alsaout:playback2

Vemos que poseemos cuatro canales de "playback", dos para 'system' (la tarjeta primaria), y dos para 'alsa_out', la tarjeta secundaria.

JACK 2

Para utilizar la segunda tarjeta de sonido en con 'jackd' utilizaremos el cliente 'jack_load'. En este caso hemos utilizado la versión 1.9.4 compilada en una Debian Lenny:

jack_load audioadapter -i "-d hw:1"

Comprobamos que 'jackd' reconoce las salidas de las dos tarjetas:

$ jack_lsp
system:capture_1
system:capture_2
system:playback_1
system:playback_2
audioadapter:capture_1
audioadapter:capture_2
audioadapter:playback_1
audioadapter:playback_2

Vemos que poseemos cuatro canales de "playback", dos para 'system' (la tarjeta primaria), y dos para 'audioadapter', la tarjeta secundaria.