【问题标题】:Beat Detection from Note Onsets?从音符开始的节拍检测?
【发布时间】:2011-09-27 03:46:33
【问题描述】:

您如何确定哪些 Note Onsets 是节拍?目前,我所拥有的有点像使用所谓的“脉冲列车”的“蛮力”方法。

基本上,这个想法是,您生成从最小速度到最大速度的脉冲序列。这些脉冲序列只是表示节拍以特定速度发生的时间。例如,如果 Tempo = 60bpm(每分钟节拍数),则脉冲序列的节拍间隔为 1 秒(60 / 60 bpm)。对于 Tempo = 120bpm,脉冲序列的节拍间隔为 0.5 秒 (60 / 120bpm)。

现在基本上,我只是使用这些脉冲序列来比较和对比在假定的节拍上发生的音符起始点的接近程度。所以一般来说,这个想法是,如果音符开始发生在靠近节拍位置的地方,整体差异会更小。然后它基本上只是选择总体差异最小的节奏。

但是,我遇到了关于此实现的两个问题。

1.) 很少有完美的音符开始位置,尤其是通过录制的音乐(我正在使用),这通常会导致效果较差。

2.) 较高的速度将导致较小的间隔,这使其成为具有非节拍开始(即 8 分音符、16 分音符)的音乐的更好候选者,而不是音乐的实际更好节奏(即60bpm 加上纯 8 分音符可能会返回 120bpm)

您能否推荐一些其他(甚至是简单的)节拍检测方法?我想自己实现该算法以获得经验,因此非常感谢有用的教程链接。谢谢!

【问题讨论】:

  • 似乎是一个定义不明确的问题。如果整首歌由半音或全音组成怎么办?

标签: audio signal-processing onset-detection


【解决方案1】:

this page 上有很多有趣的方法。

【讨论】:

    【解决方案2】:

    我建议查看Dan Ellis' 技术。它很直观,并且有 Matlab 和 Java 中可用的代码。

    【讨论】:

      【解决方案3】:

      对于很多音乐,“Grove”和“Swing”会及时从严格的速度位置改变音符开始的位置。一种统计模式匹配技术,将整个小节或整个乐句的频谱模式与音乐的时移副本进行匹配,可能效果更好。然后你仍然需要估计一个除数,从每分钟小节/短语到每分钟节拍。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-29
        • 2013-08-06
        • 1970-01-01
        • 1970-01-01
        • 2013-04-01
        • 1970-01-01
        相关资源
        最近更新 更多