本文对音频信号处理中一个比较重要的模块—动态范围控制(dynamic range control)的基本原理作以介绍,主要参考资料是书籍 DAFX: Digital Audio Effects Second Edition。如有表述不当之处欢迎批评指正。欢迎任何形式的转载,但请务必注明出处。
目录
4.2. Dynamic Rang Control
动态范围控制包含几个不同的方面,主要介绍以下几个常见的动态范围控制器:limiters, compressors, expanders 以及 noise gates。
动态处理的流程通常为:首先检测输入信号的电平,接着使用一条静态曲线(static curve)从输入电平中推导出增益因子,最后对该增益因子做平滑,并将其作用到输入信号上。可选的,可以对输入信号做延迟以补偿侧链(图 4.7 中下面的路径)中的任何延迟。
图 4.8 给出了一个动态范围控制器作用于输入信号上的例子。该例子展示的动态范围控制器是 compressor: 在输入电平较小的时候,增益 g ( n ) g(n) g(n) 被设置为 1 1 1,而当输入电平较大的时候,增益被衰减以降低信号的电平。因此,信号的电平差异随着时间减少,从而压缩了信号的动态范围。
信号处理
通常有两种方法来检测输入信号的电平:
- peak measurement:一个全波整流器联合一个 AR-averager(见图 4.9 ),并配上特点短的攻击时间(attack time)可以用来跟踪信号的峰值。
- RMS measurement:对单个时间常量进行平均的平方器(见图 4.10 )给出了 RMS 值,其用于测量信号的功率。
典型的动态范围控制器通常包含其中一个甚至两个都包含。
静态曲线决定了动态控制器是哪种类型。引入 X , G , Y X, G, Y X,G,Y 以在 dB 尺度上表示相应的信号。也就是 X = 20 ⋅ log 10 ( x PEAK ( n ) ) X = 20 \cdot \text{log}_{10}(x_{\text{PEAK}}(n)) X=20⋅log10(xPEAK(n)) 或 X = 10 ⋅ log 10 ( x RMS ( n ) ) X = 10 \cdot \text{log}_{10}(x_{\text{RMS}}(n)) X=10⋅log10(xRMS(n))。动态范围控制器得到输出信号的过程也变为了 Y = X + G Y = X + G Y=X+G。
在对数域中,增益通常是通过分段线性函数从输入信号的电平中推导出来的。图 4.11 给出了一个 compressor 的特性曲线,左图从输入信号的电平映射出输出信号的电平,右图从输入信号的电平映射出增益因子。在达到某个输入电平之前,也就是小于压缩器的阈值 C T CT CT(这个例子中是 − 30 -30 −30 dB)时,增益因子是 0 0 0 dB。当超出该阈值时,特性曲线是通过比率 R R R 定义的,它指定了输入电平的变换 △ X \triangle X △X 到输出电平的变化 △ Y \triangle Y △Y 之间的关系,即 △ Y = 1 R ⋅ △ X \triangle Y = \frac{1}{R} \cdot \triangle X △Y=R1⋅△X。或者也可以用斜率因子 S = 1 − 1 R S = 1 - \frac{1}{R} S=1−R1 来代替比率 R R R。、
动态范围控制器的动态表现受电平检测方法(peak measurement 方法使用攻击和释放时间 AT、RT \text{AT}、\text{RT} AT、RT,RMS measurement 方法使用平均时间 TAV \text{TAV} TAV)的影响,并且进一步被平滑滤波器调整(它也用到了攻击时间和释放时间),如图 4.12 所示。攻击时间的参数可以用以下公式计算:
AT = 1 − e − 2.2 T / t AT , \begin{align} \text{AT} = 1 - e^{-2.2 T/t_{\text{AT}}}, \notag \end{align} AT=1−e−2.2T/tAT,
其中 t AT t_{\text{AT}} t