| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Interpretation contexts
Nous allons voir ici ce que sont les contextes et comment les modifier.
Manuel d’initiation : (learning)Contextes et graveurs section ‘Contextes et graveurs’ dans Manuel d’initiation.
Fichiers d’initialisation : ‘ly/engraver-init.ly’, ‘ly/performer-init.ly’.
Morceaux choisis : (snippets)Contexts and engravers section ‘Contextes et graveurs’ dans Morceaux choisis.
Référence des propriétés internes : (internals)Contexts section ‘Contexts’ dans Référence des propriétés internes, (internals)Engravers and Performers section ‘Engravers and Performers’ dans Référence des propriétés internes.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Contexts explained
Les contextes sont hiérarchisés :
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Output definitions - blueprints for contexts
Les lignes qui suivent traitent de l’intérêt des définitions de sorties lorsque l’on travaille avec les contextes. Des exemples de définitions seront présentés plus avant – voir Modification de tous les contextes d’un même type.
Alors que la musique écrite dans un fichier fait référence à des types
ou noms de contexte, les contextes ne sont effectivement créés que
lorsque la musique est interprétée. LilyPond interprète la musique sous
le contrôle d’une « définition de sortie », voire différemment selon
le cas, et génère ainsi différents résultats. La définition de sortie
appropriée pour une sortie imprimable est spécifiée à l’aide d’un
\layout.
Une définition de sortie beaucoup plus simple sera utilisée pour
produire une sortie MIDI, spécifiée à l’aide d’un \midi.
LilyPond utilise en interne plusieurs autres définitions de sortie,
notamment dans le cadre du combinateur automatique de parties (voir
Regroupement automatique de parties) ou la reproduction d’extraits
(voir Citation d’autres voix).
Les définitions de sortie ont pour objet non seulement de définir la
relation entre les contextes, mais aussi leurs réglages par défaut. Si
la plupart des adaptations prennent habituellement place au sein d’un
bloc \layout, les réglages affectant le Midi ne seront effectifs
que s’ils interviennent au sein d’un bloc \midi.
Certains réglages affectent plusieurs sorties : par exemple, lorsque
autoBeaming est désactivé dans un contexte, les ligatures sont
considérées comme marquant un mélisme dans le but de faire correspondre
la musique aux paroles comme indiqué dans
Durée automatique des syllabes. Cette correspondance est
respectée autant à l’écrit qu’à l’oral. Des modifications apportées à
autoBeaming par une définition de contexte au sein d’un bloc
\layout ne seront pas reportées dans le bloc \midi
correspondant ; paroles et musique ne seront alors plus synchrones dans
le fichier Midi.
Fichiers d’initialisation : ‘ly/engraver-init.ly’, ‘ly/performer-init.ly’.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Score - the master of all contexts
Il s’agit en l’occurrence du contexte le plus élevé, autrement dit le plus important, en matière de notation. En effet, c’est au niveau de la partition – score en anglais – que se gèrent le temps et la tonalité ; c’est donc là qu’il faut s’assurer que les différents éléments, tels les clefs, métriques et armures sont bien répercutés sur toutes les portées.
Dès lors que LilyPond rencontre un bloc \score {…}
se crée implicitement un contexte Score.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Top-level contexts - staff containers
De nombreuses partitions sont écrites sur plus d’une portée. Ces portées peuvent être regroupées de différentes manières.
StaffGroup
Le groupe de portées est attaché par un crochet et les barres de mesure
sont d’un seul tenant, de la première à la dernière portée. Le
StaffGroup constitue le regroupement le plus simple.
ChoirStaff
Ce regroupement est identique au StaffGroup, à ceci près que les
barres de mesure ne traversent pas l’espace inter-portées.
GrandStaff
Le groupe de portées est attaché par une accolade sur la gauche et les barres de mesure sont d’un seul tenant.
PianoStaff
Ce regroupement est identique au GrandStaff, à ceci près que le
nom de l’instrument sera directement attaché au système.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Intermediate-level contexts - staves
Staff
La portée prend en charge les clefs, barres de mesure, armures et les
altérations accidentelles. Un contexte Staff peut contenir
plusieurs contextes Voice.
RhythmicStaff
De même nature qu’un Staff, ce contexte est destiné à n’imprimer
que du rythme. Quelle que soit la hauteur, les notes seront imprimées
sur une même et unique ligne ; la sortie MIDI rendra les hauteurs
saisies.
TabStaff
Ce contexte permet de générer des tablatures. La mise en forme par défaut correspond à une tablature pour guitare, sur six lignes.
DrumStaff
Contexte dévolu tout spécialement aux parties de percussion ; il
peut contenir plusieurs DrumVoice.
VaticanaStaff
Identique au contexte Staff, à ceci près qu’il est tout
particulièrement adapté au grégorien.
MensuralStaff
Identique au contexte Staff, à ceci près qu’il est tout
particulièrement adapté au style mensural de musique ancienne.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Bottom-level contexts - voices
Les contextes de niveau « voix » initialisent un certain nombre de
propriétés et activent les graveurs appropriés. Un contexte de bas
niveau est un contexte n’ayant aucun contexte enfant – ou
defaultchild. Bien qu’ils puissent accepter ou contenir des
sous-contextes, ceux-ci devront être libellés et créés explicitement.
Voice
Correspond à une voix positionnée sur une portée. Le contexte
Voice s’occupe des indications de nuance, des hampes, des
ligatures, des scripts placés au-dessus ou au-dessous de la portée, des
différentes liaisons et des silences. Lorsque plusieurs voix doivent
cohabiter sur la même portée, il est indispensable de les instancier
explicitement.
VaticanaVoice
Fonctionnant comme le contexte Voice, il est tout
particulièrement destiné à gérer le grégorien.
MensuralVoice
Fonctionnant comme le contexte Voice, il est tout
particulièrement adapté aux musiques anciennes.
Lyrics
Correspond à une voix contenant des paroles. Le contexte Lyrics
gère l’impression d’une ligne de paroles.
DrumVoice
Contexte de voix dévolu à une portée de percussions.
FiguredBass
Contexte prenant en charge les objets BassFigure – la basse
chiffrée – créés à partir de ce qui a été saisi en mode
\figuremode.
TabVoice
Contexte de voix dévolu au contexte TabStaff, il est
habituellement créé implicitement.
CueVoice
Contexte de voix utilisé essentiellement dans le cadre de citations ajoutées à une portée – voir Mise en forme d’une citation –, il est habituellement créé implicitement.
ChordNames
Permet d’imprimer des noms d’accord.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Creating and referencing contexts
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 :
\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 } >>
\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 (learning)Modèles pour ensemble vocal section ‘Modèles pour ensemble vocal’ dans Manuel d’initiation 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 (learning)Organisation du code source avec des variables section ‘Organisation du code source avec des variables’ dans Manuel d’initiation.
\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.
Manuel d’initiation : (learning)Organisation du code source avec des variables section ‘Organisation du code source avec des variables’ dans Manuel d’initiation.
Manuel de notation : Durée automatique des syllabes, Modification d’un contexte particulier.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Keeping contexts alive
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 } >> }
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Modifying context plug-ins
Les contextes, tels que Score ou Staff, ne contiennent
pas que des propriétés ; ils mettent également en œuvre certains
sous-programmes (plug-ins pour employer le terme consacré) nommés
« graveurs » (engravers pour reprendre le terme anglais).
Ces sous-programmes sont chargés de créer les différents éléments de
notation : on trouve ainsi dans le contexte Voice un graveur
Note_heads_engraver, chargé des têtes de notes et, dans le
contexte Staff, un graveur Key_engraver, chargé de
l’armure.
Vous trouverez une description exhaustive de chaque graveur dans (internals)Engravers and Performers section ‘Engravers and Performers’ dans Référence des propriétés internes. Chaque contexte mentionné dans (internals)Contexts section ‘Contexts’ dans Référence des propriétés internes répertorie les graveurs mis en œuvre.
On peut faire, au moyen de ces graveurs, sa propre « cuisine », en modifiant les contextes à volonté.
Lorsqu’un contexte est créé, par la commande \new ou
\context, on peut y adjoindre un bloc \with (en anglais
« avec »), dans lequel il est possible d’ajouter (commande
\consists) ou d’enlever (commande \remove) des graveurs :
\new contexte \with {
\consists …
\consists …
\remove …
\remove …
etc.
}
{
…musique…
}
|
Ici chacun des points de suspension … devront être remplacés par
le nom des graveurs désirés. Dans l’exemple suivant, on enlève du
contexte Staff la métrique (graveur
Time_signature_engraver) et la clef (graveur
Clef_engraver).
<< \new Staff \relative { f'2 g } \new Staff \with { \remove "Time_signature_engraver" \remove "Clef_engraver" } \relative { f'2 g2 } >>
La clef et le chiffre de mesure ont disparu de la deuxième portée. C’est une méthode quelque peu radicale puisqu’elle affectera toute la portée jusqu’à la fin de la partition. L’espacement s’en trouve également affecté, ce qui peut être ou non l’effet recherché. Une méthode plus sophistiquée aurait été de rendre ces objets transparents (voir (learning)Visibilité et couleur des objets section ‘Visibilité et couleur des objets’ dans Manuel d’initiation).
Dans l’exemple suivant, voici une mise en pratique plus utile. En temps
normal, les barres de mesure et la métrique sont synchronisées
verticalement dans toute la partition. Les graveurs qui en sont
responsables se nomment Timing_translator et
Default_bar_line_engraver. En les enlevant du contexte
Score pour les attribuer au contexte Staff, chaque portée
peut désormais avoir sa propre métrique.
\score { << \new Staff \with { \consists "Timing_translator" \consists "Default_bar_line_engraver" } \relative { \time 3/4 c''4 c c c c c } \new Staff \with { \consists "Timing_translator" \consists "Default_bar_line_engraver" } \relative { \time 2/4 c''4 c c c c c } >> \layout { \context { \Score \remove "Timing_translator" \remove "Default_bar_line_engraver" } } }
L’ordre dans lequel les graveurs sont spécifiés correspond à leur ordre d’apparition dans le processus d’élaboration de la partition. En règle générale, l’ordre dans lequel les graveurs sont mentionnés importe peu. Il se peut toutefois qu’un graveur écrive une propriété qui sera interprétée par un autre, ou qu’un graveur crée un objet graphique qui sera traité par un autre ; l’ordre d’apparition de ces graveurs prendra alors toute son importance.
Pour information, les ordonnancements suivants sont importants :
Bar_engraver devrait toujours être le premier ;
New_fingering_engraver doit toujours précéder le
Script_column_engraver ;
Timing_translator doit toujours précéder le
Bar_number_engraver.
Fichiers d’initialisation : ‘ly/engraver-init.ly’.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Changing context default settings
Les propriétés des contextes et objets graphiques se modifient à l’aide
des commandes \set et \override, comme indiqué à la
rubrique Modification de propriétés. Ces commandes créent des
événements musicaux qui feront que la modification produira ses effets
dès l’instant où la musique est traitée.
Le propos est ici de voir comment modifier les valeurs par défaut des propriétés de contexte ou d’objet graphique dès la création de ces contextes. Deux manières de procéder sont envisageables : l’une consiste à modifier les valeurs pour tous les contextes d’un même type, l’autre s’attache à adapter les valeurs par défaut d’une instance particulière d’un contexte.
| Modification de tous les contextes d’un même type | ||
| Modification d’un contexte particulier | ||
| Ordre de préséance |
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Changing all contexts of the same type
L’adaptation des réglages par défaut d’un contexte, qu’il s’agisse de
Score, Staff ou Voice, peut se réaliser
indépendamment de la musique dans un bloc \layout – placé dans
le bloc \score auquel ces modifications doivent s’appliquer – au
moyen d’un bloc \context.
Les réglages dévolus à la sortie MIDI viendront quant à eux se placer
dans un bloc \midi – voir
Définitions de la sortie – hiérarchie des contextes.
\layout {
\context {
\Voice
[réglage de contexte pour tous les contextes Voice]
}
\context {
\Staff
[réglage de contexte pour tous les contextes Staff]
}
}
|
La spécification des adaptations peut se faire de différentes manières :
\override, sans lui adjoindre le nom du
contexte :
\score { \relative { a'4^"Hampes épaisses" a a a a4 a a\ff a } \layout { \context { \Staff \override Stem.thickness = #4.0 } } }
\score { \relative { a'4^"Fontes plus petites" a a a a4 a a\ff a } \layout { \context { \Staff fontSize = #-4 } } }
\dynamicUp, ou bien une
expression musicale telle que \accidentalStyle dodecaphonic :
\score { \relative { a'4^"Nuance en surplomb" a a a a4 a a\ff a } \layout { \context { \Voice \dynamicUp } \context { \Staff \accidentalStyle dodecaphonic } } }
\with ;
pour de plus amples informations sur le bloc \with, voir
Modification d’un contexte particulier.
StaffDefauts = \with { fontSize = #-4 } \score { \new Staff { \relative { a'4^"Petite police" a a a a4 a a a } } \layout { \context { \Staff \StaffDefauts } } }
Les instructions destinées à modifier les propriétés peuvent se placer
dans un bloc \layout sans pour autant être incluses dans un bloc
\context. Expliciter des réglages de la sorte équivaut à inclure
les commandes de modification des propriétés au début de chacun des
contextes du type en question. Lorsque le contexte n’est pas spécifié,
tous les contextes de bas niveau seront affectés – voir
Contextes de bas niveau – les voix. La syntaxe appropriée répond
aux mêmes critères que si la commande était écrite dans le flot
musical.
\score { \new Staff { \relative { a'4^"Petite police" a a a a4 a a a } } \layout { \accidentalStyle dodecaphonic \set fontSize = #-4 \override Voice.Stem.thickness = #4.0 } }
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Changing just one specific context
Dans le cas d’un contexte pris individuellement, ses propriétés se
modifient à l’aide d’un bloc \with. Toutes les autres instances
de contexte appartenant au même type seront affectées des réglages
prédéfinis par LilyPond, modifiés le cas échéant au sein d’un bloc
\layout. Le bloc \with se place directement à la suite de
la commande \new type-de-contexte.
\new Staff \with { [réglages pour ce contexte pris individuellement] }
{
…
}
|
De la même manière, si la musique est saisie à la suite d’une commande
abrégée, telle que \chords au lieu de \chordmode,
l’instruction \with viendra se placer juste après la commande
spécifiant le mode :
\chords \with { [réglages pour ce contexte (implicite) pris individuellement] }
{
…
}
|
puisque c’est le contexte implicite alors créé qui devra être modifié.
Cette manière de procéder s’applique à toutes les autres formes abrégées
de spécification du mode de saisie (\drums, \figures) –
voir Modes de saisie.
Dans la mesure où une telle « modification de contexte » est spécifiée au sein même de la musique, ses effets toucheront toutes les sorties (imprimable et Midi), contrairement à ce qui se passe lorsque les adaptations sont réalisées dans la définition d’une sortie.
La spécification des adaptations peut se faire de différentes manières :
\override, sans lui adjoindre le nom du
contexte :
\score { \new Staff { \new Voice \with { \override Stem.thickness = #4.0 } { \relative { a'4^"Hampes épaisses" a a a a4 a a a } } } }
\score { << \new Staff { \relative { a'4^"Default font" a a a a4 a a a } } \new Staff \with { fontSize = #-4 } { \relative { a'4^"Smaller font" a a a a4 a a a } } >> }
\dynamicUp :
\score { << \new Staff { \new Voice { \relative { a'4^"Nuances en dessous" a a a a4 a a\ff a } } } \new Staff \with { \accidentalStyle dodecaphonic } { \new Voice \with { \dynamicUp } { \relative { a'4^"Nuances en surplomb" a a a a4 a a\ff a } } } >> }
Manuel de notation : Modes de saisie.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Order of precedence
La valeur d’une propriété qui doit s’appliquer à un instant particulier est déterminée comme suit :
\override ou \set active dans le
flot d’information, sa valeur s’applique,
\with stipulée à l’initialisation du
contexte,
\context approprié le plus récent dans les blocs \layout
ou \midi,
Manuel d’initiation : (learning)Modification des propriétés d’un contexte section ‘Modification des propriétés d'un contexte’ dans Manuel d’initiation.
Manuel de notation :
Contextes de bas niveau – les voix,
La commande de dérogation \override,
La commande de fixation \set,
Le bloc \layout,
Tout savoir sur les contextes.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Defining new contexts
Les contextes tels que Staff ou Voice sont faits
de briques de construction empilées. En combinant divers graveurs,
il est possible de créer de nouveaux types de contextes.
Dans l’exemple suivant on construit, de zéro, un nouveau contexte très
semblable à Voice, mais qui n’imprime que des têtes de notes en
forme de barre oblique au centre de la portée. Un tel contexte peut
servir, par exemple, à indiquer un passage improvisé dans un morceau de
jazz.
On a rassemblé les réglages dans un bloc \context, lui-même placé
dans le bloc \layout :
\layout {
\context {
…
}
}
|
En lieu et place des points (…), voici les éléments à saisir :
Tout d’abord, il convient de donner un nom à notre nouveau contexte :
\name ImproVoice |
Comme il est très semblable à un contexte Voice, nous souhaitons
que toutes les commandes associées au Voice déjà existant restent
valables. D’où nécessité de la commande \alias, qui va l’associer
au contexte Voice :
\alias Voice |
Ce contexte doit pouvoir imprimer des notes et des indications textuelles ; on ajoute donc les graveurs appropriés ainsi que celui dévolu au regroupement sous forme de colonne des notes, hampes et silences qui interviennent au même moment musical :
\consists "Note_heads_engraver" \consists "Text_engraver" \consists "Rhythmic_column_engraver" |
Toutes les notes devraient s’afficher au centre de la portée :
\consists "Pitch_squash_engraver" squashedPosition = #0 |
Le graveur Pitch_squash_engraver intercepte les notes créées par
le Note_heads_engraver, et les « écrase » pour qu’elles aient
toutes la même position verticale, définie par squashedPosition :
ici il s’agit de la valeur 0, c’est-à-dire la ligne du milieu.
On veut que les notes aient la forme d’une barre oblique, sans aucune hampe :
\override NoteHead.style = #'slash \hide Stem |
Tous ces modules doivent communiquer sous le contrôle du contexte. Les
mécanismes permettant aux contextes de communiquer sont établis dès lors
que le mot-clé \type précède le contexte. La plupart des
contextes mentionnés au sein d’un bloc \layout seront de type
Engraver_group. Certains contextes spécifiques, ainsi que ceux
mentionnés dans les blocs \midi, reposent sur d’autres types de
contexte. Recopier un contexte préexistant pour en modifier la
définition lui affecte le type adéquat. Dans la mesure où notre exemple
consiste à créer une définition de toute pièce, son type doit être
explicitement spécifié.
\type "Engraver_group" |
Récapitulons ; on se retrouve avec le bloc suivant :
\context {
\name ImproVoice
\type "Engraver_group"
\consists "Note_heads_engraver"
\consists "Text_engraver"
\consists "Rhythmic_column_engraver"
\consists "Pitch_squash_engraver"
squashedPosition = #0
\override NoteHead.style = #'slash
\hide Stem
\alias Voice
}
|
Ce n’est pas tout. En effet, on veut intégrer le nouveau contexte
ImproVoice dans la hiérarchie des contextes. Tout comme le
contexte Voice, sa place est au sein du contexte Staff.
Nous allons donc modifier la définition du contexte Staff,
au moyen de la commande \accepts :
\context {
\Staff
\accepts ImproVoice
}
|
Le contraire de \accepts est \denies ; il est parfois
utile lorsque l’on recycle des définitions de contextes déjà existantes.
Enfin, tout cela doit prendre place dans le bloc \layout,
comme ceci :
\layout {
\context {
\name ImproVoice
…
}
\context {
\Staff
\accepts "ImproVoice"
}
}
|
On peut alors saisir la musique, comme dans l’exemple plus haut :
\relative {
a'4 d8 bes8
\new ImproVoice {
c4^"ad lib" c
c4 c^"dévêtez-vous"
c c_"tout en jouant :)"
}
a1
}
|
Pour être tout à fait complet, les modifications apportée à la
hiérarchie des contextes devraient être répétés au niveau du bloc
\midi de telle sorte que la sortie Midi dépende des mêmes
relations.
Référence des propriétés internes : (internals)Note_heads_engraver section ‘Note_heads_engraver’ dans Référence des propriétés internes, (internals)Pitch_squash_engraver section ‘Pitch_squash_engraver’ dans Référence des propriétés internes, (internals)Rhythmic_column_engraver section ‘Rhythmic_column_engraver’ dans Référence des propriétés internes, (internals)Text_engraver section ‘Text_engraver’ dans Référence des propriétés internes.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] | [Racine] | [Table des matières] | [Index] | [ ? ] |
@translationof Context layout order
Les contextes viennent en principe se positionner selon leur ordre d’apparition dans le fichier source. Lorsque plusieurs contextes sont imbriqués, le contexte englobant supportera les différents contextes mentionnés dans le fichier source, à la stricte condition qu’ils soient dûment « agréés ». Les contextes imbriqués qui ne font pas partie de la « liste d’agréments » du contexte englobant se retrouveront en dessous de celui-ci au lieu d’y être imbriqués.
La liste des « agréments » d’un contexte se gère à l’aide des
instructions \accepts ou \denies – \accepts pour
ajouter un contexte à la liste, \denies pour retirer l’agrément.
Par exemple, on ne trouve normalement pas de portées regroupées par un
crochet au sein d’un groupe matérialisé par une accolade et des barres
d’un seul tenant ; un GrandStaff n’accepte donc pas, par défaut,
d’englober un StaffGroup.
\score { \new GrandStaff << \new StaffGroup << \new Staff { c'1 } \new Staff { d'1 } >> \new Staff { \set Staff.instrumentName = bottom f'1 } >> }
Néanmoins, et grâce à une instruction \accepts, un
StaffGroup peut se voir ajouté au contexte GrandStaff :
\score { \new GrandStaff << \new StaffGroup << \new Staff { c'1 } \new Staff { d'1 } >> \new Staff { \set Staff.instrumentName = bottom f'1 } >> \layout { \context { \GrandStaff \accepts "StaffGroup" } } }
L’instruction \denies permet, lorsqu’un nouveau contexte reprend
les définitions d’un contexte existant, d’en ajuster les composantes.
C’est par exemple le cas du contexte VaticanaStaff, réplique du
contexte Staff, au sein duquel le contexte VaticanaVoice se
substitue au contexte Voice dans la « liste d’agrément ».
Gardez à l’esprit que, face à une instruction qui ne s’appliquerait à aucun contexte déjà existant, LilyPond créera un nouveau contexte implicite.
Lors de la définition d’un contexte, les types de contextes
sous-jacents susceptibles d’être créés implicitement sont spécifiés à
l’aide d’une commande \defaultchild. Un certain nombre
d’événements musicaux requièrent un contexte de plus bas niveau ; face à
un tel événement, LilyPond crée autant de « sous-contextes » que
nécessaire, jusqu’au contexte ne comportant aucun defaultchild.
La création implicite de contexte peut donc finir par engendrer de
manière intempestive une nouvelle portée ou une autre partition.
L’utilisation d’une instruction \new pour créer explicitement des
contextes permet d’éviter ces problèmes.
Il arrive qu’un contexte ne doive exister que pendant un court instant, ce qui est le cas par exemple pour une ossia. Le plus simple consiste alors à initialiser la définition d’un contexte à l’endroit approprié, en parallèle avec le fragment correspondant dans la musique principale. Ce contexte temporaire sera par défaut positionné sous les autres contextes existants. Le repositionner au-dessus du contexte « principal » demande de le définir ainsi :
\new Staff \with { alignAboveContext = "principal" }
|
Il en va de même pour les contextes temporaires de paroles au sein d’un
système à plusieurs portées comme un ChoirStaff lorsque, par
exemple, un couplet supplémentaire apparaît à l’occasion d’une reprise.
Ce contexte de paroles temporaire se place par défaut sous les portées
inférieures. Lui adjoindre une instruction alignBelowContext dès
son initialisation permet de l’accoler au contexte de paroles (nommé)
qui contient le premier couplet.
Des exemples de repositionnement de contexte temporaire sont disponibles aux rubriques (learning)Expressions musicales imbriquées section ‘Expressions musicales imbriquées’ dans Manuel d’initiation, Modification de portées individuelles et Situations particulières en matière de paroles.
Manuel d’initiation : (learning)Expressions musicales imbriquées section ‘Expressions musicales imbriquées’ dans Manuel d’initiation.
Manuel de notation : Modification de portées individuelles, Situations particulières en matière de paroles.
Manuel d’utilisation : (usage)Apparition d’une portée supplémentaire section ‘Apparition d'une portée supplémentaire’ dans Utilisation des programmes.
Fichiers d’initialisation : ‘ly/engraver-init.ly’.
| [ < ] | [ > ] | [ << ] | [Plus haut] | [ >> ] |
Ce document a été généré le le 13 juillet 2020 par gub en utilisant texi2html 1.82.
Autres langues : English, català, deutsch, español, italiano, 日本語.
À propos de la sélection automatique de la langue.