本教程不包含任何关于好弟弟的内容,仅介绍某款街机游戏自制谱的工作流。
准备工作
在开始之前你需要准备:
- UMIGURI / V1.0.1
- Margrete / V1.3.1.1
- 一份音频文件
- 一张封面
一个有耐心的音游痴
设置语言
在这里可以调整制谱器语言:

初始化工程
我不会日语,所以这篇教程就默认语言为英语来介绍了。前往 File -> New 以初始化一个新项目。
然后,点击 File -> Save,将这个文件夹保存到UMIGURI的数据文件夹下。UMIGURI中存放乐曲谱面相关数据的文件夹在 data/music/[谱面大类]/[乐曲名] 。以我为例,大类名为 自制谱 ,乐曲名为 ダレモ,则新建相应文件夹保存这个谱面。
设置乐曲的基本信息
完成上述步骤后,点击 File -> Chart Propetry。会看到窗口:

其中,SongID一般不需要编辑,Title 为乐曲标题,Artist Name为乐曲作者/乐队名。
Chart 一栏中,Designer为谱师名称,Basic BPM为乐曲节奏,这个务必填写准确,不清楚可以查询相关资料。

在 BGM一栏设置背景音乐,其中 BGM Playback Offset代表延迟播放的时间,默认为0。如果你觉得原始音频文件前面的留白太多,请直接用Audacity等软件修剪音频,不要调整这个参数,否则在转谱时会遇到困难。
Display一栏中,Jacket Image代表封面图,Background Image / video 则可以设置谱面的背景视频/图像。不过关于BGM、封面图和背景图的设置都只在UMIGURI内部生效,关于某街机音游客户端内部的配置后面再提。
然后,点击确定,保存这部分内容。在主界面中,确保光标(就是那条红色的线)指向开头处,点击 Insert -> BPM Change Event,设置为BGM的速度,例如此前我们填写了 Basic BPM = 185.0,则此处对应设置为185即可。
如果乐曲不是默认的4/4拍(根据乐谱确认),则也需要设置 Insert -> Time Signature Event 更改乐曲拍数。
制谱器基本操作介绍

在工具栏中的这三个控件,分别代表着 放置 、 选择 、 删除 这三个制谱器的基本功能。其中 放置 需要在第二栏中选择,才能放置指定的音符。
在放置几个音符之后,你可以选中它们,右键查看可用操作:

其中 Select from ... to ... 上下两个选项代表选择从 光标处 到头/到尾的全部音符。其余操作则不过多介绍,自行尝试即可。
复制粘贴与翻转
关于复制粘贴,除了Ctrl+C/V的快捷键外,你还可以使用 Ctrl+Shift+V 以水平镜像的形式粘贴它们,这是一个很常用的功能,试试看吧。如果只是希望简单地翻转这个音符,你可以直接在选中它们后按 H 或 V,分别代表水平翻转和水平翻转。
Slide
关于Slide音符,你可以在希望插入的地方先放置好光标,然后按 R 调出 Script SLIDE 窗口:

Slide种类有很多,这里只介绍最基本的曲线。
小节数有三个选项,尽管看着有些复杂,但举个例就清楚了。
在Margerete中,像这样的一个区间(从142到143)称为一个 小节:

如例图中这样设为 0:1/8 的话,则会产出这样的Slide:

是的,这就是这个小节的八分之一,如果改为 1:1/8 的话,则会产出这样的Slide:

理解小节数参数的意义了吗?
然后,SLIDE 幅 则代表这个Slide的宽度,它可以被后期手工调整。终点横位置 和 横移动 分别代表终点和起点的位置。
余下参数不再赘述,自行摸索即可。
导出
在完成制谱之后,你可以点击 File -> Export 导出谱面文件为 .ugc 格式。

有时,在导出时它会提示 Export failed.:

这是由于你的谱面包含不兼容(无法被UMIGURI和某街机音游兼容)的音符。按照下方 Proofread 的提示进行修改,例如本处它提示我这个 ExTAP 音符的宽度只能为特定宽度。如果找不到问题音符的位置,双击这一栏即可。
顺利导出后,启动UMIGURI,只要路径配置正确,它就能认到你的乐谱,你可以在游戏设置中更改流速等配置,以及可以启用AutoPlay。
生成OPT
在开始之前,检查你的游戏文件,选择一个不与现有OPT冲突的OPT ID,例如 A550 。然后,为你的谱面选择一个ID。需要注意的是,你的谱面、OPT的ID不能与现有内容冲突,已知宴谱的ID范围在8000-8800,而其它谱的ID普遍在0-4000,为你的谱面选择一个合适的ID,例如 7548 。
所以,我们目前得到了:
- OPT ID: A550
- Music ID: 7548
- cueFile ID: 7548
转谱
显然,目前得到的谱面并不能在除模拟器外的其他地方被读取。要游玩它,你还需要进一步操作。
所以,我们需要对谱面文件进行进一步转换。确保你的谱面配置没有问题,然后打开这个网址进行谱面转换,导入你的 .mgxc 项目工程文件。如果工程没问题,则能正确产生 .c2s 格式的文件,下载保存即可。
音频再封包
这款街机音游使用CriWare的专有音频格式,不能识读或播放常见的音频格式,所以我们需要对音频进行再封包操作。
在开始之前,请你:
- 使用Audacity等音频剪辑软件,修剪你的音频,去掉你不希望加入谱面的地方
- 确保音频为16bit 48000Hz 双声道 PCM格式的WAV文件,如果没有,使用音频剪辑软件转换并导出
- 确保音量听起来恰到好处
通过网页操作
还是在刚刚那个网页,点击 cueFile 创建 一栏:

名称一栏填入cueFile ID,预览起始和结束代表当你游戏内选中这首谱的时候,播放的预览音频的范围,填入合适的值。
然后上传文件即可。
手动操作
这是我走的一条弯路,我确实花了很多时间去研究,这个方法不比通过网页操作快捷,不过我还是想写一下。如果你已经通过网页完成了cueFile创建,则不需要阅读本部分内容,直接跳到下一部分即可。
感谢DereTore和VGAudio项目提供的HCA文件加解密封包工具,尽管它们一开始并不能直接用于生成cueFile,在我进行部分修改后才能正常使用。
下载这些文件:
- VGAudioCli.zip
- SonicAudioTools.zip
- deretore-toolkit-v0.8.1.20250328-184738-alpha-release.zip
- HxDSetup.zip
我已经完成了对这些项目的代码的修改,使其能够用于生成这款街机音游的cueFile,把它们放置到一个合适的地方,我们后续会用到它。此外,你需要运行HxDSetup.zip中的安装程序。
你可以在其他地方获取到这款街机音游的OPT包,本处以删除曲补充包 A300 为例,你可以在 A300/cueFile 下看到一堆 cueFileXXXXXX 文件。随便选一个,把它复制出来。你应该看到 CueFile.xml 、 musicXXXX.acb 、 musicXXXX.awb 三个文件
现在打开存放SonicAudioTools的文件夹,以 music0055.acb为例:

将其拖动到 AcbEditor.exe 上方,如执行顺利,你将在这个目录下看到它创建的 music0055 文件夹,内含一个名为 00000_streaming.hca 的文件。
然后找到你准备好的音频文件,也拖放到这里。右键,选择 在终端中打开 或自行在cmd中切换到这个路径。然后使用VGAudioCli将其转换为明文 .hca 格式:
VGAudioCli.exe [音频文件] plain.hcaVGAudioCli.exe应被替换为你放置VGAudioCli的位置,例如我把它放在E:\VGAudioCli,则此处也应为E:\VGAudioCli,后续其它工具也以此类推。
如执行顺利,将生成一个 plain.hca 文件。然后使用DereTore将其加密,否则游戏客户端无法正常读取:
hcacc.exe plain.hca encrypted.hca -ot 56 -o1 ce264700 -o2 0074ff1f至于密钥是哪里来的嘛...问这个干什么呢,嘿嘿
如果执行顺利,它应该这样输出:

你可以使用 certutil.exe 工具额外校验 plain.hca 和 enc.hca 的哈希,确保其被正确加密处理。
然后,删除 00000_streaming.hca ,将 encrypted.hca 重命名为 00000_streaming.hca 。清理原始的 .wav 文件和所有中间过程产生的文件,只留下一个 00000_streaming.hca 。
确认无误后,退出到上一个目录,将 musicXXXX 文件夹整个拖动到 AcbEditor.exe 上方:

如执行顺利,你会看到musicXXXX.acb/.awb的修改日期更新了。
然后,将这两个文件重命名为此前确认的 music[cueFile ID].acb/awb,编辑 CueFile.xml ,也将其中原本的ID替换为新的ID。
然后,使用HxD打开 .acb 文件,使用 Ctrl+F 唤出搜索页面,搜索 music 关键字:

然后你可以找到:

将随后的 0055修改为此前确认的cueFile ID,然后保存退出。
HxD默认会保存一份.bak后缀的备份文件,删除它。
然后再删除 music0055 文件夹,我们就得到了一份完整的cueFile。
生成谱面信息
前往Music.xml 创建,填入你的谱面的信息,然后下载Music.xml,保存。
转换封面文件
前往曲封DDS创建,上传你的封面,然后下载保存。
封包OPT
然后,随便找一处新建文件夹,文件夹名为我们此前确认的OPT ID,例如 A550 。然后在此文件夹下新建两个文件夹,名为 music 和 cueFile 。
设置cueFile
打开cueFile文件夹,新建 cueFile00[cueFile ID] 文件夹,例如 cueFile007548 。然后把此前获得的cueFile文件 CueFile.xml 、musicXXXX.acb、musicXXXX.awb共三个,复制到这个文件夹即可。
设置谱面信息
打开music文件夹,新建 music[Music ID] 文件夹,例如 music7548 。把此前获得的 Music.xml、封面文件、谱面文件(.c2s格式)放进去。
将封面文件重命名为 [Music ID]_Jacket.dds ,例如 7548_Jacket.dds 。将谱面重命名为 [Music ID]_[难度].c2s,例如 7548_MASTER.c2s 。
编辑Music.xml,找到 fumens 下对应难度的谱面,逐个修改 file -> path ,使之与我们之前命名的谱面文件名匹配。找到 jacketFile ,修改,使之与我们之前命名的封面文件匹配。找到 cueFileName ,修改,使之匹配我们此前设置的cueFile。
然后保存退出即可。
完成
大功告成,后续分享这个OPT文件夹,或者自行将OPT文件夹安装到游戏中,即可在游戏中游玩谱面。
添加更多谱面时,不需要再次新建OPT,沿用一个即可。
Q.E.D.
Mio
2025-03-30 00:22 提笔
2025-03-30 03:26 完稿