我真的不知道我的想法是否可行,但是到底是什么。
我有一些游戏音乐的MP3。这个游戏音乐是从Tracker格式渲染的,这意味着在某些时候轨道会循环回到更早的点,所以它是这样的:
Intro---|Main loop-------------------|Main loop-------------------|Main loop fade|
或者"正则表达式"形式:
/^\p{Intro}(\p{Main_0}\p{Main_1}\p{Main_2})+\p{Main_0}\p{Main_1_fading}$/
我希望这可以传达正在发生的事情!
基本上,我想知道是否可以根据波形的重复来检测主循环的开始和结束。我们的想法是,由于它们是采用跟踪器格式渲染的,因此波形之间的波形应完全相同,即使在已经“烘烤”之后也是如此。 MP3格式。
如果可以的话,我怎样才能找到这样的重复循环?目标是以编程方式扩展这些循环轨道以重复更多次,因此我不必手动完成。
在这个阶段,我只是寻找通用算法来解决问题。我可以弄清楚如何读取MP3文件的波形,处理它并毫不费力地保存新的波形,我需要帮助的是如何找到波形的重复部分。有没有人有任何智慧传授?
答案 0 :(得分:2)
找到最大值autocorrelation - 函数的峰值应该可以帮助您在信号中找到重复。
答案 1 :(得分:1)
如果您首先对其执行FFT以将其转换为频域,则对样本对齐和幅度变化的敏感性会降低。
可选择应用一些过滤来获取重要的关键频率并滤除那些不重要的关键频率(例如,某些人在重复时添加的额外噪音可能是您可以过滤掉的内容)。
最后应用自相关作为Frank提到找到重复。