LilyPond教程(2)——开始你的第一份乐谱

前言

其实早在1996年,LilyPond就已经出现了。但说到打谱软件,Sibelius(西贝柳斯)、Finale两款软件已经深入人心。即便是想要免费开源软件,也有MuseScore这样友好的打谱软件。很少人会第一时间想到LilyPond,甚至就算知道LilyPond的人,也不敢涉足。之所以LilyPond这么神秘,很多人说是因为它的学习曲线很陡峭,很难很快地上手。我认为这句话对也不对。
从程序员的角度来说,LilyPond可以称作乐谱界的LaTex。在上篇已经看到,LilyPond的运行方式跟其他软件有很大不同,甚至看起来完全像是只有程序员才能掌握的东西。
以代码为内核的操作方式确实吓退很多人,但只要细心学下来,会发现LilyPond的语法非常优美。(比MusicTex要简单多了)对于钢琴不熟练(这意味着无法熟练使用midi键盘输入)的人们来说,LilyPond做起乐谱来要快捷得多,至少比很多打谱软件满屏按钮用鼠标慢慢找要快多了。
另外,LilyPond还支持制作吉他六线谱、管弦乐队总谱等各种不同的乐谱,应用范围很广。
LilyPond之所以显得很难学习,一方面是LilyPond的资源多数是英文材料,增加了阅读理解上的困难。(要特别感谢这篇入门教程,它或许是目前唯一相对完整的LilyPond中文入门教程)另一方面是,即便是了解到了这款软件,很多资料都是罗列语法,我们可能看个十多页英文材料才能挤出一段旋律,使得学习起来非常地枯燥,且没有成就感。
这个LilyPond系列教程希望能从更实用的角度,让需要制作乐谱的人们能很快上手,做出自己满意的乐谱。LilyPond这类免费开源软件,需要有源源不断的生命力,才能更好地往下发展,以更能满足大家的需求。
本系列教程将从实例角度出发,抛弃技术界比较艰深的叙述方式。快速上手之后,一些特殊要求只需要了解某个细节即可,不会花费很多精力。
下面我们就开始吧!

1 第一份乐谱——Jingle Bells

今天的目标是能独立完成一段简单的单旋律儿歌乐谱。 正好十二月了,第一份乐谱就选择既简单,大家又耳熟能详的歌曲Jingle Bells(铃儿响叮当)来作为示例。用LilyPond制作的乐谱效果如下:
在这里插入图片描述
可以将下面的代码保存成ly文件,试试看编译之后会不会出现一样的结果:

\version "2.20.0"
\language english

\header {
	title = "Jingle Bells"
	composer = "James Lord Pierpont"
	tagline = ##f
}

\score {
	\fixed c' {
		\clef treble
		\key g \major
		\time 4/4

		b4 b4 b2 | b4 b4 b2 | b4 d'4 g4. a8 | b2. r4 |
		c'4 c'4 c'4. c'8 | c'4 b4 b4 b8 b8 | b4 a4 a4 b4 | a2 d'4 r4 |
		b4 b4 b2 | b4 b4 b2 | b4 d'4 g4. a8 | g2. r4 |
		c'4 c'4 c'4. c'8 | c'4 b4 b4 b8 b8 | d'4 d'4 c'4 a4 | g2.  r4 |
	}
}

下面开始拆解这段代码,其实原理非常简单。

1.1 主体框架

\version "2.20.0"	%版本信息
\language english	%后面的代码采用英语模式

\header {
	%抬头、页脚等信息
}

\score {
	% 乐谱的主要部分
}
  • 第一行\version "2.20.0"描述的是你写下这份乐谱时的LilyPond版本。在LilyPond更新之后,将会以你写上的版本号为标准自动转换乐谱,避免冲突。(比如我安装的版本是LilyPond 2.20.0,这份乐谱就按照这个版本进行编译)如果你安装的是其他版本,可以将这行里的2.20.0换成其他版本号。
    当然,通常来讲,基本的语法不会因为版本更新而出现很大改变,大多数情况下,即便是不写也不会出问题。但为了保险起见,建议还是加上这一句。
    第二行\language english是指后面的代码是英文模式,为了后续某些指令的使用,在任何情况下都请不要省略
  • 第二部分\header {...}描述的是这份乐谱抬头、页脚等信息。最常用的就是曲子的标题和作曲家。
  • 第三部分\score {...}就开始描述乐谱的“正文部分”,将乐谱的主要部分打在这个大括号里面

需要注意的有两点:

  1. 在编辑ly文件时,应该全部使用英文输入法进行输入,以避免出现不必要的错误。
  2. LilyPond忽略空格(也就是说,LilyPond只区分有无空格,多余空格、换行和缩进不影响编译),但是我还是建议初学者应该养成一个良好的格式习惯,以便后面的修改和维护。
  3. LilyPond区分大小写,请注意你编写的代码中大小写不要出错。

1.2 乐谱的抬头

\header {
	title = 标题
	composer = 作曲家
	tagline = 脚注信息
}

抬头部分的代码很好理解,按照上面的格式编写即可,需要注意每个信息都需要用英文下的双引号框起来。如果不打算添加某个信息,直接删去那行就可以,并不影响程序运行。
示例中的tagline = ##f表示脚注为空,否则LilyPond会默认加上自己的脚注。
这个抬头不是必须的,如果没有标题,你可以不写\header {...}这一部分。

1.3 乐谱的主要部分

\score {
	\fixed c' {
		% 基本设定
		% 旋律部分
	}
}

代码\score {...}框起来的部分为乐谱的主要部分。里面的第二层\fixed c' {...}也是乐谱基础设定的一部分。对初学者而言,请原封不动保留这个设定,不要省略。(很多入门教程可能会推荐使用\relative {...}。但对于初学者来说,我更推荐使用\fixed c' {...},至于这个指令的原理和我推荐使用\fixed的原因,在后面的教程中会解释)
接下来就是一些具体指令的解释,这些指令应该是大部分需要打谱的人第一时间想要了解的。

谱号、调号和拍号
  • 使用\clef指令设定谱号,其中\clef treble表示高音谱号,\clef bass表示低音谱号。如果没有这行指令,LilyPond默认添加高音谱号
  • 使用\key指令设定调号,格式为“\key+主音+大小调”。大小调使用\major或者\minor来设定。比如Jingle Bells是G大调的,那么该指令写为\key g \major;或者你要制谱的音乐是A小调的,那么该指令写为\key a \minor。如果没有这行指令,LilyPond默认不添加调号(即默认为C大调或A小调)。需要注意的是,一旦要设定调号,大小调设定不能省略。
  • 使用\time指令设定拍号,设定4/4拍,则写\time 4/4;设定6/8拍,则写\time 6/8。拍号没有数字的限制,你可以设定各种拍子。如果没有这行指令,LilyPond默认为4/4拍

下面是一些补充和注意事项:

  • 其他谱号比如中音谱号,低八度谱号等特殊谱号可以查阅这里
  • 降B大调怎么写呢?\key bf \major,至于为什么主音写成bf,看下一节就明白了
  • LilyPond对4/4拍和2/2拍会默认使用传统拍号,要改成数字拍号(numeric time signature)。请在拍号设定之前一行加上\numericTimeSignature。当然,还有其他一劳永逸的方式,在之后的教程中会提到。
  • 如果要转调或者变奏,你可以在任意一小节结束后重新设定谱号、调号和拍号。只需要在之前的旋律部分全部输入好后,再把你要修改的符号重新设定一遍就可以了。
音符和小节线

LilyPond的音符输入方式非常地简单易懂,每一个音有一个字符串代替,总体原则就是音名+八度+时值。在本篇建议的\fixed模式下,所有音符都记录的是绝对音高,也就是说每一个字符串对应的音高都是确定不变的。下面分三个部分拆解这个字符串的组装方式:

  • 首先,音名使用小写字母c d e f g a b表示,分别对应钢琴上的C、D、E、F、G、A、B七个键。(也就是C大调下的do、re、mi、fa、sol、la、si)对于半音,在音名后接s表示升高半音(sharp),接f表示降低半音(flat)。比如fs表示升F,af表示降A。另外,LilyPond用r作为休止符(rest)的“音名”。
  • 其次,描述这个音在哪个八度,用单引号'或者逗号,表示。单引号表示高八度,逗号表示低八度。单引号和逗号可以叠加,比如高两个八度就接两个单引号;低三个八度就接三个逗号,以此类推。需要注意的是,如果什么都不加,说明这个音落在中央C的那个八度上。换句话说,这里的八度记号是相对于中央C而言的。
  • 最后,时值使用数字表示。是“几”分音符就用在后面接数字“几”。比如,1表示全音符、8表示八分音符。至于附点音符,理所当然应该用句点.表示,同样地,附点也是可以叠加使用的。

另外,小节线用|表示,在对应位置加上即可。不过即便是不加或者加错,LilyPond也会为你的乐谱自动添加上正确的小节线。(如果加错,编译会出现Warning)但为了形成良好的习惯,建议初学时严格加上小节线,方便修改和阅读。
另外,LilyPond中的调号不影响后面的音高,这跟Musescore等乐谱编辑软件的逻辑不太一样。即是说,我们输入了什么音高,谱面上就显示什么音高,LilyPond不会自动调整以适应谱号。可参考下面的示例:

\score {
	\fixed c' {
		\key d \major
		c8 d8 e8 f8 g8 a8 b8 c'8 | cs8 d8 e8 fs8 g8 a8 b8 cs'8 |
	}
}

得到的乐谱如下:
在这里插入图片描述

可以这么来思考LilyPond的输入方式——它跟演奏乐器的逻辑一样,谱上显示哪个音,你就演奏哪个音
最后要注意的一点是,音符和音符、音符和小节线之间应该用空格或者换行符隔开(前面提到的LilyPond忽略空格,是指空格个数不影响编译,但有无空格对编译有很大影响),否则会影响编译

现在,回去对照代码中的旋律部分和乐谱,你应该就能明白这些音符都是怎么输入的了。
今天的目标是制作简单的单旋律乐谱。至于其他比较常用但相对复杂的记号都是怎么加的,就要到下一篇教程再聊了。

2 补充

2.1 如何使用中文,以及开始使用LilyPond编辑器

需要再强调一遍:在编辑ly文件时,所有的指令和符号全部使用英文输入法进行输入,以避免出现不必要的错误。
但是实际上LilyPond在代码的一些范围内还是能够识别中文字符的,比如标题我们可以写title = "铃儿响叮当"。不过需要注意一点,我们在保存ly文件时需要将编码调整为"UTF-8",具体操作如下图所示:
在这里插入图片描述
如果一开始保存时忘记设定编码,可以通过“另存为”方式重新保存。
当然,开始了你第一份乐谱之后,你可以开始使用LilyPond自带的编辑器了,使用LilyPond的荷花池图标打开,你会发现它长得跟记事本几乎一模一样,完全不会改变你的使用习惯。用它来写ly文件可以打入中文字符直接保存,不用担心编码问题
在这里插入图片描述
如果你要编辑打好的ly文件,可以右击,在菜单中选择“Edit source…”,这样就能用LilyPond编辑器打开文件了。(复习:双击ly文件是生成PDF,不能打开代码
在这里插入图片描述

2.2 如何偷懒

虽然是初学,但是有一个用来偷懒的语法似乎可以现在就说。它能省去很多时间。
LilyPond在输入音符时,如果遇到时值相同的音符,在输入时可以只保留第一个音符的时值输入,后面的音符会自动设定为与前一个音符同样的时值,直到你输入一个时值不同的音符为止。
比如示例中的第六小节| c'4 b4 b4 b8 b8 |可以改写成| c'4 b b b8 b |
LilyPond在输入音符时,如果遇到音高相同的音符,在输入时可以只保留第一个音符的音高输入(这里的音高包括音名和八度),后面的音符会自动设定为与前一个音符同样的音高,直到你输入一个音高不同的音符为止。
比如示例中的第六小节| c'4 b4 b4 b8 b8 |可以改写成| c'4 b4 4 8 8 |

需要注意以下几点:

  • 不是一个八度的音符不能省略音名,也就是说|c4 '4 c4 ,4|是不合法的,无法通过编译。
  • 不能只省略数字而添加附点,也就是说c4 c.是不合法的。但是c4. g是合法的,它表示两个附点四分音符。
  • 小节线不影响上述两条特性,也就是说c4 | 4或者c4 | g都是合法的
  • 使用这一操作的时候,最好保持第一个被省略音符的前一个音符音高和时值完整,避免出现难以预料的错误。比如应该尽量避免c4 8 d ec4 d 8 8的操作,而应该写成c4 c8 d ec4 d4 8 8
  • 如果乐谱中第一个音符不输入时值,将默认为四分音符,直到输入了其他时值的音符为止。如果乐谱中第一个音符不输入音高,将默认为中央C,直到输入了其他音高的音符为止。
  • 不要省略休止符的音名r,否则后面的音符会被认为是中央C。但省略时值的方式可以应用于休止符。

总的原则就是:音高(音名+八度)或时值(包含附点)只能偷懒省去其中一个,而且只能打包在一起省略。大家可以根据自己的实际操作进行不同程度的省略。(比如大量同音重复的旋律,或者琶音等节奏固定的旋律,利用这个特性非常方便)但通常情况下,建议还是把音符写完整以便于修改和维护。
针对本篇中的示例可以省略到下面的样子,得到的结果是一样的:

\score{
	\fixed c' {
		\clef treble
		\key g \major
		\time 4/4

		b4 4 2 | 4 4 2 | b4 d'4 g4. a8 | b2. r4 |
		c'4 4 4. 8 | c'4 b4  4 8 8 | b4 a a b | a2 d'4 r4 |
		b4 4 2 | 4 4 2 | b4 d'4 g4. a8 | g2. r4 |
		c'4 4 4. 8 | c'4 b4 4 8 8 | d'4 d' c' a | g2.  r4 |
	}
}
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值