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

我查了一些代码,好像一切正​​在创造一些math函数的波,但我想要一个单一的音,或用自定义的单音制作的自定义波。

我读了这个如何产生不同频率的连续音?

这是接近我的答案。 Assumin我要使用waveOutWrite就像在上面的链接,我似乎无法弄清楚如何计算每个样品在HWAVEOUT amp / freq。

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

假设我想用一些放大器来获得15kHz频率的单音(哪个不重要),如何计算Sample [1]?

Solutions Collecting From Web of "如何用Delphi来播放单音或自定义波形?"

连续的(时间上的)正弦波可以定义为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。