2014-02-07 45 views
-3

那麼標題會提出問題。如何確定通過iPhone上的麥克風聽到的當前音樂音符?例如調音吉他或其他樂器。iOS儀器調諧器

我環顧四周,在互聯網上,但我堅持,還有圖書館,可以在這方面幫助嗎?也許值得注意的是我只針對iOS 7以上。我似乎無法找到任何開源項目參考如何去做這個,所以任何例子都表示讚賞。

+0

可能有其他的方式去了解這一點,但確定頻率的一種方法是使用傅立葉變換。應該有開源的庫來實現它 - 事實上,你可能會找到一些完整的開源調試器程序來學習。你需要做一些研究,弄清楚你需要什麼味道。不幸的是,這個問題可能過於寬泛和偏離本網站。 – iamnotmaynard

+1

對於有類似問題的其他人,我已經開源了我的FFT吉他調諧器ios應用程序。在https://github.com/catch-twenty-two/iOS-Guitar-Tuner –

回答

4

有許多方法可以檢測信號的音高,但是圍繞它的機制將包含某些基本元素。你需要:

1)啓動音頻流從它的來源是設備的麥克風。 AudioUnits是一個不錯的選擇,但是我認爲AudioQueueServices是一個較小的陡峭的學習曲線更容易的選擇。

2)截取並且讀取來自流音頻字節。這通常是通過使用某種呈現回調函數來完成的,該回調函數將處理特定的緩衝區大小。

3)在呈現回調執行您的基音檢測算法。 加速框架有很好的dsp功能選擇,這將有助於完成工作。

4)手柄的結果相應地作爲更新UI等這樣..從2

5)重複)在時域中

普通技術檢測,過零,使用自相關或最大似然。在頻域

常用的技術包括離散傅立葉變換(DFT)和諧波的產品系列(HPS)

這確實是一個很大的話題,並有大量的信息在那裏就可以了。 (包括開源,博客,西元,TUTS)

Here's one to get started using FFT