Blog

把聲音切成顆粒!用Max/MSP來編寫「顆粒合成(Granular Synthesis)」效果

Screen Shot 2019-01-14 at 7.46.55 PM

顆粒合成(Granular Synthesis)是數位音訊發展中,一個相當有趣且具有特色的聲音合成技術。簡而言之,這種合成法是把一小段聲音,想像為一個整體,將其切碎成許多細小的顆粒(Grain),並透過不同音訊調變手法去處理,例如快轉、回放、停留在某一處等等。

「顆粒合成法」主要以「時間」為運算基本單位。把成千上萬個人耳已難以分辨的聲音顆粒,相互堆疊、重組、改變速度後,就能創造複雜且多變的聲音織體。由於電腦運算能力提升,創作者們現在可以很容易地在更細緻的切分單位與聲音層次上做變化。這類帶有特殊質地(Texture)的聲響,目前也被大量應用於數位音樂、電子音樂及實驗聲音創作中。

A, B, C分別為從同一個音訊Sample中所擷取出的不同聲音顆粒。

想了解更多關於「顆粒合成」在物理與數學上的運算細節,可參考wiki上的資料以及這篇文章。這邊分享幾個國外作曲家的經典案例:

之前我們曾上傳過一部Demo影片:

這次我們在Max程式中以中英文加註了比較清楚的說明,方便大家使用。

在Max中編寫的簡易顆粒合成效果,預留了幾個常見的控制項。

在這邊跟大家解釋一下每個小區塊的功能。上可以看到幾個有數字的黃色小圓圈。小圓圈0是效果的開關。小圓圈1是讓使用者可以直接把sample丟進去讓效果器讀取,寫進[buffer~]中,並且會同時抓取該sample的長度。此區塊有一個Slider讓使用者可以調整欲播放的位置(Sample Position)

小圓圈2是調整「顆粒播放的長度(Duration)」,今天聲音的顆粒,大小方面,可以像一粒沙,也可以像一顆大饅頭。當你擾動這些顆粒,即使原始的聲音素材相同,但因為顆粒的大小不同,自然會出現的聲音質感就會很不一樣。此區塊所放置的Slider可以設定「範圍」,範圍越大,你的顆粒長度就越長、概念上就越大顆。2毫秒以內的時間長度,通常會聽起來像極短的click聲,將無法分辨其原始內容;大於25毫秒後會逐漸清晰、可聽出該聲音事件的輪廓。

小圓圈3是聲音Sample的「播放速度」顆粒的「間隔(Interval)」。想像你抓了一把顆粒,你撥弄顆粒的速度可快可慢、顆粒跟顆粒間的間隔距離也可大可小。播放速度越快,音高就會越高,這邊類似於移調(Transposition)效果。「間隔」越大,則顆粒跟顆粒間的時間差也會越大。若是間隔時間設定極短、顆粒又很大的話,就會互相覆蓋、聲音相疊。間隔時間大到一定程度,例如300毫秒以上,聽起來就會有點類似DJ常用的Stutter或Beat Repeat效果。

小圓圈4是音量的Envelope。這邊相信常使用合成器的玩家們都很熟悉,就是改變顆粒聲音出來跟消失的速度。在本次分享的Patch中,數值都是設定為0-1的浮點數。

大家應該有注意到,這些控制項都是用send/return的方式送出與接收,讓Patch整體上看起來不至於太凌亂。這些與顆粒運算有關的數值,包括Position、Length、Transposition、Envelope AR等等,最後都送到一個叫voice的subpatch。截圖如下,其中[play~]這個物件是用來重複播放使用者丟進去的聲音素材,依照控制需求不同,也可用[groove~]物件來替換。

透過簡單的幾個參數設定,替換預錄Sample就可以創造出各式各樣帶有不同氛圍的聲音質地,是不是很好玩呢?聲音合成就是一件看似抽象,深入探究卻如此有趣的事情。

這個效果示範的特色,在於其架構相當直接明瞭,沒有額外的複雜迴圈且不耗CPU,因為過程中完全沒有用到[poly~]物件,所有訊號處理都是在單一層級的運算中完成。[poly~]的使用技巧較為進階,通常在比較大的專案中才會採用。在Max官方的教學示範中,顆粒合成的應用被放置於[poly~]相關章節中。

本篇文章所介紹的完整Patch,目前已更新於會員下載專區,只要成為會員就能直接下載來使用與修改。


大家的小額支持,就能讓我們持續在台灣推廣與經營「音樂x科技x藝術」這一相對小眾的市場。有任何問題或想法,例如想要把某一效果改寫成Max for Live格式等等,都歡迎提出與討論!

Write a comment