曲谱行、歌词行、标记符号行
所谓词曲指令,就是表示曲谱或歌词实质内容的指令,包括声部头中的这些:
命令头 | 全称 | 说明 | 必须 | 唯一 | 内容 | 属性 |
---|---|---|---|---|---|---|
N | Notes | 音符序列 | N | N | 符号化 | 可选 |
Na | NotesAccompany | 鼓点音符序列 | N | N | 符号化 | 可选 |
Nc | NotesCompact | 紧凑音符序列 | N | N | 符号化 | 可选 |
A | Annotation | 标记符号 | - | - | 符号化 | 可选 |
还有歌词行中的这些:
命令头 | 全称 | 说明 | 必须 | 唯一 | 内容 | 属性 |
---|---|---|---|---|---|---|
L | Lyric | 歌词(手动分割) | L | L | 符号化 | 可选 |
Lc | LyricChar | 歌词(字基) | L | L | 符号化 | 可选 |
Lw | LyricWord | 歌词(词基) | L | L | 符号化 | 可选 |
Ns | NotesSubstitute | 替代小节 | - | - | 符号化 | 可选 |
A | Annotation | 标记符号 | - | - | 符号化 | 可选 |
La | LyricAnnotation | 标记型歌词 | - | La | 符号化 | - |
本节具体说明属性的写法,并指出其内容应当是什么。
音符序列 N/Na 的属性
音符序列 N
Na
指令可以有一个属性,也可以没有,如果有多个属性,只有第一个有效。属性代表当前声部的名称。名称有两类写法:
- 不带下标的字符串:
"V"
- 带下表的字符串:
"T1"_"2"
注意,字符串不能使用单引号 '
。
例如,这样就可以为声部添加名称:
P: 1=? 3/4
====
N["P1"]: - - (11) | 6 - (66) | 4 - 6 | (56)(54)(34) | 5 - (65) | 4 - (54) | 3 - (43) | (23)(21)(7d1) | 2 -
N["P2"]: - - (11) | 4 - (44) | 1 - 4 | (34)(32)(12) | 3 - (43) | 2 - (32) | 1 - (21) | (7d1)(7d6d)(7d1) | 2 -
添加名称后,名称而非序号将成为声部的唯一标识符。若同一个碎片中有两个名称完全一样的声部,后者会覆盖前者。
鼓点行 Na
和其他类型的声部即使名称相同也会被认为是不同的声部。
将普通声部的 N
改成 Nc
,将成为紧凑型声部。
歌词的属性
歌词行 L
Lw
Lc
指令可以有零个一个或多个属性,代表歌词的迭代数(平常所说的段号或反复次数),格式为 <迭代数>.
。例如,这样可以为第一遍和第二遍添加不同的歌词,而使第二遍和第三遍的歌词一致。
P: 1=C 4/4
====
N: 3 1 (33) 1 | (33) (56) 5 - | (66) (65) (44) 4 | (23) (21) 2 - |
Lc[1.]: 门前大桥下,游过一群鸭。快来快来数一数,二四六七八。
Lc[2.,3.]: 赶鸭老爷爷,胡子白花花。唱呀唱着家乡戏,还会说笑话。
渲染时,迭代数会被显示在相应行第一个字符左侧一点的位置。
添加迭代数后,歌词行的所有迭代数构成的序列,而非序号,将成为其唯一标识符。
还可以在迭代数列表前添加一个双引号引起的字符串(不会显示),这时这个字符串会成为唯一标识符。
若渲染时会出现某行上有两个标识符不同,但是位置完全错开的歌词行,渲染器会自动将它们排在一起。
替代旋律 Ns 的属性
如果想在没有歌词的情况下使用替代旋律 Ns
,那么可以在替代旋律行上添加迭代数使其能够显示。不过,为了使 Ns
有效,仍然需要一个空的歌词行(放心,渲染时这不会占据空间)。
P: 1=C 4/4
====
N: 0 (66)(67)(1e7~) | (7) 5 (3~) 3 0 | 6 6 (65)(45~) | (5) 3 4 5 (0) |
L[2.]:
Ns[2.]: 2: ~(7) 5 3 (5) 5 | 0 6 (65) (45~) !|
---
N: 0 (66)(67)(1e7~) | (7) 5 3 (5) (2e1e~) | 1e (6) 1e 2e (3e~) | (3e2e) 2e - 0 |
替代旋律的内容
替代旋律除了曲谱外还需要指定替代位置,因此其格式是这样的:
Ns<[<属性>]?>: <替代位置>: <小节>
其中替代位置指的是被替代小节在当前碎片中的序号,从 1 开始。
标记符号行的序号
通过渲染属性,可以根据标记行 A
在碎片中的序号为其指定不同的字体。然而有的时候,这并不是很方便,因此还可以通过属性给文本标记行强制指定使用哪一个字体,形如:
A<[<序号>]?>: <内容>
其中序号取值范围是 0-6。
例如,标记行 A[2]: <内容>
一定会使用渲染属性 font_annotation2
所指定的字体。
只有不同碎片中两个标记行在声部中的次序和字体序号都相同时,它们才被认为是同一个标记行。
小节
音符序列 N
Na
Ns
和标记 A
La
具有非常类似的格式,称为小节序列。
歌词
歌词序列 Lc
Lw
后面跟的是歌词文本,支持自动划分,因此文本的样子会和歌词原文相差无几。
歌词序列 L
后面跟的是手动歌词,其语法规范相当复杂,非极其特殊的情况不建议使用。