以编程方式从.Net获取wave或MP3的BPM

时间:2010-05-06 14:38:05

标签: .net algorithm audio vst

我有一个项目要求使用.Net(VB.Net或C#)以编程方式获取wave或MP3文件的BPM。

有没有人知道这个二进制文件或库,或者有一个代码片段引导我朝正确的方向发展?

3 个答案:

答案 0 :(得分:2)

这是一个拥有C#库的商业产品。还可以进行试用:http://adionsoft.net/bpm/

答案 1 :(得分:2)

对于从.NET代码中获取WAV或MP3样本的部分,我使用NAudio(在CodePlex上),免费,可用于商业应用程序,没有真正的文档,只是示例代码。

答案 2 :(得分:2)

首先,如果你想用.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论文。