Et je n’étais pas fou.
Je savais bien qu’il y avait quelques fois quelque chose qui n’allait pas quand j’écoutais des trucs. Ça fait maintenant un bout de temps que j’ai dégagé toutes les sources audio pour ne laisser qu’un ordinateur dédié. Il faut dire que maintenant, le CD est obsolète, le DVD est quasi sur la paille, je ne parle même pas du vinyle qui ne se justifie que pour les collections de raretés (et encore, y a moyen de les capturer sans perte, sans poussières et sans usure). Le NAS avec toute la discothèque et DVDthèque capturées, ça c’est sympa.
Mais…
Depuis le passage à Vista et Seven, j’avais des comportements étranges. Par exemple, si je positionne l’échantillonnage à 96kHz globalement, le son pouvait comporter des distorsions énormes et des saturations incroyables si le niveau était suffisant. Depuis je me suis rendu compte qu’il restait un bruit parasite très audible dans certaines situations sans vraiment savoir d’où il venait et quand il venait.
Parallèlement, au bureau, je me suis rendu compte que j’avais une espèce de bruit qui apparaissait superposé au son sur un morceau particulier (je vous donne une opportunité de vous foutre de ma gueule, c’est sur le premier morceau de l’album de Krafwerk – Radioactivity). Bruit qui ressemblait étrangement à ce que je pouvais entendre en certaines occasions à la maison. C’est une sorte de bruit d’aliasing parasite qui se superpose aux basses d’où la facilité à l’entendre. Ce qui est plus étrange c’est qu’il est plus prononcé à gauche qu’à droite et j’avais bien aussi une impression de grésillement dans l’aigu récurent sans vraiment savoir d’où ça pouvait venir. J’avais essayé 4 cartes audio différentes, en S/PDIF, en analogique ou même au casque. Rien n’y faisait, ce n’est pas lié au matériel mais bien au système d’exploitation.
Et puis je suis tombé sur un début de logique il y a quelques jours en découvrant le problème en regardant un film alors que je ne l’avais pas rencontré depuis un certain temps. J’avais mis une carte Asus Sonar HDAV et bidouillé quelques trucs ici ou la, dont la fréquence d’échantillonnage principal qui était passée à 44.1 kHz plutôt qu’à 48 kHz habituellement. Et comme ce bruit était quand même bien audible, je repasse à 48kHz et la, paf, le défaut disparait.
Y aurait-il quelque chose de pourri dans l’algo de resampling dans Windows Vista ou Seven ? Car, tout compte fait, tous les défauts que j’ai pu entendre venaient de ça… Et bien sur, quand j’étais sous XP, je n’avais jamais rencontré quelque chose de semblable – le système dédié a son est radicalement différent depuis Vista.
Pour mieux comprendre la structure globale de la gestion du son depuis Vista, on peut trouver un schémas simplifié global sur MSDN.
Ce qui nous intéresse, c’est ce qu’il se passe dans l' »audio engine » quand on est dans le mode partagé (ce qui est la majorité des cas). Dans ce cas, tous les flux audio se dirigent vers le mixeur qui se charge de mélanger les sources (un bon point est qu’il travail en mode 32 bits flottants) et de changer les fréquences d’échantillonnage si nécessaire pour coller avec celle définie par le périphérique (c’est ce qui est disponible dans ses propriétés). Normalement, les applications ne travaillent pas en mode exclusif car les contraintes sont fortes. Seuls les logiciels pro avec des contraintes de latence tendent à utiliser ce mode.
C’est en fouillant un peu dans les docs MSDN et en cherchant un peu dans les forums de discussion Microsoft que je suis tombé sur cet article ou l’on découvre que le type a découvert le même type de défaut. Et il cite une conversation chez Microsoft à ce sujet. Finalement, après avoir longuement cherché, ces utilisateurs ont découvert que ce problème est attaché au WaveMixer uniquement et non aux couches DirectX (direct sound) et autres. Ce que j’ai pu vérifier en dirigeant de flux vers le « DirectSound device » plutôt que « WaveOut » tout en ayant des fréquences d’échantillonnage différentes. Ce qui tendrait à montrer que ca n’est pas dans l’ « audio engine », mais dans les couches précédentes que le problème réside, probablement dans le bloc « Windows Multimedia »
Remarquons à quel point il a été long pour que le gars de chez Microsoft admette qu’ils aient reproduit le problème ! Et remarquons aussi la date : le 18 janvier dernier. Seven est sorti depuis un bout de temps déjà et personne n’avait remarqué ce défaut pourtant très audible, en tout cas pas chez Microsoft. Enfin. Mieux vaut tard que jamais, probablement feront-ils un correctif.
En attendant, si vous utilisez Vista ou Seven comme OS support de votre média-player, n’utilisez pas le WaveOut comme sortie audio !
Jipi.
J’ignore si tout ceci est valable dans les version 32 bits de Seven, je n’ai pas pu voir de réponse claire al-dessus. Je n’ai utilisé jusque-ici les version 64 bits de ces OS.
Update : Une petite analyse du phénomène sur un petit bout audio, filtré à 2kHz – 48dB/octave (les niveaux sont légèrement différents car les deux périphériques WaveOut et DirectSound ne semblent pas avoir le même gain) :
Qu’apercevons nous ? Des magnifiques pics à 3.9kHz, 7.8kHz et 11.7kHz, parfaitement audibles. Mais, dites-voir, combien vaut 48000-44100 ? Bingo.