lilypond-user
[Top][All Lists]
Advanced

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

Re: question about overrides within repeats


From: Thomas Morley
Subject: Re: question about overrides within repeats
Date: Sun, 22 Nov 2015 21:15:55 +0100

2015-11-22 20:49 GMT+01:00 David Nalesnik <address@hidden>:
>
>
> On Sun, Nov 22, 2015 at 1:21 PM, David Kastrup <address@hidden> 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"
  }
}

Cheers,
  Harm

Attachment: atest-27.png
Description: PNG image


reply via email to

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