On Sun, Nov 22, 2015 at 2:15 PM, Thomas Morley <thomasmorle...@gmail.com> wrote:
> 2015-11-22 20:49 GMT+01:00 David Nalesnik <david.nales...@gmail.com>: > > > > > > On Sun, Nov 22, 2015 at 1:21 PM, David Kastrup <d...@gnu.org> wrote: > >> > >> > >> > Is there any way to get the override to be reevaluated with each > repeat? > >> > >> No. Written in that manner, the override is evaluated at _input_ time. > >> If you put it in a variable and use that variable 3 times, the colors > >> will be the same each time. What you want is > >> > >> #(define test > >> (let ((colors (circular-list red green blue yellow darkgreen > magenta))) > >> (lambda (grob) > >> (let ((color (car colors))) > >> (set! colors (cdr colors)) > >> color)))) > >> > >> and > >> > >> \override NoteHead.color = #test > >> > >> That way you'll get one call per actual _grob_ since then each grob is > >> then initialized with the callback, and the callback is replaced by the > >> value when the property is first used. > >> > > > > OK, I get it. I need to override NoteHead.color with a procedure, rather > > than the evaluation of the procedure. (And a grob callback must of > course > > have a grob argument. Passing my original as a procedure results in an > > error.) > > > > Thanks so much! > > > > David > > > > Though, why it is that arbitrary? > > Look at this variation and the attached image: > > \version "2.19.29" > #(define test-nmbrs > (let ((nmbrs (circular-list 1 2 3 4))) > (lambda (grob) > (let ((n (car nmbrs))) > (set! nmbrs (cdr nmbrs)) > (grob-interpret-markup grob (number->string n)))))) > > { > \repeat unfold 8 { > \once \override TextScript.stencil = #test-nmbrs > c''4^\markup "foo" > } > } > > And \tweak produces bizarre results with the color function. Try: { \repeat unfold 50 { \tweak NoteHead.color #test c''4 } } DN
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user