sábado, 17 de abril de 2010

El sonido en GNU/Linux (y otros *nix) y sobre pulseaudio

El sonido de los sistemas *nix, principalmente GNU/Linux, es un tema con muchas cosas y líos. Palabras como OSS, ALSA, esd o el reciente pulseaudio la hemos leído o escuchado. ¿Pero qué son en realidad todo estos términos y que relación tiene unos con otros? Tratando de hacerlo de la forma más simple posible vamos a diseccionarlo.

Comunicación directa con el hardware para el sonido:

Pues se trata ni mas ni menos que OSS y ALSA. ALSA es para GNU/Linux, aunque ya hay algunos sistemas que lo tienen implementado para su núcleo. Cuando OSS pasó a ser privativo, se empezó a desarrollar ALSA con objeto de sustituir OSS. Aun así partiendo de la última versión de OSS libre se ha ido manteniendo OSS y desarrollando ALSA. Hoy en día muchos sistemas, principalmente GNU/Linux, tiene implementado ambos.
Ofrecen sonido, sí. Pero no son capaces de mezclar sonido o lo hacen de forma bastante limitada. Una aplicación que hace uso del sonido no podrá reproducir sonidos si hay otra aplicación "egoísta" que clama que los altavoces o la tarjeta de sonido le pertenece. Aquí es donde entra en juego los servidores de sonido.

Servidor de sonido

Principalmente se encarga de que varias aplicaciones con uso de audio suenen, para que se entienda, a la vez por los altavoces. Se encargan de remezclar el sonido que producen las aplicaciones y reproducir el sonido resultante por el altavoz. Estos servidores o demonios que conocemos son esd, jack, el infame (y difunto) artsd y el reciente pulseaudio.

Pulseaudio

Unos lo odia, otros lo ama. Pulseaudio está dando mucho que hablar. Aún no llegado a su versión 1.0 ofrece buenos resultados y da muchas herramientas para gestionarlo. El problema es cuando no sabemos que hemos hecho cuando no tenemos sonido, sobre todo aquellos juegos hechos con allegro. Pulseaudio ofrece herramientas necesarias para lidiar con estos problemas que seguramente en un futuro no lejano no se hará mucho uso de estas. No haga caso quien dice que eliminando pulseaudio se resuelven los problemas.

pasuspender: Esta herramienta suspenderá temporalmente pulseaudio mientras el programa en cuestión esté ejecutándose.

padsp: Esto lo que hará es hacer que la aplicación haga uso de OSS y pulseaudio lo trate como otro cliente más, sin perder el sonido de otras aplicaciones y de esta.

Espero que haya resultado útil este miniartículo.

No hay comentarios: