雖然上網很方便,在網路上看資料無法取代真正的音樂養成教育。時間和經濟許可的話,仍建議找老師學習音樂,會少走許多彎路。
若本文內容有誤,請詢問你的音樂老師。
本網站未代理文章及贊助商連結中提及的樂器、器材及其他產品。
前言
本文簡要地介紹 LilyPond 的基本概念和語法。若樂友尚未在系統上安裝 LilyPond,請參考這篇文章。
基本概念
檔案名稱 (File Name)
按照慣例,LilyPond 文檔的副檔名為 .ly 。LilyPond 主程式和 VS Code 等編輯器會根據副檔名來偵測檔案是否為 LilyPond 文檔。
LilyPond 沒有規範檔案名稱,只要符合系統本身的規範即可。建議可以用 -
(dash) 代替空白,像是 early-spring-of-the-jokul.ly (雪山春曉)。
輸出格式 (Output Format)
一般來說,LilyPond 可輸出以下檔案格式:
- PDF:數位文件。用於印刷和瀏覽
- MIDI:數位樂譜。用於演奏
- PNG:圖檔。內嵌在網頁、辦公室文件等
除此之外,還有一些較少用的檔案格式。此處不列出。
大小寫敏感性 (Case Sensitivity)
LilyPond 文檔是大小寫敏感的。c
是正確的音符但 C
則否。
空白、縮進、換行
LilyPond 對空白、縮進、換行等排版元素相對自由,使用者可依據自己的習慣來排版。
註解 (Comment)
在 %
後的文字為註解。寫在註解內的文字是給使用者看的,LilyPond 主程式會自動忽略註解的部分。
預設值
LilyPond 是相對鬆散的語言。有些使用者未寫入的部分會自動套用預設值。像是未寫譜號時,會自動套用高音譜號;未寫拍子符號時,會自動套用 4/4
拍。剛學 LilyPond 時,建議不要寫得太簡略,以免日後自己無法閱讀文檔。
譜號 (Clef)
譜號的指令為 \clef
。LilyPond 支援數種常見的譜號:
treble
(高音譜號)tenor
(次中音譜號)alto
(中音譜號)bass
(低音譜號)subbass
(倍低音譜號)
以下指令輸出高音譜號:
\clef treble
文檔中未標明譜號時,會自動使用高音譜號。
調號 (Key Signature)
調號的指令為 \key
。調號可再分為大調 (\major
) 及小調 (\minor
)。
以下指令輸出 G 大調:
\key g \major
注意這裡的 g
要使用小寫英文字母。
文檔中未標明調號時,會自動使用 C 大調。
拍子符號 (Time Signature)
拍子符號的指令為 \time
。以下範例指令輸出 4/4 拍:
\time 4/4
以下範例指令輸入 6/8 拍:
\time 6/8
文檔中未標明拍子符號時,會自動使用 4/4 拍。
音高 (Pitch)
絕對音高
LilyPond 使用音名來記錄音高,像是 cdefgab
。在預設情形下,LilyPond 採用絕對音高。c
是 C3,比中央 C 低一個八度。以下是音階的例子:
\version "2.22.1"
{
\clef treble
\key c \major
\time 4/4
% 高八度
c d e f g a b c'
}
這個例子編譯出來的樂譜如下:
樂友會發現和平常的音階差了一個八度。這是因為 c
是 C3 而非 C4。我們將所有的音提高一個八度:
\version "2.22.1"
{
\clef treble
\key c \major
\time 4/4
c' d' e' f' g' a' b' c''
}
這個例子編譯出來的樂譜如下:
LilyPond 中控制八度音符的方式如下:
音高 | 範例 | 實際音高 |
---|---|---|
高兩個八度 |
|
C5 |
高一個八度 |
|
C4 |
預設音高 |
|
C3 |
低一個八度 |
|
C2 |
低兩個八度 |
|
C1 |
相對音高
使用絕對音高時,時常要重覆地撰寫多個升/降八度符號。故 LilyPond 另外提供相對模式 (relative mode),來減少八度符號的使用量。
相對模式的指令為 \relative
,其後跟著起始基準音。在相對模式中,每個音和前一個音的音程小於等於五度時,不需要升/降八度。反之,則需要加上相對應的八度符號。
以下範例文檔用相對模式來寫 C 大調音階:
\version "2.22.1"
% 起始基準為中央 C
\relative c' {
\clef treble
\key c \major
\time 4/4
% 相對 Ti 一度
c d e f g a b c
}
最後一個高八度的 c
相對於前一個音 (b
) 才差一度,所以不需要加上升八度符號。
節奏 (Rhythm)
在音符的後綴加上數字,可表達該音符的節拍。其語法如下:
節拍 | 範例 |
---|---|
全音符 |
|
二分音符 |
|
四分音符 |
|
八分音符 |
|
十六分音符 |
|
三十二分音符 |
|
附點音符在音符的後方加上 .
(dot)。其語法如下:
節拍 | 範例 |
---|---|
二又二分之一拍 |
|
四又二分之一拍 |
|
八又二分之一拍 |
|
休止符使用 r
(記為 rest)。拍數和一般音符相同。
音符未寫節拍長度時,會和前一個音符的節拍長度相同。第一個音符未寫節拍長度時,會自動使用四分音符。
速度 (Tempo)
指定速度的指令為 \tempo
。可以使用文字敘述或是數字來標註樂曲的速度。
以下範例使用文字來標註速度:
\tempo "Andante"
以下範例使用數字來標註速度:
\tempo 4 = 120
和弦 (Chord)
和弦的寫法是用一對 <
和 >
將多個音符包起來。可參考以下範例:
\version "2.22.1"
{
\clef treble
\key c \major
% 為了將音符塞進同一小節的作法
\time 7/2
% 隱藏拍子記號
\once \override Staff.TimeSignature #'stencil = ##f
<c' e' g'>2 <d' f' a'> <e' g' b'> <f' a' c''>
< g' b' d''> <a' c'' e''> <b' d'' f''>
}
此範例的輸出如下:
表達性符號 (Expression Mark)
表達性符號有很多種,這裡僅列出幾個範例。
技法 (Articulations)
以下是幾個加在特定音符上的技法指令:
\staccato
(斷奏)\mordent
(波音)\turn
(迴音)
使用範例如下:
\relative {
c''4\staccato c\mordent b2\turn
c1\fermata
}
強弱 (Dynamics)
以下是常見的音符強弱指令:
\ppp
(極弱)\pp
(很弱)\p
(弱)\mp
(中弱)\mf
(中強)\f
(強)\ff
(很強)\fff
(極強)
使用範例如下:
\relative c'' {
c2\ppp c\mp
c2\rfz c^\mf
c2_\spp c^\ff
}
使用 ^
的話,強弱符號會出現在音符上方。
反覆 (Repeat)
音樂的反覆使用 \repeat volta
指令。若反覆後出現不同音樂則使用 \alternative
指令。
以下範例單純重覆一些音樂:
\relative {
\repeat volta 2 { c''4 d e f }
c2 d
\repeat volta 2 { d4 e f g }
}
以下範例則會在重覆後出現不同音樂:
\relative {
\repeat volta 2 { c''4 d e f | }
\alternative {
{ c2 e | }
{ f2 g | }
}
c1
}
各種樂譜
樂器種類繁多,本文有限的篇幅無法列舉那麼多種樂器。這裡僅列出幾種具有代表性的樂器譜。
鋼琴 (Piano)
鋼琴 (piano)、鍵盤樂器 (keyboard instrument)、豎琴 (harp) 等音域廣的樂器,會使用大譜表 (grand staff) 來記譜。以下是一個大譜表的範例:
\version "2.22.1"
\new PianoStaff <<
\new Staff {
% 使用高音譜號
\clef treble
% 使用 C 大調
\key c \major
% 設置拍子符號
\time 4/4
c'4 d' e' f' g' a' b' r
}
\new Staff {
% 使用低音譜號
\clef bass
% 使用 C 大調
\key c \major
\time 4/4
c4 d e f g a b r
}
>>
上述範例轉出來的譜如下:
Lilypond 不僅用在西樂樂器,像是古箏 (guzheng) 也可以使用大譜表來記譜。以下範例文檔節錄自烏蘇里船歌:
% 烏蘇里船歌 (節錄)
\version "2.22.1"
\score {
\new PianoStaff <<
\new Staff = "up" {
% 指定此聲部的 MIDI 樂器為豎琴 (pedal harp)
\set Staff.midiInstrument = "orchestral harp"
% 使用高音譜號
\clef treble
% 使用 D 大調
\key d \major
% 設置拍子符號
\time 4/4
\tempo 4 = 72
a'4. d''8 fis' a' fis' e'
d'4 e'8 fis' b4 a
b'4. a'8 a'8 fis' e' fis'
a'1
a'4 b'8 d'' fis'4 a'
d'4 e'8 fis' b4 a
a4. a8 b2
a2
}
\new Staff = "down" {
% 指定此聲部的 MIDI 樂器為豎琴 (pedal harp)
\set Staff.midiInstrument = "orchestral harp"
% 使用低音譜號
\clef bass
% 使用 D 大調
\key d \major
% 設置拍子符號
\time 4/4
d8 a d'4 r2
b,8 fis b4 r2
e8 b e'4 r2
a,8 e a d' b4 a
d8 a d'4 r2
b,8 fis b4 r2
e8 b e'4 r e,4
a,8 d e a
\showStaffSwitch
\change Staff = "up"
d'8_\markup{\italic"L.H."} e' a'4
\hideStaffSwitch
}
>>
\layout {}
% 產生 MIDI 檔案
\midi {}
}
上述範例轉出來的譜如下:
吉他 (Guitar)
吉他 (guitar)、烏克麗麗 (ukulele) 是魯特琴 (lute) 家族的典型實例。這類樂器除了使用五線譜外,也會用 TAB 譜來標示指法。當然,Lilypond 也支援 TAB 譜。以下是五線譜加 TAB 譜的範例:
symbols = {
\time 3/4
c4-.^"Allegro" d( e)
f4-.\f g a^\fermata
\mark \default
c8_.\<\( c16 c~ 2\!
c'2.\prall\)
}
\score {
<<
\new Staff { \clef "G_8" \symbols }
\new TabStaff { \symbols }
>>
}
在寫這類型的譜時,會寫將音符預寫好,然後分別套用到五線譜及 TAB 譜上。以上述範例來說,就是 symbols
的部分。
上述範例轉出來的譜如下:
藉由設置定弦,Lilypond 的 TAB 譜也可以用在其他魯特琴家族樂器上。我們會在後續文章介紹這項特性。
打擊樂器 (Percussion)
打擊樂使用沒有音高的譜。像是以下範例:
\drums {
hihat4 hh bassdrum bd
}
打擊樂不使用一般的音符,有另一套輸入樂器的指令。這裡先有個概念即可。
多聲部樂譜
多聲部樂譜的指令是 \new StaffGroup
。在 StaffGroup 區塊內的各個聲部為 \new Staff
。參考以下範例:
\new StaffGroup <<
\new Staff \relative { c''1 c }
\new Staff \relative { c''1 c }
>>