summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_state_tracker.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-12-14 17:17:30 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-12-14 17:17:30 +0000
commit96585e532c879220057edd050806c823ed6e4c1d (patch)
treef476498ed64726e8196167cd278e35803da91ab0 /libs/ardour/midi_state_tracker.cc
parent60872a8504cccc0d7e6c2485af8c0362577f5723 (diff)
send sustain=off and all-notes-off when a MIDI track is muted (may fix #4295)
git-svn-id: svn://localhost/ardour2/branches/3.0@11005 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/midi_state_tracker.cc')
-rw-r--r--libs/ardour/midi_state_tracker.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/libs/ardour/midi_state_tracker.cc b/libs/ardour/midi_state_tracker.cc
index f5020e08a7..342d9d0e58 100644
--- a/libs/ardour/midi_state_tracker.cc
+++ b/libs/ardour/midi_state_tracker.cc
@@ -85,6 +85,14 @@ MidiStateTracker::track (const MidiBuffer::iterator &from, const MidiBuffer::ite
continue;
}
+ /* catch AllNotesOff message and turn off all notes
+ */
+
+ if (ev.type() == MIDI_CTL_ALL_NOTES_OFF) {
+ cerr << "State tracker sees ALL_NOTES_OFF, silenceing " << sizeof (_active_notes) << endl;
+ memset (_active_notes, 0, sizeof (_active_notes));
+ }
+
track_note_onoffs (ev);
}
}