本文書は、パソコンオタクで音楽はさっぱりのあなたが、 音楽オタクでパソコンはさっぱりの友人から、「手書きの楽譜をパソコン清書するなんて楽勝だよね?」と声をかけられたときに、 はずみで「もちろん!」と請け合ってしまったというようなシチュエーションで最大の効果を発揮します。 難しい話は LilyPond User Manual に譲り、 ここでは、ニャンと鳴かせるためにポンと蹴る方法の紹介に留めます。
入門という名の備忘録
良く見るエラー
参考文献: LilyPond User Manual
注意: 謙遜ではなく、本当に音楽について何も知らない人間が作成したページなので、おかしな点も多々存在するかと思います。 間違いに気付かれた方や違和感を感じた方は oishi@cam.hi-ho.ne.jp へ連絡して頂ければ幸いです。
謝辞: 本ページを作成するにあたり、渡邉さんと賀谷さんから多くの有用なアドバイスを頂きました。ここにお礼を申し上げるとともに、感謝の意を表します。
入門という名の備忘録
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 のインストール手順
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
ただし、日本語を使用した楽譜を作成しようと試みると PostScript File の楽譜しか生成されないので、多くの場合は適宜 Ghostscript や GSview を用いて、楽譜を 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. W32TeX、 LilyPond Language ver2.4.2 (LilyPond and pTeX - 日本語組版 -)
なにはなくとも "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 以外のソフトウェアの使用も検討すべきである。
foo.ly の \clef treble を \clef bass へ変更すると、ト音記号がヘ音記号になる。 他にも "ハ音記号、アルト記号 (Alto Clef) "、" テノール記号 (Tenor Clef) " などもあるが、私が使う機会に巡り逢ったことはない。
絵 | 名称 | 記法 |
![]() |
ト音記号、ヴァイオリン記号 (Treble Clef) | \clef treble |
![]() |
ヘ音記号、バス記号 (Bass Clef) | \clef bass |
正確には、ト音記号、ヘ音記号、ハ音記号というのは絵の形の名前。 ヴァイオリン記号、バス記号などが、絵の形と位置をユニークに定める名前。
cf. Clef (LilyPond User Manual)、 音部記号 - Wikipedia
調号とも呼ばれる。 五線譜の頭に 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)、 調 - Wikipedia、 Key signature - Wikipedia
\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 "|." で描ける。 他にもいろいろな縦線を描けるが、繰り返しの絵などは \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)
小節毎に | で区切っておくと、音符の長さを書き間違った際、コンパイル時に指摘される。 例えば第 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)
待望の、オタマジャクシの描き方。 日本古来の呼び名はハニホヘトイロハでドレミファ... はイタリア式なんだそうな。 ちなみに英米式に 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
和音を描くには、<> でアルファベットを括り、> の後ろに音の長さを指定する数字を書けば良い。
\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)
和音名 (コードネーム) を描くには、\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)
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)
世の中には、連符というものが存在するらしい。 その意味はともかく、\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)
オタマジャクシの親子(?!)の描き方。 お願いですから、音楽的な意味なんて聞かないで下さい。
\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)
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)
合唱のように、複数のパートを一つの紙に描くときは次のようにする。
\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)
もちろん(?!)、一つの五線譜に二つのパートを描くこともできる。 最初に書いたパートは、オタマジャクシの尻尾が上を向き、次のパートはオタマジャクシの尻尾が下を向く。 休符を描くときは、最初のパートで 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)
最初の小節が 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 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)
ピアノやフォルテは ^\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)
クレッシェンドは ^\< で始まり \! で終わります。 デクレッシェンドは ^\> で始まります。 ^ がないと、下に描かれます。 始めと終わりの書き方は、スラーと一緒です。
\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)
スタッカート、テヌート、アクセント、フェルマータは、それぞれ次のように描く。 フェルマータの ^ を取れば、音符の下に描かれるようになる。
\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)
息継ぎのマークは次のように挿入できる。
\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)
楽譜に文字を書き込むには 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)
歌詞を描くには、例えば次のようにすれば良い。詳細は 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)
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)
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)
良く見るエラー
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$
対処方法
コードネームを小文字で入力する。