Midi_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.
Diff:
Passes make, make check and a full make doc.
Patch on countdown for July 3rd.
Heikki, a Reg test was asked for in the Reitveld. Any comments?
add regression test
http://codereview.appspot.com/296570043
clarify description of regression test
http://codereview.appspot.com/296570043
I added a regression test as requested in the review comments. (The fix remains the same, so there are no new changes to the actual code that would need another review cycle.)
Passes make, make check and a full make doc.
Patch on countdown for July 7th.
Patch counted down - please push.
Please find the patch attached.
Thanks,
Heikki
author Heikki Tauriainen g034737@welho.com
Sun, 26 Jun 2016 15:47:03 +0100 (17:47 +0300)
committer James Lowe pkx166h@gmail.com
Mon, 11 Jul 2016 06:02:35 +0100 (06:02 +0100)
commit e7121831390ef4b0d09c1d509e1ccb0de2ea36a8