5.1.4 コンテキストのプラグインを変更する

記譜コンテキスト (ScoreStaff のような) はプロパティを保存するだけなく、‘エングラーバ’ と呼ばれる記譜要素を作成するプラグインを保持します。例えば、Voice コンテキストは Note_head_engraver を保持し、Staff コンテキストは Key_engraver を保持します。

各プラグインについての説明は、 Engravers and Performers. を参照してください。 Contexts の中にある各コンテキストについての説明では、そのコンテキストで使用されるエングラーバがリストアップされています。

これらのプラグインを入れ換えると有用な場合があります。プラグインを入れ換えるには、新たに作成するコンテキストを \new あるいは \context で開始し、そのコンテキストを以下のように変更します:

\new context \with {
  \consists …
  \consists …
  \remove …
  \remove …
  etc.
}
{
  …music…
}

ここで、… はエングラーバの名前になります。ここで、Staff コンテキストから Time_signature_engraverClef_engraver を削除する簡単な例を示します:

<<
  \new Staff \relative {
    f'2 g
  }
  \new Staff \with {
     \remove Time_signature_engraver
     \remove Clef_engraver
  } \relative {
    f'2 g2
  }
>>

[image of music]

2 番目の譜には、拍子記号と音部記号がありません。この方法は、オブジェクトを不可視にするよりも乱暴な方法です。なぜなら、譜全体に影響を与えるからです。さらに、望む望まないに係わらず、この方法はスペースにも影響を与えます。オブジェクトを消すもっと洗練された方法については、 オブジェクトの可視性と色 を参照してください。

次の例は、ある実用的な応用です。通常、小節線と拍子記号は楽譜全体で同期されます。これは Timing_translatorDefault_bar_line_engraver によって行われます。このプラグインは拍子記号の管理や、小節内の配置の管理などを行います。これらのエングラーバを Score コンテキストから Staff コンテキストへ異動させることにより、楽譜の各譜に独自の拍子記号を持たせることが可能になります。

\score {
  <<
    \new Staff \with {
      \consists Timing_translator
    }
    \relative {
        \time 3/4
        c''4 c c c c c
    }
  \new Staff \with {
    \consists Timing_translator
  }
  \relative {
      \time 2/4
      c''4 c c c c c
  }
>>
\layout {
  \context {
    \Score
    \remove Timing_translator
    }
  }
}

[image of music]

既知の問題と警告

エングラーバを指定する順序は、エングラーバが処理を行う順序です。通常、エングラーバが指定される順序は問題にはなりません。しかしながら、いくつかの特殊なケースでは、この順序が重要になります。例えば、あるエングラーバがプロパティを記述して、それを他のエングラーバが読む場合、あるいは、あるエングラーバがグラフィカル オブジェクトを作成し、それを他のエングラーバが処理しなければならない場合です。

以下の順序は重要です:

参照

インストールされているファイル: ‘ly/engraver-init.ly


LilyPond — 記譜法リファレンス v2.23.82 (開発版).