[[pulseaudio]]
Piste: » pulseaudio
PulseAudio
PulseAudio est un serveur de son pour les systèmes POSIX et Win32. Un serveur de son est une sorte de proxy (intermédiaire obligé) pour vos applications sonores. Il vous permet de procéder à des opérations avancées sur le son en s'intercalant entre la couche logicielle et la couche matérielle. Ainsi transférer le son sur une autre machine, changer le format d'échantillonnage ou le nombre de canaux audio et mixer plusieurs sons en un seul, sont des opérations facilement réalisables avec un serveur de son. Il permet en outre de gérer indépendamment le son de chaque application lancée.
PulseAudio est destiné à remplacer Esound (esd).
Installation
PulseAudio est le serveur de son par défaut sur Ubuntu 8.04 LTS et suivantes. Il est donc déjà installé.
Vous pouvez rajouter les paquets optionnels suivant :
- pour les jeux (qui utilisent SDL pour le son) : Installez le paquet libsdl1.2debian-pulseaudio
- les outils graphiques PulseAudio paman padevchooser paprefs pavucontrol pavumeter
- une applet permettant le contrôle des fonctionnalités de pulseAudio depuis le tableau de bord qui peut remplacer le contrôleur de volume habituel (à partir de Jaunty) : gnome-volume-control-pulse
Au sujet d'ALSA
Les applications utilisant ALSA sont automatiquement redirigées vers Pulseaudio. Ainsi Pulseaudio seulement accède réellement aux pilotes de cartes son via ALSA.
Utilisation et configuration
Configuration du son multi-canaux (4.0, 5.1, 7.1 etc)
Pour obtenir le 5.1 une petite manipulation est nécessaire, mais l'avantage de celle-ci étant de vous faire obtenir le 5.1 en émulation même lors de la lecture d'un divx ou d'un mp3 classique, bref une pure merveille à un point d'en devenir totalement dépendant.
Configuration
Il faut indiquer à PulseAudio le nombre de canaux à utiliser (exemple 6 pour du 5.1) :
- éditez /etc/pulse/daemon.conf ou ~/.pulse/daemon.conf
- ajoutez ou replacez :
default-sample-channels = 6
- redémarrez pulseaudio (en relançant votre session par exemple).
Test
Pour tester cette configuration, lancez la commande suivante dans un terminal en indiquant le nombre de haut parleurs (ici 4) après le paramètre c (channel) :
$ speaker-test -c4 -l1 -twav
PulseAudio sur le réseau local
Maintenant, si vous avez installé les outils pulse, allez dans le menu Système → Préférences → PulseAudio Preferences.
- Cochez les trois options sous Network Access. Ceci va permettre aux autres ordinateurs possédant PulseAudio sur votre réseau LAN d'accéder à vos périphériques sonores.
- Cochez Enable Multicast/RTP Receiver. Ceci va permettre de recevoir des flux multicast d'autres systèmes sur votre LAN.
- Cochez Enable Multicast/RTP Sender. Ceci va permettre d'envoyer des flux multicast (Une source envoie des paquets, les autres les recevront simultanément)
Laissez les autres options décochées pour maintenant, sauf si vous voulez boucler les flux sortant à travers les haut-parleurs locaux.
Ensuite allez dans le menu Système → Préférences → Son et vérifiez dans l'onglet Sons que la case « Activer le mixage son logiciel (ESD) » est cochée. Par ailleurs, dans l'onglet Périphériques, j'ai mis les périphériques en « Détection Automatique ».
Enfin allez dans Applications → Son et vidéo → PulseAudio Device Chooser. Une icône apparait dans la zone de notification : faîtes un clique gauche et sélectionnez Preferences…. Cochez l'option Start applet on session login. Cette option démarrera l'applet pulseaudio lors de l'ouverture de votre session utilisateur
- Redémarrez votre machine afin d'appliquer les changements de serveur de sons.
Régler le volume de chaque application
Une des fonctions notable de PulseAudio est la possibilité de régler le volume de chaque application indépendamment, cette fonctionnalité est accessible à partir de pavucontrol ou de gnome-volume-control-pulse.
Utilisation dans un script
Voici un petit bout de script permettant de modifier directement le volume d'une application. C'est aussi par ce biais qu'on peut utiliser un volume supérieur à 100% (attention à la saturation).
application="Mumble" volume_level=85000 #65536 = 100% pa_sink_index=`pacmd list-sink-inputs | egrep "index|application\.name" | grep -B1 $application | grep index | sed 's/.*index: //'` pacmd "set-sink-input-volume $pa_sink_index $volume_level"
Appliquer des effets sur le son
Depuis la version 0.9.7 de Pulseaudio, il est possible d'appliquer divers effets sur le son grâce au module module-ladspa-sink. Ce module permet d'utiliser les plugins ladspa disponible dans le paquet swh-plugins pour obtenir des effets utiles (ou pas) sur le son.
Il est possible grâce à ce système d'avoir un compresseur dynamique ou encore un equaliseur.
Commencez d'abord par installer les effets, pour cela installez le paquet swh-plugins apt://swh-plugins, ensuite il vous faudra éditez le fichier /etc/pulse/default.pa pour charger le module.
Voici un exemple avec le compresseur dynamique, ceci est à ajouter à la fin du fichier :
load-module module-ladspa-sink sink_name=compresseur plugin=dyson_compress_1403 label=dysonCompress control=-4,0.5,,4
Le système de configuration est assez simple.
- sink_name donne un nom au sink, mettez ce que vous voulez.
- plugin est le nom du fichier .so qui correspond au plugin, la liste est disponible directement dans synaptic ou bien à cet adresse : http://packages.ubuntu.com/intrepid/i386/swh-plugins/filelist.
- label est le libellé du plugin. La liste des plugins est disponible à cet adresse : http://plugin.org.uk/ladspa-swh/docs/ladspa-swh.html
- control sont les paramètres du plug in. Pour l'ordre il faut se reporter au site ci-dessus et entrer les paramètres dans l'ordre qu'ils apparaissent.
Après avoir relancé Pulseaudio, un sink supplémentaire sera disponible dans l'applet Pulseaudio, il vous suffira de le sélectionner pour profiter de l'effet sur le son.
Exemple: Equalizer avec mbeq_1197
Dans default.pa:
#tsched=0 ici car problème de craquement du son avec ma carte load-module module-alsa-sink device=hw:0,0 sink_name=alsa_out tsched=0 #redirection de alsa_out sur l'equaliser [changer les paramètres de control selon vos gouts]: réduction des graves load-module module-ladspa-sink sink_name=ladspa_out master=alsa_out plugin=mbeq_1197 label=mbeq control=-15,-15,-10,-1,-5,-1,-1,0,0,0,0,0,0,0,0
Dans client.conf:
; Assigner ladspa_out comme sortie par défaut: default-sink = ladspa_out
Problèmes connus
Le son se coupe sous Jaunty 9.04
Apparement pulseaudio ne fonctionne pas toujours bien sous Jaunty. Le son se coupe et on retrouve ce genre de messages dans les messages des journaux systèmes:
Feb 23 23:12:15 xps-laptop pulseaudio[4010]: alsa-util.c: Device hw:1 doesn't support 44100 Hz, changed to 16000 Hz.
Feb 23 23:12:15 xps-laptop pulseaudio[4010]: alsa-util.c: Device hw:1 doesn't support 2 channels, changed to 1.
Un rapport de Bug est ouvert à cette adresse : https://bugs.launchpad.net/ubuntu/+source/linux/+bug/333565
Plusieurs post traitent du sujet sur le forum:
http://forum.ubuntu-fr.org/viewtopic.php?id=318089
Firefox, Flash et PulseAudio
Versions avant Jaunty Jackalope
Adobe flash player 10 résout les soucis entre Pulseaudio et flash. Le paquet est disponible dans le dépôt multiverse, il suffit de l'installer : apt://flashplugin-nonfree.
Dans Ubuntu 8.04 et 8.10, il existe un paquet qui crée un flux audio qui reprend le son sortant du navigateur web. apt://flashplugin-nonfree-extrasound (pour i386 seulement depuis la 8.10) ou apt://libflashsupport (pour la 8.04 seulement)
Versions à partir de Jaunty Jackalope
Pour faire fonctionner certaines applications rebutantes telles Skype et Flash de façon propre, il suffit de désactiver PulseAudio pour n'utiliser que la couche Alsa.
La procédure consiste à supprimer les paquets de PulseAudio, puis à installer quelques outils pour faciliter les réglages éventuels d'Alsa.
apt-get --purge remove pulseaudio* libpulse* apt-get install alsa-utils gstreamer0.10-alsa apt-get install alsamixer gnome-sound-properties
Une fois le changement fait, il faut recharger la couche audio (le plus simple est de redémarrer la machine); la configuration du son sera faite automatiquement de façon invisible.
Documentation initiale expliquant les détails de la méthode :
- pour Intrepid Ibex
- pour Jaunty Jackalope
Méthode validée par plusieurs utilisateurs des forums :
Le son "craque"
Il se peut que le son "craque" depuis la dernière version (0.9.14).
D'abord, tester http://fluoblog.wordpress.com/tag/pulseaudio/, la partie C. Si ça ne marche pas, essayer ceci:
Le problème semble être du à la fonction "tsched" activée par défaut. Pour corriger ceci, trouver dans le fichier default.pa (dans ~/pulse généralement) le module module module-hal-detect et ajouter tsched=0:
load-module module-hal-detect tsched=0
Si vous utiisez module-alsa-sink, ajouter lui aussi "tsched=0"
load-module module-alsa-sink device=hw:0,0 sink_name=alsa_out tsched=0
Il se peut que pulseaudio soit moins stable (plante au changement de musique par exemple). En augmentant default-fragment-size-msec dans daemon.conf, le problème est moins présent:
default-sample-channels = 2 high-priority = yes default-fragments = 8 default-fragment-size-msec = 25
Ne pas oublier de tuer
$ pulseaudio -k
puis de relancer le démon
$ pulseaudio -D
Skype
Skype ne fonctionne pas toujours avec les entrées / sorties de PulseAudio. Ce problème est décrit sur le wiki de PulseAudio (en).
Une solution efficace (source (en)) consiste à déclarer des entrées / sorties audios spécifiques. Cela permet à Skype de contourner PulseAudio.
Editer le fichier ~/.asoundrc :
Rajouter les options suivantes à la fin du fichier :
pcm.skypeout
{
type plug
slave.pcm "dmix"
}
ctl.skypeout
{
type hw
card 0
}
pcm.skypein
{
type plug
slave.pcm "input"
}
ctl.skypein
{
type hw
card 0
}
Redémarrer. Ouvrir Skype et configurer les réglages audio sous Skype ("Options" → "Son") avec "skypeout" pour "son sortant" et "sonnerie". (NB : à priori, il est possible d'utiliser "skypein" pour le "son entrant" mais je n'ai pas fait la manipulation et j'ai laissé le device hardware par défaut).
SDL
Les applications SDL (une majorité de jeux comme les fps ou xmoto) utilisent alsa, mais ces applications renvoient une erreur de greffon. pour y remédier, deux solutions :
Sortie SDL pulseaudio native :
sudo apt-get install libsdl1.2debian-pulseaudio export SDL_AUDIODRIVER=”pulse”
Mais pas encore assez mure, le son est pas terrible.
L'autre solution est de passer par esd :
sudo apt-get install libsdl1.2debian-esd export SDL_AUDIODRIVER=”esd”
Maintenant les flux de sortie de ces applications sont disponibles dans pulseaudio et réglables avec pavucontrol.
Récupérer le son des applications utilisant OSS
Comme aoss autrefois pour ALSA, Padsp est un « wrapper » qui va convertir les flux oss en flux pulseaudio. Il a l'avantage d'être plus stable et d'offrir plus de fonctionnalités. Il est installé d'office avec PulseAudio.
Exemple :
$ padsp mon_programme
Wine
Depuis la version 1.1.3, Wine sait utiliser directement PulseAudio sans manipulation (configuration audio dans winecfg : ALSA). Il suffit que la sortie ALSA soit bien redirigée vers PulseAudio ce qui est le cas par défaut.
Autres applications
D'autres problèmes non traités ici ont leur solution sur cette page : PulseAudio Perfect Setup (en)
Plusieurs cartes son (enceintes USB par exemple)
Il se peut que les hauts parleurs usb ne fonctionnent pas. Il faut alors installer pavucontrol pour rediriger le flux vers les enceintes USB.
Pulseaudio en tant que démon système
Depuis jaunty, il arrive que le son saccade avec pulseaudio. Chez moi, le son saccade toujours, malgré le temps réel. Mais lancé en tant que root, plus de problèmes.
éditez le fichier /etc/pulse/daemon.conf comme ceci :
# This file is part of PulseAudio. # # PulseAudio is free software; you can redistribute it and/or modify # it under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # PulseAudio is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with PulseAudio; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 # USA. ## Configuration file for the PulseAudio daemon. See pulse-daemon.conf(5) for ## more information. Default values a commented out. Use either ; or # for ## commenting. daemonize = no fail = yes disallow-module-loading = no disallow-exit = no use-pid-file = yes system-instance = yes disable-shm = no shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB high-priority = yes nice-level = -11 realtime-scheduling = yes ; realtime-priority = 5 ; exit-idle-time = 20 ; module-idle-time = 20 ; scache-idle-time = 20 ; dl-search-path = (depends on architecture) ; load-default-script-file = yes ; default-script-file = ; log-target = auto ; log-level = notice resample-method = src-linear ; disable-remixing = no ; disable-lfe-remixing = yes no-cpu-limit = yes ; rlimit-fsize = -1 ; rlimit-data = -1 ; rlimit-stack = -1 ; rlimit-core = -1 ; rlimit-as = -1 ; rlimit-rss = -1 ; rlimit-nproc = -1 ; rlimit-nofile = 256 ; rlimit-memlock = -1 ; rlimit-locks = -1 ; rlimit-sigpending = -1 ; rlimit-msgqueue = -1 ; rlimit-nice = 31 ; rlimit-rtprio = 9 ; rlimit-rtttime = 1000000 ; default-sample-format = s16le ; default-sample-rate = 44100 default-sample-channels = 2 default-fragments = 8 default-fragment-size-msec = 5
Par défaut, les flux ne pourront pas êtres modifiés par pavucontrol, pour ceci, décommentez la ligne de /etc/pulse/default.pa :
load-module module-esound-protocol-tcp
Enfin, comme le lanceur d'Ubuntu ne prend pas en compte notre configuration ( à confirmer), il faut lui dire qu'on est plus en per-user sessions, commentez ces lignes de /etc/init.d/pulseaudio :
#if [ "$PULSEAUDIO_SYSTEM_START" != "1" ]; then # log_warning_msg "PulseAudio configured for per-user sessions" # exit 0 #fi
Vous pouvez maintenant redémarrer pulseaudio
pulseaudio -k
sudo /etc/init.d/pulseaudio start
Lien du thread sur le forum : http://forum.ubuntu-fr.org/viewtopic.php?pid=2675978#p2675978
Liens
Si vous voulez plus de renseignements sur ce qu'est ou n'est pas PulseAudio, visionnez la vidéo de Lennart Poettering.
Quelques liens parlant de PulseAudio :
- Faire fonctionner certaines applications rebutantes du type Skype ou Flash de façon propre : Intrepid Ibex, Jaunty Jackalope
- Utiliser la sortie son d'un autre PC sur le réseau local.
Contributeurs : Kamilion (traduction), Ghost (création), Prometee (traduction et améliorations), ste (normalisation de la page), Manu_95 (optimisation Skype), loulouch (démon système), Ubuntosaure (son en 5.1), Theozzfancometh (mise à jour et clarification de la page), Id2ndR (nettoyage).


