Exemple de l'oversampling X4
Bonjour,
A l'heure où des DAC vintage sans aucun suréchantillonnage ("NOS") reviennent sur le devant de la scène (en particulier du DIY), il m'a semblé utile de rappeler ici ce qu'est le suréchantillonnage que l'on trouve dans quasiment tous les lecteurs CD du commerce, et à quoi il sert sur le plan technique (au-delà du débat subjectif tout à fait légitime, mais ce n'est pas l'objet du post).
Pour illustrer le propos (de façon accessible à tous - je vous assure -), je vais prendre comme exemple le suréchantillonnage par un facteur entier, qu'on appelle en anglais l'oversampling, à distinguer de l'upsampling qui est un terme plus général (appliqué par exemple aux lecteurs 24/96) sur lequel on reviendra sans doute.
Retenons pour le moment que l'oversampling concerne une élévation de cadence d'un facteur entier et d'un filtrage numérique, c'est comme ça que la littérature audio consacre les termes. C'est la forme de suréchantillonnage la plus simple, qui est apparue très tôt et de façon massive dans l'histoire des lecteurs CD (contrairement à ce que l'on croit parfois); même le fameux circuit de conversion D/A TDA1541 de 1985 savait déjà fonctionner à X4 s'il était précédé du circuit adéquat.
Voici pour commencer un synoptique simplifié d'un lecteur avec oversampling, X4 puisque c'est l'exemple que je choisis de traiter:
![Image](http://gbotet.club.fr/OVS/OVSsyno1.gif)
En A, on a le flux numérique original issu du CD, à la cadence de la fréquence bien connue fs = 44100 Hz, c'est à dire un échantillon tous les 1/44100 ème de seconde.
En A', on a élevé la cadence d'un facteur 4 et filtré dans le domaine numérique d'une façon que je vais détailler davantage un peu plus bas.
Le flux numérique à ce niveau est donc à fs' = 4*44100 = 176400 Hz.
Le convertisseur D/A (Digital vers Analogique) qui suit va convertir les échantillons à une cadence de 176400 par seconde.
Le signal analogique B n'est pas toutefois entièrement reconstruit, il le sera à l'issu du filtrage analogique pour donner le flux C.
Maintenant le synoptique simplifié d'un lecteur NOS (Non Oversampling):
![Image](http://gbotet.club.fr/OVS/OVSsyno2.gif)
Le convertisseur D/A fonctionne cette fois directement à 44100 conversions par seconde.
Le filtrage analogique qui suit est chargé de finir la reconstruction du signal de façon a retrouver là encore quasiment le même signal analogique que celui qui a été numérisé dans le studio d'enregistrement.
--
Une petite parenthèse pour rappel: dans un studio, on a de façon très simplifiée (je passe sous silence mixage etc..) opéré comme suit pour l'élaboration d'un CD:
Microphone->préampli->filtrage analogique 20KHz->échantillonnage à 44.1KHz->pressage CD
Le signal que l'on veut récupérer à la sortie analogique d'un lecteur CD est celui qui a existé dans le studio après le filtrage analogique passe-bas (qui a tout coupé au dessus de 20000 Hz) et avant la numérisation à 44100 échantillons/seconde. Ce filtrage passe-bas dans le studio est nécessaire pour se conformer au théorème de Shannon que tout le monde connait je pense, le cas échéant n'hésitez pas à demander, ou sur le thread du FAQ sur le PCM que voici:
http://www.homecinema-fr.com/forum/view ... highlight=
Dans les faits, un studio moderne va plutôt opérer comme cela, pour d'assez bonnes raisons techniques d'ailleurs:
Microphone->préampli->filtrage analogique à 96KHz->échantillonnage à 192 KHz->filtrage numérique/sous-échantillonnage à 44.1KHz->pressage CD
Mais ça ne change rien au principe que le lecteur CD doit retrouver sur ses cinch L/R le signal analogique stéréo qui aurait existé entre 0 et 20000 Hz.
NB: Il faut se garder de croire que les échantillons que l'on peut extraire du CD et visualiser avec un logiciel d'édition SONT la musique, il ne s'agit que d'un codage (PCM) qui nécessite d'être reconstruit en analogique pour être entendu (c'est une évidence que l'on oublie parfois). Il faut savoir aussi que l'ambition de reconstruire le plus fidèlement possible le signal analogique qui a existé dans le studio d'enregistrement n'est pas démesurée puisque la possiblité théorique (mathématique) sous-jacente existe et la démonstration apportée.
--
Mais revenons à nos moutons.
J'ai pris un petit WAV contenant une séquence de samples (= échantillons) issus d'un CD, ceux qui circulent donc sur l'interface A sur mes dessins, au rythme de 44100 par seconde.
Voici ce que j'obtiens si je regarde le début du flux numérique, le temps est sur l'axe des X, la valeur des samples sur l'axe des Y:
![Image](http://gbotet.club.fr/OVS/OVSfigure1.gif)
NB: J'attire votre attention sur la présentation: j'ai volontairement representé les samples sous la forme de petits cercles isolés, chaque cercle représentant la valeur du sample en question (codée sur 16 bits signés comme il se doit sur un CD). Et il n'y a RIEN entre les samples.
Il se trouve que certains logiciels relient ces points par des droites imaginaires, ce qui est sans doute pratique mais qui est à l'origine de graves contresens d'interprétation que l'on trouve hélas encore dans quelques sites "zaudiophiles" sur le web.
Voici maintenant le spectre correspondant, si je calcule une FFT entre 0 et fs/2 (fs/2 = 22050) sur mon petit fichier numérique issu de CD:
![Image](http://gbotet.club.fr/OVS/OVSscope.gif)
Ce spectre représente les amplitudes des fréquences en présence dans mon fichier, retenons sa forme pour la suite.
--
Nous allons voir à présent ce qui se passe respectivement dans un lecteur sans oversampling, et sur lecteur avec oversampling X4.
1) Dans un lecteur NOS (Non Oversampling):
Voici à peu près ce que l'on verrait sur l'interface B à la sortie du circuit de conversion D/A si on y branchait un analyseur de spectre analogique:
![Image](http://gbotet.club.fr/OVS/OVSscope3.gif)
Je retrouve bien mon spectre de 0 à 20000 Hz (bien que très légèrement atténué dans les aigus, ou pourra y revenir), mais je vois aussi des répliques de spectre au delà de 22050 (et cela continue en fait indéfiniment, si je prolongeais l'axe des fréquences à droite, ce n'est ici qu'une simulation).
C'est ce qu'on appelle des "images".
Ce n'est rien d'autre que le spectre original décalé, donc du bruit ultrasonique, un peu comme si j'avais placé un miroir sur une ligne verticale à 44100/2 Hz.
On remarque que ces images sont quand même atténuées (on parle de filtrage en sinx/x fréquentiel dans le jargon technique), ceci est du aux caractéristiques "en marche d'escalier" des convertisseurs utilisés en audio: à chaque conversion D/A, la valeur analogique du sample converti est tout simplement maintenue constante rapport au temps, jusqu'à la conversion du sample suivant (en anglais on parle de DAC en Zero Order Hold). Voir aussi le dernier schéma de ce post.
--
Une parenthèse: Si au lieu de marches d'escalier, j'avais un circuit qui se contentait d'impulsions à la valeur des samples (en revenant à zéro volt aussitôt) comme il en existe, là ce serait bien pire au niveau des images, voici ce que j'obtiendrais:
http://gbotet.club.fr/OVS/OVSscope2.gif
Et ainsi de suite je je prolonge l'axe des fréquences à droite...
Là on voit encore mieux la succession des images du spectre original, d'abord inversé puis droit, inversé puis droit etc...
Tout ceci est bien sûr prévu et démontré par les théoriciens, pas de surprise.
--
En conclusion, on voit mieux la tâche qui est dévolue au filtrage analogique d'un lecteur NOS: si l'on veut se débarasser des images ultrasoniques (je dis bien si), il faut que le filtrage arrive à laisser passer tout ce qui est entre 0 et 20000 Hz sans défaut, c'est le signal audio, et couper tout ce qui au-dessus de 22050 Hz. Ceci représente une pente très raide pour de l'analogique, on parle de "brickwall" en anglais, un mur de brique.
Or ceci n'est pas sans impact collatéral sur la linéarité de la phase, hélas pour ce qui est en dessous de 20000 Hz, c'est un inconvénient objectif pour l'audio.
On peut aussi filtrer moins violemment pour minimiser le problème, mais une partie des images va alors sortir du lecteur CD (l'interface C sur mon synoptique), il existe donc un compromis à trouver; l'oreille est l'arbitre ultime, et il faut juger dans une configuration donnée (comportement des préamplis/amplis/enceintes à prendre en compte).
2) Dans un lecteur avec oversampling X4
Des ingénieurs ont réfléchi à ce problème et trouvé une parade qui évite les compromis que l'on vient de voir: il s'agit de faire la partie la plus difficile du filtrage anti-images non plus dans le filtre analogique de sortie, mais dans le domaine du numérique, avec les facilités que celui-ci permet, à savoir un filtrage de type brickwall qui n'impacte pas la linéarité de la phase! c'est possible avec des filtres dits "FIR à noyau symétrique", c'est très simple à mettre en oeuvre (par une opération de convolution à temps discret par exemple).
Voici les étapes qui permettent de passer du flux A au flux A' sur mon dessin de synoptique.
Attention c'est l'ensemble des opérations 2.1 et 2.2 qui constitue l'oversampling, les deux sont indissociables.
2.1: Elevation de cadence X 4 par insertion de 0
Sur la vue des samples par rapport au temps, on va donc passer de:
![Image](http://gbotet.club.fr/OVS/OVSfigure1.gif)
à:
![Image](http://gbotet.club.fr/OVS/OVSfigure2.gif)
=> J'ai 4 fois plus d'échantillons par seconde, j'ai rajouté en fait 3 samples à 0 après chaque sample original.
Voici le spectre que j'obtiens à ce niveau (FFT de 0 à fs'/2 = 176400/2 = 88200 Hz):
![Image](http://gbotet.club.fr/OVS/OVSscope2.gif)
=> On a le spectre original plus des images dont il falloir se débarrasser.
2.2: Filtrage numérique:
Si on applique un filtrage passe-bas brickwall en numérique, voici ce qu'on obtient, toujours avec une FFT de 0 à 88200 Hz:
![Image](http://gbotet.club.fr/OVS/OVSscope1.gif)
=> Je me suis bien débarrassé des images, du moins jusqu'à 88200, et mon spectre de 0 à 20000 Hz est intact!
Sur l'axe des temps maintenant, ce que donne la manip peut paraitre ... magique, constatez:
![Image](http://gbotet.club.fr/OVS/OVSfigure3.gif)
=> Oui, les zéros que j'avais insérés se sont retrouvés, après le calcul de filtrage, sur une courbe d'interpolation idéalement située entre les samples originaux (attention, ne pas confondre cette interpolation au sens traitement du signal du terme avec ce qui se passe quand un CD est abimé et que l'étage d'Error Concealment invente des bouches trous, cela n'a rien à voir).
Il est très important de comprendre à ce niveau qu'il n'y a pas invention d'information par rapport au CD, ni rien de spécialement "artificiel" dans le procédé: comme on peut le voir sur l'axe des fréquences, il n'y a pas d'information supplémentaire, le spectre débarrassé des images colle exactement à ce que j'avais au départ entre 0 et 20000 Hz.
On peut voir ça aussi comme un premier pas vers la reconstruction idéale du signal.
2.3: Conversion D/A à 4X:
Il faut évidemment un convertisseur qui fonctionne à 4*44100 = 176400 Hz pour exploiter ce flux A'.
Je dispose là d'un flux très intéressant pour l'électronicien puisque les images entre 176400/2 ont été filtrées, réduites à néant.
Voici à peu près ce que je verrais sur l'interface B à la sortie du circuit de conversion D/A à 176400 conversions par seconde si je branche un analyseur de spectre analogique à ce niveau:
![Image](http://gbotet.club.fr/OVS/OVSscope4.gif)
Là encore je précise que les choses continuent indéfiniment à droite sur l'axe des fréquences (c'est une simu vite faite et non un vrai analyseur de spectre analogique).
=>Je me retrouve avec un spectre qui se réplique (avec atténuation en sinx/x là aussi, plus large) mais beaucoup plus simple à nettoyer en analogique qu'avec le DAC NOS!
En effet, la cahier des charges de ce filtre est qu'il doit laisser passer tout ce qui est entre 0 et 20000 Hz (il n'y a même pratiquement plus la légère atténuation dans les aigüs qu'on pourrait observer dans le NOS), et couper tout ce qui est au-dessus de 176400 - 44100/2 Hz (~0.15 MHz sur le graphique).
Ce sont des choses très raisonnables à faire en analogique, un filtre à pente douce suffit, et je n'ai pratiquement plus d'impact sur la phase au dessous de 20000 Hz.
3) vision temporelle en sortie du circuit de conversion:
Sur l'axe des temps, voici pour finir la comparaison de ce que j'obtiens avant le filtrage analogique, donc toujours sur le point B des synoptiques; en jaune le signal analogique d'un lecteur sans oversampling, et en violet le signal analogique du lecteur avec oversampling x4:
![Image](http://gbotet.club.fr/OVS/OVSscope0.gif)
NB: ce sont juste les conversions du début de mon flux (mon WAV est bien plus long).
Dans les deux cas, le filtrage analogique qui suit, si présent, lissera ces marches d'escalier; mais plus qu'un lissage, le théoricien dira qu'il s'agit en fait de finir la reconstruction du signal analogique, pour qu'il soit conforme - à très peu de choses près - à celui du studio d'enregistrement.
Questions et réactions bienvenues!
cdlt,
GBo