[ << Concepts fondamentaux ] | [Top][Contents][Index] | [ Retouche de partition >> ] |
[ < Tout savoir sur les graveurs ] | [ Up : Contextes et graveurs ] | [ Ajout et suppression de graveurs > ] |
4.3.4 Modification des propriétés d’un contexte
Les contextes gèrent les différentes valeurs des nombreuses
propriétés qui leur sont attachées. Beaucoup d’entre elles sont
susceptibles d’être modifiées afin d’influer sur l’interprétation de
l’input et ainsi changer l’apparence du résultat. On les modifie grâce à
la commande \set
, qui s’utilise ainsi :
\set ContexteNommé.propriétéNommée = valeur
où ContexteNommé est habituellement Score
, Staff
ou
Voice
. S’il n’est pas mentionné, il sera considéré comme étant
Voice
.
Les noms des propriétés de contexte sont composés de mots accolés sans trait d’union ni caractère souligné, et dont seul le premier n’aura pas d’initiale en majuscule. Voici quelques exemples de celles les plus communément utilisées.
Nom de propriété Type Fonction Exemple de valeur extraNatural
Booléen Si vrai, ajoute un bécarre avant une altération accidentelle ##t
,##f
currentBarNumber
Entier Détermine le numéro de la mesure en cours 50
doubleSlurs
Booléen Si vrai, imprime les liaisons au-dessous et au-dessus des notes ##t
,##f
instrumentName
Texte Détermine le nom à afficher en début de portée \markup { ... }
fontSize
Réel Augmente ou diminue la taille de la fonte 2.4
stanza
Texte Détermine le texte à imprimer avant le début d’un couplet "2"
Dans ce tableau, un booléen correspond soit à vrai (#t
pour
true en anglais) ou faux (#f
pour false en
anglais), un entier est un nombre entier positif, un réel
est un nombre décimal positif ou négatif, et texte correspond à
une suite de caractères encadrée par des guillemets informatiques.
Attention à la présence d’un signe dièse (#
) additionnel
nécessaire dans le cadre d’une expression Scheme.
Avant de déterminer l’une de ces propriétés, nous devons savoir dans
quel contexte elle intervient. Si cela est bien souvent évident, il peut
arriver que cela tourne au cauchemar. Lorsque vous ne spécifiez pas le
bon contexte, aucun message d’erreur ne s’affiche et l’effet attendu
n’est pas au rendez-vous. Par exemple, le clefGlyph
est de
manière incontestable membre du contexte Staff
, puisque c’est
bien le glyphe de clef de la portée qui doit être changé. Dans l’exemple
suivant, la première portée affiche effectivement la bonne clef, alors
que ce n’est pas le cas pour la deuxième – qui porte la clef de sol par
défaut au lieu d’une clef de basse (clef de fa) – dans la mesure où le
contexte n’a pas été spécifié.
<< \new Staff \relative { \set Staff.clefGlyph = "clefs.C" c''4 c } \new Staff \relative { \set clefGlyph = "clefs.F" % Wrong! d'4 d } >>![]()
La deuxième commande \set
définit bien la propriété
Voice.clefGlyph
à clefs.F
mais, puisque LilyPond ne
s’attend pas à une telle propriété dans un contexte de voix, rien ne se
passe. Il ne s’agit pas d’une erreur, aucun message d’erreur ne sera ni
émis ni enregistré.
La propriété clefGlyph
ne sera prise en compte que si elle est
définie dans un contexte Staff
; d’autres propriétés peuvent par
contre être définies dans plusieurs contextes différents. C’est le cas
de la propriété extraNatural
qui est définie par défaut à
#t
(vrai) pour toutes les portées. Si vous lui attribuez la
valeur #f
(faux) dans un contexte Staff
particulier, elle
ne s’appliquera qu’aux altérations de la portée en question ; si vous
lui attribuez la valeur « faux » au niveau du contexte Score
,
cela s’appliquera alors à tous les contextes Staff
pour lesquels
elle n’aura pas été stipulée.
Voici comment supprimer les bécarres supplémentaires pour une portée :
<< \new Staff \relative { aeses'2 aes } \new Staff \relative { \set Staff.extraNatural = ##f aeses'2 aes } >>![]()
et pour toutes les portées :
<< \new Staff \relative { aeses'2 aes } \new Staff \relative { \set Score.extraNatural = ##f aeses'2 aes } >>![]()
Autre exemple, si la propriété clefTransposition
est déterminée
au niveau du contexte Score
, elle modifiera la valeur de la
transposition pour le contexte Staff
en cours et tous ceux à
venir, sauf mention expresse.
La commande opposée, \unset
, efface la propriété du contexte.
En règle générale, la commande \unset
n’est pas nécessaire dès
lors que vous faites appel à une nouvelle commande \set
pour
modifier le réglage. Il faut ici considérer la valeur que le contexte
englobant doit perpétuer. \set
le masque, et \unset
le
rend visible.
Les commandes \set
et \unset
peuvent intervenir n’importe
où dans votre fichier source. Elles seront effectives dès leur
apparition et jusqu’à la fin de la partition, à moins d’être affectées
par un \unset
ou un nouveau \set
. À titre d’exemple, nous
allons jouer avec la taille des fontes, ce qui affecte entre autres la
grosseur des têtes de note. La valeur se définit par rapport à la taille
de police par défaut, non par rapport à la dernière valeur définie.
\relative { c'4 d % make note heads smaller \set fontSize = -4 e4 f | % make note heads larger \set fontSize = 2.5 g4 a % return to default size \unset fontSize b4 c | }![]()
Nous venons de voir comment déterminer la valeur de différents types de
propriété. N’oubliez pas que les expressions Scheme doivent être
précédées d’un signe dièse (#
) ; les valeurs vrai ou faux seront
donc libellées respectivement ##t
et ##f
– avec deux
dièses. Une valeur textuelle doit être encadrée de guillemets anglais,
"…"
, bien que, comme nous le constaterons plus tard, la
commande \markup
permet aussi de spécifier du texte.
Définition des propriétés de contexte avec \with
Les propriétés d’un contexte peuvent aussi être réglées lors de la
création de ce contexte. Ceci constitue parfois une façon plus claire de
spécifier les valeurs d’une propriété pour la durée de vie du contexte.
Lorsque vous créez un contexte à l’aide de la commande \new
, vous
pouvez la faire suivre immédiatement d’un bloc
\with { … }
qui contiendra les réglages initiaux des
différentes propriétés. Ainsi, si nous voulions par exemple annuler
l’impression des bécarres supplémentaires sur la durée d’une portée,
nous écririons :
\new Staff \with { extraNatural = ##f }
ce qui donnerait :
<< \new Staff \relative { gisis'4 gis aeses aes } \new Staff \with { extraNatural = ##f } { \relative { gisis'4 gis aeses aes } } >>![]()
Un bloc \with
permet de définir aisément des valeurs qui
s’appliqueront sur toute la durée d’un contexte ; celles-ci ne sont
toutefois pas immuables. Les propriétés initialisée de la sorte peuvent
toujours être modifiées dynamiquement à l’aide des commandes \set
et \unset
.
Définition des propriétés de contexte avec \context
Vous pouvez régler les valeurs des propriétés de contexte en une seule
fois pour tous les contextes d’un même type, par exemple tous les
contextes Staff
. Le type du contexte doit être donné
explicitement d’après son nom, par exemple Staff
, précédé d’une
oblique inverse, donc nous saisirons \Staff
. La manière de régler
la valeur des propriétés est la même que ce que nous avons vu avec la
commande \with
, puisqu’on se place dans un bloc \context
inclus dans un bloc \layout
. Chaque bloc \context
affectera tous les contextes concernés par le bloc \score
ou
\book
au sein duquel apparaît ce bloc \layout
. Voici
comment le mettre en place :
\score { \new Staff { \relative { cisis''4 e d cis } } \layout { \context { \Staff extraNatural = ##t } } }![]()
Dans le cas où ces ajustements de propriété doivent affecter toutes les portées de la partition, nous utiliserons alors :
\score { << \new Staff { \relative { gisis'4 gis aeses aes } } \new Staff { \relative { gisis'4 gis aeses aes } } >> \layout { \context { \Score extraNatural = ##f } } }![]()
Les propriétés de contexte ainsi définies peuvent être adaptées pour
chacun des contextes en particulier grâce à un bloc \with
ou bien
une commande \set
au fil des notes.
Voir aussi
Manuel de notation :
Modification des réglages par défaut d’un contexte,
Les commandes \set
et \unset
.
Référence des propriétés internes : Contexts, Tunable context properties.
[ << Concepts fondamentaux ] | [Top][Contents][Index] | [ Retouche de partition >> ] |
[ < Tout savoir sur les graveurs ] | [ Up : Contextes et graveurs ] | [ Ajout et suppression de graveurs > ] |