Como configurar 5.1 con ALSA

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. [sonrisa]

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
}
0 respuestas