模擬真實世界的聲音

現在,我們擁有了更多波形的知識,讓我們試著來模擬真實世界的聲音。在開始時這裡貼上一個警告鈴聲的波形圖,為了讓圖像比較清楚,這個警告鈴聲的週期是2秒,其中1秒發出警告聲,1秒完全安靜。(此波形圖模擬真實世界中的情境:在警鈴安靜時,背景仍然會有一些雜訊,因此波形圖上會看到小幅度的震盪,實際情境可能震盪會更大些)

利用先前所學的知識,可以迅速地計算出:由於週期是2秒,因此頻率是0.5赫茲,另外由於警告鈴聲聽起來是單純的音,應該只需要一個振盪器去模擬它,於是你很高興的寫下程式碼:

oscillator.frequency = 0.5

當然,結局是什麼都聽不見。(人耳能分辨的頻率極限約在20赫茲至5000赫茲間)

因為實際上這個波的規律是這樣的:在發出聲音的那1秒內,它確實等於一個振盪器以一個未知的頻率振動,而在沒有聲音的那1秒內,它完全不振動。而由於警鈴聲是如此刺耳,必然是一個相當高頻的聲音,極為密集的波形線看起來就像是矩形一樣,非常難判斷它的頻率究竟是多少。

這裡就是傅立葉轉換再次登場的時候了

(草稿)

警告聲

oscillator.frequency = 2500.0

let envelope = AKAmplitudeEnvelope(oscillator)
envelope.attackDuration = 0.02
envelope.decayDuration = 0.04
envelope.sustainLevel = 0.1
envelope.releaseDuration = 0.04

results matching ""

    No results matching ""