5.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 :

[image of music]

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

[image of music]

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

[image of music]

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

[image of music]

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.23.82 (branche de développement).