5.1.3 Conservazione di un contesto
I contesti vengono solitamente terminati nel primo momento musicale in
cui non hanno niente da fare. Quindi i contesti Voice
muoiono
appena non contengono eventi; i contesti Staff
muoiono appena
tutti i contesti Voice
al loro interno non contengono eventi; etc.
Ciò può causare difficoltà se contesti precedenti, che sono stati
terminati, devono essere richiamati; per esempio, quando si cambia
il rigo col comando \change
, quando si associa il testo a una
voce col comando \lyricsto
o quando si aggiungono ulteriori eventi
musicali a un contesto precedente.
C’è un’eccezione a questa regola generale: all’interno di un costrutto
{…}
(musica sequenziale), la nozione di «contesto corrente»
scenderà di livello ogni volta che un elemento della sequenza termina in un
sottocontesto del precedente contesto corrente. Ciò evita la falsa creazione di
contesti impliciti in varie situazioni, ma significa che il primo contesto in
cui si scende verrà conservato fino alla fine dell’espressione.
Al contrario, i contesti di un construtto <<…>>
(musica simultanea)
non sono portati avanti, dunque racchiudendo un comando di creazione di contesto
in un’ulteriore coppia di <<…>>
impedirà che il contesto persista
in tutta la sequenza {…}
.
Un contesto può essere tenuto attivo assicurandosi che abbia qualcosa
da fare in ogni momento musicale. I contesti Staff
sono tenuti
attivi assicurandosi che una delle loro voci sia conservata. Un modo per
farlo consiste nell’aggiungere pause spaziatrici a una voce in parallelo
con la musica vera. Queste devono essere aggiunte a ogni contesto
Voice
da tenere attivo. Se si usano sporadicamente varie voci,
è più sicuro tenerle attive invece di tentare di affidarsi alle eccezioni
menzionate sopra.
Nell’esempio seguente, sia la voce A che la voce B sono mantenute attive in questo modo per la durata del brano:
musicA = \relative { d''4 d d d } musicB = \relative { g'4 g g g } keepVoicesAlive = { << \new Voice = "A" { s1*5 } % Tiene la voce "A" attiva per 5 battute \new Voice = "B" { s1*5 } % Tiene la voce "B" attiva per 5 battute >> } music = { \context Voice = "A" { \voiceOneStyle \musicA } \context Voice = "B" { \voiceTwoStyle \musicB } \context Voice = "A" { \musicA } \context Voice = "B" { \musicB } \context Voice = "A" { \musicA } } \score { \new Staff << \keepVoicesAlive \music >> }
L’esempio seguente mostra come scrivere una linea melodica sporadica con testo vocale usando questo approccio. Ovviamente, in una situazione reale la melodia e l’accompagnamento consisterebbero di varie e diverse sezioni.
melodia = \relative { a'4 a a a } accompagnamento = \relative { d'4 d d d } parole = \lyricmode { Queste parole seguo -- no la mel -- o -- dia } \score { << \new Staff = "musica" { << \new Voice = "melodia" { \voiceOne s1*4 % Tiene la voce "melodia" attiva per 4 battute } { \new Voice = "accompagnamento" { \voiceTwo \accompagnamento } << \context Voice = "melodia" { \melodia } \context Voice = "accompagnamento" { \accompagnamento } >> \context Voice = "accompagnamento" { \accompagnamento } << \context Voice = "melodia" { \melodia } \context Voice = "accompagnamento" { \accompagnamento } >> } >> } \new Lyrics \with { alignAboveContext = "musica" } \lyricsto "melodia" { \parole } >> }
Un modo alternativo, migliore in molte circostanze, è quello di mantenere la linea melodica attiva semplicemente includendo le note spaziatrici in modo che si allineino correttamente con l’accompagnamento:
melodia = \relative { s1 % salta una battuta a'4 a a a s1 % salta una battuta a4 a a a } accompagnamento = \relative { d'4 d d d d4 d d d d4 d d d d4 d d d } parole = \lyricmode { Queste parole seguo -- no la mel -- o -- dia } \score { << \new Staff = "musica" { << \new Voice = "melodia" { \voiceOne \melodia } \new Voice = "accompagnamento" { \voiceTwo \accompagnamento } >> } \new Lyrics \with { alignAboveContext = "musica" } \lyricsto "melodia" { \parole } >> }