DescriptionMidi_walker::do_start_note: skip ignored notes in stop_note_queue
For each semitone pitch value, stop_note_queue is likely supposed to contain
at most one Midi_note event with its "ignore_" flag set to false, and the
comparisons between notes of equal semitone pitch to be always done between
the input note and this unique queued note that is not (yet) being ignored.
If notes which are already being ignored are not skipped in the loop, the
task of raising the "ignore_" flags for note events of equal semitone pitch
(overlapping in time) which stop before the maximum stopping time of these
notes may, due to breaking out of the loop, fail to work if there are three
or more simultaneous notes of equal semitone pitch, leading to the emission
of premature "note off" events for this pitch, as demonstrated, for example,
in <http://lists.gnu.org/archive/html/bug-lilypond/2016-06/msg00042.html>.
Patch Set 1 #Patch Set 2 : add regression test #Patch Set 3 : clarify description of regression test #
MessagesTotal messages: 4
|