lilypond-user
[Top][All Lists]
Advanced

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

Re: modular "markup" and arguments


From: David Kastrup
Subject: Re: modular "markup" and arguments
Date: Wed, 06 Nov 2013 01:51:07 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux)

Bric <address@hidden> writes:

> On 11/05/2013 03:08 PM, David Kastrup wrote:
>> Paul Morris <address@hidden> writes:
>>
>>> But I think what you really want is a music function:
>>>
>>> \version "2.17.29"
>>>
>>> boo =
>>> #(define-music-function
>>>       (parser location the-music)
>>>       (ly:music?)
>>>     #{
>>>       \override NoteHead.color = #red
>>>       #the-music
>>>       \revert NoteHead.color
>>>     #})
>>>
>>> \relative c' { c4 d e f \boo { g a b } c d e }
>> For such fixed override/revert pairings you should write
>> \temporary\override in the music function instead of just \override:
>> otherwise any previous \override NoteHead.color = #blue will get
>> overwritten and not get restored afterwards.
>
> You rock!  This forum rocks!  Lilypond rocks!
>
> That said:  how do I parametrize \boo ?
>
> With the color as parameter, for example, for something like:
>
>  c4 d e f \boo #'red  { g a b } c d e f8 g \boo #'blue { b d a4 d }
> dis e fis
>
> I realize I'm completely clueless about the syntax

boo =
#(define-music-function
      (parser location color the-music)
      (color? ly:music?)
    #{
      \temporary \override NoteHead.color = #color
      #the-music
      \revert NoteHead.color
    #})

But colors are not symbols but triplets.  The default colors
red/blue/black... are stored in variables of that name.  So you'd have
to write

\boo #red { g a b } ...

rather than \boo #'red ...

-- 
David Kastrup




reply via email to

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