4.4.2 Posicionamiento explícito de los pentagramas y los sistemas

Una forma de entender los mecanismos del espaciado vertical flexible que se han explicado más arriba es como una colección de ajustes que controlan la cantidad de relleno vertical entre los pentagramas y los sistemas.

Es posible enfrentarse al espaciado vertical de una forma distinta utilizando NonMusicalPaperColumn.line-break-system-details. Mientras que los mecanismos del espaciado vertical flexible especifican relleno vertical, NonMusicalPaperColumn.line-break-system-details puede especificar posiciones verticales exactas sobre la página.

NonMusicalPaperColumn.line-break-system-details acepta una lista asociativa de cuatro ajustes diferentes:

Las sobreescrituras de los objetos gráficos, entre ellas las de NonMusicalPaperColumn que aparecen más abajo, pueden ocurrir en tres lugares distintos dentro de un archivo de entrada:

Cuando sobreescribimos NonMusicalPaperColumn, usamos la instrucción \override usual en los bloques \context y en el bloque \with. Por otra parte, cuando sobreescribimos NonMusicalPaperColumn en medio de las notas, debemos usar la instrucción especial \overrideProperty. He aquí algunas sobreescrituras de NonMusicalPaperColumn de ejemplo con la instrucción especial \overrideProperty:

\overrideProperty NonMusicalPaperColumn.line-break-system-details
  #'((X-offset . 20))

\overrideProperty NonMusicalPaperColumn.line-break-system-details
  #'((Y-offset . 40))

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

\overrideProperty NonMusicalPaperColumn.line-break-system-details
  #'((alignment-distances . (15)))

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

Para entender cómo funciona cada uno de los distintos ajustes, empezamos observando un ejemplo que no incluye absolutamente ninguna sobreescritura.

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

Esta partitura mantiene aislada tanto la información de los saltos de línea como los de página en una voz dedicada a ello. Esta técnica de crear una voz de saltos ayuda a mantener separada de la escritura de notas conforme el ejemplo se vuelve más complicado. Consulte Saltos.

Utilizando instrucciones \break explícitas, la música se divide líneas de cinco compases cada una. El espaciado vertical proviene de los ajustes predeterminados de LilyPond pero el punto de origen vertical de cada sistema se fija explícitamente usando el par Y-offset en el atributo line-break-system-details del grob (objeto gráfico) NonMusicalPaperColumn:

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 0))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 40))
          s1*5 \break
          \overrideProperty 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]

Observe que line-break-system-details toma una lista asociativa de una cantidad de valores potencialmente elevada, pero aquí sólo fijamos un valor. Observe también que aquí la propiedad Y-offset determina la posición vertical exacta sobre la página en la que se trazará cada uno de los nuevos sistemas.

En contraste con el posicionado absoluto que está disponible a través de Y-offset y de X-offset, es posible un posicionamiento relativo con la propiedad extra-offset de line-break-system-details. La colocación es relativa a la disposición predeterminada o al posicionamiento absoluto creado mediante el establecimiento de los valores de X-offset y de Y-offset. La propiedad extra-offset acepta una pareja de números (un pair) que consiste en desplazamientos a lo largo de los ejes X e Y.

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((extra-offset . (0 . 10)))
          s1*5 \break
          \overrideProperty 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]

Ahora que hemos establecido explícitamente el punto de origen vertical de cada sistema, podemos también establecer manualmente las distancias verticales entre los pentagramas dentro de cada sistema. Lo hacemos usando la subpropiedad alignment-distances de line-break-system-details.

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 20)
               (alignment-distances . (10)))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 60)
               (alignment-distances . (15)))
          s1*5 \break
          \overrideProperty 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]

Observe que aquí asignamos dos valores distintos al atributo line-break-system-details del grob NonMusicalPaperColumn. Aunque el atributo alist de line-break-system-details acepta muchos parámetros de espaciado adicionales (entre ellos, por ejemplo, un par X-offset correspondiente), sólo tenemos que establecer el desplazamiento Y-offset y los pares alignment-distances para controlar el punto de origen vertical de cada sistema y pentagrama. Finalmente, observe que alignment-distances especifica el posicionamiento vertical de los pentagramas pero no de los grupos de pentagramas.

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 0)
               (alignment-distances . (30 10)))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 60)
               (alignment-distances . (10 10)))
          s1*5 \break
          \overrideProperty 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]

Algunos puntos que tener en cuenta:

Véase también

Fragmentos de código: Spacing.


Referencia de la notación de GNU LilyPond v2.25.21 (rama de desarrollo).