gpt4 book ai didi

c++ - 将音频从输入直接馈送到输出,听起来很干净 c++

转载 作者:行者123 更新时间:2023-11-30 04:36:41 25 4
gpt4 key购买 nike

我目前正在尝试接收声音并将其反馈给扬声器。我正在使用 openframeworks 库,这使得这相当简单。

我正在使用这个类

http://www.openframeworks.cc/documentation?detail=ofSoundStream

设置函数是

ofSoundStreamSetup(int nOutputs, int nInputs, ofSimpleApp * OFSA, int sampleRate, int bufferSize, int nBuffers)

我正在使用

ofSoundStreamSetup(1, 1, this, 44100, 512, 4)

我的标题信息是

float buffer1[1000000];
float buffer2[1000000];

float* readPointer;
float* writePointer;
int readp;
int writep;

我有两个函数

audioReceived (float * input, int bufferSize, int nChannels)

if (writep < 10)
{

for (int i = 0;i < bufferSize; i++)
{
writePointer[writep*i] = input[i];
}

writep++;

if (writep >= 10)
{
writep = 0;
}
}


audioRequested(float * output, int buffersize, int numChannels)
{
if (writep > 0)
{
for (int i = 0; i < bufferSize; i++)
{
output[i] = readPointer[readp * i];
}


readp++;

if (readp >=10)
{
readp = 0;

}

}
}

这是有效的,但质量似乎很不稳定。我想我可能必须实现适当的循环缓冲区或双缓冲,但我不确定。

任何人都可以指出我如何使用尽可能简单的方法使音频听起来不错的正确方向吗?

最佳答案

我肯定会建议使用双缓冲。否则,在您需要缓冲区的同时缓冲区变得可用。这可能会导致您编辑当前正在使用的缓冲区。

通常,当收到音频时,将其添加到缓冲区 1。当请求音频时,将其放入缓冲区 2。现在,当收到音频时,将其放入缓冲区 2,当请求到达时,将其放入缓冲区 1。依此类推。

关于c++ - 将音频从输入直接馈送到输出,听起来很干净 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4445277/

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