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 07/10/2025, 13:44]
krodelabestiole [Optimisation] +coppwr
pipewire [Le 08/10/2025, 12:42] (Version actuelle)
krodelabestiole [Optimisation] +conseil pour lecture multimédia simple
Ligne 128: Ligne 128:
 ==== Optimisation ==== ==== 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.\\ +<note important>​Pour des explications générales concernant l'​optimisation audiole temps de latence, et les //xruns//, n'hésitez pas à consulter avant tout le chapitre ​//[[:​mao#​optimisation audio]]// sur la page //​[[:​MAO]]//​.</​note>​
-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 maximumLa plus importante optimisation consiste ​à ajuster le **//​buffer//​** (taille du tampon, appelée //quantum// chez PipeWire) 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]].))+Diverses optimisations permettent de réduire ​le temps de latence sans surcharger le processeur, afin d'​éviter les décrochages //xruns//Les plus importantes optimisations consistent ​à ajuster le **//​buffer//​** (taille du tampon, appelée ​**//quantum//** chez PipeWire)et le **//sample rate//** (fréquence d'​échantillonnage). À ce sujet, voir //​[[:​mao#​optimisation audio]]//
 + 
 +Pour PipeWire, ceci peut se faire en [[:commande_shell|ligne de commande]], d'​après ​la [[https://​gitlab.freedesktop.org/​pipewire/​pipewire/​-/​wikis/​Config-PipeWire#​samplerate-settings|documentation officielle]]. ​
  
 <note tip>Il est aussi possible de modifier ces paramètres sans éditer de fichier ou entrer la moindre ligne de commande ! <note tip>Il est aussi possible de modifier ces paramètres sans éditer de fichier ou entrer la moindre ligne de commande !
Ligne 145: Ligne 146:
 pw-metadata -n settings 0 clock.force-quantum <​buffersize>​ pw-metadata -n settings 0 clock.force-quantum <​buffersize>​
 </​code>​ </​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 41000Hz48000Hz, ou 96000Hz.((Sachant ​que l'​oreille humaine n'​entend pas de fréquence supérieure à 20000Hz.)) +  * Remplacer ''<​samplerate>''​ par la fréquence d’échantillonnage désirée. Plus cette taille est élevée meilleure est la qualité ​(théorique), plus courte ​est la latence, mais plus haute est la consommation CPU. Les interfaces audio utilisent généralement des fréquences de 41000 Hz48000 Hz, ou 96000 Hz48000 Hz est généralement une valeur correcte, sachant ​que l'​oreille humaine n'​entend pas de fréquence supérieure à 20000 Hz.((Les valeurs supérieures sont principalement des arguments //​marketing//​.)) 
-  * Remplacer ''<​buffersize>''​ par la taille de tampon (en nombre de //​samples//​). Cette valeur doit être une puissance de 2. +  * Remplacer ''<​buffersize>''​ par la taille de tampon (en nombre de //​samples//​). Cette valeur doit être une puissance de 2. Plus cette taille est réduite, plus courte est la latence, mais plus haute est la consommation CPU (pas d'​impact sur la qualité). Si on ne traite pas d'​audio en temps réel (simple lecture [[:​multimédia]]),​ une valeur de 2048 samples sera très confortable pour le processeur (au détriment d'une latence de 64 ms à 48 kHz).\\ ​''​quantum''​ correspond ici à la taille de tampon (qu'on appelle généralement plutôt //​buffer//​).
-''​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>​ <​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 :+Par exemple, pour une fréquence d’échantillonnage de 48000 Hz et un tampon de 256 samples :
 <​code>​ <​code>​
 pw-metadata -n settings 0 clock.force-rate 48000 pw-metadata -n settings 0 clock.force-rate 48000
Ligne 290: Ligne 290:
   * La commande <​code>​wpctl status</​code>​ donne un aperçu général de la configuration audio.\\ Chaque élément audio ou vidéo (matériel ou logiciel) est précédé d'un numéro qu'on peut utiliser comme identifiant (//ID//). On peut utiliser cet //ID// pour obtenir une description détaillée d'un élément précis de la manière suivante : <​code>​wpctl inspect ID</​code>​   * La commande <​code>​wpctl status</​code>​ donne un aperçu général de la configuration audio.\\ Chaque élément audio ou vidéo (matériel ou logiciel) est précédé d'un numéro qu'on peut utiliser comme identifiant (//ID//). On peut utiliser cet //ID// pour obtenir une description détaillée d'un élément précis de la manière suivante : <​code>​wpctl inspect ID</​code>​
  
-  * 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  +==== Craquements,​ "​hachage"​ ==== 
-pw-top]]))+ 
 +En cas de défauts ​audio comme des craquements ​ou des coupures intermittentes, 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]])) 
 + 
 +On peut généralement remédier au problème en réduisant la fréquence d'​échantillonnage (//sample rate//) et la taille du tampon (//buffer size// ou //​quantum//​),​ comme indiqué dans le chapitre //​[[#​Optimisation]]//​.
  
 ==== Delay Bluetooth ==== ==== Delay Bluetooth ====
Ligne 301: Ligne 304:
  
 À cette fin on peut trouver des informations au chapitre //Delay// de [[https://​docs.pipewire.org/​page_module_filter_chain.html#​Delay|la documentation]] en anglais.\\ À cette fin on peut trouver des informations au chapitre //Delay// de [[https://​docs.pipewire.org/​page_module_filter_chain.html#​Delay|la documentation]] en anglais.\\
-Une autre possibilité peut-être plus simple (mais plus lourde) est d'​ajouter un [[mao#​effets|effet]] [[:​jackd|JACK]] ou [[:LV2]] qui propose ce genre de chose dans la chaîne audio (un //​[[wpfr>​Delay_(effet)|delay]]//​ sans //​feedback//​ et 100% //wet// - sans signal source).+Une autre possibilité peut-être plus simple (mais plus lourde) est d'​ajouter un [[:mao#​effets|effet]] [[:​jackd|JACK]] ou [[:LV2]] qui propose ce genre de chose dans la chaîne audio (un //​[[wpfr>​Delay_(effet)|delay]]//​ sans //​feedback//​ et 100% //wet// - sans signal source).
  
 ===== Voir aussi ===== ===== Voir aussi =====
  • pipewire.1759837468.txt.gz
  • Dernière modification: Le 07/10/2025, 13:44
  • par krodelabestiole
  • Actuellement bloqué par: 216.73.216.153,10.42.2.254