lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Flatten a tie without hardcoding control points?


From: David Nalesnik
Subject: Re: Flatten a tie without hardcoding control points?
Date: Fri, 20 Apr 2012 06:31:20 -0500

Hi James,

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.


As far as easier control of 'control-points goes, you can modify  http://lsr.dsi.unimi.it/LSR/Snippet?id=639 like so:

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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]