YuE2 Studio 可编辑乐谱指南:ABC记谱法+五线谱+旋律编辑完全解析
YuE2 Studio 可编辑乐谱指南:ABC记谱法+五线谱+旋律编辑完全解析
YuE2 Studio 是一个跑在你自己显卡上的本地 AI 歌曲生成器,它最独特的地方在于:模型写歌之前会先把乐谱写出来——用 ABC 记谱法生成带旋律、和弦的完整谱面,再由你自由编辑,最后才"唱"成一首带人声的完整歌曲。本文带你读懂这份可编辑乐谱:五线谱怎么渲染、ABC 文本怎么写、钢琴卷帘里怎么改旋律,以及如何把 MIDI 文件、和弦床等高级技巧用起来。
乐谱是怎么产生的:先写谱,再唱歌
YuE2 模型(M-A-P 出品的开源歌曲模型)的作曲流程和其他 AI 音乐工具不同:它不是直接吐出音频,而是先输出一份 ABC 乐谱,再由 yue2.cpp 推理引擎把它渲染成完整歌曲。
这个设计的价值在于:
- 创作与演奏分离——乐谱是"作曲",音频是"演奏"。改完乐谱重新生成,曲式不变、声音可变
- 乐谱随歌曲一起保存——每首成品歌都保留它被演唱时所用的乐谱,可以反复复用
- 本地渲染五线谱——前端用 abcjs 把 ABC 文本实时雕版成五线谱,不请求任何外部服务
乐谱渲染的核心实现在 scoreEngraving.ts 和 ScoreView.tsx,ABC 方言的解析器在 Rust 端的 abc.rs。
五线谱与 ABC 文本:同一份作品的两种视图
打开歌曲详情,你会看到乐谱面板。它可以呈现为三种模式:旋律+和弦(Full)、仅旋律(Melody)、无乐谱,五线谱和 ABC 文本随时切换。
五线谱视图里,"Vocal"(人声)和"Ins"(伴奏乐器)两个声部会像音乐家阅读时那样分成独立的谱表。你还可以:
- 点击播放:谱面用 Studio 自带的 MIDI 音色发声,播放时音符会高亮跟随、光标自动滚动
- 八度移位:把人声整段上移或下移一个八度,界面上会提示音域是否在模型常见乐谱范围内
- 点击定位:点某个音符即可从该处开始试听
ABC 记谱法 3 分钟入门
YuE2 使用的是一种受限的双声部 ABC 方言(不是通用 ABC 读取器——方言之外的写法会被直接拒绝,保证"人能读"和"模型能读"完全一致)。一份典型的乐谱长这样(取自示例 cover-baikal-lake-jazz.json):
X:1
M:2/4
L:1/16
Q:1/4=60
V: Vocal clef=treble name="Vocal Melody" snm="Vocal"
V: Ins clef=treble name="Ins Melody" snm="Inst."
K:F
% intro
V: Vocal
Z2|"Gm"z8|"C"z8|
V: Ins
Z|z2def2c'2|b8|
% verse
V: Vocal
"Dm"z2DEF2c2|
不用紧张,只需要记住这几个符号:
| 符号 | 含义 | 例子 |
|---|---|---|
M: L: Q: K: |
拍号、基本音符时值、速度(BPM)、调号 | Q:1/4=60 表示四分音符=60 BPM |
V: Vocal / V: Ins |
切到人声声部 / 伴奏声部 | 人声与乐器分开写 |
c' d'' e |
音名 + 高低八度标记('升八度,,降八度) |
c' 就是高音 Do |
| 数字后缀 | 时值,单位是 L 时值 | L:1/16 下 f2 = 32分音符×2 |
Z / z |
休止:Z 整小节休止,z 带时值休止 |
z8 = 休止 8 个 1/16 |
"Gm" |
音符前的和弦记号,支持 15 种和弦性质 | "Am7" "Fmaj7" |
% |
段落注释,如 % verse % chorus |
歌词段落对齐就靠它 |
^ _ = |
升号、降号、还原 | ^d = D# |
这个方言支持 30 个标准调(15 大调 + 15 小调)和 15 种和弦性质(m、dim、7、maj7、m7b5、sus4 等),完整常量定义见 abc.rs。
打开钢琴卷帘编辑器:旋律编辑主战场
在创建表单里点"乐谱编辑器"(Score editor),会打开内嵌的 Signal MIDI 编辑器钢琴卷帘——这就是旋律编辑的主战场:
- 绘制、移动、拉伸音符,像在任意 DAW 里操作钢琴卷帘一样
- 设置和弦与段落标记(section markers),段落会写回 ABC 的
%注释 - 修改调号与速度
- 支持 MIDI 键盘输入:接键盘弹奏或电脑键盘弹奏都能记录
- 点 Apply(应用) 才会把改动写回 ABC 乐谱,在此之前表单内容不受影响
这个编辑器同时替换了旧版独立的乐谱编辑器:它既能打开普通 MIDI,也能打开 ABC 乐谱并把音符、和弦、段落应用回创建表单。编辑器与主程序的通信逻辑在 midiEditor.ts,界面文案见 score.ts。
编辑时的两个实用提示
编辑器会在音节与音符数量不匹配时主动提醒:
- 音符比音节多:YuE2 可能在多出来的音符上"自己加词"
- 音节比音符多:YuE2 可能挤音或漏词
改旋律时留意这两条提示,能帮你把副歌的咬字问题提前消灭在谱面上。
三个进阶乐谱技巧
1️⃣ Chord Bed(和弦床):跳过规划步骤
先定好 速度、调号、拍号,Studio 会一次性写出一张"和弦+休止符"的乐谱——每个歌词段落一个 section。模型随后只在这个和弦框架上填旋律与编配,规划步骤整个跳过。适合对和声走向有明确想法的创作。
2️⃣ 八度移位与纯器乐化
- 人声整段移八度:
vocal-octave接口会把 Vocal 声部按整八度平移,并告诉你声部中音是否落在模型乐谱的常见音域内(scoreApi.ts) - Instrumental 模式:把所有人声音符移给乐器轨,人声轨只保留休止符与和弦——谱面秒变伴奏谱
3️⃣ 从乐谱续写整首歌
打开"Continue the song from this score",你哼写的一段开头会被模型接着往下写完整首歌——沿用它的调与拍号,开头还会变成全曲的 hook 反复出现。接口约定见 mcp-skill.md 中的 abc_continue。
把 MIDI 文件变成乐谱
这是新手最顺手的入口:任意 .mid / .midi / .kar / .rmi 文件都能变成乐谱。加载时 Studio 会做这些事:
- 自动分配声部——人声轨(优先看卡拉 OK 歌词落在哪条轨)、乐器轨、和弦轨(读取名为
Chords的轨,读不到就从各轨合奏中推测) - 显示每条音轨的"去向"——音符数、音域、用作人声/乐器/和弦,一目了然
- 自动修正——音域过高过低整段平移八度、不合网格的音符取整到最近十六分、变速度文件取平均 BPM
- 支持仅旋律(无和弦)与带和弦(Full 模式)两种导入方式,也可选择保留文件中的段落标记
读入逻辑由 import/mod.rs 实现,前端调用入口是 scoreFromMidi。
导出与复用:乐谱也是一等公民
- 保存为 MIDI:人声、乐器、和弦各占独立音轨,速度、拍号、调号、段落一并写入(
/v1/score/midi接口,见 scoreApi.ts) - 保存为 ABC 文本:和引擎的 JSON/YAML 请求格式一样,可以在 Studio、yue2.cpp WebUI 与
yue-synth之间自由搬运 - 精确重渲染:每首歌都保存了请求参数与音频码,同一份乐谱随时可以换音色种子、换输出格式重新渲染,甚至逐比特复现原结果
核心文件索引
| 模块 | 路径 | 说明 |
|---|---|---|
| ABC 方言解析 | abc.rs | YuE2 双声部 ABC 的完整读写规则 |
| 乐谱 API 路由 | api.rs | 五线谱数据、编辑、导出的后端入口 |
| 和弦与段落 | chord_bed.rs、sections.rs | 和弦床生成、歌词段落对齐 |
| 前端五线谱 | ScoreView.tsx | abcjs 雕版、点击播放、光标跟随 |
| 钢琴卷帘通信 | midiEditor.ts | Signal 编辑器与主程序的消息桥 |
| 示例乐谱 | examples/ | 110 个即点即用的风格/歌词/乐谱组合 |
小结
YuE2 Studio 的可编辑乐谱把"AI 作曲"变成了一件可控的事:模型负责写第一稿,你负责改到满意为止——ABC 文本、五线谱、钢琴卷帘三种视图随时切换,MIDI 导入、和弦床、八度移位、纯器乐化各管一段,最终改出来的谱面可以反复重渲染成不同声音的完整歌曲。上手顺序建议:先用示例乐谱熟悉面板 → 用 MIDI 文件当练习曲改几个音 → 最后尝试 Chord Bed 完整控制一首歌的和声。




