GNU LilyPond – Manuel de notation: 1.2.4 Barres de ligature

### 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.

>     \time 2/4 c8 c c c
>     \time 6/8 c8 c c c8. c16 c8

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` :

>     c4 c8 c8. c16 c8. c16 c8
>     \autoBeamOff
>     c4 c8 c8. c16 c8.
>     \autoBeamOn
>     c16 c8

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.

Note : 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
>     }

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`’ espace, 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
>     }

Partcombine et autoBeamOff

Le 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 apparament 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 |
>       }
>     }

#### 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 ligatures peuvent générer des collisions avec des têtes de note ou altérations appartenant à d’autres voix.

#### Définition des règles de ligature automatique

Dans la plupart des cas, une ligature automatique se termine à la fin d’une pulsation. Ce sont les propriétés de contexte `baseMoment` et `beatStructure` qui détermineront là où prend fin la pulsation. 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 au dénominateur de la métrique. D’autre part, chaque unité de `baseMoment` constitue une seule pulsation.

>     \time 5/16
>     c16^"default" c c c c |
>     \set Timing.beatStructure = #'(2 3)
>     c16^"(2+3)" c c c c |
>     \set Timing.beatStructure = #'(3 2)
>     c16^"(3+2)" c c c c |

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
>       \set Staff.beatStructure = #'(2 3 2)
>       <<
>         \new Voice = one {
>           \relative c'' {
>             a8 a a a a a a
>           }
>         }
>         \new Voice = two {
>           \relative c' {
>             \voiceTwo
>             \set Voice.beatStructure = #'(1 3 3)
>             f8 f f f f f f
>           }
>         }
>       >>
>     }

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
>     % Context Voice specified --  does not work correctly
>     % Because of autogenerated voices, all beating will
>     % be at baseMoment (1 . 8)
>     \set beatStructure = #'(3 1 1 2)
>     << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>

>     % Works correctly with context Staff specified
>     \set Staff.beatStructure = #'(3 1 1 2)
>     << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>

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
>     \set Timing.baseMoment = #(ly:make-moment 1 16)
>     \set Timing.beatStructure = #'(7 3)
>     \repeat unfold 10 { a16 }

`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`’.

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

>     \time 3/16
>     \set Timing.beatStructure = #'(2 1)
>     \set Timing.beamExceptions =
>       #'(                         ;ouvre de la liste associative
>          (end .                   ;ceci concerne la terminaison des ligatures
>           (                       ;ouvre la liste des points de terminaison
>            ((1 . 32) . (2 2 2))   ;règle pour les triples -- groupées à la double
>           )))                     %referme la liste
>     c16 c c |
>     \repeat unfold 6 { c32 } |

`beamExceptions` contient la liste des règles de ligature selon leur type.

Le seul type de règle pris en charge à ce jour est `#'end`, qui concerne les terminaisons.

Chaque règle est constituée d’une liste de doublets associatifs en langage Scheme (un alist pour les puristes), qui indique la durée de base et sa règle de regroupement.

>     #'((durée-type1 . groupement-1)
>        (durée-type2 . groupement-2)
>        (durée-type3 . groupement-3))

durée-type est constitué d’une paire indiquant la durée de base – par exemple `(1 . 16)` pour une double croche.

groupement est constitué d’une liste Scheme qui indique le regroupement à effectuer, en unité de type de ligature.

Note : La propriété `beamExceptions` doit contenir absolument toutes les exceptions. Il n’est en effet pas possible d’en ajouter, modifier ou suprimer 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.

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

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 {c8} |
>     % This will beam (3 3 2) because we clear beamExceptions
>     \set Timing.beamExceptions = #'()
>     \repeat unfold 8 {c8}

De la même manière, les croches d’une mesure à 3/4 sont par défaut ligaturées sur la mesure entière. Réinitialiser `beamExceptions` vous permettra alors de ligaturer les croches sur la base du temps.

>     \time 3/4
>     % by default we beam in (3) due to beamExceptions
>     \repeat unfold 6 {a8} |
>     % This will beam (1 1 1) due to beatLength
>     \set Timing.beamExceptions = #'()
>     \repeat unfold 6 {a8}

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é :

- Une ligature explicite – indiquée par `[…]` – sera toujours respectée ; sinon
- si une règle explicite de terminaison a été définie grâce à la propriété `beamExceptions` pour un type de ligature spécifique dans la métrique en cours, c’est elle qui s’appliquera ; sinon
- si une règle explicite de terminaison a été définie grâce à la propriété `beamExceptions` pour un type de ligature plus large, c’est elle qui s’appliquera ; sinon
- utilisation des valeurs de `baseMoment` et `beatStructure` pour regrouper les notes par des ligatures.

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

Pour information, 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 qu’un seul trait de ligature entre chaque sous-groupe. 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]
>     }

Signes de direction signes de sous-groupe

Les règles de ligature par mesure sont gérées par la propriété `beatStructure`. Ses valeurs par défaut sont répertoriées, par métrique, dans le fichier `scm/time-signature-settings.scm`. Elles sont modifiables grâce à la commande `\set`. La fonction Scheme `set-time-signature` permet quant à elle de définir à la fois la métrique et la pulsation. Celle-ci prend trois arguments : le nombre de pulsations, la durée de la pulsation et le regroupement des pulsations dans la mesure. `\time` et `set-time-signature` s’appliquent tous deux au contexte `Timing` ; ils ne redéfiniront donc pas les valeurs de `beatStructure` ou `baseMoment` lorsque qu’elles sont modifiées dans un contexte de niveau inférieur comme `Voice` par exemple. Si l’on fait appel au `Measure_grouping_engraver`, la fonction `set-time-signature` créera aussi des symboles `MeasureGrouping`. Ces symboles aident à la lecture des œuvres modernes à la rythmique complexe. Dans l’exemple qui suit, la mesure à 9/8 est divisée en 2, 2, 2 et 3, alors que la mesure à 5/8 répond aux règles par défaut contenues dans le fichier `scm/beam-settings.scm`.

>     \score {
>       \new Voice \relative c'' {
>         \time 9/8
>         g8 g d d g g a( bes g) |
>         \set Timing.beatStructure = #'(2 2 2 3)
>         g8 g d d g g a( bes g) |
>         #(set-time-signature 9 8 '(4 5))
>         g8 g d d g g a( bes g) |
>         \time 5/8
>         a4. g4 |
>       }
>       \layout {
>         \context {
>           \Staff
>           \consists "Measure_grouping_engraver"
>         }
>       }
>     }

Définition de règles de ligature pour la partition

Les règles de ligatures définies au niveau du contexte `Score` s’appliqueront à toutes les portées. Il est toutefois possible de moduler au niveau `Staff` ou `Voice` :

>     \relative c'' {
>       \time 5/4
>       % Set default beaming for all staves
>       \set Score.baseMoment = #(ly:make-moment 1 8)
>       \set Score.beatStructure = #'(3 4 3)
>       <<
>         \new Staff {
>           c8 c c c c c c c c c
>         }
>         \new Staff {
>           % Modify beaming for just this staff
>           \set Staff.beatStructure = #'(6 4)
>           c8 c c c c c c c c c
>         }
>         \new Staff {
>           % Inherit beaming from Score context
>           <<
>             {
>               \voiceOne
>               c8 c c c c c c c c c
>             }
>             % Modify beaming for this voice only
>             \new Voice {
>               \voiceTwo
>               \set Voice.beatStructure = #'(6 4)
>               a8 a a a a a a a a a
>             }
>           >>
>         }
>       >>
>     }

#### Voir aussi

Fichiers d’initialisation : ‘`scm/beam-settings.scm`’.

Morceaux choisis : Rythme.

Référence des propriétés internes : Auto_beam_engraver, Beam, BeamForbidEvent, beam-interface.

#### Problèmes connus et avertissements

Si une partition se termine alors qu’une ligature automatique est restée inachevée, cette dernière ligature ne sera pas imprimée du tout. C’est également valable dans le cas d’une musique polyphonique saisie avec la syntaxe `<< … \\ … >>`, où une voix se terminerait sans que la dernière ligature ne soit achevée. Le plus simple, en pareil cas, est de spécifier manuellement les dernières ligatures.

Le traducteur `Timing` est par défaut affecté au contexte `Score`. Définir la métrique dans une portée aura donc des effets sur les ligatures de toutes les autres. Par voie de conséquence, la définition de la métrique apparaissant dans une autre portée annulera les aménagements précédemment apportés aux règles de ligature. Il est donc préférable, pour éviter tout désagrément, de ne spécifier la métrique que dans une seule portée.

>     <<
>       \new Staff {
>         \time 3/4
>         \set Timing.baseMoment = #(ly:make-moment 1 8)
>         \set Timing.beatStructure = #'(1 5)
>         \set Timing.beamExceptions = #'()
>         \repeat unfold 6 { a8 }
>       }
>       \new Staff {
>         \repeat unfold 6 { a8 }
>       }
>     >>

Vous pouvez adapter les règles de ligature par défaut pour une métrique particulière de telle sorte que ces règles que vous aurez définies soient toujours prises en compte. La modification des règles de ligature automatiques sont abordées au chapitre Métrique.

>     <<
>       \new Staff {
>         \overrideTimeSignatureSettings
>           #'(3 . 4)         % timeSignatureFraction
>           #'(1 . 8)         % baseMomentFraction
>           #'(1 5)           % beatStructure
>           #'()		% beamExceptions
>         \time 3/4
>         \repeat unfold 6 { a8 }
>       }
>       \new Staff {
>         \time 3/4
>         \repeat unfold 6 { a8 }
>       }
>     >>

#### Barres de ligature manuelles

Dans certaines situations, il peut s’avérer nécessaire de supplanter l’algorithme de groupement automatique des notes, par exemple pour prolonger une ligature par-dessus un silence ou une barre de mesure, ou bien pour suivre le rythme des paroles plutôt que celui des notes. Le début et la fin de la ligature sont alors indiqués respectivement par `[` et `]`.

>     r4 r8[ g' a r] r8 g[ | a] r

Le positionnement des ligature manuelles se détermine comme pour toute indication attachée à une note :

>     c8^[ d e] c,_[ d e f g]

Le fait d’affubler une note particulière d’un `\noBeam` aura pour effet de l’empêcher d’être ligaturée :

>     \time 2/4
>     c8 c\noBeam c c

Notes d’ornement et normales font l’objet d’un traitement distinct. Il est dont possible de ligaturer ou non des notes d’ornement sans géner ce qui est en place au niveau de la notation normale.

>     c4 d8[
>     \grace { e32[ d c d] }
>     e8] e[ e
>     \grace { f16 }
>     e8 e]

LilyPond peut déterminer automatiquement les sous-groupes à l’intérieur d’un groupement de notes, bien que le résultat ne soit pas toujours optimal. Les propriétés `stemLeftBeamCount` et `stemRightBeamCount` permettent alors d’ajuster ce comportement. Lorsque l’une ou l’autre de ces propriétés est définie, elle ne s’applique qu’une seule fois, après quoi sa définition est effacée. Dans l’exemple qui suit, le dernier `fa` n’a de ligature supplémentaire que sur sa gauche ; autrement dit, c’est la ligature à la croche qui est importante.

>     a8[ r16 f g a]
>     a8[ r16
>     \set stemLeftBeamCount = #2
>     \set stemRightBeamCount = #1
>     f16
>     \set stemLeftBeamCount = #1
>     g16 a]

#### Commandes prédéfinies

`\noBeam`.

#### Morceaux choisis

Crochet rectiligne et débordement de ligature

En combinant `stemLeftBeamCount`, `stemRightBeamCount` et des paires de `[]`, vous pourrez obtenir des crochets rectilignes et des ligatures qui débordent à leurs extrémités.

Pour des crochets rectilignes à droite sur des notes isolées, il suffit d’ajouter une paire d’indicateurs de ligature `[]` et de déterminer `stemLeftBeamCount` à zéro, comme dans l’exemple 1.

Pour des crochets rectiligne à gauche, c’est `stemRightBeamCount` qu’il faudra déterminer (exemple 2).

Pour que les barres de ligature débordent sur la droite, `stemRightBeamCount` doit avoir une valeur positive ; pour un débrodement à gauche, c’est sur `stemLeftBeamCount` qu’il faut jouer. Tout ceci est illustré par l’exemple 3.

Il est parfois judicieux, lorsqu’une note est encadrée de silences, de l’affubler de crochets rectilignes de part et d’autre. L’exemple 4 montre qu’il suffit d’adjoindre à cette note un `[]`.

(Notez bien que `\set stemLeftBeamCount` sera toujours synonyme de `\once \set`. Autrement dit, la détermination des ligatures n’est pas « permanente » ; c’est la raison pour laquelle les crochets du `c'16[]` isolé du dernier exemple n’ont rien à voir avec le `\set` indiqué deux notes auparavant.)

>     \score {
>       <<
>         % Example 1
>         \new RhythmicStaff {
>           \set stemLeftBeamCount = #0
>           c16[]
>           r8.
>         }
>         % Example 2
>         \new RhythmicStaff {
>           r8.
>           \set stemRightBeamCount = #0
>           c16[]
>         }
>         % Example 3
>         \new RhythmicStaff {
>           c16 c
>           \set stemRightBeamCount = #2
>           c16 r r
>           \set stemLeftBeamCount = #2
>           c16 c c
>         }
>         % Example 4
>         \new RhythmicStaff {
>           c16 c
>           \set stemRightBeamCount = #2
>           c16 r
>           c16[]
>           r16
>           \set stemLeftBeamCount = #2
>           c16 c
>         }
>       >>
>     }

#### Voir aussi

Manuel de notation : Direction et positionnement, Notes d’ornement.

Morceaux choisis : Rythme.

Référence des propriétés internes : Beam, BeamEvent, Beam_engraver, beam-interface, Stem_engraver.

#### Liens de croches en soufflet

Les ligatures en soufflet permettent d’indiquer qu’un petit groupe de notes se joue en accélérant ou en ralentissant sans pour autant modifier le tempo du morceau. L’étendue du soufflet s’indique par `[` et `]`, et son orientation est déterminée par la propriété `grow-direction` de l’objet `Beam`.

Lorsque la sortie MIDI doit refléter les ritardando ou accelerando indiqués par une ligature en soufflet, les notes qui la composent doivent être regroupées dans une expression musicale délimitée par des accolades, précédée de la commande `featherDurations`. Cette commande détermine le ratio entre les durées des premières et dernières notes du groupe en question.

Les crochets indiquent l’étendue de la ligature et les accolades les notes concernées par une modification de leur durée. Il s’agit en général du même groupe de notes, mais les deux commandes sont indépendantes l’une de l’autre.

Dans l’exemple ci-après, les huit doubles croches occupent exactement le même espace qu’une blanche, mais la première est moitié moins longue que la dernière et celles qui les séparent s’allongent peu à peu. Les quatre triples croches qui suivent vont s’accélérant, alors que les quatre dernières gardent un tempo régulier.

>     \override Beam #'grow-direction = #LEFT
>     \featherDurations #(ly:make-moment 2 1)
>     { c16[ c c c c c c c] }
>     \override Beam #'grow-direction = #RIGHT
>     \featherDurations #(ly:make-moment 2 3)
>     { c32[ d e f] }
>     % revert to non-feathered beams
>     \override Beam #'grow-direction = #'()
>     { g32[ a b c] }

Si le résultat imprimable ne reflète les durées que de manière approximative, la sortie MIDI sera quant à elle parfaitement « ponctuelle ».

#### Commandes prédéfinies

`\featherDurations`.

#### Voir aussi

Morceaux choisis : Rythme.

#### Problèmes connus et avertissements

La commande `\featherDurations` ne permet de traiter que de très courts extraits, avec une faible amplitude.

Autres langues : English, deutsch, español, 日本語.

#### LilyPond — Manuel de notation