自动演奏程序:读 MIDI 曲库,编译成按键动作,再用 Windows 的 SendInput 发给屏幕上的口琴。纯 Python 标杆库写成,零第三方依赖。
第一次打开时,程序会在 exe 旁边自动建一个「曲库」文件夹,并放进一首示范曲(小星星), 所以双击之后马上就有东西可弹。想弹别的曲子:进「内置社区分享库」页搜索取下, 或者把自己的 .mid 文件丢进那个「曲库」文件夹里。
Windows 或许会弹"未知刊出者"的警告(这是没有采购代码加密标记证书的逃不掉结局,点"仍要运行" 即可);少数杀毒应用会误报 PyInstaller 整体交付的程序,需要加允许清单。
图形界面
双击 run.bat 打开(用 pythonw 启动,不弹黑框)。左侧是浮岛式侧边栏,
页面包括演奏、收着、热键、内置社区拿出来库、日志和设好。
演奏页:曲库列表、当前曲目、当前音与要按的键、可拖动的位置条(拖到哪就从哪起初弹)、
播放控制、跳过前奏、循环、连奏防断音、速度滑条、倒计时、演奏预览
存档页(Soundpad 式两栏):左栏存起来列表,右栏曲子。存档只存在 hca.json 里,
不挪动曲库文件;一首曲子可以进多个码住;双击曲目径直起初演奏
热键页:任意条数的「组合键 ↔ 曲目」,现按现录,按下马上倒在另一边演奏
内置社区分发库页:搜索 B 站三角洲口琴谱社区,列拿到量/赞一下,取下后转成 MIDI 存入曲库
曲库管理
命名、分类、批量抹掉、一次性入夹。归类就是曲库下的子文件夹(旧版和游戏只读一层,
看不到子文件夹里的曲子,正好当仓库用;本程序两层扫描,照例可选可弹)。
清掉永远走体系回收站(hca/trash.py 用 SHFileOperationW + FOF_ALLOWUNDO),可还原。
内置直连的 MIDI 下载站
程序里那个「内置社区分享库」页就是内置直连的谱面下载站,不经过我们自己的任何服务器, 也不要求你注个号或配置:打开就能搜、能拉取。
这个方向是单向的:只获取,不提交。 你本地曲库里的曲子不会被传上去 —— 整个任务里 只有 hca/bili.py 会联网,它只发五类请求:拿游客身份的两个 POST(发请求体是空的), 以及搜索、统计、获取三个 GET。没有 PUT,没有multipart,没有任何文件上传。
资讯站:B 站《三角洲行动》口琴谱社区(https://www.bilibili.com/toy/deltaforce/index.html)
程序直连的通道:https://111.229.198.119/v1(这个地址是从社区页前端 JS 里取到的, 证书是签给域名的,因此用户端要带 Origin/Referer 头,实眼下 hca/bili.py)
怎么用:要紧词留空则按全新浏览,支援翻页;列表带获取量和给个好评数。 选一首或几首点拉取,程序把它转成 MIDI 存进你的曲库,重名自动加 (2)(3)
获取到的是 raw deflate 瘦身的 DFHS v1 二进制谱(格式已逆向,解码器也在 hca/bili.py), 转出来的 MIDI 是 format 0,和本地曲库里其他文件一样能径直弹。
需要阐述的是:这个站是玩家投稿的社区曲库,不是严格意义上的开源乐谱站(比如 Mutopia、 MuseScore 那类)。它的价值是谱面本身就是为口琴改编的,拿来就能弹;代价是成色参差 —— 有些是音频自动扒的劣质谱(判定办法见「扒谱水平体检」一节)。
开源地址:https://github.com/xkrmand-web/delta-harmonica
软件讲解
歌曲阐述
软件能力
自动化能省下大量重复劳动
评论 0
订阅更新 →