5.1.2 Création et référencement d’un contexte
LilyPond crée automatiquement des contextes de bas niveau lorsque
l’expression musicale intervient avant qu’un contexte adéquat n’existe,
ce qui peut être pratique dans le cadre d’une partition simple ou de
courts fragments tels ceux inclus dans cette documentation. Dès que la
structure s’étoffe, il devient nécessaire de créer explicitement tous
les contextes, à l’aide des commandes \new
ou \context
.
Leur syntaxe est très similaire :
[\new | \context] Contexte [ = nom] [musique]
où peuvent intervenir aussi bien \new
que \context
.
Le Contexte est le nom du contexte à créer, qui éventuellement
s’appellera plus particulièrement nom ; il contient l’expression
musicale unique musique qui devra être interprétée dans ce
contexte par les graveurs ou exécutants.
Le préfixe \new
non suivi d’un nom s’utilise principalement pour
créer une partition avec plusieurs portées :
<< \new Staff \relative { % leave the Voice context to be created implicitly c''4 c } \new Staff \relative { d''4 d } >>
et pour regrouper des voix sur une même portée :
\new Staff << \new Voice \relative { \voiceOne c''8 c c4 c c } \new Voice \relative { \voiceTwo g'4 g g g } >>
\new
est à priviliégier lorsque les contextes ne sont pas nommés.
La différence entre les commandes \new
et \context
se
situe au niveau de leurs effets :
-
La commande
\new
, suivie ou non d’un nom, crée un tout nouveau contexte même s’il en existe déjà un portant le même nom :\new Staff << \new Voice = "A" \relative { \voiceOne c''8 c c4 c c } \new Voice = "A" \relative { \voiceTwo g'4 g g g } >>
-
La commande
\context
avec nommage créera un contexte distinct uniquement dans le cas où ne préexiste aucun contexte du même nom dans la même hiérarchie de contextes. Dans le cas contraire, il servira de référence au contexte précédemment créé, et son expression musicale sera transmise dans ce contexte pour interprétation.Le nommage des contextes se révèle fort utile dans le cadre des paroles ou de la basse chiffrée comme indiqué dans Travail avec des paroles et variables ou Modèles pour ensemble vocal pour le premier cas et Gravure de la basse chiffrée pour le second. Par ailleurs, cette procédure est tout à fait pertinente lorsque l’on sépare mise en forme de la partition et contenu musical. Les deux formulations ci-après sont tout à fait valides :
\score { << % score layout \new Staff << \new Voice = "one" { \voiceOne } \new Voice = "two" { \voiceTwo } >> % musical content \context Voice = "one" { \relative { c''4 c c c } } \context Voice = "two" { \relative { g'8 g g4 g g } } >> }
\score { << % score layout \new Staff << \context Voice = "one" { \voiceOne } \context Voice = "two" { \voiceTwo } >> % musical content \context Voice = "one" { \relative { c''4 c c c } } \context Voice = "two" { \relative { g'8 g g4 g g } } >> }
Par ailleurs, le recours à des variables produira les mêmes effets – voir Organisation du code source avec des variables.
-
La commande
\context
utilisée sans nommage recherchera le premier de tous les contextes du même type précédemment créés dans la même hiérarchie de contextes ; l’expression musicale lui sera alors transmise pour interprétation. Bien que rarement utilisée, cette formulation de\context
sans nommage ni expression musicale permet de définir le contexte dans lequel une procédure Scheme comportant une clause\applyContext
devra s’exécuter.\new Staff \relative { c'1 \context Timing \applyContext #(lambda (ctx) (newline) (display (ly:context-current-moment ctx))) c1 }
Un contexte auquel il est ultérieurement fait référence doit impérativement être nommé. C’est le cas par exemple lorsque des paroles sont associées à de la musique :
\new Voice = "tenor" musique … \new Lyrics \lyricsto "tenor" paroles
L’association de paroles à de la musique est abordée en détails à la rubrique Durée automatique des syllabes.
Les propriétés de tous les contextes d’un même type se modifient au sein
d’un bloc \layout
, selon une syntaxe différente – voir
Modification de tous les contextes d’un même type. Une telle
construction permet de séparer mise en forme et contenu musical.
Lorsque un seul contexte requiert une adaptation, mieux vaut recourir à
un bloc \with
– voir
Modification d’un contexte particulier.
Voir aussi
Manuel d’initiation : Organisation du code source avec des variables.
Manuel de notation : Durée automatique des syllabes, Modification d’un contexte particulier.