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 | ||
|
mao [Le 08/10/2025, 11:49] krodelabestiole [Optimisation audio] réécriture orga doublon pipewire |
mao [Le 02/11/2025, 15:11] (Version actuelle) krodelabestiole [Optimisation audio] framerate -> sample rate / buffer -> buffer size |
||
|---|---|---|---|
| Ligne 13: | Ligne 13: | ||
| Avant tout il est important de comprendre le fonctionnement du [[:audio|son sous GNU/Linux]]. | Avant tout il est important de comprendre le fonctionnement du [[:audio|son sous GNU/Linux]]. | ||
| - | Pour résumer, les applications se connectent au **pilote** de la carte son (généralement **ALSA**, anciennement **OSS**, **FFADO** pour les cartes FireWire) via un **serveur de son** (**[[:PipeWire]]**, qui remplace avantageusement à la fois **[[:PulseAudio]]** pour le multimédia, et **[[:jackd|JACK]]** pour la MAO - ALSA dispose également de son propre serveur de son). Cela permet à plusieurs applications d'utiliser le son en même temps. | + | Pour résumer, les applications se connectent au **pilote** de la carte son (généralement **ALSA**, anciennement **OSS**, **FFADO** pour les cartes FireWire) via un **serveur de son** (par défaut sur Ubuntu : **[[:PipeWire]]**, qui remplace avantageusement à la fois **[[:PulseAudio]]** pour le multimédia, et **[[:jackd|JACK]]** pour la MAO((ALSA dispose également de son propre serveur de son rudimentaire.))). Cela permet entre autre à plusieurs applications d'utiliser le son en même temps. |
| À ce sujet **[[:PipeWire]]** (installé par défaut depuis [[:kinetic|Kinetic 22.10]]) permet d'utiliser ensemble et simultanément n'importe lesquels de ses logiciels et appareils audio. Chaque logiciel peut communiquer des flux audio à un autre, ou à une interface matérielle. On parle de **//[[pipewire#routage]]//**. Cela permet aussi bien d'envoyer le son d'un synthétiseur dans une réverbération, que de 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. | À ce sujet **[[:PipeWire]]** (installé par défaut depuis [[:kinetic|Kinetic 22.10]]) permet d'utiliser ensemble et simultanément n'importe lesquels de ses logiciels et appareils audio. Chaque logiciel peut communiquer des flux audio à un autre, ou à une interface matérielle. On parle de **//[[pipewire#routage]]//**. Cela permet aussi bien d'envoyer le son d'un synthétiseur dans une réverbération, que de 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. | ||
| Ligne 22: | Ligne 22: | ||
| 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 note d'un [[:controleurs midi|contrôleur MIDI]] par ex.), 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 note d'un [[:controleurs midi|contrôleur MIDI]] par ex.), 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 en //live// sans s'entendre en double. On estime généralement que cette durée peut être gênante pour un musicien au delà de 30 ms environ. | + | 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 en //live// sans s'entendre en double. On estime généralement que cette durée peut être gênante pour un·e musicien·ne au delà de 10 ms à 30 ms environ. |
| - | Linux intègre désormais par défaut des fonctionnalités d'optimisation pour le temps réel. Ubuntu propose aussi un noyau [[:linux-lowlatency|lowlatency]] spécifique pour optimiser les ressources dans ce cadre d'utilisation. Ce noyau ne réduira pas directement la latence, mais est censé améliorer les ressources CPU dans le cadre de cette utilisation. | + | Linux intègre désormais par défaut des fonctionnalités d'optimisation pour le temps réel. Ubuntu propose aussi un noyau //[[:linux-lowlatency|lowlatency]]// spécifique. Ce noyau ne réduira pas directement la latence, mais est censé améliorer les ressources CPU dans le cadre de cette utilisation. |
| - | La manière de réduire cette durée consiste à ajuster la **taille du tampon** (appelée **//buffer//** en anglais, ou //quantum// chez [[:PipeWire]]) et la **fréquence d'échantillonnage** (**//sample rate//**). Pour cela, voir le chapitre //[[:pipewire#optimisation]]// sur la documentation [[:PipeWire]].\\ | + | La manière de réduire cette durée consiste à ajuster la **taille du tampon** (appelée **//buffer size//** en anglais, ou //quantum// chez [[:PipeWire]]) et la **fréquence d'échantillonnage** (**//sample rate//**). Pour la pratique, voir le chapitre //[[:pipewire#optimisation]]// sur la documentation [[:PipeWire]].\\ |
| Les réglages permettant un temps de latence court se font au détriment des ressources processeurs qui sont plus sollicitées. Si le processeur est surchargé, cela se traduit au niveau sonore par des hachures ou des craquements audibles appelés //[[https://alsa.opensrc.org/Xruns|Xruns]]//.\\ | Les réglages permettant un temps de latence court se font au détriment des ressources processeurs qui sont plus sollicitées. Si le processeur est surchargé, cela se traduit au niveau sonore par des hachures ou des craquements audibles appelés //[[https://alsa.opensrc.org/Xruns|Xruns]]//.\\ | ||
| - | Plus la **fréquence d'échantillonnage** (//framerate//) est élevée, meilleure est la qualité (théorique), plus courte est la latence, mais plus haute est la consommation CPU. On considère généralement qu'une valeur de 48000Hz est suffisante, sachant que l'oreille humaine n'entend pas de fréquence supérieure à 20000Hz. \\ | + | Plus la **fréquence d'échantillonnage** (//sample rate//) est élevée, meilleure est la qualité (théorique), plus courte est la latence, mais plus haute est la consommation CPU. On considère généralement qu'une valeur de 48000 Hz est suffisante, sachant que l'oreille humaine n'entend pas de fréquence supérieure à 20000 Hz. \\ |
| - | Le jeu consiste donc généralement plutôt à baisser la **taille du tampon** (//buffer// ou //quantum//) autant que nécessaire, sans surcharger le processeur. Cette valeur doit être une puissance de 2. | + | Le jeu consiste donc généralement plutôt à baisser la **taille du tampon** (//buffer size// ou //quantum//) autant que nécessaire, sans surcharger le processeur. Cette valeur doit être une puissance de 2. |
| L'utilisation d'une bonne carte son dédiée à la MAO est évidemment aussi un gros atout à ce sujet. | L'utilisation d'une bonne carte son dédiée à la MAO est évidemment aussi un gros atout à ce sujet. | ||
| - | <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 //samplerate// / //buffersize// 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> |
| ===== Multimédia ===== | ===== Multimédia ===== | ||