Ceci est une ancienne révision du document !
PipeWire
PipeWire est le serveur de son installé par défaut sur Ubuntu à partir de la version Kinetic 22.10.
Un serveur de son permet à plusieurs applications d'utiliser simultanément les pilotes de la carte son, afin de pouvoir être toutes audibles et utilisées simultanément.
Il remplace PulseAudio, le serveur de son installé par défaut jusqu'à Ubuntu Jammy 22.04. Il propose en plus les fonctionnalités avancées utiles dans le domaine de la MAO que proposait jusqu'ici le serveur JACK, qu'il remplace aussi, avec une configuration simplifiée. Il rend possible l'utilisation simultanée de n'importe lesquels de ses logiciels et appareils audio. On peut par exemple pré-écouter un flux audio sur des oreillettes bluetooth tandis qu'on en diffuse un autre sur la carte son intégrée à son ordinateur, le tout en enregistrant le micro de sa webcam dans Audacity…
Il dispose de plus des couches de rétro-compatibilité avec les serveurs de son ALSA, PulseAudio, et JACK. Pour en bénéficier il faut installer les paquets pipewire-alsa, pipewire-pulse et pipewire-jack. Grâce à ces paquets, les applications compatibles voient respectivement des serveurs ALSA, PulseAudio, ou JACK tourner, et peuvent s'y connecter. Il s'agit en fait à chaque fois de PipeWire.
PipeWire dispose aussi de fonctionnalités permettant de gérer des flux vidéo, utiles par ex. pour des applications de streaming.
Installation
PipeWire est installé par défaut sur Ubuntu à partir de la version Kinetic 22.10. Vous pouvez installer le paquet pipewire-jack pour profiter des applications compatibles JACK.
Sur les versions précédentes il est possible d'installer le paquet pipewire depuis les dépôts officiels à partir de Focal 20.04 (dépôt universe pour cette version précise).
On trouve pipewire-pulse à partir de Jammy 22.04 (dépôt universe pour cette version précise).
On ne trouve les paquets pipewire-alsa et pipewire-jack qu'à partir de Kinetic 22.10.
Avec pipewire-pulse et pipewire-alsa, il est conseillé de désinstaller respectivement PulseAudio et JACK.
Il faut pour cela ajouter les PPA ppa:pipewire-debian/pipewire-upstream1) et ppa:pipewire-debian/wireplumber-upstream2) dans vos sources de logiciels.
Voir ici la documentation en anglais à ce sujet : https://pipewire-debian.github.io/pipewire-debian/
Utilisation
Configuration
Pour une utilisation simple il n'y a rien à configurer. Il suffit de choisir la sortie audio de son choix dans les paramètres du système ou plus rapidement dans le menu système de la barre supérieure (pour GNOME, à adapter si vous utilisez un autre environnement de bureau).
Pour voir la liste des actions disponibles en ligne de commande :
pw-cli help
Pour voir la liste des logiciels et appareils disponibles (via WirePlumber) :
wpctl status
Routage
En plus d'utiliser simultanément plusieurs logiciels et interfaces matérielles, PipeWire permet de les relier ensemble dans n'importe quel sens, à la manière d'un studio virtuel.
On peut utiliser une interface graphique telle que qpwgraph, qui remplace avantageusement QjackCtl (qu'on utilisait pour JACK).
qpwgraph est disponible depuis les dépots officiels : qpwgraph ou en Flatpak.
Chaque élément (matériel ou logiciel) apparaît comme un bloc avec ses entrées à gauche et ses sorties à droite. On peut les relier les unes aux autres en tirant des liens par cliquer-glisser. Les liens peuvent ainsi conduire des signaux d'un logiciel ou d'un périphérique à l'autre. Des signaux :
- audio (en vert)
- MIDI (en rose : MIDI ALSA, ou rouge : MIDI JACK - voir Implémentation du MIDI sous Linux)
- ou vidéo (en bleu)
Gestionnaire de session
Le gestionnaire de session pour PipeWire installé par défaut sur Ubuntu est WirePlumber.
Il n'existe pour le moment pas d'interface graphique pour le gérer.
On peut le contrôler avec la commande wpctl
et ses fichiers de configuration se trouvent sous /usr/share/wireplumber
.
Création d'appareils virtuels
Il peut être utile de créer un appareil virtuel (virtual sink) pour par ex. faciliter le routage entre les différentes applications.
Pour cela créez un fichier ~/.config/pipewire/pipewire.conf.d/10-null-sink.conf
contenant par ex. :
- 10-null-sink.conf
context.objects = [ { factory = adapter args = { factory.name = support.null-audio-sink node.name = "Virtual Stereo" media.class = Audio/Sink object.linger = true audio.position = [ FL FR ] monitor.channel-volumes = true } } { factory = adapter args = { factory.name = support.null-audio-sink node.name = "Virtual Quadri" media.class = Audio/Sink object.linger = true audio.position = [ FL FR RL RR ] monitor.channel-volumes = true } } ]
Ici on crée 2 appareils virtuels, un stéréo, l'autre quadriphonique.