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/