Kieren MacMillan <kie...@kierenmacmillan.info> writes: > Hi David (et al.), > >>> In that case, the NoteHead one has no effect, because \once applies to >>> the next time step only, and the next time step is for a grace note >>> another voice. >> >> The recovery action of \once should likely occur after the next _local_ >> timestep. >> >>> Do they occur after? In that case, the TimeSignature one has no >>> effect, because the TimeSignature grob was created before the graces. >>> The latter is the currently chosen interpretation. >> >> With that interpretation, \once \override Staff.NoteHead.color would >> color _all_ grace notes. An alternative would be to try to involve >> \context ... constructs in the grace fixup decisions, in which case >> NoteHead.color and Staff.NoteHead.color would lead to different timings >> of the result. >> >>> So what do you do for an arbitrary \once \override? Especially if >>> there is a Scheme engraver that might decide to create this grob at >>> any time? >> >> \once \override is not a grob. > > It appears that David is saying exactly what I’m suggesting > [separating grobs from zero-duration events, eliminating > context-bleed, etc.], the only exception being the order of operations > (pre-grace or post-grace). If David’s approach *does* “map well into > code intended for computers”, I could care less about the actual order > of operations that Lilypond takes.
Nope, David is saying nothing in any way remotely similar to what you are saying. I have tried sketching several different approaches to dealing with the "\once problem" (which is a particularly obnoxious angle of the general \override problem) that Jean pointed out to be problematic in the context of extending the fixup mechanism to parallel music. Neither is really an expression of any principle but rather a suggestion of how to apply additional bandaids to particular points for reducing the amount of user-surprising artifacts. "user-surprising artifact" unfortunately is not the same as "illogical". -- David Kastrup