我有点卡在这里,因为我似乎无法找到一些算法来尝试区分产生的声音是和弦还是单个音符。我正在研究吉他乐器。
目前,我正在尝试获取振幅最高的前 5 个频率,然后确定它们是否是基波的谐波(振幅最高的那个)。我正在研究单个音符比和弦包含更多谐波的理论,但我不确定是否是这种情况。
我正在考虑的另一件事是尝试添加谐波的各种幅度值,并将包含“假定和弦”的音符与 FFT 的结果进行比较。
你能帮帮我吗?这将不胜感激。目前,我只先处理大调和小调和弦。
非常感谢!
我有点卡在这里,因为我似乎无法找到一些算法来尝试区分产生的声音是和弦还是单个音符。我正在研究吉他乐器。
目前,我正在尝试获取振幅最高的前 5 个频率,然后确定它们是否是基波的谐波(振幅最高的那个)。我正在研究单个音符比和弦包含更多谐波的理论,但我不确定是否是这种情况。
我正在考虑的另一件事是尝试添加谐波的各种幅度值,并将包含“假定和弦”的音符与 FFT 的结果进行比较。
你能帮帮我吗?这将不胜感激。目前,我只先处理大调和小调和弦。
非常感谢!
Chord recognition is still a research topic. A good solution might require some fairly sophisticated AI pattern matching techniques. The International Society for Music Information Retrieval seems to run an annual contest on automatic transcription type problems. You can look up the conference and research papers on what has been tried, and how well it works.
Also note that the fundamental pitch is not necessarily the frequency with the highest FFT amplitude result. With a guitar, it very often is not.
你需要从我们听到声音的方式来考虑它。寻找前 5 个频率对您没有任何好处。
您需要查找 (Max Frequency Amplitude)/srt(2) 内的所有频率,以确定信号的和弦/非和弦方面。