MakeNoise09 - 压缩 Compression

in cn •  7 years ago 

在音频处理中,压缩可以指数据压缩格式(如 mp3 格式),如何压缩可以减少文件大小。本文学习的则是动态范围(Dynamic range)的压缩。

EQ(均衡器) 和 Compressor(压缩器)是 Sound engineering 里面最基础最常用的效果器。压缩器是动态处理器的一种。动态处理器最简单的形式就像一个自动的音量控制器(gain control),当音量太大时减低音量,当音量太小时调高音量。

想象一下,你家的电视有两个不同的频道。一个频道总是很小声,需要用遥控器调整到 20 才听得清楚。另外一个频道却很大声,必需用遥控器调到 12 才不会吵到邻居。

Compressor 的作用,就相当于每次切换这两个频道的时候,自动帮你调整声音大小,使之保持在合适的范围。

在音频处理中,压缩的目的是让乐器、人声或录音的动态范围保持在我们想要的范围

  • 控制动态性能
  • 填补漏洞
  • 声音包络控制/塑形
  • 调控音色
  • 调整峰值和失真
  • Sidechain compression(ducking/dipping/pumping)

更直观来说,压缩处理可以:

  • 使音频的动态范围更平整(even out)
  • 融合两种乐器的声音(如bass 和底鼓),听起来更为整体
  • 提亮音量比较小的声音
  • 控制太响的声音
  • 使声音获得特定的音色效果
  • 创造特别的声音

所有的动态处理器基本上都是指定一个开始工作的信号电平,然后对信号做出某种形式动态变化。

不同压缩方法对 dynamic range 的影响:

MakeNoise 06 中我们学习了均衡器(EQ)。那么在处理音频时,应该是先调 EQ 还是先调 Compressor 呢?

Placing an EQ before a compressor can have the effect of exaggerating the applied EQ. Placing an EQ after a compressor you can often attain more audible results with less EQ, producing results that often do not "sound EQ's EQ" -- Chuck Zwicky

一般来说,EQ 在 Compressor 之前,主要为了调整 Compressor 的反应;EQ 在 Compressor 之后,是为了调整波形达到更好的混音效果。当然也要取决于声音素材和想要的效果

在 Ableton Live 里压缩不同的音轨

进入 Ableton Live,在效果库里面找到 Compressor,拖到音轨上,就看到 Compressor 面板中调整压缩的参数:

[Ableton]compressor.jpg

  • Threshold/Input:控制何时触发压缩
  • Gain reduction (GR):有多少 dynamic range 被去掉
  • Output/Makeup gain:补偿因压缩导致的音量减小,设定输出的最高电平
  • Attack:当信号达到阈值时,压缩器在多少时间内开始处理。Fast attcak 0.01~10 ms, slow attack > 50 ms
  • Release:当压缩时,原始信号被保留多久。通常以音频的 tempo 为基准
  • Ratio:以输入为基础,按比例设定输出值
  • Link:连接双声道/单声道压缩器到另外一个单声道,形成立体效果
  • Side chain:使用信号而不是主输入来控制压缩
  • Bypass:压缩过滤

如何调整不同乐器音轨的压缩器,请看下面视频里的详细讲解:

Compressor in Ableton Live_腾讯视频

用 Max/MSP 实现 Compressor

更进一步,我们到 MSP 里拆解 Compressor 是如何实现的。

官方文档里提供了详细的说明和例子。00 调整和补充了一些注释:

[Max]compression.png

压缩器主要有三部分构成:参数、压缩流程和处理算法。下面分别看看每一部分的实现。

可控制的参数主要有 Input gain, Threshold, Ratio, Attack time, Release time,之前我们在 Ableton Live 的 Compressor 面板里都看到了:

[Max]compression-para.png

压缩处理的主流程:先实时监测 input level,把信号从 amplitude 转换为 dB,然后跟阈值参数比较,判断是否进行压缩:

[Max]compression-compressor.png

如果达到阈值后开始压缩,需要降低的 gain 由以下部分计算。公式是 (Threshold - Level) * (1 - 1/ratio)

[Max]compression-math.png

然后将计算值再换算为 amplitude,输出到 compression 的主流程中,最后再加一道 rampsmooth~ 来平滑 gain 的变化。

Ref

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

@kidult00, 伦家就觉得你写得不错嘛~~~ img

@kidult00, 生活,就是在平凡中变得不平凡!

对了,漂漂女生节貌似快到了,我是不是要给 @cn-cutie.pie 可可 准备一下礼物了?