Read this document in English (阅读英文版)
SimaiCut 是一个 Python 工具集,旨在帮助用户处理、剪辑和拼接 Simai 格式的音乐游戏谱面及其对应的音频文件。它可以方便地从现有谱面中提取片段,调整速度,并将多个片段组合成新的谱面和音频。
- 谱面与音频同步处理:对谱面 (
maidata.txt) 和音频 (track.mp3) 进行统一的剪辑和变换操作。 - 片段裁剪:精确裁剪指定时间段的谱面和音频。
- 速度调整:同步加速或减速谱面事件和音频。
- 多片段拼接:
- 将多个(裁剪后的)谱面和音频片段按顺序拼接。
- 在片段间自动计算并插入可配置时长的静音音频。
- 在谱面层面,于拼接间隙使用前一首歌的末尾 BPM 填充适当数量的占位音符和逗号事件。
- 支持在音频拼接处添加淡入/淡出效果。
- Python 3.7+
- FFmpeg: 必须安装并将其可执行文件路径添加到系统的
PATH环境变量中。FFmpeg 用于所有音频处理操作。 - SimaiParser: 本项目依赖于
SimaiParser库来解析和重建 Simai 谱面数据。请确保该库已正确安装或位于项目的 Python 路径中。你可以使用下面命令来安装:pip install PySimaiParser
SimaiCut/
├── SimaiCut/
│ ├── init.py
│ ├── audio.py # 音频处理模块
│ ├── chart.py # 谱面编辑逻辑 (裁剪、加速、拼接)
│ ├── editor.py # Simai谱面编辑器类 (包装 SimaiParser)
│ ├── processor.py # 核心处理器类,协调音频和谱面操作
│ └── util.py # 辅助函数 (BPM计算、时间对齐等)
├── README.md # 本文档
└── README_en.md # 英文版文档
processor.SongProcessor: 核心类,封装了对单个歌曲(音频+谱面)的加载、处理(裁剪、加速)以及与其他SongProcessor实例拼接的功能。它管理着临时的音频和谱面文件。editor.SimaiEditor: 包装了SimaiParser,提供了更高级的谱面编辑接口。它将 Simai 文本谱面转换为内部 JSON 结构进行操作,并能将修改后的结构转换回 Simai 文本。crop(): 裁剪谱面。accelerate(): 加速谱面。concatenate(): 将另一个谱面拼接到当前谱面,并处理间隙。
audio.AudioProcessor: 包含一系列静态方法,使用 FFmpeg 执行音频操作,如获取时长、裁剪、加速、应用淡入淡出、创建静音和拼接音频文件列表。chart.py: 包含SimaiEditor类实际的谱面操作逻辑(裁剪、加速、拼接的具体实现)。这些方法被动态赋值给SimaiEditor类。util.py: 提供一些通用辅助函数,例如在谱面特定时间点获取BPM、将时间点对齐到音乐网格等。
欢迎提交 Pull Request 或提出 Issues 来改进本项目!