我正在处理的应用程序的一部分将作为调谐器工作。我希望能够使用iPhone显示用户给出的信号的峰值频率。我使用了SCListener,它在iPhone模拟器上运行得非常好。然而,当我在真实设备上尝试它时却没有。
论坛建议我使用apple FFT并加速Framework来做到这一点,但它似乎过于复杂。我真的很感激,如果任何编程过调音器或类似设备的人都能指出我的方向!
谢谢!
答案 0 :(得分:4)
有一个related post on dsp.stackexchange。它表明,如果基波的幅度低于谐波,则自相关在寻找基波时将比FFT更好。自相关比FFT稍微不那么棘手。加速框架将再次为您提供帮助。但通常情况并非如此。
我不知道任何开箱即用的解决方案将为您完成所有工作。 vDSP编程指南有specific worked examples for real FFTs,您可能需要查看它,需要一些时间来适应,但它确实值得。 FFT似乎是峰值频率提取中最合乎逻辑的第一步,我担心。大多数消息来源似乎也建议在运行FFT之前对时域信号应用窗口函数是至关重要的(或者由于四肢的不连续性,你会得到高频伪像)。
您也可以查看this related SO post。
答案 1 :(得分:2)
峰值频率通常与人们希望(音乐)调谐器估计的音调频率不同。查找音高估计。
答案 2 :(得分:1)
根据之前的经验:
希望有所帮助。
答案 3 :(得分:0)
感谢所有答案!我错过了我的代码中的一部分,以使SC侦听器在设备上工作,但现在正在尝试为Apples自己的AVAudioRecorder更改它,因为它假设要快得多。问题是cocos2d框架阻止了声音的录制,直到你调用了允许这种方法的方法。它现在就像一个魅力! :) 再次感谢!