简谱歌词对齐标准(NN-MD 通俗版 v1.3)
本规范是 NN-MD v1.2 的升级版(v1.3),用大白话讲清如何用纯文本书写简谱和歌词,并让它们严格对齐。
v1.3 相比 v1.2 新增:M/L 前缀、Markdown 风格头部、按小节对齐宽容模式、_ 双重含义(低音修饰符 / 歌词占位)。
一、音乐名词小词典(先弄懂再说)
为了看懂规则,您只需要理解下面几个词:
- 音符
数字 1 到 7,代表 do re mi fa so la ti。数字 0 叫 休止符,代表不唱不出声,但拍子照样数够。
- 增时线(也叫"延时线")
短横 -,每个 - 单独占一个位置,作用是把前面的音再延长一拍。比如 5 - 就是"5"唱两拍。
- 附点
小圆点 .,附在音符后面,让它延长一半的拍子。如 5. 唱一拍半。
- 减时线
斜杠 /,附在音符后面让它变短。加一个 / 变八分音符(半拍),加两个 // 变十六分音符(四分之一拍)。
- 装饰音(也叫倚音)
写在大音符前面的小音符,用花括号 { } 包起来。它一闪而过,不占歌词的字位。唱的时候带一下就行。
- 延音线
波浪号 ~,放在两个一样的音之间,表示这两个音要连起来唱成一个,中间不能断。歌词只对应第一个音,后面的音用下划线 _ 占位。
- 圆滑线
小括号 ( ),表示包起来的几个音要唱得连贯圆滑。它不影响歌词对齐,里面的音该怎么对字就怎么对。
- 三连音
标记 [3: ... ],表示括号里的三个音平均分拍子(比如三个音挤在两拍里)。里面的音符照样一个字一个位置。
- 小节、拍号
音乐用竖线 | 分成一节一节的,叫小节。拍号如 4/4 表示每小节有 4 拍。这些只是辅助,不影响歌词对齐。
- M 行 / L 行
M 行是简谱行(Music),L 行是歌词行(Lyrics)。v1.3 推荐用 M: L: 前缀标记,更清晰。
- 占位符
_
下划线在 v1.3 中有两个用途:
- 音后修饰符(紧跟音符,如
5_):表示低音 5 - 歌词占位(独立成"词"):表示"这里不唱新字、拍子照数"
好了,就这些,足够用了。
二、核心思想:像填格子一样对齐
把简谱(M行)和歌词(L行)想象成两条带格子的纸条。每个格子之间用空格隔开,格子的数量必须一样多,然后一格对一格,就自然对齐了。
哪些算"格子"?
- 简谱行里每个音符(包括
0)算一格。 - 每个增时线
-也算一格。 - 小节线
|、连线~( )[3:]等标记不算格子,它们被跳过。 - 装饰音
{ }包住的整个花括号内部,全部不算格子,完全无视。
歌词行里:
- 一个汉字算一格。
- 一个英文单词也算一格。
- 遇到不唱但占拍子的地方,就用下划线
_占一格。 - 空格用来分格,绝不省略。
规则就这么简单:简谱的有效格子数 = 歌词的格子数。不等就说明写错了。
三、文件整体结构
v1.3 推荐用以下结构写一首歌(从上到下):
# 标题 (Markdown 一级标题:歌名)
## 1=C 4/4 (Markdown 二级标题:调号 + 拍号)
## 速度 120 (可选:速度 / BPM)
## 词作者 / 曲作者 (可选:作者信息,会被识别但忽略)
--- (分隔线:标记元信息结束)
M: | 1 2 3 1 | 1 2 3 - |
L: | 你 问 我 爱 | 有 多 深 |
M: | ...
L: | ...3.1 标题 / 元信息(Markdown 风格)
# 标题→ 解析为标题: ...## 1=C 4/4→ 解析为调: C+拍号: 4/4## 速度 120→ 解析为速度: 120## 作者 信息→ 会被识别为元信息行,但不会报错,会安全忽略
也兼容旧式 标题: 小星星 写法(和 Markdown 风格混用也行)。
3.2 M/L 前缀
v1.3 推荐用 M: L: 前缀标记简谱行和歌词行,更清晰:
M: | 1 2 3 1 |→ 简谱行L: | 你 问 我 爱 |→ 歌词行
也兼容无前缀写法(程序会按"含数字多 = 简谱行 / 含汉字多 = 歌词行"自动分类)。
3.3 分隔线 ---
--- 行是元信息和正文之间的分界。如果你不想写元信息,可以不写 ---,直接进入 M/L 行。
四、简谱行(M行)书写规矩
M行只放简谱内容。每个要素之间用空格分开。
1. 基本音符
1 2 3 4 5 6 7 表示中音区。
休止符用 0。
2. 高低音
在数字后加 ^ 表示高音,_ 表示低音。
例如 1^ 高音do,5_ 低音so。1^^ 是倍高音,5__ 是倍低音。
v1.3 严格规定:^ 和 _ 互斥(一个音只能高八度或低八度,不能同时)。
1^_是 v1.2 旧风格,v1.3 不推荐,但程序会宽容处理(只取第一个修饰符)。- 推荐写法:
1^或1_,二选一。
3. 长短
- 不加东西的纯数字是四分音符,算 1 拍。
- 后面加
/变八分音符(半拍),加//变十六分音符。 - 后面加
-增时线,每多一个-就多延 1 拍。 - 后面加点
.延长一半。
4. 升降号
数字前面加 # 升,加 b 降。如 #4 b7。
5. 特殊记号
- 小节线
|,前后加空格。 - 延音线
~,放在两个相同音之间。 - 圆滑线
(开始,)结束。 - 三连音
[3:开始,]结束。 - 装饰音
{开始,}结束,里面只能放音符,不能放-等杂物。
重要:增时线 - 必须单独写成"词",前后空格。写 5 - 是对的,写 5- 是错的(虽然程序能识别,但不利于人眼对齐阅读)。
五、歌词行(L行)书写规矩
L行只放歌词和占位符,空格分隔。
- 每个格子放一个汉字。
- 拖腔、连音等不需要唱新字的地方,用下划线
_占一个格子。 - 英文歌词一个单词占一格,如
love。 - 休止符
0处必须用_占位,因为这里虽然不唱,但拍子位置要保留。 - 歌词中不要出现下划线字符,如果需要表示停顿或拖音,已经统一用
_处理。
标点符号
歌词中可以包含中文标点(。 , ? ! 等),每个标点算一格。这和汉字一样处理。
六、对齐规则精讲(消除所有歧义)
1. 拍位数严格相等
简谱行去掉所有结构记号(| ~ ( ) [3: ])以及整个装饰音块 {...} 之后,剩下的每一个音符和每一个 - 都是一个"拍位"。L行用空格切出来的词数量必须和拍位数相同,多一个少一个都不行。
2. 装饰音彻底无关
{6 5} 这样的东西,里面的 6 和 5 绝对不占拍位,不参与歌词计数,L行不用为它们准备任何格子。就像没看到它们一样。
3. 延音线后的音符占拍位但不换字
5 ~ 5 中,两个 5 都是拍位,但唱成一个连贯的"啊",所以歌词对应第一个 5 写实字,第二个 5 的位置用 _ 顶替。同理,它的增时线 - 也一样占位用 _。
4. 一字多音用 _ 撑开
一个"风"字拖了四个拍位(比如 6 - 6 -),歌词就写成 风 _ _ _,四个格子,一个风三个下划线。
5. 休止符必须用 _ 占位
休止符 0 虽然不唱,但在拍位计数里,它和普通音符没区别。如果歌词行少给它一个格子,对齐就全乱了。所以 0 后永远跟 _。
6. 按小节对齐宽容模式(v1.3 新增)
核心改进:L 行可以"偷懒"少写几个字,程序会按 M 行的小节结构自动补 _ 占位。
两种情况:
情况 A:L 行有 | 切分,且段数等于 M 行小节数 → 按段对齐
- 适用于:用户精确写出了每小节的歌词
- 算法:L 段少词时补
_到 M 段格数,多词时截断
情况 B:L 行没有 |(一段长串),或段数不对 → 按词池切分
- 适用于:用户懒得写
|,把所有歌词用空格连成一行 - 算法:把 L 行所有词展平成词池,按 M 行小节顺序切分(每小节长度 = M 小节格数)
示例:
M: | 1 1 5 5 | 6 6 5 - | 4 4 3 3 | 2 2 1 - |
L: | 一 闪 一 闪 | 亮 晶 晶 _ | 满 天 都 是 | 小 星 星 _ |如果用户偷懒不写 |,下面这种写法也合法(程序自动切分):
M: | 1 1 5 5 | 6 6 5 - | 4 4 3 3 | 2 2 1 - |
L: 一 闪 一 闪 亮 晶 晶 _ 满 天 都 是 小 星 星 _程序会把 L 词池按 4-4-4-4 切分,分配到 4 个小节。
更厉害的是:用户忘写 - 也没事!比如:
M: | 6 6 5 - | 4 4 3 3 | (每小节 4 cells)
L: | 亮 晶 晶 | 闪 闪 闪 | (每段 3 词)虽然 L 比 M 少 2 个词,但程序会自动补 _,对齐成 亮 晶 晶 _ | 闪 闪 闪 _,对应"亮晶晶 2 拍 + 延音 1 拍"。
七、完整实例(看着例子秒懂)
例1:《小星星》(标准格式 v1.3)
# 小星星
## 1=C 4/4
## 速度 120
## 莫扎特 曲
---
M: | 1 1 5 5 | 6 6 5 - | 4 4 3 3 | 2 2 1 - |
L: | 一 闪 一 闪 | 亮 晶 晶 _ | 满 天 都 是 | 小 星 星 _ |
M: | 5 5 4 4 | 3 3 2 - | 5 5 4 4 | 3 3 2 - |
L: | 挂 在 天 空 | 放 光 明 _ | 好 像 许 多 | 小 眼 睛 _ |
M: | 1 1 5 5 | 6 6 5 - | 4 4 3 3 | 2 2 1 - |
L: | 一 闪 一 闪 | 亮 晶 晶 _ | 满 天 都 是 | 小 星 星 _ |第三小节简谱有四个拍位 5 6 5 -,歌词正好 满 天 都 是,末位用 是 字(或 _)占住延音位置。
例2:延音线和跨小节连音
M: | ( 3/ 5/ ) 6 - ~ | 6 - 5 3 | 2 - - - |
L: | 春 _ 风 _ | _ _ 吹 绿 | 岸 _ _ _ |圆滑线 ( ) 被跳过。第一小节有效拍位:3/ 5/ 6 - 共 4 个。~ 跳过。
第二小节有效拍位:6 - 5 3 共 4 个。但"风"字需要连起来,所以它的拍位实际是 6(一小节第三拍)、-(一小节第四拍)、6(二小节第一拍)、-(二小节第二拍) 共 4 个,歌词对应写成 风 _ _ _。
第一小节后两拍是"风 _",第二小节前两拍是"_ _",恰好填满。
例3:装饰音和三连音
M: | {6 5} 3 - 3 - | [3: 2/ 1/ 2/] 3 - - |
L: | 练 _ 习 _ | 三 连 音 _ _ _ |装饰音 {6 5} 完全忽略。第一小节拍位:3 - 3 - 4 个,对 练 _ 习 _。
第二小节三连音内部 2/ 1/ 2/ 都是有效拍位,加上后面的 3 - -,一共 6 个拍位。歌词 三 连 音 _ _ _ 也是 6 个格子,完美。
例4:宽容模式 — L 行偷懒
M: | 1 2 3 1 | 1 2 3 - |
L: 两 只 老 虎 跑 得 快L 行没写 |,也没用 _ 占延音位。程序会按 M 行小节自动切分:
- 小节 1(4 cells):
两 只 老 虎 - 小节 2(4 cells):
跑 得 快 _(自动补 1 个_占延音)
例5:纯器乐段(无歌词)
M: | 1 1 5 5 | 3^ 3^ 2^ 2^ | 1 - - - | 0 - - - |
L: | 卡 农 之 门 | _ _ _ _ | _ _ _ _ | _ _ _ _ |中间两小节没有歌词,全部用 _ 占位(4 cells × 2 段 = 8 个 _)。
八、v1.2 → v1.3 兼容性说明
| 特性 | v1.2 旧写法 | v1.3 推荐写法 | 兼容性 | ||
|---|---|---|---|---|---|
| 同时高低音 | 1^_ | 1^ 或 1_ | 程序宽容处理(取第一个修饰符) | ||
| 元信息 | 标题: ... 调: ... | # 标题 ## 1=C | 两种都支持 | ||
| M/L 前缀 | 无 | M: L: | 两种都支持 | ||
| L 行分小节 | 必有 `\ | ` | 必有 `\ | ` 或可省略 | 两种都支持(按小节对齐宽容模式) |
_ 在音后 | 仅当低音 | 低音 5 | 行为一致 | ||
_ 在 L 行 | 歌词占位 | 歌词占位 | 行为一致 | ||
| 八分音符 | 1^_ | 1/ | v1.3 改变:/ 是减时线,_ 是低音 | ||
| 延音线 | - | - | 行为一致 |
重要提醒:v1.2 用户如果写 1^_ 期望"1 升八度 + 八分音符"(旧规则),在 v1.3 中这个写法已经被重新定义:
_在音后只表示"低音",不再表示"八分音符"- 八分音符用
/表示
所以 v1.2 → v1.3 升级时需要做以下替换:
1^_→1^/(升八度 + 八分音符)1_(如果原来是"低音")→1_(v1.3 仍是低音,无需改)1_(如果原来是"八分音符")→1/
九、相比于 v1.2 的改进(歧义消除)
- 明确休止符占位规则
明文规定休止符 0 必须在歌词行用 _ 顶格,不再靠猜。
- 装饰音内部成分限制
规定 { } 内只能出现音符,不能放增时线或其他记号,避免误解。
_双重含义明确化
v1.2 中 _ 既是低音修饰符又是八分音符修饰符,含义混乱。v1.3 中:
_在音后 = 低音(且八度方向单一)/= 减时线(八分音符)_在 L 行 = 歌词占位
- 延音线占位原理图解
强调 ~ 两端音符都是独立拍位,但连音不换字,歌词靠 _ 后移,消除跨小节连字的困惑。
- 按小节对齐宽容模式(v1.3 新增)
L 行可以偷懒少写 | 或忘写 -,程序按 M 行小节结构自动补 _,降低用户书写负担。
- M/L 前缀 + Markdown 头部
文件结构更清晰:标题 / 元信息 / 分隔线 / M 行 / L 行。程序宽容接受多种写法。
- 语言全部大白话
不用"Token""词法映射"等程序术语,全部换成格子、拍位,零基础也能懂。
有了这份标准,任何两个人按照同样的空格规则敲出简谱和歌词,都能做到一字一音,准确无误,而且人眼看着舒服,程序也能直接解析。您可以直接复制此版本文档进行推广,有任何细节想再调,我随时帮您微调。