4.4.3 Objetos 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 que están inicialmente dentro de los contextos Staff o Voice.

Objeto de presentación

Prioridad

Controla la posición de:

MultiMeasureRestText

450

Texto sobre silencios de compás completo

TextScript

450

Elementos de marcado de texto

OttavaBracket

400

Corchetes de octava alta y baja

TextSpanner

350

Objetos de extensión de texto

DynamicLineSpanner

250

Todas las indicaciones dinámicas

VoltaBracketSpanner

100

Corchetes de primera y segunda vez

TrillSpanner

50

Trinos mantenidos

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

% Establecer ajustes para el extensor de texto ulterior
\override TextSpanner #'(bound-details left text)
    = \markup { \small \bold Slower }
% Situar la dinámica por encima
\dynamicUp
% Inicio del corchete de octava
\ottava #1
c' \startTextSpan
% Añadir indicación dinámica textual
c\pp
% Añadir indicación dinámica de extensión de línea
c\<
% Guiones de texto
c^Text
c c
% Añadir indicación dinámica textual
c\ff c \stopTextSpan
% Detener el corchete de octava
\ottava #0
c, 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.

Observe que los números de compás, las indicaciones metronómicas y las mercas de ensayo no se muestran. De forma predeterminada, se crean dentro del contexto Score y su prioridad outside-staff-priority se ignora con relación a los objetos de presentación que se crean dentro del contexto Staff. Si quiere colocar los números de compás, indicaciones metronómicas o llamadas de ensayo en concordancia con el valor de su outside-staff-priority, los grabadores Bar_number_engraver, Metronome_mark_engraver o Mark_engraver respectivamente se deben eliminar del contexto Score y colocarlos en el contexto Staff del nivel superior. Si se hace así, estas marcas obtendrán los siguientes valores predeterminados de outside-staff-priority:

Objeto de presentación

Prioridad

RehearsalMark

1500

MetronomeMark

1000

BarNumber

100

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:

% Establecer ajustes para el extensor de texto ulterior
\override TextSpanner #'(bound-details left text)
    = \markup { \small \bold Slower }
% Situar la dinámica por encima
\dynamicUp
%Situar el corchete de octava ulterior por debajo de los extensores de texto
\once \override Staff.OttavaBracket #'outside-staff-priority = #340
% Inicio del corchete de octava
\ottava #1
c' \startTextSpan
% Añadir indicación dinámica textual
c\pp
% Añadir indicación dinámica de extensión de línea
c\<
% Guiones de texto
c^Text
c c
% Añadir indicación dinámica textual
c\ff c \stopTextSpan
% Detener el corchete de octava
\ottava #0
c, c c c

[image of music]

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:

c4( c^\markup\tiny\sharp d4.) c8
c4(
\once \override TextScript #'avoid-slur = #'inside
\once \override TextScript #'outside-staff-priority = ##f
c^\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:

c2^"Text1"
c^"Text2"
\once \override TextScript #'outside-staff-priority = #500
c^"Text3"
c^"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.

\textLengthOn

De forma predeterminada, el texto producido mediante marcado no ocupa ningún espacio horizontal en cuanto se refiere a la disposición de la música. La instrucción \textLengthOn invierte este comportamiento, ocasionando que las notas resulten tan espaciadas como sea necesario para acomodar el texto:

\textLengthOn  % Ocasionar que las notas se espacíen para adecuarse al texto
c2^"Text1"
c^"Text2"
c^"Text3"
c^"Text4"

[image of music]

La instrucción para volver al comportamiento predeterminado es \textLengthOff. Recuerde que \once funciona solamente con \override, \set, \revert o unset, así que no se puede usar con \textLengthOn.

El texto de marcado también evita las notas que se proyectan por encima del pentagrama. Si esto no es lo que deseamos, el desplazamiento automático hacia arriba se puede desactivar mediante el establecimiento de la prioridad a #f. He aquí un ejemplo que muestra cómo el texto de marcado interactúa con tales notas.

% Este marcado es corto y cabe sin colisionar
c2^"Tex"
c''2
R1
% Este es muy largo y se desplaza hacia arriba
c,,2^"Text"
c''2
R1
% Desactivar el detector de colisiones
\once \override TextScript #'outside-staff-priority = ##f
c,,2^"Long Text   "
c''2
R1
% Desactivar el detector de colisiones
\once \override TextScript #'outside-staff-priority = ##f
\textLengthOn  % y activar textLengthOn
c,,2^"Long Text   "  % Los espacios al final se respetan
c''2

[image of music]

Matices dinámicos

Las indicaciones de matiz dinámico normalmente se colocarán por debajo del pentagrama, pero se pueden posicionar por encima con la instrucción dynamicUp. Se situarán verticalmente respecto a la nota a la que van adosadas, y flotarán por debajo (o por encima) de todos los objetos dentro-del-pentagrama tales como ligaduras de fraseo y números de compás. Esto puede ofrecer resultados bastante aceptables, como muestra este ejemplo:

\clef "bass"
\key aes \major
\time 9/8
\dynamicUp
bes4.~\f\< \( bes4 bes8 des4\ff\> c16 bes\! |
ees,2.~\)\mf ees4 r8 |

[image of music]

Sin embargo, si las notas y sus indicaciones dinámicas adosadas están muy cerca, la colocación automática evitará las colisiones desplazando las marcas dinámicas posteriores más lejos, aunque este puede no ser el lugar óptimo, como muestra el siguiente ejemplo más bien artificial:

\dynamicUp
a4\f b\mf c\mp b\p

[image of music]

Si se presentara una situación similar en música ‘real’, podría ser preferible espaciar las notas un poco más entre sí, de forma que todas las marcas dinámicas puedan caber a la misma distancia vertical desde el pentagrama. Hemos sido capaces de hacer esto para el texto de marcado utilizando la instrucción \textLengthOn, pero no existe una instrucción equivalente para las indicaciones de matiz dinámico. Por tanto, tendremos que averiguar cómo hacerlo utilizando instrucciones \override.

Escalado de un «Grob»

En primer lugar debemos aprender cómo se especifica el tamaño de los grobs. Todos los grobs tienen un punto de referencia definido dentro de ellos que se usa para colocarlos respecto a su objeto padre. Entonces, este punto del grob se posiciona a una distancia horizontal, X-offset, y una distancia vertical, Y-offset, a partir de su padre. La dimensión horizontal del objeto viene dada por una pareja de números, X-extent, que dice dónde están los límites izquierdo y derecho respecto del punto de referencia. La amplitud vertical se define de forma similar mediante una pareja de números, Y-extent. Éstas son propiedades de todos los grobs que contemplan el grob-interface.

De forma predeterminada, los objetos fuera-del-pentagrama reciben una anchura cero, de manera que pueden solaparse en la dirección horizontal. Esto se hace mediante el truco de añadir una cantidad infinita a la dimensión más a la izquierda y menos infinito a la dimensión más a la derecha estableciendo el valor de extra-spacing-width a '(+inf.0 . -inf.0). Así, para asegurar que no se superponen en la dirección horizontal tendremos que sobreescribir este valor de extra-spacing-width a '(0 . 0) de forma que el verdadero ancho se presente. Esta es la instrucción que lo hace para las indicaciones dinámicas:

\override DynamicText #'extra-spacing-width = #'(0 . 0)

Veamos si funciona en nuestro ejemplo anterior:

\dynamicUp
\override DynamicText #'extra-spacing-width = #'(0 . 0)
a4\f b\mf c\mp b\p

[image of music]

Bueno, ciertamente ha hecho que las marcas dinámicas ya no estén desplazadas, pero aún quedan dos problemas. Las marcas tendrían que separarse un poco más entre sí, y sería mejor si todas estuvieran a la misma distancia del pentagrama. Podemos resolver el primer problema fácilmente. En vez de hacer cero la anchura extra-spacing-width, podemos añadirle algo más. Las unidades son el espacio entre dos líneas de pentagrama, así que al mover el límite izquierdo media unidad a la izquierda y el límite derecho media unidad hacia la derecha, deberíamos conseguirlo:

\dynamicUp
% Aumentar la anchura en un espacio de pentagrama
\override DynamicText #'extra-spacing-width = #'(-0.5 . 0.5)
a4\f b\mf c\mp b\p

[image of music]

Esto tiene un mejor aspecto, pero quizá habríamos preferido que las indicaciones de dinámica estuvieran alineadas sobre la misma línea de base en lugar de ir hacia arriba y hacia abajo con las notas. La propiedad que lo hace es staff-padding (relleno de pentagrama) que se estudia en la sección siguiente.


Otros idiomas: English, deutsch.

Manual de aprendizaje