什么是 ScoreMD
ScoreMD(简称 SMD)是靠谱使用的纯文本乐谱格式。它像 Markdown 一样简洁,只用普通文本就能表达完整的曲谱信息。当前语法版本为 0.6.0,本页所有示例均可直接复制使用。
1. 元信息头
文件开头用 YAML 格式描述歌曲基本信息,放在两行 --- 之间,分为 SMD(格式信息)和 song(歌曲信息)两节。
--- SMD: version: "0.6.0" song: title: 晴天 artist: 周杰伦 key: G bpm: 69 time: 4/4 capo: 0 ---
SMD.version:本文件使用的 ScoreMD 语法版本号,省略时按最新版本解析title:歌曲名称(必填)artist:演唱者或创作者key:歌曲选调,如 G、C、Amcapo:变调夹品数,默认为 0bpm:每分钟节拍数time:拍号,如 4/4、3/4、6/8
2. 段落
用 # 开头表示一个段落。段落标题下面的所有小节都属于这个段落,直到出现下一个段落标题。段落名后可加 xN 表示该段落重复 N 次。
# 前奏 | G D | Em C | | | | # 主歌 | G | D | | 故事的小黄花 | 从出生那年就飘着 | # 副歌 x2 | G D | Em C | | 吹着前奏 望着天空 | 我想起花瓣 试着掉落 |
如果文件开头没有写段落标题,则前面的小节会归为一个匿名段落,渲染时不显示段落名。
3. 小节线与对齐
| 为小节线,所有小节行都必须包含小节线。段落内以空行划分对齐组:连续的小节行为一组,组内各行的小节线数量必须一致;不同组的小节数可以不同。
| G D | Em | C | | 故事的小黄花 | 从出生那年就飘着 | | | G | D | Em | C | | 为你翘课的那一天 | 花落的那一天 | 教室的那一间 | |
小节内用空格拉开距离只是为了好看,解析只认小节线,空格多少不影响对齐。
4. 和弦与歌词(轨道)
基本写法由和弦行和歌词行配对组成。每个和弦行后面必须紧跟一行歌词行,两行小节数量相同。没有歌词的小节用空的 | 占位。
| G | D | | 故事的小黄花 | 从出生那年就飘着 | | Em | C | | | |
和弦写法与常见吉他谱一致,例如 G、Em、F#m、Cmaj7,详见第 8 节。
❌ 错误示例
只有和弦行、没有歌词行的写法,语法检查会报错(纯演奏段落也要补一行空歌词行):
| G | D |
这两行本质上是两条轨道:和弦行即演奏轨、歌词行即歌词轨,上面只是省略了轨道标识的简写。完整写法在行首加标识:类型关键字 演奏(play)或 歌词(lyrics),可再跟自定义名称,以第一根 | 与内容分界。同一类型的自定义名称全文件唯一,跨段落复用同一名字即视为同一条轨道。需要多轨并行时(如节奏吉他加主音 Solo)就必须写出标识0.6+:
演奏 节奏吉他| C | G | Am | F | 演奏 主音Solo| : 3e 5e | : 7e 8e | : 3B 5B | : 7B 8B | 歌词| 吹着前奏 | 望着天空 | 想起花瓣 | 试着掉落 |
同一对齐组内同一轨道不得重复出现;如需再次使用同一轨道,先用空行另起一组。写出标识后各轨道相互独立,没有内容的轨道可直接省略——纯演奏段落(如间奏)只写演奏轨:
# 间奏 演奏 节奏吉他| G | D | Em | C |
注意区分两种写法的约束:简写必须成对出现(纯演奏段用空歌词行占位);写出标识后各轨道独立、可自由省略。一个文件内两种写法只能选其一,混用为语法错误:
❌ 错误示例
| G | D | 歌词| 故事的小黄花 | 从出生那年就飘着 |
5. 节奏值0.2+
和弦名后加 [n] 表示持续拍数,n 为整数或分数(如 C[2]、G[3/2])。[n] 前面没有内容表示休止 n 拍;_[n] 表示延续上一小节的和弦或音 n 拍。
| G[2] [1] D[1] | | 故[2] [1] 事[1] | | G[2] _[2] | D[4] | | 故事的小黄花 | 从出生那年就飘着 |
歌词的节奏值写在字后面,表示该字及前面未分配的字共占 n 拍:
| G[4] | | 故[2] 事 的[1] 小 黄 花[1] |
故[2]:「故」占 2 拍的[1]:「事 的」共占 1 拍花[1]:「小 黄 花」共占 1 拍;末尾标记可省略,剩余字均分剩余拍数
歌词中需要输入方括号本身时,用 \[ 和 \] 转义。小节内一旦标注了节奏值,所有 [n] 之和必须等于该小节总拍数(由拍号决定)。
❌ 错误示例
4/4 拍下节奏值之和只有 3 拍,保存时会报「拍数不匹配」:
| G[2] D[1] | | 故[2] 事[1] |
6. 分解和弦与 Solo0.3+
和弦名后加冒号 : 开启和弦保持段,后面按顺序写弹奏动作。动作用「品+弦」表示:0e = e 弦空弦,2G = G 弦 2 品。6 根弦从粗到细为 E A D G B e(1 弦用小写 e)。多个音连写表示同时弹奏。
| Am: 0e 2G 1B 2G 0e | | 故事的小黄花 | | Am: e G B e | | 故事的小黄花 | | Am: 2e1B 2G 0e1B | | 故事的小黄花 |
- 有和弦上下文时品数可省略,直接写弦名(如
Am: e G B e) 2e1B:e 弦 2 品与 B 弦 1 品同时弹- 节奏值可挂在保持段上(
Am[2]: 0e 2G)或单个动作上(0e[1]),未标注的均分剩余拍数 - 把位写在和弦名与冒号之间,如
Am(5): 5e 7A 7D
Solo 或旋律线用单独的 : 开启空和弦保持段,此时动作必须显式写品位。左手技巧直接写在音符上:击弦 h、勾弦 p(前缀,不再拨弦),揉弦 ~(后缀)0.4+。
| : 3e[1/2] h5e[1/2] p3e[1] 5e~[2] | | |
读法:e 弦 3 品弹响半拍 → 击弦至 5 品半拍 → 勾弦回 3 品 1 拍 → 5 品揉弦 2 拍。
7. 扫弦0.3+
和弦名后加 :,后面写扫弦方向:↓(或 d)下扫、↑(或 u)上扫,每个方向默认占一拍,可加 [n] 标注拍数。扫弦必须指明和弦。
| C: ↓ ↓↑ ↓↑ | | 故事的小黄花 | | C: d du du | | 故事的小黄花 |
方向后紧跟弦名表示只扫这些弦(不标注默认扫全部 6 根)0.5+;连续弦区可用区间写法 首弦-尾弦:
| C: ↓EAD ↑GBe ↓↑ ↓↑ | | 故事的小黄花 | | C: ↓E-D ↑G-e ↓↑ ↓↑ | | 故事的小黄花 |
↓EAD:下扫只扫 6、5、4 弦(低音区);↑GBe:上扫只扫 3、2、1 弦(高音区)。
8. 和弦名写法
和弦名按固定顺序拼接:根音 [性质后缀] [/低音] [@指法],中间不允许有空格。
- 根音:A~G 加可选升降号,如
C、F#、Bb;升降号写在音名后(#C非法) - 性质后缀(区分大小写,省略为大三和弦):
m7maj7m7sus2sus47sus4add96m69maj9m91113dimaugdim7m7b57b97#9maj7#11 - /低音:转位和弦,如
C/E、G/B - @指法:显式指定按法,如
C@open、F#m7@E2;省略时由渲染层使用默认指法
常见非法写法:C5(不支持强力和弦)、Csus(须写 sus2/sus4)、CM7(大小写不符)、C/E/G(多个 /)、C@A3/E(@ 须写在最后)。
9. 完整示例
--- SMD: version: "0.6.0" song: title: 晴天 artist: 周杰伦 key: G bpm: 69 time: 4/4 --- # 前奏 | G[2] D[2] | Em[2] C[2] | | | | # 主歌 1(带节奏值) | G[2] D[2] | Em[4] | | 故事的小黄花 | 从出生那年就飘着 | | Em[4] | C[4] | | 童年的荡秋千 | 随记忆一直晃到现在 | # 副歌(扫弦节奏型) | C: ↓ ↓↑ ↓↑ | G: ↓ ↓↑ ↓↑ | Am: ↓ ↓↑ ↓↑ | F: ↓ ↓↑ ↓↑ | | 吹着前奏望着天空 | 我想起花瓣 | 试着掉落 | | # 间奏(分解和弦) | G: 3e 2B 0G 0D 3A 3E | D | Em | C | | | | | | # 尾奏(Solo 技巧) | : 3e[1/2] h5e[1/2] p3e[1] 5e~[2] | | | | G | D | Em | C | | | | | |
10. 版本历史
| 版本 | 新增内容 |
|---|---|
| 0.1 | 基础文件结构与核心语法(元信息、段落、小节线、和弦歌词配对) |
| 0.2 | 节奏值、休止、延续音及拍数校验 |
| 0.3 | 分解和弦 : 标记与和弦保持段、扫弦 |
| 0.4 | 弹奏技巧:击弦 h、勾弦 p、揉弦 ~ |
| 0.5 | 扫弦弦集合(↓EAD、↓E-D) |
| 0.6 | 轨道标识与多轨并行、对齐组 |