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:
- 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
- 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.