我没有MATLAB的经验,不幸的是我的项目是在MATLAB中。
基本上,目标是将音乐源(最好是mp3格式,但.wav也可以)读入MATLAB,然后应用低通滤波器,以便过滤除节拍之外的所有内容。然后它应该得到每个节拍发生的时间并将结果写入文本文件。
答案 0 :(得分:4)
使用.wav文件我觉得相当容易一些,虽然Matlab很好地为这些事情提供了实用工具,事实上它确实如此:Reading .wav
实现低通滤波器的最简单方法是移动平均滤波器。
最简单的方法是循环数据并取每组n个值的平均值。我不确定截止频率究竟如何取决于n,但你可以尝试一下。
否则,我知道Octave有一个信号处理工具包,我认为Matlab有一个内置的过滤功能:https://ccrma.stanford.edu/~jos/fp/Matlab_Filter_Implementation.html
超越顶部的第三种方法是执行FFT并在频域中进行滤波。
获得信号的低频部分后,您可以检查高于幅度阈值的样本,并输出找到数据的位置。
答案 1 :(得分:2)
答案 2 :(得分:1)
在Matlab中你可以使用和最先进的多功能节拍跟踪器算法,算法的信息在这里发布: J.R. Zapata,M。Davies和E.Gómez,“多功能节拍跟踪器”,IEEE / ACM音频,语音和语言处理交易。 22(4),pp.816-825,2014。http://dx.doi.org/10.1109/TASLP.2014.2305252
多功能节拍跟踪器的Matlab实现是: https://github.com/JoseRZapata/MultiFeatureBeatTracking