撥子 LilyPond 語法入門教學

LilyPond
Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

前言

本文簡要地介紹 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 大調音階

樂友會發現和平常的音階差了一個八度。這是因為 c 是 C3 而非 C4。我們將所有的音提高一個八度:

\version "2.22.1"

{
    \clef treble
    \key c \major
    \time 4/4

    c' d' e' f' g' a' b' c''
}

這個例子編譯出來的樂譜如下:

一般的 C 大調音階

LilyPond 中控制八度音符的方式如下:

音高 範例 實際音高

高兩個八度

c''

C5

高一個八度

c'

C4

預設音高

c

C3

低一個八度

c,

C2

低兩個八度

c,,

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)

在音符的後綴加上數字,可表達該音符的節拍。其語法如下:

節拍 範例

全音符

c1

二分音符

c2

四分音符

c4

八分音符

c8

十六分音符

c16

三十二分音符

c32

附點音符在音符的後方加上 . (dot)。其語法如下:

節拍 範例

二又二分之一拍

c2.

四又二分之一拍

c4.

八又二分之一拍

c8.

休止符使用 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 的部分。

上述範例轉出來的譜如下:

TAB 譜

藉由設置定弦,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 }
>>

繼續深入

本文的內容著重在單一指令,難免覺得瑣碎。我們在這裡提供一份給小型流行樂團使用的樣板 (boilerplate) 樂譜。樂友可藉此觀看完整的 LilyPond 命令稿,建立整體概念。

憑本篇有限的篇幅,僅能學會 Lilypond 的基本使用方式。建議自行閱讀 Lilypond 的手冊,以學習更多 Lilypond 的特性。

關於作者

撥子為資訊碩士及音樂愛好者,曾學習中阮、烏克麗麗、吉他、鋼琴等樂器。

除了對音樂的愛好,撥子喜歡黑咖啡和日本料理,會簡單的日文,有時會閱讀,有時會自助旅行。