[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Fixing issue 800 (extender ending early if other voices present)

From: Chris Snyder
Subject: Fixing issue 800 (extender ending early if other voices present)
Date: Wed, 11 Nov 2009 10:33:00 -0500
User-agent: Thunderbird (X11/20090817)

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

reply via email to

[Prev in Thread] Current Thread [Next in Thread]