Algorithme d'effet de distorsion numérique

10

J'ai lu le livre DAFX d'Udo Zölzer sur l'effet de distorsion aux pages 124-125 et il dit qu'une simulation appropriée de la distorsion est donnée par la fonction:

f(x)=x|x|(1ex2/|x|)

Quelqu'un peut-il expliquer cette formule et quel type de signal nous obtenons?

D'après ce que je comprends, «x» est le signal échantillonné, c'est donc une séquence de nombres. Que signifie | x | signifier? Fait-il référence à la valeur absolue de x pour chaque valeur échantillonnée?

Donc, si je veux mettre en œuvre cette simulation de l'effet de distorsion,

  1. J'ai besoin de connaître la longueur de x (elle est donnée par le nombre d'échantillons)
  2. Dans une boucle, je dois calculer cette formule pour chaque valeur d'échantillon
  3. après la fin de la boucle, j'obtiens le signal déformé (sous forme numérique)

Après cela, je dois le convertir en un signal analogique pour pouvoir l'entendre.

Elior
la source
2
Notez qu'il y a une erreur dans la formule donnée dans le livre (il devrait y avoir un signe négatif dans l'exposant). Voir ma réponse ci-dessous.
Matt

Réponses:

5

| x | désigne la valeur absolue - le x / | x | bit de la formule est là pour vous assurer que le signe de l'entrée est conservé dans la sortie. En ce qui concerne la mise en œuvre, oui, les étapes que vous avez répertoriées sont correctes.

pichenettes
la source
1
Qu'entendez-vous par "vraie distorsion"? Absolument toute opération que vous effectuez sur le signal d'origine serait de toute façon une distorsion! Qu'essayez-vous de faire?
pichenettes
1
La distorsion est un terme très vague qui décrit toute transformation (généralement indésirable) qui modifie le signal. La distorsion de la guitare est obtenue par de nombreux processus différents - écrêtage, rectification, surcharge - en fonction du type de pédale / ampli dans lequel cela se produit - il n'y a pas de "vraie" formule unique ... La formule que vous avez ressemble fonction de type sigmoïde qui simulerait une surcharge; mais je pense que cela pourrait avoir une erreur quelque part.
pichenettes du
1
Vous devez le faire dans le domaine temporel.
pichenettes
1
Parce que c'est comme ça que les effets de distorsion de guitare fonctionnent. Ils étaient à l'origine fabriqués avec des éléments non linéaires comme des tubes, des diodes et des transistors ultérieurs dont le comportement est décrit dans le domaine temporel par une fonction non linéaire. Et vous essayez d'imiter cela numériquement ...
pichenettes
1
Le changement de hauteur, le générateur d'harmonie de fantaisie (par exemple le micro pog EHX) ou le morphing spectral de fantaisie (ne peut pas se rappeler le nom du produit) nécessitent un traitement dans le domaine des fréquences. Certains simulateurs d'amplis / haut-parleurs nécessitent de longues convolutions, qui sont effectuées efficacement par des multiplications dans le domaine fréquentiel. Mais dans tous les cas, il ne faut JAMAIS "prendre la FFT entière du signal" - ceci est implémenté par chevauchement-ajout de FFT de petite longueur (1024 échantillons environ).
pichenettes
9

Grâce à l'intrigue dans la réponse d'Olli Niemitalo, je suis convaincu que la formule donnée dans le livre a une erreur de signe. La non-linéarité utilisée pour le fuzz ou la distorsion est toujours un type de fonction d'écrêtage lissé, qui comprime le signal d'entrée. Les petites amplitudes d'entrée subissent donc peu de changement tandis que les amplitudes d'entrée élevées sont (plus ou moins) légèrement écrêtées. Et le chiffre indiqué dans la réponse d'Olli fait exactement le contraire.

Je suis donc convaincu que la bonne formule devrait être

(1)f(x)=x|x|(1ex2/|x|)=sgn(x)(1e|x|)

xf(x)sgn(x)|x|=xf(x)sgn(x)

f(x)

entrez la description de l'image ici

(1)x/|x|x2/|x|x

si (x> 0)
   y = 1 - exp (-x);
autre
   y = -1 + exp (x);
fin
Matt L.
la source
Oh oui, le livre cite mal web.archive.org/web/20070826204128/http://www.notam02.no/… et ce qui précède est la bonne formule.
Olli Niemitalo
OK merci. Pensez-vous que c'était la source du livre?
Matt L.
Oui, le livre faisait référence à cette thèse d'étudiant. Il y avait une deuxième thèse d'étudiant norvégien qui avait la mauvaise formule et a cité la première thèse d'étudiant. Je n'ai pas pris la peine de vérifier les dates pour voir si le livre copiait la deuxième thèse sans vérifier la source originale ou si la deuxième thèse copiait le livre.
Olli Niemitalo
1
x2/|x|
2

Vous pouvez écrire le corps de la fonction directement dans Wolfram Alpha et il le trace:

entrez la description de l'image ici

Cela ressemble à une forme d' onde pour moi, et ceux-ci peuvent être utilisés comme vous le décrivez.

Olli Niemitalo
la source
1
Maintenant que je vois votre intrigue, je suis tout à fait convaincu que la formule du livre est fausse. Voir ma réponse. Qu'est-ce que tu penses?
Matt L.
2
@ MattL.Oui, c'est beaucoup plus logique. La fonction du livre est également décroissante, ce qui provoquerait une inversion de phase indésirable.
Olli Niemitalo