跳到主要内容

添加歌词

本节中,我们将向写好的旋律中添加歌词。Sparks NMN 支持自动划分中文或英文歌词,并自动识别标点,因此,这应该不是太困难的事情。不过,如果这些都不能解决问题,你还可以选择极其麻烦的手动分割。

本节中仅涉及添加单行歌词的情况。多行歌词、歌词编号以及它们与反复记号之间的关系,请见反复与区分章节。

tl;dr

  • 歌词行放置在 N: 开头的曲谱行下方。
  • 字基歌词行以 Lc: 开头,词基歌词以 Lw: 开头,后面跟歌词文本即可自动分割和匹配。
  • 词基歌词需要手动用 - 来划分音节。
  • 歌词中,用 % 表示占位符,用形如 %{15} 的形式缩写多个占位符。
  • _ 是特殊的占位符,表示下划线延长记号,并且 _{0} 也是有意义的。
  • 将歌词中多个字用小括号 () 括起,将为它们添加一条下划线,并匹配至同一个音符。
  • Sparks NMN 能够正确处理常见的标点。
  • 角色标记放在双中括号 [[]] 中。
  • Lc: 开头的行中若要夹杂词基歌词,可以将词基歌词(整体,而非每个音节)用中括号括起 [],即可正确识别。
  • 特殊含义的括号 () [[]] []{} 若要用作标点,可用双引号 " 引起。

添加歌词文本

添加歌词文本几乎就是复制粘贴的事情。定义歌词的行添加在以 N: 开头的曲谱行下方,可以由 L: Lc:Lw: 开头。

字基歌词

字基歌词指的是“一个萝卜一个坑”,每个字符恰好占据一个音节的歌词。很明显,中文歌词就属于这一类。

添加字基歌词,只需要在 N: 开头的行下方添加 Lc:LyricChar: 的缩写)开头的行,并将该碎片对应的歌词文本直接写到里面,Sparks NMN 会负责歌词和音符的配对。比如经典儿歌《小星星》:

歌词中的空格仅仅用来增加代码的可读性,对解析没有任何影响。

问题

注意到上面音符的配对自动地跳过了延时线。那么,到底哪些音符会被跳过?

  • 延时线 -
  • 休止符 0
  • 作为延长连音线右侧音符,而被弱化的音符(见更复杂的节奏章节)。
常见错误

你可能会发现,一个碎片中多余的歌词会溢出到下一个碎片。但是请不要这么做,因为这破坏了碎片的相对独立性,使得你在复制粘贴时遇到不必要的麻烦。这还会降低可读性。

展开

词基歌词

词基歌词是指基于单词的歌词,其中一个单词可能会有多个音节。英文歌词就是这样的例子。

以英文为例,在乐谱中书写英文歌词时,应当将歌词按音节完全拆开,然后用横线 - 连接属于同一个单词的音节,例如:

  • every → ev'-ry
  • cascade → cas-cade
  • forever → for-e-ver
  • anyway → a-ny-way
  • needle → nee-dle
  • little → lit-tle
  • deferred → de-fer-red
  • cooperate → co-o-pe-rate | coo-pe-rate

这一步需要你自己来做,因为作为一门自然语言,英语中不规则的词汇实在太多,远非简单的程序规则能够概括。你需要注意的无非这些地方:

  • 无论是否重读的元音都算作音节,但是取决于具体唱法,有的轻音节可能被省略,例如 every 常常唱成 ev'-ry 而非 e-ve-ry。
  • 没有元音,即使有元音字母也不算音节。例如 cascade 末尾的 de 不单独作为音节。
  • 元音字母组合总是要组合在一起,例如 forever 会划分成 for-e-ver 而不是 fo-re-ver。
  • 作为元音的主辅音的字母或字母组合,应当和元音分进同一个音节,例如 anyway 划分成 a-ny-way 而不是 an-y-way。
  • 由于发音规则双写的辅音字母总是倾向于分开,例如 little 划分成 lit-tle,deferred 划分为 de-fer-red。
  • 双元音可以划分为一个或两个音节,取决于具体唱法,例如 cooperate。

做好音节划分后,剩下的事情无非就是输入了。词基歌词行以 Lw:LyricWord: 的缩写)开头,比如来自《音乐之声》音乐启蒙歌曲《Do Re Mi》:

注意到 Sparks NMN 会自动调节音符之间的间距,使得单词不发生粘连或重叠,这在第 13 小节尤为明显。词基歌词的单词之间会至少留有一个字母 a 的间距。不过,如果小节的宽度实在不允许... 我们等到布局章节再介绍吧。

注意

同一个碎片,同一个声部中的同一个歌词行只能选择字基歌词或词基歌词中的一种。稍后将会介绍如何处理两种语言的歌词相互夹杂的情况。

占位符

有的时候我们会刻意地让歌词跳过某个音符。最常见的情况大概是联合连音线了吧。看看我们之前的例子《鲁冰花》副歌:

如果直接输入歌词,就会变成这样:

我们希望让歌词跳过联合连音线右端的音符。解决方法是在相应位置输入占位符 %。这个符号会占据一个位置,但不会显示任何东西。

不过,记住,延长连音线右端的音符会自动被弱化从而被跳过,不需要进行占位。

这么一来,我们就可以说,字符 % 其实不仅仅是表示占位,还表示转音。如果一个字中间出现了转音,那么后面就需要添加占位符,并且转音几次就添加几个。

设计思想

为什么占位符是 % 而不是 @

展开

当需要连续多个占位符时,可以用形如 %{13} 的方式缩写。

下划线延长记号

歌曲中的句末音节有时会拖得特别长,我们可以在音节的后面添加一条长长的下划线以示强调(这是可选特性,并非记谱规范)。这对音乐初学者一般比较有帮助。

添加延长下划线就像添加占位符那样,只不过是使用字符 _(也可以使用形如 _{4} 的缩写语法)。如果音节只是单纯拖得很长而没有转音,可以添加一个 _{0} 缩写,这样会给前一个音节后面添加延长下划线,但不会占据额外位置。

为了避免视觉上的混乱感,歌词中的下划线延长是明显比其他线更细的。

注意

目前版本中,单个音符的延长下划线只能绘制到一行的末尾,不会自动跨行。不过,这是无伤大雅的,对吧?

一音多字

如果你认真阅读过你的音乐课本(三年级以上),你会知道有时候歌词中的两个音节会占据同一个音,并且书写时会用下划线连起来。这个下划线理解成减时线并不太妥当,因此 Sparks NMN 将其作为一种特殊的记号处理。只要将几个音节放入一个小括号中,即可实现组合并加下划线。

儿化音是这里面最常见的例子。下面例子来自歌曲《桃花笑》

不过并非所有儿化音都要被组合进前面的字中。如果“儿”与前面的字有明显的时刻分隔,则不应当组合。上面的例子中你应该也看到了。

修饰符号

只有音节字符的歌词显得有些乏味,有时也有些混乱。因此,我们还有两类可以加到歌词中的符号。

标点

标点可以直接加入到歌词文本中,Sparks NMN 将会自动识别并根据其类型将其放在合适的位置(可能是某个音节的前面或者后面,称为前置后置标点,或者均匀地分布在前后两个音节之间,称为连接标点),并且不影响歌词和音符的对齐。下面的例子来自歌曲《愿得一人心》

自动布局算法会为标点留出一定宽度。不过,大部分全角标点(例如中文的括号、逗号、句号、引号等)在测量宽度时会按照对应的半角标点处理,以避免它们占用过多的空间。但是若半角标点的宽度不及全角标点的一半,则会使用全角标点的一半。

Sparks NMN 支持大部分常见的中英文标点符号。如果想知道 Sparks NMN 支持的所有标点,请阅读记号速查表章节。

常见错误

不要在音节和属于它的标点之间添加占位符,否则那个标点会变成占位符的标点。

展开

如果要将有特殊含义的括号(例如刚才提到的半角小括号 ())用作标点,可以用半角双引号 " 将其单独引起变成字符串。比如下面《熊出没》主题曲中的例子:

半角引号 "' 并不能当作常规的引号使用。原因并不是无法表示(事实上可以借助字符串和转义序列表示为 "\""),而是无法确定这样的引号是前置还是后置标点。如果有需要,应当使用全角的形式。

  • 半角双引号 " 始终会被当成一个音节处理。
  • 半角单引号 ' 在词基歌词中是字母,在字基歌词中是后置标点。

自定义标点

如果存在一些特殊需求,可以通过符号 < > 来自定义前置或后置标点。

  • > 用来连接自定义的前置标点。例如在 Lc: "...">终究要失去 中,... 会成为 的前置标点。
  • < 用来连接自定义的后置标点。例如在 Lw: 100<"%" 中,% 成为 100 的后置标点。
  • 若标点仅包含一个字符,且不是特殊字符,则双引号可以省略。

角色标记

有时候一首歌有多个人唱,但是属于“选择性齐唱”的范畴,不足以构成多声部。这种情况下,可以在歌词中添加角色标记。角色标记的语法是双中括号 [[]]。显示时,双中括号会自动转换为小括号。

自动布局对角色标记的支持并不完善,因为角色标记目前被当作前置标点处理。你也可以看到,做出来效果有亿点难看。

特殊的歌词

有一些特殊的歌词,可能不能单一地用“字基歌词”或“词基歌词”来概括。对于这类歌词,我们仍然采用字基或词基的一种,但是对不符合规则的部分进行特殊处理。

字基歌词中夹杂单词

字基歌词中夹杂单词是其中一类情况。说人话,就是中文歌词里面夹了点英文。很明显这是非常常见的。

如果直接将这样的歌词以字基歌词的形式输入,那么单词就会被拆成一粒一粒的。下面例子来自歌曲《爱很美》

只需要将词基歌词区间放在中括号内,Sparks NMN 就会正确处理。自动布局算法也会认为这一部分是词基歌词,从而在音节之间留出间距避免粘连。

拓展

字基歌词夹杂单词的情况还有其他解决方法,不过都不如中括号优雅。

展开

歌词中夹杂音标

有时候音乐中对歌词的读音有些奇怪的处理,使得我们需要用音标来准确表示一些东西。在 Sparks NMN 中,你可以用中括号的方式将音标以词基歌词的形式写进去,然后再在两侧增加双引号引起的中括号(将有特殊含义的符号用作标点时需要用双引号引起),来告诉读者这是音标。下面的例子来自歌曲《麦浪》

这大致相当于,

不过在布局上会略有不同。

标记型歌词

有时我们可能需要在没有音符的位置标记歌词,比如在歌曲《First Time in Forever》中,

在 28-30 三个小节中,“I can't wait to meet everyone! Oh! What if I meet, the one?”一段歌词属于念白内容,上方没有任何音符,表明这些念白的节奏并不重要。

这种歌词并不是常规意义上的歌词,不与某个音符配对,因此不适用自动分割歌词的语法,不能写在 Lc:Lw: 开头的行中。Sparks NMN 借用了标记的语法来表示这种歌词(标记行的开头为 La:),因此这种歌词也称标记型歌词。其具体语法将在标记符号章节中详细介绍。

手动分割歌词

如果词基和字基模式都不能满足你的需要,你可以采用超级麻烦的手动分割方法。具体写法在教程部分不介绍,请见记号速查表

谨慎使用

歌词手动划分真的非常,非常,非常的麻烦!决定使用手动划分之前,请再次考虑自动划分是否真的没有可能解决你的问题。

展开

手动分割的歌词布局时按词基歌词处理,会有避免粘连的机制。

挑战

接下来...

最基本的事情已经讲完了。接下来,我们讲讲如何在一份文档中混排多个乐谱片段。这或许是一个不太常用的功能,但是如果你的文档标题是《基础节奏练习》,这显然是有用的。