我有一个包含一系列和弦的 wav 文件,每个和弦包含 3 或 4 个音符,同时播放。
我需要找到每个和弦中每个音符的频率,我可以使用 matlab 进行任何计算。
目前我认为我需要找到 wav 文件的频谱图并将频率从标准频率转换为正常频率(我知道采样率)。这是频谱图:
这是解决这个问题的好方法吗?
我已经尝试过了,但频谱图并不是特别有用。有没有我忽略的替代方法?
我有一个包含一系列和弦的 wav 文件,每个和弦包含 3 或 4 个音符,同时播放。
我需要找到每个和弦中每个音符的频率,我可以使用 matlab 进行任何计算。
目前我认为我需要找到 wav 文件的频谱图并将频率从标准频率转换为正常频率(我知道采样率)。这是频谱图:
这是解决这个问题的好方法吗?
我已经尝试过了,但频谱图并不是特别有用。有没有我忽略的替代方法?
和弦音高估计仍然是一个难题。在MIREX论坛上搜索当前的研究论文。简单的基于频谱的方法通常需要具有极其简单的音色(几乎是纯的未调制正弦波等)的分量音高,这在现实生活中的复调音乐中很少见。更典型的和弦音乐可以包含一组密集的重叠泛音以及其他瞬态噪音。除了频谱和包络信息的任何信号处理之外,创建复音和弦的更复杂的音色可能需要基于统计模式匹配的方法(针对潜在乐器声音的数据库)和/或机器学习算法。
频谱图是有问题的,因为频率没有很好地定位。您最好选择一个仅包含一个和弦的时间窗口并运行 FFT 来识别频率。请注意,FFT 基本上会将您正在寻找的实际频率量化到 bin 中。频率区间的分辨率取决于时间窗口的长度。时间窗越长,频率分辨率越好。
作为替代方案,您可以研究所谓的恒定 Q 变换,它可以调整为使频率箱与音符的正常进程对齐。见: http ://www.elec.qmul.ac.uk/people/anssik/cqt/smc2010.pdf