0

10kHzの正弦波を別の12kHzの正弦波に追加し、それらを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;
    }
}
4

1 に答える 1

0

正弦波の振幅を 1 に設定すれば、問題ありません。2 つの正弦波を一緒に追加すると、新しいものの最大振幅が 2 になる可能性がありますが、これは間違った数値であり、歪みと高調波が作成されます。

それぞれの振幅を 0.5 に設定したので、最大値は 1 で、問題は解決しました。

于 2012-11-26T10:26:42.790 に答える