Hi Jakub,

On Sun, Feb 7, 2016 at 12:45 PM, Jakub Pavlík <jkb.pav...@gmail.com> wrote:

> Thank you very much, now I know at least how to get from a grob to the
> corresponding music object.
>
> In order to "catch" the notes under a slur that aren't slur attach points
> ("middle notes") I tried to use a closure as the callback function and
> store information on the "slurred state" (in slur / not in slur) in a
> variable. Unfortunately the callback isn't executed for the notes in input
> order, but in a quasi-random fashion, so this technique isn't usable at
> all. It seems that a property callback function isn't a tool suitable for
> detecting and modifying all slurred notes.
>

It would be interesting to see your code for this.  This randomness was the
topic of an earlier thread, and I wonder if your observation is related:
http://www.mail-archive.com/lilypond-user%40gnu.org/msg106840.html


> I hope that sooner or later I will find The Right Tool for the Job (TM).
>
>
Slur grobs store a pointer to an array of NoteColumns they encompass.  So,
expanding on Paul's solution, you could do something like this:

 \version "2.19"

#(define (color-slur-notes grob)
   (let*
    ((note-columns (ly:grob-array->list
                    (ly:grob-object grob 'note-columns)))
     (note-heads (append-map
                  (lambda (nc)
                    (ly:grob-array->list
                     (ly:grob-object nc 'note-heads)))
                  note-columns))
     (color-notes (lambda (n) (ly:grob-set-property! n 'color red))))
    (for-each color-notes note-heads)))

\score {
  \relative c'' {
    \override Staff.Slur.before-line-breaking = #color-slur-notes
    a a
    a( a)
    a
    a( a <a c e>)
  }
}

%%%%%%%%%%%%%%%%

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

Reply via email to