如何使用Delphi播放单音或自定义波?

时间:2011-12-11 09:25:54

标签: windows delphi playsound

我查了一些代码,似乎所有东西都在创建一些数学函数波,但我想要一个单音,或者用自定义单音制作的自定义波。

我看了这个 How can I generate continuous tones of varying frequencies?

这与我的回答很接近。 Assumin我将在上面的链接中使用waveOutWrite,我似乎无法弄清楚如何为HWAVEOUT中的每个Sample计算放大器/频率。

在链接的代码中这样做: Samples[i] := round(vol*sin(omega*t));

假设我想要15kHz freq单音和一些放大器(无关紧要),那么样本[1]将如何计算?

1 个答案:

答案 0 :(得分:9)

连续(及时)正弦波可以定义为A*sin(2*PI*f*t),其中A是某个幅度,PI是,3.14 ......,f是以赫兹为单位的音调频率,t是以秒为单位的时间。

现在,由于您没有连续时间,因为您的时间是离散的,您可以用dt*i代替t并获取A*sin(2*PI*f*dt*i),其中dt是样本之间的时间或1/sample ratei是样本编号。您可以将其拼写为A*sin(2*PI*(f/Fs)*i)。请注意,一旦您选择某个采样率Fs(采样/秒或简称Hz),最高音调永远不会大于Fs/2 Hz。