【问题标题】:Extracting notes from chords in C#在 C# 中从和弦中提取音符
【发布时间】:2011-08-24 20:30:14
【问题描述】:

目前我没有代码可以帮助我,但快速傅里叶变换可能与我的目标有关。

我想获取麦克风输入并从和弦中“提取”音符,无论它们是口语元音还是乐器。我想在某个提示后在列表中显示提取频率的值。提示并不重要。

感谢大家的帮助,如果有需要我会补充的

【问题讨论】:

  • FFT 完全符合您的要求。
  • 许多副本已经在 SO 上有很好的答案,例如Chord detection algorithms?
  • 是的,但我不知道如何使用它。有什么好的教程吗?
  • FFT 将为您提供原始频率,您需要自己将其转换为音符(简单转换)。比如440Hz就是A1
  • 您确实需要阅读之前的一些 SO 答案 - 它们涵盖窗口函数、计算功率谱、估计峰值频率等

标签: c# audio fft


【解决方案1】:

正如其他人已经提到的那样,SO 有很多很好的问题来详细解决这个问题。然而,应该注意的是,在大多数这些问题中,您会读到很难提取构成和弦的音符并且不会准确。您可能最多只能做出有根据的猜测。

【讨论】:

    【解决方案2】:

    这已经在 SO 上多次介绍过,但基本上你是这样做的:

    • 应用窗口函数(例如 Hanning)
    • 计算 FFT 以获得复频谱
    • 计算幅度 (sqrt(re*re+im*im)) 以获得功率谱
    • 在功率谱中找到峰值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      • 2016-02-19
      • 2021-02-08
      • 1970-01-01
      • 1970-01-01
      • 2011-10-14
      相关资源
      最近更新 更多