本篇是钢琴独奏片段的结束篇,我们将解决旋律安排中剩下的两个重要问题。今天使用的示例是贝多芬的第十四号钢琴奏鸣曲的片段:
本次示例的代码放在这里。本篇教程的学习要点有:
- 如何在添加三连音等连音符
- 如何在乐谱的一行谱表中显示两个声部
1 三连音
LilyPond使用\tuplet
描述连音符。LilyPond对于连音符的设定比较复杂,格式是\tuplet 比例 时值 {...}
,使用时直接放在旋律对应音符位置即可。我整理了下面一些常用的比例,足以让你应付平常见到的大多数连音符。
三连音 | 五连音 | 七连音 |
---|---|---|
\tuplet 3/2 | \tuplet 5/4 | \tuplet 7/4 |
使用时注意如下几点:
- 如果你打算添加一组连音符,采用的命令就是
\tuplet 比值 {...}
。大括号中需要填写对应的音符样式。 - 如果你打算添加多组连音符,采用的命令就是
\tuplet 比值 时值 {...}
。多出来的时值一项用来描述分组情况,LilyPond会跟据你填入的时值将音符分组,并在每一组连音符写上对应的数字。比如\tuplet 3/2 4 {...}
表示将后面的音符按照每个四分音符的长度分组,标记为三连音。
或许有点儿绕,但参考下面的示例,你可能会更明白这个指令的意思
\score{
\fixed c' {
\time 4/4
\tuplet 3/2 {c8 d e} c4 c \tuplet 3/2 {g4 d8} |
\tuplet 3/2 4 {c8 d e c d e c d4} r4 |
\tuplet 5/4 {c16 d c d c} \tuplet 5/4 {c8 d c d c} r4 \tuplet 5/4 4 {c16 d e d c c d e d c}
}
}
得到的结果如下:
下面是一些补充:
- 连音符可以嵌套使用。
- 使用
\omit TupletNumber
指令可以将后面连音符上面的数字略去。具体可以参见示例的代码。
关于更复杂的连音符和这个指令的原理,可以参见本篇第三节。
2 多声部和谱表管理
2.1 多声部谱表
多声部谱表有两种实现方式:
<< {...} \\ {...} >>
是最简单的一种方式。使用时,把两个声部的旋律分别放在两个大括号中即可,其中第一个大括号中旋律的音符符干朝上,第二个大括号中旋律的音符符干朝下。- 另一种比较复杂,其实现方式如代码框所示。(同样,在两个大括号的中分别填入旋律,第一个大括号中旋律音符符干朝上,第二个大括号中旋律音符符干朝下。)
<<
\new Voice { \voiceOne ... }
\new Voice { \voiceTwo ...}
>>
需要注意的是,上面的较为复杂的这种方式需要保证<< ... >>
外面有\new Staff
指令。
2.2 给谱表左侧加上大括号
LilyPond给\new
指令设定了多种模式,它能针对不同的乐谱对谱表显示进行设定。
对于钢琴使用的谱子而言,我们可以使用\new PianoStaff
,它会给谱表左侧加上大括号。
至此,所有的完整钢琴谱就有了固定的格式:
\new PianoStaff <<
\new Staff {...}
\new Staff {...}
>>
2.3 让你的代码更易于管理
可能会问,多声部输入时,更为复杂的第二种方式有什么用处呢?
当声部越来越多,很多标记(比如大括号)会很难找到。我们可以先把旋律存起来,再进行操作。使用第二种方式能保持代码统一,便于阅读。
利用旋律名称 = 旋律设定
,可以将旋律存起来。比如X = \fixed c' {...}
,就把等号后面设定的旋律存到X
里面。需要注意的是旋律名称必须是英文,且不能带数字、下划线等其他符号。
在用到这段旋律的时候需要再去前面加\
,代表使用这段旋律。比如\X
表示引用刚被设定为X的旋律。
需要注意:将旋律存起来这个操作需要放到\score{...}
的外面。
比如示例中的代码可以修改成
RHOne = \fixed c' {
\voiceOne
...
}
RHTwo = \fixed c' {
\voiceTwo
...
}
RHStaff = \fixed c' {
...
<<
\new Voice \RHOne
\new Voice \RHTwo
>>
}
LHStaff = \fixed c' {
...
}
\score {
\new Staff
\RHStaff %右手部分
\new Staff
\LHStaff %左手部分
}
这个操作也有其他好处,比如你能通过名称迅速定位到对应的声部,便于进行修改;另外,利用它也可以处理某些大量重复的旋律。
一般情况下,我习惯对于短一些的多声部旋律采用<<{...} \\ {...}>>
这种较为简单的方式,比较长甚至涉及整个乐章的多声部旋律采用较复杂的上面示例中的第二种方式。
如果需要给你的ly文件添加注释,则用%
开头,每一行跟在%
后面的内容将不会显示到乐谱中。
3* 连音符\tuplet
的原理
本节需要一定的乐理知识才能理解,如果目前觉得比较难理解,可以跳过这个小节。
要搞清楚\tuplet
的使用原理,最重要的是确定跟在它后面的比例。
在谱子上使用连音符时,首先要确定用的音符是哪一种音符。一般来说,我们会使用大于且最接近目标长度的音符来标记相应的连音符。以七连音为例,如果我们打算将一个四分音符分割成七份,那么它的时值就是1/7个四分音符。大于1/7的四分音符且最接近它的,是表示1/4个四分音符的十六分音符。于是我们就使用十六分音符来代表七连音中的每一个细分音符。
音乐上对连音符有“几对几”的说法,要理解\tuplet
的使用原理,我们就要搞清楚这个说法。对于上面七连音的例子,我们确定用十六分音符代表每个细分音符。但本来一个四分音符的长度下应该演奏四个四分音符。所以说,原来一个四分音符下演奏四个四分音符,而七连音下要演奏七个四分音符。那么我们就称七连音是“七对四”的音符。
于是,\tuplet
中所谓的比例就是上面提到的“几对几”(实际上,这个比例是描述一种速度的比例,比如\tuplet 7/4 {...}
,表示LilyPond会按照原来速度的7/4倍安排音符,并且填上在该组音符上写数字7)
所幸的是,只要分割个数相同,连音符的比例是固定的。(也就是说,如果我们打算把两个四分音符分割成七连音,只需要把表示细分时值的音符换成八分音符即可,比例不变) 比如11连音就是“十一对八”的;13连音就是“十三对八”的。对应的指令就分别是\tuplet 11/8 {...}
以及\tuplet 13/8 {...}
事实上,一旦分割个数确定,只有分割的时值不能只用一个不带附点的音符表示时,才需要重新确定比例。 比如,如果要把三个四分音符划分为五连音,则需要使用指令\tuplet 5/3 {c4 c c c c}
。
经过一连三篇使用LilyPond制作钢琴独奏片段的介绍,相信你应该能胜任大部分钢琴独奏曲乐谱中旋律部分的制作了。在下一篇我们会介绍一种重要的“偷懒”方式,它能大大缩短LilyPond的代码长度哦。