多声部、紧凑声部、鼓点行
多声部,即两个以上不同的简单旋律叠合在一起,彼此对齐,同时奏唱。合唱是多声部最典型的例子,不过除此之外,伴奏、和声、轮唱等形式也可以构成多声部。
本节介绍多声部的写法,常见应用场景以及注意事项。
多声部语法
理论上 我们一开始就介绍了多声部语法。还记得当时的事故现场吧?
没错,多个曲谱行在同一个碎片里,就是多声部。
多声部的每个声部下面都可以添加歌词。下面例子来自歌曲《爱殇》。
尽管并不强制,但是若两个声部均有歌词且是相同的,则应当在每个声部下面都写上歌词,而不是只写一遍。
声部在碎片中出现的顺序是在不同碎片之间区分声部的依据,例如
有时这并不是我们想要的效果。为了解决这个问题,也为了让读者更容易阅读,可以为声部添加名称。
添加声部名称
在 N:
的 N
后面添加中括号,里面填入双引号引起的字符串,即可为声部添加名称。具体有这两种写法:
N["名称"]:
,表示一般的文本名称。N["名称"_"下标"]
,表示带下标的文本名称。
举个例子,
添加了名称后,不同碎片下名称(包括下标)完全一致的声部会被认为是相同的声部。
当一个曲谱行跨越了多个碎片时,有一个特殊的比较算法确保声部排序尽可能符合代码中的顺序。
不过在实践中,仍然建议不同碎片之间声部的顺序保持一致,以保证代码的可读性。
空小节与隐藏小节线
多声部乐谱中,有的声部可能在某些小节处是完全空的,可以选择将这些小节完全留空,而不是用休止符填充。只要在小节内容处写入 empty
(或者简写为 e
新增于 1.15.4 ),就可以 将小节留空。隐藏小节线 /
常常与空小节配合使用。
强制换行
存在声部构成变化时,你可能希望在变化处进行换行。在碎片开头添加一行 B:
(没有任何内容,但是冒号不能省略),即可实现在碎片前强制换行。
强制换行会导致上一行出现「不填满」的情况。这是有解决办法的。
这部分内容将在布局与字体章节中具体介绍。
节省排版空间
复杂的多声部乐曲可能会占据过多的排版空间。针对这个问题有两种解决方法。
鼓点行
有时我们希望将打击乐伴奏鼓点写出来。打击乐伴奏鼓点往往具有这样的特点:
- 音符的起始时刻重要,但是时值并不重要,因此一定不需要连音线。
- 没有或者几乎没有需要上下加点的音符。
- 减时线通常至多两条。
如此简单的声部,使用普通的多声部格式表达,未免有些浪费篇幅。Sparks NMN 提供了一种更加紧凑的记法——鼓点行。鼓点行开头的 N
改为 Na
(或 NotesAccompany
),其中的小节以格子的方式显示,占据的高度非常小,上下相邻的鼓点行中间没有行间距。像是这样:
即使名称相同,鼓点行和普通声部也不会被视为同一个声部。尽管不显示小节线及小节线属性,鼓点行的代码中仍然需要描述变拍和变速。
鼓点行不会框进连谱号中。
紧凑声部
有的乐曲中,几个低音声部可能会被用来充当鼓点,它们的排版空间也可以压缩,但是不适合使用鼓点行。这时,可以将音符行开头改为 Nc
(或 NotesAccompany
),使其成为紧凑声部。紧凑声部占据的高度会略小于普通声部,并且相邻的紧凑声部之间没有间距。
与鼓点行不同,紧凑声部与同名的普通声部会被认为是相同的声部。显示时,某一行是否为紧凑声部取决于其第一小节是否为紧凑声部。
编辑体验 - 多声部
在音效试听中控制声部
使用多声部时,音效试听的混音控制区将列出所有声部。这允许用户进行更加精细的控制,也方便用户在检查时便捷地静音某些声部。
目前此功能按照序号和声部名称来区分声部,并且每个声部都有一个控件,因此复杂的乐谱将会有非常多的混音控件。这一点有 待改进。
接下来...
接下来,我们要了解一下如何表示转调、变拍与变速。不说人话,就是在旋律的中间改变乐理属性。不过,此前,还需要快速了解一下关于小节线属性的概念,以保证你能弄懂改变乐理属性的原理。