La propiedad outside-staff-priority (prioridad fuera del pentagrama)

Los objetos fuera-del-pentagrama se colocan automáticamente para evitar las colisiones. Los objetos que tienen el valor más bajo de la propiedad outside-staff-priority se sitúan más cerca del pentagrama, y entonces otros objetos fuera-del-pentagrama se elevan tanto como sea necesario para evitar la colisión. La prioridad outside-staff-priority se defina en el grob-interface y así es una propiedad de todos los objetos de presentación. De forma predeterminada se establece a #f para todos los objetos dentro-del-pentagrama, y a un valor numérico adecuado a cada objeto fuera-del-pentagrama cuando se crea el objeto. La tabla siguiente presenta los valores numéricos predeterminados para algunos de los objetos fuera-del-pentagrama más comunes.

Observe los nombres algo inusuales de algunos de los objetos: los objetos de extensión se crean automáticamente para controlar el posicionamiento vertical de los grobs que (quizá) comienzan y terminan en distintos momentos musicales, de manera que cualquier modificación a la prioridad outside-staff-priority del grob subyacente no tiene ningún efecto. Por ejemplo, cambiar la outside-staff-priority del objeto de regulador Hairpin no tiene efecto sobre la posición vertical de los reguladores: en lugar de eso, tenemos que cambiar la outside-staff-priority del objeto asociado DynamicLineSpanner. Esta sobreescritura se debe escribir al comienzo del objeto de extensión, que podría incluir varios reguladores o matices dinámicos encadenados.

Objeto de presentaciónPrioridadControla la posición de:
RehearsalMark1500Letras de ensayo
MetronomeMark1000Indicaciones metronómicas
VoltaBracketSpanner600Cajetines de primera y segunda vez
TextScript450Texto en elementos de marcado
MultiMeasureRestText450Texto sobre silencios de compás completo
OttavaBracket400Corchetes de octava alta y baja
TextSpanner350Objetos de extensión de texto
DynamicLineSpanner250Todas las indicaciones dinámicas
VoltaBracketSpanner100Números de compás
TrillSpanner50Trinos mantenidos

He aquí un ejemplo que muestra la situación predeterminada de algunos de ellos.

% Set details for later Text Spanner
\override TextSpanner.bound-details.left.text
    = \markup { \small \bold Slower }
% Place dynamics above staff
\dynamicUp
% Start Ottava Bracket
\ottava #1
c''4 \startTextSpan
% Add Dynamic Text and hairpin
c''4\pp\<
c''4
% Add Text Script
c''4^Text |
c''4 c''
% Add Dynamic Text and terminate hairpin
c''4\ff c'' \stopTextSpan |
% Stop Ottava Bracket
\ottava #0
c'4 c' c' c' |

[image of music]

Este ejemplo también muestra cómo crear textos con extensión (Text Spanners): textos con líneas extensoras por encima de una sección de música. El extensor abarca desde la instrucción \startTextSpan hasta la instrucción \stopTextSpan, y el formado del texto se define por medio de la instrucción \override TextSpanner. Para ver más detalles, consulte Extensiones de texto.

También muestra la manera de crear corchetes de octava alta y baja.

Si los valores predeterminados de outside-staff-priority no le ofrecen las colocaciones deseadas se puede sobreescribir la prioridad de cualquiera de los objetos. Suponga que quisiéramos que el corchete de octava estuviera situado por debajo del elemento extensor de texto en el ejemplo de arriba. Todo lo que debemos hacer es localizar la prioridad de OttavaBracket en el RFI o en las tablas anteriores, y reducirlo a un valor inferior al de TextSpanner, recordando que OttavaBracket se crea dentro del contexto de Staff:

% Set details for later Text Spanner
\override TextSpanner.bound-details.left.text
    = \markup { \small \bold Slower }
% Place dynamics above staff
\dynamicUp
% Place following Ottava Bracket below Text Spanners
\once \override Staff.OttavaBracket.outside-staff-priority = #340
% Start Ottava Bracket
\ottava #1
c''4 \startTextSpan
% Add Dynamic Text
c''4\pp
% Add Dynamic Line Spanner
c''4\<
% Add Text Script
c''4^Text |
c''4 c''
% Add Dynamic Text
c''4\ff c'' \stopTextSpan |
% Stop Ottava Bracket
\ottava #0
c'4 c' c' c' |

[image of music]

Observe que algunos de estos objetos, concretamente los números de compás, las indicaciones metronómicas y las letras de ensayo, se alojan de forma predeterminada dentro del contexto Score; así pues, debe asegurarse de que utiliza el contexto adecuado cuando se sobreescriben sus propiedades.

De forma predeterminada, las ligaduras de expresión están clasificadas como objetos dentro-del-pentagrama, pero con frecuencia aparecen encima del pentagrama si las notas que une son muy agudas. Ello puede empujar a una posición muy elevada a los objetos fuera-del-pentagrama como las articulaciones, pues la ligadura se colocará en primer lugar. La propiedad avoid-slur de la articulación se puede establecer al valor 'inside (por dentro) para llevarla al interior de la ligadura, pero la propiedad avoid-slur es efectiva solamente si la prioridad outside-staff-priority está también ajustada al valor #f. De forma alternativa, la prioridad outside-staff-priority de la ligadura se puede fijar en un valor numérico para hacer que se sitúe en línea con otros objetos fuera del pentagrama de acuerdo con este valor. He aquí un ejemplo que muestra el efecto de los dos métodos:

\relative c'' {
  c4( c^\markup { \tiny \sharp } d4.) c8 |
  c4(
    \once \override TextScript.avoid-slur = #'inside
    \once \override TextScript.outside-staff-priority = ##f
    c4^\markup { \tiny \sharp } d4.) c8 |
  \once \override Slur.outside-staff-priority = #500
    c4( c^\markup { \tiny \sharp } d4.) c8 |
}

[image of music]

Los cambios en outside-staff-priority también se pueden emplear para controlar la situación vertical de los objetos individuales, aunque los resultados pueden no siempre ser deseables. Suponga que quiere que “Text3” se sitúe por encima de “Text4” en el ejemplo bajo el epígrafe Comportamiento Automático de más arriba (véase Comportamiento automático). Todo lo que debemos hacer es localizar la prioridad de TextScript en el RFI o en las tablas de arriba, y aumentar la prioridad de “Text3” hasta un valor superior:

c''2^"Text1"
c''2^"Text2" |
\once \override TextScript.outside-staff-priority = #500
c''2^"Text3"
c''2^"Text4" |

[image of music]

Esto, ciertamente, eleva a “Text3” por encima de “Text4” pero también lo eleva por encima de “Text2”, y “Text4” ahora se desploma hacia abajo. Quizá no sea tan buena idea. ¿Y si lo que realmente queremos hacer es posicionar todas las anotaciones a la misma distancia por encima del pentagrama? Para hacerlo, vamos a necesitar claramente espaciar las notas en sentido horizontal para hacer sitio para el texto. Esto se hace empleando la instrucción textLengthOn.


Manual de aprendizaje de GNU LilyPond v2.25.21 (rama de desarrollo).