GNU LilyPond – Manuel de notation: 5.1.7 Ordonnancement des contextes

### 5.1.7 Ordonnancement des contextes

Les contextes viennent en principe se positionner selon leur ordre d’apparition dans le fichier source. Lorsque plusieurs contextes sont imbriqués, le contexte englobant supportera les différents contextes mentionnés dans le fichier source, à la stricte condition qu’ils soient dûment « agréés ». Les contextes imbriqués qui ne font pas partie de la « liste d’agréments » du contexte englobant se retrouveront en dessous de celui-ci au lieu d’y être imbriqués.

La liste des « agréments » d’un contexte se gère à l’aide des instructions `\accepts` ou `\denies` – `\accepts` pour ajouter un contexte à la liste, `\denies` pour retirer l’agrément.

Par exemple, on ne trouve normalement pas de portées regroupées par un crochet au sein d’un groupe matérialisé par une accolade et des barres d’un seul tenant ; un `GrandStaff` n’accepte donc pas, par défaut, d’englober un `StaffGroup`.

>     \score {
>       \new GrandStaff <<
>         \new StaffGroup <<
>           \new Staff { c'1 }
>           \new Staff { d'1 }
>         >>
>         \new Staff { \set Staff.instrumentName = bottom f'1 }
>       >>
>     }

Néanmoins, et grâce à une instruction `\accepts`, un `StaffGroup` peut se voir ajouté au contexte `GrandStaff` :

>     \score {
>       \new GrandStaff <<
>         \new StaffGroup <<
>           \new Staff { c'1 }
>           \new Staff { d'1 }
>         >>
>         \new Staff { \set Staff.instrumentName = bottom f'1 }
>       >>
>       \layout {
>         \context {
>           \GrandStaff
>           \accepts "StaffGroup"
>         }
>       }
>     }

L’instruction `\denies` permet, lorsqu’un nouveau contexte reprend les définitions d’un contexte existant, d’en ajuster les composantes. C’est par exemple le cas du contexte `VaticanaStaff`, réplique du contexte `Staff`, au sein duquel le contexte `VaticanaVoice` se substitue au contexte `Voice` dans la « liste d’agrément ».

Gardez à l’esprit que, face à une instruction qui ne s’appliquerait à aucun contexte déjà existant, LilyPond créera un nouveau contexte implicite.

Lors de la définition d’un contexte, les types de contextes sous-jacents susceptibles d’être créés implicitement sont spécifiés à l’aide d’une commande `\defaultchild`. Un certain nombre d’événements musicaux requièrent un contexte de plus bas niveau ; face à un tel événement, LilyPond crée autant de « sous-contextes » que nécessaire, jusqu’au contexte ne comportant aucun defaultchild.

La création implicite de contexte peut donc finir par engendrer de manière intempestive une nouvelle portée ou une autre partition. L’utilisation d’une instruction `\new` pour créer explicitement des contextes permet d’éviter ces problèmes.

Il arrive qu’un contexte ne doive exister que pendant un court instant, ce qui est le cas par exemple pour une ossia. Le plus simple consiste alors à initialiser la définition d’un contexte à l’endroit approprié, en parallèle avec le fragment correspondant dans la musique principale. Ce contexte temporaire sera par défaut positionné sous les autres contextes existants. Le repositionner au-dessus du contexte « principal » demande de le définir ainsi :

>     \new Staff \with { alignAboveContext = "principal" }

Il en va de même pour les contextes temporaires de paroles au sein d’un système à plusieurs portées comme un `ChoirStaff` lorsque, par exemple, un couplet supplémentaire apparaît à l’occasion d’une reprise. Ce contexte de paroles temporaire se place par défaut sous les portées inférieures. Lui adjoindre une instruction `alignBelowContext` dès son initialisation permet de l’accoler au contexte de paroles (nommé) qui contient le premier couplet.

Des exemples de repositionnement de contexte temporaire sont disponibles aux rubriques Expressions musicales imbriquées, Modification de portées individuelles et Situations particulières en matière de paroles.

#### Voir aussi

Manuel d’initiation : Expressions musicales imbriquées.

Manuel de notation : Modification de portées individuelles, Situations particulières en matière de paroles.

Manuel d’utilisation : Apparition d'une portée supplémentaire.

Fichiers d’initialisation : ‘`ly/engraver-init.ly`’.

#### LilyPond — Manuel de notation v2.22.2 (branche stable).