Per un semplice inizio, userei una caratteristica non lineare g(x) che comprime il segnale di input:
y=g(x)
dove (come sottolineato da endolith nei commenti) xè l' inviluppo del segnale audio in ingresso ey è l'inviluppo di uscita che viene applicato al segnale audio effettivo. g(x)può essere qualsiasi funzione che attenua valori di input di grandi dimensioni più forti di valori di input di piccole dimensioni. La legge A eμ-Le funzioni del telefono sono state sviluppate per comprimere i segnali vocali per la telefonia, ad esempio. Non so quanto sia bello questo per la musica, però.
Un'altra funzione di compressione molto semplice sarebbe quella di attenuare tutte le ampiezze al di sopra di una certa soglia δ:
g(x)={xax+(1−a)δforforx≤δx>δ
dove
a<1è attenuazione. Ma questo non funzionerà molto bene poiché il nostro senso dell'udito è logaritmico, quindi l'attenuazione potrebbe essere troppo forte. Questo è il motivo per cui i compressori audio funzionano su una scala logaritmica e porta alla stessa funzione di cui sopra, ma tutti i valori presi logaritmici e rispetto al massimo valore possibile. Per
x>0:
log(g(x))={log(x)1rlog(x)+(1−1r)log(δ)forforx≤δx>δ
Per i compressori audio, δ è di solito espresso in dB e r è espresso come un certo rapporto, ad esempio 3: 1 (ad es r=3). Ciò produce una funzione esponenziale, se espressa in modo lineare (spero che sia corretta, si prega di controllare anchex>0):
g(x)={xδ1−1/rx1/rforforx≤δx>δ
Questa funzione ha un "ginocchio duro", nel senso che la funzione
logg(x) non è differenziabile in
x=δ. Per un "ginocchio morbido" avresti bisogno di una transizione graduale a quel punto. L'estensione delle funzioni sopra per negativo
x è semplice, basta moltiplicare per la funzione signum e assumere il valore assoluto di
x.
L'attacco e il rilascio hanno un impatto su diversi suoni come calci, trappole e voce. Determinano per quanto tempo prima del raggiungimento della soglia il compressore dovrebbe iniziare a funzionare e per quanto tempo dovrebbe continuare a funzionare dopo che il segnale è sceso al di sotto della soglia. Per implementare questo dovrai usare una sorta di look-ahead.
Come tutte le ampiezze di seguito δsono attenuati, la gamma dinamica disponibile non è completamente sfruttata. Ciò è corretto dal cosiddetto "guadagno del trucco", che è solo una semplice moltiplicazione del segnale compresso con un fattore di guadagnoG>1. Riducendo dapprima la gamma dinamica e quindi amplificando i compressori di segnale, la musica può apparire "più forte".