X-530 Lorsque j'ai migré une de mes machines sous Ubuntu Feisty (7.04), mon kit d'enceintes 5.1, qui fonctionnait à merveille sous Windows XP, me sortait un vulgaire son en 2.1. Mes préjugés sur la compatibilité de Linux avec du matériel dit "exotique" m'avait conduit à ne même pas songer à résoudre ce problème.
Quelle ne fut pas mon erreur ! Non seulement Linux (grâce à ALSA) est parfaitement capable de gérer du 5.1 avec un chipset nForce, mais je dirais que sur certains points, il s'octroie l'audace de le faire mieux que Windows XP.

Avant de commencer, quelques détails sur le matériel dont je dispose :

Un PC de bureau sous Feisty, avec une carte mère Abit NF7 Series.
J'utilise le chipset intégré à cette carte pour produire du 5.1. Voici le résultat de la commande lspci :

$ lspci | grep audio
00:05.0 Multimedia audio controller: nVidia Corporation nForce Audio Processing Unit (rev a2)
00:06.0 Multimedia audio controller: nVidia Corporation nForce2 AC97 Audio Controler (MCP) (rev a1)

Mon kit 5.1 est un Logitech X-530 muni de trois fiches jack mâles (verte, orange, noire).

Le fichier de configuration d'ALSA que j'utilise est grandement inspiré de celui de kiraff sur ce topic du forum Ubuntu-fr. Il vous permettra d'obtenir du son 5.1 à partir de pistes 5.1, et du pseudo 5.1 (mix de canaux) à partir d'une piste stéréo, le tout automatiquement.

Configuration

Il faut éditer le fichier de configuration ALSA (asound.conf). Pour cela, ouvrez le fichier :

sudo gedit /etc/asound.conf

Copiez-collez l'intégralité de mon fichier de configuration ALSA dans l'éditeur. Puis sauvez et fermez gedit.

Prise en compte des paramètres

Pour qu'ALSA prenne en compte les changements, il faut le redémarrer par la commande :

sudo /etc/init.d/alsa-utils restart

Il est nécessaire de refaire cette commande après chaque modification du fichier asound.conf.

Normalement le 5.1 devrait être actif. Avant de tester, il faut s'assurer que le volume des canaux 5.1 ne soit pas coupé.
Ouvrez le contrôleur de volume Alsa-mixer (double-clic sur l'applet de gestion du son), puis Edition, Préférences et cochez les cases relatives aux 5.1. Ces canaux devraient à présent apparaître dans la fenêtre, avec leur barre de réglage de volume.

Test du mix "stéréo vers 5.1"

La simple lecture d'un MP3 stéréo avec XMMS ou RythmBox devrait produire du son sur tous les haut-parleurs. Les canaux stéréo sont dupliqués sur les haut-parleurs avant et arrière, et mélangés dans le haut-parleur central et le caisson de basse.

Test du vrai 5.1

Pour cela nous allons utiliser Amarok (car il gère très bien les fichiers audio 5.1). Installez-le si vous ne l'avez pas encore, il vaut vraiment le détour.
Dans la configuration d'Amarok, activez le mode Surround 5.1. :

Configuration d'Amarok

Téléchargez le fichier de test suivant, qui intègre 5 pistes :
-> Fichier WAV 5.1 - chan-id.wav

En le jouant avec Amarok, vous devriez entendre les paroles suivantes :
"Front Left ; Front Right ; Center ; Rear Left ; Rear Right"
Ce qui donne en bon français : "Avant Gauche ; Avant Droit ; Centre ; Arrière Gauche ; Arrière Droit".
Comme le son est en 5.1, chaque haut-parleurs ne doit émettre qu'une unique fois, et seul.

Si les canaux ne sortent pas sur les bons haut-parleurs...

Vous entendez bien distinctement les sons sur chaque haut-parleur, mais le son de droite sort à gauche, ou le centre à l'arrière ? Pas de panique, il suffit de faire un très simple "routage" des canaux audio vers les fiches jacks physiques.
Mon fichier de configuration asound.conf correspond à un branchement des câbles de ce type :

Branchement
Vous pouvez voir que la fiche orange est branchée sur la sortie noire, et la noire sur la orange. Pas très logique, je vous l'accorde, mais c'est la seule configuration qui fonctionnait sous Windows. En revanche, sous Linux, aucun souci, vous pouvez brancher vos câbles n'importe comment, et obtenir quand même un 5.1 fonctionnel, juste en redirigeant les canaux dans asound.conf.

Normalement, si vous essayez le branchement ci-contre en utilisant mon fichier asound.conf, les canaux devraient être bons.

Si vous souhaitez conserver votre propre branchement, ou que les canaux ne correspondent toujours pas, voici comment modifier votre asound.conf :

sudo gedit /etc/asound.conf

La première partie à configurer est la redirection des canaux en fonction de vos branchements. Pour cela il faut associer chaque canal (de 0 à 6) à une sortie.

#correction des channels
bindings {
0 0 # from 0 => to 0
1 1
2 4
3 5
4 2
5 3
}
}

Pour chaque ligne, le premier chiffre indique le numéro du canal, et le second le numéro de la sortie sur laquelle il est envoyé. Ne touchez pas aux chiffres de la colonne de gauche, modifiez uniquement ceux de droite et essayez de trouver la bonne association canal-sortie en vous aidant du fichier de test 5.1 (0 et 1 correspondent dans mon cas aux haut-parleurs avant et à la fiche verte).
N'oubliez pas de redémarrer ALSA après chaque modification.

Après avoir obtenu un 5.1 fonctionnel (et seulement après), vous pouvez vous intéresser à la configuration du mix "stéréo vers 5.1" :

# On remix les 2 canaux stéréo vers les 6 canaux 5.1
pcm.51mix {
type route

slave.pcm "duplex"
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.0.5 0.8
ttable.1.5 0.8
}

Ici, on envoie un canal vers une sortie, avec un certain coefficient de volume. Si votre association à la partie précédente est correcte, vous n'aurez juste qu'à modifier le volume.
La syntaxe est la suivante : ttable.[n° canal].[n° sortie] [volume]
Comme on est en stéréo, on ne dipose que des pistes 0 et 1. Il nous est possible de les distribuer aux haut-parleurs comme bon nous semble (ce qui est assez difficile à réaliser sous Windows). On envoie donc logiquement les 2 pistes stéréo aux haut-parleurs avant et arrière avec un volume de 1. Pour le haut-parleur central et le caisson de basse, on va envoyer les deux pistes à la fois. Vous remarquerez que le coefficient de volume est inférieur à 1, ceci afin d'éviter des "craquements". C'est à vous de juger quel coefficient vous voulez affecter selon votre matériel, si le son grésille trop choisissez une valeur de 0.5.
Vous pouvez ensuite normaliser le niveau sonore de chaque sortie avec le Alsa-Mixer (après avoir éliminé les craquements grâce au asound.conf).

Voilà, si vous êtes parvenus à obtenir un 5.1 fonctionnel, pensez à activer le mode surround dans vos jeux ou applications (dans VLC : audio -> périphériques audio -> 5.1).