加載中...
編曲錄音聲卡編曲錄音套裝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模式),從來沒有嘗試過別的選項,有一些算法對于某些音頻文件來說也許能得到更好的結果。現在,你知道了這些算法,也知道了它們的原理了,那么你就可以有更多的選擇來讓最后的聲音處理結果變得更更好了——只需要幾分鐘的嘗試是非常值得的。

下一條:已經沒有了