Sonido en Debian con dmix
Viernes, 1 Diciembre 2006
¡Hola!
Llevaba un tiempo bastante mosqueado con mi Debian por el tema del sonido. El problema me resultaba un tanto extraño y, hasta donde llegan mis conocimiento, no tenia solución: los sonidos de sistema así como los del escritorio (Gnome, of course) y los de diversos programas (amsn, gaim, beep-media-player) funcionaban bien, pero tenía ahí la espinita clavada. Al reproducir un vídeo, en cualquier formato, podía visualizarlo, pero no escucharlo. Totalmente frustrante. A continuación explicaré como se consigue solucionar este molesto tema.
Probé mil soluciones, lo primero instalé los codecs de Windows, el paquete w32codecs, porque tengo un montón de vídeos en .avi o .wmv, del repositorio de Debian Marillat. Nada. Reconfiguré alsa. Nada. Instalé paquetes adicionales de alsa, como alsaplayer-esd. Nada. Imposible mil búsquedas en San google, que todo lo sabe, pues tampoco. Nothing de nothing. Encontré una “solución”, que no era tal, ya que conseguía sonido en los reproductores de vídeo a costa de matar el esd y quedarme sin sonido en Gnome
. Desesperado y hasta los cojones de todo, acudí a Mario, mi “gurú” particular, jeje. En cuanto se lo expliqué dijo la palabra clave: dmix.
¿Qué es dmix? Quizá a alguien le pase lo que a mí, que le dicen dmix y es como si no le dijeran nada. El dmix es un plugin que tiene alsa para solucionar el siguiente problema, el que tienen algunas tarjetas de sonido (la mía es una de ellas, una Realtek ALC850 integrada en placa compatible con AC97) al no poder reproducir varias salidas de sonido a la vez. Lo que hace dmix es generar un mezclador virtual, por así decirlo, resolviendo el problema mediante software.
Veamos lo que hay que hacer para usarlo. Lo primero matar el esd e instalar un par de librerias:
# killall esd
# apt-get install libesd-alsa0 alsa-oss
Una vez hecho esto, ya podemos hacer uso de dmix. Para ello editamos el fichero /etc/asound.conf. Yo por ejemplo no lo tenia, pero lo creé y funcionó también.
# software mixing across all apps. # # http://alsa.opensrc.org/index.php?page=AlsaSharing # http://alsa.opensrc.org/index.php?page=DmixPlugin
pcm.dmix0 {
type dmix
ipc_key 219345 # any unique number here
slave {
pcm "hw:0,0"
period_time 0
buffer_time 0
period_size 2048 # jm: much smoother than 1024/8192!
buffer_size 32768
rate 48000
}
bindings {
0 0 # from 0 => to 0
1 1 # from 1 => to 1
}
}
pcm.dsp0 {
type plug
slave.pcm "dmix0"
}
# this makes native ALSA apps default to using dmix
pcm.!default {
type plug
slave.pcm "dmix0"
}
ctl.dsp0 {
type hw
card 0
}
ctl.!default {
type hw
card 0
}
Editamos por último el fichero /etc/libao.conf, y le cambiamos por esto:
default_driver=alsa
Con esto, si Debian ya sabe que debe usar alsa como servidor de sonido. ¡Así de fácil y yo volviéndome loco dos semanas!
Sólo me resta agradecer a Mario la idea, y a Leandro Mocek y su genial post, que seguí al pie de la letra para arreglar el engorro que suponía el no poder un vídeo sin tener que perder el sonido en el sistema.

