1.2.4 Barres de ligature


Barres de ligature automatiques

LilyPond décide automatiquement de la manière de grouper les notes et d’imprimer les ligatures.

\relative c'' {
  \time 2/4 c8 c c c
  \time 6/8 c8 c c c8. c16 c8
}

[image of music]

Lorsque ce comportement automatisé n’est pas satisfaisant, on peut définir des groupements manuellement – voir Barres de ligature manuelles. Dans le cas où le groupe de notes en question contient un silence, il est impératif d’indiquer explicitement les début et fin de la ligature.

Lorsque les ligatures automatiques ne sont pas nécessaires, il suffit de désactiver la fonctionnalité par un \autoBeamOff – réactivation par \autoBeamOn :

\relative c' {
  c4 c8 c8. c16 c8. c16 c8
  \autoBeamOff
  c4 c8 c8. c16 c8.
  \autoBeamOn
  c16 c8
}

[image of music]

Note : Si des ligatures sont utilisées dans les paroles d’une chanson (pour indiquer des mélismes), les ligatures automatiques doivent être désactivées, avec \autoBeamOff, et indiquées manuellement.
L’utilisation conjointe de \partCombine et de \autoBeamOff peut produire des résultats quelque peu surprenants ; ceci fait l’objet d’un exemple particulier à la rubrique morceaux choisis.

Des règles de dérogation au comportement automatique par défaut sont possibles ; voir Définition des règles de ligature automatique.

Commandes prédéfinies

\autoBeamOff, \autoBeamOn.

Morceaux choisis

Ligature au moment d’un saut de ligne

Il est normalement impensable qu’un saut de ligne tombe au milieu d’une ligature. LilyPond permet néanmoins de l’obtenir.

\relative c'' {
  \override Beam.breakable = ##t
  c8 c[ c] c[ c] c[ c] c[ \break
  c8] c[ c] c[ c] c[ c] c
}

[image of music]

Ligature et directions de hampe inversées

LilyPond insère automatiquement des ligatures coudées – certaines hampes vers le haut, d’autres vers le bas – lorsqu’il détecte un intervalle important entre des têtes de notes. Ce comportement peut être changé par l’intermédiaire de l’objet auto-knee-gap – défini par défaut à 5,5 espaces, plus la largeur et la pente de la ligature en question.

{
  f8 f''8 f8 f''8
  \override Beam.auto-knee-gap = #6
  f8 f''8 f8 f''8
}

[image of music]

PartCombine et autoBeamOff

La fonction \autoBeamOff dans le cadre d’un \partCombine agit de façon bien particulière ; c’est pourquoi il vaut mieux tout d’abord recourir à

\set Staff.autobeaming = ##f

pour désactiver les ligatures automatiques pour l’ensemble de la portée concernée.

L’instruction \partCombine fonctionne apparemment sur la base de trois voix : solo hampes montantes, solo hampes descendantes et ensemble hampes montantes.

Lorsque \autoBeamOff apparaît dans le premier argument de la combinaison, il s’applique à la voix active à ce moment précis, qu’il s’agisse du solo hampes montantes ou du combiné hampes montantes. Lorsqu’elle est introduite dans le second argument, la commande \autoBeamOff s’appliquera au solo hampes descendantes.

Vous devrez donc, afin que \autoBeamOff soit pleinement opérationnel dans le cadre d’un \partCombine, l’introduire aux trois niveaux.

{
  %\set Staff.autoBeaming = ##f % turns off all autobeaming
  \partCombine
  {
    \autoBeamOff % applies to split up stems
    \repeat unfold 4 a'16
    %\autoBeamOff % applies to combined up stems
    \repeat unfold 4 a'8
    \repeat unfold 4 a'16
  }
  {
    \autoBeamOff % applies to down stems
    \repeat unfold 4 f'8
    \repeat unfold 8 f'16 |
  }
}

[image of music]

Voir aussi

Manuel de notation : Barres de ligature manuelles, Définition des règles de ligature automatique.

Fichiers d’initialisation : ‘scm/auto-beam.scm’.

Morceaux choisis : Rythme.

Références des propriétés internes : Auto_beam_engraver, Beam_engraver, Beam. BeamEvent, BeamForbidEvent, beam-interface, unbreakable-spanner-interface.

Problèmes connus et avertissements

Les propriétés d’une ligature sont déterminées dès le début de sa construction ; toute adaptation qui interviendrait avant sa terminaison ne sera prise en compte qu’à l’occasion de la prochaine ligature.


Définition des règles de ligature automatique

Lorsque la fonction de ligature automatique est active, le positionnement des ligatures dépend des trois propriétés baseMoment, beatStructure et beamExceptions. Les valeurs par défaut de ces variables peuvent s’adapter, comme indiqué ci-après, ou bien carrément être modifiées – voir Métrique.

Dès lors qu’une règle affectant beamExceptions est définie pour la métrique en vigueur, c’est cette règle qui servira à déterminer le placement des ligatures, ignorant les valeurs de baseMoment et beatStructure.

En l’absence de règle affectant beamExceptions pour la métrique en vigueur, les ligatures seront déterminées par les réglages conjoints de baseMoment et beatStructure.

Ligature basée sur baseMoment et beatStructure

beamExceptions dispose par défaut de règles pour les métriques les plus courantes ; il est donc impératif de les invalider pour gérer les ligatures automatiques à l’aide de baseMoment et beatStructure. Les règles de beamExceptions se désactivent par un

\set Timing.beamExceptions = #'()

Lorsque beamExceptions est défini à #'(), que ce soit explicitement ou en raison de l’absence de règles par défaut de beamExceptions pour la métrique en vigueur, la terminaison des ligatures est directement liée à la pulsation telle que spécifiée par les propriétés baseMoment et beatStructure. La propriété beatStructure est constituée d’une liste d’éléments Scheme qui définit la longueur de chaque pulsation, prenant baseMoment comme unité. L’unité de base (le baseMoment) correspond par défaut à l’inverse du dénominateur de la métrique. D’autre part, chaque unité de baseMoment constitue par défaut une seule pulsation.

Notez bien la présence de valeurs distinctes de beatStructure et baseMoment pour chaque métrique. Toute modification de ces variables ne s’applique qu’à la métrique alors en vigueur, raison pour laquelle elles doivent se placer à la suite de la commande \time qui entame un fragment ayant une nouvelle métrique, non au préalable. Les nouvelles valeurs affectées à une métrique particulière resteront en vigueur et ré-instaurées si cette métrique réapparaît plus tard.

\relative c'' {
  \time 5/16
  c16^"default" c c c c |
  % beamExceptions are unlikely to be defined for 5/16 time,
  % but let's disable them anyway to be sure
  \set Timing.beamExceptions = #'()
  \set Timing.beatStructure = 2,3
  c16^"(2+3)" c c c c |
  \set Timing.beatStructure = 3,2
  c16^"(3+2)" c c c c |
}

[image of music]

\relative {
  \time 4/4
  a'8^"default" a a a a a a a
  % Disable beamExceptions because they are definitely
  % defined for 4/4 time
  \set Timing.beamExceptions = #'()
  \set Timing.baseMoment = #(ly:make-moment 1/4)
  \set Timing.beatStructure = 1,1,1,1
  a8^"changed" a a a a a a a
}

[image of music]

Les effets de règles de ligature peuvent être restreints à un contexte particulier. En l’absence de règle particulière déterminée dans un contexte de niveau inférieur, les règles définies au niveau directement supérieur s’appliqueront.

\new Staff {
  \time 7/8
  % No need to disable beamExceptions
  % as they are not defined for 7/8 time
  \set Staff.beatStructure = 2,3,2
  <<
    \new Voice = one {
      \relative {
        a'8 a a a a a a
      }
    }
    \new Voice = two {
      \relative {
        \voiceTwo
        \set Voice.beatStructure = 1,3,3
        f'8 f f f f f f
      }
    }
  >>
}

[image of music]

Lorsque plusieurs voix cohabitent sur une même portée et que les règles de ligature doivent s’appliquer sans distinction, il faut spécifier que ces règles affectent le contexte Staff :

\time 7/8
% rhythm 3-1-1-2
% Change applied to Voice by default --  does not work correctly
% Because of autogenerated voices, all beating will
% be at baseMoment (1 . 8)
\set beatStructure = 3,1,1,2
<< \relative {a'8 a a a16 a a a a8 a} \\ \relative {f'4. f8 f f f} >>

% Works correctly with context Staff specified
\set Staff.beatStructure = 3,1,1,2
<< \relative {a'8 a a a16 a a a a8 a} \\ \relative {f'4. f8 f f f} >>

[image of music]

Vous pouvez ajuster la valeur de baseMoment afin d’obtenir des ligatures selon vos besoin. Notez cependant que la valeur de beatStructure devra être en corrélation avec cette nouvelle valeur de baseMoment.

\time 5/8
% No need to disable beamExceptions
% as they are not defined for 5/8 time
\set Timing.baseMoment = #(ly:make-moment 1/16)
\set Timing.beatStructure = 7,3
\repeat unfold 10 { a'16 }

[image of music]

baseMoment constitue un moment, autrement dit une unité de durée musicale. La fonction Scheme ly:make-moment est tout particulièrement chargée de créer cette quantité de type moment – voir Gestion du temps pour plus de précisions.

La pulsation – baseMoment en anglais – découle directement de la métrique telle que définie par la commande \time. Elle est par défaut égale à un sur le dénominateur de la métrique. Les exceptions à cette règle par défaut sont répertoriées dans le fichier ‘scm/time-signature-settings.scm’. Pour savoir comment jouer avec la valeur de baseMoment selon la métrique, reportez vous au chapitre Métrique.

Les règles de ligature et de subdivision spécifiques sont enregistrées dans la propriété beamExceptions. Ses valeurs par défaut, rangées par métrique et type de règle, sont répertoriées dans le fichier ‘scm/time-signature-settings.scm’.

Ligature basée sur beamExceptions

Les règles spécifiques autres que celles concernant la terminaison des ligatures sont gérées par la propriété beamExceptions.

\relative c'' {
  \time 3/16
  \set Timing.beatStructure = 2,1
  \set Timing.beamExceptions =
    \beamExceptions { 32[ 32] 32[ 32] 32[ 32] }
  c16 c c |
  \repeat unfold 6 { c32 } |
}

[image of music]

Note : La propriété beamExceptions doit répertorier absolument toutes les exceptions. Il n’est en effet pas possible d’en ajouter, modifier ou supprimer a posteriori. Cela peut paraître fastidieux, mais toutes les règles de ligature devraient être appréciées avant de les spécifier.

Lorsqu’intervient un changement de métrique, les valeurs par défaut de Timing.baseMoment, Timing.beatStructure et Timing.beamExceptions sont réinitialisées. Il suffit donc, pour revenir aux règles de ligature par défaut d’un contexte Timing, de spécifier à nouveau la métrique.

\relative a' {
  \time 6/8
  \repeat unfold 6 { a8 }
  % group (4 + 2)
  \set Timing.beatStructure = 4,2
  \repeat unfold 6 { a8 }
  % go back to default behavior
  \time 6/8
  \repeat unfold 6 { a8 }
}

[image of music]

Les règles de ligature automatique par défaut sont répertoriées, par métrique, dans le fichier ‘scm/time-signature-settings.scm’. Les manières de déroger à ce comportement sont abordées au chapitre Métrique.

De nombreuses règles de ligature automatique comportent une clé beamExceptions. Par exemple, s’il n’y a que des croches dans une mesure à 4/4, celles-ci seront réparties en deux groupes. Le fait de ne pas réinitialiser beamExceptions lors d’un aménagement de la pulsation – l’élément beatStructure – empêchera l’application de cette dérogation.

\time 4/4
\set Timing.baseMoment = #(ly:make-moment 1/8)
\set Timing.beatStructure = 3,3,2
% This won't beam (3 3 2) because of beamExceptions
\repeat unfold 8 {c''8} |
% This will beam (3 3 2) because we clear beamExceptions
\set Timing.beamExceptions = #'()
\repeat unfold 8 {c''8}

[image of music]

De la même manière, les croches d’une mesure à 3/4 sont ligaturées sur la mesure par défaut. Ligaturer sur le temps requiert un appel à beamExceptions.

\time 3/4
% by default we beam in (6) due to beamExceptions
\repeat unfold 6 {a'8} |
% This will beam (1 1 1) due to default baseMoment and beatStructure
\set Timing.beamExceptions = #'()
\repeat unfold 6 {a'8}

[image of music]

Certaines partitions des périodes romantique ou classique font apparaître des ligatures sur la moitié d’une mesure à 3/4 (ou à 3/8), ce qui va à l’encontre de la règle établie – comme le fait remarquer Gould à la page 153 de son ouvrage – puisque donne l’impression d’une mesure à 6/8. Il en va de même pour une mesure à 3/8. La reproduction d’un tel comportement se contrôle à l’aide de la propriété de contexte beamHalfMeasure, qui d’ailleurs ne sera effective que lorsque le numérateur de la métrique est un 3.

\relative a' {
  \time 3/4
  r4. a8 a a |
  \set Timing.beamHalfMeasure = ##f
  r4. a8 a a |
}

[image of music]

Principes de la ligature automatique

Lorsqu’elle est activée, la gestion automatisée des ligatures est directement liée aux propriétés baseMoment, beatStructure et beamExceptions.

Les règles déterminant le positionnement des ligatures automatiques s’appliquent dans l’ordre suivant de priorité :

Le type de ligature correspond à la durée la plus courte dans le groupe.

Les règles de ligature par défaut sont répertoriées dans le fichier ‘scm/time-signature-settings.scm’.

Morceaux choisis

Subdivision des ligatures

Les ligatures d’une succession de notes de durée inférieure à la croche ne sont pas subdivisées par défaut. Autrement dit, tous les traits de ligature (deux ou plus) seront continus. Ce comportement peut être modifié afin de diviser la ligature en sous-groupes grâce à la propriété subdivideBeams. Lorsqu’elle est activée, les ligatures seront subdivisées selon un intervalle défini par baseMoment ; il n’y aura alors plus que le nombre de traits de ligature déterminé entre chaque sous-groupe. Si le groupe qui suit la division est plus court que la valeur pour la métrique en cours – généralement lorsque la ligature est incomplète –, le nombre de traits de ligature correspond au regroupement de la bubdivision la plus longue. Cette restriction ne sera toutefois pas appliquée dans le cas où ne reste qu’une note après la division. Par défaut, baseMoment fixe la valeur de référence par rapport à la métrique en vigueur. Il faudra donc lui fournir, à l’aide de la fonction ly:make-moment, une fraction correspondant à la durée du sous-groupe désiré comme dans l’exemple ci-dessous. Gardez à l’esprit que, si vous venez à modifier baseMoment, vous devrez probablement adapter beatStrusture afin qu’il reste en adéquation avec les nouvelles valeurs de baseMoment.

\relative c'' {
  c32[ c c c c c c c]
  \set subdivideBeams = ##t
  c32[ c c c c c c c]

  % Set beam sub-group length to an eighth note
  \set baseMoment = #(ly:make-moment 1/8)
  \set beatStructure = 2,2,2,2
  c32[ c c c c c c c]

  % Set beam sub-group length to a sixteenth note
  \set baseMoment = #(ly:make-moment 1/16)
  \set beatStructure = 4,4,4,4
  c32[ c c c c c c c]

  % Shorten beam by 1/32
  \set baseMoment = #(ly:make-moment 1/8)
  \set beatStructure = 2,2,2,2
  c32[ c c c c c c] r32

  % Shorten beam by 3/32
  \set baseMoment = #(ly:make-moment 1/8)
  \set beatStructure = 2,2,2,2
  c32[ c c c c] r16.
  r2
}

[image of music]

Ligature à la pulsation

Une sous-ligature tronquée peut pointer en direction de la pulsation à laquelle elle se rattache. Dans l’exemple suivant, la première ligature évite toute troncature (comportement par défaut), alors que la deuxième respecte rigoureusement la pulsation.

\relative c'' {
  \time 6/8
  a8. a16 a a
  \set strictBeatBeaming = ##t
  a8. a16 a a
}

[image of music] <