On Fri, Feb 7, 2020 at 2:46 PM Kieren MacMillan < kieren_macmil...@sympatico.ca> wrote:
> Hi all, > > Here’s the brainstorm I’ve currently got going: > > Issue #34, a.k.a. the grace note bug, is one of Lilypond’s > longest-standing and most newbie-unfriendly issues. It doesn’t appear in > single-staff scores, obviously — only in multi-staff scores where one staff > has a grace note [in the note code] and one or more other staves don’t. > > So… > > Can Someone™ write a Scheme engraver that listens for grace events and > automagically adds grace skips of equal duration at the same moment in all > other staves of a given score? *Intuitively*, \consist-ing that engraver > into a score sounds to me like the perfect (Band-Aid™?) solution, modulo > what is apparently a very difficult and/or time-consuming recoding of some > deep fundamentals in Lilypond’s timing codebase. > > Let me know if I’m just talking nonsense. > If not, let me know how I can help make this "fix" a reality > Unfortunately, it's not obvious where to insert the skips. Consider this staff1 : grace 16th, whole note staff2 : X, whole note now, if X is a \clef, you probably want to insert the skip after the X, but if X is a \once \override for the NoteHead, adding a skip after X will make it inoperable. I fear this is essentially unsolvable in the current model. I think the right solution would be to kill grace timing altogether, and initiate some sort special "embedded" engraving pass that creates the Grace grobs all at once. That would have another downside: if we construct the grace note grobs in a special pass, there is nothing to synchronize them across staves. You could have two-handed piano music where the left and right hand do grace notes in a synchronized way. I don't if that exists in practice, but it is one of the reasons for the current approach. -- Han-Wen Nienhuys - hanw...@gmail.com - http://www.xs4all.nl/~hanwen