Dispositivos ALSA; default, hw, plughw

Ismael Valladolid Torres
#1 por Ismael Valladolid Torres el 30/10/2008
(Me he permitido escribir este artículo sobre una de las cuestiones más confusas y menos documentadas a las que se enfrenta cualquier recién llegado a la creación multimedia utilizando GNU/Linux. En particular al subsistema de sonido ALSA.)

Si necesito que cierto software maneje directamente mi tarjeta de sonido, ¿debo usar hw o plughw?

El dispositivo hw accede directamente a la tarjeta, tal y como en realidad también hace plughw. Pero, digamos que tienes una tarjeta de cuatro canales a 48 kHz. Tu reproductor de audio utilizando hw intentará abrir esos cuatro canales y a 48 kHz. Con plughw, sin embargo, hay una conversión automática. Si le proporcionas audio estéreo, se encargará de convertirlo al formato adecuado para serle entregado a los cuatro canales a la frecuencia indicada, convirtiendo ésta si es necesario. Así que no es necesario preocuparse por la frecuencia de muestreo del audio, ni por la soportada por la tarjeta de sonido. Es por lo que plughw suele ser la mejor opción. Mejor aún, por supuesto, definiendo algunos plug-ins pcm en asoundrc. Magia negra, pero funciona de maravilla.

El dispositivo plughw soporta muchos más formatos de muestra y configuraciones de canales de las que el hardware que corre por debajo puede manejar. Realiza también las conversiones necesarias. El dispositivo hw no realiza conversiones, soporta menos configuraciones, a veces realmente oscuras, pero si lo utilizas puedes estar seguro de que no hay ninguna conversión de por medio.

La mayor parte de las veces, en realidad, quieres que haya conversiones, como transformar mono en estéreo o S16LE en S32LE, dependiendo de las características de la tarjeta de sonido.

Es posible utilizar directamente hw, pero en realidad no está recomendado a no ser que sepas EXACTAMENTE cómo utilizarlo, y sepas también que va a soportar cualquier combinación en cualquier formato absurdo. Estamos hablando de conocer todos los detalles del hardware que corre por debajo, y la mayor parte de las aplicaciones no quieren tener que hacerse cargo de eso.

Por ejemplo; considera una tarjeta de sonido que soporta sólo el formato S24_3BE —24 bits por muestra empaquetados en 3 bytes, big endian. No puedes entonces abrir el dispositivo hw en cualquier otro modo. Si quieres sacar sonido S16LE —16 bits por muestra, little endian— tienes que utilizar plughw y no tienes otra posibilidad. De hecho la mayor parte de las aplicaciones no saben manejar los formatos S24_3, por no decir la variante BE. El dispositivo p16v en la Audigy2 soporta sólo modos de 8 canales; no es posible enviar una señal típica de audio estéreo hacia él, no importa lo que intentes. Así que puedes enviar 8 canales de audio al dispositivo hw, o confiar en que el dispositivo plughw haga la conversión estéreo a 8 canales automáticamente por ti.

El artículo completo en Linux AV.
Subir
Rofl rofl
#2 por Rofl rofl el 30/10/2008
ivalladt escribió:
Es posible utilizar directamente hw, pero en realidad no está recomendado a no ser que sepas EXACTAMENTE cómo utilizarlo, y sepas también que va a soportar cualquier combinación en cualquier formato absurdo. Estamos hablando de conocer todos los detalles del hardware que corre por debajo, y la mayor parte de las aplicaciones no quieren tener que hacerse cargo de eso.


Pero es que de eso se ha de encargar el programa reproductor, tu en audacious, mplayer o por ejemplo el motor xine si usas amarok, puedes configurarlo para hacer las conversiones de salida a una frecuencia, como de bits, como se hace en foobar.

Desde luego recomendaría más usar hw, y configurar "los motores" para amoldarlos a nuestra tarjeta. Así, si trabajamos con audio, podremos manejar mejor todo con alsa, sin menos intermediarios de por medio, y controlándolo todo.

Por ejemplo, el caso de las tarj. creative que comentas que van a 48kHz cuando la mayoría de archivos mp3 van a 44.1kHz, pues de ese modo, se hace más simple.

Pruébalo, te lo aconsejo.
Subir
Ismael Valladolid Torres
#3 por Ismael Valladolid Torres el 31/10/2008
Rofl rofl escribió:

Desde luego recomendaría más usar hw, y configurar "los motores" para amoldarlos a nuestra tarjeta. Así, si trabajamos con audio, podremos manejar mejor todo con alsa, sin menos intermediarios de por medio, y controlándolo todo.


A esto se refiere el artículo cuando habla de "magia negra" con .asoundrc. ;)
Subir
Rofl rofl
#4 por Rofl rofl el 01/11/2008
Si, pero lo que te he comentado no me refería a usar .asoundrc, sino los programas de reproducción y grabación. Lo del .asoundrc ya es para casos extremos, ya que si lo configuras todo para jack, nunca tendrás que configurarlo.
Subir
Respuesta rápida

Regístrate o para poder postear en este hilo