Guide ALSA 5.1

Foreword

If you feel like translating this guide, contact me through the contact pannel, I will add the translated article to the website

Introduction

Vous possédez une carte son 5.1 et le kit qui va avec. Tout cela marche sous windows avec le CD-ROM fournit. Très entousiaste, vous désirez voir ce que ça donne sous Linux. Vous déchantez très vite.
En effet, le son ne sort qu'en stéréo ou, au mieu des 4 satellites et du subwoofer mais le canal central reste désespérément muet.

C' est l'aventure qui m'est arrivée.

Je vai ici expliquer la marche à suivre afin de pouvoir lire des DVD en 5.1 à l'aide de mplayer. J'aborderai aussi l'émulation 5.1 à partir de source stéréo.

Bien sur, il y aura beaucoup de personnes qui vous diront qu'il est ridicule de vouloir écouter un fichier stéréo avec 6 baffles. D'autres vous diront que de toute façon il est mieux d'avoir un bon quit 2.0 ou 2.1 qu'un mauvais 5.1 (ils n'ont pas tort). En même temps, vu les prix des kits actuels et leurs performances (assez bonnes quand on écoute de la variété ou de la musique pas trop élaborée) on peut aisément franchir le pas.

Explication

Par défaut, les drivers alsa jouent les sons tels qu'ils arrivent, c'est à dire en stéréo pour la plupart des fichiers. Certains ont remarqués l'option "Duplicate" dans alsamixer et ils l'ont activée. Ils ont donc du 4.0 voire du 4.0 émulé 4.1. Il faut savoir que lorsque le subwoofer (qui fait office d'ampli dans ce genre de kit) ne reçoit rien, à partir des autres pistes (avant gauche et droit), il émule une piste et joue donc des basses.

Ma config

  • Carte mère: ASUS A7N8X-E Deluxe (carte son 5.1 intégrée)
  • Enceintes: Creative Inspire 6.1 6700 (émule le 6.1 à partir de source 5.1)
  • Système d'exploitation: Gentoo Linux 2.6.11.11
  • Version Alsa: 1.0.9a

    ALSA

    Je ne vai pas ici détailler toute l'installation des drivers alsa, la recompilation du noyau etc. J'ai suivit la doc gentoo.
    Cela devrait être en partie utilisable pour la plupart des distributions. De nombreux sites traitent de l'installation des drivers ALSA.

    Je ne citerai que ces liens particulièrement utiles:

    Le site officiel
    Liste des cartes supportées + drivers

    Test de la configuration

    Il est bon à présent de voir si tous est bien reconnu.
    Après avoir lancé alsaconf, il faut tester la sortie de tous les haut parleurs. Vérifiez que tous les niveaux sont bien ajusté à l'aide de alsamixer ou tout autre programme équivalent. Il faut veiller à ce que le surround soit enclanché, le mode duplication des avant et leSwap Surround Slot soient coupés (ça inverserait certains canaux). Vous devez porter le nombre de canaux (channels à 6). N'oubliez pas d'installer alsa-utils. En effet, ces outils sont très bien fait et évites pas mal de prises de tête.
    [arnaud jeanclaude ~] speaker-test -Dplug:surround51 -c6

    speaker-test 0.0.8

    Playback device is plug:surround51
    Stream parameters are 48000Hz, S16_LE, 6 channels
    Using 16 octaves of pink noise
    Rate set to 48000Hz (requested 48000Hz)
    Buffer size range from 3 to 5461
    Period size range from 3 to 5461
    Periods = 4
    Buffer time size 2525
    To choose buffer_size = 5460
    To choose period_size = 1365
    was set period_size = 1365
    was set buffer_size = 5460
    0 - Front Left
    4 - Center
    1 - Front Right
    3 - Rear Right
    2 - Rear Left
    5 - LFE

    Sur ma carte, le subwoofer et le central sont inversés. Cela est aisément compréhensible: Un ensemble 5.1 se branche au moyen de 3 prises jack (en analogique) Chaque prise comprend deux canaux. IL est normal que le canal de gauche et celui de droite soient des standards (idem pour les arrières) il n'y a donc aucun problème. Dans le cas du subwoofer et du central, cela est différent, il n'y a aucune raison de privilégier une configuration plutôt qu'une autre. Il n'y a pas de standard et chaque fabriquant choisit l'agencement de ses canaux.
    Si ils sont inversés, il faut relancer alsamixer et activer "Exchange Center/LFE" en pressant la touche "m".
    Attention, dans alsamixer, si vous échangez LFE et central, le potentiomètre ne change pas de canal. Il faudra donc augmenter ou diminuer le niveau du LFE pour règler le central et inversément.

    Si vous voulez tester un seul canal (le central ici), il faut effectuer cette commande:

    [arnaud jeanclaude ~] speaker-test -Dplug:surround51 -c6 -s5

    speaker-test 0.0.8

    Playback device is plug:surround51
    Stream parameters are 48000Hz, S16_LE, 6 channels
    Using 16 octaves of pink noise
    Rate set to 48000Hz (requested 48000Hz)
    Buffer size range from 3 to 5461
    Period size range from 3 to 5461
    Periods = 4
    Buffer time size 2525
    To choose buffer_size = 5460
    To choose period_size = 1365
    was set period_size = 1365
    was set buffer_size = 5460
    - Center
    Si çela ne fonctionne pas, commencez par vérifier les connections. Si les cables sont bien branchés et que cela ne va toujours pas, essayer, si vous en avez la possibilité de faire fonctionner votre kit sous windows. Cela est assez facile. Vous saurez si le problème vient du matériel ou de la configuration sous Linux.
    Une fois que tout ceci fonctionne, vous pouvez passer aux premier tests.

    Premiers tests

    Il vous faut vous procurer un fichier wav comportant 6 canaux. Cela est assez dur à trouver. Voici donc une archive en comprenant quelques uns.
    On teste la configuration à l'aide de aplay.
    [arnaud jeanclaude Surround-SDL-testfiles] aplay -Dsurround51 space_battle.wav
    Playing WAVE 'space_battle.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Channels 6
    Si ça marche, on peut essayer avec un DVD encodé en 5.1.

    Lire un DVD 5.1

    Il faut lancer mplayer (ou gmplayer) avec ces options:
    [arnaud jeanclaude ~] mplayer dvd://1 -v -aid 128 -ao alsa -channels 6 2>&1

    On peut utiliser un peu de tuyauterie pour vérifier que le DVD est bien reconnu en tant que média encodé 5.1.
    [arnaud jeanclaude ~] mplayer dvd://1 -v -aid 128 -ao alsa -channels 6 2>&1|grep AC3:
    AC3: 5.1 (3f+2r+lfe) 48000 Hz 448,0 kbit/s

    Si çela ne va pas, essayer avec des valeurs de 129, 130, ... pour l'option -aid.
    Une fois que cela est fait, on peut passer à l'émulation 5.1 pour les fichier encodés en stéréo.

    Emulation 5.1

    Ca devient un peu plus complexe. Tout se fait à partir du fichier ~/.asoundrc. On duplique les canaux gauche droite sur leur homologues arrières. On fait un mix du gauche droite qu'on envoie sur le central et le subwoofer. L'idéal serait de réaliser un filtre passe bas pour n'envoyer que les basses au subwoofer. j'y travaille... Voici mon fichier ~/.asoundrc:
    [arnaud jeanclaude ~] cat ~/.asoundrc
    pcm.card0 {
    type hw
    card 0
    }
    ctl.card0 {
    type hw
    card 0
    }

    #emuler 5.1


    pcm.dmixs51 {
    type dmix
    ipc_key 1024
    slave {
    pcm "hw:0,0"
    rate 48000
    channels 6
    period_time 0
    period_size 1024
    buffer_time 0
    buffer_size 4096
    }
    }
    pcm.duplicate {
    type plug
    slave.pcm "dmixs51"
    slave.channels 6
    route_policy duplicate
    }

    Mon fichier asound.conf est très simple

    [root jeanclaude arnaud !!] cat /etc/asound
    pcm.card0 {
    type hw
    card 0
    }
    ctl.card0 {
    type hw
    card 0
    }

    Pour pouvoir utiliser l'émulation 5.1 dans un programme tel que XMMS, il faut aller dans les préférences, sélectionner alsa comme greffon de sortie et le configurer.

    On obtient une boîte de dialogue. Le plugin Duplicate n'apparait pas, il faut le tapper dans la zone prévue.


    En principe, le son des fichier stéréos devraient sortir de toutes les enceintes.

    Conclusion

    Même si ce n'est pas direct, il est toute à fait possible d'exploiter pleinement sa carte 5.1 sous Linux. Il est vrai qu'un clic aurait été beaucoup plus simple mais je ne pense pas que les drivers de votre carte son sous windows soient aussi complet qu'alsa dans certains domaines.
    Néanmoins, la documentation officielle des drivers ALSA est assez difficile d'approche pour un débutant.
    Elle est par contre très complète et n'hésitez pas à aller la lire, du moins en partie.
    J'espère que je vous aurais aidé à faire avancer le smilblick.

    Liens

    http://alsa.opensrc.org : un compléments d'informations. La quasi totalité de ce tutorial est tirée de ce site.
    http://alsa.opensrc.org/index.php?page=SurroundSound : très intéressant.
    ftp://ling.lll.hawaii.edu/pub/greg/Surround-SDL-testfiles.tgz : fichiers sons à 6 voies.
    http://www.gentoo.org/doc/fr/alsa-guide.xml : guide alsa pour gentoo.
  • Arnaud Joset