namespace ARDOUR {
+class MidiChannelFilter;
class MidiStateTracker;
class MidiModel;
framepos_t start,
framecnt_t cnt,
MidiStateTracker* tracker,
- const std::set<Evoral::Parameter>& filtered) const;
+ MidiChannelFilter* filter,
+ const std::set<Evoral::Parameter>& filtered,
+ double beat,
+ double start_beat) const;
/** Write data from a MidiRingBuffer to this source.
* @param source Source to read from.
virtual void load_model(const Glib::Threads::Mutex::Lock& lock, bool force_reload=false) = 0;
virtual void destroy_model(const Glib::Threads::Mutex::Lock& lock) = 0;
- /** Reset cached information (like iterators) when things have changed. */
- void invalidate(const Glib::Threads::Mutex::Lock& lock);
+ /** Reset cached information (like iterators) when things have changed.
+ * @param lock Source lock, which must be held by caller.
+ * @param notes If non-NULL, currently active notes are added to this set.
+ */
+ void invalidate(const Glib::Threads::Mutex::Lock& lock,
+ std::set<Evoral::Sequence<Evoral::Beats>::WeakNotePtr>* notes=NULL);
void set_note_mode(const Glib::Threads::Mutex::Lock& lock, NoteMode mode);
framepos_t position,
framepos_t start,
framecnt_t cnt,
- MidiStateTracker* tracker) const = 0;
+ MidiStateTracker* tracker,
+ MidiChannelFilter* filter) const = 0;
/** Write data to this source from a MidiRingBuffer.
* @param source Buffer to read from.