English || XKeymacs | 7 つ道具 | Tips | JavaHelp | LilyPond | SlickEdit | 書評 | 落書 | リンク集

LilyPond

本文書は、パソコンオタクで音楽はさっぱりのあなたが、 音楽オタクでパソコンはさっぱりの友人から、「手書きの楽譜をパソコン清書するなんて楽勝だよね?」と声をかけられたときに、 はずみで「もちろん!」と請け合ってしまったというようなシチュエーションで最大の効果を発揮します。 難しい話は LilyPond User Manual に譲り、 ここでは、ニャンと鳴かせるためにポンと蹴る方法の紹介に留めます。

入門という名の備忘録

良く見るエラー

参考文献: LilyPond User Manual

注意: 謙遜ではなく、本当に音楽について何も知らない人間が作成したページなので、おかしな点も多々存在するかと思います。 間違いに気付かれた方や違和感を感じた方は oishi@cam.hi-ho.ne.jp へ連絡して頂ければ幸いです。

謝辞: 本ページを作成するにあたり、渡邉さんと賀谷さんから多くの有用なアドバイスを頂きました。ここにお礼を申し上げるとともに、感謝の意を表します。


入門という名の備忘録

LilyPond とはなんぞや?

LilyPond とは GPL の楽譜専用お絵描きソフトである。 五線譜の上にオタマジャクシを綺麗に描き、PDF や PNG などの形式で出力できる。おまけとして(?!) MIDI ファイルも作成される。 他の "楽譜清書ソフト" を使用したことがないので比較はできないが、 LilyPond は楽譜を作成する上で(私に取って)必要十分な機能を持っている。 Microsoft Windows, Linux, FreeBSD などで利用できる。

インストール

Microsoft Windows 上で LilyPond を利用するためには、Cygwin で全ての項目をインストールすれば良い。 もちろん、全ての項目をインストールする必要はないが、全ての項目をインストールすれば十分である。

楽譜で日本語を利用する予定がなければ (普通はないが)、下記の手順は一切不要である。 曲名、歌詞等を日本語で表示したいときは、Cygwin に加え pLaTeX, dvipsk をインストールする必要がある。 これらをインストールするには、Web2C-7.5.2 ファイルの簡易インストーラ (リンク先のファイルのバージョンが変化したため texinst755.zip へリンクを貼り直したが、このバージョンでの動作は未確認) を利用するのが便利である。

pLaTeX と dvipsk のインストール手順

  1. Web2C-7.5.2 ファイルの簡易インストーラをダウンロードし、X:\platex に解凍
  2. 以下のファイルを X:\tmp へダウンロード
  3. コマンドプロンプトから次のコマンドを実行
    X:\platex> texinst752.exe \tmp
  4. 以下のファイルをコピー
    Y:\cygwin\usr\share\lilypond\2.0.1\fonts\afm\*           -> X:\platex\share\texmf\fonts\afm\lilypond
    Y:\cygwin\usr\share\lilypond\2.0.1\fonts\source\*        -> X:\platex\share\texmf\fonts\source\lilypond
    Y:\cygwin\usr\share\lilypond\2.0.1\fonts\tfm\*           -> X:\platex\share\texmf\fonts\tfm\lilypond
    Y:\cygwin\usr\share\lilypond\2.0.1\fonts\type1\*         -> X:\platex\share\texmf\fonts\type1\lilypond
    Y:\cygwin\usr\share\lilypond\2.0.1\dvips\lilypond.map    -> X:\platex\share\texmf\dvips\config
    Y:\cygwin\usr\share\lilypond\2.0.1\ps\*                  -> X:\platex\share\texmf\dvips\lilypond
    Y:\cygwin\usr\share\lilypond\2.0.1\tex\*                 -> X:\platex\share\texmf\tex\latex\lilypond
    Y:\cygwin\usr\share\texmf\fonts\source\jknappen\sauter\* -> X:\platex\share\texmf\fonts\source\sauter
    Y:\cygwin\usr\share\texmf\tex\latex\misc\geometry.sty    -> X:\platex\share\texmf\tex\latex\misc
    Y:\cygwin\usr\share\texmf\tex\latex\graphics\keyval.sty  -> X:\platex\share\texmf\tex\latex\graphics
  5. X:\platex\bin にパスを通す

ただし、日本語を使用した楽譜を作成しようと試みると PostScript File の楽譜しか生成されないので、多くの場合は適宜 GhostscriptGSview を用いて、楽譜を EPS, PDF, JPEG 等に変換することになる。 Ghostscript や GSview は、それぞれダウンロードしたファイルをダブルクリックすれば、インストーラが起動する。 Ghostscript で日本語を表示するには、インストール後に msmincho.ttc と msgothic.ttc を %WinDir%\Fonts から X:\gs\fonts へコピーし、 X:\gs\gs8.14\lib\cidfmap に以下の記述を加えれば良い。

/Ryumin-Light << /FileType /TrueType /Path (msmincho.ttc) /SubfontID 0 /CSI [(Japan1) 3] >> ;
/GothicBBB-Medium << /FileType /TrueType /Path (msgothic.ttc) /SubfontID 0 /CSI [(Japan1) 3] >> ;

foo.ttc は直接 %WinDir%\Fonts を覗いても見えないが、検索すると見つかる。 日本語化された Ghostscript を使用すると(?!)、フォントをコピーしなくても絶対パスで指定できるらしい。

cf. W32TeXLilyPond Language ver2.4.2 (LilyPond and pTeX - 日本語組版 -)

Hello world!

なにはなくとも "Hello world!" である。 これさえできれば、8 割終わったと言っても過言では……、それはちょっと過言か。 とりえあえず、ドレミを表示するプログラム(なのか?)。 細かい説明は全て略。 以後、これを元に、変更・拡張を行い、楽譜の変化を見ていくことにする。

--- foo.ly ---
\score {
  \notes {
    \time 3/4
    \key c \major
    \clef treble
    c'4 d'4 e'4 |
    \bar "|."
  }
  \paper { }
}
---

bash 上で LilyPond を実行すると……、

bash-2.05b$ ls
foo.ly
bash-2.05b$ lilypond foo.ly
lilypond (GNU LilyPond) 2.0.1
Running usr...
Now processing: `foo.ly'
Parsing...
Interpreting music...[2]
Preprocessing graphical objects...
Calculating line breaks... [2]
paper output to `foo.tex'...


Analyzing foo.tex...
Running latex...
Running dvips...
Running ps2pdf...
DVI output to `foo.dvi'...
PDF output to `foo.pdf'...
PS output to `foo.ps'...
bash-2.05b$ ls
foo.dvi  foo.ly  foo.pdf  foo.ps
bash-2.05b$

こんな感じで、きれいな PDF ファイルが生成される。

日本語表示

日本語を表示するには、

$ lilypond foo.ly
のあとで
$ platex foo.latex
$ dvipsk foo.dvi
を実行する必要がある。
--- foo.ly ---
\header {
  title = "曲名"
  subtitle = "副題"
  poet = "作詞"
  composer = "作曲"
  tagline = "タグ"
}
\score {
  \notes {
    \addlyrics
    \new Staff {
      \time 3/4
      \key c \major
      \clef treble
      c'4 d'4 e'4 |
      \bar "|."
    }
    \new Lyrics \lyrics { ド レ ミ }
  }
  \paper { }
}
---

このファイルに対して lilypond すると、次のようになる。

bash-2.05b$ ls
foo.ly
bash-2.05b$ lilypond foo.ly
lilypond (GNU LilyPond) 2.0.1
Running usr...
Now processing: `foo.ly'
Parsing...
Interpreting music...warning: can't find ascii character: 131
[2]
Preprocessing graphical objects...
Calculating line breaks... warning: can't find ascii character: 131
warning: can't find ascii character: 131
warning: can't find ascii character: 140
[2]
paper output to `foo.tex'...
writing header field `title' to `foo.title'...
writing header field `subtitle' to `foo.subtitle'...
writing header field `composer' to `foo.composer'...
writing header field `poet' to `foo.poet'...


Analyzing foo.tex...
Running latex...
lilypond: error: LaTeX failed on the output file.
lilypond: error: The error log is as follows:

! Package inputenc Error: Keyboard character used is undefined
(inputenc)                in inputencoding `latin1'.

See the inputenc package documentation for explanation.
Type  H <return>  for imme
LATEX output to `foo.latex'...
TEX output to `foo.tex'...
bash-2.05b$ ls
foo.latex  foo.ly  foo.tex
bash-2.05b$ platex foo.latex
This is pTeX, Version 3.141592-p3.1.3 (sjis) (Web2C 7.5.2)
(./foo.latex
pLaTeX2e <2001/09/04>+0 (based on LaTeX2e <2003/12/01> patch level 0)
(c:/platex/share/texmf/tex/latex/base/article.cls
Document Class: article 2004/02/16 v1.4f Standard LaTeX document class
(c:/platex/share/texmf/tex/latex/base/size10.clo))
(c:/platex/share/texmf/tex/latex/misc/geometry.sty
(c:/platex/share/texmf/tex/latex/graphics/keyval.sty))
(c:/platex/share/texmf/tex/latex/base/inputenc.sty
(c:/platex/share/texmf/tex/latex/base/latin1.def))
(c:/platex/share/texmf/tex/latex/lilypond/titledefs.tex
(c:/platex/share/texmf/tex/latex/lilypond/feta20.tex))

LaTeX Warning: Unused global option(s):
    [compat2].

No file foo.aux.
(./foo.tex (c:/platex/share/texmf/tex/latex/lilypond/lilyponddefs.tex
(c:/platex/share/texmf/tex/latex/lilypond/feta20.tex)
(c:/platex/share/texmf/tex/latex/lilypond/lily-ps-defs.tex))

LaTeX Font Warning: Font shape `JY1/mc/m/sc' undefined
(Font)              using `JY1/mc/m/n' instead on input line 41.


LaTeX Font Warning: Font shape `JT1/mc/m/sc' undefined
(Font)              using `JT1/mc/m/n' instead on input line 41.

)
Overfull \vbox (0.7539pt too high) has occurred while \output is active
[1] (./foo.aux)

LaTeX Font Warning: Some font shapes were not available, defaults substituted.

 )
(see the transcript file for additional information)
Output written on foo.dvi (1 page, 1344 bytes).
Transcript written on foo.log.
bash-2.05b$ ls
foo.aux  foo.dvi  foo.latex  foo.log  foo.ly  foo.tex
bash-2.05b$ dvipsk foo.dvi
This is dvips(k) 5.94a p1.6 Copyright 2003 ASCII Corp.(www-ptex@ascii.co.jp)
based on dvips(k) 5.94a Copyright 2003 Radical Eye Software (www.radicaleye.com)

' TeX output 2004.05.02:1543' -> foo.ps
<texc.pro><music-drawing-routines.ps><texps.pro><special.pro>. [1]
bash-2.05b$ ls
foo.aux  foo.dvi  foo.latex  foo.log  foo.ly  foo.ps  foo.tex
bash-2.05b$

生成された foo.ps を GSview で開くと、次のように見える。

GSview の File メニューから Save As... を選択すると EPS ファイル等の形式で保存できる。 また、File メニューから Convert... を選択すると、JPEG, PNG 等の形式に変換できる。

LilyPond で日本語の歌詞を表示することは上述のように可能ではあるが、サポートされているわけではない。 実際、上記のログには気になる警告やエラーが表示されている。 日本語を使う必要があるのであれば LilyPond 以外のソフトウェアの使用も検討すべきである。

cf. LilyPond ver 2.0.1

音部記号 (Clef)

foo.ly の \clef treble を \clef bass へ変更すると、ト音記号がヘ音記号になる。 他にも "ハ音記号、アルト記号 (Alto Clef) "、" テノール記号 (Tenor Clef) " などもあるが、私が使う機会に巡り逢ったことはない。

名称 記法
ト音記号、ヴァイオリン記号 (Treble Clef) \clef treble
ヘ音記号、バス記号 (Bass Clef) \clef bass

正確には、ト音記号、ヘ音記号、ハ音記号というのは絵の形の名前。 ヴァイオリン記号、バス記号などが、絵の形と位置をユニークに定める名前。

cf. Clef (LilyPond User Manual)音部記号 - Wikipedia

調子記号 (Key signature)

調号とも呼ばれる。 五線譜の頭に b や # を表示する。 同じ絵に二つ名前があるので "\key c \major" と書いても "\key a \minor" と書いても同じ絵が表示される。 友達から長調か短調かを指定されず迷ったときは、とりあえず長調にしておけば世の中が明るくなる?!

長調 (Major Scale) 短調 (Minor Scale) 異名同音 記法
ハ長調 (C major) イ短調 (A minor)
\key c \major
\key a \minor
ト長調 (G major) ホ短調 (E minor)
\key g \major
\key e \minor
ニ長調 (D major) ロ短調 (B minor)
\key d \major
\key b \minor
イ長調 (A major) 嬰ヘ短調 (F# minor)
\key a \major
\key fis \minor
ホ長調 (E major) 嬰ハ短調 (C# minor)
\key e \major
\key cis \minor
ロ長調 (B major) 嬰ト短調 (G# minor) 変ハ長調、変イ短調 \key b \major
\key gis \minor
嬰ヘ長調 (F# major) 嬰ニ短調 (D# minor) 変ト長調、変ホ短調 \key fis \major
\key dis \minor
嬰ハ長調 (C# major) 嬰イ短調 (A# minor) 変ニ長調、変ロ短調 \key cis \major
\key ais \minor
ヘ長調 (F major) ニ短調 (D minor)
\key f \major
\key d \minor
変ロ長調 (Bb major) ト短調 (G minor)
\key bes \major
\key g \minor
変ホ長調 (Eb major) ハ短調 (C minor)
\key ees \major
\key c \minor
変イ長調 (Ab major) ヘ短調 (F minor)
\key aes \major
\key f \minor
変ニ長調 (Db major) 変ロ短調 (Bb minor) 嬰ハ長調、嬰イ短調 \key des \major
\key bes \minor
変ト長調 (Gb major) 変ホ短調 (Eb minor) 嬰ヘ長調、嬰ニ短調 \key ges \major
\key ees \minor
変ハ長調 (Cb major) 変イ短調 (Ab minor) ロ長調、嬰ト短調 \key ces \major
\key aes \minor

cf. Key signature (LilyPond User Manual)調 - WikipediaKey signature - Wikipedia

拍子記号 (Time signature)

\time 3/4 を適当に変更すると、四分の三拍子が適当な拍子に変更される。 こんな簡単なことに紙面を割くのは、ひとえに私が 4/4 を C と表示することを知らず、C を描くのに苦戦したからである。

拍子 記法
2/2 \time 2/2
2/4 \time 2/4
3/4 \time 3/4
4/4 \time 4/4
3/8 \time 3/8
6/8 \time 6/8
9/8 \time 9/8

cf. Time signature (LilyPond User Manual)

終止線 (Bar Lines)

終止線は自動的に描かれないので、明示的に指定する必要がある。 終止線は \bar "|." で描ける。 他にもいろいろな縦線を描けるが、繰り返しの絵などは \repeat を使うことが推奨される。

\score {
  \notes {
    \time 3/4
    \key c \major
    \clef treble
    c'4 d'4 e'4 | f'4 g'4 a'4 |
    \bar "|."
  }
  \paper { }
}

cf. Bar lines (LilyPond User Manual)

バーチェック (Bar Check)

小節毎に | で区切っておくと、音符の長さを書き間違った際、コンパイル時に指摘される。 例えば第 2 小節に 8 分音符が足りない場合には次のように表示される。

\score {
  \notes {
    \time 3/4
    \key c \major
    \clef treble
    c'4 d'4 e'4 | d'4 e'4 f'8 | a'4 b'4 c'4 |
    \bar "|."
  }
  \paper { }
}
bash-2.05b$ lilypond foo.ly
lilypond (GNU LilyPond) 2.0.1
Running usr...
Now processing: `foo.ly'
Parsing...
Interpreting music...
/cygdrive/e/data/m/foo/foo.ly:6:30: warning: barcheck failed at: 5/8:
    c'4 d'4 e'4 | d'4 e'4 f'8
                              | a'4 b'4 c'4 |
[3]
Preprocessing graphical objects...
Calculating line breaks...
paper output to `foo.tex'...


Analyzing foo.tex...
Running latex...
Running dvips...
Running ps2pdf...
DVI output to `foo.dvi'...
PDF output to `foo.pdf'...
PS output to `foo.ps'...
bash-2.05b$

cf. Bar check (LilyPond User Manual)

音符 (Notes)

待望の、オタマジャクシの描き方。 日本古来の呼び名はハニホヘトイロハでドレミファ... はイタリア式なんだそうな。 ちなみに英米式に CDEFGABC。 LilyPond ではドイツ式を用いる。 foo.ly の c'4 d'4 e'4 の部分を適当に変更すると、オタマジャクシ、もとい、音符が適当に並ぶ。

\score {
  \notes {
    \time 3/4
    \key c \major
    \clef treble
    b4 c'4 d'4 | e'4 f'4 g'4 | a'4 b'4 c''4 |
    \bar "|."
  }
  \paper { }
}
\score {
  \notes {
    \time 3/4
    \key c \major
    \clef bass
    c,4 c4 c'4 |
    \bar "|."
  }
  \paper { }
}
\score {
  \notes {
    \time 4/4
    \key c \major
    \clef treble
    c'1 | c'2 c'4 c'8 c'16 c'16 | c'2. c'4 | c'4. c'8 c'8. c'16 c'4 |
    \bar "|."
  }
  \paper { }
}
    r1 | r2 r4 r8 r16 r16 | r2. r4 | r4. r8 r8. r16 r4 |
    c'4 c'4 ~ c'4 c'4 | c'4 d'4 ( e'4 ) f'4 | g'4 ( f'4 e'4. d'8 ) |
\score {
  \notes {
    \time 4/4
    \key g \major
    \clef treble
    cis'4 cis'4 c'4 c'4 |
    c'4 ces'4 ces'4 c'4 |
    fis'4 fis'4 f'4 f'4 |
    cis'4 cis'4 cis'!4 cis'?4 |
    \bar "|."
  }
  \paper { }
}

何も言いません。悟って下さい。(笑) ちなみに私は描けるけど読めません。絵です。

……というわけで解説はなしで終わらせる予定だったのですが、それもなんなのでちょっとだけ。
ドレミファソラシドが cdefgabc になります。休符は r です。
アルファベットの右側に , を付けた数だけ、オクターブ下がります。
アルファベットの右側に ' を付けた数だけ、オクターブ上がります。
アルファベットの右側の数字が音の長さを表し、n ならば n 分音符になります。
アルファベットの右側の数字のとなりに . を書くと、音符の隣にも . が付きます。
隣り合う同じ音を線で結ぶときは、音の間に ~ を書きます。
違う音 and/or 3 つ以上の音を線で結ぶときは () でくくります。( は最初の音の後ろに書きます。
# は is、b は es です。# の i はイゲタの I ではないと思います。
互(の上下の横線がないやつ)は、元の音に戻ると勝手に付きます。
五線譜の頭に # や b があると、上述の例の f のようになります。

cf. Notes (LilyPond User Manual)音名 - Wikipedia

和音 (Chords)

和音を描くには、<> でアルファベットを括り、> の後ろに音の長さを指定する数字を書けば良い。

\score {
  \notes {
    \time 4/4
    \key c \major
    \clef treble
    <c' e' g'>4 <e' g' c''>4 ( <c' e' g'>4 <e' g' c''>4 ) |
    \bar "|."
  }
  \paper { }
}

cf. Chords (LilyPond User Manual)

和音名、コードネーム (Chord Names)

和音名 (コードネーム) を描くには、\context ChordNames \chords を利用する。最初の文字 (c とか f とか) を書き、長さを指定し、7 とか m とかを付けたいときは : と共に後ろに足せば良い。また、冒頭に空白を置くときは s1*2 などとする。

\score {
  <<
    \context ChordNames \chords { c2.*2 f2.:7 }
    \notes {
      \time 3/4
      \key c \major
      \clef treble
      b4 c'4 d'4 | e'4 f'4 g'4 | a'4 b'4 c''4 |
      \bar "|."
    }
  >>
  \paper { }
}

注) 音楽的におたまじゃくしとコードネームが矛盾しているのではないかという気がしないでもないのだが、お絵描きの授業なので良しとする。

cf. A lead sheet (LilyPond User Manual), Printing chord names (LilyPond User Manual)

連桁 (Beaming)

8 分音符等の旗は、自動的に繋がれる。 これは \autoBeamOff で無効にできる。 再度有効にするときは \autoBeamOn を利用する。 また、音符を [] で括ることで、自由に連桁できる。 [ は最初に繋げる音符の後ろに置く。

\score {
  \notes {
    \time 2/4
    \key c \major
    \clef treble
    c'8 c'8 c'8 c'8 | c'8 c'8 [ c'8 c'8 ] | \autoBeamOff c'8 c'8 c'8 c'8 | \break
    \autoBeamOn c'8 c'8 c'8. c'16 | \autoBeamOff c'8 c'8 c'8. c'16 | c'8 [ c'8 ] c'8. [ c'16 ]
    \bar "|."
  }
  \paper { }
}

cf. Beaming (LilyPond User Manual)

連符 (Tuplets)

世の中には、連符というものが存在するらしい。 その意味はともかく、\time 2/3 {} という形式で描くことができる。 2/3 は {} の中の音符が 3 つで、元の音符 2 個分の長さ、ということだと思う。

\score {
  \notes {
    \time 3/4
    \key c \major
    \clef treble
     c'4 c'4  \times 2/3 { c'8 c' c' } | r4 r4 \times 2/3 { r8 r r } |
    \bar "|."
  }
  \paper { }
}

cf. Tuplets (LilyPond User Manual)

装飾音符 (Grace Notes)

オタマジャクシの親子(?!)の描き方。 お願いですから、音楽的な意味なんて聞かないで下さい。

\score {
  \notes {
    \time 3/4
    \key c \major
    \clef treble
    c'4 \acciaccatura a'8 d'4 \appoggiatura b'8 e'4 |
    \bar "|."
  }
  \paper { }
}

cf. Grace notes (LilyPond User Manual)

改行 (Line breaking)

LilyPond は、楽譜が長くなると自動的に改行し次の五線譜に移る。 任意の場所で折り返したいときは \break と書けば良い。

\score {
  \notes {
    \time 3/4
    \key c \major
    \clef treble
    c'4 d'4 e'4 | \break
    f'4 g'4 a'4 |
    \bar "|."
  }
  \paper { }
}

小節の途中で折り返したいときは、\break の手前に目に見えない終止線 \bar "" を書く。

\score {
  \notes {
    \time 3/4
    \key c \major
    \clef treble
    c'4 d'4 e'4 | f'4 g'4 \bar "" \break
    a'4 |
    \bar "|."
  }
  \paper { }
}

cf. Line breaking (LilyPond User Manual)

合唱譜 (Combining music into compound expressions)

合唱のように、複数のパートを一つの紙に描くときは次のようにする。

\score {
  \context ChoirStaff \notes
  << \new Staff {
      \time 3/4
      \key c \major
      \clef treble
      c'4 d'4 e'4 |
      \bar "|."
    }
    \new Staff {
      \clef bass
      c4 d4 e4 |
    }
  >>
  \paper { }
}

途中から新たなパートが加わるときは次のように縁のない部分を R にし、最後の \paper にごにょごにょ書けば良い。 途中で抜けるときも同様に R にすれば省略される。

\score {
  \context ChoirStaff \notes
  << \new Staff {
      \time 3/4
      \key c \major
      \clef treble
      c'4 d'4 e'4 | \break
      a'4 b'4 c'4 |
      \bar "|."
    }
    \new Staff {
      \clef bass
      R2. |
      c4 d4 e4 |
    }
  >>
  \paper {
    \translator {
      \RemoveEmptyStaffContext
    }
  }
}

cf. Combining music into compound expressions (LilyPond User Manual)Hiding staves (LilyPond User Manual)

ポリフォニー (polyphony)

もちろん(?!)、一つの五線譜に二つのパートを描くこともできる。 最初に書いたパートは、オタマジャクシの尻尾が上を向き、次のパートはオタマジャクシの尻尾が下を向く。 休符を描くときは、最初のパートで r を用いて休符を描き、次のパートでは s を用いてスキップすると、休符が 1 つ描ける。 双方のパートで r を用いると、休符が上下に 2 つ並ぶ。

\score {
  \notes {
    \time 4/4
    \key c \major
    \clef treble
    <<{ c''4 c'4 a'4 r4 | } \\ { c'4 c''4 a'4 s4 | }>>
    \bar "|."
  }
  \paper { }
}

Polyphony (LilyPond User Manual)

弱拍、アウフタクト (Partial)

最初の小節が 1 拍目以外から始まるときは、\partial を利用し小節に存在する拍数を指定する。

\score {
  \notes {
    \time 3/4
    \key c \major
    \clef treble
    \partial 4*2
    c'4 d'4 | e'4 f'4 g'4 |
    \bar "|."
  }
  \paper { }
}
\score {
  \context ChoirStaff \notes
  << \new Staff {
      \time 3/4
      \key c \major
      \clef treble
      \partial 4
      c'4 | d'4 e'4 f'4 |
      \bar "|."
    }
    \new Staff {
      \clef bass
      c4 | d4 e4 f4 |
    }
  >>
  \paper { }
}

cf. Partial measures (LilyPond User Manual)

繰り返し (Repeat)

繰り返す部分を \repeat volta n { } で括ると n 回繰り返したくなる絵が描ける。 途中で分岐する際は \alternative を利用する。 終止線 \bar "|." を指定すると、繰り返しの記号が終止線で上書きされてしまい、繰り返しの記号が表示されなくなるので注意。

\score {
  \notes {
    \time 3/4
    \key c \major
    \clef treble
    \repeat volta 2 { c'4 d'4 e'4 | }
  }
  \paper { }
}
\score {
  \notes {
    \time 3/4
    \key c \major
    \clef treble
    c'4 d'4 e'4 | \repeat volta 2 { f'4 g'4 a'4 | }
  }
  \paper { }
}
\score {
  \notes {
    \time 3/4
    \key c \major
    \clef treble
    c'4 d'4 e'4 | \repeat volta 3 { f'4 g'4 a'4 | } \alternative { { c'4 c'4 c'4 | } { a'4 a'4 a'4 | } }
    \bar "|."
  }
  \paper { }
}

妙な絵を描きたくなったら、強引に(?!)描くこともできる。

\score {
  \notes {
    \time 3/4
    \key c \major
    \clef treble
    c'4 d'4 e'4 |
    \property Score.repeatCommands = #'((volta "1 3")) f'4 g'4 a'4 \property Score.repeatCommands = #'((volta #f)) |
    b'4 c''4 d''4 | \bar ":|" \break
    \property Score.repeatCommands = #'((volta "2 4")) c'4 d'4 e'4 \property Score.repeatCommands = #'((volta #f)) |
    f'4 g'4 a'4 |
    \bar "|."
  }
  \paper { }
}

cf. Repeat syntax (LilyPond User Manual)

強弱記号 (Dynamic Marks)

ピアノやフォルテは ^\p や ^\f で描けます。 ^ を付けないと、下に描かれます。

\score {
  \notes {
    \time 3/4
    \key c \major
    \clef treble
    s1*0^\p
    c'4 d'4\f e'4^\mp |
    \bar "|."
  }
  \paper { }
}

s はスキップの記号ですが *0 をすることで s 自体は無視され、s を書いた場所にピアノが挿入されてます。

cf. Dynamics (LilyPond User Manual)

クレッシェンド、デクレッションド (Crescendo, Decrescendo)

クレッシェンドは ^\< で始まり \! で終わります。 デクレッシェンドは ^\> で始まります。 ^ がないと、下に描かれます。 始めと終わりの書き方は、スラーと一緒です。

\score {
  \notes {
    \time 3/4
    \key c \major
    \clef treble
    c'4 d'4^\< e'4 | f'4\! g'4\> a'4 | b'4 c''4\! r4 |
    \bar "|."
  }
  \paper { }
}

cf. Dynamics (LilyPond User Manual)

調音 (Articulations)

スタッカート、テヌート、アクセント、フェルマータは、それぞれ次のように描く。 フェルマータの ^ を取れば、音符の下に描かれるようになる。

\score {
  \notes {
    \time 4/4
    \key c \major
    \clef treble
    c'4-. d'4-- e'4-> f'4^\fermata |
    \bar "|."
  }
  \paper { }
}

cf. Articulations (LilyPond User Manual)

息継ぎ (Breath)

息継ぎのマークは次のように挿入できる。

\score {
  \notes {
    \time 3/4
    \key c \major
    \clef treble
    c'4 \breathe d'4 e'4 \mark \markup { \musicglyph #"scripts-upedaltoe" } |
    f'4 \mark \markup { \musicglyph #"scripts-upedaltoe" } g'4 a'4 |
    \bar "|."
  }
  \paper { }
}

cf. Breath marks (LilyPond User Manual)

楽譜への書き込み (Text scripts, Text markup)

楽譜に文字を書き込むには 2 つの方法がある。 簡単なものと、複雑なものである。 前者は "" で括った文字列を書けば良い。後者は \markup を用いる。 後者では \italic, \bold, \column などが利用できる。 両者とも冒頭に ^ を書けば五線譜の上に描かれ、_ を書けば五線譜の下に描かれる。

\score {
  \notes {
    \time 3/4
    \key c \major
    \clef treble
    c'4^"foo" d'4_"bar" e'4^\markup{ \italic baz } | f'4_\markup { \bold aaa } g'4^\markup { \column < 1 2 " " 3 > } a'4 |
    \bar "|."
  }
  \paper { }
}

cf. Text scripts (LilyPond User Manual), Text markup (LilyPond User Manual)

曲名、作曲者

曲名、作曲者などを表示するには、次のように foo.ly にヘッダを加える必要がある。

\header {
  title = "Title"
  subtitle = "Subtitle"
  poet = "Poet"
  composer = "Composer"
  tagline = "Tagline"
}
\score {
  \notes {
    \time 3/4
    \key c \major
    \clef treble
    c'4 d'4 e'4 |
    \bar "|."
  }
  \paper { }
}

Tagling は、ページ下部に表示される。

cf. Titling layout (LilyPond User Manual)

歌詞 (Printing lyrics, Entering lyrics)

歌詞を描くには、例えば次のようにすれば良い。詳細は LilyPond User Manual 参照。

\score {
  \notes {
    \addlyrics
    \new Staff {
      \time 3/4
      \key c \major
      \clef treble
      c'4 d'4 e'4 |
      \bar "|."
    }
    \new Lyrics \lyrics { C D E }
  }
  \paper { }
}
\score {
  \context ChoirStaff \notes
  << \new Lyrics \lyrics { C'' D'' E'' }
    \new Staff {
      \time 3/4
      \key c \major
      \clef treble
      <<{ c''4 d''4 e''4 | } \\ { c'4 d'4 e'4 | }>>
      \bar "|."
    }
    \new Lyrics \lyrics { C' D' E' }
    \new Lyrics \lyrics { F G A }
    \new Staff {
      \clef bass
      <<{ f4 g4 a4 } \\ { c4 d4 e4 | }>>
    }
    \new Lyrics \lyrics { C D E }
  >>
  \paper { }
}

cf. Printing lyrics (LilyPond User Manual), Entering lyrics (LilyPond User Manual)

PNG ファイルの生成

bash 上で LilyPond を実行する際、--png オプションを利用すると、PNG ファイルが生成されるようになる。

bash-2.05b$ ls
foo.ly
bash-2.05b$ lilypond --png foo.ly
lilypond (GNU LilyPond) 2.0.1
Running usr...
Now processing: `foo.ly'
Parsing...
Interpreting music...[2]
Preprocessing graphical objects...
Calculating line breaks... [2]
paper output to `foo.tex'...


Analyzing foo.tex...
Running latex...
Running dvips...
Running ps2pdf...
Running gs...
DVI output to `foo.dvi'...
PDF output to `foo.pdf'...
PS output to `foo.ps'...
PNG output to `foo-page1.png'...
bash-2.05b$ ls
foo-page1.png  foo.dvi  foo.ly  foo.pdf  foo.ps
bash-2.05b$

cf. Invoking LilyPond (LilyPond User Manual)

MIDI フィアルの生成

foo.ly の \score の最後に \midi { } を追加すると、MIDI も生成されるようになる。

--- foo.ly ---
\score {
  \notes {
    \time 3/4
    \key c \major
    \clef treble
    c'4 d'4 e'4 |
    \bar "|."
  }
  \paper { }
  \midi { }
}
---

bash 上で LilyPond を実行すると、MIDI ファイルも作成されていることがわかる。

bash-2.05b$ ls
foo.ly
bash-2.05b$ lilypond foo.ly
lilypond (GNU LilyPond) 2.0.1
Running usr...
Now processing: `foo.ly'
Parsing...
Interpreting music...[2]
Preprocessing graphical objects...
Calculating line breaks... [2]
paper output to `foo.tex'...

Interpreting music...
MIDI output to `foo.midi'...
Track ...

Analyzing foo.tex...
Running latex...
Running dvips...
Running ps2pdf...
DVI output to `foo.dvi'...
MIDI output to `foo.midi'...
PDF output to `foo.pdf'...
PS output to `foo.ps'...
bash-2.05b$ ls
foo.dvi  foo.ly  foo.midi  foo.pdf  foo.ps
bash-2.05b$

cf. Percussion MIDI output (LilyPond User Manual)


良く見るエラー

PDF ファイルを Adobe Reader で閲覧中にリビルド

bash-2.05b$ lilypond foo.ly
lilypond (GNU LilyPond) 2.0.1
Running usr...
Now processing: `foo.ly'
Parsing...
Interpreting music...[2]
Preprocessing graphical objects...
Calculating line breaks... [2]
paper output to `foo.tex'...


Analyzing foo.tex...
Running latex...
Running dvips...
Running ps2pdf...
DVI output to `foo.dvi'...
Traceback (most recent call last):
  File "/usr/bin/lilypond", line 975, in ?
    ly.cp_to_dir ('.*\.%s$' % ext, outdir)
  File "/usr/share/lilypond/2.0.1/python/lilylib.py", line 362, in cp_to_dir
    map (lambda x, d=dir: shutil.copy2 (x, os.path.join (d, x)), files)
  File "/usr/share/lilypond/2.0.1/python/lilylib.py", line 362, in <lambda>
    map (lambda x, d=dir: shutil.copy2 (x, os.path.join (d, x)), files)
  File "/usr/lib/python2.3/shutil.py", line 82, in copy2
    copyfile(src, dst)
  File "/usr/lib/python2.3/shutil.py", line 38, in copyfile
    fdst = open(dst, 'wb')
IOError: [Errno 13] Permission denied: '/cygdrive/h/data/20040214/m/foo/foo.pdf'
bash-2.05b$

対処方法
PDF ファイルを一旦閉じてから、再度
$ lilypond foo.ly
を実行する。

バーチェックの | のつもりで { を入力

bash-2.05b$ lilypond --png foo.ly
lilypond (GNU LilyPond) 2.0.1
Running usr...
Now processing: `foo.ly'
Parsing...
/cygdrive/e/data/m/jpg/foo.ly:30:5: error: syntax error, unexpected M
OREMORE:
    >
     >

/cygdrive/e/data/m/jpg/foo.ly:37:6: error: syntax error, unexpected M
IDI:
  \mid
      i { \tempo 4=90 }

/cygdrive/e/data/m/jpg/foo.ly:38:7: error: syntax error, unexpected P
APER:
  \pape
       r {}


/cygdrive/e/data/m/jpg/foo.ly:12:5: warning: Braces don't match:
\scor
     e {


lilypond: error: LilyPond failed on input file foo (exit status 1)
lilypond: warning: Running LilyPond failed. Rerun with --verbose for a trace.
Traceback (most recent call last):
  File "/usr/bin/lilypond", line 933, in ?
    resolution = preview_resolution
  File "/usr/share/lilypond/2.0.1/python/lilylib.py", line 455, in make_ps_image
s
    header = open (ps_name).read (1024)
IOError: [Errno 2] No such file or directory: 'foo.ps'
bash-2.05b$

対処方法
{ を | に直す。

コードネームを大文字で入力

bash-2.05b$ lilypond foo.ly
lilypond (GNU LilyPond) 2.0.1
Running usr...
Now processing: `foo.ly'
Parsing...
/cygdrive/x/foo/foo.ly:3:40: error: Have to be in Lyric mode for lyrics:
    \context ChordNames \chords { C2.*2
                                        f2.:7 }



lilypond: error: LilyPond failed on input file foo (exit status 1)
lilypond: warning: Running LilyPond failed. Rerun with --verbose for a trace.
bash-2.05b$

対処方法
コードネームを小文字で入力する。


(C) 2004-2005 oishi@cam.hi-ho.ne.jp