Mezclador de audio por software, con ALSA

A veces el servidor de sonido esound es un latazo porque impide que otras aplicaciones que hacen uso del hardware de sonido puedan funcionar. De modo que para jugar a algunos juegos necesitamos apagar el servidor de sonido y siempre resulta algo tedioso.

Ingredientes
  • alsa-oss
¿Por qué ocurre esto?

Porque nuestra tarjeta no tiene la habilidad de mezclar distintos canales de audio. Algunas tarjetas disponen de
mezclador por hardware pero no es muy habitual en las que vienen de serie con muchos ordenadores o con los portátiles. Entonces ¿por qué en windows si se puede acceder de forma concurrente al sonido y en GNU/Linux no? Porque los drivers de windows de las tarjetas que no tienen mezcla por hardware incorporan de serie un mezclador por sofware. La buena noticia es que con Alsa también se puede hacer. Vamos a ver cómo .

Manos a la obra

Pues bien, tan solo necesitas instalar el paquete alsa-oss, editar el fichero /etc/asoundrc y copiar dentro lo siguiente:

# .asoundrc for use with ALSA and the dmix plugin, for ALSA-level
# software mixing across all apps.
#
# http://alsa.opensrc.org/index.php?page=AlsaSharing
# http://alsa.opensrc.org/index.php?page=DmixPlugin
pcm.card0 {
    type hw
    card 0
}
 
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
}

Si usas esound tendrás que instalar el paquete libesd-alsa0 y editar el fichero /etc/esound/esd.conf para que quede así:

[esd]
auto_spawn=1
spawn_options=-terminate -nobeeps -as 2 -d default
spawn_wait_ms=100
# default options are used in spawned and non-spawned mode
default_options=

Si tienes libao edita además el fichero /etc/libao.conf para poner lo siguiente:

default_driver=esd

Y eso es todo.

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

Intentando entender

Hola, soy nuevo en Crysol, soy docente en Extremadura y me cuesta entender cómo funciona ALSA al menos en nuestra Linex2006:
Por defecto Linex2006 trae instalados: Rosegarden, Pydance, noteedit, Solfege, TerminatorX, Sweep, Kmid, Karaoke, Hydrogen, Gtick, Freebirth, Audacity y Tutka, estoy chequeando su funcionamiento. Y Timidity.
Qsynth (v0.2.2), el frontend de fluidsynth (v.1.0.5), están disponibles en nuestros repositorios, pero no están instalados.
Digo esto porque lo que interesa es tener una configuración que me permita ejecutar el mayor número de aplicaciones musicales posibles sin tener que hacer cambios del tipo recompilar el núcleo...
El tema es que de entrada no entiendo si es TiMidity o aRts quien se inicia como servidor de sonido para poder reproducir los MIDI mediante ALSA.
Siendo así se supone que Rosegarden por ejemplo no necesita Jack para conectarse al sintetizador (el que sea de los dos) porque de alguna manera la ejecución del Timidity/aRts está "asegurada" desde los ALSA. ¿Es esto así?
aRts está en ejecución permanente así:
/usr/bin/artsd -F 10 -S 4096 -s 60 -m artsmessage -l 3 -f

¿Puede estar siendo ocupado Timidity por el Artsbuilder e impedir con ello que Rosegarden acceda a él?
Quizás los desarrolladores de linex instalaron aRts por ser necesario para otras aplicaciones...¿?, si fuera así es tontería dar patadas con JACK y lo mejor sería acertar a reproducir los MIDI desde Rosegarden sin ello?

Siento el ladrillo, muchas gracias por haber llegado hasta aquí!

Gracias, me ha sido de gran

Gracias, me ha sido de gran ayuda este post. Esd llevaba algún tiempo dándome problemas (se me colgaba firefox y otras cosas más). He instalado alsa-oss y va todo perfecto. El gmplayer, el xmms y el gaim tiran a la vez y bien. Lo único es que si firefox reproduce un flash con sonido, los otros programas no reproducen sonido y viceversa (es un mal menor).
Por último decir que en etc no tengo el archivo asoundrc pero funciona que es lo que vale

Rectifico: el sonido del

Rectifico: el sonido del gaim tampoco funciona simultáneamente.