2011-12-11 52 views
7

我擡頭看了一些代碼,好像一切都在創建一些數學函數波,但是我想要一個單音,或者一個用自定義單音製作的自定義波。如何使用Delphi播放單音或自定義波?

我讀這 How can I generate continuous tones of varying frequencies?

這是接近我的答案。 Assumin我要使用waveOutWrite就像上面的鏈接,我似乎無法弄清楚如何計算HWAVEOUT中每個樣品的放大器/頻率。

在從鏈接的代碼它的完成這樣的: Samples[i] := round(vol*sin(omega*t));

假設我想用一些放一個15kHz的頻率單音(並不重要),如何將一個樣品[1]來計算?

回答

9

的連續(時間上)的正弦波可以被定義爲A*sin(2*PI*f*t),其中A是一些幅度,PI是,井,3.14 ...,f是以赫茲爲單位的音調頻率和t以秒爲單位的時間。現在

,因爲你沒有連續的時間,因爲你的時間是離散的,你代替t替代dt*i並獲得A*sin(2*PI*f*dt*i),其中dt是樣品或1/sample ratei之間的時間是樣本數。你可以拼寫爲A*sin(2*PI*(f/Fs)*i)。請注意,一旦您選擇某個採樣率Fs(以採樣/秒或簡單爲Hz),最高音調永遠不會大於Fs/2 Hz。

+0

非常感謝! – MitziMeow

相關問題