Table des matières

PulseAudio : config, trucs et astuces

Nota : Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli !

Introduction

aptitude show pulseaudio
retour de la commande
Paquet : pulseaudio                                     
Version : 12.2-4+deb10u1
État: installé
Automatiquement installé: oui
Multiarchitecture : étranger
Priorité : optionnel
Section : sound
Responsable : Pulseaudio maintenance team <pkg-pulseaudio-devel@lists.alioth.debian.org>
Architecture : amd64
Taille décompressée : 6565 k
Dépend: libasound2 (>= 1.1.0), libc6 (>= 2.27), libcap2 (>= 1:2.10), libdbus-1-3 (>=
        1.9.14), libgcc1 (>= 1:3.0), libice6 (>= 1:1.0.0), libltdl7 (>= 2.4.6),
        liborc-0.4-0 (>= 1:0.4.25), libpulse0 (= 12.2-4+deb10u1), libsm6, libsndfile1
        (>= 1.0.20), libsoxr0 (>= 0.1.0), libspeexdsp1 (>= 1.2~beta3.2-1), libstdc++6
        (>= 4.1.1), libsystemd0, libtdb1 (>= 1.2.7+git20101214), libudev1 (>= 183),
        libwebrtc-audio-processing1, libx11-6, libx11-xcb1, libxcb1, libxtst6, adduser,
        lsb-base (>= 3.2-13), libasound2-plugins, pulseaudio-utils
Recommande: rtkit, libpam-systemd, dbus-user-session
Suggère: udev, pavumeter, pavucontrol, paman, paprefs
Description : serveur de son PulseAudio
 PulseAudio, précédemment connu sous le nom de Polypaudio, est un serveur de son pour
 les systèmes POSIX et Win32. Il peut remplacer le serveur de son ESD, en apportant une
 latence plus faible, une qualité de mixage et de ré-échantillonnage supérieure et une
 meilleure architecture générale. 
 
 Les fonctionnalités de PulseAudio sont entre autres : 
 
 * une qualité élevée de mixage logiciel de plusieurs flux audio avec prise 
 en charge de plus d'une source. Peut être utilisé pour combiner plusieurs cartes son en
 une (avec ajustement du taux d'échantillonage) ; 
 
 * un grand nombre de bibliothèques clientes gérées. Les 
 applications client ESD, ALSA, oss, libao et GStreamer sont gérées telles quelles. Des
 greffons PulseAudio natifs sont également disponibles pour xmms et mplayer ; 
 
 * un bon comportement en faible latence et une mesure très précise de la 
 latence pour la diffusion et l'enregistrement. Il est possible de synchroniser
 complètement plusieurs flux à diffuser ; 
 
 * une transparence du réseau permettant à une application de jouer ou 
 enregistrer du son sur une machine différente que celle où elle s'exécute ; 
 
 * une architecture extensible de greffons avec notamment des greffons pour 
 jackd, multicast-rtp lirc et avahi. 
 
 Ce paquet fournit le démon et l'ensemble de modules de base.
Site : http://www.pulseaudio.org
Étiquettes: implemented-in::c, interface::daemon, network::client, network::server,
            protocol::tcp, role::program, works-with::audio
Cette page est en construction, elle dispose notamment de liens placés en référence pour quiconque voudra contribuer au tuto (et aux TP associés). Avis aux amateurs zé amatrices !

Installation

Paquets de base

apt-get update && apt-get install pulseaudio

Le paquet pulseaudio-utils, qui fournit les outils en ligne de commande, sera installé automatiquement (c'est une dépendance).

Paquets complémentaires

Si les dernières versions des bureaux GNOME, MATE, etc. permettent d'effectuer des réglages de PulseAudio, comme le choix de la sortie audio, ce n'est pas le cas de certains environnements, tel Xfce 4.10 (Debian 8) ; il est alors pertinent d'installer les paquets pavucontrol et gstreamer0.10-pulseaudio :

apt-get install pavucontrol gstreamer0.10-pulseaudio

Le paquet gstreamer0.10-pulseaudio permet d'agir sur le volume PulseAudio via l'applet Xfce (tableau de bord).

Le paquet gstreamer0.10-pulseaudio, obsolète, n'est plus disponible à partir de Debian 9 Stretch. Xfce 4.12 installe le paquet xfce4-pulseaudio-plugin, il ne reste qu'à ajouter le greffon PulseAudio au tableau de bord.

Utilisation

Interface graphique (pavucontrol)

Une fois installé, pavucontrol est lancé via le menu Applications > Multimédia > Contrôle du volume PulseAudio.

Interface en ligne de commande

Les commandes pacmd et pactl sont particulièrement bien documentées (en anglais accessible, rien à voir avec le théâtre élisabéthain m() dans les pages de manuel ; à noter que la page pacmd renvoie à la page pulse-cli-syntax :

man pulse-cli-syntax

On consultera également avec un plaisir non feint les pages pulseaudio, default.pa, pulse-client.conf, et pulse-daemon.conf.

Exemple : contrôler le volume au clavier

Les trois commandes de base (respectivement augmenter, diminuer, basculer la sourdine) sont :

pactl set-sink-volume @DEFAULT_SINK@ +10%
pactl set-sink-volume @DEFAULT_SINK@ -10%
pactl set-sink-mute @DEFAULT_SINK@ toggle

Il est possible de remplacer @DEFAULT_SINK@ par le numéro (index) correspondant au périphérique de sortie (sink) par défaut.

contrôler le volume depuis le terminal

En commande2) par le terminal pour le lecteur MPV :

mpv -volume=150 "TA_VIDEO"

Pour un réglage en dur :
Par exemple (pour mpv) tu tapes :

nano ~/.conf/mpv/mpv.conf

Et tu mets cette option :

volume=150

Source sur le forum : https://debian-facile.org/viewtopic.php?pid=314625#p314625

Sacré golgot200 tout de même… ^_^

Configuration et personnalisation

Sous Debian 8 Jessie, les paramètres de PulseAudio modifiés par l'utilisateur (par exemple la sortie audio) ne sont pas conservés d'une session à l'autre. La manipulation requise est à effectuer après chaque redémarrage de la machine. Toutefois, l'utilisateur dispose de trois fichiers de configuration permettant de modifier les réglages par défaut de PulseAudio : les fichiers /etc/pulse/client.conf, /etc/pulse/default.pa, et /etc/pulse/daemon.conf ; il est possible, voire recommandé, de les copier vers le répertoire ~/.config/pulse avant de les modifier, chaque utilisateur pouvant ainsi définir sa propre configuration.

PulseAudio cherche sa configuration dans cet ordre : d'abord les fichiers dans le $HOME, puis les fichiers par défaut si les précédents n'existent pas. S'il trouve un fichier de configuration dans le $HOME de l'utilisateur, il le charge et ne charge pas celui par défaut. Le fichier du $HOME doit donc contenir l'ensemble des instructions nécessaires à la recherche des cartes son et à la bonne configuration audio.

Exemple : définir la sortie HDMI par défaut

La plupart des ordinateurs “modernes” disposent de plusieurs sorties audio : associées aux connecteurs analogiques (jacks) et éventuellement numériques, coaxial (RCA) et/ou optique (TOSLINK), ou encore à un port HDMI qui selon l'usage de la machine doit parfois être défini sortie par défaut.

On copie le fichier de configuration de PulseAudio dans le $HOME via la commande suivante :

cp /etc/pulse/client.conf ~/.config/pulse/client.conf

Toujours dans un terminal, on identifie le nom des périphériques de sortie disponibles :

pacmd list-sinks | egrep 'index|name:|muted|device.description|active'
retour de la commande
    index: 0
	name: <alsa_output.pci-0000_01_00.1.hdmi-stereo>
	muted: no
		device.description = "GF119 HDMI Audio Controller Digital Stereo (HDMI)"
	active port: <hdmi-output-0>
  * index: 1
	name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
	muted: no
		device.description = "Audio interne Stéréo analogique"
	active port: <analog-output-lineout>

Ce retour équivaut à ce qui est affiché dans l'interface graphique pavucontrol sous l'onglet “Périphériques de sortie” ; on voit ici que la sortie par défaut est la sortie associée au contrôleur audio analogique. Pour définir la sortie HDMI par défaut, on modifie le fichier ~/.config/pulse/client.conf :

nano ~/.config/pulse/client.conf
séquence interactive (extrait)
; default-sink =

Par défaut, la ligne qui nous intéresse est commentée, il faut donc la décommenter et la compléter avec le nom du périphérique de sortie identifié plus haut :

séquence interactive (extrait)
default-sink = alsa_output.pci-0000_01_00.1.hdmi-stereo

Une fois enregistrée, la modification est prise en compte immédiatement, il est donc inutile de redémarrer quoi que ce soit… notamment le démon PulseAudio.

Remarque : cette modification effectuée via le fichier client.conf n'est visible ni dans le retour de la commande pacmd list-sinks ni dans l'interface graphique pavucontrol sous l'onglet “Périphériques de sortie” ; si cela vous perturbe, modifiez préférentiellement la ligne concernée du fichier default.pa (cf. infra).

Exemple : fixer la source d'enregistrement

Il est également possible de définir le périphérique d'entrée, ou source, qui sera utilisé par défaut. Ceci semble particulièrement intéressant lorsque l'utilisateur est régulièrement amené à enregistrer le flux audio général (et non une source externe donnée).

On copie le fichier de configuration de PulseAudio dans le $HOME via la commande suivante :

cp /etc/pulse/client.conf ~/.config/pulse/client.conf

Toujours dans un terminal, on identifie le nom des périphériques d'entrée disponibles :

pacmd list-sources | egrep 'index|name:|muted|device.description|active'
retour de la commande
    index: 0
	name: <alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor>
	muted: no
		device.description = "Monitor of GF119 HDMI Audio Controller Digital Stereo (HDMI)"
    index: 1
	name: <alsa_output.pci-0000_00_1b.0.analog-stereo.monitor>
	muted: no
		device.description = "Monitor of Audio interne Stéréo analogique"
  * index: 2
	name: <alsa_input.pci-0000_00_1b.0.analog-stereo>
	muted: no
		device.description = "Audio interne Stéréo analogique"
	active port: <analog-input-linein>

Ce retour équivaut à ce qui est affiché dans l'interface graphique pavucontrol sous l'onglet “Périphériques d'entrée” ; on voit ici que la source par défaut est le périphérique associé aux connecteurs physiques de la carte son (entrée-ligne, microphone, etc.), ce qui ne convient pas nécessairement à l'usage le plus fréquent de la machine. Pour capturer par défaut le flux audio interne, on modifie le fichier ~/.config/pulse/client.conf :

nano ~/.config/pulse/client.conf
séquence interactive (extrait)
; default-source =

Par défaut, la ligne qui nous intéresse est commentée, il faut donc la décommenter et la compléter avec le nom du périphérique d'entrée identifié plus haut :

séquence interactive (extrait)
default-source = alsa_output.pci-0000_00_1b.0.analog-stereo.monitor

Une fois enregistrée, la modification est prise en compte immédiatement, il est donc inutile de redémarrer quoi que ce soit… notamment le démon PulseAudio.

Remarque : cette modification effectuée via le fichier client.conf n'est visible ni dans le retour de la commande pacmd list-sources ni dans l'interface graphique pavucontrol sous l'onglet “Périphériques d'entrée” ; si cela vous perturbe, modifiez préférentiellement la ligne concernée du fichier default.pa (cf. infra).

Exemple : isoler les contrôles de volume

Le comportement par défaut de PulseAudio, sous Debian, est de “lisser” ou “niveler” le volume des applications ; il en résulte des interactions entre le volume d'une application donnée et le volume du périphérique de sortie. Le résultat peut sembler déroutant voire agaçant3) et parfois même franchement tympano-déchirant4). Bref, ça ne va pas. Du tout.

On copie le fichier de configuration de PulseAudio dans le $HOME via la commande suivante :

cp /etc/pulse/daemon.conf ~/.config/pulse/daemon.conf

Pour retrouver calme et sérénité, on modifie le fichier ~/.config/pulse/daemon.conf :

nano ~/.config/pulse/daemon.conf
séquence interactive (extrait)
; flat-volumes = yes

Par défaut, la ligne qui nous intéresse est commentée, il faut donc la décommenter et exprimer clairement son désaccord :

séquence interactive (extrait)
flat-volumes = no

Puis on redémarre proprement le serveur de son PulseAudio avec :

pulseaudio --kill && pulseaudio --start --verbose
retour de la commande
I: [pulseaudio] main.c: Démarrage du démon réussi.

Il est inutile de redémarrer la machine ; la modification est effective.

Exemple : choisir un "profil" pour une carte

On copie le fichier de configuration de PulseAudio dans le $HOME via la commande suivante :

cp /etc/pulse/default.pa ~/.config/pulse/default.pa

Toujours dans un terminal, on identifie le nom de la carte son et les profils disponibles :

pacmd list-cards
retour de la commande
1 card(s) available.
    index: 1
    name: <alsa_card.pci-0000_00_14.2>
    driver: <module-alsa-card.c>
    owner module: 7
    properties:
        alsa.card = "0"
        alsa.card_name = "HDA ATI SB"
        alsa.long_card_name = "HDA ATI SB at 0xfebf8000 irq 16"
        alsa.driver_name = "snd_hda_intel"
        device.bus_path = "pci-0000:00:14.2"
        sysfs.path = "/devices/pci0000:00/0000:00:14.2/sound/card0"
        device.bus = "pci"
        device.vendor.id = "1002"
        device.vendor.name = "Advanced Micro Devices, Inc. [AMD/ATI]"
        device.product.id = "437b"
        device.product.name = "IXP SB4x0 High Definition Audio Controller"
        device.form_factor = "internal"
        device.string = "0"
        device.description = "Audio interne"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-pci"
    profiles:
        input:analog-stereo: Stéréo analogique Input (priority 60, available: unknown)
        output:analog-stereo: Stéréo analogique Output (priority 6000, available: unknown)
        output:analog-stereo+input:analog-stereo: Duplex stéréo analogique (priority 6060, available: unknown)
        output:analog-surround-40: Surround analogique 4.0 Output (priority 700, available: unknown)
        output:analog-surround-40+input:analog-stereo: Surround analogique 4.0 Output + Stéréo analogique Input (priority 760, available: unknown)
        output:analog-surround-41: Surround analogique 4.1 Output (priority 800, available: unknown)
        output:analog-surround-41+input:analog-stereo: Surround analogique 4.1 Output + Stéréo analogique Input (priority 860, available: unknown)
        output:analog-surround-50: Surround analogique 5.0 Output (priority 700, available: unknown)
        output:analog-surround-50+input:analog-stereo: Surround analogique 5.0 Output + Stéréo analogique Input (priority 760, available: unknown)
        output:analog-surround-51: Surround analogique 5.1 Output (priority 800, available: unknown)
        output:analog-surround-51+input:analog-stereo: Surround analogique 5.1 Output + Stéréo analogique Input (priority 860, available: unknown)
        output:analog-surround-71: Analog Surround 7.1 Output (priority 700, available: unknown)
        output:analog-surround-71+input:analog-stereo: Analog Surround 7.1 Output + Stéréo analogique Input (priority 760, available: unknown)
        output:iec958-stereo: Stéréo numérique (IEC958) Output (priority 5500, available: unknown)
        output:iec958-stereo+input:analog-stereo: Stéréo numérique (IEC958) Output + Stéréo analogique Input (priority 5560, available: unknown)
        off: Éteint (priority 0, available: unknown)
    active profile: <output:analog-stereo+input:analog-stereo>
    sinks:
        alsa_output.pci-0000_00_14.2.analog-stereo/#0: Audio interne Stéréo analogique
    sources:
        alsa_output.pci-0000_00_14.2.analog-stereo.monitor/#1: Monitor of Audio interne Stéréo analogique
        alsa_input.pci-0000_00_14.2.analog-stereo/#2: Audio interne Stéréo analogique
    ports:
        analog-input-front-mic: Front Microphone (priority 8500, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "audio-input-microphone"
        analog-input-rear-mic: Rear Microphone (priority 8200, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "audio-input-microphone"
        analog-input-linein: Entrée-ligne (priority 8100, latency offset 0 usec, available: no)
            properties:
 
        analog-output-lineout: Line Out (priority 9900, latency offset 0 usec, available: yes)
            properties:
 
        analog-output-headphones: Casques analogiques (priority 9000, latency offset 0 usec, available: no)
            properties:
                device.icon_name = "audio-headphones"
        iec958-stereo-output: Digital Output (S/PDIF) (priority 0, latency offset 0 usec, available: unknown)
            properties:

Dans cet exemple, la machine ne dispose que d'une seule carte, identifiée par : alsa_card.pci-0000_00_14.2.

Les manipulations sur pavucontrol ayant permis d'établir que le profil adapté est output:analog-stereo, on ajoute la commande adéquate à la fin du fichier ~/.config/pulse/default.pa :

echo 'set-card-profile alsa_card.pci-0000_00_14.2 output:analog-stereo' >> ~/.config/pulse/default.pa

Puis on redémarre proprement le serveur de son PulseAudio avec :

pulseaudio --kill && pulseaudio --start --verbose
retour de la commande
I: [pulseaudio] main.c: Démarrage du démon réussi.

Il est inutile de redémarrer la machine ; la modification est effective.

Remerciements

Merci à nounours, Caribou22, sqatty, otyugh, pour leurs retours… et à chalu, pour la motivation des troupes :-)

Sources

Liens utiles

1)
N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
2)
utile via un ampli par exemple
3)
Voyez comme la révolte gronde sur le forum : ici, ici, ou , par exemple.
4)
J'affectionne Pussy Riot période 2011-2014, mais bon mollo sur les potars quoi !