lilypond-user
[Top][All Lists]
Advanced

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

Re: Combining \markup and \override in a variable


From: David Sumbler
Subject: Re: Combining \markup and \override in a variable
Date: Sun, 20 Nov 2016 11:11:09 +0000

On Sat, 2016-11-19 at 19:58 +0100, David Kastrup wrote:
> David Sumbler <address@hidden> writes:
> 
> > 
> > On Sat, 2016-11-19 at 00:27 +0100, Simon Albrecht wrote:
> > > 
> > > On 18.11.2016 22:41, David Sumbler wrote:
> > > > 
> > > > 
> > > > I need to study this (and the previous answer) to see if I can
> > > > fathom
> > > > out the logic of it all.
> > > \tweak is a music function (which means it returns music) and it
> > > also 
> > > takes music as its third argument. The dash turns a markup into
> > > a 
> > > post-event, which is music.
> > > 
> > > HTH, Simon
> > I find this very confusing.
> > 
> > \tweak returns music, yet it requires a hyphen in front of it.
> Music comes in two flavors: post events, and "proper" music
> expressions.
> Post events are what you can tack onto single notes or chords: most
> articulations, subscripts, superscripts.
> 
> A \tweak can return either.  Unfortunately LilyPond's syntax for
> parsing
> music function arguments differs depending on which it is, so
> LilyPond
> needs to know whether the result of a \tweak will be a post event.
> 
> This means you need to put a - in front of it.  The frustrating thing
> is
> that this resolution is only needed for the call itself when in a
> larger
> music expression but not for assignments.  So all of
> 
> redf = \tweak color #red \f
> greenf = -\tweak color #green \f
> 
> { c1\redf c1\greenf }
> 
> is fine while
> 
> { c1\tweak color #red \f }
> 
> does not work but
> 
> { c1-\tweak color #green \f }
> 
> does.  It might be more consistent if
> 
> redf = \tweak color #red \f
> 
> also raised an error.  But I think that ship has sailed.  The long-
> term
> goal should be that
> 
> c1\tweak color #red \f
> 
> works fine.  However, it is quite different from
> 
> c1 \tweak color #red d1
> 
> And the real clincher actually is
> 
> \displayMusic c1 \tweak \color #red \f
> 
> \displayMusic has to wait for \tweak to return a value before it can
> decide whether the returned value is a post-event belonging to c1 or
> a
> separate music expression.
> 
> > 
> >  And markup is not music, but a hyphen turns it into music.
> Not just any old music but a post-event.
> 
> > 
> >  This seems to indicate that \tweak itself is not music,
> It is always music, but whether this music is a post-event or not
> needs
> to be established early enough for LilyPond to parse the rest.
> 
> > 
> > but merely returns music - but with the hyphen the \tweak itself
> > becomes music.  Or perhaps not!
> > 
> > What constitutes music, so far as Lilypond is concerned?
> Markups cannot occur in music expressions in isolation (well, in
> \notemode.  They are fine for \lyricmode).  But -\markup ... is a
> text
> script in \notemode, and text scripts are music expressions and post
> events.
> 
> - introduces _any_ post-event actually but it is often
> redundant.  You
> can write c1-\f-(-3 and it is only the 3 that actually needs the -
> (in
> order to identify it as a fingering rather than a note length,
> incidentally an invalid one).
> 
> So - is needed to turn numbers into post-events, or for turning
> markups
> into post-events, or for giving LilyPond advance notice that a music
> function call is going to return a post-event (LilyPond will mess up
> in
> music expressions if its expectation of post-event or not turns out
> to
> be wrong when the music function call returns something other than
> expected).

This is very, very useful.  OK, I had to read it and think about it 3
or 4 times before I got it my head around it all, but it was defintely
worth the effort.

Thank you so much for taking the time to explain it.

David



reply via email to

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