跳到主要内容

多行歌词

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

多行歌词语法

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

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

带标号的多行歌词

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

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

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

歌词行一致的判据

烧 CPU 警告

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

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

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

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

谨慎使用

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

歌词行交错

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

原理

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

展开

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

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

歌词行选择假设

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

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

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

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

挑战

接下来...

多行歌词是为不同反复次数添加不同歌词的方法。接下来,我们介绍为不同反复次数指定不同旋律的方法——跳房子记号与替代旋律。