Bueno... no es que sea un gurú ni nada por el estilo, pero más o menos
esto es lo que sé:

En un principio (Linux 2,0) el donido era algo impensable en el kernel
Linux. Entonces empezaron a aparecer algunos drivers aislados para
Sb16 o GUS. Cuando la gente empezó a usar Slakware y se hizo la cosa
popular, la demanda de sonido fue más evidente y un grupo de personas
creo la Open Sound System. Principalmente se trataba de una interfaz
que debían cumplir los módulos de sonido. Utilizarían los
dispositivos /dev/dsp para el PCM, /dev/seq para el MIDI y /dev/mixer
para la mezcladora. Los dispositivos se numerarían
como /dev/dsp0, /dev/dsp1 para la siguiente tarjeta, etc. Un enlace
dinámico seleccionaría los dispositivos de la tarjeta por defecto a
usar.

Con el crecimiento de Linux creció la demanda de un sistema de audio de
más calidad. Es ahí donde surge la Advanced Linux Sound Architecture.
Ahora los drivers se reestructuran completamente y el sistema de audio
se vuelve completamente configurable y flexible. La idea es que ALSA
reemplace al obsoleto OSS. De hecho ALSA ofrece unos módulos que emulan
OSS dentro de ALSA (creando los mencionados /dev/dsp, etc.)

El acceso a los recursos con ALSA puede o no hacerse de forma
exclusiva. Permite el acceso directo a los módulos de la tarjeta de
sonido (que cumplen una interfaz común) o permite un acceso a mayor
nivel (que es el recomendado y no-exclusivo) mediante ALSALIB.

Tanto OSS como ALSA se tratan de sistemas de audio de bajo nivel, esto
es: controladores de dispositivos. Por encima de estos sistemas se
puede colocar una capa software que facilite y amplíe la funcionalidad
del audio: los demonios de sonido.

Demonios de sonido tenemos un montón: pulseaudio, jackd, esd... estos
demonios son una capa software capaz de ofrecer funcionalidad extra.
Por ejemplo, esd permite desvíar el audio de un equipo a otro mediante
TCP/IP. Si te conctas mediante SSH a una aplicación de sonido, el
audio "suena" en el equipo remoto, sin embargo con ESD se desvía a tu
propia terminal y se oye ahí (evidentemente ambos equipos deben tener
ESD instalado).

Jackd parece ser uno de los mejores demonios de sonido. Una de sus
ventajas es que permite asociar gráficamente "entradas" con "salidas".
Cada aplicación que reproduce sonido aparece como una "fuente de audio"
que nosotros podemos conectar con cualquier "canal de entrada", que
puede ser un dispositivo físico o alguna aplicación que "acepte" audio.
Además mejora la latencia del audio en general.

En cuanto a la pregunta concreta de "porqué a veces varias aplicaciones
se oyen a la vez y a veces no", ya lo comenté antes: si usan ALSALIB y
no requieren acceso único al hardware, ALSA mezclará el audio de ambas
y oiréis a ambas (el mezclado se hace por HW siempre que sea posible).
Si no usan ALSALIB puede que realicen un acceso exclusivo al HW por
tanto sólo una se oirá. Por otra parte, si dos aplicaciones hacen uso
de la emulación de OSS que ofrece ALSA, una de ellas se bloqueará
puesto que OSS nunca permitió más de una aplicación haciendo uso del
sonido.

Espero que os haya ayudado en algo y otra cosa... esto es lo que yo
sé... pero también podría estar equivocado...

Un saludo!

On Thu, 09 Sep 2010 16:57:07 +0200
Ignacio Diez Arias <[email protected]> wrote:

>       Hola a todos. Vengo con una duda sobre el sistema de sonido
> que seguramente acabe desatando un flame sobre la vida sexual de los 
> pitufos. :D No tengo NPI de cómo se maneja el sonido en GNU/Linux (de 
> ahora en adelante, "linux", pero sólo por abreviar), así que
> agradecería cierta indulgencia en las respuestas.
> 
>       Según tengo entendido, y corregidme si me equivoco, ALSA se
> desarrolló para tener un sistema de sonido estándar para linux, y que
> fuera capaz de mezclar el audio de varias aplicaciones y por tanto,
> se pudieran "oir varias cosas a la vez".
>       Sin embargo, me sigue pasando que hay aplicaciones que
> monopolizan la tarjeta de sonido, impidiendo que otras aplicaciones
> reproduzcan o graben audio.
> 
>       Me gustaría saber dos cosas: primero, por qué pasa esto; y
> segundo, por qué existen también OSS y JACK y qué diferencias hay
> entre los tres.
> 
>       Estoy leyendo cosas al respecto, pero me gustaría
> complementarlas con vuestros comentarios.
> 
> _______________________________________________
> CRySoL mailing list
> http://crysol.inf-cr.uclm.es/
> https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol
_______________________________________________
CRySoL mailing list
http://crysol.inf-cr.uclm.es/
https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol

Responder a