GNU LilyPond – Manuel de notation: 1.2.5 Mesures

### 1.2.5 Mesures

#### Barres de mesure

Les barres de mesures délimitent les mesures, mais peuvent aussi indiquer une reprise. En principe, elles sont insérées automatiquement en respectant la métrique en vigueur.

Il est possible de forcer l’impression d’une barre de mesure spéciale, avec la commande `\bar` – c’est d’ailleurs l’habitude en fin de morceau, où l’on voit une double barre :

>     \relative { e'4 d c2 \bar "|." }

Rien ne s’oppose à ce que la dernière note d’une mesure ne s’arrête avant la barre de mesure ; on considère simplement qu’elle se prolonge sur la mesure suivante. Des débordements à répétition finissent par générer une musique comprimée ou qui sort de la page, pour la simple et bonne raison que les sauts de ligne automatiques ne peuvent intervenir qu’à la fin d’une mesure complète, autrement dit lorsque toutes les notes sont terminées avant la fin de la mesure.

Note : Une durée erronée peut empêcher les sauts de ligne, ce qui conduit à une musique compressée, voire à un débordement de la page.

Il est possible d’autoriser un saut de ligne même s’il n’y a pas de barre de mesure visible, en utilisant :

>     \bar ""

Ceci insérera une barre de mesure invisible, et permettra – sans pour autant le forcer – de sauter de ligne à cet endroit, sans incrémenter le numéro de mesure. Pour forcer le saut de ligne, référez vous à Sauts de ligne.

Cette barre invisible, ainsi que d’autres barres spéciales, peuvent être insérées manuellement n’importe où. Lorsqu’elles coïncident avec la fin d’une mesure, elles remplacent la simple barre que LilyPond aurait insérée automatiquement. Dans le cas contraire, la barre spécifiée s’insérera là où vous l’aurez positionnée.

Ces insertions n’affectent en rien le calcul du positionnement automatique des barres de mesure à suivre ni les propriétés y afférentes – numérotation, altérations accidentelles, sauts de ligne…
Lorsqu’une barre manuelle est insérée à l’endroit où viendrait se placer une barre normale, seul l’effet visuel en sera modifié.

Vous disposez de deux types de barres simples et de cinq différentes doubles barres :

>     \relative {
>       f'1 \bar "|"
>       f1 \bar "."
>       g1 \bar "||"
>       a1 \bar ".|"
>       b1 \bar ".."
>       c1 \bar "|.|"
>       d1 \bar "|."
>       e1
>     }

ainsi que d’une barre en pointillé et d’une discontinue :

>     \relative {
>       f'1 \bar ";"
>       g1 \bar "!"
>       a1
>     }

et de neuf types de barre de reprise :

>     \relative {
>       f'1 \bar ".|:"
>       g1 \bar ":..:"
>       a1 \bar ":|.|:"
>       b1 \bar ":|.:"
>       c1 \bar ":.|.:"
>       d1 \bar "[|:"
>       e1 \bar ":|][|:"
>       f1 \bar ":|]"
>       g1 \bar ":|."
>       a1
>     }

De plus, une barre de mesure peut s’imprimer sous la forme d’une coche :

>     f'1 \bar "'" g'1

On rencontre habituellement ces signes dans le chant grégorien ; nous vous invitons dans ce cadre particulier à plutôt utiliser `\divisioMinima`, comme indiqué au paragraphe Divisions du chapitre consacré au grégorien.

LilyPond prend en charge la notation kiévienne, qui dispose d’une barre de mesure spécifique :

>     f'1 \bar "k"

De plus amples détails quant à cette forme de notation sont fournis à la rubrique Typographie de notation kiévienne.

L’insertion d’un segno directement sur la portée s’obtient à l’aide de trois types de barre de mesure, comme indiqué ci-dessous :

>     \relative c'' {
>       c4 c c c
>       \bar "S"
>       c4 c c c \break
>       \bar "S"
>       c4 c c c
>       \bar "S-|"
>       c4 c c c \break
>       \bar "S-|"
>       c4 c c c
>       \bar "S-S"
>       c4 c c c \break
>       \bar "S-S"
>       c1
>     }

Bien que l’on puisse insérer des barres de reprise manuellement, LilyPond n’en déduira pas pour autant qu’il s’agit d’un passage à répéter. Il est préférable d’indiquer les passages répétés à l’aide des différentes commandes de reprise (voir Répétitions et reprises) qui se chargeront d’imprimer le type de barre approprié.

Dans les faits, un `".|:-||"` équivaut à un `".|:"` sauf s’il intervient à un saut de ligne : une double barre sera alors imprimée en fin de portée, et la barre de reprise au début de la nouvelle.

>     \relative c'' {
>       c4 c c c
>       \bar ".|:-||"
>       c4 c c c \break
>       \bar ".|:-||"
>       c4 c c c
>     }

LilyPond dispose de six différents moyens de combiner une barre de reprise avec un segno :

>     \relative c'' {
>       c4 c c c
>       \bar ":|.S"
>       c4 c c c \break
>       \bar ":|.S"
>       c4 c c c
>       \bar ":|.S-S"
>       c4 c c c \break
>       \bar ":|.S-S"
>       c4 c c c
>       \bar "S.|:-S"
>       c4 c c c \break
>       \bar "S.|:-S"
>       c4 c c c
>       \bar "S.|:"
>       c4 c c c \break
>       \bar "S.|:"
>       c4 c c c
>       \bar ":|.S.|:"
>       c4 c c c \break
>       \bar ":|.S.|:"
>       c4 c c c
>       \bar ":|.S.|:-S"
>       c4 c c c \break
>       \bar ":|.S.|:-S"
>       c1
>     }

Par ailleurs, la commande `\inStaffSegno` crée une barre de mesure surmontée d’un segno, et sait coopérer avec l’instruction `\repeat volta` – voir Répétitions courantes.

L’instruction `\defineBarLine` permet de définir ses propres types de barre de mesure, en respectant la syntaxe :

>     \defineBarLine type_de_barre #'(fin début extension)

Au-delà de type_de_barre (la chaîne de caractères qui sera utilisée pour faire appel à cette nouvelle barre), cette instruction prend trois valeurs : les deux premières déterminent l’apparence de la barre lorsqu’elle intervient sur un saut de ligne, auquel cas les premier et second glyphes indiqués s’imprimeront respectivement à la fin du système et au début du suivant. Le troisième glyphe indiqué n’est utile que dans le cas d’un système à plusieurs portées (voir Regroupement de portées) où il apparaîtra en tant qu’extension entre les portées.

Les variables fournies à `\defineBarline` peuvent inclure la chaîne vide `""` qui correspond à une barre invisible, ou bien être valorisées à `#f` – ce qui aura pour effet de n’imprimer aucune barre.

Une fois la définition explicitée, la nouvelle barre s’utilise à l’aide de `\bar` type_de_barre.

Sont à ce jour disponibles dix éléments différents :

>     \defineBarLine ":" #'("" ":" "")
>     \defineBarLine "=" #'("=" "" "")
>     \defineBarLine "[" #'("" "[" "")
>     \defineBarLine "]" #'("]" "" "")

>     \new Staff {
>       s1 \bar "|"
>       s1 \bar "."
>       s1 \bar "!"
>       s1 \bar ";"
>       s1 \bar ":"
>       s1 \bar "k"
>       s1 \bar "S"
>       s1 \bar "="
>       s1 \bar "["
>       s1 \bar "]"
>       s1 \bar ""
>     }

Le type `"="` fournit un double trait destiné à être utilisé en combinaison avec un segno. Nous vous recommandons de lui préférer `\bar` "||" pour imprimer une simple double barre fine.

Le signe `"-"` permet d’annoter un type de barre de mesure pour le distinguer lorsqu’il en existe plusieurs ayant la même apparence mais au comportement différent en fin de ligne ou en matière d’extension. Ce qui suit le `"-"` n’est d’aucune utilité dans la construction de la barre.

>     \defineBarLine "||-dashedSpan" #'("||" "" "!!")

>     \new StaffGroup <<
>       \new Staff \relative c'' {
>         c1 \bar "||"
>         c1 \bar "||-dashedSpan"
>         c1
>       }
>       \new Staff \relative c'' {
>         c1
>         c1
>         c1
>       }
>     >>

Par ailleurs, le caractère espace `" "` permer de préserver de l’espace et ainsi aligner correctement les différents tronçons d’une barre d’un seul tenant entre les portées d’un système :

>     \defineBarLine ":|.-wrong" #'(":|." "" "|.")
>     \defineBarLine ":|.-right" #'(":|." "" " |.")

>     \new StaffGroup <<
>       \new Staff \relative c'' {
>         c1 \bar ":|.-wrong"
>         c1 \bar ":|.-right"
>         c1
>       }
>       \new Staff \relative c'' {
>         c1
>         c1
>         c1
>       }
>     >>

Un nouveau type de barre de mesure défini à l’aide de `\defineBarLine` peut même, à son tour, s’utiliser dans la définition d’un autre. Une telle définition « imbriquée » autorise le recours à des glyphes personnalisés là où ce ne serait en principe pas possible, comme en fin de système :

>     \defineBarLine "||-dashEverywhere" #'("!!" "!!" "!!")
>     \defineBarLine "||-advancedDashSpan" #'("||-dashEverywhere" "" "!!")

>     \new StaffGroup <<
>       \new Staff \relative c'' {
>         c1 \bar "||"
>         c1 \bar "||-advancedDashSpan"
>         c1 \bar "||-advancedDashSpan"
>       }
>       \new Staff \relative c'' {
>         c1
>         c1
>         c1
>       }
>     >>

Si d’autres éléments étaient nécessaires, LilyPond dispose de moyens aisés pour les définir. Pour de plus amples informations quant à la manière de modifier ou ajouter des barres de mesure, consultez le fichier ‘`scm/bar-line.scm`’.

Dans une partition comprenant plusieurs portées, la commande `\bar` placée sur une portée s’applique automatiquement à toutes les portées. Les barres de mesure que l’on obtient alors sont d’un seul tenant sur les portées d’un `StaffGroup`, d’un `PianoStaff` ou d’un `GrandStaff`.

>     <<
>       \new StaffGroup <<
>         \new Staff \relative {
>           e'4 d
>           \bar "||"
>           f4 e
>         }
>         \new Staff \relative { \clef bass c'4 g e g }
>       >>
>       \new Staff \relative { \clef bass c'2 c2 }
>     >>

La commande ‘`\bar type_de_barre`’ sert de raccourci pour ‘`\set Timing.whichBar = type_de_barre`’. Dès que l’on définit `whichBar`, une barre de mesure est créée selon le style défini.

Le type de barre de mesure par défaut utilisé pour l’insertion automatique est `"|"`. Vous pouvez en changer à tout moment grâce à ‘`\set Timing.defaultBarType = type_de_barre`’.

#### Voir aussi

Manuel de notation : Regroupement de portées, Répétitions et reprises, Sauts de ligne.

Fichiers d’initialisation : ‘`scm/bar-line.scm`’.

Morceaux choisis : Rythme.

Référence des propriétés internes : BarLine (faisant partie du contexte `Staff`), SpanBar (sur plusieurs portées), Timing_translator (pour les propriétés liées au temps).

#### Numéros de mesure

Les numéros de mesure sont imprimés par défaut à chaque début de ligne, sauf la première. Ce nombre est stocké par la propriété `currentBarNumber` qui sera mise à jour à chaque mesure. Vous pouvez aussi le définir de manière arbitraire :

>     \relative c' {
>       c1 c c c
>       \break
>       \set Score.currentBarNumber = #50
>       c1 c c c
>     }

Vous pouvez imprimer un numéro de mesure à intervalle régulier plutôt qu’en tête de chaque ligne. Pour y arriver, il faudra dans un premier temps annuler le comportement par défaut afin que les numéros puissent être imprimés ailleurs qu’en début de ligne. Tout ceci est contrôlé par la propriété `break-visibility` du `BarNumber`. Elle se compose de trois commutateurs – définis à « vrai » (`#t`) ou « faux » (`#f`) – pour spécifier si le numéro de mesure est visible ou non. Les valeurs sont rangées dans l’ordre suivant : `visible en fin de ligne`, `visible en cours de ligne` et `visible en début de ligne`. Voici comment imprimer partout les numéros de mesure :

>     \relative c' {
>       \override Score.BarNumber.break-visibility = ##(#t #t #t)
>       \set Score.currentBarNumber = #11
>       % Permit first bar number to be printed
>       \bar ""
>       c1 | c | c | c |
>       \break
>       c1 | c | c | c |
>     }

#### Morceaux choisis

Afficher le numéro de la première mesure

Par défaut, LilyPond n’affiche pas le premier numéro de mesure s’il est inférieur à 2. Le fait de définir `barNumberVisibility` à `all-bar-numbers-visible` vous permettra d’imprimer n’importe quel numéro pour la première mesure. Notez que l’impression d’un numéro de mesure ne peut intervenir que s’il y a une barre. Aussi, pour pouvoir le faire au début d’un morceau, devrez-vous ajouter une barre vide avant la première note.

>     \layout {
>       indent = 0
>       ragged-right = ##t
>     }

>     \relative c' {
>       \set Score.barNumberVisibility = #all-bar-numbers-visible
>       \bar ""
>       c1 | d | e | f \break
>       g1 | e | d | c
>     }

Imprimer les numéros de mesure à intervalle régulier

Vous pouvez imprimer un numéro de mesure à intervalle régulier plutôt qu’en tête de chaque ligne seulement, en recourant à la propriété `barNumberVisibility`. Voici comment afficher le numéro toutes les deux mesures sauf en fin de ligne.

>     \relative c' {
>       \override Score.BarNumber.break-visibility = #end-of-line-invisible
>       \set Score.currentBarNumber = #11
>       % Permit first bar number to be printed
>       \bar ""
>       % Print a bar number every second measure
>       \set Score.barNumberVisibility = #(every-nth-bar-number-visible 2)
>       c1 | c | c | c | c
>       \break
>       c1 | c | c | c | c
>     }

Changement de la fréquence d’impression du numéro de mesure

La fonction de contexte `set-bar-number-visibility` permet de modifier la fréquence à laquelle les numéros de mesures s’impriment.

>     \relative c' {
>       \override Score.BarNumber.break-visibility = #end-of-line-invisible
>       \context Score \applyContext #(set-bar-number-visibility 4)
>       \repeat unfold 10 c'1
>       \context Score \applyContext #(set-bar-number-visibility 2)
>       \repeat unfold 10 c
>     }

Inscrire le numéro de mesure dans un cadre ou un cercle

Les numéros de mesure peuvent être encadrés ou entourés d’un cercle.

>     \relative c' {
>       % Prevent bar numbers at the end of a line and permit them elsewhere
>       \override Score.BarNumber.break-visibility = #end-of-line-invisible
>       \set Score.barNumberVisibility = #(every-nth-bar-number-visible 4)

>       % Increase the size of the bar number by 2
>       \override Score.BarNumber.font-size = #2

>       % Draw a box round the following bar number(s)
>       \override Score.BarNumber.stencil
>         = #(make-stencil-boxer 0.1 0.25 ly:text-interface::print)
>       \repeat unfold 5 { c1 }

>       % Draw a circle round the following bar number(s)
>       \override Score.BarNumber.stencil
>         = #(make-stencil-circler 0.1 0.25 ly:text-interface::print)
>       \repeat unfold 4 { c1 } \bar "|."
>     }

Numérotation des mesures et alternatives

Deux méthodes alternatives vous permettent de gérer la numérotation des mesures en cas de reprises.

>     \relative c'{
>       \set Score.alternativeNumberingStyle = #'numbers
>       \repeat volta 3 { c4 d e f | }
>         \alternative {
>           { c4 d e f | c2 d \break }
>           { f4 g a b | f4 g a b | f2 a | \break }
>           { c4 d e f | c2 d }
>         }
>       c1 \break
>       \set Score.alternativeNumberingStyle = #'numbers-with-letters
>       \repeat volta 3 { c,4 d e f | }
>         \alternative {
>           { c4 d e f | c2 d \break }
>           { f4 g a b | f4 g a b | f2 a | \break }
>           { c4 d e f | c2 d }
>         }
>       c1
>     }

Alignement des numéros de mesure

Les numéros de mesure s’alignent en principe sur la droite de l’objet dont ils dépendent. C’est normalement le coin gauche de la portée ou, en cours de ligne, à gauche de la barre. Vous pouvez toutefois les centrer par rapport à la barre ou les afficher à droite de la barre.

>     \relative c' {
>       \set Score.currentBarNumber = #111
>       \override Score.BarNumber.break-visibility = #all-visible
>       % Increase the size of the bar number by 2
>       \override Score.BarNumber.font-size = #2
>       % Print a bar number every second measure
>       \set Score.barNumberVisibility = #(every-nth-bar-number-visible 2)
>       c1 | c1
>       % Center-align bar numbers
>       \override Score.BarNumber.self-alignment-X = #CENTER
>       c1 | c1
>       % Left-align bar numbers
>       \override Score.BarNumber.self-alignment-X = #LEFT
>       c1 | c1
>     }

Suppression des numéros de mesure d’une partition

Désactiver le graveur concerné – `Bar_number_engraver` – donnera une partition – contexte `Score` – sans numéros de mesure.

>     \layout {
>       \context {
>         \Score
>         \omit BarNumber
>         % or:
>         %\remove "Bar_number_engraver"
>       }
>     }

>     \relative c'' {
>       c4 c c c \break
>       c4 c c c
>     }

#### Voir aussi

Morceaux choisis : Rythme.

Référence des propriétés internes : BarNumber, Bar_number_engraver.

#### Problèmes connus et avertissements

Les numéros de mesure peuvent entrer en collision avec les crochets d’un StaffGroup. La propriété `padding` – décalage – de l’objet BarNumber permet alors d’ajuster leur positionnement.

#### Vérification des limites et numéros de mesure

Les tests de limite de mesure (ou tests de mesure) aident à détecter les erreurs dans les durées. Un test de mesure s’écrit avec une barre verticale, `|`. Lors du traitement, elle doit correspondre à une barre de mesure. Sinon, un avertissement est émis qui indique le numéro de ligne où est détectée l’erreur. Dans l’exemple suivant, le deuxième test de mesure signale une erreur.

>     \time 3/4 c2 e4 | g2 |

Des durées incorrectes font échouer les tests de mesure et peuvent souvent mettre la partition sens dessus dessous, particulièrement s’il s’agit de musique polyphonique. Vérifier les tests de mesure qui ont échoué et les durées incorrectes est un bon moyen de commencer à corriger sa partition.

Lorsque plusieurs tests successifs présentent un même décalage, seul le message d’avertissement concernant la première occurrence est affiché. L’origine du problème est de fait plus évidente.

Le test de mesure peut être aussi utilisé dans les paroles, par exemple :

>     \lyricmode {
>      \time 2/4
>      Twin -- kle | Twin -- kle
>     }

Notez bien qu’en matière de paroles, le test est effectué à l’instant musical où la syllabe suivant la marque est traitée. Par voie de conséquence, lorsqu’une mesure débute par un silence, il n’y a pas moyen de positionner une syllabe à cet endroit, et LilyPond émettra un avertissement.

Il est aussi possible d’attribuer une autre valeur au symbole `|`, en assignant une expression musicale à `"|"`. Dans l’exemple suivant, le `|` servira à insérer une double barre là où il apparaît, au lieu de simplement vérifier que la fin de la mesure est atteinte.

>     "|" = \bar "||"
>     {
>       c'2 c' |
>       c'2 c'
>       c'2 | c'
>       c'2 c'
>     }

Lorsque l’on recopie de longues pièces, il peut être utile de vérifier que les numéros de mesure de LilyPond correspondent à l’original que l’on recopie. Cela se fait avec `\barNumberCheck`. Par exemple,

    \barNumberCheck #123

affiche un avertissement lors du traitement si le numéro de mesure à ce point (variable `currentBarNumber`) n’est pas égal à 123.

#### Voir aussi

Morceaux choisis : Rythme.

#### Indications de repère

Indiquer un repère s’obtient grâce à la commande `\mark`.

>     \relative c'' {
>       c1 \mark \default
>       c1 \mark \default
>       c1 \mark \default
>       c1 \mark \default
>     }

Lorsque vous utilisez `\mark \default`, le repère s’incrémente automatiquement ; toutefois donner un nombre en argument permet de spécifier manuellement le repère en question. La valeur à utiliser est enregistrée dans la propriété `rehearsalMark`.

>     \relative c'' {
>       c1 \mark \default
>       c1 \mark \default
>       c1 \mark #8
>       c1 \mark \default
>       c1 \mark \default
>     }

La lettre I n’est pas utilisée, conformément aux usages de la gravure. Cependant, vous pourrez intégrer la lettre I en utilisant l’une des commandes suivantes selon que ce repère doive être simple, inclus dans un rectangle ou dans un cercle :

>     \set Score.markFormatter = #format-mark-alphabet
>     \set Score.markFormatter = #format-mark-box-alphabet
>     \set Score.markFormatter = #format-mark-circle-alphabet

>     \relative c'' {
>       \set Score.markFormatter = #format-mark-box-alphabet
>       c1 \mark \default
>       c1 \mark \default
>       c1 \mark #8
>       c1 \mark \default
>       c1 \mark \default
>     }

Le style de repère est déterminé par la propriété `markFormatter`. Il s’agit d’une fonction qui prend en arguments le repère en cours (un entier) ainsi que le contexte en cours, et retournera un objet de type markup. Dans l’exemple qui suit, `markFormatter` est réglé pour une procédure type. Quelques mesures plus loin, son comportement est modifié pour imprimer un repère encadré.

>     \relative c'' {
>       \set Score.markFormatter = #format-mark-numbers
>       c1 \mark \default
>       c1 \mark \default
>       \set Score.markFormatter = #format-mark-box-numbers
>       c1 \mark \default
>       \set Score.markFormatter = #format-mark-circle-numbers
>       c1 \mark \default
>       \set Score.markFormatter = #format-mark-circle-letters
>       c1
>     }

Le fichier ‘`scm/translation-functions.scm`’ comporte les définitions de `format-mark-letters` (comportement par défaut), `format-mark-box-letters`, `format-mark-numbers` et `format-mark-box-numbers`. Vous pouvez vous en inspirer pour d’autres fonctions de formatage.

`format-mark-barnumbers`, `format-mark-box-barnumbers` et `format-mark-circle-barnumbers` permettent d’imprimer le numéro de mesure au lieu des compteurs alphabétique ou numérique.

On peut aussi spécifier manuellement une marque de repère :

>     \mark "A1"

`Score.markFormatter` sera sans effet sur des repères ainsi définis. Un `\markup` peut néanmoins s’utiliser en argument.

>     \mark \markup { \box A1 }

Un `\mark` peut contenir un glyphe musical tel que le signe segno.

>     \relative c' {
>       c1 \mark \markup { \musicglyph "scripts.segno" }
>       c1 \mark \markup { \musicglyph "scripts.coda" }
>       c1 \mark \markup { \musicglyph "scripts.ufermata" }
>       c1
>     }

Pour connaître les différents symboles accessibles par `\musicglyph`, consultez La fonte Emmentaler.

Pour affiner le positionnement des repères, veuillez vous référer à Mise en forme du texte, et tout particulièrement ce qui concerne la `break-alignable-interface` au chapitre Alignement des objets.

Les définitions `format-mark-numbers` et `format-mark-letters` sont inscrites dan le fichier ‘`scm/translation-functions.scm`’. Elles seront une source d’inspiration en matière de fonctions de formatage.

#### Voir aussi

Manuel de notation : Alignement des objets, La fonte Emmentaler, Mise en forme du texte.

Fichiers d’initialisation : ‘`scm/translation-functions.scm`’.

Morceaux choisis : Rythme.

Référence des propriétés internes : MarkEvent, Mark_engraver, RehearsalMark.

#### LilyPond — Manuel de notation v2.22.2 (branche stable).