lilypond-user
[Top][All Lists]
Advanced

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

Re:variables for specific kinds of markup?


From: Flaming Hakama by Elaine
Subject: Re:variables for specific kinds of markup?
Date: Tue, 18 Sep 2018 13:32:23 -0700

From: Marc Evanstein <address@hidden>
To: David Kastrup <address@hidden>
Cc: address@hidden
Date: Mon, 17 Sep 2018 18:14:31 +0000
Subject: Re: variables for specific kinds of markup?
Thanks so much – changing it to define-event-function worked perfectly. Is a markup considered an "event" rather than "music"? Was define-music-function somehow returning that event attached to empty music or something?

At any rate, glad to hear that this is getting simpler in the near future, and many thanks for all the help!

September 17, 2018 8:01 AM, "David Kastrup" <address@hidden> wrote:

> "Marc Evanstein (formerly Evans)" <address@hidden> writes:
>
>> Hi all,
>>
>> I'm trying to create a variable to handle a certain type of markup
>> text. For instance, I'd like percussion strikings to be in small caps
>> above the staff, and what I really want is to define some sort of
>> macro that replaces all instances of "\striking { theText }" with
>> "^\markup\smallCaps { theText }".
>>
>> The following clearly doesn't work (much as I would like it to):
>>
>> striking = ^\markup\smallCaps
>
> Current master will allow
>
> striking = ^\markup \smallCaps \etc
>
>> From searching around, it seems like I need to define a function using
>> scheme. I tried this:
>>
>> striking = #(define-music-function (parser location text)
>> (string?)
>> #{
>> ^\markup\smallCaps { #text }
>> #})
>>
>> ... and while the single line "\striking mallet" seems to render the
>> word mallet as a smallCaps markup above a dummy staff, when I try to
>> incorporate it into a series of notes, e.g.:
>>
>> {c'4 \striking mallet d'4 e'4 f'4 }
>>
>> I get an "error: unexpected post-event". What exactly does that mean?
>
> Current master would have worked as expected for this use...
>
> At any rate, you are pretty close (whether we are talking about 2.18 or
> 2.19). Just use define-event-function instead of define-music-function
> .
>
> And rejoice that LilyPond will have fewer stumbling blocks in the near
> future. Or at least will be better at hiding the stumbling blocks so
> you'll just get hit by them when digging deeper.
>
> --
> David Kastrup



You could also consider writing your function to use 
the empty chord construct <> as an anchor for your markup.  

That might make it more bulletproof since you avoid having 
to care about the data type of the previous element.

\version "2.19.15" 

striking = #(define-music-function 
(parser location text)
    (string?)
    #{
     <>^\markup\smallCaps { #text }
    #}
)

{c'4 \striking mallet d'4 e'4 f'4 }


HTH,

Elaine Alt
415 . 341 .4954                                           "Confusion is highly underrated"
address@hidden
Producer ~ Composer ~ Instrumentalist
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

 

reply via email to

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