1
我目前正试图采取的声音并反馈到扬声器。我使用的是使这非常简单的openframeworks库。喂食声音从直接输入到输出,听起来干净C++
我使用这个类
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;
}
}
}
这是工作,但质量似乎罂粟和crackly。我想我可能不得不实施一个适当的循环缓冲区,或双缓冲区,但我不确定。
任何人都可以点我对我怎么可以得到音频好听的正确方向,用简单的方法尽可能?
而不是2个独立的缓冲剂,可以我只使用一个单一的较大的缓冲区,并且只在阵列中使用不同的位置?还是有一些性能问题呢?在移动数组时,还应该使用单独的指针,还是可以使用相同的指针? – 2010-12-15 00:09:02
我没有得到这条底线,所以我将不得不等待,直到我可以在此工作了。谢谢。 – 2011-06-05 11:38:26