GNU LilyPond – Manuel de notation: 5.1.3 Conservation d'un contexte

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

#### LilyPond — Manuel de notation v2.24.4 (branche stable).