Advanced Linux Sound Architecture (Français)
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).
{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
/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
apulseAUR 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:
.
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é).
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
etHeadphone
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.
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.
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
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
.
Méthode alternative
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
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 }
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
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.
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
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 sialsamixer
ouamixer
ont une sortie raisonnable. - Configurez
snd-NAME-OF-MODULE
etsnd-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).
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 alsaequalAUR.
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-mgrAUR.
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]
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"
- 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.
- 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 }
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.
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...
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
.