dimanche 11 avril 2010

Lecture dématérialisée, le pilote de son est-il si transparent qu'il le prétend ?

En matière de lecture dématérialisée, il existe un grand nombre de lecteurs proposant la lecture dite sans perte des morceaux musicaux. Chaque lecteur indique (ou non) sa capacité à reproduire le morceau avec exactitude, extrayant les informations du flux musical en temps réel et le postant au pilote de son associé de l'ordinateur.

M'étant livré à une petite expérience simple ces derniers temps pour mettre en évidence que chaque lecteur possède sa propre signature sonore, persuadé de ce fait, je décide donc de vous livrer quelques réflexion sur l'interface livrée par Microsoft sur ses dernières générations de système d'exploitation. Il s'agit de l'interface WaveRT.

Microsoft dit:

L'interface WaveRT a donc été conçue pour combler les problèmes de latence induits par le mixeur de son et le mécanisme DirecSound des versions précédentes de système d'exploitation. WaveRT permet en principe de s'affranchir des pilotes tiers ASIO et utiliser directement la pile sonore WASAPI.

L'interface WaveRT va beaucoup plus loin en matière de tunnel audio en proposant au périphérique de lire ou capturer des données audio sans l'intervention du pilote logiciel, la consommation de CPU système est ainsi extrêmement réduite et la latence réduite au minimum. Le mécanisme d'échange s'effectue en règle générale par écriture rotative sur un buffer en mémoire partagé entre périphérique et système. On reconnait ici le mécanisme d'ailleurs choisi par Naim dans son système HDX pour réduire au minimum les problèmes liés à la latence.

L'ancien système WaveCyclic reposait sur une procédure programmée et donc faillible déclenchée à intervalle régulier pour lire ou écrire dans la zone partagée. Le système WavePCI également obsolète quant à lui nécessitait une surveillance continue du port. Ces mécanismes introduisent une latence produisant donc une gigue incontrôlable.

Par le passé, sur les systèmes Windows XP par exemple, l'utilisation de WaveCyclic/WavePCI s'est vue implémentée sous l'acronyme KS (Kernel Streaming). Ce mode même s'il donne accès à un échange, n'est absolument pas optimisé puisqu'il :
  • génère à chaque transition entre le passage du mode usager au mode système des requêtes d'entrées/sorties
  • bloque le système jusqu'à complétion de la requête avec tous les dangers inhérents
  • consomme plusieurs cycles CPU pour les copies de données de et vers les buffers d'échanges
La figure suivante issue des technotes Microsoft montre une opération de lecture à travers l'interface WaveRT. La latence observée (A+B) résulte de l'opération A d'écriture des données à lire et de l'opération B du temps que le périphérique audio met à les lire :
Il est de la responsabilité du pilote de déterminer le nombre de cycles à attendre avant d'écrire de nouvelles données sans étouffer le buffer FIFO du périphérique de reproduction. La latence est d'ailleurs un paramètre fourni par le pilote et des interruptions matérielles sont générées si le buffer FIFO vient à déborder pour permettre au pilote d'ajuster sa vitesse de dépose.

Pour dialoguer avec le pilote audio Windows Vista par exemple met à disposition 2 types d'objets. Les objets LFX (traitements locaux tels que l'égalisation) et les GFX (traitements matériels). L'utilisation de LFX introduit donc un traitement qui fait que le flux n'est plus "bit true", mais reste en théorie parfaitement maîtrisé en matière de temps de traitement.

Lorsque l'on prend ces informations en compte, au final il est de la responsabilité de l'application d'écrire le flux de données à un rythme qui convient pour que le pilote puisse à son tour les délivrer. On peut également supposer que si l'application maîtrise mal les temporisations elle peut générer potentiellement une perte de données ou un décalage temporel à la reproduction. Comme tout ce traitement est programmé, on peut naturellement douter de l'infaillibilité du mécanisme hormis dans le cas où le périphérique matériel est confortablement doté de pile FIFO et de registre pour son contrôle.

Je soupçonne ces éléments d'être à l'origine des différences audibles perçues d'une application à l'autre sur Windows Vista ou Seven.

samedi 3 avril 2010

Mesure et acoustique - partie 1

S'il est un élément essentiel en matière de son c'est l'acoustique. Le son est une onde qui se propage dans l'air régie par des lois précises.

Alors que faut-il en retenir ? Les ondes sonores se propagent dans l'air à 20°C à une vitesse autour de 340 mètres par seconde. Le front de l'onde est en règle générale le point de repère qui est utilisé pour représenter l'onde qui oscille en permanence selon un rythme dépendant de sa fréquence et des obstacles qu'elle rencontre. Naturellement l'onde ne se déplace pas physiquement mais fait vibrer les molécules d'air sur son passage qui se transmettent la pression acoustique de molécule à molécule, puis vibrent résiduellement sur leur position avant de reprendre un état stable. La pression acoustique varie donc en fonction du temps de propagation et de la distance parcourue.

Comme toute onde, lorsqu'elle rencontre un obstacle, une partie de l'onde est absorbée, une autre est réfléchie et/ou réfractée selon la nature de la matière. L'observation de ce phénomène est naturellement plus simple sur les ondes lumineuses, celles-ci étant visible, mais dans les grandes lignes le principe reste le même.

La musique est constituée d'un train d'ondes complexes formant mélodie et combinant harmonies et consonances. Il est fort difficile de "mesurer" une musique dans la mesure où relevant de l'art et non uniquement de la psychoacoustique. De ce fait les tentatives d'établissement d'acoustique musicale ont essayées de combler le trou existant entre art et physique mais avec fort peu de succès pour le moment.

Je vous propose la lecture du dictionnaire Wikipedia des termes utilisés en acoustique musicale afin que nous nous référions aux mêmes notions de la même manière. Ce dernier est relativement bien fait et suffisamment généraliste.

Afin de vérifier dans quelle mesure le local influence ou non la restitution de la musique à notre oreille je vais effectuer aujourd'hui pour vous quelques mesures et tenter de vous permettre de reproduire cette expérience facilement. Qu'en est-il des impératifs de linéarité de nos enceintes acoustiques ? Qu'en est-il réellement des bosses et creux observés sur fréquences unitaires ? Qu'en est-il de la modification apportée par égalisation sur un flux bit perfect ? Ce sont autant de questions auxquelles nous allons tenter de répondre simplement.

L'environnement de mesure se fera dans une salle d'écoute composée de murs porteurs pleins. La façade étant composée d'un vide isolant acoustique entre le mur extérieur et la pièce. La pièce est donc très bien isolée naturellement sans murs creux, le sol et plafond sont en dalle de béton. Le triangle d'écoute est équilatéral de 2,80m (écartement centre de la caisse d'enceinte et distance à l'écoute assise), la face des enceintes est éloignée de plus de 80cm du mur arrière et l'axe des haut-parleurs de 80cm environ.


Il apparait également important de prendre en compte l'ensemble de la chaine de reproduction et de la laisser en l'état pendant toute la durée des tests du fait que le changement d'un élément va changer à la fois les timbres et la réponse en fréquence potentielle de la chaine de reproduction cible.

Ainsi, lorsque l'on va changer de source, de câble d'alimentation ou même de câble de modulation, il sera sans doute nécessaire de refaire des mesures. Cette perspective n'est pas très engageante, mais essayons tout de même de nous y astreindre.

L'environnement de mesure étant présenté, dans un prochain article nous étudierons les éléments utilisés pour la mesure.