Para un comienzo simple, usaría una característica no lineal sol( x ) que comprime su señal de entrada:
y= g( x )
donde (como lo señala el endolito en los comentarios) Xes la envolvente de la señal de audio de entrada yy es la envolvente de salida que se aplica a la señal de audio real. sol( x )puede ser cualquier función que atenúe los valores de entrada grandes más fuertes que los valores de entrada pequeños. La ley A yμ-Las funciones legales se han desarrollado para comprimir señales de voz para telefonía, por ejemplo. Sin embargo, no sé qué tan bueno suena esto para la música.
Otra función de compresión muy simple sería atenuar todas las amplitudes por encima de cierto umbral. δ:
sol( x ) = {Xa x + ( 1 - a ) δparaparax ≤ δx > δ
dónde
a < 1Es atenuación. Pero esto no funcionará muy bien ya que nuestro sentido del oído es logarítmico, por lo que la atenuación podría ser demasiado fuerte. Esta es la razón por la cual los compresores de audio funcionan en una escala logarítmica y llevan a la misma función que la anterior, pero todos los valores son logarítmicos y con respecto al valor máximo posible. por
x > 0:
Iniciar sesión( g( x ) ) = {Iniciar sesión( x )1rIniciar sesión( x ) + ( 1 -1r) registro( δ)paraparax ≤δx > δ
Para compresores de audio, δ generalmente se da en dB y r se expresa como alguna relación, por ejemplo, 3: 1 (es decir r = 3) Esto produce una función exponencial, cuando se expresa linealmente (espero que sea correcto, verifíquelo tambiénx > 0):
sol( x ) = {Xδ1 - 1 / rX1 / rparaparax ≤ δx > δ
Esta función tiene una "rodilla dura", lo que significa que la función
Iniciar sesiónsol( x ) no es diferenciable en
x = δ. Para una "rodilla suave" necesitaría una transición suave en ese punto. La extensión de las funciones anteriores para negativo
X es sencillo, simplemente multiplique con la función signum y tome el valor absoluto de
X.
El ataque y la liberación tienen un impacto en diferentes sonidos como patadas, trampas y voces. Determinan cuánto tiempo antes de alcanzar el umbral el compresor debería comenzar a funcionar y cuánto tiempo debería seguir funcionando después de que la señal haya caído por debajo del umbral. Para implementar esto, tendrá que usar algún tipo de anticipación.
Como todas las amplitudes a continuación δestán atenuados, el rango dinámico disponible no está completamente explotado. Esto se corrige con la llamada "ganancia de maquillaje", que es solo una simple multiplicación de la señal comprimida con un factor de gananciaG > 1. Al reducir primero el rango dinámico y luego amplificar los compresores de señal puede hacer que la música parezca "más fuerte".