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 :

  1. en spécifiant l’ajustement qui doit être apporté aux points de contrôle de la courbe calculée automatiquement, ou
  2. 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.

[image of music]

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,> }
>>

[image of music]

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,> }
>>

[image of music]

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,> }
>>

[image of music]

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

[image of music]

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

[image of music]

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

[image of music]

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

[image of music]

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

[image of music]

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,
    }
  }
}

[image of music]

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.


GNU LilyPond – Manuel de notation v2.25.21 (branche de développement).