Configurar dos tarjetas de sonido con jackd
Contents
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.