模擬真實世界的聲音
現在,我們擁有了更多波形的知識,讓我們試著來模擬真實世界的聲音。在開始時這裡貼上一個警告鈴聲的波形圖,為了讓圖像比較清楚,這個警告鈴聲的週期是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