LilyPond 記譜法リファレンス: 5.1.5 コンテキストのデフォルト設定を変更する

### 5.1.5 コンテキストのデフォルト設定を変更する

プロパティを変更する で説明したように、コンテキストとグラフィカル オブジェクトのプロパティを `\set` コマンドや `\override` コマンドで変更することができます。これらのコマンドは音楽イベントを生成して、楽譜処理中にコマンドが出現するポイントで変更に効果を発揮させます。

対照的に、このセクションではコンテキストが作成された時点でコンテキストとグラフィカル オブジェクトのプロパティの デフォルト 値を変更する方法を説明します。これを行う方法は 2 つあります。1 つはある特定のタイプの全コンテキストのデフォルト値を変更する方法で、もう 1 つはただ 1 つのコンテキストのインスタンスのデフォルト値を変更する方法です。

#### 同じタイプの全コンテキストを変更する

`Score`, `Staff`, `Voice`, その他のコンテキストにおいてデフォルトで使用される譜刻のためのコンテキスト設定は、`\layout` ブロックの中の`\context` ブロックで指定することができます。`\layout` ブロックは、それを適用する `\score` ブロックの中で、かつ、音楽表記の後に配置する必要があります。

譜刻ではなく MIDI 出力に関する設定をする場合は、`\midi` ブロックに別々に指定する必要があります (出力定義 - コンテキストの青写真を参照してください)。

>     \layout {
>       \context {
>         \Voice
>         [すべての Voice コンテキストのコンテキスト設定]
>       }
>       \context {
>         \Staff
>         [context settings for all Staff contexts]
>       }
>     }

以下のタイプの設定を指定することができます:

- `\override` コマンド – コンテキスト名を省略します

  >     \score {
  >       \relative {
  >         a'4^"Thicker stems" a a a
  >         a4 a a\ff a
  >       }
  >       \layout {
  >         \context {
  >           \Staff
  >           \override Stem.thickness = #4.0
  >         }
  >       }
  >     }

- コンテキスト プロパティを直接設定します

  >     \score {
  >       \relative {
  >         a'4^"Smaller font" a a a
  >         a4 a a\ff a
  >       }
  >       \layout {
  >         \context {
  >           \Staff
  >           fontSize = #-4
  >         }
  >       }
  >     }

- `\dynamicUp` や `\accidentalStyle dodecaphonic` のような音楽表記等、あらかじめ定義されているコマンド

  >     \score {
  >       \relative {
  >         a'4^"Dynamics above" a a a
  >         a4 a a\ff a
  >       }
  >       \layout {
  >         \context {
  >           \Voice
  >           \dynamicUp
  >         }
  >         \context {
  >           \Staff
  >           \accidentalStyle dodecaphonic
  >         }
  >       }
  >     }

- `\with` ブロックを有するユーザ定義変数 – `\with` ブロックの詳細は 指定したコンテキストだけを変更する を参照してください。

  >     StaffDefaults = \with {
  >       fontSize = #-4
  >     }

  >     \score {
  >       \new Staff {
  >         \relative {
  >           a'4^"Smaller font" a a a
  >           a4 a a a
  >         }
  >       }
  >       \layout {
  >         \context {
  >           \Staff
  >           \StaffDefaults
  >         }
  >       }
  >     }

プロパティ設定コマンドは、`\context` ブロックで囲まずに、`\layout` ブロックの中に配置することができます。そのような設定は、指定されたタイプの任意のコンテキストの開始時にプロパティ設定コマンドをインクルードするのと等価です。コンテキストを指定しない場合、すべての 下位コンテキストに影響を与えます – 下位コンテキスト - ボイス を参照してください。`\layout` ブロックの中でのプロパティ設定コマンドの構文は、音楽ストリームの中で同じコマンドを記述するのと同じです。

>     \score {
>       \new Staff {
>         \relative {
>           a'4^"Smaller font" a a a
>           a4 a a a
>         }
>       }
>       \layout {
>         \accidentalStyle dodecaphonic
>         \set fontSize = #-4
>         \override Voice.Stem.thickness = #4.0
>       }
>     }

#### 指定したコンテキストだけを変更する

`\with` ブロックで指定したコンテキスト インスタンスのコンテキスト プロパティだけを変更することができます。他の全ての同じタイプのコンテキスト インスタンスは、LilyPond に組み込まれてスコープ内の `\layout` ブロックによって変更されたデフォルト設定のままです。`\with` ブロックは `\new` context-type コマンドの直後に配置する必要があります:

>     \new Staff \with { [このコンテキスト インスタンスだけに適用されるコンテキスト設定] }
>     {
>       …
>     }

あるいは、もし入力モードを指定するような簡略記法のコマンド (例えば `\chordmode` の代わりに `\chords` を使うなど) を用いて音楽を入力する場合、`\with` をそのようなコマンドのすぐ後に配置する必要があります:

>     \chords \with { [この (暗黙的) コンテキスト インスタンスだけに適用されるコンテキスト設定] }
>     {
>       …
>     }

このような記法によって作られる暗黙的なコンテキストが変更されます。 これは、同様な入力モードを指定する簡略記法のコマンドにも当てはまります (`\drums`, `\figures`)。入力モード を参照してください。

`\with` ブロックで行われるコンテキストの変更は音楽の内部にあるため、出力定義内での変更とは異なり、全ての 出力 (楽譜と MIDI の両方) に影響が及びます。

以下のタイプの設定を指定することができます:

- `\override` コマンド – コンテキスト名を省略します

  >     \score {
  >       \new Staff {
  >         \new Voice
  >         \with {
  >           \override Stem.thickness = #4.0
  >         }
  >         {
  >           \relative {
  >             a'4^"Thick stems" a a a
  >             a4 a a a
  >           }
  >         }
  >       }
  >     }

- コンテキスト プロパティを直接設定します

  >     \score {
  >       <<
  >         \new Staff {
  >           \relative {
  >             a'4^"Default font" a a a
  >             a4 a a a
  >           }
  >         }
  >         \new Staff
  >         \with { fontSize = #-4 }
  >         {
  >           \relative {
  >             a'4^"Smaller font" a a a
  >             a4 a a a
  >           }
  >         }
  >       >>
  >     }

- `\dynamicUp` 等のあらかじめ定義されているコマンド

  >     \score {
  >       <<
  >         \new Staff {
  >           \new Voice {
  >             \relative {
  >               a'4^"Dynamics below" a a a
  >               a4 a a\ff a
  >             }
  >           }
  >         }
  >         \new Staff \with { \accidentalStyle dodecaphonic }
  >         {
  >           \new Voice \with { \dynamicUp }
  >           {
  >             \relative {
  >               a'4^"Dynamics above" a a a
  >               a4 a a\ff a
  >             }
  >           }
  >         }
  >       >>
  >     }

#### 参照

記譜法リファレンス: 入力モード

#### 適用順序

ある特定のタイミングで適用されるプロパティの値は以下のように決定されます:

- 入力ストリームの中の `\override` コマンドや `\set` コマンドが ある場合、その値が用いられます。
- さもなければ、コンテキスト初期宣言の `\with` から取得したデフォルト値が用いられます。
- さもなければ、`\layout` ブロックや `\midi` ブロックの中にある直近で適切な `\context` ブロックから取得したデフォルト値が用いられます。
- さもなければ、LilyPond の組み込みデフォルト値が用いられます。

#### 参照

学習マニュアル: Modifying context properties

記譜法リファレンス: コンテキストの説明, 下位コンテキスト - ボイス, `\set` コマンド, `\override` コマンド, `\layout` ブロック

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

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