當聲音訊號的強度在短時間內變化得很快時。就會產生喀答聲(Click),這種聲音若出現在一個有旋律的音樂裡面會很突兀,讓人覺得十分不舒服。要避免產生喀答聲,就得防止音量在短時間內急遽變化,這時候就要對聲波做「包絡(Envelope)」了。



喀答聲

在開始包絡之前,請各位先聽聽什麼是喀答聲。

喀答聲試聽

相信大家在播放完上面的音樂檔之後,都聽出來其中在轉換音符音階時明顯的喀答聲了。下面這張圖,是這喀答聲音樂檔的波形。

從圖中可以看出,在有聲音(音階)的時候,波的振幅都維持在100%。所以從無聲到有聲或是從有聲到無聲,聲音的強度幾乎是瞬間改變了100%,因而產生喀答聲。

解決喀答聲

最簡單解決喀答聲的方式就是讓聲音不會再短時間內快速變化,因此我們必須要限制波的振幅,讓它能逐漸上升或是逐漸下降。這樣限制波形的振幅的方式,稱為波形包絡(Envelope)。當然,最簡單、最不需要計算數學的方式,就是採用線性漸變,讓在進入波或是離開波的時候,振幅能夠線性上升或是線性下降。

linen

在Csound中,提供了「linen」運算子,可以輕易完成「線性波形包絡」這項工作。linen格式如下:

av linen amp, rise, dur, dec
  • av:在目前時間點下,波的數值。
  • amp:波的振幅。
  • rise:波進入時的上升時間。
  • dur:整個波持續的時間。
  • dec:波離開時的下降時間。

使用linen來消除喀答聲,rise和dec的值設在0.1左右即可。在使用oscil振盪出波的時候可以把linen的av當作是波的振幅,如此一來便可以消除喀答聲了!

消除喀答聲試聽

再看一下編譯出來的音樂檔的波形。

可以很明顯的看到,波的振幅不再像之前那樣瞬間衝到100%,因此沒有喀答聲的問題。