我一直在研究吉他调音器应用程序。我知道 FFT 对于这种应用程序来说是一个糟糕的选择。然而,随着截止日期越来越近,我最初提交的规范指定使用该算法。所以不幸的是我被它困住了。
感谢对先前问题的回答和对本博客的使用:http: //blog.bjornroche.com/2012/07/frequency-detection-using-fft-aka-pitch.html
我有一个应用程序,它接收音频,计算频率和两个图表,并将结果与 5 个八度音阶的已知音符范围进行比较。
最后一个问题是计算出的频率仍然与读入的频率不同。我使用了在线提供的频率发生器,我发现它会得到高于或低于给定音符的频率。
例如,读入 C 将在不同的八度音阶上得到升 B 或升 C。手机与噪声源的距离也会影响读数。
是否有发生这种情况并修复的已知示例,或者是因为 FFT 算法,我的应用程序无法正常工作?
我的代码可以在上一篇找到: Displaying a double (frequency) that is不断更新,同时使用Android录制
添加了一个低通滤波器以消除背景环境噪声,并添加了一个环形缓冲区以获得给定几个频率的平均值。