3.5.2 MIDI ブロック

MIDI 出力が必要な場合、score 内部に \midi ブロックを置く必要があります。MIDI ブロックはレイアウト ブロックに似ていますが、それよりも単純です。しばしば、\midi ブロックは空のままですが、コンテキストの再編成 – 新しいコンテキスト定義やプロパティの値を設定するためのコード – を保持することもできます。例えば以下の例は、テンポ指示を譜刻することなしに、MIDI ファイルの初期テンポを設定します:

\score {
  ...music...
  \midi {
    \context {
      \Score
      tempoWholesPerMinute = #(ly:make-moment 72 4)
    }
  }
}

この例では、テンポは 1 分間あたり 72 個の 4 分音符にセットされています。この種のテンポ指定では引数として付点音符の長さをとることはできません。付点音符の長さを指定する必要がある場合、その付点音符をより小さな単位に分解します。例えば、1 分間に 90 個の付点 4 分音符のテンポは、1 分間に 270 個の 8 分音符として指定することができます:

tempoWholesPerMinute = #(ly:make-moment 270 8)

\midi ブロック内部でのコンテキスト定義は、\layout ブロック内部でのコンテキスト定義の構文とまったく同じです。サウンドのモジュールへの翻訳は performer と呼ばれます。MIDI 出力のためのコンテキストは ‘../ly/performer-init.ly’ で定義されています – その他の情報源 を参照してください。例えば、MIDI 出力から強弱記号の効果を削除するには、\midi{ } ブロックの中に以下のコードを挿入します。

\midi {
  ...
  \context {
    \Voice
    \remove "Dynamic_performer"
  }
}

MIDI 出力は、\score コマンドで定義された score ブロック内部に \midi ブロックが存在する場合にのみ生成されます。\midi ブロックが明示的にインスタンス化された score コンテキストの中 (例えば、\new Score ブロックの中) に配置された場合、その LilyPond ファイルはエラーになります。これを解決するには、\new Score\midi コマンドを \score ブロックの中に置きます。

\score {
  \new Score { …notes… }
  \midi { }
}

他の言語: English, deutsch, español

LilyPond — 記譜法リファレンス

inserted by FC2 system