2012-11-25 46 views
0

當我將12 kHz的正弦波添加到另一個12 kHz時,並將它們從iPhone揚聲器一起輸出時,我可以聽到其他不應該在那裏的較低頻率。在緩衝區中添加2個正弦波會產生噪聲

爲了做到這一點,我創建了一個正弦波並用樣本填充緩衝區,然後將另一個正弦波的樣本添加到緩衝區。

這些單獨的正弦波中的每一個都單獨正常工作,但是當它們合併時,我可以聽到之前沒有的畸變。

這是我的回調代碼:

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; 
    } 
} 
+0

你覺得哪個頻率不應該在那裏?你會得到一個2KHz的分量和一個22KHz的分量。 –

+0

@HotLicks爲什麼應該有這些組件?即使你正在考慮將三角函數轉化爲積,我們也沒有談論這個。 –

+2

首先檢查它是否只在一個頻率下正常工作。然後添加兩個頻率,但將兩個幅度除以2.您可能會達到一些增加失真的閾值,從而增加較低頻率的諧波(這些將是Hot Licks所說的組件,尤其是低頻組件)。 –

回答

0

如果您將正弦波是在振幅1,這就是好的。 如果將2個正弦波加在一起,那麼新的最大振幅可以是2,這就是錯誤的數字,併產生失真和諧波。

我已經在它們的每一個上設置了幅度爲0.5,所以最大值爲1,並且它解決了問題。