Alsa

De Wiki de la communauté Mandriva.


Sommaire

Distribuer les cartes son avec ALSA

Lorsque l'on a deux (ou plus) cartes son actives sur sa machine et pilotées via ALSA, se pose le problème de savoir laquelle est utilisée par un logiciel, comment la configurer...

Lorsque le service alsa est actif (service alsa start), le système attribue à chaque carte un numéro à partir de 0. On vérifie quelle carte a le numéro 0 et laquelle a le numéro 1 avec la commande :

Image:Konsole.png
[utilisateur@ordi ~]$ cat /proc/asound/cards

ou

Image:Konsole.png
[utilisateur@ordi ~]$ aplay -l

Ensuite, on peut les régler avec

Image:Konsole.png
[utilisateur@ordi ~]$ alsamixer -c 0

pour la première carte son, et

Image:Konsole.png
[utilisateur@ordi ~]$ alsamixer -c 1

pour la deuxième.


La carte 0 est la carte par défaut pour beaucoup de logiciels qui ne permettent pas d'en choisir une autre. Donc, si l'ordre des cartes ne vous convient pas, on peut demander au système de les « mapper » différemment. Il suffit de créer un fichier contenant :

pcm.!default {
type hw
card 1
}
ctl.!default {
type hw         
card 1
}

Dans le répertoire utilisateur, ce fichier s'appellera ~/.asoundrc et si on veut que tous en bénéficient on le placera dans /etc sous le nom /etc/asound.conf. L'effet est immédiat.

On peut aussi définir un alias pour chaque carte ou simplement pour la « deuxième carte » :

pcm.Live {
type hw
card 0
}
ctl.Live {
type hw         
card 0
}

pcm.!default {
type hw
card 1
}
ctl.!default {
type hw         
card 1
}

Avec cette configuration :

aplay un_fichier.wav

utilisera la carte par défault (la carte 1) et :

aplay -D carte0 un_fichier.wav

utilisera la carte Live (carte 0).

Une autre solution consiste à demander au système de charger les cartes dans un ordre défini en modifiant le fichier /etc/modprobe.conf' ou en ajoutant un fichier dans /etc/modprobe.d/ contenant, par exemple, les lignes suivantes :

alias snd-card-0 snd-emu10k1
alias snd-card-1 snd-via82xx

options snd-emu10k1 index=0
options snd-via82xx index=1

à adapter en fonction des pilotes chargés réellement.


Enfin, le wiki d'ALSA est une mine de renseignements et de conseils.

Compiler alsa

Il est parfois nécessaire d'installer la toute dernière version d'alsa pour profiter de la carte qui vient de nous coûter le peu d'économies restant après les fêtes...

D'abord, on va chercher les ballots (tarballs) sur site d'ALSA. Seuls deux d'entre eux sont indispensables: alsa-lib et alsa driver, les autres proposant des outils déjà présents dans la distribution. Choisissons, par exemple, alsa-lib-1.0.15rc3 et alsa-driver-1.0.15rc3.

Il faut d'abord installer le paquetage de la version de développement du noyau. Il s'agit en fait des fichiers d'entêtes (.h) provenant des sources du noyau.

Il faut que celui-ci corresponde exactement à la version du noyau qu'on utilise.

Par exemple pour le noyau 2.6.22.9-desktop-1mdv on installe le rpm kernel-desktop-devel-2.6.22.9-1mdv (bien respecter les numéros de version) qui va créer une arborescence dans /usr/src/linux-2.6.22.9-desktop-1mdv.

Maintenant on crée un lien vers /usr/src/linux (s'il n'a pas été créé par le rpm)

Image:Konsole.png
[utilisateur@ordi ~]$ ln -s /usr/src/linux-2.6.22.9-desktop-1mdv /usr/src/linux

Et un autre :

Image:Konsole.png
[utilisateur@ordi ~]$ ln -s /usr/src/linux-2.6.22.9-desktop-1mdv /lib/modules/2.6.22.9-desktop-1mdv/build

Ensuite, il faut compiler et installer dans l'ordre

alsa-lib

On place le ficher quelque part, par exemple dans ~/tmp on déballe :

Image:Konsole.png
[utilisateur@ordi ~]$ cd ~/tmp tar xvf alsa-lib-1.0.15rc3.tar.bz2

on configure :

Image:Konsole.png
[utilisateur@ordi ~]$ cd alsa-lib-1.0.15rc3 ./configure

on installe :

Image:Konsole.png
[root@ordi ~]# make install

alsa-driver

De la même manière, on place le ballot dans ~/tmp et on configure

Image:Konsole.png
[utilisateur@ordi ~]$ cd ~/tmp tar xvjf alsa-driver-1.0.15rc3.tar.bz2

on configure

Image:Konsole.png
[utilisateur@ordi ~]$ ./configure

Attention, par défaut toutes les cartes sons seront compilées, ce qui peut prendre un peu de temps et n'est pas indispensable. Pour ne compiler que ce dont on a besoin, on peut ajouter une option --with-cards= Exemple :

Image:Konsole.png
[utilisateur@ordi ~]$ ./configure --with-cards=sb16,emu10k1

Certaines cartes peuvent aussi être être compilées avec des options. Exemple :

Image:Konsole.png
[utilisateur@ordi ~]$ ./configure --with-cards=sb16,emu10k1 --with-card-options=sb16-csp

Dans tous les cas il est plus qu'utile de lire le fichier INSTALL qui donne toutes les explications nécessaires.

On compile :

Image:Konsole.png
[root@ordi ~]# make

On installe :

Image:Konsole.png
[root@ordi ~]# make install


On vérifie que les pilotes sont bien dans /lib/modules/2.6.22.9-desktop-1mdv/kernel/sound/pci (vérifier la date)

Image:Konsole.png
[utilisateur@ordi ~]$ ls -l /lib/modules/2.6.22.9-desktop-1mdv/kernel/sound/pci

On relance alsa :

Image:Konsole.png
[utilisateur@ordi ~]$ service alsa restart

Normalement le numéro de version a changé :

Image:Konsole.png
[utilisateur@ordi ~]$ cat /proc/asound/version


On vérifie que le pilote est effectivement installé et la carte reconnue :

Image:Konsole.png
[utilisateur@ordi ~]$ aplay -l

On « allume » la carte avec alsamixer (par défaut elle est à off)

On teste :

Image:Konsole.png
[utilisateur@ordi ~]$ aplay un_fichier_wav


Magique non ?

Récupérée de « http://wiki.mandriva.com/fr/Alsa »