5.4.6 Objetos de extensión
Muchos objetos de notación musical abarcan varias notas o incluso varios compases. Son ejemplos los crescendi, trinos, corchetes de grupo especial y corchetes de primera y segunda vez. Estos objetos se llaman “spanners” u «objetos de extensión», y tienen propiedades especiales para controlar su apariencia y comportamiento. Algunas de estas propiedades son comunes a todos los objetos de extensión; otras se limitan a un subconjunto de los extensores.
Todos los objetos de extensión contemplan el interface
spanner-interface
. Algunos, básicamente aquellos que
trazan una línea recta entre los dos objetos, contemplan también
el interface line-spanner-interface
.
Uso del spanner-interface | ||
Uso del line-spanner-interface |
Uso del spanner-interface
Este interface proporciona dos propiedades que se aplican a varios extensores.
La propiedad minimum-length
(longitud mínima)
La longitud mínima del objeto de extensión se especifica a través
de la propiedad minimum-length
. Su aumento suele producir
el efecto necesario de aumentar el espaciado de las notas entre
los dos puntos extremos. Sin embargo, esta sobreescritura no
tiene ningún efecto sobre muchos extensores, pues su longitud está
determinada por otras consideraciones. Más abajo se muestran
algunos ejemplos de dónde es efectiva.
a'~ a' a' % increase the length of the tie -\tweak minimum-length #5 ~ a'
\relative \compressMMRests { a'1 R1*23 % increase the length of the rest bar \once \override MultiMeasureRest.minimum-length = #20 R1*23 a1 }
\relative { a' \< a a a \! % increase the length of the hairpin \override Hairpin.minimum-length = #20 a \< a a a \! }
Esta sobreescritura se puede usar también para aumentar la longitud de las ligaduras de expresión y de fraseo:
\relative { a'( g) a -\tweak minimum-length #5 ( g) a\( g\) a -\tweak minimum-length #5 \( g\) }
Para algunos objetos de presentación, la propiedad
minimum-length
es efectiva sólo si se llama explícitamente
al procedimiento set-spacing-rods
. Para hacerlo, se debe
fijar la propiedad springs-and-rods
al valor
ly:spanner::set-spacing-rods
. Por ejemplo, la longitud
mínima de un glissando no tiene efecto a no ser que se establezca
la propiedad springs-and-rods
:
% default e' \glissando c'' % not effective alone \once \override Glissando.minimum-length = #20 e' \glissando c'' % effective only when both overrides are present \once \override Glissando.minimum-length = #20 \once \override Glissando.springs-and-rods = #ly:spanner::set-spacing-rods e' \glissando c''
Lo mismo se puede decir del objeto Beam
:
% not effective alone \once \override Beam.minimum-length = #20 e'8 e' e' e' % effective only when both overrides are present \once \override Beam.minimum-length = #20 \once \override Beam.springs-and-rods = #ly:spanner::set-spacing-rods e'8 e' e' e'
La propiedad to-barline
La segunda propiedad útil del spanner-interface
es
to-barline
. De forma predeterminada tiene el valor cierto,
haciendo que los reguladores y otros objetos de extensión que
terminan sobre la primera nota de un compás, en vez de eso
terminen en la línea divisoria inmediatamente precedente. Si se
establece al valor falso, el extensor llegará más allá de la barra
de compás y terminará exactamente sobre la nota:
\relative { a' \< a a a a \! a a a \break \override Hairpin.to-barline = ##f a \< a a a a \! a a a }
Esta propiedad no es efectiva para todos los extensores. Por
ejemplo, su establecimiento a #t
no tienen ningún efecto
sobre las ligaduras de expresión o de fraseo, o sobre otros
extensores para los que terminar en la barra de compás no tendría
ningún significado.
Uso del line-spanner-interface
Entre los objetos que contemplan el interface
line-spanner-interface
se encuentran
-
DynamicTextSpanner
-
Glissando
-
TextSpanner
-
TrillSpanner
-
VoiceFollower
La rutina responsable de dibujar los sellos de estos extensores es
ly:line-spanner::print
. esta rutina determina la
localización exacta de los dos puntos extremos y traza una línea
entre ellos, en el estilo solicitado. Las posiciones de los dos
puntos extremos del extensor se calculan al vuelo, pero es posible
sobreescribir sus coordenadas Y. Las propiedades que se deben
especificar están anidadas a dos niveles de profundidad en la
jerarquía de propiedades, pero la sintaxis de la instrucción
\override
es bastante sencilla:
e''2 \glissando b' \once \override Glissando.bound-details.left.Y = #3 \once \override Glissando.bound-details.right.Y = #-2 e''2 \glissando b'
Las unidades para la propiedad Y
son staff-space
s,
siendo el punto del cero la línea central del pentagrama. Para el
glissando, esto es el valor de Y
en la coordenada X que
corresponde al punto central de cada cabeza de nota si nos
imaginamos que la línea se extiende hasta allí.
Si no está fijado Y
, su valor se calcula a partir de la
posición vertical del punto de anclaje correspondiente del
extensor.
En caso de salto de línea, los valores para los puntos extremos se
especifican por las sub-listas left-broken
y
right-broken
de bound-details
. Por ejemplo:
\override Glissando.breakable = ##t \override Glissando.bound-details.right-broken.Y = #-3 c''1 \glissando \break f''1
Un número de propiedades adicionales de las sub-listas left
y right
de la propiedad bound-details
se pueden
especificar de la misma forma que Y
:
-
Y
Establece la coordenada Y del punto extremo, en desplazamientos de
staff-space
s desde la línea central del pentagrama. De forma predeterminada es el centro del objeto ancla, y así un glissando apunta al centro vertical de la cabeza de la nota.Para extensores horizontales como los extensores de texto y los trinos, está inamoviblemente codificado como 0.
-
attach-dir (dirección de anclaje)
Determina dónde comienza y termina la línea en la dirección X, con relación al objeto ancla. Sí, un valor de
-1
(oLEFT
, izquierda) hace que la línea comience o termine en el lado izquierdo de la cabeza de la nota a la que está anclado.-
X
Es la coordenada X absoluta del punto extremo. Se suele calcular al vuelo, y su sobreescritura no tiene un efecto útil.
-
stencil (sello)
Los extensores de línea pueden tener símbolos al comienzo o al final, lo que está contenido en esta sub-propiedad. Esto es para uso interno; se recomienda en su lugar el uso de
text
.-
text (texto)
Es un elemento de marcado que se evalúa para dar lugar al sello. Se usa para escribir cresc., tr y otros textos sobre los objetos de extensión horizontales.
\override TextSpanner.bound-details.left.text = \markup { \small \bold Slower } \relative { c''2\startTextSpan b c a\stopTextSpan }
-
stencil-align-dir-y (alineación del sello en y)
-
stencil-offset (desplazamiento del sello)
Si no se modifican uno u otro, el sello se coloca sencillamente en el punto extremo, centrado sobre la línea, como viene definido por las subpropiedades
X
eY
. Si se fijanstencil-align-dir-y
ostencil-offset
se moverá el símbolo del borde verticalmente con relación al extremo de la línea:\override TextSpanner.bound-details.left.stencil-align-dir-y = #-2 \override TextSpanner.bound-details.right.stencil-align-dir-y = #UP \override TextSpanner.bound-details.left.text = "ggg" \override TextSpanner.bound-details.right.text = "hhh" \relative { c'4^\startTextSpan c c c \stopTextSpan }
Observe que los valores negativos mueven el texto hacia arriba, al contrario de lo que podría esperarse, pues el valor de
-1
oDOWN
(abajo) significa alinear el borde inferior del texto con la línea de extensión. Un valor de1
oUP
(arriba) alinea el borde superior del texto con la línea extensora.-
arrow (flecha)
Al establecer esta sub-propiedad a
#t
se produce una punta de flecha en el extremo de la línea.-
padding (relleno)
Esta sub-propiedad controla el espacio entre el punto extremo especificado de la línea y el extremo real. Sin relleno, un glissando empezaría y terminaría en el centro de la cabeza de las notas.
La función musical \endSpanners
finaliza de forma prematura
el extensor que comienza sobre la nota que sigue inmediatamente a
continuación. Se termina después de una nota exactamente, o en la
siguiente barra de compás si to-barline
es verdadero y se
produce una divisoria antes de la siguiente nota.
\relative c'' { \endSpanners c2 \startTextSpan c2 c2 \endSpanners c2 \< c2 c2 }
Si se usa \endSpanners
no es necesario cerrar
\startTextSpan con \stopTextSpan, ni cerrar los reguladores con
\!
.
Véase también
Referencia de funcionamiento interno: TextSpanner, Glissando, VoiceFollower, TrillSpanner, line-spanner-interface.