Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
pipewire [Le 19/05/2025, 23:56] krodelabestiole mise en forme |
pipewire [Le 20/08/2025, 22:51] (Version actuelle) mohican ajout changer la sortie son |
||
---|---|---|---|
Ligne 18: | Ligne 18: | ||
**PipeWire** est installé par défaut sur Ubuntu à partir de la version [[:jammy|Jammy 22.04.4]].\\ | **PipeWire** est installé par défaut sur Ubuntu à partir de la version [[:jammy|Jammy 22.04.4]].\\ | ||
- | Si ce n'est pas le cas, quel qu'en soit la raison, il suffit d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] ''[[apt>pipewire]]''. | + | Si ce n'est pas le cas, quelle qu'en soit la raison, il suffit d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] ''[[apt>pipewire]]''. |
On trouve aussi le paquet ''[[apt>pipewire-pulse]]''(([[:depots#sections_universe_et_multiverse_maintenues_par_les_motu|dépôt universe]] pour [[:jammy|Jammy 22.04]])) qui fournit la rétro-compatibilité pour les applications implémentant [[:PulseAudio]]. Il risque donc d'être indispensable pendant encore un certain temps... | On trouve aussi le paquet ''[[apt>pipewire-pulse]]''(([[:depots#sections_universe_et_multiverse_maintenues_par_les_motu|dépôt universe]] pour [[:jammy|Jammy 22.04]])) qui fournit la rétro-compatibilité pour les applications implémentant [[:PulseAudio]]. Il risque donc d'être indispensable pendant encore un certain temps... | ||
Ligne 129: | Ligne 129: | ||
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.\\ | 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.\\ | + | 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]].)) | 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]].)) | ||
Ligne 136: | Ligne 136: | ||
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 41000Hz, 48000Hz, ou 96000Hz.((Sachant que l'oreille humaine n'entends pas de fréquences supérieures à 20000Hz.)) | + | * 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'entend pas de fréquence supérieure à 20000Hz.)) |
* 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. | ||
''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//). | ||
Ligne 245: | Ligne 245: | ||
* 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> | * 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> | ||
+ | |||
+ | ==== Changer la sortie son avec un script ==== | ||
+ | |||
+ | Pour changer de sortie audio la syntaxe est : | ||
+ | <code>wpctl set-default ID</code> | ||
+ | où ID est le numéro de la sortie. | ||
+ | |||
+ | Ce numéro est visible dans la section "Sinks" en exécutant la commande : | ||
+ | <code>wpctl status</code> | ||
+ | Problème : ce numéro change à chaque redémarrage ! Il faut donc le récupérer via la commande grep en cherchant le nom de la sortie qui lui ne change pas. | ||
+ | |||
+ | |||
+ | Voici un exemple de script pour changer la sortie vers le HDMI (remplacer le texte entre "" par ce qui vous correspond - notez le caractère d'échappement \ ajouté devant [ et ] ) : | ||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | idhdmi=$(wpctl status | grep "Baffin HDMI/DP Audio \[Radeon RX 550 640SP / RX 560/560X\] D" | cut -c 10-12) | ||
+ | echo $idhdmi | ||
+ | wpctl set-default $idhdmi | ||
+ | exit 0 | ||
+ | </code> | ||
+ | |||
+ | Lorsque votre script est au point, vous pouvez créer un raccourci clavier personnalisé pour le lancer avec la commande | ||
+ | <code>bash nom-du-fichier-script.sh</code> | ||
===== Problèmes courants ===== | ===== Problèmes courants ===== |