2009/5/10 Marc Hohl <[email protected]>:
> I came up with the following definition:
>
> #(define (glissando::calc-extra-dy grob)
> (let* ((original (ly:grob-original grob))
> (left-bound (ly:spanner-bound original LEFT))
> (right-bound (ly:spanner-bound original RIGHT))
> (left-pitch (ly:event-property (event-cause left-bound) 'pitch))
> (right-pitch (ly:event-property (event-cause right-bound) 'pitch))
> (extra-dy
> (if (and (= (ly:pitch-octave left-pitch) (ly:pitch-octave
> right-pitch))
> (= (ly:pitch-notename left-pitch) (ly:pitch-notename
> right-pitch)))
> (- (ly:pitch-alteration right-pitch) (ly:pitch-alteration
> left-pitch))
> 0 )))
> (set! (ly:grob-property grob 'extra-dy) extra-dy)
> (ly:line-spanner::print grob)))
Good stuff, though you don't need to override #'stencil here; it will
work just as well with #'extra-dy directly:
#(define (glissando::calc-extra-dy grob)
(let* ((original (ly:grob-original grob))
(left-bound (ly:spanner-bound original LEFT))
(right-bound (ly:spanner-bound original RIGHT))
(left-pitch (ly:event-property (event-cause left-bound) 'pitch))
(right-pitch (ly:event-property (event-cause right-bound) 'pitch)))
(if (and (= (ly:pitch-octave left-pitch) (ly:pitch-octave right-pitch))
(= (ly:pitch-notename left-pitch) (ly:pitch-notename
right-pitch)))
(- (ly:pitch-alteration right-pitch) (ly:pitch-alteration left-pitch))
0)))
\override Glissando #'extra-dy = #glissando::calc-extra-dy
Regards,
Neil
_______________________________________________
lilypond-user mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-user