本文介绍了FFT吉他调音器应用-不正确的频率的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在研究吉他调音器应用程序.我了解到FFT对于这种应用是一个不好的选择.但是,随着截止日期越来越近,我的原始规格说明中指定使用此算法.所以很不幸,我坚持了下去.

I have been working on a guitar tuner application. I understand that the FFT is a bad choice for this kind of application. However, as deadlines get ever closer, and my original specification submission specified use of this algorithm. So unfortunately I am stuck with it.

感谢您对以前的问题的解答以及该博客的使用: http://blog.bjornroche.com/2012/07/frequency-detection-using-fft-aka-pitch.html

Thanks to answers to previous questions and use of this blog: http://blog.bjornroche.com/2012/07/frequency-detection-using-fft-aka-pitch.html

我有一个应用程序,可以接收音频,计算频率和两个图表,并将结果与​​5个八度音阶的已知音符范围进行比较.

I have an application that takes in audio, calculates the frequency and both graphs and compares the result to known note ranges at 5 octaves.

最后一个问题是,计算出的频率仍然与读入的频率有所不同.我使用了在线提供的频率发生器,我发现它将获得高于或低于给定音符的音符的频率.

The final issue is that the frequency calculated still varies from the frequency read in. I have used a frequency generator provided online an I have found that It will get the frequency of a note above or bellow the given one.

例如,C读入将使B尖锐或C尖锐在不同的八度音阶.手机离噪声源的距离也会影响读数.

for example a C read in will get B sharp or C sharp at different octaves. Distance of the phone from the noise source also effects the readings.

是否存在这种情况的已知示例并已解决,或者是由于FFT算法的原因,我的应用程序无法正常工作?

Is there a known example of this occurring and fixes, or is it because of the FFT algorithm, and my application can't work correctly?

我的代码可以在前面找到:显示使用Android录制时不断更新的double(频率)

My code can be found at a previous:Displaying a double (frequency) that is updated constantly while recording with Android

已添加一个低通滤波器以消除背景环境噪声,并已添加一个环形缓冲区以获取给定频率的平均值.

A low pass filter has been added to remove background environmental noise, and a ring buffer has been added to get the average of several frequencies given.

推荐答案

如果您的频率稍微偏离一点,则可能意味着您需要使用更长的FFT或峰值估计算法(例如抛物线或其他插值法)内核)).

If your frequency is off by a little, it might mean you either need to use a longer FFT or a peak estimation algorithm (such as a parabolic or other interpolation kernel) on the FFT result.

如果FFT频率结果跳八度,则可能意味着您需要使用基音估计算法(例如倒频谱/倒频谱估计器,自相关/滞后估计器或谐波)来缩小允许的频率估计范围或低通滤波器带宽产品范围等.

If your FFT frequency result jumps octaves, it may mean you need to narrow your allowable frequency estimate range or your low pass filter bandwidth using a pitch estimation algorithm, such as a cepstrum/cepstral estimator, autocorrelation/lag estimator, or harmonic product spectrum, et.al.

还请注意错误,例如使用错误的采样率或错误的数据格式等.

Also watch out for bugs such as using the wrong sample rate or the wrong data formats, etc.

这篇关于FFT吉他调音器应用-不正确的频率的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-06 07:05