GNU LilyPond – Manuel d'initiation: 4.5 Espacement vertical

## 4.5 Espacement vertical

En règle générale, LilyPond est plutôt performant en matière d’espacement vertical des objets musicaux. Examinons ce qui se passe avec un chant simple à deux voix accompagnées au piano :

Il n’y a rien à redire quant à l’espacement vertical. Toutefois, partons du principe que nous travaillons avec un éditeur dont les exigences en matière d’espacement vertical sont les suivantes : les paroles doivent être clairement détachées des notes, l’accompagnement de piano séparé du chant et les portées de piano rapprochées l’une de l’autre. Commençons par les paroles.

Les paroles résident dans un système ; les commandes dévolues à leur espacement sont donc mentionnées à la section Espacement vertical au sein d'un système. Nous y constatons que les paroles sont des lignes de non-portée (`non-staff lines`) ; les commandes qui gèrent leur espacement font donc référence à la propriété `nonstaff`. Les décaler de la portée à laquelle elles sont attachées (celle du haut) jouera sur la propriété `relatedstaff`, les décaler de la ligne inférieure sur la propriété `unrelatedstaff`. Les parties vocales sont membre d’un `VerticalAxisGroup` ; ce sont donc les propriétés de ce groupe qui doivent être ajustées. Faisons un premier essai pour voir :

>     <<
>       \new ChoirStaff
>       <<
>         \new Staff {
>           \new Voice = "music" {
>             b'2 c' c' c'
>           }
>         }
>         \new Lyrics \with {
>           \override VerticalAxisGroup.
>             nonstaff-relatedstaff-spacing.padding = #5
>           \override VerticalAxisGroup.
>             nonstaff-unrelatedstaff-spacing.padding = #5
>         }
>         \lyricsto "music" {
>           Here are some lyrics
>         }
>         \new Staff {
>           \clef bass e'2 f e c
>         }
>       >>
>       \new PianoStaff
>       <<
>         \new Staff {
>           g''2 c'' c'' a''
>         }
>         \new Staff {
>           \clef bass e2 f c e
>         }
>       >>
>     >>

L’espacement est maintenant quelque peu exagéré. Lorsque nous affectons 5 à la variable `padding`, LilyPond ajoute cinq espaces de portée à la distance séparant deux objets, ce qui est plus que généreux. Nous nous limiterons à 2.

Occupons-nous à présent de séparer l’accompagnement du chant. La musique vocale fait l’objet d’un `ChoirStaff` ; il nous faut donc augmenter l’espace entre ce groupe et la portée de piano qui le suit. Nous y parviendrons en modifiant la variable `basic-distance` de l’élément `staffgroup-staff-spacing` du `StaffGrouper`.

>     <<
>       \new ChoirStaff \with {
>         \override StaffGrouper.
>           staffgroup-staff-spacing.basic-distance = #15
>       }
>       <<
>         \new Staff {
>           \new Voice = "music" {
>             b'2 c' c' c'
>           }
>         }
>         \new Lyrics \with {
>           \override VerticalAxisGroup.
>             nonstaff-relatedstaff-spacing.padding = #2
>           \override VerticalAxisGroup.
>             nonstaff-unrelatedstaff-spacing.padding = #2
>         }
>         \lyricsto "music" {
>           Here are some lyrics
>         }
>         \new Staff {
>           \clef bass e'2 f e c
>         }
>       >>
>       \new PianoStaff
>       <<
>         \new Staff {
>           g''2 c'' c'' a''
>         }
>         \new Staff {
>           \clef bass e2 f c e
>         }
>       >>
>     >>

Excellent. Ne reste plus qu’à répondre à la dernière exigence : resserrer les portées du piano. Pour y parvenir, nous ajusterons à nouveau les propriétés du `StaffGrouper`, ici en jouant à la fois sur la distance de base (`basic-distance`) et le décalage (`padding`) comme ci-dessous :

>     <<
>       \new ChoirStaff \with {
>         \override StaffGrouper.
>           staffgroup-staff-spacing.basic-distance = #15
>       }
>       <<
>         \new Staff {
>           \new Voice = "music" {
>             b'2 c' c' c'
>           }
>         }
>         \new Lyrics \with {
>           \override VerticalAxisGroup.
>             nonstaff-relatedstaff-spacing.padding = #2
>           \override VerticalAxisGroup.
>             nonstaff-unrelatedstaff-spacing.padding = #2
>         }
>         \lyricsto "music" {
>           Here are some lyrics
>         }
>         \new Staff {
>           \clef bass e'2 f e c
>         }
>       >>
>       \new PianoStaff \with {
>         \override StaffGrouper.staff-staff-spacing = #'(
>                                 (basic-distance . 0)
>                                 (padding . 0))
>       }
>       <<
>         \new Staff {
>           g''2 c'' c'' a''
>         }
>         \new Staff {
>           \clef bass e2 f c e
>         }
>       >>
>     >>

Les portées sont vraiment rapprochées, mais c’est ce que veut l’éditeur. On pourra toujours les écarter au besoin en jouant sur les éléments `padding` ou `basic-distance`.

Il existe bien des manières de modifier l’espacement vertical. Le point crucial à ne pas oublier est que l’espacement des objets au sein d’un regroupement – un `StaffGroup`, tels `GrandStaff` ou `PianoStaff` – dépend des variables d’espacement d’un `StaffGrouper` ; l’espacement de portées non regroupées (comme `Lyrics` et `Staff`) dépend des variables d’un `VerticalAxisGroup`. Voir Variables d'espacement vertical fluctuant et Espacement vertical au sein d'un système pour de plus amples détails.

#### LilyPond — Manuel d’initiation v2.22.2 (branche stable).