lilypond-user
[Top][All Lists]
Advanced

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

Re: Conditionally color all tweaked objects


From: David Kastrup
Subject: Re: Conditionally color all tweaked objects
Date: Mon, 22 Apr 2013 19:03:18 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)

Urs Liska <address@hidden> writes:

> Hi,
>
> is it possible somehow to hook into the engraving process and color all
> grobs that have been manually tweaked?
>
> In my library I have a 'draft mode'. All my functions or shorthands that
> tweak the positioning have a counterpart in draft mode. The draft mode
> functions basically call the normal functions and add coloring to them.
> This way I can compile a score in draft mode and immediately see where I
> had to apply some manual interventions.
>
> While this is quite useful in the process of finishing a score (and also
> to evaluate LilyPond's performance) it obviously only works with tweaks
> applied through my custom functions. But it would only be _really_
> useful if I could highlight _all_ manual interventions.
> Of course it isn't a viable solution to write such functions for any
> tweak I'm applying so I thought if it would be possible to do such a
> thing in a more fundamental way.

You could redefine \tweak but it is probably more reliable to use
internals:

> So would such a thing be possible, maybe in Scheme?
> Or if that's not possible in Scheme would that be an interesting feature
> request?


\version "2.16.2"

{ c d e f \tweak #'font-size 3 g a b c }

\layout
{
  \context {
    \Score
    \consists #(make-engraver
                (acknowledgers
                 ((grob-interface engraver grob source)
                  (let ((ev (event-cause grob)))
                    (if (and (ly:stream-event? ev)
                             (pair? (ly:event-property ev 'tweaks)))
                        (set! (ly:grob-property grob 'color) red))))))
  }
}

This does not try to differentiate events into several grobs, so in this
case, the whole note with stem and notehead will get colored even though
just the notehead was tweaked.  It is more cumbersome to pick out
further details, so this is left as an exercise to the reader.

-- 
David Kastrup




reply via email to

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