I've done some work towards fixing issue 800, and at least now understand what's happening:

The patch that introduced the bug added a check in Extender_engraver::stop_translation_timestep() to check if the current voice was in the middle of a melisma (calling melisma_busy(voice) ) and, if not, completizing the extender. This fixed the neverending-extender bug, but introduced issue 800.

The reason that this is happening is not simply because there's another voice, but specifically because of the rhythm in the second voice: Extender_engraver::stop_translation_timestep() is called after the second beat in the measure, while the first voice is in the middle of the dotted quarter-note. At this point, melisma_busy() returns false - it apparently doesn't know how to handle being in the middle of a note.

It seems to me that there are two possible ways to address this:

1) Change melisma_busy() to return true if in the middle of a note
2) Alternatively, add the check in Extender_engraver::stop_translation_timestep instead

Any guidance on which approach is preferable? Thanks.

--
Chris Snyder
Adoro Music Publishing
1-616-828-4436 x800
http://www.adoromusicpub.com


_______________________________________________
lilypond-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-devel

Reply via email to