- jack_nframes_t read_at (MidiRingBuffer& dst,
- jack_nframes_t position,
- jack_nframes_t dur,
- uint32_t chan_n = 0,
- jack_nframes_t read_frames = 0,
- jack_nframes_t skip_frames = 0) const;
-
- jack_nframes_t master_read_at (MidiRingBuffer& dst,
- jack_nframes_t position,
- jack_nframes_t dur,
- uint32_t chan_n=0) const;
-
- XMLNode& state (bool);
- int set_state (const XMLNode&);
-
- int separate_by_channel (ARDOUR::Session&, vector<MidiRegion*>&) const;
-
- UndoAction get_memento() const;
+ /* Stub Readable interface */
+ virtual framecnt_t read (Sample*, framepos_t /*pos*/, framecnt_t /*cnt*/, int /*channel*/) const { return 0; }
+ virtual framecnt_t readable_length() const { return length(); }
+
+ framecnt_t read_at (Evoral::EventSink<nframes_t>& dst,
+ framepos_t position,
+ framecnt_t dur,
+ uint32_t chan_n = 0,
+ NoteMode mode = Sustained,
+ MidiStateTracker* tracker = 0) const;
+
+ framepos_t master_read_at (MidiRingBuffer<nframes_t>& dst,
+ framepos_t position,
+ framecnt_t dur,
+ uint32_t chan_n = 0,
+ NoteMode mode = Sustained) const;
+
+ XMLNode& state ();
+ int set_state (const XMLNode&, int version);
+
+ int separate_by_channel (ARDOUR::Session&, std::vector< boost::shared_ptr<Region> >&) const;
+
+ /* automation */
+
+ boost::shared_ptr<Evoral::Control>
+ control(const Evoral::Parameter& id, bool create=false) {
+ return model()->control(id, create);
+ }
+
+ virtual boost::shared_ptr<const Evoral::Control>
+ control(const Evoral::Parameter& id) const {
+ return model()->control(id);
+ }
+
+ /* export */
+
+ int exportme (ARDOUR::Session&, ARDOUR::ExportSpecification&);
+
+ boost::shared_ptr<MidiModel> model() { return midi_source()->model(); }
+ boost::shared_ptr<const MidiModel> model() const { return midi_source()->model(); }