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
  >>
}

[image of 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 }
  >>
}

[image of music]

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 }
  >>
}

[image of music]


Guida alla Notazione di LilyPond v2.25.22 (development-branch).