summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/automatable.h
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2008-09-21 16:17:02 +0000
committerDavid Robillard <d@drobilla.net>2008-09-21 16:17:02 +0000
commite14187aadd574d46c82d8eb0d151b526b84ddcc7 (patch)
treea80073703c5c3f4a68b4d50aee2c14be7cc1e204 /libs/ardour/ardour/automatable.h
parenteec19ca7afde0da57b2a4d9abc6ef847e6924975 (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.h43
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__ */