Hola a todos,
Hace tiempo que no conseguía que funcionara el 5.1 de mi tarjeta de sonido (nForce 4, CK804, integrada en placa MSI Neo4). Aunque activase los 6 canales con alsamixer daba lo mismo, solo sonaba por los frontales, hiciera lo que hiciera.
Sin embargo ahora he probado Ubuntu Feisty AMD64 y haciendo "speaker-test -Dplug:surround51 -c6" sonaba por todos los canales.
Pero ahora tenía más problemas, los programas que reproducen estéreo seguían sonando solo por los frontales y me gustaría que sonasen por todos. Además al ver algo 5.1 solo podía oir algo con esa aplicación y hasta que no la cerrase no podía hacer nada. Y lo peor de todo, en los controles de sonido tenía por separado los controles de los frontales, traseros y centro/LFE, con lo que si bajaba el volumén de Gnome, solo se bajaban los frontales...
Pues nada, después de investigar he conseguido configurar ALSA para que me pase todo a 5.1, varias aplicaciones pueden funcionar a la vez y puedo cambiar el volumén con un solo control.
Por si a alguien le vale aquí dejo mi configuración. Solamente teneis que grabar el fichero ".asoundrc" en vuestro home, y volver a abrir las aplicaciones que utilicen ALSA para que funcione. Para cambiar el volumén os aparecerá un control llamado "SoftMaster", si no os aparece, dadle a las opciones del mixer que utiliceis y marcadlo para que aparezca.
Seguramente haya formas mejores de configurar esto, se aceptan sugerencias

Estaría bien usar un filtro para bajos con un plugin LADSPA para generar el LFE, pero aún no se hacerlo.
Editado:
Se me ha olvidado incluir el fichero, y como no me puedo responder yo mismo para adjuntarlo... aquí lo teneis pegado
# Fichero .asoundrc
# Crea un PCM con DMix, para que varios programas puedan
# reproducir audio simultáneamente
pcm.dmixs51 {
type dmix
ipc_key 123405
slave {
pcm "hw:0" # Cambiar el número si se trata de otra tarjeta de sonido
rate 48000
channels 6
period_time 0
period_size 1024
buffer_time 0
buffer_size 4096
}
# Esto esta para configurar por donde debe salir cada canal de sonido.
# Sin esto se desconfigura todo. Los números de la primera columna indican:
# 0 : Frontal izquierdo
# 1 : Frontal derecho
# 2 : Trasero izquierdo
# 3 : Trasero derecho
# 4 : Central
# 5 : LFE
#
# Para comprobar que estan correctos se puede ejecutar el comando:
# speaker-test -Dplug:dmixs51 -c6
bindings {
0 0
1 1
2 4
3 5
4 2
5 3
}
}
# Volumen de todos los canales.
# Crea un control de volumen llamado "SoftMaster" con el que
# se puede subir y bajar el volumen a la vez de todos los canales.
#
# Sin esto, al menos en algunas tarjetas, solo se puede cambiar
# el volumen de los canales frontales, traseros y central/LFE
# por separado.
pcm.softvol {
type softvol
slave.pcm dmixs51
control {
name "SoftMaster"
card 0
}
}
# Indica como convertir el audio estéreo a 5.1
pcm.upmix20 {
type route
slave.pcm softvol
slave.channels 6
ttable.0.0 1
ttable.1.1 1
ttable.0.2 1
ttable.1.3 1
ttable.0.4 0.5 # Para el canal central cogemos la mitad del izquierdo
ttable.1.4 0.5 # y la mitad del derecho
ttable.0.5 0.5 # Para el canal LFE cogemos la mitad del izquierdo
ttable.1.5 0.5 # y la mitad del derecho
}
# Indica como convertir el audio 2.1 (izquierda+derecha+LFE) a 5.1
pcm.upmix21 {
type route
slave.pcm softvol
slave.channels 6
ttable.0.0 1
ttable.1.1 1
ttable.0.2 1
ttable.1.3 1
ttable.0.4 0.5
ttable.1.4 0.5
ttable.5.5 1 # El canal LFE se queda como esta
}
# Indica como convertir el audio 4.0 (2 frontales + 2 traseros) a 5.1
pcm.upmix40 {
type route
slave.pcm softvol
slave.channels 6
ttable.0.0 1
ttable.1.1 1
ttable.2.2 1
ttable.3.3 1
ttable.0.4 0.67
ttable.1.4 0.67
ttable.2.4 0.33
ttable.3.4 0.33
ttable.0.5 0.33
ttable.1.5 0.33
ttable.2.5 0.33
ttable.3.5 0.33
}
# Indica como convertir el audio 4.1 (2 frontales + 2 traseros + LFE) a 5.1
pcm.upmix41 {
type route
slave.pcm softvol
slave.channels 6
ttable.0.0 1
ttable.1.1 1
ttable.2.2 1
ttable.3.3 1
ttable.0.4 0.67
ttable.1.4 0.67
ttable.2.4 0.33
ttable.3.4 0.33
ttable.5.5 1
}
# Indica como convertir el audio 5.0 (2 frontales + 2 traseros + central) a 5.1
pcm.upmix50 {
type route
slave.pcm softvol
slave.channels 6
ttable.0.0 1
ttable.1.1 1
ttable.2.2 1
ttable.3.3 1
ttable.4.4 1
ttable.0.5 0.50
ttable.1.5 0.50
ttable.2.5 0.25
ttable.3.5 0.25
ttable.4.5 0.50
}
# Sustituimos los PCM por defecto para que use los nuestros:
pcm.!default {
type plug
slave.pcm upmix20
}
pcm.!surround21 {
type plug
slave.pcm upmix21
}
pcm.!surround40 {
type plug
slave.pcm upmix40
}
pcm.!surround41 {
type plug
slave.pcm upmix41
}
pcm.!surround50 {
type plug
slave.pcm upmix50
}
pcm.!surround51 {
type plug
slave.pcm softvol # No hace falta conversion, utiliza softvol directamente
}