我在iphone上製作應用程序,我需要一種檢測通過麥克風進入的聲音的方式。 (I.e. A#,G,C♭等) 我認爲我會使用AVAudio,但我真的不知道,我在文檔中找不到任何東西..AVAudio檢測音符/音調/等。 iPhone xcode objective-c
任何幫助?
我在iphone上製作應用程序,我需要一種檢測通過麥克風進入的聲音的方式。 (I.e. A#,G,C♭等) 我認爲我會使用AVAudio,但我真的不知道,我在文檔中找不到任何東西..AVAudio檢測音符/音調/等。 iPhone xcode objective-c
任何幫助?
音符只不過是特定的聲音頻率。您需要一種方法來分析輸入信號中的所有頻率,然後找到一種方法來隔離單個音符。
在音頻信號中查找頻率是使用Fast Fourier Transform (FFT)完成的。有許多在線的源代碼可用來從音頻信號中計算FFT。特別是,oScope爲iPhone提供了一個開源解決方案。
編輯:Pitch detection似乎是你正在嘗試做的技術名稱。這裏SO的similar question的答案可能有用。
就像@ e.James說的,你正在尋找一個音符的音高,它叫做音高檢測。 CCRMA,斯坦福大學有很多資源可供您尋找。只需google用於Pitch Detection,您將看到一系列精彩的算法。就想要找到音頻採樣塊的FFT而言,您可以使用Accelerate Framework的內置FFT功能(請參閱this和this)或使用MoMu toolkit。使用MoMu可以將音頻流分解爲各種樣本,並使用自己的功能輕鬆應用FFT。
音樂音高估計沒有內置於iOS API的內容。你將不得不編寫你自己的DSP功能。 Accelerate框架中的FFT將爲您提供PCM採樣波形的頻譜頻率信息,但頻率與心理感知音調不同。
有很多好的和壞的方法來估計頻率和音高。我在DSP resources web page上有很多不同的估算方法。
您可以查看Apple的aurioTouch示例應用程序,獲取iOS設備音頻輸入並顯示其頻譜的示例。
音高與頻率不一樣。一張紙條可能有一個缺失的根本。 – hotpaw2
@ hotpaw2:有趣。顯示我對音樂的瞭解程度';)'。如果其他人不清楚差異,下面的文章很好地闡述了它:http://emusician.com/tutorials/emusic_pitch_vs_frequency/ –
謝謝你的洞察力! –