加载中...
编曲录音声卡编曲录音套装midi键盘产品音色库插件

音乐制作人需要了解的音频伸缩算法

摘自:网络转摘|2017-10-27 22:58:10|作者:网络 浏览次数:

作者:Joe Albano 

编译:兔子

你也许用过你的DAW里自带的时间伸缩工具,但是你对它了解多少呢?我们将在本文为你详细地介绍这种技术。

我们现在把现代音频编辑功能视为理所当然,所以只有当它们不能正常工作的时候才会觉得奇怪。时间伸缩就是一个很好的例子——尽管现在的DAW的时间伸缩和调整功能通常在浅尝使用的时候都很正常,因为普通用户通常不会有太大的使用需求。所有时间伸缩功能都有一组自己的算法,为不同情况下的处理作优化,但这只是基础而已。下文我们将会介绍时间伸缩的基础以及各种特定情景下的应用。

背后的原理

在介绍各种模式之前,先花几分钟解释一下时间伸缩中使用到的技术还是很有必要的。用模拟录音技术比如磁带和唱盘机,如果你想要给录制好的声音加速或者减速,你只需要改变回放的速度。但是随着速度的改变,伴随着的是音高的改变——大家都很熟悉的“Chipmunk效果”,以及音色上的变化,加速的时候声音会变得尖细,降速的时候变得飘忽深沉。就算是用数字录音技术,如果你只是简单的改变回放速度(比如说改变采样率),那么你会得到同样的效果。

由于时间伸缩功能需要在改变播放速度的同时不改变音高,那么很显然,它们在改变速度以外还做了一些额外的处理。需要做的一件事是需要把音频拆分成独立的音符和音节。这是通过瞬态检测来实现的,在某些情况下也需要用频谱分析(对于那些音符没有明显瞬态分离的曲子)。当然,这些音频块并没有真的在编辑窗口上被切成碎片,但是可能会切换到时间伸缩界面上,显示出一系列通过瞬态检测生成的标记,这些标记被加入到音频文件的头文件里。


一段分析好的用于时间伸缩的音频文件

为了较好的效果,时间伸缩算法可能需要知道当前的tempo,更好的情况下是有原始音频文件的录制tempo信息——如果不知道的话,软件也会尽可能地估算一个数值。对于tempo信息缺失,不同的时间伸缩算法(不同的DAW)的处理选项会稍有不同。

音频粒子

当音频文件分析好之后,软件就可以通过移动首尾位置来实现时间伸缩。这通常是自动完成的,软件会自动将标记好的音符根据新的tempo调整位置。当然你也可以手动完成——通过手动拖拽瞬态标记。

自动&手动时间伸缩:



当一个音符需要被缩短或者拉长的时候,软件会通过一种叫“粒子合成(granular synthesis)”的技术来实现——通过将音频拆分成更细的单元,通过减少或者增加这些单元来达到缩短/拉长一段音频。这些都是在后台自动完成的(如果你大幅度减慢音频,你是可以听见它被“粒子化”的),我们实际上的编辑过程——拖拽音频——看起来是非常直接的,但是最终的处理效果非常依赖于最开始的分析和分离,这也是各种算法差异较大的地方。

常见的算法

大部分时间伸缩软件都会有以下几种不同的算法用于最初的音频文件分析:Slicing、Rhythmic、Monophonic、Polyphonic以及一种用于做效果的old-school模式。每一种算法都是为特定类型的音频信号做过优化的。

不同的时间伸缩算法

基础的Slicing算法通常是用于鼓和打击乐器的,这也是最简单的方法。在这个模式下,会标记出所有的瞬态,将每次瞬态峰值作为一个新的音频的开头。这种方式相当于手动找出所有的瞬态峰值然后切开每一个音符。这也是最简单的方式——这种方式实际上并没有用到音频伸缩,如果速度改变的话,这些单独切片就会根据速度和节奏进行移动排列。举个例子,如果速度变快的话,这些切片之间的距离就会更加接近,重叠的部分就会直接删除。

但是如果速度变慢的话,由于没有对切片进行处理,切片之间就会出现间隙,音符的结尾没有足够的信息填充在两个音符之间,声音听起来也会感觉突然被打断。为了让声音听起来更平顺,有些算法可能会提供Decay控制参数,用于将切断的音符尾巴渐弱,得到一个更自然的声音——但是两个音符之间还是会有间隙。对于打击乐音轨来说这种结果也许是可以接受的,但是对于有长尾音的乐器来说,比如一些连奏的乐句就会直接变成一串分离的音符。

另一种方式也是一样的基本方法用于瞬态检测和音符切片,但是在算法里加入了音频伸缩功能,用于切片伸缩。所以在相同情况下,当速度减慢的时候,切片间的间隙会通过扩展每一段切片来填充,让声音维持在需要的连奏效果。扩展音频可以通过循环一小段小切片来实现——一种曾经用在采样器中的技术——或者通过粒子合成来实现,根据设计者对CPU性能的控制来决定。这种算法在一些DAW里叫做Rhythmic,比如在Logic里,但是这种叫法也可能用在基本Slicing算法上。如果算法本身带有一些设定,那么我们会更容易搞清楚它们里面到底用了怎样的技术,否则我们只能通过对一段连奏乐句进行减速测试才能知道实际上使用的技术。当你了解了背后的技术之后,你就能更清楚哪种技术适用那种音频。


内部的音频“切片” (在Logic里)  

同时只有一个音符

Monophonic算法通常是设计给单复音音频文件使用的——同时只有一个音符的旋律或者乐句,比如人声和贝斯。但是你需要注意,如果你的吉他贝斯乐手偶尔演奏了双音,或者人声中混合了一些和声,就会影响Monophonic算法的工作。Monophonic也许会花费很长的时间来检测文件,因为它不单止要检测瞬态,还需要检测频率来确定什么时候出现了不一样的音符,比如吉他的左手击弦(hammer-on)、无品贝斯上的滑弦(slide)以及人声中的装饰音。为了检测这些没有明显音头的音符,Monophonic算法需要检测频率来确定在哪个位置频率的改变足以确定出现了一个新的音符。除去一些可能误判的检测,大部分Monophonic算法都能在我举出的例子上有不错的表现,这种算法适用于大部分solo乐句部分(除去那些上面提到的注意事项)以及单独的人声乐句。

所有的音符

Polyphonic模式是设计用于处理数个音符同时发声的音频的——全复音——包括扫弦吉他、钢琴、键盘乐器甚至终混文件。你没猜错。这种模式通常是最消耗CPU性能的,但是这种模式能够处理绝大部分音频类型。事实上,大部分DAW都因为这个原因都把Polyphonic模式作为默认算法,尽管对于很多没有音高的鼓和打击乐音轨,简单的Slicing/Rhythmic模式,消耗更少的CPU,也许更有效率,还有Monophonic模式——通过特定的算法——能为特定的音轨提供更好的声音效果。但是对于大部分音频来说,Polyphonic模式更为通用。

现代的时间伸缩软件在大部分音频文件上都能得到非常好的效果,但仍有一些音频文件会出现问题。由于一些问题,扫弦吉他通常很难获得良好的时间伸缩效果——也许是因为扫弦吉他包含很多快速的音头组成的瞬态(拨片扫过不同的弦);不同琴弦上的细微音高区别;以及这种明亮的声音里包含的更高的丰富泛音,都让这种声音变得更难检测,这是我最常见到时间伸缩功能出问题的类型。
如果软件提供了可以调整的设置,你也许需要尝试一些不同的参数设置。在某些情况下唉(比如ProTools),有一个off-line的设置就和realtime处理上有些微差别。其他的DAW(比如Logic)提供了一种“高品质”模式,甚至能在实时处理中表现的非常好,尽管需要明显地消耗更多CPU。但是大部分时间里,标注你的Polyphonic时间伸缩通常能够解决大部分问题。

复古算法

通常DAW里还会有一种时间伸缩算法,不过在不同的DAW里会有不同的叫法——这种算法模拟了磁带和唱盘机以及老式的采样率调整的效果,同时改变速度和音高。显然,这种算法是用来做特殊效果的,比如模仿出色的唱盘机的变快或者暂停,这种效果也可以很简单地通过DAW的速度音高自动化控制来实现。

结论

所以我们有不同的算法用于不同的情况。很多人之前也许忽视了这些选项,只是打开时间伸缩功能就直接使用了(通常就是Polyphonic模式),从来没有尝试过别的选项,有一些算法对于某些音频文件来说也许能得到更好的结果。现在,你知道了这些算法,也知道了它们的原理了,那么你就可以有更多的选择来让最后的声音处理结果变得更更好了——只需要几分钟的尝试是非常值得的。

下一条:已经没有了