gpt4 book ai didi

c++ - 如何获取 wav 文件中存在的音符列表?

转载 作者:搜寻专家 更新时间:2023-10-31 01:53:17 25 4
gpt4 key购买 nike

我正在编写一个程序来帮助人们学习吉他。为此,我需要能够查看时间样本并查看他们演奏了哪些音符。我查看了 FFTW,但我不明白如何让它发挥作用。我也试图找出 Goertzel 算法,但它似乎只适用于单频音符,如拨号音(虽然不确定)。明确地说,我确实需要能够检测到多个音符(以查看是否演奏了一个和弦),但如果其中也有一些谐波也没有太大关系。

我正在用 C++ 编写代码,并且更喜欢跨平台的解决方案。

更新:我意识到检测特定音符并不是那么重要;我真正需要的是检查某些频率是否存在,而其他频率是否存在。例如,如果有人弹奏 C,我想检查是否存在 C 频率(大约 262 赫兹),以及可能的 524 赫兹和 786 赫兹,并检查附近的音符泛音系列中的附近(如 B 和 D)不存在。

最佳答案

音符不存在于 wav 文件中。采样声音是。

人类可能会察觉到一些音符可能已经被弹奏以在某些 wav 文件中创建声音,但是从录制的声音中自动复音音高估计/识别到转录的音乐中以获得丰富而复杂的波形,例如吉他产生的,仍然会出现成为一个高级研究课题。

如果可能,对于某些非常受限的音乐声音类型,将涉及一些重要的 DSP。 FFTW 可能对音高估计所需的更复杂的 DSP 处理的一小部分有用,而 Goertzel 滤波则没那么有用。

关于c++ - 如何获取 wav 文件中存在的音符列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11388053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com