0:00
速度
1.0× · 120 BPM
谱面
100%
Dt: | 曲名 |
Ds: | 副标题 |
Da[作词]: Da[作曲]: | 词曲作者(方括号里的标签随便写) |
Df: | 脚注,显示在谱面末尾 |
P: 1=C 4/4 | 调号与拍号 |
=== | 分隔曲头与正文 |
--- | 分行(把长谱拆成多行显示) |
N: | 音符行 |
Lc[1.]: | 歌词行,紧跟对应的 N: 行,逐字对齐 |
// | 注释 |
1–7 | 音级,0 休止 |
- | 延长一拍 |
1. | 附点 |
(33) | 减时线:括一层=八分,((3333))=十六分 |
(3(32)) | 减时线可嵌套(分组不同时值) |
| | 小节线,||| 终止线 |
1e / 1d | 高八度 / 低八度,可叠加(1ee 高两个八度) |
#1 / b3 | 升 / 降 |
$1 / %3 | 半升 / 半降 |
=1 | 还原 |
||: … :|| | 反复段的开始 / 结束(结束处跳回最近的 ||:,没有则跳回曲首) |
:||: | 双侧反复:上一段结束 + 下一段开始 |
|| / ||| | 双小节线 / 终止线 |
{x4}:|| | 反复次数:x 是「再作用几次」,{x4} = 这段共唱 5 遍 |
{1.,2.,3.}:|| | 条件反复:列出该记号在第几遍生效({x3} 即其简写) |
||:{3.} | 前反复也能标条件,写在记号后面(后置属性) |
J: 1. / J: 2. | 一房/二房,写在碎片开头;可加文本 J: 2., "结束句" |
N: ||: 1 1 5 5 | 6 6 5 - | --- J: 1. N: 4 4 3 3 :|| --- J: 2. N: 2 2 1 - |||
次数标在 :|| 前面、迭代数标在 ||: 后面。反复会真的影响播放顺序(播放器按它走),不只是画个记号。坑:前反复 ||: 写在碎片末尾不会显示,要挪到下一个碎片开头。
--- | 源码里的碎片分隔,不等于谱面换行 |
Rp: n=2 | 全曲每行小节数(写在曲头,默认 4) |
Frp: n=3 | 放在某个碎片开头,只改该行的小节数 |
B: | 放在碎片开头强制换行 —— 想「按源码分行走」就每段加一行 |
P: 1=C 4/4 Rp: n=2 === N: 1 1 5 5 | 6 6 5 - | --- B: N: 4 4 3 3 | 2 2 1 - |
谱面折行默认按每行 4 小节自动排,跟你在源码里怎么分行无关。小节太挤(歌词重叠)就调小 n。
| 默认 | 同一行里所有小节等宽,音符少的小节会被撑开,(11) 里两个音会拉很远 |
Rp: time_lining=true | 按小节总时值分配宽度 |
Rp: note_count_lining=true | 按音符数微调宽度,打破网格感 |
Rp: n=6 | 每行更多小节 → 单节更窄 → 音符靠拢 |
|{w=1.4} | 手动给该小节指定宽度权重(与自动权重相乘) |
觉得音符太散,先试 Rp: time_lining=true note_count_lining=true(多个属性写同一行,空格分隔)。
| 一字一音符 | 中文逐字自动对齐,不要用空格分隔 |
% | 占位符:占一个音符但不显示字(一字多音时用) |
_ | 同样占一个音符,并从该字起画拖腔下划线 |
| 空格 | 连接标点,只影响排版、不占音符——想占位请用 % |
Lc[1.]: Lc[2.]: | 第一段 / 第二段歌词 |
N: 1e (55) 6 3 | (21) (23) 5 - | Lc[1.]: 数不清到底多%少%鸭 Lc[2.]: 别考个鸭蛋抱%回%家
上例 10 个音符对 10 个字位:「多」唱满 (21)、「少」唱满 (23),靠的就是后面那个 %。
1~ 1 | 延长连音线(tie):连到下一个音符,时值相加 |
1^ 2^ | 联合连音线(圆滑线):连接另一个带 ^ 的音符 |
T(671e) | 八分三连音:减时线括号前加 T |
T2 3 4 | 四分三连音:T 作用于其后三个音符 |
连音线符号重复写(1~~)可加大弧度。
Dt: 小星星 Da[作曲]: 莫扎特 P: 1=C 4/4 === N: 1 1 5 5 | 6 6 5 - | Lc[1.]: 一闪一闪亮晶晶 --- N: 4 4 3 3 | 2 2 1 - ||| Lc[1.]: 满天都是小星星
更完整的语法见 sparks-notation/packages/website/docs(仓库内的上游文档)。
注意:这套记法与 diffsinger/m4singer 那条链路的 1' / 1, 不通用。