【问题标题】:FFT pitch detection for guitar string吉他弦的 FFT 音高检测
【发布时间】:2011-05-28 21:59:22
【问题描述】:

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

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

我需要它来检测吉他弦的主频率。它适用于频率 440 赫兹(也许更高,我没有检查)到 250 赫兹。低于这个值,检测到的频率是它应该的两倍,即。对于 195 赫兹,检测到的频率约为 380 赫兹。看起来它检测到低于 250 赫兹的高次谐波。对于纯 195 赫兹的音调,它可以完美地检测到,但对于 Quitar 弦则有问题。

有什么建议会导致这种情况吗?还是应该使用更复杂的音高检测?

附言。采样率:8000hz,输入数据大小:1024

【问题讨论】:

标签: fft frequency-analysis pitch-tracking


【解决方案1】:

我不特别了解吉他,但missing fundamentals 似乎在声学中很常见。 pitch detection 上的 Wikipedia 页面暗示了 FFT 之后的二次处理步骤,也许其中之一会有所帮助。

另外,请参阅这两个 SO 问题,那里有很多很好的信息:(1)、(2)。

【讨论】:

  • 谁能告诉我如何通过这个链接计算 Rd tedknowlton.com/resume/CCPPT.htm for: ftt size: 512 frequency of interest: 440Hz ?
  • 和采样频率:8000hz
  • @cartoon_20 - 我扫描了纸张并没有看到 Rd - 你在看哪一页?
  • @mtrw - 在“使用中间 C 测量值的示例计算”表中,位于“图 5. FFT Bin 插值”图下方。 Rd - 它是关于下采样率
  • 这是下采样率,或比率。如果 FSample 为 N,并且您下采样到 N/K,则下采样率为 K。如果您感兴趣的频率为 440 Hz,则您至少需要 FSample > 880 Hz,可能更像是 1200 才安全。如果原始FSample为8000,则需要K
猜你喜欢
  • 2011-07-24
  • 1970-01-01
  • 2017-05-30
  • 2013-09-12
  • 2012-03-25
  • 2014-07-11
  • 2011-09-23
  • 1970-01-01
  • 2011-06-29
相关资源
最近更新 更多