objective-c - 在缓冲区中添加2个正弦波会产生噪声

标签 objective-c ios audio signal-processing

当我将一个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/

相关文章:

ios - 无法更改 watchOS 2 中动画动态图像的持续时间

c# - 我的程序准备好进行 FFT 了吗?

objective-c - Objective-C 中接受的重试 URL 请求的方法?

objective-c - 自定义步骤 UISlider

ios - 在 iOS 中选择部署目标

java - 创建新的随机音频文件时,播放随机音频onClick不会重置-Android

python - 计算 wav 文件和录制声音的频谱图(音量归一化)

ios - 从对应的父元素获取子元素的数据

ios - opencv2.framework 无法使用链接器标志 -ObjC 进行编译

ios - 导航栏上的自定义后退按钮不起作用