动态处理类效果器是是一类允许用户动态的根据音频内容调节音频动态的效果器
一般地,假设我们存在数字音频流 X[n],以及一个函数 f(x) 称作静态特征函数(DRC 静态曲线),则我们可以一般化地描述动态类效果器的流程如下:
- 提取输入信号X′[n] 的包络 e[n]
- 将输入音频流 e[n] 转换为 dB 值 edB[n]=20⋅lg(Lrefe[n]),其中 Lref 为幅度,在 DAW 中一般取 Lref=1.0,即 dBFS 或使用 RMS 算法即取 Lref=N1k=0∑N−1x[n−k]2 ,其中 N 为输入音频流长度,后者一般认为更加符合人耳对响度的感知。
- 计算处理后的音频流 EdB[n]=f(edB[n])
- 对处理后音频流进行平滑得到 G[n] 并转换回线性域得到系数 g[n]
- 计算输出 Y[n]=g[n]⋅X[n]
需要注意的是,输入信号 X′[n] 并不一定需要等于 X[n],其亦有可能是输出信号 Y[n](称前者为前馈式,后者为反馈式),或者来源自其他轨道,此时称作侧链信号,常用作侧链压缩效果。另外,直接操作音频动态而不依赖音频本身的为调制类效果器的特例,不是动态类效果器。因此诸如侧链压缩等同于绘制音量包络的说法是错误的。
实践中,根据具体目的的不同,包络提取分为多种方式(如 Fabfilter Pro C2 中的 Style 选项),以下列举了常见的实现方式,下表中,我们约定 τrel 表示释放时间,τatk 表示启动时间(他们统称为时间常数,具体含义见下文平滑方法),fs 表示采样率。
名称 |
公式 |
优势 |
劣势 |
备注 |
绝对值 + 低通滤波器 |
e[n]=αabs(X[n])+(1−α)e[n−1] |
计算简单,常数可调 |
对高频噪声敏感,可能需要多级滤波以获得更高精确性 |
α={1−e−τatkfs11−e−τrelfs1启动阶段释放阶段 |
峰值检测法 |
e[n]=max{abs(x[n]),e−τrelfs1⋅e[n−1]} |
对瞬态信号敏感 |
平滑度较低 |
跟踪信号的瞬时峰值并通过衰减因子释放 |
希尔伯特变换法 |
e[n]=X[n]2+H{X}[n]2 |
精确提取高频信号包络 |
计算复杂度较高 |
H 是希尔伯特变换算符,其等价为往信号添加 2π 的相移 |
RMS 检测 |
e[n]=w1k=0∑w−1(W[n−k]⋅X[n−k])2 |
响度接近人耳感知 |
窗口大小影响响应速度,实时性能较差 |
W[n] 是窗函数, w 是窗口长度 |
倒谱法 |
{c[n]=F−1{lnabsF{X}}[t]H[k]=expF{c⋅W}[k]. |
频域包络提取方法,具有高共振峰精度 |
计算复杂度极高 |
F 是傅里叶变换算符,W[n] 是窗函数;输出为频域包络,并非时域包络,若要输出时域包络需要进行 IFFT |
自适应算法 |
根据信号特性给出不同包络计算方式,公式难以给出。 |
适合复杂场景 |
复杂度较高 |
常见实现方式如机器学习方法等。 |
平滑方法是为了将输出信号平滑化以避免失真的方式,编曲中最为常见的方法是双时间常数平滑法,其他方法还有如滑动平均值方法、低通滤波方法、中值滤波方法等等,但因其不那么常见在此我们将会略过。
双时间常数平滑法的核心思想根据信号变化方向动态切换不同平滑时间(即时间常数)的方法,具体来说,他将平滑分为了两个阶段
- 启动 (attack) 阶段:当 edB[n]>EdB[n] 时,使用启动时间 τatk 作为时间常数
- 释放 (release) 阶段:当 edB[n]≤EdB[n] 时,使用释放时间 τrel 作为时间常数
一般的,平滑后的包络信号由如下公式确定:
G[n]=α⋅EdB[n]+(1−α)G[n−1]
其中 α=1−e−τ⋅fs1,τ 是对应阶段的时间常数,fs 是采样率。
而在一般的实践中,可能还会加入保持 (Hold) 阶段,他在启动和释放之间,将固定包络信号一段时间。
根据静态特征函数的不同,动态类效果器可以粗略地分为以下几类
压缩器(compresser)是一种特殊的动态类效果器,他允许用户降低音频的动态范围。他的静态特征函数一般表现为音量大于某个值之后增长率会降低。例如:
f(x)={xα(x−t)+tx∈[0,t)x∈[t,+∞)
其中 t 称作阈值(Threshold),α1 称作压缩比(Radio),要求 α∈[0,1]。这个形式称为硬拐点形式,因为他不对拐点进行平滑。
实践中,一般压缩器会提供一个参数拐点宽度 (knee width) 允许用户对静态特征函数的拐点进行平滑,加入了这一参数的静态特征函数形如
f(x)=⎩⎪⎨⎪⎧xs(x,t,w,α)α(x−t−w)+t+wx∈[0,t−w)x∈[t−w,t+w]x∈(t+w,+∞)
其中 w 是拐点宽度,s(x,t,w,α) 是某个平滑函数,一般的实现如二次插值(取三点分别为 (t−w,t−w),(t−w,t+w),(t+w,t+w))等等。在实践中也常与滤波器配合使用形成多段压缩器,详见综合类效果器。
特别地,如果压缩器的压缩比为 +∞ 或极大那么其就变成了一个限制器 (limiter)
扩展器 (Expander) 是一种特殊的动态类效果器,与压缩器相反,他允许用户增大音频的动态范围。他的静态特征函数一般表现为音量小于某个值之后增长率会升高,例如
f(x)={max{0,β(t−x)+t}xx∈[0,t)x∈[t,+∞)
其中 t 称作阈值(Threshold),β1 称作扩展比(Radio),要求 β∈[1,+∞)。这个形式称为硬拐点形式,因为他不对拐点进行平滑。
同理,在实践中一般扩展器会提供一个参数拐点宽度 (knee width) 允许用户对静态特征函数的拐点进行平滑。形式同上,在此不过多赘述。
特别地,若扩展器的扩展比为 0 或极小,那么其就变成了一个门限器 (Gate)
瞬态处理器 (Transient Shaper) 是一类特殊的动态类效果器,他允许用户增强或削弱音头动态。他使用更加能够提取瞬态的包络提取方式如峰值检测法。他的静态特征函数拥有与压缩器相似的形式,即
f(x)={xα(x−t)+tx∈[0,t)x∈[t,+∞)
但不同的是,它允许 α 取任意非负实数。他同样有相应的平滑版本。