Hacer funcionar HDMI con alsa [Solucionado]

Aclaración:He perdido la fuente de donde he extraído el tutorial y por ello no puedo citarla.

Instalamos los paquetes alsa-base y alsa-utils desde los repositorios oficiales de Ubuntu antes de nada.
Tampoco estoy seguro de si con kaffeine hubiese funcionado directamente sin tener que editar fichero alguno.Con VLC por supuesto también me ha funcionado. Solamente he tenido que cambiar unos parámetros en preferencias/audio en VLC

Desde que recibí mi flamante HTPC con Linux he pasado (y sigo pasando) un calvario para conseguir que funcione correctamente el Audio por la conexión HDMI con la televisión, tanto en el escritorio como en el XBMC y en el MythTV. Cuando pensaba que ya casi lo tenía 'domesticado' llegó una actualización de seguridad del Kernel Linux, y al instalarla todo se volvió a desconfigurar, así que ha llegado el momento de escribir este post que me sirva como recordatorio y si además le sirve a alguien más, mejor que mejor.
El HTPC viene con MythUbuntu instalado (una variación de Ubuntu especializada para multimedia) y escritorio XFCE, pero en otras distros el proceso será similar. Vamos allá:
Los drivers de audio:
En Linux los drivers de audio nos los proporciona ALSA, y en concreto, para que funcione la salida por HDMI, se necesita una versión 1.0.20 o superior. A día de hoy la versión que llega instalada en casi todas las distros es superior a la 1.0.20, así que lo más probables es que esta parte te la puedas saltar.  Para saber la versión que tenemos escribimos en un terminal:

1. $cat /proc/asound/version

Lo que en mi caso da una salida como esta:

Advanced Linux Sound Architecture Driver Version 1.0.20.
Compiled on Sep 6 2009 for kernel 2.6.28-15-generic (SMP).

Si no lo tienes instalado o tu versión es anterior conviene que actualices. Para actualizar en UbuntuForums han puesto a disposición de sus usuarios registrados (el registro es libre y gratuito) un script que se encarga de hacerlo todo por ti.
Descarga desde aquí el Script (está al final de la página), descomprímelo y ejecútalo. Para hacerlo, desde un terminal:


1. cd Directorio-donde-lo-has-descargado
2. tar xvf AlsaUpgrade-1.0.x-rev-1.17.tar
3. sudo ./AlsaUpgrade-1.0.x-rev-1.17.sh -di

15 minutos más tarde (aproximadamente) terminará y volverás a tener el control del terminal. Reinicia el PC y listo.
Importante: después de una actualización de Kernel, el Sistema Operativo no me detectaba ninguna tarjeta de sonido, y he conseguido que vuelva a funcionar reinstalado ALSA, así que ya sabes, si estás sin tarjeta de sonido después de actualizar el Kernel, te tocará reinstalar ALSA, al menos mientras necesitemos una versión de ALSA superior a la que está en los repositorios.

Configurando ALSA:

Lo siguiente que haremos es un poco de trabajo de configuración. Lo primero es saber dónde está nuestra salida HDMI de audio.
En un terminal teclea lo siguiente:

1. $aplay -l
Lo que nos dará una salida similar a esta:
**** List of PLAYBACK Hardware Devices ****
card 0: NVidia [HDA NVidia], device 0: ALC1200 Analog [ALC1200 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 1: ALC1200 Digital [ALC1200 Digital]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 3: NVIDIA HDMI [NVIDIA HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0

Si os fijáis, en mi caso, la salida HDMI se llama "NVIDIA HDMI", y está en la tarjeta 0, device (dispositivo) = 3 y subdevice (subdispositivo) = 0. Recordad estos datos porque con ellos tendréis que ir configurando los programas que generan salidas de audio.
Lo siguiente es configurar la salida de audio por defecto cuando no se indique otra, esta será la que utilice, por ejemplo, el plugin flash en Firefox:
En un terminal:

1. $ sudo gedit /usr/share/alsa/alsa.conf

Y en el editor buscamos, por la parte del final, las opciones por defecto y las ponemos los valores que acabamos de sacar del aplay -l:

1. defaults.pcm.card 0
2. defaults.pcm.device 3
3. defaults.pcm.subdevice 0

Otra posibilidad para conseguir esto mismo (fijar la tarjeta de sonido por defecto) es crear o editar si existe un fichero llamada asound.conf en el directorio /etc

1. $sudo gedit /etc/asound.conf

Y pegar en el contenido lo siguiente:

1. pcm.!default {
2. type hw
3. card 0
4. device 3
5. }
6. pcm.!default {
7. type plug
8. slave.pcm "hw:0,3"
9. }

Ahora ejecuta alsamixer u otra aplicación gráfica que te permita configurar Alsa y asegúrate de que todos los controles están activos (que no están en mute) y que el volumen no está a cero. En concreto, presta especial atención a uno que se llama IEC958-1. En alsamixer, si algún control tiene la letra "M" por debajo quiere decir que está en mute, para reactivarlo pulsa en tu teclado la lera M cuando estés sobre él.
Por último repasa tus reproductores multimedia como cuentan en Digital Out, asegurándote de que están configurados para utilizar la salida de audio correcta:
Mplayer poner '-ao alsa:device=plughw=0.3' (ojo, lo que hay entre el 0 y el 3 es un punto, no una coma)
XMMS: Preferences->Audio I/O Plugins->Output Plugin escoge ALSA, y después configura el dispositivo de audio a 'plughw:0,3'
MythTV configúralo en Utilities/Setup->Setup->General, en la tercera página, teclea 'ALSA:plughw:0,3' en Dispositivo de salida de Audio
xine: en la pestaña de Audio en configuración pon todas las salida a 'pcm.plughw:0,3' y el devier de audio con ALSA.
XBMC. En la configuración de audio escoge "dispositivo personalizado" y escribe como dispositivo plughw:0,3 tanto en salida HDMI como en Passthrough.
Y con esto yo lo he conseguido, si voy haciendo más descubrimientos que aporten algo los iré dejando aquí, porque por ejemplo, ahora mismo hay vídeos, con determinada calidad de audio (los de la web de National Geographic por ejemplo) que me siguen dando problemas de configuración.