4.4.1 Espaciado vertical dentro de un sistema

La altura de cada sistema se determina en dos fases. Primero, todos los pentagramas se disponen según la cantidad de espacio vacío disponible. Después, las líneas que no son pautas (p.ej. la letra o los nombres de acorde) se distribuyen entre las pautas.


Espaciado entre los pentagramas

El espaciado entre los pentagramas se controla mediante la propiedad next-staff-spacing del grob VerticalAxisGroup. Esta propiedad es una lista-A de cuatro elementos: space, minimum-distance, padding y stretchability:

#(set-global-staff-size 16)
\new StaffGroup <<
  % Since space is small and there is no minimum-distance, the distance
  % between this staff and the next will be determined by padding.
  \new Staff \with {
    \override VerticalAxisGroup #'next-staff-spacing =
      #'((space . 1) (padding . 1))
  }
  { \clef bass c, }
  % Since space is small and nothing sticks out very far, the distance
  % between this staff and the next will be determined by minimum-distance.
  \new Staff \with {
    \override VerticalAxisGroup #'next-staff-spacing =
      #'((space . 1) (minimum-distance . 12))
  }
  { \clef bass c, }
  % By setting padding to a negative value, staves can be made to collide.
  \new Staff \with {
    \override VerticalAxisGroup #'next-staff-spacing =
      #'((space . 4) (padding . -10))
  }
  { \clef bass c, }
  \new Staff { \clef bass c, }
>>

[image of music]

En partituras grandes como las orquestales, es común colocar los pentagramas en grupos. El espacio entre los grupos suele ser mayor que el espacio que hay entre los pentagramas dentro del mismo grupo. Este espacio se puede manipular con el grob StaffGrouper: el valor predeterminado de next-staff-spacing para VerticalAxisGroup es una función de ‘callback’ que opera por el procedimiento de buscar un grob StaffGrouper que contenga al pentagrama. Si encuentra un grob StaffGrouper y el pentagrama en cuestión está en mitad de un grupo, lee la propiedad between-staff-spacing de StaffGrouper y la devuelve. Si el pentagrama en cuestión es el último de un grupo, la función de ‘callback’ lee la propiedad after-last-staff-spacing de StaffGrouper y la devuelve. Si no encuentra un grob StaffGrouper, lee default-next-staff-spacing a partir de su VerticalAxisGroup y lo devuelve.

#(set-global-staff-size 16)
<<
  \new PianoStaff \with {
    \override StaffGrouper #'between-staff-spacing #'space = #1
    \override StaffGrouper #'between-staff-spacing #'padding = #0
    \override StaffGrouper #'after-last-staff-spacing #'space = #20
  }
  <<
    \new Staff c'1
    \new Staff c'1
  >>

  \new StaffGroup \with {
    \override StaffGrouper #'between-staff-spacing #'space = #1
    \override StaffGrouper #'between-staff-spacing #'padding = #0
  }
  <<
    \new Staff c'1
    \new Staff c'1
  >>
>>

[image of music]


Espaciado de las líneas que no son pautas

Después de que se han determinado las posiciones de los pentagramas, se distribuyen las líneas que no son pautas entre los pentagramas. Cada una de esas líneas tiene una propiedad staff-affinity que controla su alineamiento vertical. Por ejemplo:

\new Lyrics \with { \override VerticalAxisGroup #'staff-affinity = #DOWN }

crea un contexto de letra que se situará junto al pentagrama que tiene por debajo. El establecimiento de staff-affinity a algo que no sea un número (#f, por ejemplo) hace que la línea se trate como si fuera una pauta. De forma recíproca, el establecimiento de staff-affinity para un pentagrama hace que se le trate como si no fuera una pauta.

Las líneas que no son pautas admiten tres propiedades para controlar su espaciado. Cada una de estas propiedades es una lista-A del mismo formato que next-staff-spacing, véase más arriba.

#(set-global-staff-size 16)
\layout {
  \context {
    \Lyrics
    % By default, Lyrics are placed close together. Here, we allow them to
    % be stretched more widely.
    \override VerticalAxisGroup
      #'inter-loose-line-spacing #'stretchability = #1000
  }
}

\new StaffGroup
<<
  \new Staff \with {
    \override VerticalAxisGroup #'next-staff-spacing = #'((space . 30)) }
    { c'1 }
  \new Lyrics \with {
    \override VerticalAxisGroup #'staff-affinity = #UP }
    \lyricmode { up }
  \new Lyrics \with {
    \override VerticalAxisGroup #'staff-affinity = #CENTER }
    \lyricmode { center }
  \new Lyrics \with {
    \override VerticalAxisGroup #'staff-affinity = #DOWN }
    \lyricmode { down }
  \new Staff
    { c'1 }
>>

[image of music]

Véase también

Fragmentos de código: Spacing.

Referencia de funcionamiento interno: VerticalAxisGroup, VerticalAlignment, Axis_group_engraver.

Advertencias y problemas conocidos

Las líneas adyacentes que no son pentagramas debieran tener valores de staff-affinity no crecientes desde arriba hasta abajo. Por ejemplo, el comportamiento de

<<
  \new Staff c
  \new Lyrics \with { \override VerticalAxisGroup #'staff-affinity = #DOWN }
  \new Lyrics \with { \override VerticalAxisGroup #'staff-affinity = #UP }
  \new Staff c
>>

es indeterminado.

Una línea que no es una pauta, al final de un sistema, debiera tener establecido staff-affinity al valor UP. De forma similar, una línea que no es una pauta al principio de un sistema debiera tener staff-affinity establecido al valor DOWN.


Otros idiomas: English, deutsch.

LilyPond — Referencia de la notación