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.