撥子 安裝 LilyPond 及相關軟體

LilyPond
Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

說明

LilyPond 是一套使用代碼 (code) 來撰寫樂譜的軟體。寫好 LilyPond 代碼後,由 LilyPond 主程式編譯 (compile) 出樂譜。由於 LilyPond 非所見即所得的記譜軟體,學習起來較為困難,故撥子撰寫這篇入門教學文章。

雖然 LilyPond 相對難上手,但 LilyPond 排出來的樂譜還算漂亮,而且該軟體是完全免費的,故仍有值得學習之處。

但 LilyPond 使用起來較不直觀,不熟悉時還要花時間除錯,故不建議直接用 LilyPond 來編曲。除錯時編曲的靈感就跑掉了。編曲時還是建議用比較直觀的工具,像是 MuseScore,或是直接用紙筆來編曲。

LilyPond 可以撰寫的樂譜種類

LilyPond 主要是用在西樂樂譜。以下是 LilyPond 可以排版出來的項目:

  • 五線譜
    • 單聲部譜。大部分的樂器
    • 大譜表。鋼琴、豎琴等
    • 多聲部譜。合奏
  • 擊樂譜
  • TAB 譜
    • 吉他
    • 烏克麗麗
    • 其他。像是斑鳩琴
  • 簡譜 (搭配 jianpu-ly 腳本)

其實還有其他少見的樂譜,像是古代樂譜。但那些樂譜比較少用,故不列出。

免安裝的雲端 LilyPond

Hacklily 是一個免安裝的雲端 LilyPond 編輯器:

Hacklily 範例視窗

這不是所見即所得的視覺化編輯器,仍然要寫 LilyPond 代碼。不過不需要建置環境,編譯出來的結果會即時顯示在右半側。

對編輯的結果滿意的話,就把左側的 LilyPond 代碼自行存在文字檔案即可。該雲端編輯器提供的存檔功能是 不必要 的。

這不是用來取代正規的 LilyPond 開發環境,只是在無法安裝 LilyPond 時的替代品,像是在使用公共電腦的時候。

雲端編輯器會不會偷存資料是有疑慮的。(警告) 重要的機密資料不要用雲端編輯器撰寫。

建置 LilyPond 開發環境

安裝 LilyPond

到 LilyPond 的官網下載給 Windows 使用的安裝程式,點擊安裝程式,按照指示安裝即可。本小節簡要地列出在 Windows 下的安裝過程。

一開始展示 LilyPond 的授權文件:

LilyPond 的授權文件

LilyPond 採用 GPL 授權。這個授權主要影響 LilyPond 的原始碼 (source code) 的使用方式,對一般使用者來說,只要知道 LilyPond 可免費使用即可。

選擇 LilyPond 的安裝位置:

選擇 LilyPond 的安裝路徑

除非有特殊理由,使用預設路徑即可。

選擇 LilyPond 的元件 (component):

選擇 LilyPond 的元件

基本上就是全選。

開始安裝 LilyPond:

安裝 LilyPond

很快就安裝完成了。

安裝 PDF 閱讀器

LilyPond 原始碼是文字檔案,經 LilyPond 編譯成 PDF 檔案。使用者可在電腦上觀看轉出來的樂譜,或是將樂譜印出來。

常見的 PDF 閱讀器有 Acrobat Reader 和 Foxit Reader。兩者功能重疊,擇一使用即可。撥子自己使用 Foxit Reader,因為比較輕量、運行速度快。本小節展示安裝 Foxit Reader 的過程。

到 Foxit Reader 的官網下載 PDF Reader 的 Windows 安裝程式,按照其指示安裝。本小節展示在 Windows 下的安裝過程。

一開始進入 Foxit Reader 的安裝畫面:

Foxit Reader 安裝程式的歡迎畫面

這裡建議開啟「Custom Installation」。至少看一下安裝程式對系統做了什麼更動。

展示 Foxit Reader 的授權文件:

Foxit Reader 的授權文件

同意授權即可繼續下一步。

選擇安裝路徑:

選擇安裝 Foxit Reader 的路徑

除非有強烈理由,使用預設路徑即可。

選擇 Foxit Reader 的元件:

選擇 Foxit Reader 的元件

基本上全部選取即可。

選擇額外的任務:

安裝 Foxit Reader 時,選擇額外的任務

這些是選擇性的,可視自身需求取消不需要的任務。

不要安裝 McAfee Webadvisor:

安裝 Foxit Reader 時,不要安裝 McAfee Webadvisor

這個軟體其實和 Foxit Reader 無關,算是 Foxit 的工商服務。即使按「DECLINE」也可以安裝 Foxit Reader。很多免費軟體會偷包一些非必要的東西,安裝時還是要看一下,才不會中招。

開始安裝 Foxit Reader:

開始安裝 Foxit Reader

結束安裝程式:

結束安裝 Foxit Reader

安裝後不需要馬上打開 Foxit Reader。Windows 會自動將 PDF 文件和 Foxit Reader 建立關連,之後點擊 PDF 文件時會自動以 Foxit Reader 開啟。

(選擇性) 安裝 VS Code

LilyPond 的設計是透過輸入代碼來撰寫樂譜,所以沒有 (所見即所得的) 樂譜編輯器。LilyPond 內建的主程式只是一個簡易的文字編輯器。

即使不使用 LilyPond 內建的編輯器,也可以先在別的編輯器寫好 LilyPond 文檔後,再由 LilyPond 編譯出樂譜。本小節介紹使用 VS Code (Visual Studio Code) 編輯 LilyPond 文檔的方式。

到 VS Code 的官網下載給 Windows 使用的安裝程式,按照其指示安裝。這裡展示在 Windows 上安裝 VS Code 的過程。

一開始展示 VS Code 的授權文件:

VS Code 的授權文件

按同意後繼續即可。

選擇安裝 VS Code 的路徑:

選擇安裝 VS Code 的路徑

注意 VS Code 並非安裝在系統路徑,而是安裝在個人路徑。這是因為 VS Code 會有許多延伸套件 (extension),使用個人路徑的話,安裝套件時就不需提升至管理員權限。

選擇開始功能表的名稱:

選擇 VS Code 在開始功能表的名稱

按照預設的設置即可。

選擇附加的工作:

安裝 VS Code 時,選擇附加的工作

這些工作不是必要的,按需求來勾選即可。

準備安裝:

準備安裝 VS Code

安裝完成:

VS Code 安裝完成

剛裝完的 VS Code 無法辨識 LilyPond 文檔。因為 VS Code 設計成可擴充的編輯器,每位使用者可根據自身的需求安裝延件套件。

在 VS Code 的主程式的左方欄,選擇 VS Code Marketplace (第五個按鈕):

VS Code 市集

在 Marketplace 的搜尋框輸入「lilypond」:

在 VS Code 市集搜尋 LilyPond

搜尋結果往往會有多個。通常找排比較前面的、星號較多的就會是可用的套件:

在 VS Code 市集選擇 LilyPond 套件

在 LilyPond 的頁面按下「Install」即可安裝該套件。即使套件不符需求,日後要反安裝也很簡單。

當樂友讀到這裡時,應該已經安裝好 LilyPond 相關軟體了。我們會在後文提供範例文檔,讓樂友體驗一下使用 LilyPond 的方式。

確認 LilyPond 版本號

撰寫 LilyPond 文檔時,需要輸入 LilyPond 的版本號。這裡提供兩個確認系統上的 LilyPond 版本號的方式。

第一種方式是開啟 LilyPond 的主程式。在起始頁面會提到 LilyPond 的版本號:

LilyPond 的版本號

第二種方式是在命令提示字元 (command prompt) 輸入指令來確認版本號:

> "c:\Program Files (x86)\LilyPond\usr\bin\lilypond.exe" --version
GNU LilyPond 2.22.1

Copyright (c) 1996--2021 by
  Han-Wen Nienhuys <hanwen@xs4all.nl>
  Jan Nieuwenhuizen <janneke@gnu.org>
  and others.

This program is free software.  It is covered by the GNU General Public
License and you are welcome to change it and/or distribute copies of it
under certain conditions.  Invoke as `lilypond --warranty' for more
information.

樂友的系統上的 LilyPond 的版本號可能和這裡的版本號相異。請不要直接抄文章內的版本號。

這個指令很長,每次都要重打很浪費時間。可以參考這篇文章修改 Windows 的 PATH 環境變數,以後就不用打那麼長的指令。

第一次使用 LilyPond

本節用簡短的 LilyPond 文檔來體驗 LilyPond 的使用方式。

開啟編輯器,儲存名為 helloworld.ly (副檔名為 .ly) 的文字檔案。輸入以下 LilyPond 代碼:

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

暫時不需要理解 LilyPond 代碼的意義,直接輸入一模一樣的代碼即可。

在 LilyPond 文檔上按右鍵:

按滑鼠右鍵,用 LilyPond 編譯 Hello World 樂譜

選擇「Generate PDF …​」即可編譯 PDF 文檔。

使用命令列的話,則輸入以下指令:

$ lilypond helloworld.ly

如果 LilyPond 文檔沒有寫錯,即可順利編譯出樂譜。以本例來說,在命令列編譯樂譜的訊息如下:

GNU LilyPond 2.22.1 (running Guile 2.2)
正在處理 ‘helloworld.ly’
分析中...
helloworld.ly:1: 警告: no \version statement found, please add

\version "2.22.1"

for future compatibility
Interpreting music...
Preprocessing graphical objects...
Finding the ideal number of pages...
Fitting music on 1 page...
Drawing systems...
Converting to `helloworld.pdf'...
Success: compilation successfully completed

這個範例文檔編譯出來的樂譜如下:

用 LilyPond 編譯出來的 Hello World 樂譜

如果 LilyPond 文檔寫錯,不會產出樂譜。這時候要閱讀 LilyPond 產生的紀錄 (log) 來除錯。

Windows 上使用圖形介面,所以會產生 log 檔。LilyPond 紀錄檔的檔案名稱和 LilyPond 文檔相同,但副檔名為 .log 。Log 檔是文字檔案,同樣用 VSCode 即可開啟。

LilyPond 文檔的架構

先前的 LilyPond 文檔過短,無法看出 LilyPond 文檔的架構。本節使用稍長的範例來觀看 LilyPond 文檔的架構。

使用相對模式簡化輸入

本小節使用 LilyPond 來撰寫生日快樂歌的樂譜。以下是 (加上註解的) LilyPond 範例文檔:

% 生日快樂歌

% 設置 Lilypond 版本號
\version "2.22.1"

% 標題
\header {
    % 樂曲名稱
    title = "生日快樂歌"
    % 作曲者
    composer = "Mildred J Hill"
}

% 使用相對模式,以中央 C 為起始點
% 差距小於五度音不需升降
\relative c' {
    % 使用高音譜號
    \clef treble
    % 使用 F 大調
    \key f \major
    % 設置拍子符號
    \time 3/4

    % 弱起
    \partial 4 c8. c16 |
    d4 c4 f4 |
    e2 c8. c16 |
          % 大於等於五度
    d4 c4 g'4 |
    f2 c8. c16 |
    c'4 a4 f4 |
    %平滑 % 延長
    e4( d4\fermata ) bes'8. bes16 |
    a4 f4 g4 |
       % 結束
    f2 \bar "|."
}

% 開頭的文字為註解 (comment)。LilyPond 會忽略註解部分的內容,可在註解內寫入自由文字 (free text) 做為註記,不需寫 LilyPond 指令。

\version 指令用來指定 LilyPond 的版本號。新版的 LilyPond 建議在每份 LilyPond 文檔的開頭輸入該份文檔所用的 LilyPond 版本。"..." 內的文字視為字串 (string)。有些指令填入的內容要使用字串。

\header 區塊用來填寫樂諎的標題欄。區塊要用一對 {} 包起來。區塊可跨越多行。本範例文檔填入樂曲名稱 (title) 和作曲者 (composer)。

\relative 區塊用來填入樂諎。當使用該指令時,LilyPond 會使用相對模式 (relative mode)。使用相對模式不是必需的,下一小節會展示不使用相對模式的 LilyPond 文檔。

此樂譜區塊的相對模式的起始點是 c' (中央 C)。在相對模式中,每個音符相對前一個音符的音程小於五度時,不需要加上升降八度的符號。

\clef 指令用來輸入譜號。此處輸入 treble (高音譜號)。

\key 指令用來指定樂曲的調性。\major 指令代表使用大調。本範例文檔使用 F 大調。

\time 指令用來設置樂曲的拍子符號。

由於生日快樂歌是弱起的樂曲,這裡使用 \partial 指令來指定弱起的拍子數為 4 (四分音符)。之後就是音符的部分。由於篇幅限制,這裡不詳談音符的撰寫方式。

這個範例將每個小節寫在獨立的一行。在小節的後方的 | 只是視覺提示,不寫也不影響產出的樂譜。但最後的 \bar 指令則會影響小節線。

此範例文檔所編譯出來的樂譜如下:

生日快樂歌的樂譜

不使用相對模式

在前一小節中,我們使用相對模式來簡化音符輸入。本節不使用相對模式,可以和前一小節相互比較。

這裡使用同一首樂曲 (生日快樂歌),但去除重覆的註解:

% 生日快樂歌

\version "2.22.1"

\header {
    title = "生日快樂歌"
    composer = "Mildred J Hill"
}

% 未標註相對模式時,使用絕對音高
% 預設為 C3 (比中央 C 低八度)
{
    \clef treble
    \key f \major
    \time 3/4

    \partial 4 c'8. c'16 |
    d'4 c'4 f'4 |
    e'2 c'8. c'16 |
    d'4 c'4 g'4 |
    f'2 c'8. c'16 |
    c''4 a'4 f'4 |
    e'4( d'4\fermata ) bes'8. bes'16 |
    a'4 f'4 g'4 |
    f'2 \bar "|."
}

不使用相對模式時,c 的絕對音高是 C3,比中央 C 低一個八度。由於本樂曲大部分的音域在 C4 所在的八度,所以皆要提升一個八度。

樂友可以比較一下這兩個範例文檔的音符的撰寫方式,就可以知道相對模式和非相對模式間的差異。

繼續學習 LilyPond

由於篇幅限制,本文未說明 LilyPond 的語法。我們會在下一篇文章介紹 LilyPond 的基本概念和語法。

關於作者

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

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