Ajustar las posiciones de las ligaduras verticalmente
Usando \override Slur.positions es posible fijar la
posición vertical de los puntos de inicio y de fin de una ligadura
de expresión a valores absolutos (o mejor dicho, forzar al
algoritmo de ligaduras de LilyPond para que tenga en cuenta estos
valores según se desee). En muchos casos, esto implica bastante
ensayo y error hasta que se encuentran unos valores aceptables.
Porblablemente habrá probado la instrucción \offset solo
para comprobar que no funciona con las ligaduras de expresión,
sino que emite una advertencia en su lugar.
El código de este fragmento nos permite trucar las posiciones de
comienzo y final especificando cambios relativos, de manera
parecida a \offset.
La sintaxis es: \offsetPositions #'(dy1 . dy2)
offsetPositions = #(define-music-function (offsets) (number-pair?) #{ \once \override Slur.control-points = #(lambda (grob) (match-let ((((_ . y1) _ _ (_ . y2)) (ly:slur::calc-control-points grob)) ((off1 . off2) offsets)) (set! (ly:grob-property grob 'positions) (cons (+ y1 off1) (+ y2 off2))) (ly:slur::calc-control-points grob))) #}) \relative c'' { c4(^"default" c, d2) \offsetPositions #'(0 . 1) c'4(^"(0 . 1)" c, d2) \offsetPositions #'(0 . 2) c'4(^"(0 . 2)" c, d2) \bar "||" g4(^"default" a d'2) \offsetPositions #'(1 . 0) g,,4(^"(1 . 0)" a d'2) \offsetPositions #'(2 . 0) g,,4(^"(2 . 0)" a d'2) }