基于频段能量峰值检测的谱面生成小游戏

基于频段能量峰值检测的谱面生成小游戏

 
FuraiMusic.zip
zip文件
38.0M

介绍

近期处于pony town 10周年,更新了OC跳舞动画,并且可以导出OC动画帧。借此使用动画帧作为素材制作了一个小游戏。

 

作者团队 致谢名单

代码:Furai

 

开发环境

使用Godot 4.5.1 stable版本制作。没有安装其他插件,没有使用模板。

使用GDScript(Godot脚本语言)编写。

 

谱面生成

因为音游需要谱面,而人工手动设计需要耗费大量精力和时间,并且我很懒。除此之外音游设计需要特定的音频文件才可游玩。因此需要算法直接生成可玩的音游谱面以此节省人力、时间和精力,并让玩家自主选择自己喜欢的音乐。

频段能量峰值检测

使用“频段能量峰值检测”启发式算法[1, 2]。

程序将对陌生音乐文件进行静音播放,从而分析并获取高低音频,进而生成不同的轨道音符。(这导致第一次加载时需要播放整段音乐,花费时间,不过加载完后会保存,重复游玩无需再加载、分析)

其他方法

未来可考虑使用Beats Per Minute(BPM)谱面生成或机器学习、深度学习方面的算法。(目前没使用是不想长期优化维护,仅一晚上做出来玩玩而已)

BPM可根据音乐节拍生成音符,理论更优,但该方法相较于当前方法稍加复杂,因此本小游戏仅使用了简单方法初步实现效果。

 

音乐资源

目前已有“导入”和“移除”功能。音乐文件直接拖入即可导入。

目前只支持“mp3”、“ogg”、“wav”格式的音频文件。

游玩方式

点击主界面右下角的“Start”键即可开始。

若选择的音乐是第一次游玩,则需要通过“频段能量峰值检测”分析一遍。

若选择的音乐是第N次游玩,则会立即开始。

难度选择

主界面右上角有难度选择,分为easy、normal、hard。

按键方式

使用键盘的“A”、“S”、“D”、“F”键游玩。(用起来会别扭,但我懒得改了)

游玩界面

进入游戏后左边是4个音符轨道,右边是我的OC——HuiyanFurai(回雁风/回雁之风),她会跳舞。

这就是我为了这碟醋而包的饺子。

                                                      ——Furai

注意事项

点击Start后会立即开始游戏,没有多少反应时间。以后有机会我再优化。

代码我就暂时不开源了,因为只是做着玩的,且并不想长期维护。

 

参考文献

[1] J. P. Bello, L. Daudet, S. Abdallah, C. Duxbury, M. Davies and M. B. Sandler, “A tutorial on onset detection in music signals,” in IEEE Transactions on Speech and Audio Processing, vol. 13, no. 5, pp. 1035-1047, Sept. 2005, doi: 10.1109/TSA.2005.851998.

[2] N. Silva, P. C. Weeraddana and C. Fischione, “On Musical Onset Detection via the S-Transform,” 2018 52nd Asilomar Conference on Signals, Systems, and Computers, Pacific Grove, CA, USA, 2018, pp. 1080-1085, doi: 10.1109/ACSSC.2018.8645367.

© 版权声明
THE END
喜欢就支持一下吧
点赞2 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容