节拍检测(或更具体地说是 BPM 检测)
使用梳状滤波器的节拍检测算法概述:
看起来他们这样做:
你必须在这里实现很多算法。不过,梳状过滤器应该很慢。 wiki 文章没有向我指出其他具体方法。
编辑:本文包含有关节拍检测的流式统计方法的信息。这听起来是个好主意: http ://www.flipcode.com/misc/BeatDetectionAlgorithms.pdf - 我打赌它们实时运行得更好,虽然不太准确。
顺便说一句,我只是略读并提取了关键字。我只玩过 FFT、整流和衰减滤波器(低通滤波器)。其余的我不知道,但你有链接。
这一切都将为您提供歌曲的 BPM,但不会为您生成箭头。
水平生成
至于“在节拍上放置箭头,在某些循环模式上放置轨道”,要获得良好的结果,实施起来会有点棘手。
您可以采用更激进的内容提取方法,并尝试从歌曲中提取音符。
您也需要对这部分使用节拍检测。这可能类似于上面的 BPM 检测,但在不同的范围内,带有用于仪器范围的带通滤波器。您还将换出或删除算法的某些部分,并且必须对整首歌曲进行采样,因为您没有检测到全局BPM。您还需要某种音高检测。
我认为这种方法会很麻烦,并且会保证您需要为每首歌曲手动清理结果。如果您对此没有意见,并且只想避免最初的手写工作,那么这可能会很好。
您也可以尝试使用内容生成方法。
大多数程序内容生成都是以试错的方式完成的,人们发布或申请专利的算法并不完全糟糕。通常无法对内容生成算法进行真正的定性分析,因为它们会产生美感。因此,您只需要选择那些似乎可以提供令人满意的样本结果并尝试一下。
大多数算法都以视觉内容生成为中心,包括地形、建筑、类人动物、植物等。有一些关于音频内容生成、生成音乐等的研究。您的要求并不完全符合其中任何一个。
如果由您在歌曲中检测到的节奏驱动,我认为程序“舞步”(如果存在这样的事情 - 我只发现动画技术)或生成音乐的算法将是最接近的匹配。
如果您想了解组合生成方法,请为许多完全不同的算法做好准备,这些算法通常只是暗示,但没有详细解释。
例如: