如何确定哪些Note Onsets是节拍?目前,我所拥有的有点像使用所谓的“脉冲序列”的“强力”方法。
基本上,我们的想法是,您可以从最小速度到最大速度生成脉冲序列。这些脉冲序列只是在特定节奏中发生节拍的表示。例如,如果Tempo = 60bpm(每分钟节拍),则脉冲序列具有以1秒(60/60 bpm)的间隔发生的节拍。对于Tempo = 120bpm,脉冲序列的跳动间隔为0.5秒(60 / 120bpm)。
现在基本上,我只是使用这些脉冲序列来比较和对比在所谓的节拍上发生的接近音符。一般来说,这个想法是,如果音符开始发生在更接近节拍位置,则整体差异将更小。然后它基本上选择了具有最小整体差异的速度。
但是,我遇到了两个有关此实现的问题。
1。)音符开始的完美位置很少,特别是通过录制的音乐(我正在使用),这导致通常较差的结果。
2。)较高的节奏将导致较小的间隔,这使其成为具有非节拍开始(即第8音符,第16音符)的音乐的更好的候选者,而不是音乐的实际更好的节奏(即60bpm,纯粹的8号音符可能会返回120bpm)
你能推荐一些其他(甚至简单的)节拍检测方法吗?我想自己实现该算法以获得经验,因此非常感谢有用的教程链接。谢谢!