本文已参与「新人创作礼」活动,一起开启掘金创作之路。
2.2 多音符输入 (Multiple notes at once)
在 LilyPond 输入文件中,音乐由音乐表达式表示。 单个音符是一种音乐表达式。
a'4
将音符括在大括号中会创建复合音乐表达。 在这里,我们创建了一个带有两个音符的复合音乐表达式。
\relative { a'4 g4 }
将一组音乐表达式(例如音符)放在大括号中意味着它们是按顺序排列的(即每个都在前一个之后)。 结果是另一个音乐表达:
\relative { { a'4 g } f4 g }
类比数学表达式 (Analogy: mathematical expressions)
LilyPound 的音乐表达式类似于数学表达式,表达式之间可以嵌套,因此可以通过这一机制,使用简单的表达式创造出复杂表达式。
1
1 + 2
(1 + 2) * 3
((1 + 2) * 3) / (4 * 5)
同数学表达式一样,音乐表达式可以进行嵌套,运算。从而创建出复杂的音乐。
同步音乐表达:多个五线谱 (Simultaneous music expressions: multiple staves)
当我们需要输入多个同时演奏的声部时,我们可以使用 <<<多条五线谱 >>>的格式来输入音乐表达式。
<<
\relative { a'2 g }
\relative { f'2 e }
\relative { d'2 b }
>>
虽然在上述代码中我们对声部使用了缩进,但是LilyPound不会解析对缩进,和
换行这样写只是为了提高代码的可读性。
单个五线谱上表示多个音(Simultaneous music expressions: single staff)
LilyPound 是通过第一个音来确定,五线谱个数。下面的表达式中,定义了多个声部,但是由于第一个音是只有一个音,所以之会显示一个五线谱。
\relative {
c''2 <<c e>> |
<< { e2 f } { c2 <<b d>> } >> |
}
ps:我个人认为这样的表达式十分混乱,很不符合人类的阅读习惯,不建议采用这样的写法。双音和和弦的写法会在后续文档中阐明
2.2.2 (创建多条五线谱) Multiple staves
LilyPound可以通过音乐表达式,创建多条五线谱,但是通常情况下我们应该使用规范的命令 \new Staff 来创建多条五线谱。
<<
\new Staff { \clef "treble" c''4 }
\new Staff { \clef "bass" c4 }
>>
使用命令\new Staff 可以创建一个新的乐谱上下文(可以理解成一份独立的乐谱),在这个乐谱上下文中可以定义,谱号,调号,拍号等属性,同时多条五线谱中,其中一份的拍号会影响其他五线谱的拍号,但调号,谱号不会相互影响。
<<
\new Staff { \clef "treble" \key d \major \time 3/4 c''4 }
\new Staff { \clef "bass" c4 }
>>
乐谱组(Staff group)
钢琴音乐排版在两个由大括号连接的五线谱中。 打印这样的五线谱类似于多五线谱中示例。 我们可以使用 \new PianoStaff命令将乐谱排版在与乐谱组中。
\new PianoStaff <<
\new Staff \relative { \time 2/4 c''4 e | g g, | }
\new Staff \relative { \clef "bass" c4 c' | e c | }
>>
其他五线谱分组引入了适用于管弦乐乐谱的 \new GrandStaff 和适用于声乐乐谱的 \new ChoirStaff。
更多乐谱组请参考官方手册: Keyboard and other multi-staff instruments, Displaying staves.
组成和弦(Combining notes into chords)
我们可以通过表达式 <>来包裹音符实现和弦的输入,和弦必须有相同的时值,实质放在右括号 >之后。
\relative { r4 <c'' e g> <c f a>2 }
在编写乐谱的过程中,和弦可以视为单个音符,所以和弦可以使用几乎所有单音符的命令,如连音线,延音线等。
\relative {
r4 <c'' e g>~ <c f a>2 |
<c e g>8[ <c f a> <c e g> <c f a>]
<c e g>8\>[ <c f a> <c f a> <c e g>]\! |
r4 <c e g>8.\p <c f a>16( <c e g>4-. <c f a>) |
}
更多和弦内容请参考官方手册: Chorded notes.