On 2020/02/07 12:34:38, dak wrote:
But it has
> evaded me to find a way of expressing "end cadenza and bar".  The best
I could
> do so far could be expressed as
> 
> \cadenzaOffAfter =
> #(define-music-function (last-note) (ly:music?)
>    #{ \partial #(ly:music-duration 1 0 (ly:moment-main
(ly:music-length
> lastnote)))
>       #last-note
>    #})
> 
> But that's really somewhat inconvenient.

I spent a little time looking at \cadenzaOff and I think there might be
some hope for shaping \post into something helpful.  Currently, when we
write this:

    a1 \cadenzaOff | b2

we get the property change during the timestep in which b2 starts.  Part
of the reason that using this to create a new measure at the end of a
cadenza is ineffective is that this change to the "timing" property
comes after certain translators have already inspected "timing" at the
beginning of the timestep and behaved as if the cadenza continues.  If
we could move the property change back to the end of the previous time
step, I think it would help.

The initial proposal for \post queues up a property change for the end
of the current time step.  What if \post instead queued up the property
change for "as late as possible before time t" where t is derived from
the preceding note (or chord, rest, or skip), i.e.,

    a1 \post \cadenzaOff | b2

would change the "timing" property at the instant that a ends, which is
before b begins.  Where one wants to deal with the current time step,
s1*0 \post \set ... would probably be a way.  Does it seem that it would
be worth toying with that?

P.S. Does anyone happen to know if the edition engraver has trouble
referencing points in a cadenza?

https://codereview.appspot.com/581600043/

Reply via email to