diff options
author | David Robillard <d@drobilla.net> | 2008-09-21 16:17:02 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2008-09-21 16:17:02 +0000 |
commit | e14187aadd574d46c82d8eb0d151b526b84ddcc7 (patch) | |
tree | a80073703c5c3f4a68b4d50aee2c14be7cc1e204 /libs/ardour/ardour/automatable.h | |
parent | eec19ca7afde0da57b2a4d9abc6ef847e6924975 (diff) |
Display recorded controller data (fix show all/existing automation).
git-svn-id: svn://localhost/ardour2/branches/3.0@3779 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/ardour/automatable.h')
-rw-r--r-- | libs/ardour/ardour/automatable.h | 43 |
1 files changed, 37 insertions, 6 deletions
diff --git a/libs/ardour/ardour/automatable.h b/libs/ardour/ardour/automatable.h index 99e7891ce8..837bbbc617 100644 --- a/libs/ardour/ardour/automatable.h +++ b/libs/ardour/ardour/automatable.h @@ -28,22 +28,28 @@ #include <ardour/automation_control.h> #include <ardour/parameter.h> #include <evoral/ControlSet.hpp> +#include <evoral/Sequence.hpp> namespace ARDOUR { class Session; class AutomationControl; -class Automatable : public SessionObject, virtual public Evoral::ControlSet + +/** Note this class is abstract, actual objects must either be + * an AutomatableControls or an AutomatableSequence + */ +class Automatable : virtual public Evoral::ControlSet { public: - Automatable(Session&, const std::string& name); + Automatable(Session&); + Automatable(); virtual ~Automatable() {} - boost::shared_ptr<Evoral::Control> control_factory(boost::shared_ptr<Evoral::ControlList> list) const; - boost::shared_ptr<Evoral::ControlList> control_list_factory(const Evoral::Parameter& param) const; - + boost::shared_ptr<Evoral::Control> + control_factory(const Evoral::Parameter& id); + virtual void add_control(boost::shared_ptr<Evoral::Control>); virtual void automation_snapshot(nframes_t now, bool force); @@ -74,8 +80,14 @@ public: static jack_nframes_t automation_interval() { return _automation_interval; } + + typedef Evoral::ControlSet::Controls Controls; + + Evoral::ControlSet& data() { return *this; } + const Evoral::ControlSet& data() const { return *this; } protected: + Session& _a_session; void can_automate(Parameter); @@ -90,10 +102,29 @@ protected: std::set<Parameter> _visible_controls; std::set<Parameter> _can_automate_list; - nframes_t _last_automation_snapshot; + nframes_t _last_automation_snapshot; static nframes_t _automation_interval; }; + +/** Contains notes and controllers */ +class AutomatableSequence : public Automatable, public Evoral::Sequence { +public: + AutomatableSequence(Session& s, size_t size) + : Evoral::ControlSet() + , Automatable(s) + , Evoral::Sequence(size) + {} +}; + + +/** Contains only controllers */ +class AutomatableControls : public Automatable { +public: + AutomatableControls(Session& s) : Evoral::ControlSet(), Automatable(s) {} +}; + + } // namespace ARDOUR #endif /* __ardour_automatable_h__ */ |