有谁知道在哪里可以找到一个matlab算法来获得音乐节奏(以每分钟节拍为单位,或其他一些衡量标准)?我尝试了这个网站:http://www.clear.rice.edu/elec301/Projects01/beat_sync/beatalgo.html,但没有给我很好的响应。
发布于 2011-11-14 17:25:25
找到音乐信号的节奏可能是一项非常困难的任务。对于一个简单的信号,其中一个音符是以固定的节奏演奏的,也许kol提出的方法可以工作,但正如奥利·查尔斯沃思提到的那样,我不认为它足够强大,不足以为更复杂的音乐信号提供一个很好的速度估计。
这与musical acoustics (特别是乐器演奏的音符的频率内容比正弦波的集合复杂得多)和psychoacoustics (特别是确定音符的开始时间受其谐波含量影响的事实)有很大关系。
一个很好的参考(尽管根据你的背景可能很难读懂)是:ftp://wgs.esat.kuleuven.ac.be/sista/bli/scheirer_jasa.pdf
你也应该在DSP:https://dsp.stackexchange.com/questions/386/autocorrelation-in-audio-analysis上阅读这个问题的答案和评论。
发布于 2011-11-14 07:11:56
如果你需要一首完整的音乐曲目的单个数字,那么你可以做一次FFT,并在相关的频带中找到最大的峰值。峰值的频率会给你节奏。
发布于 2011-11-14 19:32:10
我还没有试过哥伦比亚的this package,但也许它能满足你的需求。具体地说,它包含计算音频波形的BPM的函数tempo.m。它似乎是在GPL许可下提供的。
希望它能为你工作!
https://stackoverflow.com/questions/8115509
复制相似问题