跳到主要内容

多行歌词

多行歌词是一种在反复中「存异」的方式,用于为不同的反复次数提供不同的歌词。

多行歌词语法

在一个声部下添加多行歌词,只须并排编写多个 L LcLw 开头的行即可。

资源加载完毕后,预览将会显示。
0/11
P: 1=C 4/4
---
N: 1 1 5 5 | 6 6 5 - | 4 4 3 3 | 2 2 1 - |
Lc: 一闪一闪亮晶晶,满天都是小星星。
Lc: 太阳慢慢向西沉,乌鸦回家一群群。
---
N: 5 5 4 4 | 3 3 2 - | 5 5 4 4 | 3 3 2 - :||
Lc: 挂在天上放光明,好像许多小眼睛。
Lc: 星星眨着小眼睛,闪闪烁烁到天明。
---
N: 1 1 5 5 | 6 6 5 - | 4 4 3 3 | 2 2 1 - |||
Lc: 一闪一闪亮晶晶,满天都是小星星。

这样生成的多行歌词,行之前是没有标号的。其含义是:第一次经过此处时,唱第一行歌词;第二次经过此处时,唱第二行歌词。

带标号的多行歌词

没有标号的多行歌词显得意义不太明确,并且也没有利用到反复迭代数模型的优势。在 L LcLw 后添加中括号,写上标号(标号包含点 .),即可为歌词行添加标号。

资源加载完毕后,预览将会显示。
0/11
P: 1=C 4/4
---
N: 1 1 5 5 | 6 6 5 - | 4 4 3 3 | 2 2 1 - |
Lc[1.]: 一闪一闪亮晶晶,满天都是小星星。
Lc[2.]: 太阳慢慢向西沉,乌鸦回家一群群。
---
N: 5 5 4 4 | 3 3 2 - | 5 5 4 4 | 3 3 2 - :||
Lc[1.]: 挂在天上放光明,好像许多小眼睛。
Lc[2.]: 星星眨着小眼睛,闪闪烁烁到天明。
---
N: 1 1 5 5 | 6 6 5 - | 4 4 3 3 | 2 2 1 - |||
Lc: 一闪一闪亮晶晶,满天都是小星星。

一个歌词行可以同时有多个标号(每个标号后都要带有 .,它们之间用逗号 , 隔开),例如在歌曲《小手拉大手》中,

资源加载完毕后,预览将会显示。
0/11
Dp: 补全计划 - Netheric Playlist #0274
Dt: 小手拉大手
Da[原唱]: 梁静茹
Da[作词]: 陈绮贞
Da[作曲]: 过亚弥乃
P: 1=C 4/4
====
Srp: font_lyrics=Roman,CommonSerif/600/0.95
---
N: &lpr; 1e[((4))] - - - | 1e[((3))] - - - | 1e[((4))] - 2e[((5))] - | 1 (11) (01)1 |
---
N: 1 &rpr; (05d)(5d6d)(12) ||: 3 (6) 5 (3)(22^) | 1^ (01)(21)(7d1) | 4 (6d) 1 3 (3^) |
Lc: %还记得那场音乐会的烟火,还记得那个凉凉的深秋。
---
N: 2^ (02)(32)(#12) | 5 (7d) 2 (3)(22^) | 1^ (01)(21)(7d1) | 4 (6d) 1 6d (6d^) |
Lc: %还记得人潮把你推向了我,游乐园拥挤的正是时候。
---
N: 5d^ (05d)(5d6d)(12) | 3 (6) 5 (3)(22^) | 1^ (01)(21)(7d1) | 4 (6d) 1 3 (3^) |
Lc: %一个夜晚坚持不睡的等候,一起泡温泉奢侈的享受。
---
N: 2^ (02)(32)(#12) | 5 (7d) 2 (3)(22^) | 1^ (01)(21)(7d1) | 4 (6d) 1 2 (1~) |
Lc: %有一次日记里愚蠢的困惑,因为你的微笑幻化成风。
---
N: 1 (03)(43)(23) | 4 (3)2 3 (4~) | 4 (04)(54)(54) | 3 (2) 1 2 (3~) |
Lc: %你大大的勇敢保护着我,我小小的关怀喋喋不休。
---
N: 3 (03)(32)(#13) | 3 (2)2 (2)(#12~) | 2 (02)(23)(#42) | 6 (5) 5 #4 (5~) ||
Lc: 感谢我们一起走了那么久,又再一次回到凉凉深秋。
---
N: 5 (03)(43)(45~) |[$] 5 (03)(43)(45~) | 5 (05)(65)(67) | 1e (3) 3 6 (6^) |
Lc[1.]: 给你我的手,像温柔野兽,把自由交给草原的辽阔。
Lc[2.,3.]: 给你我的手,像温柔野兽,我们一直就这样向前走。
---
N: 5^ - (01)(21) | 4 (3) 2 (1~) 1 | (3) 3 2 (1)(01) | 2 (6d) 1 3 (5~) |
Lc: %我们小手拉大手,一起郊游,今天别想太多。
---
N: 5 (03)(43)(45~) | 5 (03)(43)(45~) | 5 (05)(65)(67) | 1e (3) 3 6 (6^) |
Lc[1.,2.]: 你是我的梦,像北方的风,吹着南方暖洋洋的哀愁。
Lc[3.]: 哦啦啦啦啦,像北方的风,吹着南方暖洋洋的哀愁。
---
N: 5^ - (01)(21) | 4 (3) 2 (1~) 1 | (3) 3 2 (1)(01) | 2 (6d) 1 2 (2^) |
Lc: %我们小手拉大手,今天加油,向昨天挥挥手。
---
J: 1.
N: 1^ - - - | 0 (05d)(5d6d)(12) :||
Lc: %还记得那场
---
J: 2., *
N: ^ 1^ - - - | &lpr; 7 6 5 4 | 5 - - 6 | 1 - 2 3 |
---
J:
N: 4 - (01e)(71e) | 7 6 5 4 | 6^ 5~ - - | 5^ - 6 - |
Lc: %啦啦啦啦啦啦啦啦_{1}
---
J:
N: 1 - - - | 1 2 #4 - | 7d - 1 - | 2 &rpr; (03)(43)(45~) !{D.S.}||
Lc: %{7} 给你我的手,
---
J: 3., *
N: ^ 1^ - (01)(21) | (4) 3 2 (1)(11) | (4) 3 2 1 (1) | 2 (6d) 1 2 (2^) | 1^ - - - |
Lc: % 我们小手拉大手,今天为我加油,舍不得挥挥手。
---
J:
N: &lpr; 4 3 4 3 | (13d)(5d1)(05d)(15) | 4 3 (43)(45^~) | 5 - - 6d | 1^ - - - |
Lc: %{13}啦啦啦啦_{2}
---
J:
N: (13d)(5d1)(05d)(15) | 4 (03)(43)(45^) | 2e - - 6 | 1e^ - 6 7 |
Lc: %{8}啦啦啦啦啦_{3}
---
J:
N: 1e (1e) 1e b6 (1e^~) | 1e~ - (1eb6)(54^) | 5 (5) 5 3 (5~) | 5 - - - &rpr; |||
Lc: 啦啦啦啦啦_{0}[Wu_{2}]啦啦啦啦啦_{0}

标号与歌词正文间的距离可以调节,见文档缩放、样式选项

歌词行一致的判据

烧 CPU 警告

这一部分涉及的技术性内容比较复杂,并且不那么重要,看不懂或不想阅读是很正常的事情,可以跳过。

多声部类似,如果歌词行没有标号,那么不同碎片中出现次序相同的歌词行将被认为是同一个;如果有标号,那么标号列表完全相同的歌词行会被认为是同一个。看下面这个例子:

资源加载完毕后,预览将会显示。
0/11
P: 1=C 4/4
--- // 第一行,1-4 小节
N: ____ |
Lw: A-A-A-A
---
N: ____ |
Lw: A-A-A-A
Lw: B-B-B-B
---
N: ____ |
Lw: C-C-C-C
Lw: A-A-A-A
Lw: B-B-B-B
---
N: ____ ||
Lw: A-A-A-A
Lw: B-B-B-B
Lw: C-C-C-C
Lw: D-D-D-D
--- // 第二行,5-8 小节
N: ____ |
Lw[1.]: A-A-A-A
---
N: ____ |
Lw[1.]: A-A-A-A
Lw[2.]: B-B-B-B
---
N: ____ |
Lw[3.]: C-C-C-C
Lw[1.]: A-A-A-A
Lw[2.]: B-B-B-B
---
N: ____ |||
Lw[1.]: A-A-A-A
Lw[2.]: B-B-B-B
Lw[3.]: C-C-C-C
Lw[4.]: D-D-D-D

如果有特殊需要,还可以在歌词行标号列表的开头添加一个双引号引起的字符串(不会显示),这时这个字符串将成为歌词行的身份标识。身份标识字符串相同的歌词行将被认为相同。

资源加载完毕后,预览将会显示。
0/11
P: 1=C 4/4
---
N: ____ |
Lw["A", 1.]: A-A-A-A
---
N: ____ |
Lw["B", 1.]: A-A-A-A
Lw["A", 2.]: B-B-B-B
---
N: ____ |
Lw["A", 3.]: C-C-C-C
Lw["C", 1.]: A-A-A-A
Lw["B", 2.]: B-B-B-B
---
N: ____ |||
Lw["D", 1.]: A-A-A-A
Lw["C", 2.]: B-B-B-B
Lw["B", 3.]: C-C-C-C
Lw["A", 4.]: D-D-D-D

注意到这里没有出现 2.2. 3.3. 4.4. 的标号。以 4.4. 为例,这一行身份标识是 A,而 A 的标号早在第一个碎片中就已经定义为 1.1.

谨慎使用

身份标识字符串只应该在非常特殊的情况下使用,在没有必要的情况下应当避免,因为这个功能的不当使用可能造成种种奇怪的结果。

歌词行交错

如果两个不同的歌词行占据的小节恰好错开,并且它们都不包含替代旋律,Sparks NMN 会试图将它们排版到同一行上。这一特性称为歌词行交错

原理

了解 Sparks NMN 如何判断一个歌词行是否占据某个小节。

展开

下面的例子中,标号 11 的歌词行仅占据 1-2 小节,标号 22 的歌词仅占据 3-4 小节,因此它们被排列到同一行上。

资源加载完毕后,预览将会显示。
0/11
P: 1=C 4/4
---
N: ____ | ____ | ____ | ____ |
Lw[1.]: A B C D E F G H
Lw[2.]: %{8} I J K L M N O P

这是为了避免某些复杂情形导致歌词行离曲谱太远,从而降低可读性。

歌词行选择假设

当奏唱一段乐谱时,应该以什么规则来从多行歌词中选择一行?Sparks NMN 有如下假设:

  • 歌词行的选择以小节为单位。每进入一个新的小节时,设这是第 kk 次经过这一小节,且反复迭代数为 nn,都按照下面规则重新选取歌词行:
    • 若存在包含标号 nn 的歌词行,则选择此歌词行,否则
    • 如果不存在未标号的歌词行,则不使用歌词,否则
    • 设未标号歌词行的数量为 mm。如果 k>mk>m,那么选择最后一个未标号歌词行,否则
    • 选择第 kk 个未标号的歌词行。

选择未标号歌词行时,所有不占据此小节的歌词行都会被排除在外,不参与计数;如果小节开头有 resetreset 记号,歌词行的选择发生在重置迭代数之后。

这一假设会在音效试听功能中用到,因为歌词行的替代旋律是被考虑在内的。

挑战

试试看

《卖报歌》作于 1933 年,是中国的经典歌曲。这首歌三个段落具有相同的曲谱和不同的歌词。试上网查找相关资料(根据你的印象也可以)并自行记录其乐谱(含歌词)。

如果有能力,推荐查找音频并采用听写的方式。

提示参考答案

接下来...

接下来我们介绍反复记号的高级用法——多次反复和条件反复。事实上这两个特性在之前的例子中都有出现过,但是仍然值得特别拿出来提一提。