gpt4 book ai didi

audio - 使用PortAudio生成正弦波以播放中间C

转载 作者:行者123 更新时间:2023-12-02 22:50:21 26 4
gpt4 key购买 nike

我在PortAudio中生成特定频率时遇到麻烦,每当我尝试更改sin(n * FREQ * 2 * PI / SAMPLE_RATE)内部的频率时,频率都保持不变,但是声音似乎在音色中发生了变化,我输入的频率值越高,声音越难看,频率相同这是我的patestCallback循环中的内容:

static int patestCallback( const void *inputBuffer, void *outputBuffer,
unsigned long framesPerBuffer,
const PaStreamCallbackTimeInfo *timeInfo,
PaStreamCallbackFlags statusFlags,
void *userData )
{
paTestData *data = (paTestData*)userData;
float *out = (float*)outputBuffer;

(void) timeInfo;
(void) statusFlags;
(void) inputBuffer;
unsigned long n = 0;
for(unsigned long i = 0; i<framesPerBuffer;i++,n++){
float v = sin ( 261.626 * 2 * M_PI * ((float) n / (float) TABLE_SIZE) );
*out++ = v;
*out++ = v;
}

return paContinue;
}

最佳答案

简单的解决方案:

static unsigned long n = 0;

当前,您在每个函数调用中重置 n,这会导致在每个新缓冲区的开头都发出咔嗒声,并导致您听到这些难看的声音。正弦的周期与缓冲区长度的差异越大,听起来越难看。

关于audio - 使用PortAudio生成正弦波以播放中间C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14847612/

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