Guide ALSA pour Gentoo Linux
1.
Introduction
Qu'est-ce qu'ALSA ?
ALSA (Advanced Linux Sound Architecture ou architecture avancée pour le
son sous Linux) fournit les fonctionnalités audio et MIDI (Musical
Instrument Digital Interface ou interface numérique pour les instruments de
musique) dans le système d'exploitation Linux. ALSA est le système sonore par
défaut dans les noyaux des séries 3.x et 2.6. Il a remplacé OSS (Open Sound
System) qui était utilisé dans les noyaux 2.4.
Les fonctionnalités principales d'ALSA comprennent le support pour une variété
d'interfaces audio allant des cartes son d'entrée de gamme jusqu'à l'équipement
professionnel, des pilotes entièrement modulaires, l'intégration fiable des
fils d'exécution et du SMP, une compatibilité rétroactive avec OSS et une
bibliothèque pour l'espace utilisateur (alsa-lib) qui rend le
développement d'applications on ne peut plus facile.
2.
Installation de ALSA
Avant de poursuivre
Tout d'abord, il vous faut savoir quels pilotes sont utilisés par votre carte
son. Dans la plupart des cas, les cartes son (intégrées à la carte mère ou non)
sont de type PCI ; lspci vous aidera à trouver l'information
nécessaire. Si lspci n'est pas déjà installé sur votre système, il vous
faudra d'abord l'installer avec la commande :
emerge sys-apps/pciutils. Si vous avez une carte USB, le programme
lsusb du paquet sys-apps/usbutils vous sera peut-être
utile. Pour les cartes ISA, essayez les utilitaires sys-apps/isapnptools.
Les pages web suivantes vous aideront peut-être si vous possédez une
carte ISA :
Note :
afin de simplifier les explications, nous supposerons tout au long de ce guide
que votre carte son est de type PCI.
|
Voici comment obtenir des informations relatives à la carte son :
Exemple de code 2.1 : informations sur la carte son |
# lspci -v | grep -i audio
0000:00:0a.0 Multimedia audio controller: Creative Labs SB Live! EMU10k1 (rev 06)
|
Nous savons maintenant que la carte son de l'ordinateur est une Sound Blaster
Live! et que le constructeur de la carte est Creative Labs. Reportez-vous à la
page ALSA
Soundcard Matrix et choisissez Creative Labs dans la liste. Vous serez
renvoyé sur la page du matériel de Creative Labs où vous verrez que la carte SB
Live! utilise le module emu10k1. C'est toute l'information dont nous
avons besoin pour l'instant. Toutefois, si vous êtes curieux, vous pouvez
suivre le lien qui vous amènera sur la page spécifique à emu10k1 pour y
lire de l'information détaillée.
Si vous comptez utiliser le MIDI, ajoutez l'option midi de la variable USE dans
/etc/portage/make.conf avant d'installer un quelconque paquet ALSA. Nous
vous expliquerons plus tard dans ce guide comment configurer
le support MIDI.
Configuration du noyau
Configurons le noyau pour activer ALSA.
Important :
Les utilisateurs de genkernel devraient exécuter genkernel
--menuconfig all puis suivre les instructions de l'exemple de code Options du noyau pour ALSA.
|
Exemple de code 2.2 : ouvrir le menu de configuration des sources |
# cd /usr/src/linux
# make menuconfig
|
Note :
l'exemple ci-dessus suppose que le lien symbolique /usr/src/linux
pointe vers les sources du noyau que vous voulez utiliser. Assurez-vous que
c'est bien le cas sur votre système avant de continuer.
|
Nous allons maintenant passer en revue quelques-unes des options que vous
devrez activer pour obtenir le support ALSA pour votre carte de son.
Notez que par souci de simplicité, dans tous les exemples qui suivent, la prise en charge de ALSA et assurée sous forme de modules. Nous vous recommandons de procéder de la même
façon, puisque cela permet d'utiliser alsaconf, ce qui facilite
grandement la configuration de votre carte. Assurez-vous de ne pas sauter la section
Configuration de ce document. Si vous souhaitez avoir malgré tout des options compilées en dur, n'oubliez pas de changer votre configuration en conséquence.
Exemple de code 2.3 : Options du noyau pour ALSA |
Device Drivers --->
Sound --->
<M> Sound card support
Open Sound System --->
< > Open Sound System (DEPRECATED)
Advanced Linux Sound Architecture --->
<M> Advanced Linux Sound Architecture
<M> Sequencer support
<M> OSS Mixer API
<M> OSS PCM (digital audio) API
Generic devices --->
ISA devices --->
<M> Gravis UltraSound Extreme
PCI devices --->
<M> Emu10k1 (SB Live!, Audigy, E-mu APS)
<M> Intel/SiS/nVidia/AMD/ALi AC97 Controller
<M> VIA 82C686A/B, 8233/8235 AC97 Controller
USB Devices --->
|
Maintenant que vous avez choisi les options dont vous avez besoin, vous pouvez
(re)compiler le noyau. Le support ALSA devrait être activé lorsque vous
redémarrerez avec votre nouveau noyau. N'oubliez pas de mettre à jour votre
configuration de GRUB pour utiliser le noyau fraîchement compilé. Poursuivez
votre lecture avec la section Utilitaires ALSA
et vérifiez que tout fonctionne correctement.
3.
Configurer et tester ALSA
Utilitaires ALSA
alsa-utils fait partie intégrante d'ALSA et propose une variété de
programmes fort utiles, incluant les scripts d'initialisation d'ALSA. C'est
pourquoi nous vous recommandons de l'installer :
Exemple de code 3.1 : installer alsa-utils |
# emerge alsa-utils
|
Note :
si vous n'avez pas compilé ALSA sous forme de modules, passez tout de suite
à la section script d'initialisation d'ALSA.
Autrement, vous devez configurer ALSA, ce qui est rendu très facile par
l'existence de l'outil alsaconf. (Ce dernier fait partie
d'alsa-utils.)
|
Configuration
Les versions récentes d'udev (>=udev-103) fournissent un certain
niveau d'autoconfiguration des cartes son. Si possible, essayez de laisser
votre noyau configurer votre carte son, sinon, utilisez alsaconf comme
expliqué ci-dessous.
Note :
veuillez fermer tout programme qui pourrait utiliser la carte son avant
d'exécuter alsaconf.
|
Pour configurer votre carte son, tapez simplement alsaconf dans un shell
en tant qu'utilisateur root.
Exemple de code 3.2 : lancer alsaconf |
# alsaconf
|
Vous serez accueilli par une interface agréable basée sur un système de menus
qui tentera de détecter automatiquement votre carte son en interrogeant votre
matériel. On vous offrira alors une liste où vous devrez choisir votre carte.
Une fois cela fait, on vous demandera si vous désirez que le programme modifie
automatiquement /etc/modprobe.d/alsa.conf pour y incorporer les
changements nécessaires. Ensuite, le programme ajustera vos paramètres de
volume à des niveaux optimum, exécutera update-modules et démarrera le
service /etc/init.d/alsasound. Une fois que alsaconf a
terminé son travail, vous pouvez continuer avec la mise en place du script
d'initialisation d'ALSA.
Le script d'initialisation d'ALSA
Nous avons presque terminé. Peu importe la méthode que vous avez choisie pour
installer ALSA, vous aurez besoin de charger vos modules, d'initialiser ALSA
et de restaurer vos paramètres de volume lors du démarrage. Le script
d'initialisation d'ALSA (nommé alsasound) s'occupe de tout cela.
Ajoutez-le au niveau d'exécution de démarrage.
Exemple de code 3.3 : ajouter ALSA au niveau d'exécution de démarrage |
# rc-update add alsasound boot
* alsasound added to runlevel boot
* rc-update complete.
|
Il ne vous reste qu'à vérifier le fichier /etc/conf.d/alsasound
pour vous assurer que la variable SAVE_ON_STOP est réglée à yes.
Ainsi, vos paramètres de volume seront sauvegardés lorsque vous redémarrerez
ou éteindrez l'ordinateur.
Le groupe audio
Avant de tester votre système, il faut s'occuper d'un dernier détail
important. Règle générale pour les systèmes UNIX : n'utilisez pas
le compte root à moins que cela ne soit absolument nécessaire. Cela s'applique
au cas présent. Comment ? La plupart du temps, vous êtes connecté en tant
qu'utilisateur et voulez écouter de la musique ou utiliser votre carte de son.
Pour cela, vous devez faire partie du groupe audio. C'est pourquoi nous
allons maintenant ajouter les utilisateurs au groupe audio afin qu'ils n'aient
pas de problème pour accéder aux périphériques sonores. Nous utiliserons
l'utilitaire gpasswd. Vous devez être connecté en tant qu'administrateur root.
Exemple de code 3.4 : ajouter des utilisateurs au groupe audio |
# gpasswd -a <nom_d'utilisateur> audio
Adding user <nom_d'utilisateur> to group audio
|
Vérifier le volume
Nous en avons fini avec les prérequis et la configuration. Lançons ALSA !
Si vous avez utilisé alsaconf, vous pouvez sauter cette étape puisque
alsaconf s'en est occupé pour vous.
Exemple de code 3.5 : démarrer le service |
# /etc/init.d/alsasound start
|
Maintenant que nous nous sommes occupé du nécessaire, vérifions les niveaux du
volume ; dans certains cas, les canaux sont muets. Pour ce faire, nous
utiliserons alsamixer.
Exemple de code 3.6 : ouvrir alsamixer |
# alsamixer
|
Voici ce à quoi ALSA Mixer ressemblera peut-être la première fois que
vous l'éxécuterez. Portez attention aux canaux « Master » et
« PCM » sous lesquels on voit la mention MM, ce qui signifie qu'ils
sont muets. Si vous essayez de jouer un son avec alsamixer dans ces
circonstances, vous n'entendrez rien.
Figure 3.1 : la fenêtre principale d'ALSA Mixer, les canaux encore muets |
 |
Maintenant, sortons les canaux du mode muet, et ajustons le volume.
Attention :
vous devez activer à la fois les canaux « Master » et
« PCM » (et régler leur volume à un niveau audible) pour pouvoir
entendre du son.
|
-
Pour vous déplacer entre les canaux, utilisez les flèches vers la droite
et vers la gauche (<- et ->).
-
Pour activer/désactiver le mode muet, allez sur le canal désiré (par
exemple « Master ») puis tapez m.
-
Pour augmenter ou diminuer le niveau du volume, utilisez les flèches vers
le haut ou vers le bas, respectivement.
Note :
faites attention lorsque vous ajustez les valeurs des basses et des aigus. 50
est habituellement un niveau approprié pour les deux. De très hautes valeurs
pour les basses peuvent causer de la distortion sur les haut-parleurs
qui ne le supportent pas.
|
Lorsque vous aurez terminé, votre mixeur ALSA devrait ressembler à celui-ci.
Notez les 00 qui ont remplacé les MM, et aussi les niveaux de volume qui ont
été ajustés à des valeurs optimales.
Figure 3.2 : Alsa Mixer fin prêt ! |
 |
Vérification du son
Enfin ! Un peu de musique ! Si tout ce qui précède s'est bien
déroulé, vous devriez être capable d'écouter de la musique. Utilisez une
application en mode ligne de commande telle que media-sound/madplay pour
facilement tester votre configuration. Bien sûr, vous pourriez utiliser un
logiciel un peu plus connu tel que mpg123. Si vous êtes un fanatique du
format OGG, vous pouvez utiliser ogg123, fourni par le paquet
media-sound/vorbis-tools. Utilisez n'importe quel lecteur avec lequel
vous êtes à l'aise. Comme toujours, il suffit d'utiliser emerge pour
l'installer.
Exemple de code 3.7 : installer un lecteur audio |
# emerge madplay mpg123
# emerge vorbis-tools
|
Puis lisez votre chanson favorite.
Exemple de code 3.8 : lire de la musique |
# madplay -v /mnt/shyam/Music/Paul\ Oakenfold\ -\ Dread\ Rock.mp3
MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al.
Title: Dread Rock
Artist: Paul Oakenfold
Album: Matrix Reloaded
Year: 2003
Genre: Soundtrack
Soundtrack
00:04:19 Layer III, 160 kbps, 44100 Hz, joint stereo (MS), no CRC
# ogg123 Paul\ Oakenfold\ -\ Dread\ Rock.ogg
Audio Device: Advanced Linux Sound Architecture (ALSA) output
Playing: Paul Oakenfold - Dread Rock.ogg
Ogg Vorbis stream: 2 channel, 44100 Hz
Genre: Soundtrack
Transcoded: mp3;160
Title: Dread Rock
Artist: Paul Oakenfold
Date: 2003
Album: Matrix Reloaded
Time: 00:11.31 [04:28.75] of 04:40.06 (200.6 kbps) Output Buffer 96.9%
|
ALSA et USE
Vous pouvez maintenant ajouter alsa aux options de votre variable USE
dans /etc/portage/make.conf pour que les applications qui le prennent en charge soient compilées avec ALSA. Sur certaines architectures, telles que x86 et
amd64, cette option est activée par défaut.
Des problèmes ?
Si vous êtes incapable d'entendre du son, la première chose à vérifier est le
réglage d'alsamixer. 80 % des problèmes
impliquent un canal muet ou dont le volume est trop bas. Consultez aussi
l'applet de configuration du son de votre gestionnaire de fenêtres pour vous
assurer que le volume est réglé à un niveau audible.
/proc est votre ami. Dans le cas présent,
/proc/asound se révélera votre meilleur ami. Jetons un coup d'œil
à l'information que vous pouvez y trouver.
Exemple de code 3.9 : s'amuser avec /proc/asound |
# cat /proc/asound/cards
0 [Live ]: EMU10K1 - Sound Blaster Live!
Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11
# cat /proc/asound/version
Advanced Linux Sound Architecture Driver Version 1.0.8 (Thu Jan 13 09:39:32 2005 UTC).
# cat /proc/asound/oss/sndstat
Sound Driver:3.8.1a-980706 (ALSA v1.0.8 emulation code)
Kernel: Linux airwolf.zion 2.6.11ac1 #2 Wed May 4 00:35:08 IST 2005 i686
Config options: 0
Installed drivers:
Type 10: ALSA emulation
Card config:
Sound Blaster Live! (rev.6, serial:0x80271102) at 0xb800, irq 11
Audio devices:
0: EMU10K1 (DUPLEX)
Synth devices: NOT ENABLED IN CONFIG
Midi devices:
0: EMU10K1 MPU-401 (UART)
Timers:
7: system timer
Mixers:
0: SigmaTel STAC9721/23
|
Un autre problème très souvent rencontré par les utilisateurs est la fameuse
erreur « Unknown symbol in module ». En voici un exemple :
Exemple de code 3.10 : erreur « Unknown Symbol in module » |
# /etc/init.d/alsasound start
* Loading ALSA modules ...
* Loading: snd-card-0 ... [ ok ]
* Loading: snd-pcm-oss ...
WARNING: Error inserting snd_mixer_oss
(/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-mixer-oss.ko): Unknown
symbol in module, or unknown parameter (see dmesg) FATAL: Error inserting
snd_pcm_oss
(/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-pcm-oss.ko): Unknown
symbol in module, or unknown parameter (see dmesg)
[ !! ]
* Loading: snd-mixer-oss ...
FATAL: Error inserting snd_mixer_oss
(/lib/modules/2.6.12-gentoo-r6/kernel/sound/core/oss/snd-mixer-oss.ko): Unknown
symbol in module, or unknown parameter (see dmesg)
[ !! ]
* Loading: snd-seq ... [ ok ]
* Loading: snd-emu10k1-synth ... [ ok ]
* Loading: snd-seq-midi ... [ ok ]
* Restoring Mixer Levels ... [ ok ]
|
Et lorsque vous regardez dans le dmesg comme suggéré :
Exemple de code 3.11 : sortie de dmesg |
# dmesg | less
ACPI: PCI Interrupt 0000:02:06.0[A] -> Link [APC3] -> GSI 18 (level, low) -> IRQ 209
snd_mixer_oss: Unknown symbol snd_unregister_oss_device
snd_mixer_oss: Unknown symbol snd_register_oss_device
snd_mixer_oss: Unknown symbol snd_mixer_oss_notify_callback
snd_mixer_oss: Unknown symbol snd_oss_info_register
snd_pcm_oss: Unknown symbol snd_unregister_oss_device
snd_pcm_oss: Unknown symbol snd_register_oss_device
snd_pcm_oss: Unknown symbol snd_mixer_oss_ioctl_card
snd_pcm_oss: Unknown symbol snd_oss_info_register
snd_mixer_oss: Unknown symbol snd_unregister_oss_device
snd_mixer_oss: Unknown symbol snd_register_oss_device
snd_mixer_oss: Unknown symbol snd_mixer_oss_notify_callback
snd_mixer_oss: Unknown symbol snd_oss_info_register
|
Le problème ci-dessus apparaît lorsque vous passez des pilotes du paquet
alsa-driver à ceux intégrés au noyau. Lorsque vous désinstallez le paquet
alsa-driver, les fichiers des modules sont protégés et ne sont pas
effacés, ce qui crée un mélange des deux versions des pilotes et ne fonctionne
pas.
La solution est très simple. Vous n'avez qu'à supprimer manuellement le dossier des
fichiers qui causent problème, après avoir désinstallé le paquet
alsa-driver. Assurez-vous de retirer la bonne version des pilotes et de
ne pas effacer les pilotes actuels !
Exemple de code 3.12 : effacer les modules du paquet alsa-driver |
# rm -rf /lib/modules/$(uname -r)/alsa-driver
|
Une autre raison pour de tels messages d'erreur peut être un fichier dans
/etc/modprobe.d donnant un paramètre device_mode alors que
ce n'est pas nécessaire. Vérifiez que c'est bien la cause du problème et
identifiez le fichier mis en cause.
Exemple de code 3.13 : vérifier et rechercher device_mode |
# dmesg | grep device_mode
snd: Unknown parameter `device_mode'
# grep device_mode /etc/modprobe.d/*
|
Habituellement, un fichier nommé alsa contient la ligne options
snd device_mode=0666. Effacez cette ligne puis redémarrez alsasound, le
problème devrait alors être résolu.
4.
Autres possibilités d'ALSA
Activer le support MIDI
Premièrement, vérifiez que vous avez bien activé l'option midi de la variable USE. Sinon,
activez-la maintenant et réinstallez aussi tous les paquets ALSA
qui utilisent cette option de USE, tels qu'alsa-lib et alsa-utils.
Si votre carte comprend un synthétiseur MIDI intégré et que vous voulez
écouter des fichiers .mid, vous devrez installer awesfx, un ensemble
d'utilitaires pour contrôler le pilote AWE32. Si vous n'avez pas de
synthétiseur matériel, vous pouvez utiliser un synthétiseur virtuel. Consultez
la section Synthétiseurs virtuels pour plus
d'information.
Exemple de code 4.1 : installer awesfx |
# emerge awesfx
|
Note :
vous devrez ensuite copier les fichiers SoundFont (SF2) à partir du CD des
pilotes de votre carte son ou d'une installation de Windows dans le
répertoire /usr/share/sounds/sf2/. Par exemple, la police de son
pour la carte Creative SBLive! se nomme 8MBGMSFX.SF2.
|
Après avoir copié les fichiers SoundFont, vous pouvez lire un fichier MIDI en
suivant la procédure ci-dessous. Vous pouvez aussi ajouter la commande
asfxload au fichier /etc/conf.d/local.start afin que la
police de son soit chargée dès que le système démarre.
Note :
les répertoires /mnt mentionnés ci-dessous ne seront pas les
mêmes sur votre machine. Ils ne sont donnés qu'à titre d'exemple.
Assurez-vous de les changer pour refléter votre propre système.
|
Exemple de code 4.2 : activer les polices de son |
# cp /mnt/win2k/Program\ Files/CreativeSBLive2k/SFBank/8MBGMSFX.SF2 /usr/share/sounds/sf2/
# cp /mnt/cdrom/AUDIO/ENGLISH/SFBANK/8MBGMSFX.SF2 /usr/share/sounds/sf2/
# asfxload /usr/share/sounds/sf2/8MBGMSFX.SF2
|
Vous pouvez maintenant lire un fichier MIDI avec un programme tel que
aplaymidi. Exécutez aplaymidi -l pour obtenir une liste des
ports disponibles, puis choisissez-en un pour y lire et jouer le fichier.
Exemple de code 4.3 : lire un fichier MIDI |
# aplaymidi -l
Port Client name Port name
64:0 EMU10K1 MPU-401 (UART) EMU10K1 MPU-401 (UART)
65:0 Emu10k1 WaveTable Emu10k1 Port 0
65:1 Emu10k1 WaveTable Emu10k1 Port 1
65:2 Emu10k1 WaveTable Emu10k1 Port 2
65:3 Emu10k1 WaveTable Emu10k1 Port 3
# aplaymidi --port=65:0 /mnt/shyam/music/midi/mi2.mid
|
Synthétiseurs virtuels
Si votre carte n'a pas de synthétiseur matériel, vous pouvez utiliser à la
place un synthétiseur virtuel tel que timidity++. L'installation est on
ne peut plus facile.
Exemple de code 4.4 : installer timidity++ |
# emerge timidity++
|
Pour que timidity puisse jouer, il a besoin d'un fichier de polices de son.
Heureusement, l'ebuild vous en installera quelques-uns. Vous pouvez également
installer timidity-eawpatches ou timidity-shompatches qui sont
disponibles dans Portage. Vous pouvez avoir plusieurs polices de son installées
en même temps et vous pouvez ajouter vos propres polices dans
/usr/share/timidity/. Pour passer de l'une à l'autre, utilisez
eselect.
Exemple de code 4.5 : changer de police de son |
# eselect timidity list
# eselect timidity set eawpatches
|
N'oubliez pas d'ajouter timidity au niveau d'exécution par défaut.
Exemple de code 4.6 : ajouter timidity au niveau d'exécution par défaut |
# rc-update add timidity default
# /etc/init.d/timidity start
|
Vous pouvez maintenant essayer de lire un
fichier MIDI.
Outils et microcode
Des outils sont disponibles dans les paquets alsa-tools et
alsa-firmware pour certaines cartes son spécifiques.
Exemple de code 4.7 : installer les outils ALSA |
# emerge alsa-tools
|
Utiliser plusieurs cartes son
Vous pouvez utiliser plus d'une carte son à la fois, à la condition d'avoir la prise en charge d'ALSA sous forme de modules. Spécifiez simplement laquelle doit être activé en
premier dans le fichier /etc/modprobe.d/alsa.conf. Vos cartes son
sont identifiées dans ce fichier par le nom du pilote. La première carte est 0,
la seconde est 1, etc. Voici un exemple qui montre l'utilisation de deux
cartes.
Exemple de code 4.8 : deux cartes son dans /etc/modprobe.d/alsa.conf |
options snd-emu10k1 index=0
options snd-via82xx index=1
|
Si vous avez deux cartes qui utilisent le même pilote, spécifiez-les sur la
même ligne, en séparant les index par une virgule. Voici un exemple d'un
système comportant trois cartes son, dont deux sont des Intel HDA.
Exemple de code 4.9 : plusieurs cartes son dans /etc/modprobe.d/alsa.conf |
options snd-ymfpci index=0
options snd-hda-intel index=1,2
|
Plugins
Si vous êtes intéressés par des fonctionnalités supplémentaires,
alsa-plugins est un ensemble de plugins utiles, qui contient
notamment : PulseAudio, un convertisseur de taux d'échantillonage, jack
(un serveur audio à faible latence) et un encodeur qui vous permettrait de
produire du son à six canaux sur votre sortie S/PDIF (optique ou coaxiale).
Vous pouvez choisir les plugins à installer en les rajoutant aux options USE
(dans /etc/portage/package.use).
Exemple de code 4.10 : installer alsa-plugins |
# emerge -avt alsa-plugins
|
Un grand merci à...
Tous ceux qui ont contribué à la version précédente du Guide ALSA pour
Gentoo : Vincent Verleye, Grant Goodyear, Arcady Genkin, Jeremy
Huddleston, John P. Davis, Sven Vermeulen, Benny Chuang, Tiemo Kieft et Erwin.
Références
Ce document est protégé par la licence Creative
Commons : Paternité - Partage des Conditions Initiales à
l'Identique 2.5.
|