Algoritmo dell'effetto Distorsione digitale


10

Ho letto il libro DAFX di Udo Zölzer sull'effetto di distorsione alle pagine 124-125 e dice che la funzione di simulazione della distorsione è data dalla funzione:

f(X)=X|X|(1-eX2/|X|)

Qualcuno può spiegare questa formula e che tipo di segnale riceviamo?

Da quello che ho capito 'x' è il segnale campionato, quindi questa è una sequenza di numeri. Cosa significa | x | significare? Fa riferimento al valore assoluto di x per ciascun valore campionato?

Quindi, se voglio implementare questa simulazione dell'effetto distorsione,

  1. Devo conoscere la lunghezza di x (è data dal numero di campioni)
  2. In un ciclo, devo calcolare questa formula per ciascun valore di esempio
  3. dopo che il loop termina, ottengo il segnale distorto (in forma digitale)

Dopodiché, devo convertirlo in un segnale analogico in modo da poterlo sentire.


2
Nota che c'è un errore nella formula fornita nel libro (dovrebbe esserci un segno negativo nell'esponente). Vedi la mia risposta qui sotto.
Matt L.,

Risposte:


5

| X | indica il valore assoluto - x / | x | bit della formula è lì per assicurarsi che il segno dell'input sia conservato nell'output. Per quanto riguarda l'implementazione, sì, i passaggi che hai elencato sono corretti.


1
Cosa intendi con "distorsione reale"? Assolutamente qualsiasi operazione che fai sul segnale originale sarebbe comunque distorsione! Cosa stai cercando di fare?
Pichenettes,

1
Distorsione è un termine molto vago che descrive qualsiasi trasformazione (di solito indesiderata) che altera il segnale. La distorsione della chitarra viene raggiunta da molti processi diversi - clipping, rettifica, sovraccarico - a seconda del tipo di pedale / amplificatore in cui si verifica - non esiste un'unica formula "vera" ... La formula che hai sembra che darà un funzione simil-sigmoide che simulerebbe il sovraccarico; ma penso che potrebbe avere un errore da qualche parte.
Pichenettes,

1
Devi farlo nel dominio del tempo.
Pichenettes,

1
Perché è così che funzionano gli effetti di distorsione della chitarra. Sono stati originariamente realizzati con elementi non lineari come tubi, diodi e successivamente transistor il cui comportamento è descritto nel dominio del tempo da una funzione non lineare. E stai cercando di emularlo digitalmente ...
Pichenettes,

1
Il generatore di armonie fantasiose (intonazione del micro pog EHX) o il morphing spettrale fantasioso (impossibile ricordare il nome del prodotto) richiedono l'elaborazione del dominio di frequenza. Alcuni simulatori di amplificatori / altoparlanti richiedono lunghe convoluzioni, che vengono eseguite in modo efficiente da moltiplicazioni nel dominio della frequenza. Ma in ogni caso non è MAI "prendere l'intero FFT del segnale" - questo è implementato dalla sovrapposizione-aggiunta di piccoli FFT (circa 1024 campioni).
Pichenettes,

10

Grazie alla trama della risposta di Olli Niemitalo mi sono convinto che la formula fornita nel libro ha un errore di segno. La non linearità utilizzata per fuzz o distorsione è sempre un tipo di funzione di clipping attenuata, che comprime il segnale di ingresso. Le ampiezze di input così piccole subiscono piccoli cambiamenti mentre le ampiezze di input elevate sono (più o meno) leggermente tagliate. E la figura mostrata nella risposta di Olli fa esattamente il contrario.

Quindi sono convinto che dovrebbe essere la formula corretta

(1)f(X)=X|X|(1-e-X2/|X|)=sgn(X)(1-e-|X|)

Per piccoli valori di abbiamo f ( x ) sgn ( x ) | x | = x , e per valori grandi (magnitudo) otteniamo f ( x ) sgn ( x ) , ovvero il clipping.Xf(X)sgn(X)|X|=Xf(X)sgn(X)

f(X)

inserisci qui la descrizione dell'immagine

(1)X/|X|X2/|X|X

if (x> 0)
   y = 1 - exp (-x);
altro
   y = -1 + exp (x);
fine

Oh sì, il libro cita erroneamente web.archive.org/web/20070826204128/http://www.notam02.no/… e quanto sopra è la formula corretta.
Olli Niemitalo,

Ok grazie. Pensi che questa fosse la fonte del libro?
Matt L.,

Sì, il libro faceva riferimento a quella tesi dello studente. C'era una seconda tesi per studenti norvegese che aveva la formula sbagliata e citava la prima tesi per studenti. Non mi sono preoccupato di controllare le date per vedere se il libro ha copiato la seconda tesi senza controllare la fonte originale o se la seconda tesi ha copiato il libro.
Olli Niemitalo,

1
X2/|X|

2

Puoi scrivere il corpo della funzione direttamente in Wolfram Alpha e lo traccia:

inserisci qui la descrizione dell'immagine

A me sembra un wavehaper , e quelli possono essere usati come descrivi.


1
Ora che vedo la tua trama, sono abbastanza convinto che la formula nel libro sia sbagliata. Vedi la mia risposta Cosa ne pensi?
Matt L.

2
@ MattL. Sì, ha molto più senso. Anche la funzione del libro sta scendendo, causando un'inversione di fase indesiderata.
Olli Niemitalo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.