Hi David,

this is great!

Am 29.09.2013 09:51, schrieb David Kastrup:
David Kastrup <d...@gnu.org> 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?
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)

                ((equal? 'direction -1) blue))

          '())))

  #{ \tweak color #grob-colorize-dir #item #})


and hoped if would work like this:
"if we are dealing with the right grob, and this grob has a 'direction then
execute the 'cond' expression and assign grob-colorize-dir 'red' or 'blue' depending on the 'direction being 1 or -1"


It compiles without complaints but doesn't color anything.
So I assume that either the if expression or both cond expressions return false.


TIA
Urs

_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to