Modification des liaisons
Les liaisons, qu’elles soient de prolongation (Tie
),
d’articulation (Slur
), de phrasé (PhrasingSlur
), de
laisser-vibrer (LaissezVibrerTie
) ou de reprise
(RepeatTie
), sont dessinées sous la forme de courbes de Bézier de
degré trois. Lorsque l’aspect de la liaison automatiquement calculé
n’est pas satisfaisant, il peut être modifié manuellement de deux
manières différentes :
- en spécifiant l’ajustement qui doit être apporté aux points de contrôle de la courbe calculée automatiquement, ou
- en fournissant explicitement les quatre points de contrôle qui permettront de définir cette courbe.
Ces deux méthodes sont expliquées ci-dessous. La première convient mieux dans le cas d’une légère adaptation de la courbe ; la seconde sera plus efficace lorsqu’il s’agira de créer une courbe sur une seule et unique note.
Courbes de Bézier cubiques
Quatre points définissent une courbe de Bézier cubique. Les premier et quatrième points sont les points de départ et d’arrivée de la courbe ; les deux autres points de contrôle – P1 et P2 – en détermineront l’allure. On peut trouver sur le web des animations à propos du dessin de telles courbes ; la description qui suit en propose un aperçu. La courbe se trace en partant du point P0, en se dirigeant vers P1 et en arrivant au point P3 selon la direction P2-P3. La courbe est à l’intérieur du quadrilatère défini par les points de contrôle.
Tout déplacement (translation, rotation, échelonnement) des points de contrôle sera répercuté sur le dessin de la courbe.
Spécification de l’ajustement des points de contrôle
Voici par exemple une liaison de prolongation dont l’allure n’est pas
des plus heureuses, même en optant pour un \tieDown
.
<< { e'1~ 1 } \\ \relative { r4 <g' c,> <g c,> <g c,> } >>
L’ajustement des points de contrôle de cette liaison de tenue à
l’aide de \shape
permet d’éviter les collisions.
L’instruction \shape
obéit à la syntaxe
[-]\shape déplacements élément
Ceci aura pour effet de repositionner les points de contrôle de élément des différents montants fournis par déplacements. L’argument déplacements est constitué d’une liste de paires de nombres ou bien d’une liste de telles listes. Chacun des membres de l’une des paires indique l’ajustement de la coordonnée d’un point de contrôle. Lorsque élément est textuel, il en résulte une dérogation particulière appliquée au type d’objet considéré, alors que dans le cas d’une expression musicale sera appliqué un affinage approprié.
En d’autres termes, la fonction \shape
se comporte soit comme un
\once \override
, soit comme un \tweak
selon que l’argument
élément est un nom d’objet – tel « Slur » – ou une expression
musicale tel un « ( ». L’argument déplacements spécifie les
ajustements à apporter aux quatre points de contrôle, sous la forme
d’une liste de paires (dx . dy)
dont les valeurs sont
exprimées en espace de portée ; on utilisera une liste de listes de
paires dans le cas où la courbe comporte plusieurs segments.
La fonction sera précédée d’un tiret si et seulement si elle doit
s’appliquer sous forme de \tweak
.
Pour l’exemple qui nous occupe, l’adaptation sous forme dérogatoire –
recours à \once\override
– de la fonction \shape
, nous
pouvons remonter la liaison d’un demi espace de portée :
<< { \shape #'((0 . 0.5) (0 . 0.5) (0 . 0.5) (0 . 0.5)) Tie e'1~ 1 } \\ \relative { r4 <g' c,> <g c,> <g c,> } >>
La liaison est maintenant mieux positionnée ; mais sa partie centrale
pourrait être un peu plus relevée, en procédant comme ci-dessous, cette
fois en utilisant la formulation d’affinage – la forme \tweak
:
<< { e'1-\shape #'((0 . 0.5) (0 . 1) (0 . 1) (0 . 0.5)) ~ e' } \\ \relative { r4 <g' c,> <g c,> <g c,> } >>
LilyPond dispose de la fonction \vshape
qui apporte une
assistance dans cette procédure d’affinage. Son nom signifie
visual shape. Elle agit exactement comme la fonction
\shape
, à ceci près que seront aussi affichés les points de
contrôle et le polygone.
\relative { c''8(\( a) e4 gis a\) \vshape #'((0 . -0.3) (0.5 . -0.2) (0.5 . -0.3) (0 . -0.7)) PhrasingSlur c8(\( a) e4 gis a\) }
Il est conseillé de commencer avec \vshape
et d’ajuster jusqu’à
obtenir un galbe satisfaisant, puis de simplement supprimer le « v » de
\vshape
.
Il est possible de gérer distinctement le galbe de deux courbes débutant au même instant musical :
\relative { c''8(\( a) a'4 e c\) \shape #'((0.7 . -0.4) (0.5 . -0.4) (0.3 . -0.3) (0 . -0.2)) Slur \shape #'((0 . 0) (0 . 0.5) (0 . 0.5) (0 . 0)) PhrasingSlur c8(\( a) a'4 e c\) }
La fonction \shape
permet aussi d’adapter les points de contrôle
d’une courbe qui se prolonge après un saut de ligne. Chaque portion de
la courbe peut se voir appliquer sa propre liste d’ajustements. Lorsque
l’un des segments ne nécessite pas de retouche, il suffit de lui fournir
une liste vide. Dans l’exemple suivant, le saut de ligne laisse à croire
qu’il y a non pas une seule mais deux liaisons :
\relative { c'4( f g c \break d,4 c' f, c) }
Regalber les deux moitiés de la liaison rend plus évident le fait qu’elle s’étend par delà le saut de ligne :
% () peut faire office de raccourci à ((0 . 0) (0 . 0) (0 . 0) (0 . 0)) % lorsque l'un des segments ne nécéssite pas de modification \relative c' { \shape #'( (( 0 . 0) (0 . 0) (0 . 0) (0 . 1)) ((0.5 . 1.5) (1 . 0) (0 . 0) (0 . -1.5)) ) Slur c4( f g c \break d,4 c' f, c) }
La présence d’une courbe en esse requiert obligatoirement d’ajuster manuellement les points de contrôle – LilyPond n’optera jamais automatiquement pour un tel galbe.
\relative c'' { c8( e b-> f d' a e-> g) \shape #'((0 . -1) (5.5 . -0.5) (-5.5 . -10.5) (0 . -5.5)) PhrasingSlur c8\( e b-> f d' a e-> g\) }
Déclaration explicite des points de contrôle
Les coordonnées des points de contrôle sont données en unités d’espace de portée. L’abscisse est relative au point de référence de la note de départ de la liaison ; l’ordonnée est relative à la ligne médiane de la portée. Les différentes coordonnées sont entrées sous la forme d’une liste de quatre paires de nombres décimaux (ou nombres réels). L’une des manières de procéder consiste à tout d’abord estimer les coordonnées des deux extrémités puis, par tâtonnement, déterminer les deux points intermédiaires. Gardez à l’esprit que ces valeurs pourront devoir être revues si la musique ou sa mise en forme sont modifées.
L’une des situation où spécifier explicitement les points de contrôle se révèle être tout à fait appropriée est lorsqu’ils se réfèrent à une seule et unique note. L’exemple suivant illustre l’un des moyens d’indiquer une liaison qui se prolonge sur les alternatives d’une répétition.
\relative { c''1 \repeat volta 3 { c4 d( e f } \alternative { \volta 1 { g2) d } \volta 2 { g2 % create a slur and move it to a new position % the <> is just an empty chord to carry the slur termination -\tweak control-points #'((-2 . 3.8) (-1 . 3.9) (0 . 4) (1 . 3.4)) ( <> ) f, } \volta 3 { e'2 % create a slur and move it to a new position -\tweak control-points #'((-2 . 3) (-1 . 3.1) (0 . 3.2) (1 . 2.4)) ( <> ) f, } } }
Problèmes connus et avertissements
Lorsque plusieurs liaisons, quelle qu’en soit la nature, commencent au
même moment, jouer sur la propriété control-points
est
impossible, et la commande \tweak
inefficace. Vous pouvez
néanmoins influer sur la propriété tie-configuration
de l’objet
TieColumn
pour déterminer la ligne de départ et l’orientation.
Voir aussi
Référence des propriétés internes : TieColumn.