吉他弦的FFT音高检测

时间:2010-12-21 15:50:48

标签: fft frequency-analysis pitch-tracking

我只是进行音高检测。输入(麦克风)数据传递给fft例程,然后我正在寻找具有最大值的音高意味着:

Max(pow(data[i].getRe(), 2) + pow(data[i].getIm(), 2)) for 0<= i < SAmplesSize

我需要它来检测吉他弦的主要频率。它适用于频率440赫兹(也许更高,我没有检查)下降250赫兹。低于此值,检测到的频率是应有的两倍,即。对于195赫兹,检测到的频率约为380赫兹。它看起来像检测到低于250赫兹的高次谐波。对于纯195 hz音调,它可以完美地检测到,但对于quitar弦乐来说,有些不对劲。

任何可能导致这种情况的建议?或者我应该使用更复杂的音高检测?

聚苯乙烯。采样率:8000hz,输入数据大小:1024

1 个答案:

答案 0 :(得分:1)

我不知道具体的吉他,但missing fundamentals似乎在声学中很常见。 pitch detection上的维基百科页面提到了FFT之后的二级处理步骤,其中一个可能会有所帮助。

此外,请参阅这两个SO问题,其中有很多好消息:(1)(2)