From c9023ae73d6d70fead3e827811b384e2b171e4d6 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 28 Mar 2015 23:24:41 -0400 Subject: Fix mute of MIDI tracks with channel forcing. This moves MIDI channel filtering into a reusable class and moves filtering to the source, rather than modifying the buffer afterwards. This is necessary so that the playlist trackers reflect the emitted notes (and thus are able to stop them in situations like mute). As a perk, this is also faster because events are just dropped on read, rather than pushed into a buffer then later removed (which is very slow). Really hammering on mute or solo still seems to produce stuck notes occasionally (perhaps related to multiple-on warnings). I am not yet sure why, but occasional beats always. --- libs/ardour/ardour/midi_playlist_source.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'libs/ardour/ardour/midi_playlist_source.h') diff --git a/libs/ardour/ardour/midi_playlist_source.h b/libs/ardour/ardour/midi_playlist_source.h index 6633be3c9e..12c184d7b5 100644 --- a/libs/ardour/ardour/midi_playlist_source.h +++ b/libs/ardour/ardour/midi_playlist_source.h @@ -65,7 +65,8 @@ protected: framepos_t position, framepos_t start, framecnt_t cnt, - MidiStateTracker* tracker) const; + MidiStateTracker* tracker, + MidiChannelFilter* filter) const; framecnt_t write_unlocked (const Lock& lock, MidiRingBuffer& dst, -- cgit v1.2.3