use playback filter when rendering MIDI; respond to changes in filter by re-rendering

This commit is contained in:
Paul Davis 2019-11-02 19:35:25 -06:00
parent ee67d2d749
commit 9a6350b9c9
2 changed files with 9 additions and 1 deletions

View File

@ -522,9 +522,14 @@ DiskReader::overwrite_existing_buffers ()
RTMidiBuffer* mbuf = rt_midibuffer ();
if (mbuf) {
boost::shared_ptr<MidiTrack> mt = boost::dynamic_pointer_cast<MidiTrack>(_track);
MidiChannelFilter* filter = mt ? &mt->playback_filter() : 0;
PBD::Timing minsert;
minsert.start();
midi_playlist()->render (0);
midi_playlist()->render (filter);
minsert.update();
assert (midi_playlist()->rendered());
// cerr << "Reading " << name() << " took " << minsert.elapsed() << " microseconds, final size = " << midi_playlist()->rendered()->size() << endl;

View File

@ -86,6 +86,9 @@ MidiTrack::MidiTrack (Session& sess, string name, TrackMode mode)
, _input_active (true)
{
_session.SessionLoaded.connect_same_thread (*this, boost::bind (&MidiTrack::restore_controls, this));
_playback_filter.ChannelModeChanged.connect_same_thread (*this, boost::bind (&Track::playlist_modified, this));
_playback_filter.ChannelMaskChanged.connect_same_thread (*this, boost::bind (&Track::playlist_modified, this));
}
MidiTrack::~MidiTrack ()