ubuntu-fr

Communauté francophone des utilisateurs d'Ubuntu

[[pulseaudio]]

Piste: » pulseaudio


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 :

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


Le ";" sert de commentaire
  • 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
Si le résultat n'est pas concluant, vérifiez dans le contrôleur de volume l'activation de surround, ainsi que peut-être d'éventuelles autres options qui se rapporteraient à votre problème (center, front, etc.)

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.

N'utilisez les trois fonctionnalités ci-dessous que si vous désirez que votre serveur Audio soit accessible à partir d'autres stations sur votre réseau. Si ce n'est pas le cas, n'implémentez pas ces options !
  • 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.

Un tour d'horizon de l'applet PulseAudio

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.

Si vous utilisez Pulseaudio en tant que daemon système (ce n'est pas le comportement par défaut dans Ubuntu), vous devez éditer le fichier /etc/pulse/system.pa. Mais normalement, vous devriez le savoir si c'est le cas.

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.

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.

Tout les plugins ne fonctionnent pas encore avec Pulseaudio malheureusement. Si après avoir édité le fichier pulseaudio refuse de démarrer, c'est probablement que le plugin n'est pas supporté. Supprimez alors l'entrée dans le fichier ou commentez-là, et vous pourrez relancer Pulseaudio.

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

http://forum.ubuntu-fr.org/viewtopic.php?id=314865

http://forum.ubuntu-fr.org/viewtopic.php?id=312351

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)

D'après cette note, l'installation des paquets flashplugin-nonfree-extrasound et libflashsupport sont cause d'instabilités importantes

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 :

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).

Cette configuration permet de faire fonctionner Skype correctement sur les ressources audio locales mais il n'est en revanche plus possible d'utiliser les ressources audio d'un autre serveur PulseAudio distant pour Skype !

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 :


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).


pulseaudio.txt · Dernière modification: 2009/07/04 00:12 par dClauzel
Le contenu de ce wiki est sous double licence : CC BY-SA et GNU FDL