以变​​化的频率产生正弦波

时间:2013-03-02 22:05:33

标签: algorithm audio signal-processing sin

我正在使用以下函数生成正弦波,以便在我的音频应用程序中播放:

public double NextSample(double frequency)
{
    Math.Sin(2.0 * Math.PI * frequency * position++ / sampleRate);
}

其中'position'只是已请求的样本总数(因此'position'除以'sampleRate'代表当前时间)。

只要传递给它的频率保持不变,该函数就会产生预期的结果。但是,如果我尝试在频率之间进行扫描,结果很奇怪。我不能真正描述它,除了说频率在变化时,函数的输出听起来不像传递给它的频率。

任何人都能解释一下吗?

编辑:供将来参考,以下是解决方案:

public double NextSample(double frequency)
{
    Math.Sin(phase += 2 * Math.PI * frequency / sampleRate);
}

0 个答案:

没有答案