Advanced Linux Sound Architecture (Français)

État de la traduction:
Cet article est la version francophone de
Advanced Linux Sound Architecture
. Date de la dernière traduction: 2022-03-10. Vous pouvez aider à synchroniser la traduction s'il y a eu des
changements
dans la version anglaise.
Related articles
ALSA configuration examples
ALSA troubleshooting
Sound system
PC speaker
PulseAudio (Français)
Open Sound System
List of applications/Multimedia#Volume control
Advanced Linux Sound Architecture
(
ALSA
) fournit des pilotes de cartes son pilotés par le noyau. Il remplace le système original
Open Sound System
(OSS).
Outre les pilotes de périphériques sonores, ALSA fournit également une bibliothèque pilotée par l'espace utilisateur pour les développeurs d'applications. Ceux-ci peuvent alors utiliser ces pilotes ALSA pour le développement d'API de haut niveau. Cela permet une interaction directe (noyau) avec les périphériques sonores par le biais des bibliothèques ALSA.
Installation
ALSA est un ensemble de modules intégrés au noyau Linux. Par conséquent, une installation manuelle n'est pas nécessaire.
udev
détectera automatiquement votre matériel et sélectionnera les pilotes nécessaires au démarrage, par conséquent, votre son devrait déjà fonctionner. Cependant, il se peut que votre son soit initialement coupé. Si c'est le cas, consultez
#Réactiver les canaux
.
Privilèges de l'utilisateur
Habituellement, les utilisateurs locaux ont la permission de lire le son et de modifier les niveaux du mixeur.
Pour permettre aux utilisateurs distants d'utiliser ALSA, vous devez
ajouter
ces utilisateurs au groupe
audio
, mais cela n'est pas recommandé par défaut (consultez la note ci-dessous).
Note
L'ajout d'utilisateurs au groupe
audio
permet un accès direct aux périphériques. N'oubliez pas que cela permet aux applications de réserver exclusivement les périphériques de sortie. Cela peut perturber le mixage des logiciels ou le changement rapide d'utilisateur sur les systèmes multipostes. Par conséquent, l'ajout d'un utilisateur au groupe
audio
n'est
pas
recommandé par défaut, sauf si vous en avez spécifiquement besoin
[1]
.
Utilitaires ALSA
Installez
le paquet
alsa-utils
. Il contient (entre autre) les utilitaires
alsamixer(1)
et
amixer(1)
.
amixer
est une commande shell permettant de modifier les paramètres audio, tandis que
alsamixer
fournit une interface plus intuitive basée sur
ncurses
pour la configuration des périphériques audio.
Si vous avez besoin du
rééchantillonnage de haute qualité
, installez le paquet
alsa-plugins
pour activer
upmixing/downmixing
et d'autres fonctionnalités avancées.
Compatibilité OSS
Note
Ceci est important si votre application se plaint de l'absence de
/dev/dsp
ou
/dev/snd/seq
.
ALSA a la capacité d'intercepter les appels
OSS
et de les réacheminer à travers ALSA. Cette couche d'émulation est utile, par exemple, pour les anciennes applications qui essaient d'ouvrir
/dev/dsp
et d'y écrire directement des données sonores. Sans OSS ou la bibliothèque d'émulation,
/dev/dsp
sera absent, et l'application ne produira aucun son.
Si vous voulez que les applications
OSS
fonctionnent avec
dmix
, installez également le paquet
alsa-oss
. Chargez ensuite les
modules du noyau
snd-seq-oss
,
snd-pcm-oss
et
snd-mixer-oss
pour activer l'émulation OSS.
Compatibilité avec PulseAudio
apulse
AUR
vous permet d'utiliser ALSA pour les applications qui ne prennent en charge que
PulseAudio
pour le son. L'utilisation est simple :
$ apulse
yourapplication
ALSA et systemd
Le paquet
alsa-utils
est livré avec les fichiers de configuration de l'unité
systemd
alsa-restore.service
et
alsa-state.service
par défaut.
Ils sont automatiquement installés et activés lors de l'installation (via le lien symbolique fourni par le paquet vers
sound.target
). Les options sont les suivantes :
alsa-restore.service
Lit
/var/lib/alsa/asound.state
au démarrage et écrit les valeurs mises à jour à l'arrêt, à condition que
/etc/alsa/state-daemon.conf
n'existe pas. Comme
/etc/alsa/state-daemon.conf
n'est pas créé sans une action consciente de l'utilisateur, c'est la méthode par défaut.
alsa-state.service
(Re-)Démarre alsactl en mode daemon pour suivre en permanence, et faire persister, les changements de volume, à condition que l'utilisateur ait consciemment créé
/etc/alsa/state-daemon.conf
.
Évidemment, les deux méthodes s'excluent mutuellement. Vous pouvez opter pour l'une des deux approches en fonction de vos besoins. Pour modifier ces unités, consultez
Systemd (Français)#Modifier les unités fournies
. Vous pouvez vérifier leur état en utilisant
systemctl
.
Pour plus d'informations, consultez
alsactl(1)
.
Microprogramme ALSA
Le paquet
alsa-firmware
contient le microprogramme qui peut être requis pour certaines cartes son (par exemple, une Creative SB0400 Audigy2).
sof-firmware
et
alsa-ucm-conf
sont nécessaires pour quelques modèles d'ordinateurs portables plus récents (fin 2019/2020) qui implémentent leurs pilotes avec un microprogramme fourni par le projet
Sound Open Firmware
.
Réactiver les canaux
Par défaut, ALSA a mis tous les canaux en sourdine. Ceux-ci doivent être réactivés manuellement.
Réactiver le son avec amixer
Réactiver le volume principal de la carte son peut être fait en utilisant
amixer
:
$ amixer sset Master unmute
$ amixer sset Speaker unmute (haut-parleur désactivé)
$ amixer sset Headphone unmute (désactivation du casque)
Réactiver le son avec alsamixer
Réactiver la carte son peut être fait en utilisant
alsamixer
:
$ alsamixer
L'étiquette
MM
sous un canal indique que le canal est coupé, et
OO
indique qu'il est ouvert.
Faites défiler les canaux
Master
et
PCM
avec les touches
←
et
→
et réactivez-les en appuyant sur la touche
m
.
Utilisez la touche
↑
pour augmenter le volume et obtenir une valeur de
0
dB de gain. Le gain se trouve en haut à gauche à côté du champ
Item:
.
Note
Si le gain est réglé au-dessus de 0 dB, une distorsion audible peut devenir présente.
Réactiver le son 5.1/7.1
Pour obtenir un son
5.1
ou
7.1 surround
complet, vous devrez probablement réactiver d'autres canaux tels que
Front
,
Surround
,
Center
,
LFE
,
LFE
(subwoofer) et
LFE
. (Il s'agit de noms de canaux avec
Intel HD Audio
, ils peuvent varier selon le matériel utilisé).
Note
Veuillez noter que cela ne permet pas de mixer automatiquement des sources stéréo (comme la plupart des musiques). Pour ce faire, consultez
#Upmixing/downmixing
.
Activer le microphone
Pour activer votre microphone, passez à l'onglet Capture avec
F4
et activez un canal avec
Space
. Consultez
Advanced Linux Sound Architecture/Troubleshooting#Microphone
si le microphone ne fonctionne pas.
Testez vos modifications
Ensuite, testez pour consulter si le son fonctionne :
$ speaker-test -c 2
Changez
-c
pour l'adapter à votre configuration de haut-parleurs. Utilisez
-c 8
pour 7.1, par exemple :
$ speaker-test -c 8
Si l'audio est envoyé vers le mauvais périphérique, essayez de le spécifier manuellement avec l'argument
-D
.
$ speaker-test -D default:PCH -c 8
-D
accepte les noms de canaux PCM comme valeurs, qui peuvent être récupérés en exécutant la commande suivante :
$ aplay -L | grep :CARD
default:CARD=PCH # 'default:PCH' est le nom du canal PCM pour -D
sysdefault:CARD=PCH
front:CARD=PCH,DEV=0
surround21:CARD=PCH,DEV=0
surround40:CARD=PCH,DEV=0
surround41:CARD=PCH,DEV=0
surround50:CARD=PCH,DEV=0
surround51:CARD=PCH,DEV=0
surround71:CARD=PCH,DEV=0
Si cela ne fonctionne pas, consultez la section
#Configuration
ou la page
Advanced Linux Sound Architecture/Troubleshooting
.
Notes supplémentaires
Si votre système possède plus d'une carte son, vous pouvez passer de l'une à l'autre en appuyant sur
F6
.
Pour certaines cartes, la sortie numérique doit être coupée ou désactivée afin d'entendre le son analogique. Pour la Soundblaster Audigy LS, mettez en sourdine le canal marqué
IEC958
.
Certaines machines (comme le Thinkpad T61) possèdent un canal
Speaker
qui doit également être réactivé et réglé.
Certaines machines (comme un Dell E6400) peuvent également nécessiter que les canaux
Front
et
Headphone
soient réactivés et réglés.
Si vos réglages de volume semblent perdus après un redémarrage, essayez d'exécuter
alsamixer
en tant que root.
Configuration
Le fichier de configuration système est
/etc/asound.conf
, et le fichier de configuration par utilisateur est
~/.asoundrc
.
Syntaxe de base
Les fichiers de configuration ALSA suivent une syntaxe simple consistant en des affectations hiérarchiques de valeurs aux paramètres (clés). La syntaxe est également présentée dans
[2]
.
Assignations et séparateurs
Les affectations définissent la valeur d'une clé donnée. Il existe différents types et styles d'affectation.
Simple assignment
# This is a comment. Everything after the '#' symbol to the end of the line will be ignored by ALSA.
key = value # Equal signs are usually left out, since space can also be used as a separator.

key value # Equivalent to the example above.
Les séparateurs sont utilisés pour indiquer le début et la fin d'une affectation, mais l'utilisation de virgules ou d'espaces est également possible.
Separators
# The following three assignments are equivalent.
key value0; key valueN;
key value0, key valueN,
key value0 key valueN

key
value0
	key
valueN
Les affectations composées utilisent des accolades comme séparateurs.
Compound assignment
key {	subkey0 value0;
	subkeyN valueN;	}

key.subkey0 value0; # Equivalent to the example above.
key.subkeyN valueN;
Pour faciliter la lecture, il est recommandé d'utiliser le premier style pour les définitions comprenant plus de trois clés.
Les définitions de tableaux utilisent des parenthèses comme séparateurs.
Single array
key [	"value0";
	"valueN";	]

key.0 "value0"; # Equivalent to the example above
key.N "valueN";
Tout dépend des préférences de l'utilisateur en ce qui concerne les différents styles de configuration, mais il faut éviter de mélanger différents styles. Vous trouverez de plus amples informations sur la configuration de base dans
[3]
.
Types de données
ALSA utilise différents types de données pour les valeurs des paramètres, qui doivent être définis dans le fichier de configuration de l'utilisateur. Certaines clés acceptent plusieurs types de données, alors que la plupart ne le font pas. Une liste des options de configuration et de leurs exigences respectives en matière de types de données pour les plugins PCM se trouve dans
[4]
.
Modes d'opération
Il existe différents modes d'opération pour l'analyse des nœuds, le mode par défaut étant la fusion et la création. Si le mode d'opération est soit merge/create soit merge, la vérification du type est effectuée. Seules les affectations de même type peuvent être fusionnées, les chaînes de caractères ne peuvent donc pas être fusionnées avec des entiers. Essayer de définir une affectation simple dans le mode d'opération par défaut à un composé (et vice versa) ne fonctionnera pas non plus.
Préfixes des modes d'opération :
"+" -- fusionner et créer
"-" -- fusionner
"?" -- ne pas remplacer
"!" -- remplacer
Operation modes
# Merge/create - If a node does not exist, it is created. If it does exist and types match,
# subkeyN is merged into key.
key.subkeyN valueN;

# Merge/create - Equivalent to above
key.+subkeyN valueN;

# Merge - Node key.subkeyN must already exist and must have same data type
key.-subkeyN valueN;

# No override - Ignore new assignment if key.subkeyN node already exists
key.?subkeyN valueN;

# Override - Removes subkeyN and all keys below it, then creates node key.subkeyN
key.!subkeyN valueN;
Utiliser le mode d'opération override, quand c'est fait correctement, est généralement sûr, cependant il faut garder à l'esprit qu'il peut y avoir d'autres clés nécessaires dans un noeud pour un bon fonctionnement.
Attention
Remplacer le noeud pcm lui-même rendra certainement alsa inutilisable, puisque chaque définition de plugin sera supprimée. Par conséquent,
n'utilisez pas !pcm.key
à moins que vous ne fassiez une configuration à partir de zéro.
Exemple de définition du dispositif par défaut à l'aide du nœud "defaults"
En supposant que le noeud "defaults" est défini dans
/usr/share/alsa/alsa.conf
, où "defaults.pcm.card" et sa contrepartie "ctl" ont pour valeur "0" (type integer), l'utilisateur veut définir le périphérique pcm et de contrôle par défaut sur la (troisième) carte son "2" ou "SB" pour une carte son Azalia.
Defaults node
defaults.ctl.card 2; # Sets default device and control to third card (counting begins with 0).
defaults.pcm.card 2; # This does not change the data type.

defaults.ctl.+card 2; # Equivalent to above.
defaults.pcm.+card 2;

defaults.ctl.-card 2; # Same effect on a default setup, however if defaults node was removed or
defaults.pcm.-card 2; # type has been changed merge operation mode will result in no changes.

defaults.pcm.?card 2; # This does nothing, since this assignment already exists.
defaults.ctl.?card 2;

defaults.pcm.!card "SB"; # The override operation mode is necessary here, because of
defaults.ctl.!card "SB"; # different value types.
L'utilisation des guillemets doubles ici définit automatiquement le type de données des valeurs comme étant une chaîne de caractères, donc dans l'exemple ci-dessus, la définition de defaults.pcm.!card "2" aurait pour résultat de conserver le dernier périphérique par défaut, dans ce cas la carte 0. L'utilisation des guillemets doubles pour les chaînes de caractères n'est pas obligatoire tant qu'aucun caractère spécial n'est utilisé, ce qui idéalement ne devrait jamais être le cas. Cela peut ne pas être pertinent dans d'autres affectations.
Note
D'un point de vue configuration, cela n'équivaut pas à la définition d'un périphérique pcm "par défaut", puisque la plupart des utilisateurs y spécifient également le type d'adressage, qui peut en fait être le même, mais l'affectation elle-même diffère toujours. De plus, defaults.pcm.card est mentionné plusieurs fois dans les fichiers de configuration d'alsa, généralement comme une affectation de repli, où différentes variables d'environnement ont la priorité.
Emboîtement
Parfois, il peut être utile et même plus facile de lire en utilisant l'imbrication dans la configuration.
Nesting PCM plugins
pcm.azalia {	type hw; card 0	}
pcm.!default {	type plug; slave.pcm "azalia"	}

# is equivalent to

pcm.!default {	type plug; slave.pcm {	type hw; card 0;	}	}

# which is also equivalent to

pcm.!default.type plug;
pcm.default.slave.pcm.type hw;
pcm.default.slave.pcm.card 0;
Inclure les fichiers de configuration
Include other configuration files
</path/to/configuration-file> # Include a configuration file
<confdir:/path/to/configuration-file> # Reference to a global configuration directory
Définir la carte son par défaut
Astuce
Une explication de la terminologie liée à ALSA pour "carte", "périphérique" (une "carte" n'est pas un "périphérique"), "sous-dispositif", et plus encore, peut être trouvée sur
Wikipedia:Advanced Linux Sound Architecture#Concepts
. Wikipedia a également de nombreux articles sur des termes connexes, tels que
PCM
, et
S/PDIF
.
Réglage de la carte son par défaut via le nœud defaults
Pour mettre en pratique le
exemple précédent
concernant
defaults.pcm.card
et
defaults.pcm. device
en pratique, en supposant que nous avons 2 cartes avec les indices 0 et 1 respectivement et que nous souhaitons simplement changer la carte par défaut pour l'indice 1, conduirait à la configuration suivante dans
/etc/asound.conf
ou dans
~/.asoundrc
spécifique à l'utilisateur pour changer à la fois la carte de lecture et la carte de contrôle du mixeur.
defaults.pcm.card 1
defaults.ctl.card 1
Configuration de l'ordre des index via les options du module du noyau
Si l'ordre de vos cartes son change au démarrage, vous pouvez spécifier leur ordre dans tout fichier se terminant par
.conf
dans
/etc/modprobe.d
(
/etc/modprobe.d/alsa-base.conf
est suggéré).
Par exemple, si vous voulez que votre carte son mia soit #0 :
/etc/modprobe.d/alsa-base.conf
options snd_mia index=0
options snd_hda_intel index=1
Utilisez
$ cat /proc/asound/modules
pour obtenir les modules sonores chargés et leur ordre. Cette liste est généralement tout ce qui est nécessaire pour l'ordre de chargement. Utilisez
$ lsmod | grep snd
pour obtenir une liste des périphériques et modules. Cette configuration suppose que vous avez une carte son mia utilisant
snd_mia
et une carte (par exemple embarquée) utilisant
snd_hda_intel
.
Vous pouvez également fournir un index de
-2
pour demander à ALSA de ne jamais utiliser une carte comme carte principale. Les distributions telles que Linux Mint et Ubuntu utilisent les paramètres suivants pour éviter que les pilotes USB et autres pilotes "anormaux" obtiennent l'index
0
:
/etc/modprobe.d/alsa-base.conf
options bt87x index=-2
options cx88_alsa index=-2
options saa7134-alsa index=-2
options snd-atiixp-modem index=-2
options snd-intel8x0m index=-2
options snd-via82xx-modem index=-2
options snd-usb-caiaq index=-2
options snd-usb-ua101 index=-2
options snd-usb-us122l index=-2
options snd-usb-usx2y index=-2
options snd-pcsp index=-2
options snd-usb-audio index=-2
Ces modifications nécessitent un redémarrage du système.
Consultez également
[5]
.
Sélectionner le PCM par défaut via la variable d'environnement
Il est probablement suffisant de définir ALSA_CARD comme le nom du périphérique.  D'abord, obtenez les noms avec
aplay -l
, puis définissez ALSA_CARD sur le nom qui vient après les deux points et avant la parenthèse ; par exemple, si vous avez
card 1 : HDMI [HDA ATI HDMI], device 3 : HDMI 0 [HDMI 0]
alors définissez
ALSA_CARD=HDMI
.
D'autres variables sont également vérifiées dans la configuration globale par défaut
/usr/share/alsa/alsa.conf
. En y recherchant les constructions de la forme
vars [ ... ]
, on obtient le tableau suivant :
Nom de la variable
Utilisé par
1
ALSA_CARD
pcm.default , pcm.hw , pcm.plughw , ctl.sysdefault , ctl.hw ,  rawmidi.default , rawmidi.hw , hwdep.hw
2
ALSA_CTL_CARD
ctl.sysdefault , ctl.hw
3
ALSA_HWDEP_CARD
hwdep.default , hwdep.hw
4
ALSA_HWDEP_DEVICE
hwdep.default , hwdep.hw
5
ALSA_PCM_CARD
pcm.default , pcm.hw , pcm.plughw
6
ALSA_PCM_DEVICE
pcm.hw  , pcm.plughw
7
ALSA_RAWMIDI_CARD
rawmidi.default , rawmidi.hw
8
ALSA_RAWMIDI_DEVICE
rawmidi.default , rawmidi.hw
Vous pouvez également modifier ce comportement dans votre propre fichier de configuration, de préférence le fichier global (
/etc/asound.conf
).  Ajoutez :
pcm.!default {
   type plug
   esclave.pcm {
       @func getenv
       vars [ ALSAPCM ]
       default "hw:Audigy2"
   }
}
Dans ce cas également, remplacez
Audigy2
par le nom de votre appareil. Vous pouvez obtenir les noms avec
aplay -l
ou vous pouvez également utiliser des PCM comme
surround51
. Mais si vous avez besoin d'utiliser le microphone, c'est une bonne idée de sélectionner le PCM full-duplex par défaut.
Maintenant vous pouvez sélectionner la carte son au démarrage des programmes en changeant simplement la variable d'environnement
ALSAPCM
. Cela fonctionne bien pour tous les programmes qui ne permettent pas de sélectionner la carte, pour les autres assurez-vous de garder la carte par défaut.
Par exemple, si vous avez écrit un downmix PCM appelé
mix51to20
, vous pouvez l'utiliser avec
mplayer
en utilisant la ligne de commande
ALSAPCM=mix51to20 mplayer exemple_6_canal.wav
.
Note
Prêtez attention au type d'adressage par défaut.
Méthode alternative
Astuce
Ce processus peut être partiellement automatisé en utilisant
asoundconf
AUR
.
Tout d'abord, vous devez trouver la carte et l'identifiant du périphérique que vous souhaitez définir comme valeur par défaut :
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: Intel [HDA Intel], device 0: CONEXANT Analog [CONEXANT Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: Intel [HDA Intel], device 1: Conexant Digital [Conexant Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: JamLab [JamLab], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: Audio [Altec Lansing XT1 - USB Audio], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
Attention
Définir simplement un
type hw
comme carte par défaut équivaut à s'adresser directement au matériel, ce qui rend le périphérique indisponible pour les autres applications. Cette méthode n'est recommandée que si elle fait partie d'une configuration plus sophistiquée
~/.asoundrc
ou si l'utilisateur souhaite délibérément s'adresser directement à la carte son (sortie numérique via
eic958
ou serveur de musique dédié par exemple).
Par exemple, la dernière entrée de cette liste a l'ID de carte 2 et l'ID de périphérique 0. Pour définir cette carte par défaut, vous pouvez utiliser le fichier système
/etc/asound.conf
ou le fichier utilisateur
~/.asoundrc
. Vous devrez peut-être créer le fichier s'il n'existe pas. Insérez ensuite les options suivantes avec la carte correspondante.
pcm.!default {
   type hw
   card 2

ctl.!default {
   type hw
   card 2
}
Note
Pour la série U32U d'Asus, il semble que la carte doive être réglée sur 1 pour pcm et ctl
Dans la plupart des cas, il est recommandé d'utiliser des noms de cartes son plutôt que des références numériques. Les noms de cartes sont plus faciles à comprendre, et permettent également de surmonter le problème de l'ordre de démarrage. Par conséquent, l'exemple suivant serait correct pour l'exemple ci-dessus.
pcm.!default {
   type hw
   card Audio
}

ctl.!default {
   type hw
   card Audio
}
Pour obtenir les noms des cartes ALSA valides, utilisez
aplay
:
$ aplay -l | awk -F \ : '/,/{print $2}' | awk '{print $1}' | uniq
PCH
Vous pouvez également utiliser
cat
, qui peut renvoyer des périphériques inutilisés :
$ cat /proc/asound/card*/id
PCH
ThinkPadEC
Note
Cette méthode peut être problématique si votre système possède plusieurs cartes du même nom (ALSA)
Les options 'pcm' affectent la carte et le périphérique qui seront utilisés pour la lecture audio tandis que l'option 'ctl' affecte la carte utilisée par les utilitaires de contrôle comme alsamixer.
Les changements devraient prendre effet dès que vous (re)lancez une application (MPlayer etc.). Vous pouvez aussi tester avec une commande comme
aplay
.
$ aplay -D default:PCH
your_favourite_sound.wav
Si vous recevez une erreur concernant la configuration de votre asound, vérifiez dans la
upstream documentation
les éventuelles modifications du format du fichier de configuration.
Vérifier que les modules sonores corrects sont chargés
Vous pouvez supposer que udev autodétectera correctement votre son. Vous pouvez le vérifier avec la commande :
$ lsmod | grep '^snd' | column -t
snd_hda_codec_hdmi     22378   4
snd_hda_codec_realtek  294191  1
snd_hda_intel          21738   1
snd_hda_codec          73739   3  snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel
snd_hwdep              6134    1  snd_hda_codec
snd_pcm                71032   3  snd_hda_codec_hdmi,snd_hda_intel,snd_hda_codec
snd_timer              18992   1  snd_pcm
snd                    55132   9  snd_hda_codec_hdmi,snd_hda_codec_realtek,snd_hda_intel,snd_hda_codec,snd_hwdep,snd_pcm,snd_timer
snd_page_alloc         7017    2  snd_hda_intel,snd_pcm
Si la sortie est similaire, vos pilotes de son ont été autodétectés avec succès.
Note
Depuis
udev
≥ 171, les modules d'émulation OSS (
snd_seq_oss, snd_pcm_oss, snd_mixer_oss
) ne sont pas chargés par défaut :
chargez-les manuellement
, s'ils sont nécessaires.
Vous pouvez également vérifier que le répertoire
/dev/snd/
contient les bons fichiers de périphériques :
$ ls -l /dev/snd
total 0
crw-rw---- 1 root audio 116, 0 Apr 8 14:17 controlC0
crw-rw---- 1 root audio 116, 32 Apr 8 14:17 controlC1
crw-rw---- 1 root audio 116, 24 Avr 8 14:17 pcmC0D0c
crw-rw---- 1 root audio 116, 16 Avr 8 14:17 pcmC0D0p
crw-rw---- 1 root audio 116, 25 Avr 8 14:17 pcmC0D1c
crw-rw---- 1 root audio 116, 56 Avr 8 14:17 pcmC1D0c
crw-rw---- 1 root audio 116, 48 Avr 8 14:17 pcmC1D0p
crw-rw---- 1 root audio 116, 1 Apr 8 14:17 seq
crw-rw---- 1 root audio 116, 33 Apr 8 14:17 timer
Note
Si vous demandez de l'aide sur IRC ou sur les forums, veuillez afficher la sortie des commandes ci-dessus, si nécessaire.
Si vous avez au moins les périphériques
controlC0
et
pcmC0D0p
ou similaire, alors vos modules de sons ont été détectés et chargés correctement.
Si ce n'est pas le cas, vos modules de sons n'ont pas été détectés correctement. Pour résoudre ce problème, vous pouvez essayer de charger les modules manuellement :
Localisez le module correspondant à votre carte son :
ALSA Soundcard Matrix
. Le module sera préfixé par 'snd-' (par exemple :
snd-via82xx
).
Chargez le module
.
Vérifiez les fichiers de périphériques dans
/dev/snd
. (consultez ci-dessus) et/ou essayez si
alsamixer
ou
amixer
ont une sortie raisonnable.
Configurez
snd-NAME-OF-MODULE
et
snd-pcm-oss
pour être
chargés au démarrage
.
Obtenir une sortie S/PDIF
S/PDIF
est une interface audio numérique souvent utilisée pour connecter un ordinateur à un amplificateur numérique (tel qu'un home cinéma avec un son surround 5.1/7.1).
Note
Avec certaines cartes son, cela désactive la sortie du son analogique (par exemple Sound Blaster Audigy 2).
En fonction du
shell
que vous utilisez, ajoutez la ligne suivante au fichier de configuration de votre shell :
amixer -c 0 cset name='IEC958 Playback Switch' on
Vous pouvez consulter le nom de la sortie numérique de votre carte avec :
$ amixer scontrols
Égaliseur à l'échelle du système
Utilisation d'ALSAEqual (fournit une interface utilisateur)
Installez le paquet
alsaequal
AUR
.
Après avoir installé le paquet, ajoutez ce qui suit à votre fichier de configuration ALSA :
/etc/asound.conf
ctl.equal {
    type equal;
}

pcm.plugequal {
    type equal;
    # Modify the line below if you do not
    # want to use sound card 0.
    #slave.pcm "plughw:0,0";
    # by default we want to play from more sources at time:
    slave.pcm "plug:dmix";
}

# pcm.equal {
# If you do not want the equalizer to be your
# default soundcard comment the following
# line and uncomment the above line. (You can
# choose it as the output device by addressing
# it with specific apps,eg mpg123 -a equal 06.Back_In_Black.mp3)
pcm.!default {
    type plug;
    slave.pcm plugequal;
}
Et vous êtes prêt à changer votre égaliseur en utilisant la commande
$ alsamixer -D equal
Notez que le fichier de configuration est différent pour chaque utilisateur (sauf indication contraire) ; il est enregistré dans
~/.alsaequal.bin
.
Donc si vous voulez utiliser ALSAEqual avec
mpd
ou un autre logiciel fonctionnant sous un autre utilisateur, vous pouvez le configurer en utilisant
$ su mpd -c 'alsamixer -D equal'
ou par exemple, vous pouvez créer un lien symbolique vers votre
.alsaequal.bin
dans son répertoire personnel.
Gestion des états ALSAEqual
Installez le paquet
alsaequal-mgr
AUR
.
Configurez l'égaliseur comme d'habitude avec
$ alsamixer -D equal
Lorsque vous êtes satisfait de l'état, vous pouvez lui donner un nom ("foo" dans cet exemple) et le sauvegarder :
$ alsaequal-mgr save foo
L'état "foo" peut ensuite être restauré ultérieurement avec
$ alsaequal-mgr load foo
Cependant, ceci ne restaure que
~/.alsaequal.bin
. Vous devez alors mettre à jour l'égaliseur par
alsamixer -D equal
.
Vous pouvez donc créer différents états d'égaliseur pour les jeux, les films, les genres musicaux, les applications de VoIP, etc. et les recharger si nécessaire.
Consultez la [page du projet
https://xyne.dev/projects/alsaequal-mgr/
] et le message d'aide pour plus d'options.
Utilisation de mbeq
mbeq est un égaliseur graphique multibande assez typique.
[6]
Note
Cette méthode nécessite l'utilisation d'un plugin
LADSPA
qui peut être gourmand en ressources CPU pendant la lecture. De plus, cette méthode a été conçue pour un son stéréophonique (par exemple, un casque).
Installez les paquets
alsa-plugins
,
ladspa
et
swh-plugins
si vous ne les avez pas déjà.
Si vous n'avez pas encore créé un fichier
~/.asoundrc
ou
/etc/asound.conf
, créez l'un ou l'autre et insérez ce qui suit :
/etc/asound.conf
pcm.eq {
    type ladspa

    # The output from the EQ can either go direct to a hardware device
    # (if you have a hardware mixer, e.g. SBLive/Audigy) or it can go
    # to the software mixer shown here.
    #slave.pcm "plughw:0,0"
    slave.pcm "plug:dmix"

    # Sometimes you may need to specify the path to the plugins,
    # especially if you have just installed them.  Once you have logged
    # out/restarted this should not be necessary, but if you get errors
    # about being unable to find plugins, try uncommenting this.
    #path "/usr/lib/ladspa"

    plugins [
    {
        label mbeq
        id 1197
        input {
            # The following setting is just an example, edit to your own taste:
            # bands: 50hz, 100hz, 156hz, 220hz, 311hz, 440hz, 622hz, 880hz, 1250hz, 1750hz, 25000hz,
            # 50000hz, 10000hz, 20000hz
            controls [ -5 -5 -5 -5 -5 -10 -20 -15 -10 -10 -10 -10 -10 -3 -2 ]
            }
        }
    ]
}

# Redirect the default device to go via the EQ - you may want to do
# this last, once you are sure everything is working.  Otherwise all
# your audio programs will break/crash if something has gone wrong.
pcm.!default {
    type plug
    slave.pcm "eq"
}

# Redirect the OSS emulation through the EQ too (when programs are running through "aoss")
pcm.dsp0 {
    type plug
    slave.pcm "eq"
}
Rééchantillonnage de haute qualité
Lorsque le mixage logiciel est activé, ALSA est obligé de tout rééchantillonner à la même fréquence (48 kHz par défaut lorsqu'il est pris en charge). Par défaut, il essaiera d'utiliser le convertisseur
speexrate
pour le faire, et se rabattra sur une interpolation linéaire de basse qualité s'il n'est pas disponible
[7]
.
Ainsi, si vous obtenez une mauvaise qualité sonore à cause d'un mauvais rééchantillonnage, le problème peut être résolu en installant simplement le paquet
alsa-plugins
.
Pour un rééchantillonnage de qualité encore supérieure, vous pouvez modifier le convertisseur de taux par défaut en
speexrate_medium
ou
speexrate_best
. Les deux sont suffisamment performants pour que, dans la pratique, le choix de l'un ou l'autre n'ait pas d'importance. L'utilisation du meilleur convertisseur ne vaut généralement pas les cycles CPU supplémentaires qu'il requiert.
Pour changer le convertisseur par défaut, placez le contenu suivant dans votre
~/.asoundrc
ou
/etc/asound.conf
:
/etc/asound.conf
defaults.pcm.rate_converter "speexrate_medium"
Note
Il est également possible d'utiliser les convertisseurs
libsamplerate
, qui sont environ deux fois moins rapides que les convertisseurs
speexrate
mais ne permettent pas d'obtenir une qualité beaucoup plus élevée. Consultez
discussion
[
broken link
: invalid section]
.
Il est également possible d'utiliser des rééchantillonneurs lavcrate
[8]
qui utilisent
FFmpeg
. Avec des tailles de filtre de lavcrate_faster:4 lavcrate_fast:8 lavcrate:16 lavcrate_high:32 lavcrate_higher:64. Les deux dernières options correspondent respectivement aux rééchantillonneurs de basse et moyenne qualité de
Kodi
.
Certaines applications (comme MPlayer et ses forks) font leur propre rééchantillonnage par défaut parce que certains pilotes ALSA ont un rapport de délai incorrect lorsque le rééchantillonnage est activé (ce qui entraîne une désynchronisation AV), donc changer ce paramètre n'aura aucun effet à moins que vous ne les configuriez pour utiliser le rééchantillonnage ALSA.
Upmixing/downmixing
Upmixing
Pour que des sources stéréo comme la musique puissent saturer un système sonore 5.1 ou 7.1, vous devez utiliser l'upmixing. Dans les temps plus sombres, cette opération était délicate et source d'erreurs, mais aujourd'hui, il existe des plugins qui permettent de s'acquitter facilement de cette tâche. Nous utiliserons le plugin
upmix
, inclus dans le paquet
alsa-plugins
.
Ensuite, ajoutez ce qui suit au fichier de configuration ALSA de votre choix (soit
/etc/asound.conf
ou
~/.asoundrc
) :
pcm.upmix71 {
   type upmix
   slave.pcm "surround71
   delay 15
   channels 8
}
Vous pouvez facilement modifier cet exemple pour le mixage ascendant 7.1 en 5.1 ou 4.0.
L'exemple suivant ajoute un nouveau canal PCM que vous pouvez utiliser pour le mixage ascendant. Si vous voulez que toutes les sources sonores passent par ce canal, ajoutez-le par défaut en dessous de la définition précédente, comme suit
pcm.!default "plug:upmix71"
Le plugin permet automatiquement à plusieurs sources de passer par ce canal sans problème, donc le définir par défaut est un choix sûr.
Si cela ne fonctionne pas, vous devez configurer votre propre dmixer pour le PCM upmixing comme ceci :
pcm.dmix6 {
   type asym
   playback.pcm {
       type dmix
       ipc_key 567829
       slave {
           pcm "hw:0,0
           canaux 6
       }
   }
}
et utilisez "dmix6" au lieu de "surround71".
Si vous rencontrez des sauts ou un son déformé, envisagez d'augmenter la taille du tampon (à 32768, par exemple) ou utilisez un
rééchantillonneur de haute qualité
.
Downmixing
Si vous voulez downmixer des sources en stéréo parce que vous voulez, par exemple, regarder un film avec un son 5.1 sur un système stéréo, utilisez le plugin
vdownmix
, inclus dans le paquet
alsa-plugins
.
Encore une fois, dans votre fichier de configuration, ajoutez ceci :
pcm.!surround51 {
   type vdownmix
   slave.pcm "default
}
pcm.!surround40 {
   type vdownmix
   slave.pcm "par défaut
}
Note
Ce n'est peut-être pas suffisant pour que le downmixing fonctionne, consultez
[9]
. Vous devez donc ajouter
pcm.!default "plug:surround51"
ou
pcm.!default "plug:surround40"
. Un seul plug
vdownmix
peut être utilisé ; si vous avez 7.1 canaux, vous devrez utiliser
surround71
au lieu de la configuration ci-dessus. Un bon exemple, qui comprend une configuration permettant de faire fonctionner à la fois
vdownmix
et
dmix
, se trouve dans
[10]
.
Dmix
Le mixage permet à plusieurs applications de produire du son en même temps. La plupart des cartes son dédiées prennent en charge le mixage matériel, qui est pris en charge par défaut s'il est disponible. Les cartes son intégrées à la carte mère (telles que Intel HD Audio), ne prennent généralement pas en charge le mixage matériel. Sur ces cartes, le mixage logiciel est effectué par un plugin ALSA appelé
dmix
. Cette fonction est activée automatiquement si le mixage matériel n'est pas disponible.
Note
Dmix est pris en charge par défaut pour les cartes son qui ne prennent pas en charge le mixage matériel. Dmix n'est pas activé par défaut pour la sortie numérique (S/PDIF) et nécessitera l'extrait de configuration ci-dessous.
Pour activer manuellement dmix, ajoutez ce qui suit à votre fichier de configuration ALSA :
/etc/asound.conf
pcm.dsp {
    type plug
    slave.pcm "dmix"
}
Trucs et astuces
Désactivation de l'auto-mute au démarrage
Le mode
Auto-Mute
peut être configuré au démarrage avec
amixer
. Par exemple, pour le désactiver :
# amixer -c 0 sset "Auto-Mute Mode" Disabled
Il est également possible d'utiliser l'interface graphique via
alsamixer
. Afin de sauvegarder les modifications, utilisez :
# alsactl store
ou
# alsactl daemon
Consultez
ALSA et Systemd
.
Connexion à chaud d'une carte son USB
Consultez
Writing Udev rules for ALSA
.
Sortie simultanée
Il se peut que vous souhaitiez diffuser de la musique simultanément sur des haut-parleurs externes connectés via un mini jack et sur des haut-parleurs internes. Pour ce faire, il suffit de réactiver l'élément
Auto-Mute
en utilisant
alsamixer
ou
amixer
:
$ amixer sset "Auto-Mute" unmute
puis réactiver d'autres éléments nécessaires, tels que
Casque
,
Haut-parleur
,
Haut-parleur de basses
...
Note
Si vous avez un grésillement dans le connecteur du casque (mini-jack) après, consultez
Advanced Linux Sound Architecture/Troubleshooting#Crackling sound through mini-jack (headphones connector)
.
Contrôle du volume au clavier
Mappez
les commandes suivantes à vos touches de volume :
XF86AudioRaiseVolume
,
XF86AudioLowerVolume
,
XF86AudioMute
.
Pour augmenter le volume :
amixer set Master 5%+
Pour baisser le volume :
amixer set Master 5%-
Pour activer/désactiver le volume :
amixer set Master toggle
Dispositif sonore virtuel utilisant snd-aloop
Vous pourriez vouloir une alternative jack pour créer un dispositif d'enregistrement ou de lecture virtuel afin de mélanger différentes sources, en utilisant le module snd-aloop :
modprobe snd-aloop
Listez vos nouveaux périphériques virtuels en utilisant :
aplay -l
Vous pouvez maintenant par exemple utiliser ffmpeg :
ffmpeg -f alsa -i hw:1,1,0 -f alsa -i hw:1,1,1 -filter_complex amerge output.mp3
Dans la phrase hw:R,W,N, R est le numéro de périphérique de votre carte virtuelle. W doit être réglé sur 1 pour les périphériques d'enregistrement, ou 0 pour la lecture. N est votre périphérique secondaire. Vous pouvez utiliser tous les périphériques virtuels disponibles et lire/arrêter en utilisant des applications comme mplayer :
mplayer -ao alsa:device=hw=1,0,0 fileA
mplayer -ao alsa:device=hw=1,0,1 fileB
Une autre chose que vous pourriez faire avec cette approche, est d'utiliser
festival
pour générer une voix dans un flux d'enregistrement en utilisant un script comme celui-ci :
#!/bin/sh
echo "$1"|iconv -f utf-8 -t iso-8859-1| text2wave > "_tmp_.wav" ;
mplayer -ao alsa:device=hw=2,0,0 "_tmp.wav" ;
rm "_tmp.wav" ;
Déboguer ALSA
Récupération de l'état du pilote
Le paquet
alsa-utils
contient également la commande
alsa-info.sh
, qui peut être utilisée pour recueillir des données détaillées sur le pilote ALSA et l'état de l'espace utilisateur.
Consultez
ALSA bug tracking
pour plus d'informations.
Reconfiguration des ports d'entrée/sortie
Le paquet
alsa-tools
contient l'outil
hdajackretask
, qui peut être utilisé (sur les cartes Intel HDA) pour reconfigurer les ports d'entrée/sortie de la carte son ; par exemple, pour transformer une prise de microphone en prise de casque.
Réinitialisation des codecs
Le pilote ALSA peut reconfigurer complètement les codecs attachés (les parties du système de son qui traitent réellement les flux audio), en faisant :
# echo 1 > /sys/class/sound/
card
/reconfig
Avant de faire cela, tous les processus utilisant le pilote ALSA (comme
Pulseaudio
ou
JACK
) doivent être arrêtés.
Détecter correctement le microphone branché dans un jack 3,5 mm (TRRS) à 4 broches
Sur certains ordinateurs portables modernes, vous pouvez avoir une prise casque 3,5 mm combinée, au lieu de deux prises séparées, qui peuvent ne pas être correctement détectées par défaut. Pour qu'ALSA détecte correctement l'état du plug-in sur votre prise 3.5mm, vous pouvez mettre la ligne suivante dans votre
/etc/modprobe.d/alsa-base.conf
:
options snd_hda_intel index=0 model=
your_model_setting
Pour une liste complète des options à placer dans
your_model_setting
, consultez
HD-Audio Codec-Specific Models
ou sa source située à
/usr/lib/modules/$(uname -r)/build/Documentation/sound/hd-audio/models.rst
. (fourni par le paquet
linux-docs
).
Testé avec le Gigabyte Aero15 2017 (modèle P65), avec ALC255 et le modèle défini à
dell-headset-multi
.
Voir aussi
ALSA wiki
Asoundrc
Documentation des plugins ALSA
Wiki ALSA non-officiel
Configuration avancée des modules ALSA
.
HOWTO : compiler le pilote depuis svn
Un regard attentif sur ALSA : Introduction au concept ALSA
Notes sur l'utilisation d'ALSA sous Linux
.