Best
Urs
Am 11.04.2015 um 16:07 schrieb David Nalesnik:
On Sat, Apr 11, 2015 at 9:01 AM, David Nalesnik
<address@hidden <mailto:address@hidden>> wrote:
Hi Urs,
On Sat, Apr 11, 2015 at 3:31 AM, Urs Liska <address@hidden
<mailto:address@hidden>> wrote:
Hi,
this is related to my previous thread and particularly to the
file attached to
http://lists.gnu.org/archive/html/lilypond-user/2015-04/msg00263.html
If I have a Scheme engraver listening to TextScript-s I can
get a list of entries at the same timestep and then compare
them for equality.
This even works without changes for DynamicText because that
also has a 'text property. But if i have spanners such as
hairpins it's not that simple anymore. So I'm asking myself
if
I can access the starting and ending timesteps of hairpins
that are present in such a list. Of course I can collect
hairpins in a list like I can collect TextScripts (currently
I'm listening for line-interface). But is it possible to
retrieve the start *and* end position of such items?
The goal is to iterate over the list and find matching
hairpins to remove duplicate ones.
A simple way to determine when a hairpin starts and ends is by
using an acknowledger and an end-acknowledger:
myEngraver =
#(lambda (context)
(make-engraver
(acknowledgers
((hairpin-interface engraver grob source-engraver)
(format #t "My start is at ~a~%"
(ly:context-current-moment context))))
(end-acknowledgers
((hairpin-interface engraver grob source-engraver)
(format #t "My end is at ~a~%" (ly:context-current-moment
context))))
))
\layout {
\context {
\Score
\consists \myEngraver
}
}
{
c''1~\<
c''1\!
c''2.\< c''4\!
c''1~\>
\break
c''2~ c''\!
}
If you're collecting the hairpins for processing later, you could
find the timings of beginnings and endings through the columns at
their bounds:
myEngraver =
#(lambda (context)
(let ((hairpins '()))
(make-engraver
(acknowledgers
((hairpin-interface engraver grob source-engraver)
(set! hairpins (cons grob hairpins))))
((finalize trans)
(for-each
(lambda (hp)
(format #t "BEGINNING ~a END: ~a~%"
Not that you will use this method, but the following two lines ought
to be
(grob::when (ly:spanner-bound hp LEFT))
(grob::when (ly:spanner-bound hp RIGHT))))
(grob::when (ly:item-get-column (ly:spanner-bound hp
LEFT)))
(grob::when (ly:item-get-column (ly:spanner-bound hp
RIGHT)))))
hairpins))
)))
DN
------------------------------------------------------------------------
_______________________________________________
lilypond-user mailing list
address@hidden
https://lists.gnu.org/mailman/listinfo/lilypond-user