David Kastrup <[email protected]> schrieb:
>Urs Liska <[email protected]> writes:
>
>> Hi David,
>>
>> this is great!
>>
>> Am 29.09.2013 09:51, schrieb David Kastrup:
>>> David Kastrup <[email protected]> writes:
>>>
>>>> colorizeDir =
>>>> #(define-music-function (parser location item)
>>>>    (symbol-list-or-music?)
>>>>    (define (grob-colorize-dir grob)
>>>>      (let ((ev (event-cause grob)))
>>>>        (and ev (ly:event-property ev 'direction #f)
>>>>                red)))
>>>>    #{ \tweak color #grob-colorize-dir #item #})
>>> Not everything might be prepared to deal with a color #f, so it may
>be
>>> safer to write the slightly more complex
>>>
>>> (if (and ev (ly:event-property ev 'direction #f))
>>>      red '())
>>>
>>> expression inside.
>>>
>> Could you please explain to me (or give a few hints) what this last
>> (and) expression does exactly?
>
>if ev is non-#f and the property with the name 'direction in ev is
>non-#f (while considering an unset direction as defaulting to #f), then
>red is returned, otherwise '().

Ok, that's how I understood it (seems I'm slowly getting into the topic).

>
>> I would like to extend this to treat up/down independently
>>
>>
>> I tried to modify it as follows:
>>
>> colorizeDir =
>>
>> #(define-music-function (parser location item)
>>
>>   (symbol-list-or-music?)
>>
>>   (define (grob-colorize-dir grob)
>>
>>     (let ((ev (event-cause grob)))
>>
>>       (if (and ev (ly:event-property ev 'direction #f))
>>
>>           (cond ((equal? 'direction 1) red)
>
>The symbol 'direction is a symbol and never equal to a number.  You
>forgot to look up the property, instead comparing with the _name_ of
>the
>property.
>
>Any reason for the double-spacing here?  

No idea how that happened. Before sending the message looked completely normal.

> It's a nuisance to quote and
>comment on.

Sorry!

>
>You can write:
>
>#(define-music-function (parser location item)
>   (symbol-list-or-music?)
>   (define (grob-colorize-dir grob)
>     (let ((ev (event-cause grob)))
>       (case (ly:event-property ev 'direction)
>             ((1) red)
>             ((-1) blue)
>             (else '())))))
>   #{ \tweak color #grob-colorize-dir #item #})

Thanks, this works perfectly.

I would like to add this to a Frescobaldi addition and later (once 2.18 is out) 
to a LilyPond addition proposal. Do you have any objections?
Of course we can attribute it to you, and you can review it before release if 
you want.

Best
Urs


_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to