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