On Fri, Apr 20, 2012 at 3:32 AM, James Harkins
<address@hidden> wrote:
Maybe a simple question: Is there a way to flatten the curve of a tie that is as easy as overriding "ratio" for slurs?
You can override 'ratio for ties too:
\override Tie #'details #'ratio = #0.2
Another possibility is to override 'height-limit:
\override Tie #'details #'height-limit = #0.75
I found "control-points" and this does change the tie's shape. But, I don't need to modify the x-extent, only the y-extent. It looks to me as if overriding the control points means that I would have to re-edit the control points by hand if horizontal spacing changes (which could happen, say, if I take the piece to the US and have to change the paper to letter size instead of A4).
I found TieColumn's Y-extent property, but overriding it like this takes no effect:
\once \override TieColumn #'Y-extent = #'(1 . 1.5)
Also doesn't change the result in any way if the pair of numbers is reversed: (1.5 . 1).
Searched LSR for "tie," didn't find anything quite like this. I'm fairly sure a scheme function could handle it, but I'm probably a good year or two away from being able to attempt something like that on my own.
shapeTie =
#(define-music-function (parser location offsets) (list?)
#{
\once \override Tie #'control-points = #(alter-curve offsets)
#})
#(define ((alter-curve offsets) grob)
(let ((coords (ly:tie::calc-control-points grob)))
(define (add-offsets coords offsets)
(if (null? coords)
'()
(cons
(cons (+ (caar coords) (car offsets))
(+ (cdar coords) (cadr offsets)))
(add-offsets (cdr coords) (cddr offsets)))))
(add-offsets coords offsets)))
\relative c'' {
c~ c
\shapeTie #'(0 0 0 -0.15 0 -0.15 0 0)
c~ c
}
This way the shape of the tie is modified by offsetting lilypond's default rather than you having to create the control points from scratch.
HTH,
David