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’.