lilypond-user
[Top][All Lists]
Advanced

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

Re: (Urgent:) Getting start and end translation-timestep of a (hairpin)


From: Urs Liska
Subject: Re: (Urgent:) Getting start and end translation-timestep of a (hairpin) grob
Date: Mon, 13 Apr 2015 04:11:35 +0200
User-agent: K-9 Mail for Android


Am 13. April 2015 04:05:56 MESZ, schrieb Urs Liska <address@hidden>:
>Hi David,
>
>thank you for your head start.
>See my attached results. I'd be grateful for any comments to improve
>the 
>coding.

In particular I am quite sure that the nesting of

(list (list

is quite clumsy and maybe even "wrong".

>One basic question is if it will be possible to extend it with other 
>types (dynamic text spanners etc.) without having to write another 
>engraver with duplicating code.
>And unfortunately the attached file compiles, while applying it to a 
>real-world file I get  an error:
>
>In procedure ly:grob-set-property! in expression (ly:grob-set-property!
>
>(car equal-hairpins) (quote color) ...):
>
>/home/uliska/git/bfsc/fried/das-trunkne-lied/library/ly/to-lilylib/remove-double-hairpins-engraver.ily:91:19
>
><1>: Wrong type argument in position 1 (expecting Grob): (#<Grob
>Hairpin 
> > #<Grob Hairpin >)
>
>
>Looks quite similar to the problems I had during development, but I 
>don't see yet what is actually wrong with it.
>
>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




reply via email to

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