Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
pipewire [Le 22/04/2025, 16:58]
krodelabestiole [Installation]
pipewire [Le 19/05/2025, 23:56] (Version actuelle)
krodelabestiole mise en forme
Ligne 125: Ligne 125:
 Chaque connexion est un "//​Stream//"​ représenté par ''​source > destination''​. Chaque connexion est un "//​Stream//"​ représenté par ''​source > destination''​.
 </​note>​ </​note>​
 +
 +==== Optimisation ====
 +
 +En [[:MAO]], on a souvent besoin de jouer le son //en temps réel//. Malheureusement le matériel électronique et les ordinateurs en particulier introduisent un problème qu'on appelle le //**temps de latence**// : il s'agit du délai qui apparaît entre le moment où on demande à la machine de reproduire un son (en appuyant sur une touche d'un clavier par exemple), et celui où le son sort effectivement des haut-parleurs.\\
 +Il est souvent court (on l'​exprime en millisecondes),​ mais si on peut négliger ce délai lorsqu'​on appuie sur une touche play, le problème devient beaucoup plus épineux pour jouer de la batterie électronique ou pour appliquer un effet sur sa voix sans s'​entendre en double.\\
 +
 +Diverses optimisations permettent de le réduire au maximum. La plus importante optimisation consiste à ajuster le //buffer// (taille du tampon) et le //sample rate// (fréquence d'​échantillonnage). À ce sujet, voir //​[[:​mao#​optimisation audio]]// sur la page //​[[:​MAO]]//​.((Voir aussi la [[https://​gitlab.freedesktop.org/​pipewire/​pipewire/​-/​wikis/​Config-PipeWire#​samplerate-settings|documentation officielle]].))
 +<​code>​
 +pw-metadata -n settings 0 clock.force-rate <​samplerate>​
 +pw-metadata -n settings 0 clock.force-quantum <​buffersize>​
 +</​code>​
 +  * Remplacer ''<​samplerate>''​ par la fréquence d’échantillonnage désirée. Plus cette taille est élevée meilleure est la qualité, plus court est la latence, mais plus haute est la consommation CPU. Les interfaces audio utilisent généralement des fréquences de 41000Hz, 48000Hz, ou 96000Hz.((Sachant que l'​oreille humaine n'​entends pas de fréquences supérieures à 20000Hz.))
 +  * Remplacer ''<​buffersize>''​ par la taille de tampon (en nombre de //​samples//​). Cette valeur doit être une puissance de 2.
 +''​quantum''​ correspond ici à la taille de tampon (qu'on appelle généralement plutôt //​buffer//​).
 +<​note>​Pour les cartes sons USB, certaines combinaisons de framerate / buffer sont préférables à d'​autres : voir sur [[https://​wiki.linuxaudio.org/​wiki/​list_of_jack_frame_period_settings_ideal_for_usb_interface|cette page]] //(en)// les combinaisons indiquées en gras.</​note>​
 +
 +Par exemple, pour une fréquence d’échantillonnage de 48000Hz et un tampon de 256 samples :
 +<​code>​
 +pw-metadata -n settings 0 clock.force-rate 48000
 +pw-metadata -n settings 0 clock.force-quantum 256
 +</​code>​
 +
 +Pour vérifier les réglages :
 +<​code>​
 +pw-metadata -n settings
 +</​code>​
 +
 +Pour réinitialiser les paramètres par défaut :
 +<​code>​
 +pw-metadata -n settings 0 clock.force-rate 0
 +pw-metadata -n settings 0 clock.force-quantum 0
 +</​code>​
  
 ==== Gestionnaire de session ==== ==== Gestionnaire de session ====
Ligne 173: Ligne 205:
 <​code>​pactl load-module module-raop-discover</​code>​ <​code>​pactl load-module module-raop-discover</​code>​
 Les appareils compatibles AirPlay visibles devraient alors apparaître comme les interfaces audio ordinaires de votre ordinateur. Les appareils compatibles AirPlay visibles devraient alors apparaître comme les interfaces audio ordinaires de votre ordinateur.
- 
  
 ===== Utilisation basique en ligne de commande ===== ===== Utilisation basique en ligne de commande =====
  
-On peut pour cela utiliser l'​utilitaire WirePlumber (commande ''​wpctl''​).+On peut pour cela utiliser l'​utilitaire ​**WirePlumber** (commande ''​wpctl''​).
  
 ==== Connaître le volume sonore ==== ==== Connaître le volume sonore ====
  
-Volume de la sortie principale : +La commande ''​wpctl get-volume''​ retourne une valeur numérique décimale. ​est muet et 1 correspond au volume à 100%Le volume peut être supérieur à 100% (par contre il a dans ce cas toutes les chances de saturer).
-<​code>​ +
-wpctl get-volume ​@DEFAULT_AUDIO_SINK@ +
-Volume: ​0.85 +
-</​code>​ +
-Volume du micro (entrée principale) +
-<​code>​ +
-$ wpctl get-volume @DEFAULT_AUDIO_SOURCE@ +
-Volume: 0.68 +
-</​code>​+
  
-==== Fixer le volume ​====+  * Volume de la sortie principale :<​code>​wpctl get-volume ​@DEFAULT_AUDIO_SINK@</​code>​
  
-Fixer le volume à 1,25 +  * Volume du micro (entrée principale) :<​code>​wpctl get-volume @DEFAULT_AUDIO_SOURCE@</​code>​ 
-<​code>​ + 
-wpctl set-volume @DEFAULT_AUDIO_SINK@ 1.25 +Ces commandes retournent par exemple ''​Volume:​ 0.85''​. 
-</​code>​ + 
-Augmenter le volume de 5 % : +==== Régler le volume ==== 
-<​code>​ + 
-wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ +C'est la commande ''​wpctl set-volume''​ qui permet de définir le volume. On peut l'​exprimer en nombre décimal ''​1.0''​ ou en pourcentage ''​100%'',​ et en absolu ou relativement au volume actuel grâce aux signes ''​+''​ ou ''​-''​. 
-</​code>​ + 
-Diminuer le volume de 10 % : +  * Fixer le volume à 1,25 :<​code>​wpctl set-volume @DEFAULT_AUDIO_SINK@ 1.25</​code>​ 
-<​code>​ + 
-wpctl set-volume @DEFAULT_AUDIO_SINK@ 10%- +  * Augmenter le volume de 5% :<​code>​wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+</​code>​ 
-</​code>​ + 
-Augmenter le volume de 6 % sans dépasser 130 % : +  * Diminuer le volume de 10% :<​code>​wpctl set-volume @DEFAULT_AUDIO_SINK@ 10%-</​code>​ 
-<​code>​ + 
-wpctl set-volume -l 1.3 @DEFAULT_AUDIO_SINK@ 6%+ +  * Augmenter le volume de 6% sans dépasser 130% :<​code>​wpctl set-volume -l 1.3 @DEFAULT_AUDIO_SINK@ 6%+</​code>​
-</​code>​+
  
 ==== Mettre en sourdine (mute) ==== ==== Mettre en sourdine (mute) ====
  
-Fixer le volume à 0 +La commande ''​wpctl set-mute''​ permet aussi bien d'​activer que de désactiver la sourdine. 
-<​code>​ + 
-wpctl set-volume @DEFAULT_AUDIO_SINK@ 0 +  * Fixer le volume à 0 :<​code>​wpctl set-volume @DEFAULT_AUDIO_SINK@ 0</​code>​ 
-</​code>​ + 
-Basculer entre la sourdine et le réglage antérieur. Mettre en sourdine la sortie par défaut lorsque le volume n'est pas nul +  * Basculer entre la sourdine et le réglage antérieur. Mettre en sourdine la sortie par défaut lorsque le volume n'est pas nul ou rétablir ​le volume après mise en sourdine :<​code>​wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle</​code>​ 
-<​code>​ + 
-wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +  * Basculer ​la sourdine ​sur la sortie numéro ​''​62'' ​(numéro de sortie obtenu ​grâce à ''​wpctl status''​) :<​code>​wpctl set-mute 62 toggle</​code>​ 
-</​code>​ + 
-Rétablir ​le volume après mise en sourdine ​(même instruction) ​: +  * Basculer ​la sourdine sur l'​entrée principale (généralement le micro) :<​code>​wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle</​code>​ 
-<​code>​ + 
-wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +  * Mettre en sourdine la sortie principale pendant une minute :<​code>​wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle ; sleep 60 ; wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle</​code>​
-</​code>​ +
-Basculer ​en sourdine la sortie numéro 62 (numéro de sortie obtenu ​par wpctl status) : +
-<​code>​ +
-wpctl set-mute 62 toggle +
-</​code>​ +
-Basculer l'​entrée principale (généralement le micro) ​en sourdine ​: +
-<​code>​ +
-wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle +
-</​code>​ +
-Mettre en sourdine la sortie principale pendant une minute : +
-<​code>​ +
-wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle ; sleep 60 ; wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +
-</​code>​+
  
 ===== Problèmes courants ===== ===== Problèmes courants =====
Ligne 252: Ligne 260:
   * En cas de problèmes audio comme des craquements,​ la commande <​code>​pw-top</​code>​ permet de monitorer les processus audio, la latence de chaque interface, la charge des DSP et les décrochages audio / //​[[mao#​optimisation_audio|xruns]]//​ (colonne ''​ERR''​).((**(//​en//​)** [[https://​docs.pipewire.org/​page_man_pw-top_1.html|documentation de    * En cas de problèmes audio comme des craquements,​ la commande <​code>​pw-top</​code>​ permet de monitorer les processus audio, la latence de chaque interface, la charge des DSP et les décrochages audio / //​[[mao#​optimisation_audio|xruns]]//​ (colonne ''​ERR''​).((**(//​en//​)** [[https://​docs.pipewire.org/​page_man_pw-top_1.html|documentation de 
 pw-top]])) pw-top]]))
- 
  
 ==== Delay Bluetooth ==== ==== Delay Bluetooth ====
Ligne 266: Ligne 273:
 ===== Voir aussi ===== ===== Voir aussi =====
  
-  * **(en)** [[https://​pipewire.org|Site officiel]] +  * **(//en//)** [[https://​pipewire.org|Site officiel]] 
-  * **(en)** [[https://​docs.pipewire.org|Documentation officielle]] +  * **(//en//)** [[https://​docs.pipewire.org|Documentation officielle]] 
-  * **(en)** [[https://​gitlab.freedesktop.org/​pipewire/​pipewire/​-/​wikis/​home|Wiki PipeWire]] sur [[wpfr>​Freedesktop.org]]+  * **(//en//)** [[https://​pipewire.pages.freedesktop.org/​wireplumber/​design/​understanding_session_management.html|Documentation de WirePlumber]] 
 +  * **(//en//)** [[https://​gitlab.freedesktop.org/​pipewire/​pipewire/​-/​wikis/​home|Wiki PipeWire]] sur [[wpfr>​Freedesktop.org]]
   * [[https://​linuxmao.org/​PipeWire|PipeWire sur Linux MAO]]   * [[https://​linuxmao.org/​PipeWire|PipeWire sur Linux MAO]]
   * de nombreuses informations souvent valables aussi pour Ubuntu (mais en anglais), sur la [[https://​wiki.archlinux.org/​title/​PipeWire|documentation de Arch Linux]]   * de nombreuses informations souvent valables aussi pour Ubuntu (mais en anglais), sur la [[https://​wiki.archlinux.org/​title/​PipeWire|documentation de Arch Linux]]
-  * **(en)** [[https://​github.com/​mikeroyal/​PipeWire-Guide|Guide sur l'​écosystème de PipeWire]]+  * **(//en//)** [[https://​github.com/​mikeroyal/​PipeWire-Guide|Guide sur l'​écosystème de PipeWire]]
   * [[https://​youtu.be/​lTv2jJDcPns|Cette vidéo]] en français explique PipeWire, ALSA, [[:​PulseAudio]] et [[:​jackd|JACK]]. À noter toutefois que PipeWire est désormais aussi performant que [[:​jackd|JACK]] (depuis la sortie de la version 1), et qu'il est lui-même un //​[[:​services|daemon]]//​.   * [[https://​youtu.be/​lTv2jJDcPns|Cette vidéo]] en français explique PipeWire, ALSA, [[:​PulseAudio]] et [[:​jackd|JACK]]. À noter toutefois que PipeWire est désormais aussi performant que [[:​jackd|JACK]] (depuis la sortie de la version 1), et qu'il est lui-même un //​[[:​services|daemon]]//​.
  
 ---- ----
 //​Contributeurs :​ [[:​utilisateurs:​krodelabestiole]]//​ //​Contributeurs :​ [[:​utilisateurs:​krodelabestiole]]//​
  • pipewire.1745333922.txt.gz
  • Dernière modification: Le 22/04/2025, 16:58
  • par krodelabestiole