pour qu'elle raison une distorsion numérique n'a pas la qualité d'une distorsion analogique ?
- 43 réponses
- 11 participants
- 6 397 vues
- 11 followers
jesuspeur
bonjour
voila je me pose cette question :
pour qu'elle raison exacte une distorsion numérique ne peu pas atteindre la qualité d'une distorsion analogique ?
merci
[ Dernière édition du message le 11/10/2013 à 19:00:10 ]
Danguit
avoir une infinité d'harmoniques ne veut pas dire qu'on dépasse les limites d'une certaines bandes passante.
Anonyme
Citation :
D'ailleurs concernant la saturation pour les transistors on parle effectivement de saturation quand la tension sur le collecteur fait que le courant drain ne peut plus augmenter et reste constant causant du coup l'écrêtage du signal audio. Par contre là où le phénomène diffère d'une lampe électronique par exemple, c'est qu'ici on dépasse simplement ses capacités en courant du transistors (qui dépendent, au delà de ses caractéristiques propres, de sa tension d'alimentation). Il n'y a pas d'accumulation d'électrons entre deux pôles (la saturation à proprement parler) comme c'est le cas pour la lampe... D'où la différenciation que j'ai faite entre écrêtage et saturation...
Mon dieux ! Un ramassis d'erreurs et d'inexactitudes !
Citation :
saturation quand la tension sur le collecteur fait que le courant drain
Quand on parle de collecteur c'est un bipolaire et donc pas de drain mais un émetteur.
Citation :
accumulation d'électrons entre deux pôles
J'arrête là, toute discussion sérieuse étant impossible avec quelqu'un qui maitrise si peu son sujet ...
Anonyme
Citation de Glob :
D'ailleurs libre à toi de te "palucher" également pour m'expliquer ce qu'il y a d'outrancier dans mes propos.
Soyons clairs histoire de ne pas laisser déraper le sujet, le terme outrancier signifie "qui pousse les choses à l'excès" d'après le Larousse, et c'est bien dans ce sens que je l'ai utilisé.
Et je l'ai écrit parce qu'effectivement, affirmer que les harmoniques sont infinies en omettant de dire qu'après quelques dizaines elles sont noyées dans le bruit thermique des composants (particulièrement lorsqu'il s'agit d'une guitare électrique dont je rappelle que, dans ce cas, le bruit thermique doit se situer aux environs de 70 à 80dB au dessus du bruit de quantification).
Dire qu'on est pragmatique et s'arquebouter sur une position théorique extrêmement discutable est aussi excessif.
Quand à ce genre d'argument :
Je ne vois pas l'intérêt puisqu'il suffit d'ouvrir ses oreilles pour s'en rendre compte mais si tu y tiens et en restant dans les explications simples : le taux de distorsion harmonique globale d'un signal se calcule en divisant la valeur efficace des harmoniques par la valeur efficace du signal d'origine. Sachant qu'en analogique la valeur efficace d'un signal peut avoir une infinité de valeurs, le résultat d'une telle opération peut donc également avoir une infinité de valeurs.
Un professeur de philo aurait qualifié cette tirade de sophiste, très certainement. On donne une vrai définition pour défendre une fausse analyse. Le résultat n'est pas une infinité de valeurs, mais une valeur discrète qui ne défini en rien la qualité du signal.
Bon, mais à par ça, je ne vois aucune raison de se fâcher, on discute, c'est tout.
JM
EraTom
C'est pour cela que tout bouquin un minimum sérieux renvoie vers une norme et/ou donne une définition des termes utilisés pour éviter des ambiguïtés.
Y fait chier ce forum ! Dès que l'on dit une connerie elle ne passe pas inaperçue.
Pour les SNR de quantification : oui je me suis planté.
De toute façon, vu comme je pars en sucette depuis le début de ce topic, je vais lâcher la bride au petit nerd qui dort en moi. Le calcul du SNR de quantification n'est pas si compliqué.
Pour un signal d'amplitude A qui occupe toute la dynamique disponible quantifiée sur n bits : Le pas de quantification vaut q = 2*A/(2^n) (parce que n bits donnent 2^n valeurs possibles).
Précision pour l'histoire du bit de signe :
- si l'on considère que la pleine échelle (crête à crête) du signal est entre 0 et +2A, il n'y a pas besoin du bit de signe : q = 2*A / 2^n
- si l'on considère que l'échelle est de -A à A, alors on prend un bit de signe puis on utilise les n-1 bits restants pour coder la valeur absolue du signal : q = A / 2^(n-1) = 2*A / 2^n
On retrouve le même pas ; le bit de signe n'est pas "perdu", il est juste utilisé comme un off-set sur les valeurs codées.
L'erreur de quantification err(t) est, pour chaque instant t, une variable aléatoire qui suit une loi uniforme sur ]-q/2 ; q/2 ].
En notant cette variable aléatoire err(t) = X, la densité de proba f(x) de X, vaut 1/q si x est dans ]-q/2 ; q/2 ] et 0 ailleurs (l'intégrale de f(x) pour x allant de -oo à +oo fait bien 1)
https://fr.wikipedia.org/wiki/Loi_uniforme_continue
La puissance de err(t) en t (et quelque soit) est égale à la variance de X :
<err²> = Var(X) = E[X²] = ∫ x²*f(x)*dx pour x allant de -oo à +oo
<err²> = ∫ (x²/q)*dx pour x allant de -q/2 à q/2
<err²> = [x^3]/(3q) pour x allant de -q/2 à q/2
<err²> = 2*q^3 / (2^3 * 3q) = q² / (4*3)
En remplaçant q par son expression en fonction de A et du nombre de bits n :
<err²> = A² / (3* 2^(2n))
La puissance du signal d'entrée test (une sinusoïde) vaut A²/2.
Le rapport signal à bruit : (A²/2) / <err²> = 3*2^(2n)/2
En passant au dB : SNR = 10*log10(3*2^(2n)/2) = 10*( log10(3/2) + 2*n*log10(2) )
log10(2) ≈ 0.301
log10(3/2) ≈ 0.176
SNR ≈ 6.02*n + 1.76 dB pour un signal (sinusoïdal) dont la dynamique occupe toute l'échelle de valeurs autorisées par les n bits.
En virgule fixe :
12 bits : 74 dB (utilisé dans des lecteurs de samples du début des années 80)
14 bits : 86 dB
16 bits : 98 dB
24 bits : 146 dB
32 bits : 194 dB
On trouve parfois des articles qui donnent des SNR de quantification inférieurs de 2dB : c'est parce qu'au lieu de calculer réellement la puissance du bruit, ils se contententh d'élever sa valeur max au carrée (=q²). Ça donne la borne sup de la puissance du bruit... et donc la borne inf du SNR de quantification.
Pour obtenir le SNR de quantification en virgule fixe d'un signal qui n'est pas pleine échelle, il suffit de retirer la différence de puissance en dB (car la puissance du bruit de quantification ne change pas).
Par exemple, un signal enregistré à -6dB sur 24 bits fixe présentera un SNR de quantif de : 146-6 = 140dB.
On peut aussi le voir autrement : -6dB implique que le gain a été divisé par 2, se qui revient en binaire à décaler d'un bit : l'échelle de valeur n'est plus sur n bits mais sur n-1.
Dans l'autre sens, si un signal bruité (pleine échelle) est numérisé sur 24bits alors qu'il a un SNR (bruit "analogique" à la prise) de 90dB (soit 14bits effectifs)... je vous laisse compter le nombre de bits de poids faibles qui n'encodent que du bruit.
En virgule flottante :
La formule SNR ≈ 6.02*n + 1.76 dB reste valide, par contre il faut bien faire attention au nombre de bits qui codent réellement "l'échelle de valeur".
Il existe plusieurs systèmes normés ; je me contente du standard le plus usité sur nos applications audios (de toute façon, ça ne chamboule pas le principe).
La valeur est codés sur 2 mots binaires : la mantisse (m) et l'exposant (e) qui ont tous les deux un nombre fixe de bits. Pour coder une valeur x les deux mots sont mis à contribution :
x = m * 2^e
La mantisse est normalisée : elle représente toujours un nombre compris entre 0 et 1 (j'écarte la question du signe pour la même raison que plus haut) dont le pas de quantification est donné par le nombre de bits de la mantisse.
L'exposant e est alors ajusté pour que le produit par n donne x. Concrètement, en jouant sur la puissance de 2 avec e, on peut "décaler de e bits" ce qui est contenu dans m.
Bon enfin, à la limite on s'en fout du détail du mécanisme. Ce qui compte c'est de comprendre que ce qui donne le nombre de "graduations" de l'échelle est le nombre de bits de m et que e est ajusté de manière à ce que x / 2^e soit toujours sur la pleine dynamique de la mantisse.
Du coup, le SNR en virgule flottante dépend uniquement du nombre de bits de la mantisse est celui-ci est fixe car 2^e joue le rôle d'un gain qui assure que l'on est toujours à la pleine échelle.
32bits float, mantisse de 24bits : SNR = 146 dB
64bits float, mantisse se 52bits : SNR = 314 dB
Et ceci quelque soit la dynamique du signal codé. Le mécanisme est plus sophistiqué mais le calcul du SNR est plus simple.
à cause du bit implicite prévue par la norme
J'ai simplifié un peu mon explication parce que je ne voulais pas en parler... le "bit implicite" c'est le bit de poids fort de la mantisse que l'on ne code pas parce qu'il vaut toujours 1 : la mantisse vaut toujours "1 virgule quelque chose" parce qu'elle est normalisée, et c'est ce "quelque chose" qui est donné par l'échelle graduées.
Pour avoir le nombre d'intervalles (et le pas de quantification) il faut prendre le nombre de bits de la mantisse + le bit de signe s'il y en a un.
M'enfin là, même si c'est plus satisfaisant pour l'esprit, vu les ordres de grandeur on n'est pas à 6dB (1 bit) près. Surtout que c'est à comparer avec le SNR d'un signal analogique qui est bien en deçà.
Anonyme
Cela dit, je suis heureux de constater que si mes bases sont un peu loin pour écrire un post comme celui que tu viens de pondre, elles sont encore assez présentes pour le comprendre. C'est pas si mal
EraTom
Il n'y a pas d'accumulation d'électrons entre deux pôles (la saturation à proprement parler) comme c'est le cas pour la lampe... D'où la différenciation que j'ai faite entre écrêtage et saturation...
Dans une lampe il y a une saturation en courant : le chauffage permet de créer une nuage d'électrons autour de la cathode (l'agitation thermique "arrache" des électrons) qui sont piégés et accélérés par la tension entre cathode et anode ("modulée" par la tension de grille pour une triode, placée entre les deux). Un courant entre cathode et anode apparaît.
Si la tension appliquée entre cathode et anode est trop importante alors le nuage se vide trop vite et il n'y a plus suffisamment de porteurs de charges qui se baladent. Euh... et si on insiste on peut voir de jolis arcs électriques sur la lampe.
Une autre source qu'il faut bien prendre soin de vérifier sont les saturations du transformateur : magnétique, et toujours une autre sur le nombre de porteurs de charges (la densité de courant dans le secondaire).
A part dans une publication d'un thésard de l'IRCAM, je n'ai pas encore vu de simu d'ampli à lampe temps réel évoquer le transformateur (vous en avez vu vous ?) : c'est plus sexy et vendeur de parler de la lampe et du HP sans doute.
Pourtant c'est bien l'un des composant les plus importants... et des plus chers.
Jan, avoir une infinité d'harmoniques ne veut pas dire qu'on dépasse les limites d'une certaines bandes passante. Il peut y avoir une infinité de valeurs entre deux limites. Mathématiquement parlant, le nombre de valeurs possibles entre 0 et 1 est infini.
C'est le théorème de Heisenberg-Gabor (le Heinsenberg de la mécanique quantique qui a pondu le principe d'incertitude (mais qui est en fait un théorème) et le Gabor des ondelettes).
Certes, après ce premier "filtre" il peut en rester beaucoup. Je n'avais pas compris au début que tu voulais évoquer ceci parce que les partiels créés dans la bande par l'intermodulation ne sont pas vraiment un problème à générer :
- On se fixe un ordre d'approximation polynomiale en fonction du niveau de SNR (thermique) que l'on se donne. Quand le résidu (i.e. la somme des tous les partiels que l'on va mettre de coté) à une puissance inférieure au bruit thermique (amplifié par le gain de la disto) de plusieurs ordres de grandeur (fixé par le seuil d'audition + une marge = ceinture et bretelles). On peut se dire que personne ne sera humainement capable de faire la différence.
Quand je parlais d'un ordre 4 à 6 pour un pré-amp à lampe... c'est quand fait je n'arrivais même pas à mesurer les harmoniques d'ordres supérieurs d'une maquette réelle malgré les filtrages du bruit de l'oscillo pour pouvoir comparer avec la simu.
- Une fois que l'on a l'ordre du polynôme, on sait de combien on doit sur-échantillonner pour ne rien louper dans la bande utile.
- Les partiels intermodulation compris dans la bande utile seront tous générés.
Franchement, il faut mettre le nez dans les algo que l'on nous vend pour se rendre compte qu'il y a beaucoup de voies de progressions (euphémisme pour dire que l'on nous vend de la merde) par exemple pour une triode :
- Le courant de grille est presque toujours négligé.
- La diode de la triode est modélisée par deux segments de droites... j'ai trouvé une seule publication (celle dont je parlais sur la base doc d'AES) qui propose de prendre en compte le "coude" entre les deux droite et de l'arrondir.
- les effets dynamiques autour de la lampe sont négligés (on raisonne en "quasi-statique"), ce qui met de côté les condo parasitez de la lampe (alors que l'amplification augmente la capacité apparente de celui de tête). A la place on voit des bricolages pour filtrer et colorer le son.
- Les courants de fuite des condo de liaison et de découplage... qui peuvent faire bouger le point de polarisation de la lampe sont négligés.
- etc.
EraTom
Cela dit, je suis heureux de constater que si mes bases sont un peu loin pour écrire un post comme celui que tu viens de pondre, elles sont encore assez présentes pour le comprendre. C'est pas si mal.
La vérité c'est que je suis en permanence en train de me battre pour en oublier le moins possible parce que mon gagne-pain l'exige. Ce forum est pour moi une magnifique occasion de me rafraichir la mémoire tout en participant à des échanges intéressants.
[ Dernière édition du message le 16/10/2013 à 22:27:18 ]
Anonyme
N'étant pas dans le secret des algos, je suppose que dans l'état de l'art il est encore fait quelques impasses, variables d'un dev à l'autre. Mais je reste persuadé que si la marge de progrès est importante elle sera franchie, à la seule condition que ça ait un réel intérêt. Parce qu'utiliser la puissance que nous offre le numérique maintenant et dans le futur pour se contenter de refaire ce qu'on a fait depuis quarante ans, franchement, ça ne déclenche pas chez moi un enthousiasme de folie. Il doit y avoir moyen de faire mieux.
EraTom
Ça fait 10 ans que je bosse sur les "systèmes dynamiques stochastiques non-linéaires". Ça peut avoir l'air obscure mais ce n'est pas si compliqué de piger le genre de bidules que ça adresse :
- Système dynamique régit pas des lois prédictives déterministes (en clair, quand on estime la vitesse d'un truc on peut prédire comme évolue sa position, par exemple, avec les équations de la mécanique).
- Stochastique : les "entrées" sont fortement bruitées et les estimations ne peuvent être faites sans introduire de statistique (la vitesse est mesurer avec une erreur aléatoire, la position est estimée en moyenne et variance).
- Non-linéaire : ben le modèle prédictif et/ou le moyen de mesure ne sont pas linéaires...
Ce sont des problèmes que l'on attaque classiquement à l'artillerie lourde : Simulations de Monte Carlo, filtrage particulaire, etc.
Il existe des algo "sous optimaux" qui permettent de traiter ces trucs en temps réel parce que moins coûteux en calculs. Le problème c'est que comme ils sont sous optimaux... dès fois ils merdent graves et divergent complètement.
J'ai développé des classes d'algorithmes sous-optimaux plus robustes qui sont aujourd'hui utilisés dans une industrie bien plus exigeantes que la production audio. On les trouve dans la fusion de capteur (centrale inertielle couplée avec GPS par exemple, les radars,... ), en traitement d'image pour le débruitage aveugle, déconvolution, compression à la volé.
Je me suis alors intéressé à ce que l'on pouvait en faire dans le monde de l'audio, notamment pour les simu de montage à lampe où le "souffle" participe à la chaleur du son et que plein de monde dit que c'est "moins bien que l'analogique", alors qu'il n'y a pas de "barrière théorique".
En plus j'ai un truc qui offre un cadre générique pour la résolution (intégration) numérique d'équa-diff avec une complexité calculatoire réduite et une stabilité assez redoutable.
Donc j'ai fait le tour de ce qu'il se faisait... et j'ai pris une claque mais pas dans le bon sens. Du coup je laisse tomber et j'attends que ça avance un peu.
La travaille le plus avancé que j'ai trouvé est celui-ci pour la modélisation de la grille (en gros, on arrondi la courbe autour d'un point que l'on rencontre souvent. Bon... pour simuler une diode j'ai appris le "modèle de shockley" en 1ère année d'école d'ingé) :
http://recherche.ircam.fr/pub/dafx11/Papers/76_e.pdf
Pour les aspects dynamiques :
http://dafx13.nuim.ie/papers/27.dafx2013_submission_10.pdf
Ce dernier article est honteusement repompé du travail d'Ivan COHEN de l'IRCAM (mais je n'arrive plus à retrouver sa publication).
https://www-master.ufr-info-p6.jussieu.fr/2010/Analyse-automatique-de-circuit
En gros ce qui est proposé c'est de faire un bilan des tensions / courants aux bornes de chaque composants, ou sur les mailles et noeuds qui nous intéressent, puis d'introduire le modèle non-linéaire de la triode.
Ensuite, tout est résumé dans un gros vecteur d'état qui évolue suivant une équation différentielle : connaissant tous les courants / tensions du circuit à l'intant t, j'en déduis les courants / tension à t+dt.
N'importe quel électronicien est capable d'établir cette équation ; c'est juste un peu laborieux.
Ensuite, avec un algorithme qui va bien, on est capable de réaliser l'intégration de cette équa-diff et d'écrire la "trajectoire" du vecteur qui contient les courants et tensions. Yapuka récupérer la tension de l'étage de sortie.
D'un point de vu électronique, mathématique et algorithmique ce n'est vraiment pas la révolution : Et bien il se trouve que tous les plugs que l'on teste et utilise en font moins !
Parce qu'utiliser la puissance que nous offre le numérique maintenant et dans le futur pour se contenter de refaire ce qu'on a fait depuis quarante ans, franchement, ça ne déclenche pas chez moi un enthousiasme de folie. Il doit y avoir moyen de faire mieux.
Mais il faut dire qu'une bonne disto fuzz sur un harmonica blues ça le fait grave. Donner la souplesse du numérique à tout ceci je comprends que ça puisse intéresser et motiver. Et quand en plus on voit le prix (pas toujours justifié) et la fragilité du matos...
Qui aujourd’hui pourrait se passer d'une bonne reverb numérique ? Certaines sont mêmes des simulations tunables à volonté.
Un jour, j'espère, on verra débarquer de VRAIS algorithmes de débruitage qui remplaceront les noise gates. Ça fait plus de 10 ans que dans les labo de TSI on trouve des algo capables de monter un SNR de 40dB sans laisser entendre d'artefacts horribles. C'est même devenu un classique du projet d'apprentissage en école d'ingé.
Les algo à base de déconvolution progressent bien : pour retirer une reverb gênante sur un enregistrement sans (trop) d'artefacts.
Les DRC (Digital Room Correction). Ça ne remplace pas un bon (et onéreux) traitement acoustique mais ça permet de bien compléter un traitement qui laisse parfois à désirer.
etc.
[ Dernière édition du message le 17/10/2013 à 00:13:27 ]
obe
J'aime vraiment audiofanzine pour ce genre de sujet où on part d'une question relativement simple, on y apporte une réponse plus ou moins simple... et bien plus d'informations.
Merci à EraTom j'ai appris pas mal de chose à te lire.
C'est dommage que tu n'aies pas le temps pour coder de nouveaux algos de distortion s'inspirant d'une meilleure modélisation des composants analogiques. A te lire, il semblerait que tu aurais les moyens d'arriver à faire des choses intéressantes.
- < Liste des sujets
- Charte