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