LilyPond

LilyPond(リリーポンド、「スイレンの池」の意)は、テキストで書いた楽譜をPDFやMIDIに変換するツールである。

本家の Download ページからダウンロードできるが、私はMacでHomebrewを使っているので、ターミナルに brew install lilypond と打ち込むだけでインストールできた。インストールすると abc2ly、convert-ly、etf2ly、lilymidi、lilypond、lilypond-book、lilypond-invoke-editor、lilysong、midi2ly、musicxml2ly というコマンドが入る。このうち lilypond は(arm64の)バイナリで、残りはPythonスクリプトである。ついでに Guile というScheme(Lispの一種)の処理系(コマンド guile、guild、guile-config、guile-snarf、guile-tools)も入る。

GUIツール Frescobaldi もあるが、以下ではコマンドラインツールだけを使うことにする。VS CodeにはLilyPond入力・プレビュー拡張機能がいろいろあるようだ。

LilyPondファイルは拡張子 ly のテキストファイルである。以下では LilyPond 2.24.4 を使うと仮定する。例えば

\version "2.24.4"
{ c' d' e' f' g' a' b' c'' }

というテキストファイル test.ly を用意し、ターミナルに lilypond test.ly と打ち込めば、

LilyPond example 1

のように出力される。

先頭に \version "2.24.4" と書く意味は、将来バージョンが上がって記法が変わった場合に convert-ly -e test.ly と打ち込むことで最新バージョンの記法に変換できるようにするためである。変換内容は上書きされ、元ファイルは test.ly~ に改名される。

古くからあるABC記譜法をLilyPond記法に変換するには abc2ly test.ly と打ち込む。

LilyPondの記法をまとめておく。以下では \version 指定は省略する。

最初の例

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

で、いちいち ' をたくさん書くのは面倒だ。そのときは相対指定を使う:

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

出力は同じである。最初の音符の絶対的な高さだけ指定すれば、次からは直前の音符に一番近い音が選ばれる。あるいは

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

とすれば、c' に一番近い音から始まる。

オクターブ上げるには ' を付け、下げるには , を付ける。

音符の長さは四分音符がデフォルトだが、例えば 8 を付ければ八分音符になる。これは \relative 関係なく、省略すれば直前の音符と同じ長さになる。付点はピリオド . を付ける。

\relative c' { c d8 e f g a b c2 r2 }
LilyPond example 2

このように、連桁(れんこう、beam、♪♪→🎵)がデフォルトで、\autoBeamOff\autoBeamOn で自動連桁を制御する。

シャープ、フラットは、デフォルトではドイツ語流に ises を付けるが、\language "english" と宣言しておけば sf を付ける英語流になる。

ヘ音記号は \clef bass とする。bass 以外は treblealttenor などがある。

次の例は、一挙にいろいろな記法を使っている。MIDI出力も指定しているので、lilypond test.ly とするとPDF以外に test.midi も生成される。\f はフォルテ記号である。^\f とすれば上に付く。スラーは ( )、タイは ~ である。

\language "english"
\score {
  \relative {
    \clef bass
    \key d \major
    \time 4/4
    \tempo 2 = 80
    \set Score.currentBarNumber = #257
    e\f e fs d | e fs8( g) fs4 d | e fs8( g) fs4 e |
  }
  \layout { indent = 0 }
  \midi {}
}
LilyPond example 3

歌詞などを加える。<< >> はグルーピング。% 以下はコメント。

\version "2.24.4"
\header {
  title = "Symphony No. 9 Bass Chorus 257–"
  composer = "Ludwig van Beethoven"
  tagline = ""
}
\language "english"
\score {
  <<
  \relative {
    \clef bass
    \key d \major
    \time 4/4
    \tempo "Allegro assai" 2 = 80
    \set Score.currentBarNumber = #257
    \mark "D"
    e^\f e fs d | e fs8( g) fs4 d | e fs8( g) fs4 e |
    d e a, fs'~ | fs fs g a | a g \autoBeamOff fs( g8) e \autoBeamOn |
    d4 d e fs | e4. d8 d2 |
  }
  \addlyrics {
    Dei -- ne Zau -- ber bin -- den wie -- der, Was die Mo -- de
    streng ge -- teilt; Al -- le Men -- schen wer -- den Brü -- der,
    Wo dein sanf -- ter Flü -- gel weilt.
  }
  >>
  \layout { indent = 0 }
  \midi {}
}
LilyPond example 4

フォントはデフォルトでは URW++ Base 35 フォント の C59(New Century Schoolbook 互換)が使われるようだ。音譜は Emmentaler というフォントである。詩の部分に日本語を使うと、私の環境(Mac)ではヒラギノ丸ゴProN-W4になった。