[ << 基礎となるコンセプト ] | [Top][Contents][Index] | [ 出力を調整する >> ] |
[ < LilyPond 入力ファイルの仕組み ] | [ Up : LilyPond 入力ファイルの仕組み ] | [ Score は (単一の) 複合的な音楽表記 > ] |
4.1.1 LilyPond ファイル構造の紹介
LilyPond 入力ファイルの基本例は以下のようなものです:
\version "2.25.22" \header { } \score { … 複合音楽表記 … % すべての音楽がここに入ります! \layout { } \midi { } }
基本パターンは本当にさまざまです。しかしながら、この例はスタート地点として役に立ちます。
これまで、あなたが見てきた例では \score {}
コマンドを使用していませんでした。その理由は、あなたが LilyPond に与えたのが簡単な入力であった場合、LilyPond が自動的に追加のコマンドを付け加えるからです。LilyPond は以下のような入力:
\relative { c''4 a d c }
を以下を簡略表記したものとして扱います:
\book { \score { \new Staff { \new Voice { \relative { c''4 a b c } } } \layout { } } }
言い換えると、入力が保持しているのが単一の音楽表記である場合、LilyPond はまるでその音楽表記が上で示されたコマンドで包まれているかのように解釈します。
一言警告! LilyPond ドキュメントの中にある多くの例では、
\new Staff
と \new Voice
コマンドは暗黙的に作成されるために省略されています。簡単な例ではそれでうまくいきますが、より複雑な例の場合
– 特に追加のコマンドが使用される場合 –
コンテキストの暗黙的な作成は予想外の結果となる可能性があります。多分、予期しない余分な譜が作成されるでしょう。コンテキストを明示的に作成する方法は コンテキストとエングラーバ で説明されています。
Note: 数行以上の音楽を入力する場合、常に譜とボイスを明示的に作成したほうが賢明です。
今度は最初の例に戻って、\score
コマンドについて検証します。他のことはデフォルトのままにしておきます。
\score
ブロックは常にただ 1 つの音楽表記を保持していなければなりません。音楽表記は単一の音符である場合もありますし、以下のような巨大な複合表記である場合もあるということを覚えておいてください:
{ \new StaffGroup << … ワーグナーのオペラの楽譜全体がここに入ります … >> }
すべては { … }
の内部にあるため、それは 1 つの音楽表記であるとカウントされます。
以前見てきたように、\score
ブロックは他のものを含む可能性もあります。例えば以下のように:
\score { { c'4 a b c' } \header { } \layout { } \midi { } }
これら 3 つのコマンド – \header
, \layout
, \midi
– は特別なものであるということに注意してください:
バックスラッシュ (\
) で始まる他の多くのコマンドとは異なり、これらは音楽表記 ではなく、何らかの音楽表記の一部でもありません。そのため、これらは \score
ブロックの中に置くこともできますし、外部に置くこともできます。実際、これらのコマンドは一般的に \score
ブロックの外側に置かれます
– 例えば、このセクションの最初の例のように \header
はしばしば \score
コマンドの上に置かれます。
以前は見なかった他の 2 つのコマンドは \layout { }
と
\midi { }
です。それらが上記のように記述された場合、LilyPond はそれぞれ譜刻された楽譜と
MIDI 出力を作り出します。それらは記譜法リファレンスの Score layout と
Creating MIDI output で完全に記述されています。
あなたは複数の \score
ブロックを記述するかもしれません。それらはそれぞれ別々の楽譜として扱われますが、それらは結合されて単一の出力ファイルに収められます。\book
コマンドは必要ありません – このコマンドは暗黙的に 1 つ作成されます。しかしながら、あなたが 1 つの .ly
ファイルから別々に分かれた出力ファイルを作成しようとするのなら、それぞれのセクションを異なる出力ファイルに分けるために \book
コマンドが使用されます:
各 \book
ブロックは別々の出力ファイルを作り出します。
要約:
各 \book
ブロックは別々の出力ファイル (つまり PDF ファイル) を作成します。あなたが明示的に \book
コマンドを記述しなかった場合、LilyPond は暗黙的に入力コードを \book
ブロックで包み込みます。
各 \score
ブロックは \book
ブロック内部で別々の音楽表記のチャンク (塊) となります。
各 \layout
ブロックはそのブロックを含んでいる \score
ブロックや
\book
ブロックに影響を与えます –
つまり、ある \score
ブロックの内部にある \layout
ブロックはその \score
ブロックにだけ影響を与え、\score
ブロックの外部にある (それゆえ、明示的あるいは暗黙的に \book
ブロックの中にある) \layout
ブロックはその \book
ブロックの中にあるすべての \score
に影響を与えます。
詳細は、Multiple scores in a book を参照してください。
もう一つの重要な簡略表記は変数を定義することです。すべてのテンプレートがこれを使っています:
melody = \relative { c'4 a b c } \score { \melody }
LilyPond がこのファイルを見ると、melody
の値
(イコール記号の後にあるすべて) を記憶し、\melody
と記述された箇所すべてにその値を挿入します。変数の名前について特別なことは何もありません
– 変数名は melody
, global
, keyTime
, pianorighthand
などとなります。変数名はアルファベットだけで構成されていて、LilyPond コマンド名と異なっている限りは、ほぼどんな名前でも使用できるということを覚えておいてください。詳細は、変数と関数を用いて入力の手間を省く を参照してください。変数名の厳密な制限については、File structure で詳述されています。
参照
入力フォーマットの完全な定義は、File structure を参照してください。
[ << 基礎となるコンセプト ] | [Top][Contents][Index] | [ 出力を調整する >> ] |
[ < LilyPond 入力ファイルの仕組み ] | [ Up : LilyPond 入力ファイルの仕組み ] | [ Score は (単一の) 複合的な音楽表記 > ] |