当我将一个10 kHz的正弦波添加到另一个12 kHz的正弦波并从iPhone扬声器一起输出时,我可以听到其他不应出现的较低频率。
为此,我创建了一个正弦波,并用样本填充了缓冲区,然后将另一个正弦波的样本添加到缓冲区中。
这些单独的正弦波中的每一个都分别正常工作,但是当它们组合在一起时,我可以听到以前没有的失真。
这是我的回调代码:
for (int i = 0; i <inNumberFrames; i++)
{
buffer[i] = buffer[i]+ sin(theta12_8) * myInstance->amplitude;
theta12_8 += 2.0 * M_PI * 12800 / (myInstance->sampleRate);
if (theta12_8 > 2.0 * M_PI)
{
theta12_8 -= 2.0 * M_PI;
}
}
for (int i = 0; i <inNumberFrames; i++)
{
buffer[i] = buffer[i]+ sin(theta10) * myInstance->amplitude;
theta10 += 2.0 * M_PI * 10000 / (myInstance->sampleRate);;
if (theta10 > 2.0 * M_PI)
{
theta10 -= 2.0 * M_PI;
}
}
最佳答案
如果将正弦波设置为振幅1,那就可以了。
如果将两个正弦波加在一起,那么新的正弦波的最大振幅可以是2,那是错误的数字,并会产生失真和谐波。
我已将每个振幅设置为0.5,因此最大值为1,它解决了这个问题。
关于objective-c - 在缓冲区中添加2个正弦波会产生噪声,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13554661/