+ void set_automation_state(AutoState as);
+ void set_automation_style(AutoStyle as);
+ void start_touch(double when);
+ void stop_touch(bool mark, double when);
+
+ /* inherited from PBD::Controllable.
+ * Derived classes MUST call ::writable() to verify
+ * that writing to the parameter is legal at that time.
+ */
+ double get_value () const;
+ /* inherited from PBD::Controllable.
+ * Derived classes MUST call ::writable() to verify
+ * that writing to the parameter is legal at that time.
+ */
+ void set_value (double value, PBD::Controllable::GroupControlDisposition group_override);
+ /* automation related value setting */
+ virtual bool writable () const;
+ /* Call to ::set_value() with no test for writable() because
+ * this is only used by automation playback. We would like
+ * to make it pure virtual
+ */
+ virtual void set_value_unchecked (double val) {}
+
+ double lower() const { return _desc.lower; }
+ double upper() const { return _desc.upper; }
+ double normal() const { return _desc.normal; }
+ bool toggled() const { return _desc.toggled; }
+
+ double internal_to_interface (double i) const;
+ double interface_to_internal (double i) const;
+
+ const ParameterDescriptor& desc() const { return _desc; }
+
+ const ARDOUR::Session& session() const { return _session; }
+ void commit_transaction (bool did_write);