5.1.3 Mantener vivos los contextos

Normalmente los contextos finalizan en el primer momento musical en que no tienen nada que hacer. Así, los contextos de Voice mueren tan pronto como ya no contienen ningún evento; los contextos de Staff mueren tan pronto como todos los contextos de Voice que contenían ya no contengan ningún evento; etc. Esto puede ocasionar dificultades si se tiene que hacer referencia a contextos anteriores que ya han muerto, por ejemplo, al cambiar de pentagramas con instrucciones \change, asociar letra con una voz mediante instrucciones \lyricsto, o cuando se añaden eventos musicales adicionales a un contexto anterior.

Existe una excepción a esta regla general: precisamente uno de los contextos de Voice que están dentro de un contexto de Staff o de una construcción <<...>> persiste siempre hasta el final de, contexto de Staff circundante o la construcción <<...>>, incluso aunque puede haber períodos en que no tiene nada que hacer. El contexto que persiste de esta forma será el primero que se encuentre en la primera construcción encerrada entre llaves {...}, ignorando cualquiera que se encuentre dentro de construcciones encerradas por ángulos dobles <<...>>.

Cualquier contexto se puede mantener vivo si nos aseguramos de que tiene algo que hacer en cualquier momento musical dado. Los contextos de Staff se mantienen con vida si nos aseguramos de que una de sus voces se mantiene viva. Una manera de hacerlo es añadir silencios de separación a una voz en paralelo con la música real. Éstos deben añadirse a todos y cada uno de los contextos de Voice que se hayan de mantener vivos. Si se van a usar esporádicamente varias voces, es más seguro mantenerlas todas vivas en lugar de tratar de confiar en las excepciones que hemos mencionado arriba.

En el ejemplo siguiente, tanto la voz A como la voz B se mantienen vivas de esta manera durante la duración de la pieza:

musicA = \relative c'' { d4 d d d }
musicB = \relative c'' { g4 g g g }
keepVoicesAlive = {
  <<
    \new Voice = "A" { s1*5 }  % Keep Voice "A" alive for 5 bars
    \new Voice = "B" { s1*5 }  % Keep Voice "B" alive for 5 bars
  >>
}

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]

El ejemplo siguiente muestra cómo se puede escribir una línea melódica esporádica con letra utilizando este enfoque. Por supuesto, en una situación real la melodía y el acompañamiento consistirían en varias secciones diferentes.

melody = \relative c'' { a4 a a a }
accompaniment = \relative c' { d4 d d d }
words = \lyricmode { These words fol -- low the mel -- o -- dy }
\score {
  <<
    \new Staff = "music" {
      <<
        \new Voice = "melody" {
          \voiceOne
          s1*4  % Keep Voice "melody" alive for 4 bars
        }
        {
          \new Voice = "accompaniment" {
            \voiceTwo
            \accompaniment
          }
          <<
            \context Voice = "melody" { \melody }
            \context Voice = "accompaniment" { \accompaniment }
          >>
          \context Voice = "accompaniment" { \accompaniment }
          <<
            \context Voice = "melody" { \melody }
            \context Voice = "accompaniment" { \accompaniment }
          >>
        }
      >>
    }
    \new Lyrics \with { alignAboveContext = #"music" }
    \lyricsto "melody" { \words }
  >>
}

[image of music]

Una forma alternativa, que podría resultar mejor en muchas situaciones, es mantener con vida la línea melódica simplemente incluyendo notas espaciadoras para alinearla correctamente con el acompañamiento:

melody = \relative c'' {
  s1  % skip a bar
  a4 a a a
  s1  % skip a bar
  a4 a a a
}
accompaniment = \relative c' {
  d4 d d d
  d4 d d d
  d4 d d d
  d4 d d d
}
words = \lyricmode { These words fol -- low the mel -- o -- dy }

\score {
  <<
    \new Staff = "music" {
      <<
        \new Voice = "melody" {
          \voiceOne
          \melody
        }
        \new Voice = "accompaniment" {
          \voiceTwo
          \accompaniment
        }
      >>
    }
    \new Lyrics \with { alignAboveContext = #"music" }
    \lyricsto "melody" { \words }
  >>
}

[image of music]


Otros idiomas: English, deutsch, français, italiano, 日本語.
Acerca de la selección automática del idioma.

LilyPond — Referencia de la notación