Configuración de ALSA para soporte simultáneo de varios canales

BasaBuru vuelve a la carga y nos regala el siguiente HowTo:

«Este HowTo surge como es habitual en nuestra Comunidad, algo te pica y te rascas 🙂

Estaba bastante frustrado por que tengo la costumbre de trabajar con musica y claro mientras escuchaba musica no podía oír una notificación sonora o lo que es más importante no podía oír una llamada VozIp de nuestro Asterix. Así que dándole unas vueltas, leyendo howtos [0], pues ya lo he resuelto. Usea no perderé una llamada VozIp por oír la musica que me ayuda a trabajar. Pa que lo disfruteis. Eso sí, luego, no me digáis que se os pone la cabeza como un bombo por oír tres canciones a la vez.

8D

Bueno menos rollo y al tema.
—-


====== 1. Pequeña introducción ======

Se trata de montar el sistema de sonido de forma **que se puedan oír notificaciones, musica y llamadas VozIp a la vez**. Para lo cual vamos a configurar ALSA para que la tarjeta acepte mas de un canal de salida y configurar asimismo el de entrada para poder tener funcionado también varias fuentes de grabación y/o el micrófono, a la vez, para utilizar nuestra telefonía VozIp. O para hacer mezclas o locuciones, o…….. lo que se os pueda ocurrir.

Para esto vamos a utilizar dos plugins de ALSA, dmix. El presente HowTo explica como se configura el plugin de ALSA y como se configuran las distintas aplicaciones OSS para que hagan uso de los mismos.

Los plugins PCM extienden la funcionalidad de los dispositivos PCM para permitir conversiones y copias de bajo nivel entre canales, ficheros y tarjetas de sonido. El plugin **dmix** porporciona mezcla **directa** de multiples streams.

**NOTA: Para ALSA 1.0.9rc2 y superior no es necesario activar el plugin dmix. Dmix se activa por defecto para las tarjetas que no tienen soporte para mezcla por hardware.**

**ALSA se configura en dos ficheros /etc/asound.conf o en ~/.asoundrc** en el primer caso la configuración afecta al conjunto de la máquina y en el segundo al usuario.

Primero vamos a obtener soporte en el kernel (en caso de no tenerlo ya), instalar, activar y configurar lo necesario para tener soporte alsa y configurar el funcionamiento del plugin dmix.

Segundo vamos a configurar las aplicaciones de sonido para que hagan uso de este plugin.

====== Soporte ALSA en el Kernel ======

Todos los kernels vainilla compilados de debian vienen con alsa activado por defecto. Pero en el caso de que compiléis vuestro kernel….. vamos a verlo.

Linux Kernel v2.6.21 configuración

Loadable module support —>
[*] Enable loadable module support
Device Drivers —>
Character devices —>
<*> Enhanced Real Time Clock Support
Sound —>
Sound card Support
Advanced Linux Sound Architecture —>
Advanced Linux Sound Architecture
Sequencer Support
Sequencer dummy client
OSS Mixer API
OSS PCM (digital audio) API
[*] OSS PCM (digital audio) API – Include plugin system
[*] OSS Sequencer API
RTC Timer support
[*] Use RTC as default sequencer timer
[ ] Dynamic device file minor numbers
[*] Support old ALSA API
[*] Verbose procfs contents
[ ] Verbose printk
[ ] Debug
Generic Devices —>
PCI Devices —>
USB Devices —>
Open Sound System —>
< > Open Sound System (DEPRECATED)

Debéis también configurar vuestras tarjetas en PCI Devices y/o USB Devices.

====== Instalando paquetes ======


# apt-get install alsa-base alsa-oss alsa-utils alsamixergui alsaplayer-alsa alsaplayer-common
alsaplayer-gtk libsdl1.2debian-alsa libasound2 linux-sound-base vorbis-tools

Metemos vorbis-tools por eso de tener sonido libre 🙂

====== Test básico dmix ======

Vamos a probar lanzando tres canciones a la vez al plug dmix.


$ alsaplayer -o alsa -d plug:dmix 01-Serenade_No.13_in_G_major,K.525,-Allegro.ogg &
aplay -D plug:dmix 02-No_woman_no_cry.ogg &
alsaplayer -o alsa -d plug:dmix Kortatu-01-After-Boltxebike.ogg &

====== Configuración de dmix para emulación OSS ======

Vamos a crear el fichero ~/.asoundrc o el fichero /etc/asound.conf para activar el plugin dmix para las aplicaciones OSS. and wrap our dsp devices and default pcm interfaces

fichero:~/asoundrc> # ~/.asoundrc


pcm.dsp0 {
type plug
slave.pcm "hw:0,0"
}
# or:
# pcm.dsp0 pcm.default
# if "default" hasn't been redefined

ctl.mixer0 {
type hw
card 0
}


Ahora hay que probar, yo he elegido a Mozart, pa gustos los colores una canción, mejor libre XD en ogg


$ aoss ogg123 01-Serenade_No.13_in_G_major,K.525,-Allegro.ogg

====== Un acercamiento complejo (definiendo los parámetros de dmix) ======

fichero:~/asoundrc> # ~/.asoundrc

# CARD DEFINITIONS
pcm.intel { type hw; card Intel }
ctl.intel { type hw; card Intel }

# pcm.intelModem { type hw; card Modem }
# ctl.intelModem { type hw; card Modem }

pcm.ossmix {
type dmix
ipc_key 1024 # must be unique!
# ipc_key_add_uid false # let multiple users share
# ipc_perm 0666 # IPC permissions for multi-user sharing (octal, default 0600)
slave {
pcm "hw:0,0" # you cannot use a "plug" device here, darn.
period_time 0
period_size 2048
buffer_size 32768
rate 44100
}
# bindings are cool. This says, that only the first
# two channels are to be used by dmix, which is
# enough for (most) oss apps and also lets
# multichannel chios work much faster:
bindings {
0 0 # from 0 => to 0
1 1 # from 1 => to 1
}
}
pcm.dsp0 {
type plug
slave.pcm "ossmix" # use our new PCM here
}
# mixer0 like above
ctl.mixer0 {
type hw
card 0,0
}

# this makes native ALSA apps default to using dmix
pcm.!default {
type plug
slave.pcm "ossmix"
}

Otra prueba, suena????? pues resuelto.


$ aoss ogg123 01-Serenade_No.13_in_G_major,K.525,-Allegro.ogg

====== Configurar aplicaciones para que usen dmix ======

A las aplicaciones de sonido hay que decirles que usen nuestro flamante nuevo **dispositivo, el ossmix**.

===== Configurando el motor de sonido de KDE =====

Seleccionáis del menu kde preferencias –> sonidos y multimedia –> Sistema de sonido

Os aparece una ventana con dos pestañas. En General activáis el sistema de sonido. En la pestaña Hardware como en la imagen.

kde-sound-dmix.png

===== Configurando el motor Xine =====

Le dáis Alt+s u os meteis en la ventana de configuración un icono de dos llaves inglesas cruzadas en los controles.

Para que os salga esta ventana de configuración de sonido, debéis marcar en la pestaña gui, en configuración de la experiencia como experto o master del universo.

Configuráis como la imagen.

xine-dmix.png

===== Configurando Amarok =====

Seleccionáis preferencias –> configurar amarok y elegís motor. Para que os deje configurar las salidas con AlSA, primero elegís ALSA y aplicar. Entonces ya os dejará cambiar la configuración del dispositivo ALSA

amarok-dmix.png

===== Configurando Kaffeine =====

Kaffeine usa xine como motor, en preferencias –> parámetros del motor xine –> audio –> opciones avanzadas y configuráis como la imagén.

kaffeine-dmix.png

===== Configurando KPlayer =====

Menú preferencias –> configurar KPlayer –> audio y como viene en la imagen.

kplayer-dmix.png

===== Configurando mplayer =====

Bueno pues con este, botón derecho y elegís preferencias –> audio elegís ALSA y le dais al botón configure driver….. como en la imagen

mplayer-dmix.png

===== Configurando Pidgin =====

Para estar al tanto de lo que se cuece en el jabber, irc y demás….. configuramos el pidgin para que nos notifique con sonido. Seleccionáis preferencias y en la ventana que os presenta en la pestaña de «Sonidos». Como en la imagen……. en pidgin se usa programa externo en este caso aplay, si eliges alsa no puedes configurar el dispositivo.

pidgin-dmix.png

===== Configurando Twinkle =====

Ahora con la vozip, Menú edit –> System settings –> audio como veis en la imagen

twinkle-dmix.png

No uso mucho audio aparte de amarok y soy kdero convencido, así que falta lo relativo a gnome y a otras apps de sonido que no uso.

[0] Referencias que he utilizado
[ http://alsa.opensrc.org/index.php/Quick_Install http://alsa.opensrc.org/index.php/Quick_Install]
[http://alsa.opensrc.org/index.php/.asoundrc http://alsa.opensrc.org/index.php/.asoundrc]
[http://alsa.opensrc.org/index.php/Dmix http://alsa.opensrc.org/index.php/Dmix]
[http://gentoo-wiki.com/HOWTO_ALSA_sound_mixer_aka_dmix http://gentoo-wiki.com/HOWTO_ALSA_sound_mixer_aka_dmix]

copyleft GFDL BasaBuru 07/10/03

4 comentarios en «Configuración de ALSA para soporte simultáneo de varios canales»

  1. Estupendo.
    No sabes la ayuda que me has prestado, llevo años peleándome con este tema y tu de un plumazo, RESUELTO.
    Muchísimas gracias.

  2. Je, je….. no sabes como me alegro.

    Hay un pequeño bug en el how to…… inicialmente me planté también contemplar el tema de la grabación. Pero como no uso mucho pues lo deje por la pereza de testearlo.

    A lo mejor necesitas la parte de grabación. Es practicamente igual pero con otro plugin.

    http://alsa.opensrc.org/index.php/Dsnoop

  3. Tengo un problema que no esta relacionado directamente pero como veo que es experto en cuestiones de audio te la comento. En Ubuntu 7.10 no me funciona la vista previa de los archivos ogg vorbis. Ya instale todos los paquetes que vi en la web y nada. Los mp3 si funcionan. Gracias.

  4. Gracias por la ayuda, pero tengo el problema, que parece el siguiente error

    ALSA lib conf.c:1589:(snd_config_load1) _toplevel_:40:1:Unexpected char
    ALSA lib conf.c:2850:(snd_config_hook_load) /home/erick/.asoundrc may be old or corrupted: consider to remove or fix it
    ALSA lib conf.c:2714:(snd_config_hooks_call) function snd_config_hook_load returned error: Argumento inválido
    ALSA lib conf.c:3079:(snd_config_update_r) hooks failed, removing configuration
    Aborted

Responder a BasaBuru Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.