跳到主要内容

理解反复迭代数

乐谱中许多地方会用到“第几遍”的标号,例如在多行歌词和跳房子记号中。当一份乐谱中出现多组多行歌词或跳房子记号时,不同人标号的方法可能会不一样,并且目前最常见的方法并不足以被推广以应对复杂的曲式结构。因此,本节我们将介绍 Sparks NMN 推荐采用的标号方式——反复迭代数。这是一种规则简单、易于理解、容易推广且不会产生歧义与混淆的方式。

备注

本节内容以理解为主,读者不必过度关注各种记号对应的 Sparks NMN 语法——后面会提到的。

乐谱中的数字

乐谱中的反复,就是将相同的部分放到一起书写。然而,许多相同的地方并非完全相同,总有一些区别,体现在乐谱上,就是要在同一个地方区分不同的反复次数。标号是最常用的区分方法。下面,我们看两个用到标号的典型场景,分别是多行歌词和跳房子记号。

多行歌词

多行歌词为不同的反复次数指定了不同的歌词,表示“第几次”的标号写在歌词行前。下面的例子来自歌曲《小手拉大手》

这个记法表示第一次经过第 31、32 小节时,歌词是“把自由交给草原的辽阔”,而第二次和第三次歌词均为“我们一直就这样向前走”。

跳房子记号

再看一个跳房子记号的例子,来自歌曲《宝贝宝贝》

这里跳房子记号的含义是:第一次到达第 43 小节末尾时,进入标有 1. 的区间;第二次则进入 2. 区间,以此类推。

局部标号法的缺陷

结合上述例子,一个很自然的想法是,标号是为多行歌词、跳房子这样的记号服务的。没有它们,自然也不需要标号。因此,多行歌词的标号可以表示“经过这一段的次数”,而跳房子记号可以表示“经过跳房子区间开头的次数”。这样的标号思维,称为局部标号法

局部标号法有着难以克服的缺陷,难以推广以应付复杂的曲式结构。至于为什么,不妨看一个例子。

我们现在要记录歌曲《爱殇》的乐谱。我们希望尽可能充分利用反复记号,少写重复的部分。要做到这一点,第一步是将歌曲分段,并将段之间的相似、相同关系梳理出来。完成这一步后,可以画出段落结构的缩略图:

首先,我们发现第 2-5 段中,主歌 A 和主歌 B 均重复两遍,因此,可以利用反复记号反复它们。我们将它们的歌词合并,使用多行歌词来表示。

这样就行了吗?并非如此!具体考察一下主歌 B 与之后段落的衔接方式,就会发现问题。第一遍主歌 B 接回主歌 A 时,是这样的:

而第二遍主歌 B 接到副歌时,情况大致如此:

它们之间的差异靠插入一个反复记号并不能解决,必须使用跳房子记号才行。

所以,我们的缩略图应该写成这样:

注意到,第 7 段还出现了一个主歌 B,我们希望将这个主歌 B 也合并。非常简单,再反复一次即可...吗?

似乎出现问题了——我们在主歌 B 前面添加了反复目标记号,这会导致第一遍主歌 B 结束后无法接回主歌 A。在这里,我们只能使用另一种反复记号来暂且解决问题。

最后,副歌 (II) 和副歌 (II') 也是应该合并的,但是它们的尾部有一些不同,因此需要跳房子记号来区分。这里我们就要引入第二组跳房子记号。

这就是缩略图最后的样子。有了这个缩略图,我们就知道在记谱时如何谋篇布局了。

至此,这首歌的结构分析问题算是解决了。然而,显而易见,事情已经变得有一些混乱:编号 1.1.2.2. 已经在多处被使用,表示的意义不尽相同;为了避免反复记号冲突,我们还混用了两种反复记号。我们不禁要问,

  1. 如果曲式结构更加复杂,大量重复的编号是否容易导致可读性降低,甚至引起歧义?
  2. 我们已经把仅有的两种反复记号都用掉了,如果结构更加复杂,需要更多组反复记号,该怎么办?

诚然,记号体系难以表达的复杂的曲式结构,可以通过补充一些文字说明来表达。但是,通过文字说明表达是低效且不严谨的,阅读并理解冗长的文字说明也会销蚀读者的注意力。如果能设计一套易于理解且能有效避免歧义的记号,当然是最理想的。

基于反复的标号

考虑上述两个问题。第一个问题是说局部标号法会产生重复的编号,因此容易产生歧义,不够理想。

第二个问题是说,只有两种反复记号,可能不够用。然而,反复记号的种类非常有限是难以改变的事实。与其继续添加多种反复记号,不如采取其他措施进行区分,从而避免使用多种反复记号的需要。例如,上面的缩略图或许可以改成这样:

甚至更加简洁一点,

但是,无论是“第三遍”还是“3.3.”,都依赖于标号。如果不解决标号重复的问题,当曲式结构变得复杂时,歧义在所难免。因此,所有的问题都可以归结为一点——标号是局部的,因而会出现重复标号,从而容易产生歧义。我们希望有一个更加顾全大局的标号方案。

原本我们认为标号是为多行歌词和跳房子记号服务的,因此产生了局部标号法。不妨换一个角度思考,标号是为了什么?为了区分。区分什么?区分不同的反复次数。而反复次数恰恰是反复导致的。根据这一点,我们就可以很自然地定义一种全局的标号:

  • 歌曲开始时,标号为 11
  • 每次遇到反复记号需要跳转时,在开始跳转之后,跳转到目标位置之前的时候,将标号增加 11

我们称这样的标号为反复迭代数。根据这一原则,我们的缩略图就可以改成这样:

这样,一切都变得清晰了。没有两种反复记号混用,也没有意义模棱两可的标号。并且,即便我们重新规定了标号的方法,初学音乐的读者仍然可以根据简单的推测就轻松明白我们的意思,这是最重要的一点。

重置迭代数

拼接多个乐谱片段时,我们可能不希望反复修改乐谱中的标号。这时,可以在合适的位置添加 resetreset 记号使得迭代数被重置为 11。例如下面片段:

在第三小节开头添加 resetreset 记号,即可变为,

编辑体验 - 曲式结构检查

复杂的反复结构可能并不那么直观,因此,Sparks NMN 编辑器提供了一些用来检查曲式结构的工具。

利用音效试听窗口检查结构

最低版本:Sparks NMN 1.14.1

音效试听窗口不仅仅可以用来试听,其进度条界面还可以用来检查乐谱的曲式结构是否正确。选择某个反复迭代数后,界面上将显示这一次反复包含哪些小节,利用这一点就可以直观地检查曲式结构。

如果你希望在音效试听过程中忽略一切反复记号以及跳房子等区分记号,在“反复次数”处选择 忽略反复与区分 即可。然而,这是不推荐的,因为这时解析器会直接从头到尾地读取变速与转调记号,而非按照反复记号以正常的顺序读取。

迭代数冲突校验

最低版本:Sparks NMN 1.14.1

为了防止滥用 resetreset 记号,Sparks NMN 禁止出现一个小节被经过两次,并且这两次对应的反复迭代数相同的情况。如果某小节处出现这种情况,这一小节右端会出现红色色块,并且编辑器会显示错误。

此例子的反复结构:第一遍迭代数为 1,小节 1-4;第二遍迭代数为 2,小节 1;第三遍迭代数为 1,小节 2-4。因此小节 2-4 被认为出现了迭代数冲突。

接下来...

现在,我们有了一个明确、可推广的标号方式。接下来,我们将介绍多行歌词、跳房子、替代旋律、条件反复等记号以及它们的严谨含义。相比于局部标号法,它们在反复迭代数模型下有着更为简洁和明确的意义,同时将变得更加灵活,足以应对非常复杂的曲式结构。