Alsa

De ArchwikiFR

Advanced Linux Sound Architecture est un composant du noyau Linux qui gère le support des cartes sons, et qui fournit une API de plus haut niveau pour les développeurs d'applications.

Si vous recherchez une alternative, vous pouvez utiliser OSS.

Sommaire

Installation

Noyau

Sous ArchLinux, le noyau par défaut est déjà configuré pour profiter d'ALSA. Il ne reste qu'à installer certains utilitaires pratiques en espace utilisateur et à modifier la configuration si nécessaire. Udev s'occupe automatiquement de la détection du matériel, et du chargement des pilotes adéquats.

Astuce: N'oubliez pas d'ajouter votre utilisateur au groupe audio pour avoir les permissions nécessaires :
gpasswd -a UTILISATEUR audio

Espace utilisateur

Certains utilitaires sont utiles pour contrôler alsa :

  • alsa-utils contient un contrôle du volume des différents canaux alsamixer, ainsi qu'un lecteur pcm utile à des fins de tests.
  • alsa-oss fournit la compatibilité avec des applications oss avec le support de dmix

Ainsi, pour installer ces paquets, tapez la commande suivante :

pacman -S alsa-utils alsa-oss

Régler les niveaux

Par défaut, tous les canaux sont muets. Pour remédier à cela, vous pouvez utiliser alsamixer, avec une interface curse, ou bien directement amixer en cli.

Les canaux muets sont reconnaissables au MM au bas de la barre de niveau. Utiliser la touche M pour changer son état. Vérifiez aussi que les niveaux ne sont pas à 0.

Utilisez les flèches haut et bas pour monter ou baisser le volume, gauche et droite pour naviguer entre les différents canaux disponibles.

Il faut en général régler les canaux PCM, Master et Front voire plus si vous possédez une carte son évoluée.

Pour une utilisation générale, régler les trois premiers canaux est suffisant.

Astuce: Ne choisissez pas un gain positif pour le canal PCM , vous risqueriez de perdre en qualité.

Testez alors si le son marche :

speaker-test -c 2

Si le test est négatif, rendez-vous au paragraphes Configuration puis Problèmes.

Vous devriez sauver vos niveaux pour qu'ils ne soient pas perdus après un redémarrage :

alsactl store 

ce qui créera un fichier /var/lib/alsa/asound.state.

Note: Alsa se décompose en deux services, l'un pour la sauvegarde, l'autre pour sa restauration. Ces services sont directement lancés au démarrage.
Attention: le daemon alsa ne fait rien sinon restaurer les niveaux. Il n'a rien à voir avec le fonctionnement du composant noyau du même nom !

Configuration

Pour voir si la (ou les) carte(s) est de suite reconnue, faire :

 cat /proc/asound/cards

Ce qui va donner la liste des cartes sons reconnues par alsa.


Ré-échantillonnage haute qualité

Par défaut, alsa ré-échantillonne automatiquement tous les sons à 48000 Hz, cela via dmix qui utilise un algorithme de basse qualité qui produit des distorsions audibles notamment sur tous les fichiers musicaux issus de CDs (44100 Hz ; les DVDs étant en 48000 Hz).

Pour utiliser l'algorithme haute qualité Secret Rabbit Code (= libsamplerate), il faut tout d'abord installer les paquets alsa-plugins et libsamplerate.

Ensuite créer le fichier ~/.asoundrc et y insérer :

Fichier: ~/.asoundrc
defaults.pcm.rate_converter "samplerate_best"


  • Les autres algorithmes disponibles sont samplerate_medium, samplerate, samplerate_linear et samplerate_order.
  • Samplerate_best offre la meilleure qualité sonore après ré-échantillonnage mais utilise beaucoup de ressource pour cela, ce qui est un moindre mal pour les audiophiles et les nouvelles générations de processeurs.
  • Samplerate_medium, nettement moins gourmand, est quant à lui un bon compromis entre qualité et consommation de ressource processeur (idéal pour les netbooks).
Attention: samplerate_best pourrait être à l'origine de crash aléatoires du plugin flash

Source : Secret Rabbit Code


Passer la fréquence d'échantillonnage par défaut en 44100 Hz

La fréquence d'échantillonnage par défaut d'Alsa est de 48000 Hz, hors celà n'est absolument pas optimal pour un système audiophile ayant pour but de diffuser du son à 44100 Hz (les CDs et une grande majorité du son sur internet ; les DVDs étant en 48000 Hz). En effet, le ré-échantillonnage parfait n'existe pas et même le meilleur algorithme introduira son lot de distorsions et d'artefacts plus ou moins audibles, en plus de consommer des ressources processeurs !

La solution dans ce cas est évidente, passer l'échantillonnage par défaut d'Alsa en 44100 Hz pour éviter le ré-échantillonnage :

Éventuellement créer le fichier ~/.asoundrc et y insérer :

Fichier: ~/.asoundrc
# réglage de la carte son par défaut, selon la commande « aplay -l », card = carte et device = périphérique
defaults.pcm.card 0
defaults.pcm.device 0
defaults.ctl.card 0

# fréquence d'échantillonnage
defaults.pcm.dmix.!rate 44100

# algorithme de re-échantillonnage
defaults.pcm.!rate_converter "samplerate_medium"

Source : alsa-project.org

Mixer plusieurs sources sonores

Pour pouvoir jouer plusieurs sons de plusieurs applications en même temps sur la même carte son ne supportant pas le mixage matériel.

Il y a un plugin pour ALSA appelé dmix (direct mixing) qui permet un mixage logiciel sans installer un serveur de son comme Pulseaudio ou Jack.

Dmix est maintenant utilisé par défaut. Notez que son utilisation peut réduire légèrement la qualité.

Pour activer le mixage multi-utilisateurs, notamment pour utiliser mpd, insérez ceci dans /etc/asound.conf : partie dédié

Dmix ne permet pas un mixage pour cartes son multiple. Pour remédier à ce problème il faut définir chaque carte indépendamment, comme ceci dans /etc/asound.conf(multi-utilisateurs) ou ~/.asoundrc :

Fichier: ~/.asoundrc
# réglage des cartes son, selon la commande « aplay -l », card = carte et device = périphérique
pcm.carteInterne {
    type hw
    card 0
    device 0
}

ctl.carteInterne {
    type hw
    card 0
    device 0
}

pcm.carteUsb {
    type hw
    card 2
    device 0
}

ctl.carteUsb {
    type hw
    card 2
    device 0
}

# Creation d'un Dmix pour chacune 
pcm.interneMix {
    type dmix
    ipc_key 1024
    ipc_key_add_uid false
    ipc_perm 0666
    slave {
        pcm "carteInterne"
        channels 2
        periods 128
        period_time 0
        period_size 2048
        buffer_size 4096
    }
    bindings {
        0 0
        1 1
    }
}

pcm.usbMix {
    type dmix
    ipc_key 2048
    ipc_key_add_uid false
    ipc_perm 0666
    slave {
        pcm "carteUsb"
        channels 2
        periods 128
        period_time 0
        period_size 2048
        buffer_size 4096
    }
    bindings {
        0 0
        1 1
    }
}

# Sortie multi cartes
pcm.both {
    type route;
    slave.pcm {
        type multi;
        slaves.a.pcm "interneMix";
        slaves.b.pcm "usbMix";
        slaves.a.channels 2;
        slaves.b.channels 2;

        bindings.0.slave a;
        bindings.0.channel 0;
        bindings.1.slave a;
        bindings.1.channel 1;
     
        bindings.2.slave b;
        bindings.2.channel 0;
        bindings.3.slave b;
        bindings.3.channel 1;
    }
    ttable.0.0 1;
    ttable.1.1 1;
  
    ttable.0.2 1;
    ttable.1.3 1;
}

pcm.!default {
        type plug
        slave {
                pcm both
        }
}

ctl.!default {
        type hw
        card 2
}

Pour plus d'informations, rendez-vous sur la page dédiée.

Problèmes

carte graphique ATI et puce audio intel

Si le son disparaît totalement ou de manière aléatoire en fonction du redémarrage du PC. Le souci vient peut-être d'un conflit entre le module snd_hda_codec_atihdmi et snd-hda-intel. Il vous faudra éditer le fichier modprobe.conf en root :

nano /etc/modprobe.d/modprobe.conf

Et le modifier pour rendre prioritaire la carte/puce son Intel.

#
# /etc/modprobe.d/modprobe.conf (for v2.6 kernels)
#
#
options snd-hda-intel index=0
options snd-hda-codec-atihdmi index=1

Microphone non fonctionnel

Le paquet alsa-firmware n'est pas installé par défaut.

Son installation peut donc résoudre le problème.

pacman -S alsa-firmware
Outils personnels
Autres langues