Dispositivos ALSA; default, hw, plughw

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.

Audacious

A no ser que estés dispuesto a ocuparte de todos estos pequeños detalles, utilizar hw simplemente no es buena idea. Aunque algunas aplicaciones lo requieran cuando realmente no sabes qué clase de conversión va a ejecutarse cuando utilizas plughw, o incluso si alguna va a realizarse, la mayor parte de las aplicaciones molestarían mucho menos al usuario si por defecto fuesen a por plughw en lugar de usar hw —N. del T.; Audacious es una de las que no lo hacen y en las que habitualmente hay que configurar la salida hacia plughw manualmente. La imagen adjunta muestra la configuración necesaria para reproducir el audio por la conexión S/PDIF conectada al minidisc— Realmente, casi todas las aplicaciones ni siquiera deberían nombrar a plughw, simplemente utilizando default, el cual permite mezcla por software, rutado hacia plug-ins JACK o Pulse, o conversiones definidas por el usuario. Cualquier aplicación que haga otra cosa, crea problemas para el usuario. Así que hay que esperar que tengan buenos motivos para hacerlo…

Dicho todo lo anterior, si quieren utilizarse ciertas características de control de la tarjeta de sonido en ALSA, es necesario recurrir a plughw en lugar de a default. Este default utiliza dmix, el cual queda fijado a una frecuencia de 48.000 Hz. Así que si quieres utilizar tu tarjeta de sonido a, digamos, 96.000 Hz, no puedes hacerlo con default y sí con plughw. Los servidores de sonido habitualmente no implementan este tipo de funcionalidad exótica de ALSA —son idiotas con respecto a ALSA—. Para el uso habitual esto es bueno porque a la gente no le interesan los detalles del rendimiento de su tarjeta de sonido sino simplemente que suene y sea fácil de manejar. Para la escucha de ficheros .mp3, la calidad de sonido es irrelevante.

Una prueba con aplay es suficiente para determinar qué tipo de formatos acepta hw en nuestra instalación, y para cuáles es necesario plughw.

  $ aplay -D hw testing.wav   Playing WAVE 'testing.wav' : Signed 16 bit Little Endian, Rate 11025 Hz, Mono  aplay: set_params:923: Channels count non available  $ aplay -D default testing.wav   Playing WAVE 'testing.wav' : Signed 16 bit Little Endian, Rate 11025 Hz, Mono  $ aplay -D plughw:0,4 testing.wav   Playing WAVE 'testing.wav' : Signed 16 bit Little Endian, Rate 11025 Hz, Mono  

En mi ordenador portátil, con la tarjeta de sonido incorporada, el primer aplay falla, dado que el formato de la onda que intenta reproducirse, S16LE a 11.025 Hz, no está soportado nativamente por la misma. La segunda llamada sí reproduce la onda correctamente. La tercera llamada hace lo mismo, utilizando la salida S/PDIF conectada al minidisc. Obviamente el uso de plughw hace posible reproducir la onda aún cuando por supuesto el formato tampoco está nativamente soportado por la salida S/PDIF. El dispositivo plughw, simplemente, se encarga de las conversiones necesarias.

Es posible controlar directamente el hardware utilizando hw. Si bien en este caso uno es responsable de manejar todos los detalles. Generalmente lo que se desea es evitar cualquier mezcla por software utilizando una frecuencia que soporte el hardware. Con plughw se puede hacer todo esto, dejando que ALSA se encargue de cualquier conversión de formato. Con hw hay que realizar las conversiones por software antes de entregar el flujo de audio en el formato interno de la tarjeta. Añádase la posibilidad de incorporar más de una tarjeta de sonido, siendo necesario duplicar la funcionalidad de conversiones de formatos, y se verá hasta qué punto es poco productivo.

Por otra parte, si lo que se está haciendo es construir un equipo de audio incrustado con una sencilla interfaz de audio, probablemente hw es el camino a seguir. En cualquier caso, siempre está ahí la cuestión del cambio de frecuencias. Es un tipo de conversión que añade distorsión y ruido a la señal. Generalmente es algo que no se desea que ocurra. Cualquier otro tipo de conversión no destruye la calidad de la señal, de ahí que pueda serle confiada a plughw sin problemas.

Hay que decir que la tendencia de muchos fabricantes de tarjetas de sonido a no soportar frecuencias como 44.100 Hz, habituales en la producción musical desde que ésta es digital, hace las cosas mucho más difíciles para los creadores multimedia. La mejor opción para estos creadores es desde luego hacerse con una interfaz de audio lo más capacitada posible, habida cuenta de que, desde luego, aplicaciones como JACK están pensadas para utilizar los dispositivos hw siempre que esto sea posible. Algo como esto:

  $ jackd -v -dalsa -dhw:2 -r44100 -p4096 -n4 -S  

Simplemente no es posible si la tarjeta de sonido no soporta de forma nativa esa frecuencia de muestreo, tal y como ocurre habitualmente con muchas de las incorporadas en los ordenadores portátiles o en ciertas placas base. Será posible hacerlo funcionar así:

  $ jackd -v -dalsa -dplughw:2 -r44100 -p4096 -n4 -S  

Una posibilidad cuyas deficiencias ya deberían estar claras después de la lectura del artículo.

¿Te pareció interesante? Sé tan amable de menear este artículo en tu agregador favorito; Linuxfera, Linux Rank o tuxéame.

Lee también

alsa Audio jack Linux

Bookmark and Share

2 Respuestas to “Dispositivos ALSA; default, hw, plughw”

  1. Información Bitacoras.com…

    Si lo deseas, puedes hacer click para valorar este post en Bitacoras.com. Gracias….

  2. [...] Si oyes ruidos raros, parecidos a un módem antiguo con hw, utiliza plughw en su lugar. Recuerda esta explicación. [...]

Deja una Respuesta

El enlace de tu firma no es válido para los buscadores. Cualquier intento por tu parte de hacer spam no tendrá el resultado esperado. Haz un comentario interesante y contribuye a la discusión.