雖然上網很方便,在網路上看資料無法取代真正的音樂養成教育。時間和經濟許可的話,仍建議找老師學習音樂,會少走許多彎路。
若本文內容有誤,請詢問你的音樂老師。
本網站未代理文章及贊助商連結中提及的樂器、器材及其他產品。
說明
彈唱時最常看到的樂譜就是和弦譜。這種簡要的樂譜,除了和弦外,有些會附上吉他或烏克麗麗的和弦指法,就不用再上網查和弦指法了。
但對於相對少見的 baritone 烏克麗麗及吉他麗麗來說,幾乎都不會附和弦指法。除了上網查和弦指法外,利用 LilyPond 內建的指板圖表 (fretboard diagram) 也可以快速取得相關的和弦指法。本文說明如何用 LilyPond 完成這項任務。
若樂友不想自己撰寫 LilyPond 文檔,也可以直接下載文章尾端介紹的免費小工具來用。
工作原理
相對於烏克麗麗 (定弦 gCEA
) 來說,baritone 烏克麗麗 (定弦 DGBE
) 可視為其移調樂器。這兩種樂器的弦與弦之間的音程關係是相同的,只是音高改變。
同理可知,相對於吉他 (定弦 EADGBE
),吉他麗麗 (定弦 ADGCEA
) 也可視為其移調樂器。
利用 LilyPond 的移調指令 \transpose
就可以分別從吉他、烏克麗麗的內建指板圖表很快地取得其移調樂器的指法。
快速查詢和弦的 LilyPond 指令
本節以簡短的 LilyPond 程式碼片段,來觀看如何將和弦移調。注意此處的程式碼片段是不完整的,無法編譯成樂譜。
查詢 Baritone 烏克麗麗的和弦
以下是其程式碼片段:
% 製作指板圖表
\new FretBoards {
% 使用標準烏克麗麗定弦
\set Staff.stringTunings = #ukulele-tuning
% 從 C4 移調到 F3
\transpose c' f \chord
}
查詢吉他麗麗的和弦
以下是其程式碼片段:
% 製作指板圖表
\new FretBoards {
% 預設定弦即為吉他定弦
% 所以不需要另行指定
% 從 C4 移調到 G4
\transpose c' g' \chord
}
一個完整的範例
承上節,我們將先前的程式碼片段擴充成完整的範例程式碼。本節的範例可編譯成樂譜:
% 設置 LilyPond 相容版本
\version "2.22.1"
% 調整樂譜大小
#(set-global-staff-size 60)
% 自動裁切圖檔
#(ly:set-option 'crop #t)
% 載入預先寫好的標準烏克麗麗指板圖表
\include "predefined-ukulele-fretboards.ly"
% 記錄和弦
chord = \chordmode {
c1 a1:m f1 g1:7
}
% 製作樂譜
% 這裡只是把樂譜當成和弦指法圖表來用
\score {
<<
% 製作和弦名稱
% 此處保持原有的和弦名稱,不要移調
\new ChordNames {
\chord
}
% 製作指板圖表
\new FretBoards {
% 使用標準烏克麗麗定弦
\set Staff.stringTunings = #ukulele-tuning
% 從 C4 移調到 F3
\transpose c' f \chord
}
>>
% 調整樂譜版面
\layout {}
% 製作 MIDI
% 這裡用不到這個功能,所以把指令註解掉
% \midi {}
}
編譯出來的指板圖表如下:
吉他麗麗的範例和此範例大部分內容是重覆的,只要修改少量程式碼即可,故不列出。
免費小工具
我們已經知道這個方法了。不過,每次都要重覆建立相似的 LilyPond 命令稿,其實還是挺浪費時間的。
為了節省不必要的時間,撥子寫了個命令列小工具,可以快速地查詢數個魯特琴家族樂器的指板圖表。這些樂器包括吉他、烏克麗麗、baritone 烏克麗麗、吉他麗麗、曼陀林 (mandolin)、曼陀拉 (mandola)。
撥子其實完全沒碰過曼陀林,只是 LilyPond 內建該樂器的指板圖表,就順手把這個功能做進去了。經撥子查詢,目前 LilyPond 沒有附班鳩琴 (banjo) 的指板圖表。所以沒做出該功能。
如果會用 Git 的話,使用 Git 拷貝該專案到本地端:
$ git clone https://github.com/fourstringmate/chord-diagram.git
拷貝完後,自行移到合適的位置,修改 PATH 環境變數 即可使用。若不會用 Git,直接下載 ZIP 檔解壓縮也行。
使用該工具的參考指令如下:
$ chord-diagram guitalele C Am F G7
然後會在工作目錄 (working directory) 產生 guitalele-C-Am-F-G7.png ,就是指板圖表。其他細節,請看該工具程式的專案頁面。
該工具程式的運算方式如下:
- 根據輸入的命令列參數即時產生 LilyPond 程式碼
- 呼叫 LilyPond 編譯該程式碼,產生相對應的指板圖表 (圖檔)
- 將指板圖表拷貝到使用者的工作目錄
這個程式在背景利用暫時檔案 (temporary file) 產生命令稿,所以不會覆蓋使用者的檔案,也不會在工作目錄留下多餘的檔案。
我們是音樂網站,不是程式設計網站。這裡不講解工具程式的程式碼。有興趣的樂友可以自行到專案頁面追蹤程式碼。