Referencia de la notación de GNU LilyPond: 5.5.4 Modificación de las formas

### 5.5.4 Modificación de las formas

#### Modificación de ligaduras de unión y de expresión

Las ligaduras de unión (`Tie`s), de expresión (`Slur`s), de fraseo (`PhrasingSlur`s), de dejar vibrar (`LaissezVibrerTie`s) y de repetición (`RepeatTie`s) se trazan como curvas de Bézier de tercer orden. Si la forma de la ligadura calculada automáticamente no resulta óptima, se puede modificar su forma manualmente de dos formas:

1. mediante la especificación de los desplazamientos que se quieren realizar sobre los puntos de control de la curva de Bézier calculada automáticamente, o bien
2. mediante la especificación explícita de las posiciones de los cuatro puntos de control que se requieren para definir la curva deseada.

A continuación se explican ambos métodos. El primer método es más adecuado cuando solo se requieren ligeros ajustes de la curva; el segundo puede ser mejor para crear curvas que tienen relación con una única nota.

#### Curvas de Bézier cúbicas

Las curvas Bézier de tercer orden o cúbicas están definidas por cuatro puntos de control. El primer y cuarto puntos de control son exactamente los puntos extremos de comienzo y de final de la curva. Los dos puntos de control intermedios definen la forma. Se pueden encontrar en la web animaciones que muestran cómo se traza la curva, pero la descripción siguiente puede ser de ayuda. La curva comienza a partir del primer punto de control dirigiéndose directamente hacia el segundo, curvándose progresivamente para dirigirse hacia el tercero y continuando la curva hacia el cuarto, llegando a éste en viaje directo desde el tercer punto de control. La curva está contenida enteramente dentro del cuadrilátero definido por los cuatro puntos de control. Todas las traslaciones, rotaciones y escalado de los puntos de control producen exactamente las mismas operaciones sobre la curva.

#### Especificar desplazamientos a partir de los puntos de control actuales

En este ejemplo, la colocación automática de la ligadura no resulta óptima, y `\tieDown` no es la solución.

>     <<
>       { e'1~ 1 }
>     \\
>       \relative { r4 <g' c,> <g c,> <g c,> }
>     >>

El ajuste de los puntos de control de la ligadura mediante la instrucción `\shape` permite evitar las colisiones.

La sintaxis de `\shape` es:

>     [-]\shape desplazamientos elemento

Esta instrucción recoloca los puntos de control de elemento en las cantidades dadas por desplazamientos. El argumento desplazamientos es una lista de parejas de números o una lista de tales listas. Cada elemento de una pareja representa el desplazamiento de una de las coordenadas de un punto de control. Si el elemento es una cadena de caracteres, el resultado es `\once\override` para el tipo de grob especificado. Si elemento es una expresión musical, el resultado es la misma expresión musical con la consiguiente modificación aplicada.

En otras palabras, la función `\shape` puede actuar como una instrucción `\once\override` o como una instrucción `\tweak` dependiendo de si el argumento elemento es el nombre de un grob, como “Slur”, o una expresión musical, como “(”. El argumento desplazamientos especifica los desplazamientos de los cuatro puntos de control como una lista de cuatro parejas de valores (dx . dy) en unidades de espacios de pentagrama (o una lista de tales listas si la curva tiene más de un segmento).

El guión precedente se exige si, y sólo si, se usa la forma `\tweak`.

Así, usando el mismo ejemplo de arriba y la forma `\once\override` de la instrucción `\shape`, lo siguiente tiene el efecto de elevar la ligadura de unión en la mitad de un espacio de pentagrama:

>     <<
>       {
>         \shape #'((0 . 0.5) (0 . 0.5) (0 . 0.5) (0 . 0.5)) Tie
>         e'1~ 1
>       }
>     \\
>       \relative { r4 <g' c,> <g c,> <g c,> }
>     >>

Este posicionamiento de la ligadura de unión es mejor, pero quizá debería elevarse más en la parte central. El ejemplo siguiente hace esto, esta vez usando la forma alternativa `\tweak`:

>     <<
>       {
>         e'1-\shape #'((0 . 0.5) (0 . 1) (0 . 1) (0 . 0.5)) ~ e'
>       }
>     \\
>       \relative { r4 <g' c,> <g c,> <g c,> }
>     >>

Los cambios en las posiciones horizontales de los puntos de control se pueden hacer de la misma forma, y dos curvas distintas que dan comienzo en el mismo momento musical se pueden conformar también:

>     \relative {
>       c''8(\( a) a'4 e c\)
>       \shape #'((0.7 . -0.4) (0.5 . -0.4) (0.3 . -0.3) (0 . -0.2)) Slur
>       \shape #'((0 . 0) (0 . 0.5) (0 . 0.5) (0 . 0)) PhrasingSlur
>       c8(\( a) a'4 e c\)
>     }

La función `\shape` también puede desplazar los puntos de control de las curvas que se extienden atravesando saltos de línea. Cada pieza de la curva dividida puede recibir su propia lista de desplazamientos. Si no se necesita hacer cambios a uno de los segmentos en particular, se puede usar una lista vacía como contenedor. En este ejemplo, el salto de línea hace que la única ligadura de expresión aparezca como si fueran dos:

>     \relative {
>       c'4( f g c
>       \break
>       d,4 c' f, c)
>     }

Los cambios en la forma de las dos mitades de la ligadura de expresión deja más claro que la ligadura continúa más allá del salto de línea:

>     % () may be used as a shorthand for ((0 . 0) (0 . 0) (0 . 0) (0 . 0))
>     % if any of the segments does not need to be changed
>     \relative c' {
>       \shape #'(
>                  (( 0 . 0) (0 . 0) (0 . 0) (0 . 1))
>                  ((0.5 . 1.5) (1 . 0) (0 . 0) (0 . -1.5))
>                ) Slur
>       c4( f g c
>       \break
>       d,4 c' f, c)
>     }

En una curva en forma de «S» siempre es necesario ajustar manualmente los puntos de control: LilyPond nunca escoge tales formas automáticamente.

>     \relative c'' {
>       c8( e b-> f d' a e-> g)
>       \shape #'((0 . -1) (5.5 . -0.5) (-5.5 . -10.5) (0 . -5.5)) PhrasingSlur
>       c8\( e b-> f d' a e-> g\)
>     }

#### Especificar los puntos de control explícitamente

Las coordenadas de los puntos de contro de Bézier se especifican en unidades de espacios de pentagrama. La coordenada X es relativa al punto de referencia al que se adjunta la ligadura, y la coordenada Y es relativa a la línea central del pentagrama. Las coordenadas se especifican como una lista de cuatro parejas de números decimales (reales). Un enfoque consiste en estimar las coordenadas de los dos extremos, y después adivinar los dos puntos intermedios. Los valores óptimos se encuentran después por ensayo y error. Tenga en cuenta que estos valores podrían requerir un ajuste manual si se hace posteriormente cualquier cambio manual a la música o a la disposición.

Una situación en la que es preferible especificar los puntos de control explícitamente a especificar los desplazamientos es cuando se necesita especificarlos de forma relativa a una nota única. A continuación presentamos un ejemplo de esto. Muestra una forma de indicar una ligadura que se extiende hacia el interior de las casillas de primera y segunda vez de una repetición.

>     \relative {
>       c''1
>       \repeat volta 3 { c4 d( e f }
>       \alternative {
>         { g2) d }
>         {
>           g2
>           % create a slur and move it to a new position
>           % the <> is just an empty chord to carry the slur termination
>           -\tweak control-points #'((-2 . 3.8) (-1 . 3.9) (0 . 4) (1 . 3.4)) ( <> )
>           f,
>         }
>         {
>           e'2
>           % create a slur and move it to a new position
>           -\tweak control-points #'((-2 . 3) (-1 . 3.1) (0 . 3.2) (1 . 2.4)) ( <> )
>           f,
>         }
>       }
>     }

#### Advertencias y problemas conocidos

No es posible modificar la forma de las ligaduras de unión o de expresión cambiando la propiedad `control-points` si hay más de una en el mismo momento musical, ni siquiera usando la instrucción `\tweak`. Sin embargo, se puede sobreescribir la propiedad `tie-configuration` de `TieColumn` para fijar la línea de inicio y la dirección según se requiera.

#### Véase también

Referencia de funcionamiento interno: TieColumn.

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