Referencia de la notación de GNU LilyPond: 5.4.6 Objetos de extensión

### 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`

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` (o `LEFT`, 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` e `Y`. Si se fijan `stencil-align-dir-y` o `stencil-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` o `DOWN` (abajo) significa alinear el borde inferior del texto con la línea de extensión. Un valor de `1` o `UP` (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.

#### LilyPond — Referencia de la notación v2.22.2 (rama estable).