我有一个项目,需要使用 .Net (VB.Net 或 C#) 编程获取波形或 MP3 文件的BPM。
有没有人知道这方面的二进制文件或库,或者有代码片段可以指导我正确的方向?
我有一个项目,需要使用 .Net (VB.Net 或 C#) 编程获取波形或 MP3 文件的BPM。
有没有人知道这方面的二进制文件或库,或者有代码片段可以指导我正确的方向?
在获取WAV或MP3样本的.NET代码部分,我使用NAudio(在CodePlex上),它是免费的,可用于商业应用程序,但没有真正的文档,只有示例代码。
首先,如果您想使用.Net进行声音处理,我建议使用fmod,它非常棒并且有.Net封装(http://www.fmod.org)。
接下来,获取BPM的方法有几种,但我认为最有效的是“节拍谱”(在此处描述:http://www.rotorbrain.com/foote/papers/icme2001/icmehtml.htm)。
该算法通过将每个短音乐样本与其他所有样本进行比较来计算相似性矩阵。一旦计算出相似性矩阵,就可以获得每个时间间隔T中每个样本对{S(T); S(T + 1)}之间的平均相似度:这就是节拍谱。节拍谱中的第一个高峰大多数情况下是节拍持续时间。最好的部分是您还可以进行音乐结构或节奏分析等操作。
如果您对此领域感兴趣,我建议阅读其他Jonathan Foote的论文。