Skip to content

About

Local sheet-music format converter — MIDI, Guitar Pro (gp/gpx/gp3/gp4/gp5), MusicXML, MuseScore, PDF and PNG, all converted on your own machine with nothing uploaded. Ships a from-scratch GP5 writer and a TAB-preserving MusicXML serializer. Next.js + bun, powered by MuseScore 4 and alphaTab.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Repository files navigation

ScoreTranslate

简体中文 | English · 官网

本地乐谱格式转换 Web 工具:选择乐谱文件,转换为其它格式并下载。全程在本机完成,文件不上传到任何外部服务。

转换矩阵

输入 输出
.mid .midi .gp .gpx .gp3 .gp4 .gp5 .mxl .musicxml .xml .json .atex .mid .musicxml .xml .mxl .gp .gp5 .json .atex .mscz .pdf .png .png 长图

单文件上限 50MB。PNG 按页导出,多页时自动打包成 zip;「PNG 长图」把所有页纵向拼成单张图。.json 是 alphaTab 的乐谱模型序列化格式,便于在网页端直接渲染或做二次处理;.atex 是 alphaTab 的文本谱格式 alphaTex,可以直接手写,语法有误时会提示出错的行列。

部分目标格式带导出选项:PNG 的 DPI 与裁边、PDF 的纸张与缩放、MIDI 的展开反复、MusicXML/PDF/PNG 的谱表类型(六线谱 / 五线谱)、弹唱谱的歌词并轨。多轨谱还可以只导出选中的音轨,对全部目标格式生效。

PDF 选择「跟随原谱」时,如果 MuseScore 未能直接导入 Guitar Pro 文件并生成 PDF,会改经 MusicXML 重试,保留原谱的五线谱 / 六线谱显示设置。自动识别草稿中的错误时值仍需对照原谱校正。

环境准备

需要 bun 和 MuseScore 4(转换引擎,需本机安装)。

MuseScore 默认读取官方安装包的位置:macOS 为 /Applications/MuseScore 4.app/Contents/MacOS/mscore,Windows 为 C:\Program Files\MuseScore 4\bin\MuseScore4.exe。装在别处时用环境变量覆盖:

export MSCORE_PATH=/your/path/to/mscore

运行

bun install && bun run dev

打开 http://localhost:3000 。

桌面版

也可以打包成 macOS / Windows 桌面应用(Tauri,macOS 安装包约 32MB):自带运行时,双击即用,不需要装 bun。MuseScore 4 仍需单独安装,没装时只有 Guitar Pro 转 MusicXML / gp / gp5 可用。

构建需要 Rust 工具链,只能构建本机平台的包:

bun install && bun tauri build

产物在 src-tauri/target/release/bundle/(macOS 为 dmg/,Windows 为 nsis/)。Windows 包也可以在 GitHub Actions 里手动运行 desktop 工作流构建。macOS 要求 13 及以上。

应用没有正式签名,首次打开会被系统拦截:macOS 到「系统设置 → 隐私与安全性」点「仍要打开」(或执行 xattr -dr com.apple.quarantine /Applications/ScoreTranslate.app);Windows 在 SmartScreen 提示里点「更多信息 → 仍要运行」。

HTTP 接口

界面之外也可以直接调接口,POST /api/convert 接收 multipart 表单,字段为 file 和 target:

curl -O -J -F "file=@score.gp5" -F "target=pdf" http://localhost:3000/api/convert

成功返回文件流,文件名在 Content-Disposition 与 X-Filename 响应头里;失败返回 JSON {"error": "..."}。

导出选项作为可选表单字段传入,非法值直接忽略:dpi(50–1200)、trim(0–500 像素边距)、scale(50–200)、paper(a4 / letter)、staffMode(tab / standard)、unrollRepeats(1)、mergeLyrics(1,把人声轨歌词按时间对齐并入其他音轨)、tracks(逗号分隔的音轨下标,只导出这些轨,缺省导出全部)。

tracks 的下标由 POST /api/tracks 给出,同样接收 file 字段,返回 {"tracks": ["音轨名", ...]},数组顺序即下标:

curl -F "file=@score.gp5" http://localhost:3000/api/tracks

已知限制

gp3 / gp4 / gpx 只能输入、不能输出。 能打开 gp3/gp4 的软件都能打开 gp5,单独实现只服务于早已废弃的老版本软件;gpx 是 GP6 独有的 BCFZ 专有容器,GP6 已被官方放弃。.gp 输出为 Guitar Pro 7/8 格式(由 alphaTab 生成)。

.gp5 输出为自研写出器生成(开源生态无现成实现),保留音符、节奏、连音线、连音、力度、拍号调号、反复记号、调弦变调夹,以及演奏效果(推弦、击勾弦、滑音、泛音、闷音、延音、颤音、倚音、扫弦、断奏、重音、指法等;GP5 格式没有的除外,如左手点弦与拨片刮弦)。和弦图不保留。来源不是吉他谱时(MIDI / 钢琴 MusicXML),会按音域自动选择六弦吉他 / 七弦 / 贝斯调音并指派弦位品格,超出音域的音符按八度折叠;非 ASCII 的标题、歌词等文本会降级为 ?(GP5 格式的编码限制),中文歌词请改用 MusicXML / pdf / png 等目标格式。

MIDI 转记谱格式的质量有天花板。 MIDI 不携带谱面信息(声部划分、连音线、临时记号的拼写),转换结果由 MuseScore 的量化算法推断,演奏录制的 MIDI 转出的谱子通常需要手工整理。这是格式本身的固有限制。

结构

  • lib/convert.ts — 转换核心与路由;Guitar Pro 输入直接解析,其余先经 MusicXML 桥接
  • lib/gp5-writer.ts — GP5 二进制写出器(含弦品指派算法)
  • lib/gp-to-musicxml.ts — Guitar Pro 模型 → MusicXML 序列化器(保留 TAB 谱表与弦品信息)
  • app/api/convert/route.ts — 转换接口,负责校验与文件流响应
  • app/api/tracks/route.ts — 音轨名列表接口,供前端勾选导出哪些轨
  • app/page.tsx — 上传 / 选择目标格式 / 下载的单页界面
  • src-tauri/ — 桌面版外壳:用随包的 bun 启动 Next.js standalone 服务,再开窗口加载

许可证

MIT

About

Local sheet-music format converter — MIDI, Guitar Pro (gp/gpx/gp3/gp4/gp5), MusicXML, MuseScore, PDF and PNG, all converted on your own machine with nothing uploaded. Ships a from-scratch GP5 writer and a TAB-preserving MusicXML serializer. Next.js + bun, powered by MuseScore 4 and alphaTab.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages