gpt4 book ai didi

c++ - 生成正弦波 : incorrect output

转载 作者:行者123 更新时间:2023-12-03 02:37:18 30 4
gpt4 key购买 nike

我正在尝试在 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 以一种棘手的方式处理输出缓冲区。浮点数组不是针对单个单声道 channel ,它包含表示每个 channel 一帧的插槽,然后是下一帧的多个插槽,等等。由于此输出有 2 个 channel ,因此关键校正是:
outputbuffer[2 * i] = v;
仅在一个 channel 上输出。

关于c++ - 生成正弦波 : incorrect output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46555509/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com