Guida alla Notazione di LilyPond: 5.1.7 Ordine di disposizione dei contesti

### 5.1.7 Ordine di disposizione dei contesti

Normalmente i contesti in un sistema sono posizionati dall’alto verso il basso nell’ordine in cui sono incontrati nel file di input. Quando i contesti sono annidati, il contesto più esterno includerà i contesti annidati al suo interno come specificato nel file di input solo se i contesti interni sono inclusi nell’elenco “accepts” del contesto più esterno; altrimenti saranno riposizionati sotto il contesto più esterno invece di essere annidati al suo interno.

L’elenco “accepts” di un contesto può essere modificato coi comandi `\accepts` o `\denies`. `\accepts` aggiunge un contesto all’elenco “accepts” mentre `\denies` lo rimuove dall’elenco.

Per esempio, un gruppo di righi racchiusi da una parentesi quadra non si trova solitamente all’interno di un gruppo di righi con stanghette connesse e racchiusi da una graffa, e `GrandStaff` non accetta al suo interno `StaffGroup` per impostazione predefinita.

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

Tuttavia col comando `\accepts` si può aggiungere `StaffGroup` al contesto `GrandStaff`:

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

`\denies` si usa soprattutto quando un nuovo contesto è basato su un altro, ma l’annidamento richiesto differisce. Per esempio, il contesto `VaticanaStaff` è basato sul contesto `Staff`, ma col contesto `VaticanaVoice` che sostituisce il contesto `Voice` nell’elenco “accepts”.

Nota bene: un contesto verrà creato implicitamente e senza avviso se si incontra un comando quando non c’è un contesto adatto disponibile per contenerlo.

Nella definizione di un contesto, il tipo di sottocontesto da creare implicitamente viene specificato con `\defaultchild`. Vari eventi musicali richiedono un contesto “di base”: quando si incontra tale evento, vengono creati ricorsivamente i sottocontesti finché non si raggiunge un contesto privo di impostazione ‘`defaultchild`’.

La creazione implicita di contesti può talvolta causare nuovi righi o nuove partiture non attesi. Per evitare questi problemi è consigliabile usare `\new` per creare i contesti esplicitamente.

Talvolta un contesto deve esistere solo per un breve periodo, come nel caso esemplare di un contesto rigo per un ossia. Per ottenere ciò, di solito si introduce la definizione di contesto nel punto appropriato in parallelo con la sezione corrispondente della musica principale. Per impostazione predefinita, il contesto temporaneo verrà posizionato sotto tutti i contesti esistenti. Per riposizionarlo sopra il contesto chiamato “principale”, dovrebbe essere definito in questo modo:

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

Una situazione simile si pone quando si posiziona un contesto temporaneo per il testo vocale all’interno di una disposizione multirigo come `ChoirStaff`; per esempio, quando si aggiunge una seconda strofa a una sezione ripetuta. Per impostazione predefinita, il contesto temporaneo per il testo vocale verrà posizionato sotto i righi più bassi. Definendo il contesto temporaneo per il testo vocale con `alignBelowContext`, questo può essere posizionato correttamente sotto i contesti della voce (con nome) che contengono la prima strofa.

Esempi che mostrano questo riposizionamento di contesti temporanei possono essere trovati altrove — vedi Annidare le espressioni musicali, Modificare singoli righi e Tecniche specifiche per il testo vocale.

#### Vedi anche

Manuale di apprendimento: Annidare le espressioni musicali.

Guida alla notazione: Modificare singoli righi, Tecniche specifiche per il testo vocale.

Utilizzo: Appare un rigo in più.

File installati: ‘`ly/engraver-init.ly`’.

#### LilyPond — Guida alla Notazione v2.22.2 (ramo stabile).