[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Fixing issue 800 (extender ending early if other voices present)
From: |
Joe Neeman |
Subject: |
Re: Fixing issue 800 (extender ending early if other voices present) |
Date: |
Wed, 11 Nov 2009 11:38:05 -0800 |
On Wed, 2009-11-11 at 10:33 -0500, Chris Snyder wrote:
> 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
I'm confused: isn't the current check in
Extender_engraver::stop_translation_timestep?