galgame吧 关注:1,822,083贴子:27,399,107

一个挺厉害的galgame音乐播放器

只看楼主收藏回复

大家玩galgame的时候,也许会注意到,BGM可以一直播放,无论放多久都没有丝毫停止的迹象。这是由于大部分游戏音乐的原文件由 开头+循环部分+循环开头一小段 几个部分组成,通过脚本控制播放:第一遍播放从开头开始,到了音乐末尾,就会跳转到循环部分的开始处继续播放,然后重复这个操作,使得听起来不会停止。
而我们听专辑音乐OST单曲循环时,就几乎不可能有这个效果了。主流播放器的单曲循环,通常不支持上述播放模式,而且两次播放间有显著的暂停。因此,在这些播放器中,播放的音乐通常不能完全让我们完全沉浸在当时的感动里
所以,我做了(好吧AI干了大多数)一个无缝循环播放器,支持游戏中的音乐播放模式,还可以辅助手动寻找循环节甚至自动寻找循环节。主界面如下:
可惜的是,全自动寻找循环节所需库的安装对“网络”有一定要求,我暂时没有解决对策。不过目前的手动辅助匹配也是足够优秀,可以帮助大家快速找到循环点。希望大家玩的开心!
如果有问题,欢迎到我的github仓库提issue或在这个帖子里堆楼!


IP属地:上海1楼2026-02-14 01:51回复
    使用指南:
    1.首先是批量操作的解释:同windows多选文件的操作,即CTRL单个多选,CTRL+A列表内全选,shift范围选择
    2.导入:点击左上方“我的歌单”右侧的 + 号添加歌单,歌单有两种:一种只能通过添加删除文件夹管理,另一种只能通过添加删除单个。系统会自动扫描并建立指纹映射。


    IP属地:上海2楼2026-02-14 01:53
    收起回复
      2026-03-30 00:23:43
      广告
      不感兴趣
      开通SVIP免广告
      使用指南:
      3.自动匹配:
      手动智能匹配:
      在主界面输入或按钮修改得到粗略采样点或时间,利用“寻找起点/终点”进行局部相位对齐,通过“确认并试听”跳转到循环终点前3秒比对是否无缝。基本原理如下:
      寻找起点:以当前循环终点的前一秒为指纹,在当前循环起点的前后共10秒寻找匹配程度最高处,将此处更新为循环起点
      寻找终点:以当前循环起点的后一秒为指纹,在当前循环终点的前后共10秒寻找匹配程度最高处,将此处更新为循环终点
      极致匹配(全自动匹配):
      首先需要配置好PyMusicLooper,参见[PyMusicLooper/README.md at master · arkrow/PyMusicLooper](htt删ps://gith删ub.com/arkrow/PyMusicLooper) 或看本文档使用指南的第5点。
      可以批量选择歌曲进行“极致匹配”,让引擎自动为你寻找最佳循环节位置,然后点击排行榜,在排行榜界面双击选择循环点试听选择。如果这首歌还没有极致匹配过,点击排行榜后,会先对这首歌极致匹配,再进入排行榜界面。 经实际测试,极致匹配不一定准确,可能还需要用户自行手动调整。
      匹配问题:
      小概率所取的循环点位置不易解码,导致不能正常循环,如过了循环点直接回到歌曲开头停止。此时微调循环点几毫秒即可解决。


      IP属地:上海3楼2026-02-14 01:54
      回复
        使用指南:
        4.歌单歌曲管理:
        歌单分为两类:一种只能通过添加删除文件夹管理,另一种只能通过添加删除单个(或歌单里批量选中的)歌曲管理。 右键歌单或歌曲进行相应管理操作,删除,重命名,添加歌单, 支持列表中左键拖拽歌曲,排列你喜欢的播放顺序。


        IP属地:上海4楼2026-02-14 01:54
        回复
          5.PyMusicLooper安装教程:
          uv版:
          安装时“网络环境”要求较高,尤其是uv工具的安装。我写下这句话时,真希望所有人都是程序员,或至少懂得双引号内含义。
          先进入powershell,输入powershell -ExecutionPolicy ByPass -c "irm htt删ps://astr删除al.sh/uv/install.ps1 | iex",等待下载完成,安装时“网络环境”要求较高。下载完成后
          win+R,输入cmd,打开cmd终端,输入uv tool install pymusiclooper,下载。这一步对国内网络要求似乎小一点。完成后。。。
          嗯,就可以全自动匹配了。
          问题主要在于uv工具的安装。应该也可以通过python的pip安装,只是我目前不会清理之前安装PyMusicLooper的环境变量,而且我的python环境有点乱,这些会对pip安装造成干扰,所以没有尝试。但根据原仓库文档,应当可以。
          pip版:
          如果已经配置好pip,就进入第二步,几乎一样: pipx install pymusiclooper或 pip install pymusiclooper


          IP属地:上海5楼2026-02-14 01:55
          收起回复
            这么强


            IP属地:广东通过百度相册上传6楼2026-02-14 01:56
            回复
              细心的网友应该会注意到“恢复AB接缝”的按钮,这个是专门为A/B式循环的音乐准备的。
              A\B式循环的音乐分为两个音乐文件,A段即开头,B段即一个刚好完整的循环节。白色相簿2、流星世界演绎者的游戏原始BGM就采取了这种方式
              歌单添加A\B式循环歌曲时,会自动设置循环起始点为B段的开头结尾,同时也支持上述两种匹配方式。如果要恢复原循环起始点,可按下“恢复A/B接缝”回到最初状态。


              IP属地:上海7楼2026-02-14 01:57
              回复
                最后,我要向两个项目表达诚挚的敬意与感谢。
                一个是http删s://github.com/melo删dicule/AokanaMusicPlayer,虽然简单,但它是本项目最初的灵感与开发动力。
                另一个是htt删ps://github.com/ark删row/PyMusicLooper,我这个项目的极致全自动匹配就是由它提供支持的,相当的牛逼,如果有能力,请大家给这个仓库一个大大的star。


                IP属地:上海8楼2026-02-14 01:57
                收起回复
                  2026-03-30 00:17:43
                  广告
                  不感兴趣
                  开通SVIP免广告


                  IP属地:广东来自Android客户端9楼2026-02-14 01:57
                  回复
                    项目基本介绍就是这样了,欢迎大家提问!


                    IP属地:上海10楼2026-02-14 01:58
                    回复
                      强呀!


                      IP属地:江西来自Android客户端11楼2026-02-14 02:11
                      回复
                        使用指南第3点自动匹配补档(触发了什么违禁词?)
                        3.自动匹配:
                        手动智能匹配:
                        在主界面输入或按钮修改得到粗略采样点或时间,利用“寻找起点/终点”进行局部相位对齐,通过“确认并试听”跳转到循环终点前3秒比对是否无缝。基本原理如下:
                        寻找起点:以当前循环终点的前一秒为指纹,在当前循环起点的前后共10秒寻找匹配程度最高处,将此处更新为循环起点
                        寻找终点:以当前循环起点的后一秒为指纹,在当前循环终点的前后共10秒寻找匹配程度最高处,将此处更新为循环终点
                        极致匹配(全自动匹配):
                        首先需要配置好PyMusicLooper,参见致谢部分第二个仓库的README文档或看本贴使用指南的第5点。
                        可以批量选择歌曲进行“极致匹配”,让引擎自动为你寻找最佳循环节位置,然后点击排行榜,在排行榜界面双击选择循环点试听选择。如果这首歌还没有极致匹配过,点击排行榜后,会先对这首歌极致匹配,再进入排行榜界面。 经实际测试,极致匹配不一定准确,可能还需要用户自行手动调整。
                        匹配问题:
                        小概率所取的循环点位置不易解码,导致不能正常循环,如过了循环点直接回到歌曲开头停止。此时微调循环点几毫秒即可解决。


                        IP属地:上海来自Android客户端12楼2026-02-14 02:13
                        收起回复
                          芥末墙?!


                          IP属地:江苏来自Android客户端13楼2026-02-14 04:55
                          回复


                            IP属地:辽宁来自Android客户端14楼2026-02-14 07:12
                            回复
                              2026-03-30 00:11:43
                              广告
                              不感兴趣
                              开通SVIP免广告
                              牛逼


                              IP属地:山东来自Android客户端15楼2026-02-14 07:15
                              收起回复