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 layoutCreating 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 を参照してください。


GNU LilyPond 学習マニュアル v2.25.22 (development-branch).