|
音乐制作人需要了解的音频伸缩算法: l: `# ` K& c5 P
8 R8 p1 \2 Q% @* N7 H你也许用过你的DAW里自带的时间伸缩工具,但是你对它了解多少呢?我们将在本文为你详细地介绍这种技术。) t/ \6 T+ {) t& e( V' j, {' `: H
- p8 |: m6 K. |我们现在把现代音频编辑功能视为理所当然,所以只有当它们不能正常工作的时候才会觉得奇怪。时间伸缩就是一个很好的例子——尽管现在的DAW的时间伸缩和调整功能通常在浅尝使用的时候都很正常,因为普通用户通常不会有太大的使用需求。所有时间伸缩功能都有一组自己的算法,为不同情况下的处理作优化,但这只是基础而已。下文我们将会介绍时间伸缩的基础以及各种特定情景下的应用。
/ O& z7 h0 M7 ^1 X7 q
- o1 a9 h; |/ c3 `4 i: K背后的原理
1 {$ _1 C" F4 i. L# y) @* h" i7 s& u* Y
在介绍各种模式之前,先花几分钟解释一下时间伸缩中使用到的技术还是很有必要的。用模拟录音技术比如磁带和唱盘机,如果你想要给录制好的声音加速或者减速,你只需要改变回放的速度。但是随着速度的改变,伴随着的是音高的改变——大家都很熟悉的“Chipmunk效果”,以及音色上的变化,加速的时候声音会变得尖细,降速的时候变得飘忽深沉。就算是用数字录音技术,如果你只是简单的改变回放速度(比如说改变采样率),那么你会得到同样的效果。, [" X) L+ H2 p0 o7 P
- v- ^$ d, z) b9 T m- c
由于时间伸缩功能需要在改变播放速度的同时不改变音高,那么很显然,它们在改变速度以外还做了一些额外的处理。需要做的一件事是需要把音频拆分成独立的音符和音节。这是通过瞬态检测来实现的,在某些情况下也需要用频谱分析(对于那些音符没有明显瞬态分离的曲子)。当然,这些音频块并没有真的在编辑窗口上被切成碎片,但是可能会切换到时间伸缩界面上,显示出一系列通过瞬态检测生成的标记,这些标记被加入到音频文件的头文件里。
5 t v6 s) D4 c* h
( B \0 s1 [2 H. M+ Y0 P9 ?* a
" R/ P( d8 u+ C% t' m/ Q
# c8 X; y( }; k5 X7 ?2 t( ?6 |/ H一段分析好的用于时间伸缩的音频文件
6 r, d/ W' l( o( w( u' A! L1 L, V
% u7 K6 f/ T2 x) ]为了较好的效果,时间伸缩算法可能需要知道当前的tempo,更好的情况下是有原始音频文件的录制tempo信息——如果不知道的话,软件也会尽可能地估算一个数值。对于tempo信息缺失,不同的时间伸缩算法(不同的DAW)的处理选项会稍有不同。
" n# @. X! s v9 C: B2 ~( G' C* z' M
音频粒子
: t+ o4 A7 B6 }& V8 T: w" N! J7 v" R7 u b% A* L1 ^ b1 W, G
当音频文件分析好之后,软件就可以通过移动首尾位置来实现时间伸缩。这通常是自动完成的,软件会自动将标记好的音符根据新的tempo调整位置。当然你也可以手动完成——通过手动拖拽瞬态标记。
# z, g6 o- r! \7 r+ s9 ^% A# q' D4 t, a& F
自动&手动时间伸缩:& z0 M; m) u& ~% U3 X% x+ m: a0 p$ E& y
y& M: H; V" l A
: q2 A! e% `' T8 `/ b) [! n
3 C# E4 o" a, H6 x9 _! ]
j' k8 I* {& w, w' f
当一个音符需要被缩短或者拉长的时候,软件会通过一种叫“粒子合成(granular synthesis)”的技术来实现——通过将音频拆分成更细的单元,通过减少或者增加这些单元来达到缩短/拉长一段音频。这些都是在后台自动完成的(如果你大幅度减慢音频,你是可以听见它被“粒子化”的),我们实际上的编辑过程——拖拽音频——看起来是非常直接的,但是最终的处理效果非常依赖于最开始的分析和分离,这也是各种算法差异较大的地方。
: u$ k# S' V8 C; M% a* W* k9 G" ?) s" u3 z! e; F* ]8 { I
常见的算法
* A* E: Y7 }4 ]9 z; k: y, G0 V: K7 d4 ~* |" u4 ~0 f
大部分时间伸缩软件都会有以下几种不同的算法用于最初的音频文件分析:Slicing、Rhythmic、Monophonic、Polyphonic以及一种用于做效果的old-school模式。每一种算法都是为特定类型的音频信号做过优化的。
Y' V, Z0 N" |5 ? q( ^8 Y
+ G$ a; } M- }: \+ K$ G |
|