5.1.3 Conservation d’un contexte
En règle générale, un contexte disparaît dès qu’il n’y a plus rien à
faire. Autrement dit, un contexte Voice
disparaît dès après le
dernier événement qu’il contient, et un contexte Staff
dès que
les contextes Voice
qu’il supporte ne contiennent plus rien.
Ceci peut avoir des conséquences néfastes lorsqu’il est fait référence à
un contexte alors disparu, comme dans le cas d’un changement de portée
introduit par la commande \change
, l’association de paroles à
l’aide de la commande \lyricsto
ou si des événements surviennent
à nouveau pour ce contexte précédemment actif.
Une exception cependant à cette règle : en présence d’un contexte
Staff
ou dans une construction << … >>
, un seul des
contextes Voice
inclus restera actif jusqu’à la fin du contexte
Staff
ou de la construction << … >>
, y compris s’il y
a des « trous ». Le contexte alors persistant sera le premier
rencontré dans la construction { … }
sans tenir compte
des éventuels << … >>
qu’elle pourrait contenir.
Un contexte restera actif dès lors qu’il s’y passera toujours quelque
chose. Un contexte Staff
restera actif si l’une des voix qu’il
supporte est toujours active. L’un des moyens de s’en assurer
consiste à ajouter des silences invisibles parallèlement à la musique.
Vous devrez les ajouter dans tous les contextes Voice
qui doivent
rester actifs. Nous vous conseillons, lorsque plusieurs voix
interviennent de manière sporadique, de toutes les maintenir actives
plutôt que de vous fier aux exceptions mentionnées plus haut.
Dans l’exemple suivant, les deux voix A et B sont maintenues actives jusqu’à la fin du morceau :
musicA = \relative { d''4 d d d } musicB = \relative { g'4 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 >> }
L’exemple suivant illustre la manière d’écrire selon cette méthode une mélodie discontinue à laquelle se rattachent des paroles. Dans la réalité, mélodie et accompagnement feraient l’objet de portées séparées.
melody = \relative { a'4 a a a } accompaniment = \relative { d'4 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 } >> }
Une autre méthode, qui s’avère plus productive dans nombre de cas, consiste à maintenir active la ligne mélodique en y insérant des silences invisibles tout au long de l’accompagnement :
melody = \relative { s1 % skip a bar a'4 a a a s1 % skip a bar a4 a a a } accompaniment = \relative { d'4 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 } >> }