{"id":812,"date":"2021-07-09T20:02:54","date_gmt":"2021-07-09T18:02:54","guid":{"rendered":"https:\/\/crudelis.fr\/site\/sblog\/?p=812"},"modified":"2021-07-09T20:08:35","modified_gmt":"2021-07-09T18:08:35","slug":"son-haute-fidelite-sur-linux-avec-pulseaudio","status":"publish","type":"post","link":"https:\/\/crudelis.fr\/site\/sblog\/2021\/07\/son-haute-fidelite-sur-linux-avec-pulseaudio\/","title":{"rendered":"Son haute fid\u00e9lit\u00e9 sur Linux avec PulseAudio"},"content":{"rendered":"\n<p>Dans le cadre de mon <a rel=\"noreferrer noopener\" href=\"https:\/\/crudelis.fr\/site\/sblog\/2021\/03\/un-media-center-htpc-dans-mon-salon\/\" target=\"_blank\">HTPC<\/a>, je me suis heurt\u00e9 \u00e0 la qualit\u00e9 audio d\u00e9livr\u00e9e par PulseAudio dans sa configuration initiale.<br>En effet, la configuration par d\u00e9faut d\u00e9livre un son adapt\u00e9 \u00e0 des enceintes bas de gamme d'ordinateur, ce qui permet de ne pas exiger des performances trop gourmandes au processeur alors que dans la majeure partie des cas ce n'est pas n\u00e9cessaire.<\/p>\n\n\n\n<p>Un HTPC n'est toutefois pas un cas d'usage standard, et je souhaite obtenir une qualit\u00e9 optimale en accord avec les sources utilis\u00e9es.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Bien que la r\u00e9ponse la plus courante soit de se d\u00e9barrasser de PulseAudio pour utiliser seulement ALSA, je n'ai jamais trouv\u00e9 d'explication rationnelle \u00e0 cela. Except\u00e9 une latence suppl\u00e9mentaire ajout\u00e9e par PulseAudio, ce qui est \u00e9vident \u00e9tant donn\u00e9 qu'il se comporte comme une couche suppl\u00e9mentaire.<br>En revanche utiliser ALSA directement est une source de complication dont je pr\u00e9f\u00e8re me passer...<\/p><\/blockquote>\n\n\n\n<p>L'essentiel de la configuration de PulseAudio se fait via le fichier <code>\/etc\/pulse\/daemon.conf<\/code><\/p>\n\n\n\n<p>On peut afficher la configuration actuelle de PulseAudio avec l'argument <code>--dump-conf<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pulseaudio --dump-conf<\/code><\/pre>\n\n\n\n<p>Pour modifier cette configuration, nous allons ajouter notre propre configuration \u00e0 la fin du fichier <code>\/etc\/pulse\/daemon.conf<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Audiophile setting\ndefault-sample-format = s24le\ndefault-sample-rate = 48000\nresample-method = soxr-vhq\navoid-resampling = true\nremixing-use-all-sink-channels = no\nremixing-produce-lfe = no\nremixing-consume-lfe = no\nhigh-priority = yes\nnice-level = -11\nrealtime-scheduling = yes\nrealtime-priority = 5<\/code><\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Apr\u00e8s toute modification de la configuration de PulseAudio, il est n\u00e9cessaire de le red\u00e9marrer:<\/p><p><code>pulseaudio -k; sleep 2; pulseaudio --start<\/code><\/p><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"default-sample-format\"><strong>default-sample-format<\/strong><\/h3>\n\n\n\n<p>Consid\u00e9rant que PulseAudio va se charger de d\u00e9coder le signal audio, qui est, le plus souvent, encod\u00e9 dans un format audio, que ce soit mp3, wma ou de pr\u00e9f\u00e9rence flac, Dolby ou DTS, PulseAudio doit d\u00e9finir la taille allou\u00e9e au codage de chaque \u00e9chantillon au format PCM qui sera produit.<\/p>\n\n\n\n<p>Le principe est simple, plus la taille allou\u00e9e est importante, plus le codage de la quantification est fin et pr\u00e9cis. Mais plus la taille allou\u00e9e est importante plus il impactera la m\u00e9moire et le processeur.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Il est ici question de la quantification de l'\u00e9chantillon, soit la pr\u00e9cision sur l'axe vertical de la sinuso\u00efde du signal.<\/p><p>En terme purement audio, il s'agit de la plage dynamique.<\/p><\/blockquote>\n\n\n\n<p>PulseAudio supporte un certain nombre de formats pour les \u00e9chantillons, qui sont indiqu\u00e9s sur cette <a rel=\"noreferrer noopener\" href=\"https:\/\/www.freedesktop.org\/wiki\/Software\/PulseAudio\/Documentation\/User\/SupportedAudioFormats\/\" target=\"_blank\">page<\/a>.<br>Dans le cas d'un processeur performant, et consid\u00e9rant que nous recherchons un son optimal, nous ferons le choix du format le plus pr\u00e9cis, accept\u00e9 par la carte son, le s24.<\/p>\n\n\n\n<p>Toutefois, PulseAudio supporte plusieurs formats s24, diff\u00e9renci\u00e9s par le <a rel=\"noreferrer noopener\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Boutisme\" target=\"_blank\">byte order<\/a> support\u00e9 par le processeur.<br>Pour choisir, il faut conna\u00eetre le byte order utilis\u00e9 par le processeur install\u00e9.<br>Cette commande indiquera le byte order \u00e0 choisir:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>lscpu | grep 'Byte Order'<\/code><\/pre>\n\n\n\n<p>Enfin, pour conna\u00eetre les formats accept\u00e9 par la carte son, nous disposons de cette commande, qui va afficher les capacit\u00e9s des cartes sons install\u00e9es.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat \/proc\/asound\/card?\/codec* | grep -E \"Codec|bits\"<\/code><\/pre>\n\n\n\n<p>Ainsi que celle-ci pour conna\u00eetre les formats accept\u00e9 sur les port HDMI utilis\u00e9s, le cas \u00e9ch\u00e9ant.<\/p>\n\n\n\n<pre id=\"block-d49389f7-3a5e-4604-8092-04c178ad1bef\" class=\"wp-block-code\"><code>cat \/proc\/asound\/card?\/eld* | grep -E \"bits\"<\/code><\/pre>\n\n\n\n<p>Il est inutile d'utiliser un format plus grand que celui support\u00e9 par la carte son utilis\u00e9e, il se verrait r\u00e9duit, entra\u00eenant une surcharge de travail superflue.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Par d\u00e9faut, PulseAudio utilise un format 16 bits sign\u00e9 (s16le), la qualit\u00e9 CD.<\/p><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"default-sample-rate\"><strong>default-sample-rate<\/strong><\/h3>\n\n\n\n<p>Le sample rate est le pendant du sample format, alors que le second concerne la taille verticale de l'\u00e9chantillon, le premier concerne le nombre d'\u00e9chantillons par seconde, donc la taille horizontale (la dur\u00e9e) de l'\u00e9chantillon.<\/p>\n\n\n\n<p>\u00c0 l'inverse de sample format, le sample rate a tout int\u00e9r\u00eat \u00e0 \u00eatre le plus petit possible.<br>En effet, une seule valeur \u00e9tant possible pour chaque \u00e9chantillon, pour obtenir d'avantage de finesse il faut multiplier les \u00e9chantillons.<\/p>\n\n\n\n<p>Ce param\u00e8tre concerne toutefois l\u2019\u00e9chantillonnage par d\u00e9faut, celui sous lequel PulseAudio ne descendra pas.<\/p>\n\n\n\n<p>Il faut consid\u00e9rer que l\u2019\u00e9chantillonnage le plus courant est 44.1kHz, soit 44100 \u00e9chantillons par seconde.<br>Je choisis personnellement d'utiliser 48kHz par d\u00e9faut, ce qui conduit \u00e0 une l\u00e9g\u00e8re extrapolation des sources \u00e0 44.1kHz sans repr\u00e9senter une charge de travail trop importante.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Il est \u00e0 noter qu'il serait plus juste de choisir un \u00e9chantillonnage par d\u00e9faut de 44.1kHz, puisque \u00e9tant le plus r\u00e9pandu.<br>Mais, \u00e0 mon oreille, l'\u00e9chantillonnage extrapol\u00e9 \u00e0 48kHz produit un son de meilleur qualit\u00e9.<\/p><\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Par d\u00e9faut, PulseAudio utilise un \u00e9chantillonnage de 44.1kHz par d\u00e9faut et 48kHz en choix alternatif.<\/p><p>Toutefois, nous verrons par la suite que PulseAudio, par d\u00e9faut, n'autorise en r\u00e9alit\u00e9 que ces \u00e9chantillonnages, soit 44.1 soit 48 et resample tout ce qui ne correspond pas.<\/p><\/blockquote>\n\n\n\n<p>Il est important \u00e9galement de ne pas choisir un \u00e9chantillonnage plus important que les capacit\u00e9s de la carte son utilis\u00e9e.<br>Cette information peut \u00eatre obtenue avec les commandes suivantes<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cat \/proc\/asound\/card?\/codec* | grep -E \"Codec|rate\"\ncat \/proc\/asound\/card?\/eld* | grep -E \"coding|rates\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"resample-method\"><strong>resample-method<\/strong><\/h3>\n\n\n\n<p>Ce param\u00e8tre permet de choisir l'algorithme \u00e0 utiliser pour le r\u00e9-\u00e9chantillonnage lorsque c'est n\u00e9cessaire.<\/p>\n\n\n\n<p>La commande suivante permet de conna\u00eetre les diff\u00e9rents algorithmes disponible:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pulseaudio --dump-resample-methods<\/code><\/pre>\n\n\n\n<p>Encore une fois, l'objectif \u00e9tant la qualit\u00e9 audio, nous choisirons l'algorithme le plus performant en terme de qualit\u00e9 audio, le <code>soxr-vhq<\/code>.<br>Il est aussi le plus exigeant sur le processeur, mais c'est tout \u00e0 fait n\u00e9gligeable sur un processeur moderne.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Par d\u00e9faut, PulseAudio utilise l'algorithme speex-float-1, qui est rapide mais peu pr\u00e9cis.<\/p><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"avoid-resampling\"><strong>avoid-resampling<\/strong><\/h3>\n\n\n\n<p>Un param\u00e8tre essentiel, qui fonctionne de paire avec <code>default-sample-rate<\/code>.<br>Configurer <code>avoid-resampling<\/code> \u00e0 <code>yes<\/code> permet \u00e0 PulseAudio de ne pas r\u00e9-\u00e9chantillonner la source si ce n'est pas n\u00e9cessaire.<\/p>\n\n\n\n<p>Par pas n\u00e9cessaire, il faut comprendre qu'avec ce param\u00e8tre activ\u00e9, PulseAudio ne r\u00e9-\u00e9chantillonnera pas les sources d\u00e8s lors qu'elles sont sup\u00e9rieures ou \u00e9gales \u00e0 la valeur de <code>default-sample-rate<\/code>.<\/p>\n\n\n\n<p>Ce param\u00e8tre permet donc de jouer les sons \u00e9chantillonn\u00e9s \u00e0 96, 192 voir 384kHz sans les d\u00e9t\u00e9riorer. C'est un param\u00e8tre essentiel !<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Par d\u00e9faut, PulseAudio n'utilise pas ce param\u00e8tre, donc toutes les sources sont r\u00e9duite \u00e0 48kHz au maximum par d\u00e9faut.<\/p><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"remixing-use-all-sink-channels\"><strong>remixing-use-all-sink-channels<\/strong><\/h3>\n\n\n\n<p>Ce param\u00e8tre indique \u00e0 PulseAudio si il doit remixer les sources pour les faire correspondre au mapping actuel de la sortie audio.<br>En plus concret, ce param\u00e8tre permet de upmixer les sources st\u00e9r\u00e9o en surround, dans le cas d'une sortie 5.1, 7.1 ou plus. Ou au contraire de downmixer une source surround en st\u00e9r\u00e9o le cas \u00e9ch\u00e9ant.<\/p>\n\n\n\n<p>Dans le cas d'une installation surround, cela revient \u00e0 d\u00e9truire l'image st\u00e9r\u00e9o originale de la musique et produire le son sur toutes les enceintes.<\/p>\n\n\n\n<p>La question du mapping des canaux est bien mieux g\u00e9r\u00e9e par un ampli Hi-Fi.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Par d\u00e9faut, PulseAudio a ce param\u00e8tre r\u00e9gl\u00e9 sur <code>yes<\/code>.<\/p><\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Un cas d'usage de ce param\u00e8tre est toutefois le cas de sons d'ambiance st\u00e9r\u00e9o simul\u00e9s en surround par des algorithmes de type Dolby Surround, DTS Neural:X and DTS Virtual:X.<br>Cela reste toutefois un cas d'usage tr\u00e8s sp\u00e9cifique !<\/p><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"remixing-produce-lfe-et-remixing-consume-lfe\"><strong>remixing-produce-lfe et remixing-consume-lfe<\/strong><\/h3>\n\n\n\n<p><code>remixing-produce-lfe<\/code> est utilis\u00e9 pour cr\u00e9er un canal LFE (Low Frequency Effects) sur une source qui n'en dispose pas.<br>En somme, ce param\u00e8tre permet de cr\u00e9er un canal pour le caisson de basse \u00e0 partir d'une source qui n'en disposerais pas.<\/p>\n\n\n\n<p>Il y a peu de cas d'usage de ce param\u00e8tre, le caisson de basse \u00e9tant en g\u00e9n\u00e9ral pris en charge par l'ampli Hi-Fi ou disposant de son propre filtre passe-bas.<\/p>\n\n\n\n<p>Le param\u00e8tre <code>remixing-consume-lfe<\/code> effectue l'inverse en remixant le canal LFE dans les autres canaux.<br>Ce param\u00e8tre peut \u00eatre utile dans le cas d'un d\u00e9faut de transmission du canal LFE ou l'absence de caisson de basse, tel que d\u00e9crit dans <a rel=\"noreferrer noopener\" href=\"https:\/\/crudelis.fr\/site\/sblog\/2021\/04\/downmix-5-1-vers-5-0-avec-pulseaudio\/\" target=\"_blank\">Downmix 5.1 vers 5.0 avec PulseAudio<\/a>.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Par d\u00e9faut, ces 2 param\u00e8tres sont d\u00e9sactiv\u00e9s.<\/p><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"high-priority-nice-level-realtime-scheduling-et-realtime-priority\"><strong>high-priority, nice-level, realtime-scheduling et realtime-priority<\/strong><\/h3>\n\n\n\n<p>Ces param\u00e8tres, que j'ai personnellement choisi de laisser dans leur valeur par d\u00e9faut, concerne la priorit\u00e9 d'ex\u00e9cution de PulseAudio.<\/p>\n\n\n\n<p>Utiliser <code>high-priority<\/code> \u00e0 <code>yes<\/code> permet de changer la priorit\u00e9 de PulseAudio en appliquant le niveau de <a rel=\"noreferrer noopener\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Nice_(Unix)\" target=\"_blank\" data-type=\"URL\" data-id=\"https:\/\/fr.wikipedia.org\/wiki\/Nice_(Unix)\">niceness<\/a> de l'option <code>nice-level<\/code>.<br>Cela permet \u00e0 PulseAudio d'avoir un acc\u00e8s prioritaire sur le processeur par rapport \u00e0 d'autres processus moins importants.<\/p>\n\n\n\n<p>Quand \u00e0 <code>realtime-scheduling<\/code>, il permet \u00e0 PulseAudio d'utiliser l'ordonnanceur (scheduler) CPU temps r\u00e9el SCHED_FIFO. Cela permet \u00e0 PulseAudio de disposer d'un traitement temps r\u00e9el de ses requ\u00eates par le processeur en outrepassant la pile de requ\u00eates envoy\u00e9es par les autres processus.<br><code>realtime-priority<\/code> est la priorit\u00e9 des requ\u00eates de PulseAudio dans l'ordonnanceur SCHED_FIFO par rapport aux autres requ\u00eates pr\u00e9sentes dans cet ordonnanceur.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Par d\u00e9faut, PulseAudio est param\u00e9tr\u00e9 pour travailler en temps r\u00e9el avec des valeurs de priorit\u00e9s qui permettent de ne pas empi\u00e9ter sur les processus vitaux du syst\u00e8me.<\/p><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"tsched\"><strong>tsched=0<\/strong><\/h3>\n\n\n\n<p>Cet argument, <code>tsched=0<\/code>, est omnipr\u00e9sent sur internet d\u00e8s lors qu'on se plaint de craquements ou de d\u00e9fauts dans le son produit par PulseAudio.<br>Pourtant le probl\u00e8me peut \u00eatre plut\u00f4t \u00e0 chercher du c\u00f4t\u00e9 de l'\u00e9conomie d'\u00e9nergie, comme expliqu\u00e9 dans <a href=\"https:\/\/crudelis.fr\/site\/sblog\/2021\/03\/un-media-center-htpc-dans-mon-salon\/#Lorsque-le-son-nest-pas-utilise-le-HTPC-produit-daffreux-bruits\" data-type=\"URL\" data-id=\"https:\/\/crudelis.fr\/site\/sblog\/2021\/03\/un-media-center-htpc-dans-mon-salon\/#Lorsque-le-son-nest-pas-utilise-le-HTPC-produit-daffreux-bruits\" target=\"_blank\" rel=\"noreferrer noopener\">Lorsque le son n\u2019est pas utilis\u00e9, le HTPC produit d\u2019affreux bruits<\/a>.<\/p>\n\n\n\n<p><code>tsched<\/code> signifie timer-based scheduling, c'est la m\u00e9thode de buffering utilis\u00e9 par PulseAudio pour transmettre les \u00e9chantillons audio \u00e0 la carte son.<br>Comme expliqu\u00e9 par <a rel=\"noreferrer noopener\" href=\"http:\/\/0pointer.de\/blog\/projects\/pulse-glitch-free.html\" target=\"_blank\">Lennart Poettering<\/a>, le d\u00e9veloppeur \u00e0 l'origine de cet algorithme, cette m\u00e9thode de buffering permet de travailler sur des \u00e9chantillons de taille variable, en fonction du comportement de la carte son, de la latence observ\u00e9e et du comportement de la source.<\/p>\n\n\n\n<p>Le timer-based scheduling remplace la m\u00e9thode par interruptions (<a rel=\"noreferrer noopener\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Interruption_mat%C3%A9rielle\" target=\"_blank\">IRQ<\/a>), beaucoup moins flexible car bas\u00e9e sur des tailles d'\u00e9chantillons fixes.<\/p>\n\n\n\n<p>Ajouter <code>tsched=0<\/code> sur un module de PulseAudio revient \u00e0 lui demander de ne pas travailler avec la m\u00e9thode timer-based scheduling mais d'utiliser \u00e0 la place la m\u00e9thode par interruptions.<br>Raison pour laquelle je d\u00e9conseille l'usage de cet argument.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Par d\u00e9faut, PulseAudio utilise le bufferring de type timer-based scheduling.<\/p><\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"default-fragments-et-default-fragment-size-msec\"><strong>default-fragments et default-fragment-size-msec<\/strong><\/h3>\n\n\n\n<p>Ces 2 param\u00e8tres ne sont utilis\u00e9s qu'avec la m\u00e9thode de buffering par interruptions.<\/p>\n\n\n\n<p><code>default-fragments<\/code> correspond au nombre de fragments \u00e0 envoyer \u00e0 la carte son. <code>default-fragment-size-msec<\/code> correspond \u00e0 la taille, en millisecondes, de chaque fragment.<\/p>\n\n\n\n<p>Il est difficile de param\u00e9trer correctement la taille de buffer, car celle-ci se fait en millisecondes, or le m\u00eame son en 16b\/44kHz ne fait pas la m\u00eame taille que son homologue en 24b\/192kHz pour la m\u00eame dur\u00e9e.<br>D\u00e8s lors, si la valeur par d\u00e9faut de 100ms fonctionne parfaitement pour une source 44kHz, il produit des craquements pour une source 192kHz.<\/p>\n\n\n\n<p>R\u00e9duire le dur\u00e9e du buffer permet d'am\u00e9liorer le rendu des sources 192kHz, mais produira des d\u00e9fauts pour les sources 44kHz.<br>R\u00e9duire la dur\u00e9e du buffer augmente \u00e9galement le nombre d'interruptions et donc la charge processeur.<\/p>\n\n\n\n<p>Globalement, il est pr\u00e9f\u00e9rable de ne pas utiliser ce mode de buffering et de garder le mode timer-based scheduling utilis\u00e9 par d\u00e9faut.<br>Si toutefois vous souhaitez utiliser ce mode de buffering, il faudra chercher la valeur la plus ad\u00e9quat pour votre mat\u00e9riel et les sources utilis\u00e9es.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Attention, contrairement \u00e0 ce qu'on peut parfois lire, <code>device.buffering.buffer_size<\/code> et <code>device.buffering.fragment_size<\/code> ne donne pas la taille de buffer accept\u00e9e par la carte son ! Seulement la taille actuelle de buffer utilis\u00e9e par PulseAudio.<\/p><\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Par d\u00e9faut, PulseAudio n'utilise pas ces param\u00e8tres.<br>Toutefois, ils sont pr\u00e9sent et par d\u00e9faut r\u00e9gl\u00e9s sur 4 fragments de 25ms. Soit 100ms.<\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Dans le cadre de mon HTPC, je me suis heurt\u00e9 \u00e0 la qualit\u00e9 audio d\u00e9livr\u00e9e par PulseAudio dans sa configuration initiale.En effet, la configuration par d\u00e9faut d\u00e9livre un son adapt\u00e9 \u00e0 des enceintes bas de gamme d'ordinateur, ce qui permet de ne pas exiger des performances trop gourmandes au processeur alors que dans la majeure [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[48],"tags":[],"class_list":["post-812","post","type-post","status-publish","format-standard","hentry","category-htpc"],"_links":{"self":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/posts\/812","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/comments?post=812"}],"version-history":[{"count":8,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/posts\/812\/revisions"}],"predecessor-version":[{"id":899,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/posts\/812\/revisions\/899"}],"wp:attachment":[{"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/media?parent=812"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/categories?post=812"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/crudelis.fr\/site\/sblog\/wp-json\/wp\/v2\/tags?post=812"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}