5.4.6 Extenseurs et prolongateurs
De nombreux objets de notation musicale s’étendent sur plusieurs notes, voire même sur plusieurs mesures. Il en va ainsi des liaisons, ligatures, crochets de n-olet, crochets de reprise, crescendos, trilles ou glissandos. Ces objets, que l’on englobe sous l’appellation « d’extenseurs », sont pourvus de propriétés spécifiques destinées à contrôler leur apparence et leur comportement. Un certain nombre de ces propriétés sont communes à tous les extenseurs, d’autres n’affectent que certains d’entre eux.
Tout extenseur dispose de la spanner-interface
. Quelques uns,
tout particulièrement ceux chargés de dessiner une ligne droite entre
deux objets, disposent aussi de la line-spanner-interface
.
+
Utilisation de spanner-interface | ||
Utilisation de line-spanner-interface |
Utilisation de spanner-interface
Cette interface fournit deux propriétés qui s’appliquent à certains extenseurs.
La propriété minimum-length
La longueur minimale d’un extenseur est déterminée par la propriété
minimum-length
. Au plus sa valeur est élevée, au plus
l’espacement des notes qui le bornent sera grand. Forcer sa valeur
restera néanmoins sans effet pour un certain nombre d’extenseurs dont la
longueur dépend d’autres considérations. Voici quelques exemples de
mise en œuvre de cette propriété.
a'~ a' a' % increase the length of the tie -\tweak minimum-length #5 ~ a'
\relative \compressMMRests { a'1 R1*23 % increase the length of the rest bar \once \override MultiMeasureRest.minimum-length = #20 R1*23 a1 }
\relative { a' \< a a a \! % increase the length of the hairpin \override Hairpin.minimum-length = #20 a \< a a a \! }
Cette propriété permet aussi de jouer sur l’envergure d’une liaison d’articulation ou de phrasé.
\relative { a'( g) a -\tweak minimum-length #5 ( g) a\( g\) a -\tweak minimum-length #5 \( g\) }
Certains objets requièrent un appel explicite à la procédure
set-spacing-rods
pour que la propriété minimum-length
produise ses effets. La propriété set-spacing-rods
doit alors
prendre pour valeur ly:spanner::set-spacing-rods
. Par exemple, la
longueur minimale d’un glissando ne pourra être forcée tant que la
propriété springs-and-rods
n’aura pas été définie :
% default e' \glissando c'' % not effective alone \once \override Glissando.minimum-length = #20 e' \glissando c'' % effective only when both overrides are present \once \override Glissando.minimum-length = #20 \once \override Glissando.springs-and-rods = #ly:spanner::set-spacing-rods e' \glissando c''
Il en va de même pour l’objet Beam
(ligature) :
% not effective alone \once \override Beam.minimum-length = #20 e'8 e' e' e' % effective only when both overrides are present \once \override Beam.minimum-length = #20 \once \override Beam.springs-and-rods = #ly:spanner::set-spacing-rods e'8 e' e' e'
La propriété to-barline
La seconde propriété fournie par la spanner-interface
est
to-barline
. Elle est activée par défaut, raison pour laquelle
les soufflets et autres extenseurs finissant sur la première note d’une
mesure s’arrêtent visuellement au niveau de la barre de mesure qui la
précède. Le fait de désactiver la propriété to-barline
aura pour
effet de prolonger l’extenseur au delà de la barre de mesure et jusqu’à
la note qui le borne :
\relative { a' \< a a a a \! a a a \break \override Hairpin.to-barline = ##f a \< a a a a \! a a a }
Cette propriété n’est pas opérationnelle pour tous les extenseurs. Il
serait en effet quelque peu surprenant de l’activer (lui
affecter #t
) dans le cas d’une liaison d’articulation ou de
phrasé !
Utilisation de line-spanner-interface
Un certain nombre d’objets disposent de la
line-spanner-interface
, entre autres :
-
DynamicTextSpanner
-
Glissando
-
TextSpanner
-
TrillSpanner
-
VoiceFollower
La routine en charge de dessiner le stencil de ces extenseurs est
ly:line-spanner::print
. Elle va déterminer les deux points
extrêmes et dessiner entre eux une ligne du style requis. Bien que la
localisation des deux bornes de l’extenseur soit calculée à la volée,
vous pouvez cependant forcer leur ordonnée (coordonnée-Y). Les
propriétés que vous devrez ajuster résident au deuxième niveau dans la
hiérarchie, mais la syntaxe de la commande \override
nécessaire
demeure relativement simple :
e''2 \glissando b' \once \override Glissando.bound-details.left.Y = #3 \once \override Glissando.bound-details.right.Y = #-2 e''2 \glissando b'
La propriété Y
est valorisée en unités de staff-space
, la
ligne médiane de la portée correspondant au point zéro. Pour le
glissando qui nous occupe, il s’agit du Y
à l’aplomb
(coordonnée-X) du centre de la tête de chacune des deux notes, si tant
est que la ligne doive s’étendre entre ces deux points.
Si le Y
n’est pas défini, sa valeur sera calculée en fonction de
la position verticale du point d’attachement de l’extenseur.
Dans le cas où l’extenseur est interrompu par un saut de ligne, les
terminaisons à cet endroit se gèrent à l’aide des sous-clés
left-broken
et right-broken
de bound-details
, comme
ci-dessous :
\override Glissando.breakable = ##t \override Glissando.bound-details.right-broken.Y = #-3 c''1 \glissando \break f''1
Les sous-propriétés left
et right
du bound-details
disposent d’autres clés modifiables de la même manière que Y
:
-
Y
Détermine l’ordonnée (coordonnée-Y) de la terminaison, avec un décalage en
staff-space
par rapport à la ligne médiane de la portée. Il s’agit par défaut du centre de l’objet d’attachement, qui est le centre vertical de la tête de note pour un glissando.En ce qui concerne les extenseurs horizontaux, tels ceux comportant du texte ou les trilles, il est fixé à
0
.-
attach-dir
Détermine le début et la fin de la ligne sur l’axe des abscisses, relativement à l’objet de rattachement. Une valeur de
-1
(ouLEFT
) aura pour effet de commencer ou terminer la ligne sur la gauche de la tête de note de rattachement.-
X
Il s’agit de l’abscisse (coordonnée-X) absolue de la terminaison. Elle se calcule à la volée, et son forçage n’apporte rien de plus.
-
stencil
Les extenseurs linéaires peuvent commencer ou finir par un symbole, enregistré dans cette sous-propriété. Elle est conçue pour un usage interne, aussi nous vous conseillons de plutôt recourir à
text
.-
text
Il s’agit d’un markup qui se poursuivra par l’extenseur. C’est la sous-propriété utilisée pour ajouter cresc., tr ou autre texte à un extenseur horizontal.
\override TextSpanner.bound-details.left.text = \markup { \small \bold Slower } \relative { c''2\startTextSpan b c a\stopTextSpan }
-
stencil-align-dir-y
-
stencil-offset
Lorsqu’aucune de ces deux sous-propriétés n’est définie, le stencil est simplement positionné à l’extrémité, centré sur la ligne telle que définie par les sous-propriétés
X
etY
. L’utilisation destencil-align-dir-y
oustencil-offset
permettra d’aligner le symbole verticalement par rapport au coin de la ligne :\override TextSpanner.bound-details.left.stencil-align-dir-y = #-2 \override TextSpanner.bound-details.right.stencil-align-dir-y = #UP \override TextSpanner.bound-details.left.text = #"ggg" \override TextSpanner.bound-details.right.text = #"hhh" \relative { c'4^\startTextSpan c c c \stopTextSpan }
Vous n’aurez pas manqué de constater qu’une valeur négative place le texte en haut – contrairement à ce que l’on serait en droit d’attendre. Ceci est dû au fait que la valeur
-1
ouDOWN
signifie « aligner le bord inférieur du texte sur la ligne d’extension ». Une valeur égale à1
ouUP
alignera le sommet du texte sur cette ligne d’extension.-
arrow
L’activation de cette sous-propriété (lui affecter
#t
) ajoutera à l’extenseur une terminaison en flèche.-
padding
Cette sous-propriété contrôle l’espace qui doit séparer l’extrémité de la ligne et la fin réelle de l’extenseur. Sans ce « décalage », le trait indiquant un glissando commencerait et finirait au beau milieu de chacune des têtes de note.
La fonction \endSpanners
permet d’interrompre l’extenseur qui
vient dès la note suivante. Autrement dit, il ne s’étendra que sur une
seule note, ou jusqu’à la prochaine barre de mesure si to-barline
a été activé et que survient une barre avant la note suivante.
\relative c'' { \endSpanners c2 \startTextSpan c2 c2 \endSpanners c2 \< c2 c2 }
L’utilisation de \endSpanners
permet de s’affranchir d’insérer un
\stopTextSpan
pour clôturer un \startTextSpan
ou un
\!
pour terminer un soufflet.
Voir aussi
Référence des propriétés internes : Glissando, line-spanner-interface, TextSpanner, TrillSpanner, VoiceFollower.
Autres langues : English, català, deutsch, español, italiano, 日本語.
About automatic language selection.