Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Linux, Pulseaudio, Alsa et fréquence d'échantillonnage
#1
Bonjour,

L'objet de ce post est double :
  • mieux comprendre le fonctionnement de mon installation
  • l'améliorer.
Mes recherches se sont avérées infructueuses sur plusieurs points et je m'excuse si je pose une question dont la réponse est facile à trouver. Les informations sont très décentralisées et j'aimerais acquérir quelques certitudes.

Voici un aperçu de ma configuration :
  • un ordinateur sous GNU/Linux (Debian Jessie)
  • un chipset Realtek ALC892
  • un ampli Marantz PM6005
  • une connexion optique (S/PDIF) entre les deux
  • des enceintes Bronze BX5
J'ai commencé à sérieusement m'interroger sur le fonctionnement de l'ensemble lorsque j'ai voulu lire de l'audio encodé sur 24 bits avec des fréquences d'échantillonnage supérieures à 44100 Hz. C'est toujours mon but, mais je voudrais également m'assurer que mes FLAC en 16 bits / 44.1 MHz ne sont pas ré-échantillonnés inutilement.
 
Je mets tout à l'affirmatif pour vous montrer ce que je crois avoir compris, mais je vous serais très reconnaissant de corriger mes approximations et erreurs. Dans l'ordre :

1. le FLAC contient une piste PCM compressée sans perte.

2. Le lecteur extrait donc un PCM intact (en gros, le lecteur se contente de dézipper)

3. Pulseaudio ré-échantillone systématiquement tous les flux (96 KHz => 44.1 KHZ, mais aussi 44.1 KHz => 44.1 KHz) car c'est un serveur de son et son rôle est de regrouper tous les flux audios en un flux unique (du PCM ?) "digérable" par Alsa.

4. Alsa prend le relai et envoie ce flux unique (toujours du PCM) :
    - soit vers la carte son pour qu'il soit transformé en analogique (si nous étions connectés via les prises Jack). La carte son fait alors office de DAC.
    - soit directement à la prise S/PDIF. Il est dans ce cas conservé intact, c'est ce qui nous intéresse.

6. Le DAC du Marantz PM6005 (un chipset Cirrus Logic CS4398) transforme ce flux PCM en un flux analogique qui est distribué aux enceintes.

Je me pose un certain nombre de questions :
  • le FLAC contient-il un PCM compressé standard qui pourrait théoriquement être envoyé au DAC du Marantz sans subir aucune altération ?
  • Dans ce cas, peut-on envisager l'hypothèse où l'on pourrait envoyer directement le flux PCM du FLAC vers le DAC Marantz, en évitant tout ré-échantillonnage, et donc sans aucune perte ? Cela signifierait qu'avec une sortie S/PDIF, peu importe la carte son, on peut sortir un signal numérique totalement identique à la source ?
  • J'ai lu deux ou trois choses sur la notion de jitter. Outre le fait que je comprends mal comment on peut appliquer ce concept à du numérique, j'imagine que la question est peu pertinente à mon niveau ?
  • Il me semble que Pulseaudio ré-échantillonne tout. Peut-on lui dire de ne pas ré-échantillonner quand il s'agit de tel logiciel (même si cela coupe le son des autres). Ou faut-il obligatoirement demander au lecteur d'accéder directement à Alsa ?
J'ai lu qu'une méthode consistait à demander au lecteur (Audacious par exemple) d'utiliser directement Alsa en choisissant, dans les options, d'accéder au DAC sans aucun échantillonnage. Dans mon cas, le DAC ne figure pas dans la liste car je passe par la prise S/PDIF.

J'ai l'option (toujours dans Audacious en ayant choisi la sortie Alsa) :
"ALC892 Digital: Direct hardware device without any conversions"
mais rien ne sort. La seule sortie intitulée "Digital" qui me sort quelque chose indique "with all software conversions".

Bon ... je crois que j'ai pondu un sacré pavé, pas trop indigeste je l'espère. Pour résumer, mon but est de transmettre aussi fidèlement que possible le contenu de mon FLAC à mon DAC Marantz. Et donc de repérer ce qui pourrait l'altérer (lecteur Audacious, Pulseaudio, Alsa, ...).

Merci beaucoup pour votre aide !
Répondre
#2
Il me semble que c'est plus simple d'utiliser seulement alsa.

Avec pulseaudio, on peut passer 24/96 en adaptant sa config /etc/pulse/daemon.conf (lire sa page de manuel pour les détailles avec la commande : man pulse-daemon.conf).
Par exemple :
resample-method = src-sinc-best-quality
default-sample-format = s24le
default-sample-rate = 96000
alternate-sample-rate = 44100
Répondre
#3
Merci pour ta réponse !

J'ai configuré pulseaudio comme tu l'indiques.

J'en ai profité pour me familiariser davantage avec les différentes options, notamment concernant l'échantillonnage (ce passage en bleu car il n'est là qu'à titre informatif) :
L'existence de deux options pour l'échantillonnage (default-sample-rate et alternate-sample-rate) semble bien pratique. Pulseaudio pourra passer de l'une à l'autre selon la source (dans la mesure où il n'est pas déjà en train de lire un autre flux). On notera au passage que les algorithmes d'échantillonnage produisent un meilleur résultat si l'on multiplie ou divise le taux par un chiffre rond (48/96/192 KHz ou 44.1/88.2 KHz par exemple). Logique.
Il en ressort qu'il est particulièrement intéressant de mettre des "multiples" différents pour default-sample-rate et alternate-sample-rate.

Par exemple :

default-sample-rate = 96000
alternate-sample-rate = 88200

ou

default-sample-rate = 48000
alternate-sample-rate = 44100

Une fois Pulseaudio bien configuré, j'obtiens un résultat sonore identique (me semble-t-il) en configurant Audacious sur la sortie Alsa ou Pulseaudio. Mais pas toujours. Il m'est arrivé plusieurs fois que la sortie Pulseaudio produise un son étouffé avec une spatialisation assez étrange, même après avoir fermé les autres applications susceptibles de produire du son.
J'utilise donc la sortie Alsa pour être tranquille.

Il me reste trois questions (il y a du progrès Wink ) :
  • pourquoi est-ce que j'observe, aléatoirement, une telle chute de qualité en passant sur Pulseaudio ? Même dans un mauvais scénario (44.1 MHz converti en 48 Mhz car Pulseaudio est "bloqué" sur le second), le changement devrait être très, très léger ... non ?
  • comment être certain qu'Alsa ne ré-échantillonne pas ? Je ne trouve pas de /etc/asound.conf sur Debian Jessie. J'ai l'impression que tout passe par Pulseaudio ... Du coup comment Alsa est-il configuré par défaut ? Je ne voudrais pas casser l'articulation Alsa/pulseaudio en modifiant ce qui n'a pas vocation à l'être.
  • La seule sortie digitale produisant du son quand on passe directement par Alsa (en tout cas sur Audacious) est celle indiquant "with all software conversions" (le choix "without any conversion" donne un message d'erreur). Le "all software conversions" m'inquiète, mais peut-être à tort ? Comment configurer une sortie digitale "directe" et propre ?
Répondre
#4
(05-11-2016, 03:40 PM)Ophrys a écrit :
  • comment être certain qu'Alsa ne ré-échantillonne pas ? Je ne trouve pas de /etc/asound.conf sur Debian Jessie.

Salut,

Et celui-ci ? (dans le répertoire utilisateur Smile

~/.asoundrc




Je ne sais pas si ce lien peut t'aider...

http://alsa.opensrc.org/DigitalOut

http://unix.stackexchange.com/questions/...sound-conf

http://situsavaislinux.blogspot.fr/2011/...o-par.html
Répondre
#5
Salut,

Ton post m'a mis la puce à l'oreille, je pensais utiliser Alsa depuis le début mais en fait non. Je continuais à utiliser Pulse et pensais que mon ampli était limité...

J'ai finalement simplement viré Pulse :
sudo apt-get autoremove pulseaudio

Installé l'interface Alsa :
sudo apt-get install gnome-alsamixer

Et reparamétré ma carte son en sortie de jriver pour le son / vlc pour les video
Et là, magie de la technologie, maintenant l'ampli switch bien du 16bits/44.1khz au 24bits/192khz

"Petit à petit, on devient moins petit..." :O
Répondre
#6
Merci pour vos conseils ! Désolé d'avoir été long à répondre, je voulais être sûr d'avoir tout intégré avant. Et comme c'est venu petit à petit, le temps est passé.

J'ai lu en détail les différents liens et étudié les exemples de configurations. J’ai choisi de conserver PulseAudio (qui peut être bien pratique pour un système multimédia polyvalent) et d’accéder à Alsa via Audacious pour la lecture de mes fichiers Flac.

Audacious est configuré sur Alsa/plughw (et non hw qui ne marche pas) mais la lecture de vos liens m’a rassuré car plughw ne mixe pas nécessairement. Sur Audacious, on peut sélectionner hw1 en sous-option.

La sortie de cat /proc/asound/card1/pcm1p/sub0/hw_params (à adapter selon la configuration) me confirme que le taux est bon.
Je n'observe aucune utilisation du processeur suggérant un rééchantillonnage quelconque.

C'est déjà pas mal ...



Sinon, on a vu qu’on pouvait indiquer deux fréquences à PulseAudio, afin qu’il puisse basculer de l’une à l’autre sans rééchantillonner. J’ai donc mis 44.1 et 48 KHz. Vu que les autres fréquences (88.2 - 96 - 192) passent forcément par Audacious, on limite fortement les risques de rééchantillonnage.

Les inconvénients de PulseAudio dans ce cas :
  • Il peut rester bloqué sur l’une des deux fréquence - un logiciel en pause par exemple - et forcer un rééchantillonnage du type 44.1 => 48. 
  • Afin de pouvoir mixer, même sans rééchantillonnage, il « traite » le son. Mais le paramètre resample-method = src-sinc-best-quality limite au maximum la casse.
Pour résumer :
Les + :  je garde un système multimédia polyvalent (PulseAudio) et je lis mes Flacs sont rééchantillonnage/traitement.
Les - : les quelques cas où PulseAudio ne bascule pas automatiquemet entre 44.1 et 48 Mhz + le fait que le lecteur web de Qobuz passe par PulseAudio et que sa sortie soit « traitée » (même si c’est fait proprement sans rééchantillonnage et avec l’option : resample-method = src-sinc-best-quality).

Je n’ai pas supprimé PulseAudio pour deux raisons :
  1. si je fais ça et que je configure un accès direct sans mixage vers la bonne sortie, j’imagine que j’aurai des erreurs non stop dès qu’un logiciel souhaite accéder au son.
  2. si j’utilise le mixer d’Alsa, je ne gagne rien à l'opération (au contraire, il semble que dmix soit assez mauvais).
Répondre
#7
(07-20-2016, 03:32 PM)Ophrys a écrit :  J’ai choisi de conserver PulseAudio (qui peut être bien pratique pour un système multimédia polyvalent) et d’accéder à Alsa via Audacious pour la lecture de mes fichiers Flac.

J'ai dû remettre Pulse également car le son de firefox ne passe pas sous Alsa, du coup, plus de youtube ou autres replay...

J'ai installé dernièrement Mint 18 et rebelotte, je suis obligé de virer pulse, paramétrer alsa comme il faut dans les softs audio, et remettre pulse pour que mon dac capte tout...
Bon c'est pas très compliqué mais je dois louper un truc.
Répondre
#8
J'avais utilisé firefox avec ALSA pendant très longtemps. Il me fallait installer des plugins. La situation des plugins a peut-être évolué, mais je pense que ça marche encore de cette façon.
Répondre
#9
Ouep j'ai lu ça aussi mais pas grand chose de clair et apparemment ça ne fonctionnait pas super avec le html 5

j'avais lu ça : https://bugzilla.mozilla.org/show_bug.cgi?id=803042
A la fin, ils en sont arrivés à la même conclusion que moi... Mais effectivement je vais creuser cette histoire de plugin
Répondre
#10
(07-22-2016, 09:09 AM)Olive a écrit : J'ai installé dernièrement Mint 18 et rebelotte, je suis obligé de virer pulse, paramétrer alsa comme il faut dans les softs audio, et remettre pulse pour que mon dac capte tout...
Bon c'est pas très compliqué mais je dois louper un truc.

Normalement, les différentes options d'Alsa sont disponibles dans les softs qu'on ait PulseAudio ou non. Du coup, j'ai du mal à te suivre. Qu'est-ce qui n'est pas disponible et qui n'apparaît qu'après avoir supprimé PulseAudio ? Tu ajoutes un module au passage ?
Répondre


Sujets apparemment similaires...
Sujet Auteur Réponses Affichages Dernier message
  DAC Simaudio/Moon sous Linux AlainT 6 1,334 04-10-2024, 07:01 PM
Dernier message: AlainT
  J-River et la fréquence d'échantillonnage (informatique) Vacuum 6 493 02-07-2024, 10:34 AM
Dernier message: mélaudiophile
  SSD Nvme pas reconnu sous Linux? Janacek 15 1,222 12-04-2023, 02:15 PM
Dernier message: Patatorz
Question NUC en démat + distrib Linux sisyphe 5 900 11-01-2023, 11:30 AM
Dernier message: mishelinka
  Transmission wifi et échantillonnage maximum Audrey 13 2,914 01-19-2023, 12:33 PM
Dernier message: Fredo31

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)