[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: missing glissando features (bugs?)
From: |
Neil Puttock |
Subject: |
Re: missing glissando features (bugs?) |
Date: |
Sat, 9 May 2009 17:29:40 +0100 |
2009/5/9 Marc Hohl <address@hidden>:
> I tried to receive the informations needed by overriding the Glissando
> #'stencil with
> a function which simply displays the values obtained by the ly:spanner-bound
> call
> before calling ly:line-spanner::print, but I get only #<Grob NoteHead > on
> the terminal.
>
> What am I doing wrong here?
Nothing, though to be on the safe side, it's best to ensure you're
dealing with the unbroken spanner by using ly:grob-original: if a user
decides to have a glissando over a line break, it won't be possible to
get noteheads for both bounds.
Once you have the NoteHead grobs, you can retrieve their pitches from
the events which created them:
\relative c' {
\override NoteHead #'stencil = #(lambda (grob)
;; event-cause is a convenient shorthand in this case for
(ly:grob-property grob 'cause)
(display (event-cause grob))
(ly:note-head::print grob))
c4
}
>>
#<Prob: Stream_event C++: Stream_event((music-cause . #<Prob: Music
C++: Music((length . #<Mom 1/4>) (elements) (duration . #<Duration 4
>) (pitch . #<Pitch c' >) (origin . #<location
/home/neil/Documents/test.ly:254:5>))((display-methods #<procedure #f
(note parser)>) (name . NoteEvent) (types general-music event
note-event rhythmic-event melodic-event)) >
) (length . #<Mom 1/4>) (elements) (duration . #<Duration 4 >) (pitch
. #<Pitch c' >) (origin . #<location
/home/neil/Documents/test.ly:254:5>))((class . note-event)) >
>From the event, you can get the pitch using ly:event-property event 'pitch.
Putting it all together:
#(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)))
;; work out return value based on pitches here
0))
Regards,
Neil
- missing glissando features (bugs?), Marc Hohl, 2009/05/02
- Re: missing glissando features (bugs?), Neil Thornock, 2009/05/02
- Re: missing glissando features (bugs?), Neil Puttock, 2009/05/02
- Re: missing glissando features (bugs?), Marc Hohl, 2009/05/05
- Re: missing glissando features (bugs?), Marc Hohl, 2009/05/09
- Re: missing glissando features (bugs?), Marc Hohl, 2009/05/10
- Re: missing glissando features (bugs?), Neil Puttock, 2009/05/10
- Re: missing glissando features (bugs?), Marc Hohl, 2009/05/11
- Re: missing glissando features (bugs?), Neil Puttock, 2009/05/13
- Re: missing glissando features (bugs?), Marc Hohl, 2009/05/14
- Re: missing glissando features (bugs?), Neil Puttock, 2009/05/14
- Re: missing glissando features (bugs?), Marc Hohl, 2009/05/15