Para usar una sola tarjeta de sonido ya existe una estupenda guía oficial de Gentoo, pero la información para configurar más de una tarjeta no es tan abundante, a pesar de ser relativamente sencillo de configurar. A petición de un amigo, este es un pequeño resumen de cómo usar dos tarjetas de sonido con ALSA.
Configuración del kernel
Podemos usar los drivers ALSA incluidos en el kernel o bien los disponibles en Portage. En mi caso voy a usar los de Portage porque los del kernel no suelen estar muy actualizados. Por tanto, la única opción que hay que activar en el kernel es Sound Card Support, el resto de opciones y drivers para tarjetas tanto OSS como ALSA dejarlos desactivados.
Device Drivers --->
<M> Sound card support
(...El resto desactivado...)Instalar los drivers
Lo primero que hay que hacer es averiguar qué tarjetas de sonido tenemos instaladas:
En mi caso, la primera tarjeta está integrada en placa y es de la marca nVidia y la segunda tarjeta es una SoundBlaster de Creative.
Para averiguar el driver necesario para cada tarjeta consultar la Matriz de tarjetas ALSA. En mi caso, para la tarjeta nVidia se usa intel8x0 y para la SB se usa emu10k1. Una vez conocidos, añadirlos a la variable ALSA_CARDS del archivo /etc/make.conf
ALSA_CARDS="emu10k1 intel8x0"
Si quieres tener soporte OSS (utilizado en aplicaciones antiguas) será necesario activar la USE oss del paquete alsa-driver:
Ya se pueden instalar los drivers y las utilidades
Configurar los módulos
La configuración de los módulos se guarda en el archivo /etc/modules.d/alsa. Para generar dicho archivo se usa el comando alsaconf, el cual pregunta cual de las tarjetas deseamos configurar. Podemos generar dos archivos, uno para cada tarjeta, y luego transformarlos en uno solo de forma manual. Lo única modificación necesaria será la numeración de los alias: La tarjeta principal será aquella cuyos alias terminen en 0, mientras que para la tarjeta secundaria terminarán en 1. En mi caso me interesa que la tarjeta principal (la que se usa por defecto) sea la Sound Blaster, por lo que el archivo /etc/modules.d/alsa ya combinado queda así.
alias char-major-116 snd alias char-major-14 soundcore options snd cards_limit=2 # Creative Labs SB Live! EMU10k1 (rev 07) alias snd-card-0 snd-emu10k1 alias sound-slot-0 snd-emu10k1 alias sound-service-0-0 snd-mixer-oss alias sound-service-0-1 snd-seq-oss alias sound-service-0-3 snd-pcm-oss alias sound-service-0-8 snd-seq-oss alias sound-service-0-12 snd-pcm-oss options snd-emu10k1 index=0 alias /dev/mixer snd-mixer-oss alias /dev/dsp snd-pcm-oss alias /dev/midi snd-seq-oss # nVidia Corporation nForce3 250Gb AC'97 Audio Controller (rev a1) alias snd-card-1 snd-intel8x0 alias sound-slot-1 snd-intel8x0 alias sound-service-1-0 snd-mixer-oss alias sound-service-1-1 snd-seq-oss alias sound-service-1-3 snd-pcm-oss alias sound-service-1-8 snd-seq-oss alias sound-service-1-12 snd-pcm-oss options snd-intel8x0 index=1 alias /dev/mixer1 snd-mixer-oss alias /dev/dsp1 snd-pcm-oss
Para que los cambios en la configuración de los módulos tengan efecto ejecutar
Antes de continuar, nuestro usuario debe pertenecer al grupo audio para no tener problemas de permisos.
Agregar al inicio el servicio e iniciarlo
Podemos comprobar que el orden de asignación de las tarjetas es el correcto ejecutando
Comprobación del volumen
Para establecer los niveles en cada tarjeta, ejecutar respectivamente
Hay que quitar el modo MUTE (mudo) a algunos canales o no obtendremos sonido alguno. Los canales con MUTE son los que aparecen con MM encima de la barra. Para quitar el mute pulsar la tecla M, para aumentar o disminuir el volumen usar las flechas de arriba y abajo, y para activar o desactivar la grabación usar el espacio.
Ajustes del mezclador de la SoundBlaster:
- Para que suenen los altavoces traseros hay que poner en OFF la opción SB Live Analog/Digital Output Jack [Off]. Una vez puesto así para controlar el volumen de los altavoces traseros se usa el control Wave Surround.
- Para que el control de los graves (Bass) y los agudos (Treble) funcionen es necesario que Tone NO esté en MUTE.
- Para controlar el volumen de los altavoces delanteros podemos usan tanto Wave como PCM.
Esiste una información más detallada sobre cada uno de los controles del mezclador en la dirección http://alsa.opensrc.org/index.php?page=SbLiveMixerControls
Los ajustes del mezclador de la tarjeta integrada son mucho más sencillos ya que, al contrario que en la SoundBlaster, el nombre de los controles coincide con la finalidad que tienen:
- Para tener una configuración de altavoces 5.1 el ajuste Channel Mode debe establecerse a 6ch.
- Si quieres que el sonido de los altavoces delanteros se duplique en los traseros (útil para oír por los 4 altavoces aplicaciones con sonido 2.0) hay que quitar el modo MUTE en la opción Duplicate Front, aunque esto anulará el canal trasero.
- Para que suenen los altavoces traseros, el central y el subwofer hay que quitar el modo MUTE en las opciones Surround, Center y LFE respectivamente. Además, el ajuste Surround Jack Mode debe estabelcerse a Independent.
Para probar los niveles de las tarjetas podemos crear dos alias de dispositivo PCM (con su correspondiente alias de control CTL) añadiendo a ~/.asoundrc
pcm.sb { type hw card 0 } ctl.sb { type hw card 0 } pcm.integrada { type hw card 1 } ctl.integrada { type hw card 1 }y usarlos con aplay de la siguiente forma:
Cuando ya tengamos los niveles adecuados en alsamixer, podemos guardar sus valores ejecutando
A mí particularmente no me gusta que se guarden los niveles al pagar el ordenador porque si los dejas demasiado altos a veces te llevas sustos desagradables. Por eso he desactivado este comportamiento poniendo SAVE_ON_STOP="no" en el archivo /etc/conf.d/alsasound.
