diff options
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/disk_reader.cc | 7 | ||||
-rw-r--r-- | libs/ardour/midi_track.cc | 3 |
2 files changed, 9 insertions, 1 deletions
diff --git a/libs/ardour/disk_reader.cc b/libs/ardour/disk_reader.cc index 998984cc4c..1db2449c50 100644 --- a/libs/ardour/disk_reader.cc +++ b/libs/ardour/disk_reader.cc @@ -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; diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc index 856c90efb8..5c58506adc 100644 --- a/libs/ardour/midi_track.cc +++ b/libs/ardour/midi_track.cc @@ -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 () |