经过前面的教程,相信读者已经基本掌握乐谱旋律部分的制作。但是,对于比较长的乐曲,LilyPond使用起来还是有不少痛点。
在进一步了解LilyPond之前,我们先来解决使用过程中的一些痛点。解决了这些痛点,你会发现LilyPond使用起来会更加得心应手。
本次示例还是莫扎特第十六号钢琴奏鸣曲(K545),给出的代码是整个第一乐章的乐谱。
本篇的学习要点有:
- 使用相对模式
\relative {...}
输入音符 - 重复和弦的简单输入
- 使用LilyPond输出midi文件
- 掌握Frescobaldi的简单使用
1 音符输入技巧
1.1 相对模式
在前面的教程中,我们使用\fixed c' {...}
来输入音符,它能帮助我们熟悉LilyPond的旋律输入原理。但在真正的应用过程中,如果有一段旋律在中央C所在八度之外,我们往往需要键入很多个八度记号来完成输入。针对这样的情况,LilyPond提供了相对模式,以帮助我们省去很多麻烦。
LilyPond的旋律输入一共有三种模式:绝对模式\absolute {...}
、固定模式\fixed 音高{...}
和相对模式\relative {...}
。它们主要影响的是音高的八度输入方式,音名在三种方式下都是一样的。下面分别介绍这三种方式:
- 绝对模式中,大括号中输入的所有音符按绝对音高处理,LilyPond将
c
认为是中央C低一个八度的C。 - 固定模式中,大括号中输入的所有音符以
\fixed
后面指定的音高(这个音高按照绝对模式的音高来决定)为基准确定八度。比如前面教程中提到的\fixed c' {...}
就是指后续音符以中央C为标准确定八度。(因为绝对模式中c'
才是中央C) - 相对模式中,大括号中输入每一个音符以离前一个音符更近的原则(也就是四度或以内)来确定八度。相对模式可以指定音高。如果指定了音高,大括号中第一个音符按指定的音符以同样原则确定八度;如果没有指定,第一个音符按输入的绝对音高确定八度。例如,在相对模式下输入
c g
,后面的G将是C低一个八度的G(C同一个八度的G为五度关系,而低一个八度的G为四度关系),要描述同一个八度的C和G,必须输入c g'
。又例如输入d g
,得到的音符就是同一个八度下的D和G。
需要注意的有:
- 为了延续前面的习惯,建议直接设定为
\relative c'{...}
。这样第一个音就不容易犯错 - 如果没有指令设定而只用
{...}
,LilyPond默认设定为绝对模式 - 固定模式
\fixed
必须指定初始音高,否则编译不能通过。 - 三种方式可以嵌套使用,但不能接续使用。重新指定音高时,依然是按照绝对模式的输入方式来决定。
- 休止符不影响相对模式的输入。或者说,相对模式中,每个音符是按照前一个有音高的音符来确定八度的。
- 在和弦输入过程中,和弦内的第一个音按前面的音符或者前面和弦的第一个音来确定八度,和弦内的其他音按和弦内的前一个音符确定八度。例如
c' <c e g> <c e g>
中第一个和弦中C参照前一个音符c'
确定(即同音),第一个和弦中E参照第一个和弦内的c
确定、G参照第一个和弦内的e
确定;而第二个和弦中C参照前一个和弦的第一个音符c
确定(也是和第一个音符同音),后面的音符以此类推。 - 相对模式依然可以省略音高,省去的音高跟前面的保持一致。也就是说
c'4 4
中第二个音符的音高跟第一个一样,LilyPond不会理解成c'4 c'4
而将第二个音符翻高八度。当然,和弦的省略也是一样的。
参考下面的示例(本篇示例乐谱的第九小节):
\score{
<<
\new Staff
\relative c'{
\time 4/4
d8 e16 f g a b cs d a b cs d e f g |
a b c! b a g f e f g a g f e d c |
}
\new Staff
\fixed c'{
\time 4/4
d8 e16 f g a b cs' d' a b cs' d' e' f' g' |
a' b' c''! b' a' g' f' e' f' g' a' g' f' e' d' c' |
}
>>
}
两行谱表的音符显示是一样的,但在相对模式下我们省去了二十几个八度符号,大大减少了代码长度,提高了效率。
1.2 和弦重复
在前面的教程中,我们提到了可以用只写时值的方式来重复和弦。但LilyPond还提供了代号q
来指代前一个和弦。它可以避免单音和休止符的干扰,进一步提高代码输入效率。
需要注意的是,使用q
时可以忽略时值。关于代号q
的用处可以参照下面的示例体会:
\score{
<<
\new Staff
\relative c'{
<c e g>4 q r q | c q8 q r2 |
}
\new Staff
\relative c'{
<c e g>4 4 r <c e g>4 | c4 8 8 r2 | %第一小节第四拍和弦省略后将会出现问题
}
>>
}
2 MIDI输出
使用LilyPond检查乐谱似乎是一件比较痛苦的事,我们需要编译后找到PDF文档再和原来的乐谱里的音符一一对应才能完成校对。使用LilyPond可以非常简单地输出midi文件,我们通过听音频来找出输入错误,能提高乐谱检查的效率。
使用\midi {}
可以在编译出midi文件,但需要注意的是,代码中必须同时含有\layout {}
部分才可以编译出PDF文件,否则编译之后只能得到midi文件。
也就是说,只要代码是像下面这样,就能在编译时同时生成mid文件和pdf文件
\score{
... %旋律部分
\layout {...} %格式调整
\midi {}
}
目前阶段,\midi {}
可以不做任何设定,而\layout
部分可以参照前面教程示例代码。使用一般的音乐播放器就能播放mid文件,来检查相应的乐谱了。
不过,需要注意的是,上述方法生成的midi文件还不支持某些复杂的特殊奏法。
2 Frescobaldi
2.1 下载安装
Frescobaldi是LilyPond官网推荐的编辑器,它也是一款免费开源软件。使用它能极大提升LilyPond的使用体验。同样,需要提醒的是,本篇教程面向的是Windows用户,下面的安装也是按照Windows来介绍的。
Frescobaldi的安装过程和其他软件差别不大。读者可以自行到官网查阅,并在官方Github页面下载安装包。
当然,因为服务器原因,国内通过Github下载文件的速度非常慢。熟悉Github的可以自行找到合适的方式下载最新版本。(个人推荐比较简单的方式是使用全局代理模式下载)
为扫清使用障碍,笔者在这里给出站内的Frescobaldi下载链接(版本为3.1.2)
2.2 页面设定
安装之后,双击ly文件打开,按下快捷键Ctrl+M编译,页面是这样的:
可见左侧为代码框,右侧为乐谱预览框。代码在左侧代码框中编辑,然后再次按下Ctrl+M就能得到修改后的乐谱。在开始使用之前我们先来调整页面:
首先红框位置用来缩放预览框的PDF,一般我会选择Width(与框等宽),然后将鼠标移到边界将预览框拉到合适的宽度。
接下来我们通过工具栏打开midi播放器:
至此,我们就完成了Frescobaldi的基本页面设定了。
2.3 Frescobaldi特性
快捷键
Ctrl+S 保存文件
Ctrl+M 编译文件
需要注意的是,在未改动的情况下,如果使用快捷键Ctrl+M,会在代码所在目录下生成PDF(或同时也有midi)。如果在Frescobaldi页面改动过代码,则它会在自己的隐藏目录生成临时的PDF和midi,直到按下Ctrl+S保存为止。
另外,点击页面上方的荷花池图标也能编译文件。
语法高亮和自动补全
Frescobaldi对代码自动实现了语法高亮和自动补全。语法高亮,意思是在Frescobaldi中LilyPond的特殊指令会用不同颜色标注,我们通过这些标注能很快检查输入的语法错误,读者可以在使用过程中渐渐熟悉它的颜色。而自动补全则是在我们输入过程中自动补充常用指令:
输入\tem
后框中第一个就是我们要的节奏设定,此时只需按回车就能自动输入\tempo
。自动补全既减少了我们的输入错误,也简化了输入,非常方便。
错误的自动定位
如果编译出现语法错误,左下的编译信息框会显示错误信息,点击对应错误信息,代码框就能自动定位到相应位置。
如果输入的音符出现错误,在右侧预览框中点击需要修改的音符,左侧代码框也能自动定位到相应位置。
这样一来,代码一旦出现错误,修改起来就非常方便了。
MIDI播放器
Frescobaldi内嵌了简单的midi播放器,编译好的mid文件可以直接在里面播放,随时检查乐谱的错误。
当然,Frescobaldi还有很多特性等待了解,但光是上面这些部分就足以大大提升LilyPond的使用体验了。
解决了这些痛点,不知道你会不会更有兴趣了解LilyPond呢?下一篇我们将会回去看我们的第一份乐谱Jingle Bells,把目光放回到声乐作品上。