Remove ads

卡普拉斯-斯特朗算法(Karplus-Strong Algorithm, K-S Algorithm)是一種物理建模合成方法,它通過對一個短的起始波形循環地進行「濾波-延遲」來模擬擊弦撥弦樂器,以及某些類型的打擊樂器的聲音。這種技術可以看作是在一個有梳狀濾波器反饋迴路進行減法合成;如果將存儲信號的延遲塊視作波表的話,也可以被看作是最簡單的一類波表變換算法,即「數字波導合成」[1]

Alexander Strong發明了該算法,而Kevin Karplus首先分析了它的工作原理。他們一起開發了算法的軟件和硬件實現,包括定製的VLSI芯片。他們將算法命名為「Digitar」合成,意為「數字的(Digital)」與「吉他(Guitar)」。

產生聲音

概括而言,卡普拉斯-斯特朗算法由「激勵-延遲-濾波-循環」四步組成,具體過程如下:

Thumb
  1. 生成一個L樣本長度的短激勵信號。在最初的算法中,這是一個白噪聲脈衝,但可以使用任何具有豐富諧波的信號(例如快速的正弦波啁啾或掃頻,或者單周期的鋸齒波方波)作為激勵信號,這一信號決定了最終的音色。
  2. 直接輸出激勵信號,同時逐樣本地放入同樣長度為L個樣本的暫存塊(隊列形式,先入先出)中。
  3. 暫存塊中的信號通過一個濾波器,該濾波器的增益在所有頻率下都必須小於 1,以保持反饋環路的穩定。在原始算法中,「濾波」是通過對兩個相鄰樣本求平均實現的,這種實現很簡單,僅需要移位和加法運算,無需乘法[2]。濾波器的特性決定了衰減後音調的諧波結構,一般實現中使用低通濾波器,這樣聲音的高頻分量更快地損失,與弦振動的衰減情況相似。
  4. 濾波後的結果送往輸出,同時也用以覆蓋暫存塊中的信號,接下來將這個新信號再次通過濾波器,如此循環。

下面是利用Karplus-Strong算法合成的中國民歌《茉莉花》片段,直觀地展示了調整參數對聲音帶來的影響。 前四個樂句展示了不同激勵信號對音色的影響,選用的激勵信號依次為粉紅噪聲-白噪聲-正弦波掃頻-單個周期方波;最後一部分在激勵信號不變的情況下從低到高調整濾波器截止頻率,展示了濾波器頻率對音色的影響。

Remove ads

改變音調

所得信號的基頻(最低非零泛音)是延遲和濾波器的組合在相位響應為的最低頻率,也就是說,暫存塊和濾波器組成的系統中總延遲時間的確定了所得到信號的基頻。基頻F 0所對應的相位延遲D可以由D = Fs/F0 確定,其中Fs是採樣頻率。

雖然數字延遲器的大小是採樣周期的整數倍,但可以通過插值濾波器提供延遲,從而獲得非整數倍延遲,進而微調頻率。IIRFIR濾波器都可以作為此用,但 FIR 濾波器的優勢在於,所需延遲隨時間變化時可以抑制瞬變。

最基本的非整數倍延遲實現方法是兩個樣本之間的線性插值(例如, s (4.2) = 0.8 s (4) + 0.2 s (5))。如果相位延遲隨頻率變化,諧波相對於基頻可能會變尖或變平。原始算法對兩個相鄰樣本使用相等的權重,因為這可以在沒有乘法硬件的情況下實現,從而允許極其廉價的實現。

1983 年介紹該算法的論文中說明,Z 變換分析可用於更精確地獲取諧波的音調和衰減時間[3]

保持緩衝周期(即暫存塊的長度)恆定會產生類似於弦或鈴的振動,而在短暫的激勵信號後急劇增加緩衝周期則會產生類似鼓的聲音。

Remove ads

算法的改進

因為在一些情況下合成的音色類似於撥弦,Alex Strong和Kevin Karplus認為K-S算法某種意義上屬於弦振動的物理建模,他們試着證明這一算法表示了弦的振動方程,但證明沒有完成[3]。 Julius O. Smith III [4]認識到,當將 K-S 算法視為數字濾波器時,其傳遞函數與振動弦的傳遞函數一致,濾波器對應於弦振動過程中的能量損失。 後來他將 K-S 算法推廣為數字波導合成(用於模擬弦、管和膜中的聲波的算法)中的一個特例[5]

K-S 算法的第一次擴展和推廣被稱為擴展 Karplus-Strong (EKS) 算法,最初於 1982 年在意大利威尼斯舉行的國際計算機音樂會議上發表在一篇論文中[來源請求],之後於 1983 年 David A. Jaffe 和 Julius O. Smith 在計算機音樂雜誌 (Computer Music Journal) 上發表的題為「Extensions of the Karplus Strong Plucked String Algorithm(卡普拉斯-斯特朗撥弦算法的擴展)」的文章[5],以及 Smith 的博士/電子工程師論文中做了更詳細的解釋。

Alex Strong開發了一種用於彈撥合成的高級波表修改方法,但僅作為專利發布。 [6][需要解釋]

Remove ads

使用該技術的產品

算法在1987年獲得了專利[7],此後專利首先被授權給 Mattel Electronics,但公司倒閉前沒有開發出任何使用該算法的產品。此後,專利被授權給了一家由一些Mattel前高管創立的初創公司。受限於資金,它們沒有完成開發,也沒有產品推向市場。最終,雅馬哈通過斯坦福大學的 Sondius 專利包獲得了該專利的許可。雖然不清楚是否由採用該算法的硬件被出售,但有許多未經過專利許可的軟件實現已經發布。

有許多遵循Karplus-Strong合成基本原則(儘管可能在具體算法上有區別)的硬件合成模塊已經被商業化地製造。這些模塊的合成方法都可以概括為:通過一個倒置的比例縮放控制系統,把一塊很小的樣本通過延遲-濾波的方法變成平均律下的音調,而音高由控制電壓或者midi信號決定。儘管一些手冊中使用了「Karplus-Strong合成」的術語,但並未特別註明發明者姓名。

支持Karplus-Strong合成的硬件合成組件包括 Moog Clusterflux 108M、Mutable Instruments 的 Elements 和 Rings、4ms Company Dual Looping Delay、2HP Pluck、Make Noise Mimeophon、 Arturia MicroFreak 以及 Strymon Starlab。

Remove ads

音樂中的應用

該算法首次在音樂中被使用是在 1981 年由David A. Jaffe創作的作品May All Your Children Be Acrobats中為八把吉他、中音女高音和計算機生成的立體聲磁帶配樂。 Jaffe在Silicon Valley Breakdown(1982)中依靠該算法生成了撥弦樂,並在後來的作品(如Telegram to the President(1984) 中的弦樂四重奏,以及Grass (1987)中的女聲合唱和錄音帶)中繼續探索了算法的音樂和技術可能性。

參考

Remove ads

外部連結

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.

Remove ads