summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/midi_region.h
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/ardour/midi_region.h')
-rw-r--r--libs/ardour/ardour/midi_region.h28
1 files changed, 17 insertions, 11 deletions
diff --git a/libs/ardour/ardour/midi_region.h b/libs/ardour/ardour/midi_region.h
index e0caddd954..2cbed8f99c 100644
--- a/libs/ardour/ardour/midi_region.h
+++ b/libs/ardour/ardour/midi_region.h
@@ -72,22 +72,28 @@ class MidiRegion : public Region
int set_state (const XMLNode&);
int separate_by_channel (ARDOUR::Session&, vector<MidiRegion*>&) const;
-
- UndoAction get_memento() const;
-
- // Act as a proxy for MidiModel automation stuff (for CC)
- // Yep, this is pretty ugly...
- Controls& controls() { return midi_source()->model()->controls(); }
- const Controls& controls() const { return midi_source()->model()->controls(); }
- boost::shared_ptr<Evoral::Control> control(const Evoral::Parameter& id, bool create=false)
- { return midi_source()->model()->control(id, create); }
+ /* automation */
+
+ boost::shared_ptr<Evoral::Control>
+ control(const Evoral::Parameter& id, bool create=false) {
+ return model()->data().control(id, create);
+ }
- boost::shared_ptr<const Evoral::Control> control(const Evoral::Parameter& id) const
- { return midi_source()->model()->control(id); }
+ virtual boost::shared_ptr<const Evoral::Control>
+ control(const Evoral::Parameter& id) const {
+ return model()->data().control(id);
+ }
+
+ /* export */
int exportme (ARDOUR::Session&, ARDOUR::ExportSpecification&);
+ UndoAction get_memento() const;
+
+ boost::shared_ptr<MidiModel> model() { return midi_source()->model(); }
+ boost::shared_ptr<const MidiModel> model() const { return midi_source()->model(); }
+
private:
friend class RegionFactory;