1

我意识到这里已经有一些关于和弦检测算法的问题。然而,其中大部分似乎更多地与将歌曲解释成和弦集或和弦转录有关。我的问题应该简单得多,因为我只对录制吉他和弦的单个弹奏感兴趣,然后对其进行分析以返回播放的和弦。并且,如果这被证明太难了,那么简单地能够判断一个特定的和弦是否被正确弹奏就足够了,例如,向用户展示一个尝试弹奏的和弦,并且在弹奏之后,应用程序会告诉他们他们是否演奏了正确的和弦(某种记忆游戏)。我认为第二个选项会更容易,因为应用程序已经知道期望什么和弦。

作为同一应用程序的一部分,我已经在吉他调音器中使用 FFT 和谐波乘积频谱,并且非常想获得一些关于如何分析 FFT 输出的频谱以识别吉他和弦的建议。我也愿意接受有关此事的任何其他建议,并且非常感谢我能得到的任何帮助。

谢谢

4

4 回答 4

1

您可以尝试对最常见的和弦进行指纹识别,然后在您的指纹集中寻找最接近匹配的归一化频谱。例如,将其视为频域中的模式匹配问题。

于 2012-02-25T05:35:15.617 回答
0

对于任何想知道如何做这种事情的人,请查看谐波产品频谱和音高类配置文件/色度向量。这些的组合是关键。此外,使用搜索词“多重 F0 估计”而不是“和弦检测”将保证更好的结果 :)

于 2012-03-27T13:20:21.143 回答
0

虽然来不及回复了,希望对你有帮助。。

如果您正在为电子或 MIDI 吉他或任何其他 MIDI 乐器编程,那么有一个非常有效的 Java 包 JFugue 用于这些东西,例如检测和弦音符等。对于任何乐器,这个包中有更多的功能。我建议你看看它Jfugue.org

于 2012-04-07T20:23:39.160 回答
0

我自己一开始发现很难使用 FFT 识别整个和弦。但就我的实验而言,我能够使用 FFT 作为获取单个声音数据频率的基本算法来制作吉他和弦标识符。FFT 调谐器的问题在于它们只能检测声音的根音。虽然我的实验证明您可以记录正在演奏的弦乐的所有音符,并使用已识别的音符来判断正在演奏的和弦。就目前而言,我的研究还仅限于检测吉他的大和弦以及一些小和弦,如 Em 和 Am,以供进一步研究。

于 2018-02-13T07:14:12.587 回答