2014-01-24 129 views
0

我想製作一個Android應用程序,用於收聽麥克風,並向揚聲器播放完全相同的聲音,但只改變頻率。 說我想玩總是加倍頻率相比,輸入。 我嘗試使用調音器,並使用該頻率使用AudioTrack類播放新音符,但聽起來與輸入無關。 (我猜是因爲泛音消失了。)Android - 從不同頻率的麥克風播放聲音

所以我已經知道輸入的頻率,但是我想改變頻率而不是僅僅發揮一個新音符,因爲它聽起來會有很大的不同。

有誰知道如何做到這一點? 在此先感謝, Jeroen D.

回答

0

這似乎是一個信號處理問題,而不是編程問題。

你說得對,所有自然的聲音都像人類的聲音一樣有着廣泛的頻率。所以你不能通過單一頻率逼近麥克風輸入,只需改變該頻率。相反,您需要一種「調製」技術:使用低通濾波器對輸入進行濾波,將其乘以另一個正弦波,移除圖像,並將最終結果輸入到AudioTrack。請參閱教科書「信號和系統」的基礎知識。

+0

謝謝,我想出了一個想法:如果我知道特定時間的振幅,我可以使用正弦迴歸來獲得正弦方程,從而得到頻率。但這是否也能解決泛音問題?我假設麥克風確實記錄了所有泛音,因此只需計算每個幅度的所有正弦函數就可以給出正確的解決方案? – JeroenD

+0

你完全正確。任何音調都可以由多個正弦/餘弦波的組合來表示。獲得正弦/餘弦波係數的最有效方法是fft。您需要將音頻數據樣本分組來做fft,而不是按樣本進行抽樣。單個數據點不包含任何頻率平均值,只有一部分數據。 – Daniel

相關問題