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

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'

[image of music]

\relative \compressMMRests {
  a'1
  R1*23
  % increase the length of the rest bar
  \once \override MultiMeasureRest.minimum-length = #20
  R1*23
  a1
}

[image of music]

\relative {
  a' \< a a a \!
  % increase the length of the hairpin
  \override Hairpin.minimum-length = #20
  a \< a a a \!
}

[image of music]

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\)
}

[image of music]

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''

[image of music]

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'

[image of music]

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
}

[image of music]

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 :

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'

[image of music]

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

[image of music]

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 (ou LEFT) 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 }

[image of music]

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 et Y. L’utilisation de stencil-align-dir-y ou stencil-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 }

[image of music]

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 ou DOWN signifie « aligner le bord inférieur du texte sur la ligne d’extension ». Une valeur égale à 1 ou UP 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
}

[image of music]

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.

LilyPond — Manuel de notation v2.21.0 (branche de développement).