29.2 Positionnement explicite des portées et systèmes

Il est possible d’aborder l’espacement vertical d’une autre manière que ce qui est indiqué dans la rubrique précédente, en utilisant la propriété line-break-system-details de l’objet graphique NonMusicalPaperColumn. Alors que les mécanismes d’espacement vertical flexible spécifient un décalage vertical, line-break-system-details peut déterminer les positionnements exacts sur la page.

Cette propriété contient cinq différentes sous-propriétés : X-offset, Y-offset, extra-offset, alignment-distances etbottom-padding.

Pour bien comprendre comment fonctionnent ces différentes sous-propriétés, commençons par examiner un exemple dépourvu de toute mise au point. 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.

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

Déterminons maintenant les ploints de départ vertical et horizontal de chacun des systèmes à l’aide des sous-propriétés Y-offset et X-offset de line-break-system-details.

\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 = 30
          \once \override
            Score.NonMusicalPaperColumn
                 .line-break-system-details.X-offset = 10
          s1*5 \break
          \once \override
            Score.NonMusicalPaperColumn
                 .line-break-system-details.Y-offset = 50
          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]

Contrairement au positionnement absolu accessible par Y-offset et X-offset, il est possible d’opter pour un positionnement relatif à l’aide de la sous-propriété extra-offset. 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.

\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          s1*5 \break
          \once \override
            Score.NonMusicalPaperColumn
              .line-break-system-details.extra-offset = #'(5 . 5)
          s1*5 \break
          \once \override
            Score.NonMusicalPaperColumn
              .line-break-system-details.extra-offset = #'(0 . 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]

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. Comme on peut le constater, est utilisée une liste associative pour définir en même temps deux sous-propriétés différentes de line-break-system-details.

\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          \once \override
            Score.NonMusicalPaperColumn.line-break-system-details =
              #'((Y-offset . 0)
                 (alignment-distances . (10)))
          s1*5 \break
          \once \override
            Score.NonMusicalPaperColumn.line-break-system-details =
              #'((Y-offset . 30)
                 (alignment-distances . (15)))
          s1*5 \break
          \once \override
            Score.NonMusicalPaperColumn.line-break-system-details =
              #'((Y-offset . 65)
                 (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]

Voici maintenant comment positionner des portées à l’intérieur d’un système. Il est à noter que alignment-distances s’applique directement aux portées sans tenir compte d’un regroupement par StaffGroup ou autre. Une valeur à #f indique qu’il faudra prendre la valeur par défaut.

\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          \once \override
            Score.NonMusicalPaperColumn.line-break-system-details =
              #'((Y-offset . 0)
                 (alignment-distances . (15 8)))
          s1*5 \break
          \once \override
            Score.NonMusicalPaperColumn.line-break-system-details =
              #'((Y-offset . 35)
                 (X-offset . 10)
                 (alignment-distances . (#f 8)))
          s1*5 \break
          \once \override
            Score.NonMusicalPaperColumn.line-break-system-details =
              #'((Y-offset . 65)
                 (alignment-distances . (8 15)))
          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]

La dernière sous-propriété de line-break-system-details, bottom-padding, agit de manière analogue à last-bottom-spacing. Il est important de garder à l’esprit qu’elle ne définit pas un espace compressible ou extensible, mais une valeur de décalage fixe et rigide entre le bas de la page et le dernier système. Voici notre exemple de base sans ragged-bottom, autrement dit réparti sur la hauteur de page, pour indiquer les distances par défaut.

\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' }
      }
    >>
  }
  \paper { ragged-last-bottom = ##f }
}
[image of music]

Définir bottom-padding mène à ce résultat.

\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          s1*5 \break
          s1*5 \break
          \once \override
            Score.NonMusicalPaperColumn.line-break-system-details =
              #'((bottom-padding . 20))
          s1*5 \break }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new Staff { \repeat unfold 15 { d'4 d' d' d' } }
    >>
  }
  \paper { ragged-last-bottom = ##f }
}
[image of music]

Quelques points à prendre en considération :

Voir aussi

Morceaux choisis : Espacements.


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