撥子 [LilyPond] 用免費小工具快速查詢和弦指法

LilyPond和弦吉他烏克麗麗
Facebook Twitter LinkedIn LINE Skype EverNote GMail Yahoo Email

說明

彈唱時最常看到的樂譜就是和弦譜。這種簡要的樂譜,除了和弦外,有些會附上吉他或烏克麗麗的和弦指法,就不用再上網查和弦指法了。

但對於相對少見的 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 {}
}

編譯出來的指板圖表如下:

Baritone 烏克麗麗的無敵四和弦 (C、Am、F、G7)

吉他麗麗的範例和此範例大部分內容是重覆的,只要修改少量程式碼即可,故不列出。

免費小工具

我們已經知道這個方法了。不過,每次都要重覆建立相似的 LilyPond 命令稿,其實還是挺浪費時間的。

為了節省不必要的時間,撥子寫了個命令列小工具,可以快速地查詢數個魯特琴家族樂器的指板圖表。這些樂器包括吉他、烏克麗麗、baritone 烏克麗麗、吉他麗麗、曼陀林 (mandolin)、曼陀拉 (mandola)。

撥子其實完全沒碰過曼陀林,只是 LilyPond 內建該樂器的指板圖表,就順手把這個功能做進去了。經撥子查詢,目前 LilyPond 沒有附班鳩琴 (banjo) 的指板圖表。所以沒做出該功能。

如果會用 Git 的話,使用 Git 拷貝該專案到本地端:

$ git clone https://github.com/fourstringmate/chord-diagram.git

拷貝完後,自行移到合適的位置,修改 PATH 環境變數 即可使用。若不會用 Git,直接下載 ZIP 檔解壓縮也行。

該工具需要在系統上安裝 LilyPondRuby 才能使用。這裡不需要寫程式。這些開發工具只是拿來跑程式用的。

使用該工具的參考指令如下:

$ chord-diagram guitalele C Am F G7

然後會在工作目錄 (working directory) 產生 guitalele-C-Am-F-G7.png ,就是指板圖表。其他細節,請看該工具程式的專案頁面。

該工具程式的運算方式如下:

  • 根據輸入的命令列參數即時產生 LilyPond 程式碼
  • 呼叫 LilyPond 編譯該程式碼,產生相對應的指板圖表 (圖檔)
  • 將指板圖表拷貝到使用者的工作目錄

這個程式在背景利用暫時檔案 (temporary file) 產生命令稿,所以不會覆蓋使用者的檔案,也不會在工作目錄留下多餘的檔案。

我們是音樂網站,不是程式設計網站。這裡不講解工具程式的程式碼。有興趣的樂友可以自行到專案頁面追蹤程式碼。

關於作者

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

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