PipeWire est un serveur son et une interface de programmation applicative, IPA, permettant de traiter des flux audio et vidéo.
Site web officiel : https://pipewire.org/ .
Sources : https://gitlab.freedesktop.org/pipewire/pipewire .
Version actuelle : 1.0.3 du 2024 02 02.
Licence : MIT.
Plateforme : GNU Linux.
Support : ALSA, JACK, PulseAudio.
Développeur(s) : Wim Taymans.
Canal IRC : #pipewire @ OFTC
Le serveur son PipeWire est disponible comme remplaçant de JACK et PulseAudio. Concernant la MAO, c'est l'implémentation de l'IPA JACK dans pipewire-jack qui va nous intéresser.
PipeWire est aussi un serveur vidéo mais nous ne traiterons pas cet aspect ici.
PipeWire est transparent pour l'utilisateur. Une fois installé il va reconnaître et lister les périphériques audio (et vidéos) présents sur la machine. C'est en installant pipewire-alsa que l'utilisateur permet à pipewire de prendre en charge les flux audio qui viennent des applications qui utilisent la partie utilisateur d'ALSA. Il se passe la même chose lorsque pipewire-pulse et pipewire-jack sont présents sur le système.
Pipewire-alsa remplace pulseaudio-alsa, pipewire-pulse remplace pulseaudio et pipewire-jack remplace JACK. Pipewire se fait passer pour ALSA, pulseaudio et JACK auprès des applications qui envoient des flux audio vers ce système son ou ces serveurs sons.
Il y a donc différentes manières d'utiliser pipewire pour un utilisateur qui veut faire de la MAO avec son système :
Installer pipewire, pipewire-alsa et pipewire-pulse permet de remplacer pulseaudio et pulseaudio-bluetooth par pipewire et de profiter de ses avancées en terme de performance et de baisse de consommation (processeur et énergie). On garde dans ce cas le serveur JACK comme serveur spécifique pour la MAO et la basse latence.
Installer pipewire, pipewire-alsa, pipewire-pulse et pipewire-jack permet de donner la main à pipewire pour gérer le son multimédia et MAO.
Une fois PipeWire installé, lorsque vous voulez faire de la MAO, deux petites manipulations sont nécessaires. Elles sont détaillées dans les paragraphes suivants.
Pour accéder aux configurations prévues dans PipeWire pour la partie qui concerne la MAO, il vous faudra utiliser le logiciel Pavucontrol, le mélangeur audio dédié, au départ, à PulseAudio.
Dans l'onglet configurations de Pavucontrol, vous verrez apparaître un nouveau profil pour vos interfaces nommé "pro audio".
Si vous avez une interface audio habituellement utilisée par le serveur JACK, utilisez le profil pro audio lorsque vous voulez manipuler du son, faire de la MAO. Celui-ci réglera PipeWire en mode ordonnancement basé sur les IRQ (comme JACK) au lieu de celui basé sur le temps et vous aurez alors accès à toutes les entrées et sorties disponibles sur votre interface.
Pour vous permettre de régler la taille de tampon (Quantum) et la fréquence d'échantillonnage (Rate) dans PipeWire lorsque vous faites de la MAO, vous pouvez lancer deux commandes dans un terminal ou créer un script bash.
La première règle est bloque la fréquence d'échantillonnage, la deuxième, le "Quantum" pour tous les clients JACK. Le "Quantum" est l'équivalent de la taille de tampon lors de l'utilisation d'un serveur JACK.
Il est possible de piloter certains paramètres de pipewire avec des logiciels qui proposent une interface graphique.
Selon votre système vous pouvez choisir entre un logiciel développé avec la bibliothèque GTK qui s'appelle Helvum? et un logiciel proche de son prédécesseur pour JACK qui lui utilise la bibliothèque Qt et qui s'appelle qpwgraph?. Ces deux logiciels permettent de créer des connexions sous forme de liaison filaire comme dans un panneau de brassage (patchbay ).
Certains utilisateurs ont remonté la possibilité de se servir de patchance, au départ prévu pour JACK, et qui permet de changer la taille de tampon nommé "Quantum" dans PipeWire. D'autres se servent de QjackCtl comme détaillé dans le prochain chapitre.
Si vous avez vos habitudes avec QjackCtl, vous pouvez l'utiliser avec pipewire-jack. Vous ne pourrez pas modifier les paramètres de pipewire-jack, mais vous aurez par exemple accès au graphe de connexions, et à l'enregistrement de configuration.
La dépendance stricte sur JACK n'a pas encore été levée sur Debian. Pour installer QjackCtl sans réinstaller JACK, il faut leurrer les dépendances de ce paquet avec equivs, que vous devrez installer.
Créez un fichier jackd2
compilez le avec
Installer votre paquet avec dpkg -i
Pensez à bloquer la version afin qu'une mise à jour du paquet dans les dépôts Debian ne vienne pas écraser votre fichier leurre
Faites la même chose pour créer un paquet jackd
Vous pouvez maintenant installer le paquet qjackctl de façon classique.
pw-cli est un utilitaire pour interagir avec le service pipewire.
À ce jour pw-cli propose les commandes suivantes :
doc pw-cli
doc pw-link
PipeWire fourni un remplaçant au serveur de son jack bien connu par tous ceux qui manipulent du son sous linux. pw-jack vous permet par exemple de définir la fréquence d’échantillonnage.
doc pw-jack
pw-top offre une vue en temps réel de l'activité des "devices" et "node" de pipewire.
Voici la liste des infos disponibles
Vous y verrez chacune de vos connexions, avec sa fréquence d’échantillonnage par exemple
Table des matières
Informations
Site web officiel : https://pipewire.org/ .
Sources : https://gitlab.freedesktop.org/pipewire/pipewire .
Version actuelle : 1.0.3 du 2024 02 02.
Licence : MIT.
Plateforme : GNU Linux.
Support : ALSA, JACK, PulseAudio.
Développeur(s) : Wim Taymans.
Canal IRC : #pipewire @ OFTC
Description
Le serveur son PipeWire est disponible comme remplaçant de JACK et PulseAudio. Concernant la MAO, c'est l'implémentation de l'IPA JACK dans pipewire-jack qui va nous intéresser.
PipeWire est aussi un serveur vidéo mais nous ne traiterons pas cet aspect ici.
Utilisation
PipeWire est transparent pour l'utilisateur. Une fois installé il va reconnaître et lister les périphériques audio (et vidéos) présents sur la machine. C'est en installant pipewire-alsa que l'utilisateur permet à pipewire de prendre en charge les flux audio qui viennent des applications qui utilisent la partie utilisateur d'ALSA. Il se passe la même chose lorsque pipewire-pulse et pipewire-jack sont présents sur le système.
Pipewire-alsa remplace pulseaudio-alsa, pipewire-pulse remplace pulseaudio et pipewire-jack remplace JACK. Pipewire se fait passer pour ALSA, pulseaudio et JACK auprès des applications qui envoient des flux audio vers ce système son ou ces serveurs sons.
Il y a donc différentes manières d'utiliser pipewire pour un utilisateur qui veut faire de la MAO avec son système :
En remplacement de PulseAudio et comme client de JACK
Installer pipewire, pipewire-alsa et pipewire-pulse permet de remplacer pulseaudio et pulseaudio-bluetooth par pipewire et de profiter de ses avancées en terme de performance et de baisse de consommation (processeur et énergie). On garde dans ce cas le serveur JACK comme serveur spécifique pour la MAO et la basse latence.
En remplacement de PulseAudio et JACK
Installer pipewire, pipewire-alsa, pipewire-pulse et pipewire-jack permet de donner la main à pipewire pour gérer le son multimédia et MAO.
Une fois PipeWire installé, lorsque vous voulez faire de la MAO, deux petites manipulations sont nécessaires. Elles sont détaillées dans les paragraphes suivants.
Profil pro audio
Pour accéder aux configurations prévues dans PipeWire pour la partie qui concerne la MAO, il vous faudra utiliser le logiciel Pavucontrol, le mélangeur audio dédié, au départ, à PulseAudio.
Dans l'onglet configurations de Pavucontrol, vous verrez apparaître un nouveau profil pour vos interfaces nommé "pro audio".
Si vous avez une interface audio habituellement utilisée par le serveur JACK, utilisez le profil pro audio lorsque vous voulez manipuler du son, faire de la MAO. Celui-ci réglera PipeWire en mode ordonnancement basé sur les IRQ (comme JACK) au lieu de celui basé sur le temps et vous aurez alors accès à toutes les entrées et sorties disponibles sur votre interface.
Réglage des paramètres Quantum et Rate de PipeWire
Pour vous permettre de régler la taille de tampon (Quantum) et la fréquence d'échantillonnage (Rate) dans PipeWire lorsque vous faites de la MAO, vous pouvez lancer deux commandes dans un terminal ou créer un script bash.
La première règle est bloque la fréquence d'échantillonnage, la deuxième, le "Quantum" pour tous les clients JACK. Le "Quantum" est l'équivalent de la taille de tampon lors de l'utilisation d'un serveur JACK.
pw-metadata -n settings 0 clock.force-rate 48000 pw-metadata -n settings 0 clock.force-quantum 128
Pilotage avec une interface graphique
Il est possible de piloter certains paramètres de pipewire avec des logiciels qui proposent une interface graphique.
Selon votre système vous pouvez choisir entre un logiciel développé avec la bibliothèque GTK qui s'appelle Helvum? et un logiciel proche de son prédécesseur pour JACK qui lui utilise la bibliothèque Qt et qui s'appelle qpwgraph?. Ces deux logiciels permettent de créer des connexions sous forme de liaison filaire comme dans un panneau de brassage (patchbay ).
Certains utilisateurs ont remonté la possibilité de se servir de patchance, au départ prévu pour JACK, et qui permet de changer la taille de tampon nommé "Quantum" dans PipeWire. D'autres se servent de QjackCtl comme détaillé dans le prochain chapitre.
QjackCtl
Si vous avez vos habitudes avec QjackCtl, vous pouvez l'utiliser avec pipewire-jack. Vous ne pourrez pas modifier les paramètres de pipewire-jack, mais vous aurez par exemple accès au graphe de connexions, et à l'enregistrement de configuration.
Qjackctl et debian
La dépendance stricte sur JACK n'a pas encore été levée sur Debian. Pour installer QjackCtl sans réinstaller JACK, il faut leurrer les dépendances de ce paquet avec equivs, que vous devrez installer.
Créez un fichier jackd2
Section: misc Priority: optional Standards-Version: 3.9.2 Package: jackd2 Version: 1.9.21 Maintainer: Dummy MAO Provides: jackd2 Description:dummy jackd2 package used to install jack tools with pw-jack (ieqjackctl)
compilez le avec
equivs-build jackd2
Installer votre paquet avec dpkg -i
Pensez à bloquer la version afin qu'une mise à jour du paquet dans les dépôts Debian ne vienne pas écraser votre fichier leurre
apt-mark hold jackd2
Faites la même chose pour créer un paquet jackd
Vous pouvez maintenant installer le paquet qjackctl de façon classique.
Pilotage en ligne de commande
pw-cli
pw-cli est un utilitaire pour interagir avec le service pipewire.
À ce jour pw-cli propose les commandes suivantes :
pipewire-0>> help Available commands: help | h Show this help load-module | lm Load a module. <module-name> [<module-arguments>] unload-module | um Unload a module. <module-var> connect | con Connect to a remote. [<remote-name>] disconnect | dis Disconnect from a remote. [<remote-var>] list-remotes | lr List connected remotes. switch-remote | sr Switch between current remotes. [<remote-var>] list-objects | ls List objects or current remote. [<interface>] info | i Get info about an object. <object-id>|all create-device | cd Create a device from a factory. <factory-name> [<properties>] create-node | cn Create a node from a factory. <factory-name> [<properties>] destroy | d Destroy a global object. <object-id> create-link | cl Create a link between nodes. <node-id> <port-id> <node-id> <port-id> [<properties>] export-node | en Export a local node to the current remote. <node-id> [remote-var] enum-params | e Enumerate params of an object <object-id> <param-id> set-param | s Set param of an object <object-id> <param-id> <param-json> permissions | sp Set permissions for a client <client-id> <object> <permission> get-permissions | gp Get permissions of a client <client-id> send-command | c Send a command <object-id> quit | q Quit
doc pw-cli
Gérer les connexions
Les connexions sont normalement gérées par un gestionnaire de connexions, mais si vous voulez scripter les connexions/deconnexions, vous pouvez utiliser pw-linkpw-link --help pw-link : PipeWire port and link manager. Generic: pw-link [options] -h, --help Show this help --version Show version -r, --remote=NAME Remote daemon name List: pw-link [options] [out-pattern] [in-pattern] -o, --output List output ports -i, --input List input ports -l, --links List links -m, --monitor Monitor links and ports -I, --id List IDs -v, --verbose Verbose port properties Connect: pw-link [options] output input -L, --linger Linger (default, unless -m is used) -P, --passive Passive link -p, --props=PROPS Properties as JSON object Disconnect: pw-link -d [options] output input pw-link -d [options] link-id -d, --disconnect Disconnect ports
doc pw-link
pw-jack
PipeWire fourni un remplaçant au serveur de son jack bien connu par tous ceux qui manipulent du son sous linux. pw-jack vous permet par exemple de définir la fréquence d’échantillonnage.
pw-jack -h /usr/bin/pw-jack - run JACK applications on PipeWire /usr/bin/pw-jack [options] application [arguments] options: -h show brief help -r <remote> remote daemon name -v verbose debug info -s samplerate (default "48000") -p period in samples
doc pw-jack
pw-top
pw-top offre une vue en temps réel de l'activité des "devices" et "node" de pipewire.
Voici la liste des infos disponibles
S ID QUANT RATE WAIT BUSY W/Q B/Q ERR FORMAT NAME
Vous y verrez chacune de vos connexions, avec sa fréquence d’échantillonnage par exemple
man pw-toppour plus d'infos