Ich habe das DAFX-Buch von Udo Zölzer über den Verzerrungseffekt auf den Seiten 124-125 gelesen und es besagt, dass eine geeignete Simulation der Verzerrung durch die Funktion gegeben ist:
Kann jemand diese Formel erklären und welche Art von Signal wir bekommen?
Soweit ich weiß, ist 'x' das abgetastete Signal, also ist dies eine Folge von Zahlen. Was macht | x | bedeuten? Bezieht es sich auf den absoluten Wert von x für jeden abgetasteten Wert?
Wenn ich also diese Simulation des Verzerrungseffekts implementieren möchte,
- Ich muss die Länge von x kennen (es wird durch die Anzahl der Proben gegeben)
- In einer Schleife muss ich diese Formel für jeden Stichprobenwert berechnen
- Nach dem Ende der Schleife erhalte ich das verzerrte Signal (in digitaler Form).
Danach muss ich es in ein analoges Signal umwandeln, damit ich es hören kann.
audio
algorithms
c
digital
distortion
Elior
quelle
quelle
Antworten:
| x | bezeichnet den absoluten Wert - das x / | x | Ein Teil der Formel dient dazu, sicherzustellen, dass das Vorzeichen der Eingabe in der Ausgabe erhalten bleibt. In Bezug auf die Implementierung sind die von Ihnen aufgeführten Schritte korrekt.
quelle
Dank der Handlung in Olli Niemitalos Antwort war ich überzeugt, dass die im Buch angegebene Formel einen Vorzeichenfehler aufweist. Die Nichtlinearität, die für Fuzz oder Verzerrung verwendet wird, ist immer eine Art geglättete Clipping-Funktion, die das Eingangssignal komprimiert. So erfahren kleine Eingangsamplituden nur geringe Änderungen, während hohe Eingangsamplituden (mehr oder weniger) sanft abgeschnitten werden. Und die in Ollis Antwort gezeigte Zahl macht genau das Gegenteil.
Ich bin also überzeugt, dass die richtige Formel sein sollte
Für kleine Werte von wir , und für große (Größen-) Werte erhalten wir dh Beschneiden.x f(x)≈sgn(x)|x|=x f(x)≈sgn(x)
Dies ist eine Darstellung der korrigierten Nichtlinearität ( WolframAlpha ):f(x)
Die Formel sollte auch wie der Ausdruck ganz rechts in vereinfacht werden , da ein Anfänger möglicherweise geneigt ist, die andere Formel buchstäblich zu implementieren und zu versuchen, die Begriffe zu bewerten undDies ist unnötig komplex und verursacht auch Probleme, wenn nahe Null ist. Eine typische Implementierung würde folgendermaßen aussehen:x / | x | x 2 / | x | x(1) x/|x| x2/|x| x
quelle
Sie können den Hauptteil der Funktion direkt in Wolfram Alpha schreiben und er zeichnet ihn auf:
Es sieht für mich wie ein Wellenformer aus , und diese können so verwendet werden, wie Sie es beschreiben.
quelle