生成正弦波:不正确的输出

Generating a sine wave: incorrect output

本文关键字:输出 不正确 正弦波      更新时间:2023-10-16

我正在尝试在rtaudio中生成一个简单的正弦波来验证我了解发生了什么。但是,这是错误的。

我有一个全局float timec,并且用openStream调用回调,该回调应填充样品。

float freq = 440; // center frequency
int SAMPLE_RATE = 44100;
for (int i = 0; i < numFrames; i++) {
    float v = sin(2 * M_PI * freq * (timec / SAMPLE_RATE));
    outputbuffer[i] = v;
    timec++;
}

我做错了什么?我听到低调的声音而不是正弦波。

回答我自己的问题。

rtaudio以棘手的方式处理输出缓冲区。浮子数组不适用于单个单声道通道,它包含代表每个通道的一个帧的插槽,然后为下一个帧等几个插槽等。键校正,因为该输出具有2个通道,因此是:

outputbuffer[2 * i] = v;

仅在一个通道上输出。