LilyPond 記譜法リファレンス: 5.1.4 コンテキストのプラグインを変更する

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

記譜コンテキスト (`Score` や `Staff` のような) はプロパティを保存するだけなく、‘エングラーバ’ と呼ばれる記譜要素を作成するプラグインを保持します。例えば、`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_engraver` と `Clef_engraver` を削除する簡単な例を示します:

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

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

次の例は、ある実用的な応用です。通常、小節線と拍子記号は楽譜全体で同期されます。これは `Timing_translator` と `Default_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
>         }
>       }
>     }

#### 既知の問題と警告

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

以下の順序は重要です:

- 通常、`Bar_engraver` を最初にする必要があります。
- `New_fingering_engraver` を `Script_column_engraver` の前に配置する必要があります。
- `Timing_translator` を `Bar_number_engraver` の前に配置する必要があります。

#### 参照

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

#### LilyPond — 記譜法リファレンス v2.24.4 (安定版).

- 2. 専門的な記譜法
- 3. 入出力全般
- 4. スペースの問題
- 5. デフォルトを変更する
- A. 付表
- B. カンニング ペーパー
- C. GNU Free Documentation License
- D. LilyPond コマンド インデックス
- E. LilyPond インデックス