4.4.2 Positionnement explicite des portées et systèmes

Pour bien comprendre comment fonctionnent les réglages de VerticalAxisGroup et de \paper abordés dans les deux rubriques précédentes, rien ne vaut une collection d’exemples illustrant les différentes mises au point du décalage vertical appliqué aux portées et systèmes distribués sur une page.

Une autre approche de l’espacement vertical est le recours à la propriété NonMusicalPaperColumn.line-break-system-details. Alors que VerticalAxisGroup et \paper gèrent un décalage vertical, NonMusicalPaperColumn.line-break-system-details spécifiera le positionnement vertical absolu sur la page.

NonMusicalPaperColumn.line-break-system-details prend en charge une liste associative de quatre mises au point :

\once \override NonMusicalPaperColumn.line-break-system-details =
  #'((X-offset . 20))

\once \override NonMusicalPaperColumn.line-break-system-details =
  #'((Y-offset . 40))

\once \override NonMusicalPaperColumn.line-break-system-details =
  #'((X-offset . 20)
     (Y-offset . 40))

\once \override NonMusicalPaperColumn.line-break-system-details =
  #'((alignment-distances . (15)))

\once \override NonMusicalPaperColumn.line-break-system-details =
  #'((X-offset . 20)
     (Y-offset . 40)
     (alignment-distances . (15)))

Nous allons maintenant voir ces différents réglages en action. Commençons par examiner un exemple dépourvu de toute mise au point.

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          s1*5 \break
          s1*5 \break
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new Staff {
        \repeat unfold 15 { d'4 d' d' d' }
      }
    >>
  }
}

[image of music]

Cette partition isole les informations de saut de ligne ou de page dans une voix spécifique. La mise en forme est ainsi séparée des événements musicaux ; ceci nous permettra d’y voir plus clair au fur et à mesure que nous avancerons. Pour plus de précisions, relisez Sauts.

Les \break explicites répartissent la musique en lignes de cinq mesures chacune. L’espacement vertical est celui que LilyPond attribue par défaut. Nous pouvons, afin de fixer explicitement le point d’attache vertical de chacun des systèmes, définir un doublet Y-offset en tant qu’attribut du line-break-system-details de l’objet NonMusicalPaperColumn :

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          \once \override Score.NonMusicalPaperColumn
            .line-break-system-details = #'((Y-offset . 0))
          s1*5 \break
          \once \override Score.NonMusicalPaperColumn
            .line-break-system-details = #'((Y-offset . 40))
          s1*5 \break
          \once \override Score.NonMusicalPaperColumn
            .line-break-system-details = #'((Y-offset . 60))
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new Staff {
        \repeat unfold 15 { d'4 d' d' d' }
      }
    >>
  }
}

[image of music]

Vous aurez remarqué que nous n’avons déterminé qu’une seule valeur, même si la liste associative de line-break-system-details peut en comporter un certain nombre. Vous aurez aussi noté que la propriété Y-offset détermine ici le point de départ de chacun des systèmes de la page.

Contrairement au positionnement absolu accessible par Y-offset et X-offset, il est possible d’opter pour un positionnement relatif à l’aide de la propriété extra-offset des line-break-system-details. Le placement sera relatif à la mise en forme par défaut ou au positionnement absolu géré par X-offset et Y-offset. La propriété extra-offset prend en argument une paire constituée des déplacements sur les axes horizontal et vertical.

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          s1*5 \break
          \once \override
            Score
            .NonMusicalPaperColumn
            .line-break-system-details = #'((extra-offset . (0 . 10)))
          s1*5 \break
          \once \override
            Score
            .NonMusicalPaperColumn
            .line-break-system-details = #'((extra-offset . (0 . 10)))
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new Staff {
        \repeat unfold 15 { d'4 d' d' d' }
      }
    >>
  }
}

[image of music]

Maintenant que chaque système est explicitement positionné, nous pouvons jouer sur la distance séparant les portées de chacun des systèmes, grâce à la sous-propriété alignment-distances de line-break-system-details.

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          \once \override
            Score
            .NonMusicalPaperColumn
            .line-break-system-details
            = #'((Y-offset . 20)
                 (alignment-distances . (10)))
          s1*5 \break
          \once \override
            Score
            .NonMusicalPaperColumn
            .line-break-system-details
            = #'((Y-offset . 60)
                 (alignment-distances . (15)))
          s1*5 \break
          \once \override
            Score
            .NonMusicalPaperColumn
            .line-break-system-details
            = #'((Y-offset . 85)
                 (alignment-distances . (20)))
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new Staff {
        \repeat unfold 15 { d'4 d' d' d' }
      }
    >>
  }
}

[image of music]

Nous avons maintenant assigné deux valeurs différentes à l’attribut line-break-system-details de l’objet NonMusicalPaperColumn. line-break-system-details pourrait prendre bien d’autres paramètres d’espacement, y compris un doublet X-offset, mais nous n’avons utilisé que Y-offset et alignment-distances pour contrôler le positionnement de chaque système et de chaque portée. Vous noterez enfin que alignment-distances traite le positionnement des portées, non d’un regroupement de portées.

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          \once \override
            Score
              .NonMusicalPaperColumn
              .line-break-system-details
              = #'((Y-offset . 0)
                   (alignment-distances . (30 10)))
          s1*5 \break
          \once \override
            Score
            .NonMusicalPaperColumn
            .line-break-system-details
            = #'((Y-offset . 60)
                 (alignment-distances . (10 10)))
          s1*5 \break
          \once \override
            Score
            .NonMusicalPaperColumn
            .line-break-system-details
            = #'((Y-offset . 100)
                 (alignment-distances . (10 30)))
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new StaffGroup <<
        \new Staff { \repeat unfold 15 { d'4 d' d' d' } }
        \new Staff { \repeat unfold 15 { e'4 e' e' e' } }
      >>
    >>
  }
}

[image of music]

Quelques points à prendre en considération :

Voir aussi

Morceaux choisis : Espacements.


GNU LilyPond – Manuel de notation v2.25.22 (development-branch).