Pour un démarrage simple, j'utiliserais une caractéristique non linéaire g( x ) qui comprime votre signal d'entrée:
y= g( x )
où (comme indiqué par endolith dans les commentaires) Xest l' enveloppe du signal audio d'entrée ety est l'enveloppe de sortie qui est appliquée au signal audio réel. g( x )peut être n'importe quelle fonction qui atténue les grandes valeurs d'entrée plus fortes que les petites valeurs d'entrée. La loi A etμ-Des fonctions de loi ont été développées pour compresser des signaux vocaux pour la téléphonie, par exemple. Je ne sais pas à quel point cela sonne bien pour la musique.
Une autre fonction de compression très simple serait d'atténuer toutes les amplitudes au-dessus d'un certain seuil δ:
g( x ) = {Xa x + ( 1 - a ) δpourpourx ≤ δx > δ
où
a < 1est l'atténuation. Mais cela ne fonctionnera pas très bien car notre sens de l'audition est logarithmique de sorte que l'atténuation pourrait être beaucoup trop forte. C'est pourquoi les compresseurs audio fonctionnent sur une échelle logarithmique et cela conduit à la même fonction que ci-dessus, mais toutes les valeurs sont prises logarithmiquement et par rapport à la valeur maximale possible. Pour
x > 0:
Journal( g( x ) ) = {Journal( x )1rJournal( x ) + ( 1 -1r) journal( δ)pourpourx ≤ δx > δ
Pour les compresseurs audio, δ est généralement donné en dB et r est exprimé sous forme de rapport, par exemple 3: 1 (c.-à-d. r = 3). Cela donne une fonction exponentielle, lorsqu'elle est exprimée linéairement (espérons qu'elle est correcte, veuillez la vérifier, égalementx > 0):
g( x ) = {Xδ1 - 1 / rX1 / rpourpourx ≤ δx > δ
Cette fonction a un «genou dur», ce qui signifie que la fonction
Journalg( x ) n'est pas différenciable à
x = δ. Pour un «genou mou», vous auriez besoin d'une transition en douceur à ce point. L'extension des fonctions ci-dessus pour le négatif
X est simple, multipliez simplement par la fonction de signe et prenez la valeur absolue de
X.
L'attaque et la libération ont un impact sur différents sons comme les coups de pied, les collets et la voix. Ils déterminent combien de temps avant que le seuil soit atteint, le compresseur doit commencer à fonctionner et combien de temps il doit encore fonctionner après que le signal est tombé en dessous du seuil. Pour mettre en œuvre cela, vous devrez utiliser une sorte d'anticipation.
Comme toutes les amplitudes ci-dessous δsont atténués, la plage dynamique disponible n'est pas pleinement exploitée. Ceci est corrigé par le soi-disant "gain de rattrapage" qui est juste une simple multiplication du signal compressé avec un facteur de gainG > 1. En réduisant d'abord la plage dynamique puis en amplifiant les compresseurs de signal, la musique peut paraître "plus forte".