summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r--libs/ardour/ardour/automatable.h8
-rw-r--r--libs/ardour/ardour/automation_list.h2
-rw-r--r--libs/ardour/ardour/midi_model.h2
-rw-r--r--libs/ardour/ardour/midi_source.h13
-rw-r--r--libs/ardour/ardour/plugin_insert.h2
5 files changed, 19 insertions, 8 deletions
diff --git a/libs/ardour/ardour/automatable.h b/libs/ardour/ardour/automatable.h
index 2f35fc6b42..e0fe38e67e 100644
--- a/libs/ardour/ardour/automatable.h
+++ b/libs/ardour/ardour/automatable.h
@@ -65,7 +65,7 @@ public:
virtual std::string describe_parameter(Evoral::Parameter param);
- AutoState get_parameter_automation_state (Evoral::Parameter param, bool lock = true);
+ AutoState get_parameter_automation_state (Evoral::Parameter param);
virtual void set_parameter_automation_state (Evoral::Parameter param, AutoState);
AutoStyle get_parameter_automation_style (Evoral::Parameter param);
@@ -95,16 +95,13 @@ public:
int set_automation_state (const XMLNode&, Evoral::Parameter default_param);
XMLNode& get_automation_state();
-
- /** Emitted when the automation state of one of our controls changes */
- PBD::Signal1<void, Evoral::Parameter> AutomationStateChanged;
protected:
Session& _a_session;
void can_automate(Evoral::Parameter);
- virtual void auto_state_changed (Evoral::Parameter /*which*/) {}
+ virtual void automation_list_automation_state_changed (Evoral::Parameter, AutoState) {}
int load_automation (const std::string& path);
int old_set_automation_state(const XMLNode&);
@@ -116,7 +113,6 @@ public:
static nframes_t _automation_interval;
private:
- void automation_state_changed (Evoral::Parameter const &);
PBD::ScopedConnectionList _control_connections; ///< connections to our controls' signals
};
diff --git a/libs/ardour/ardour/automation_list.h b/libs/ardour/ardour/automation_list.h
index 77b8d49dc7..acb071cca7 100644
--- a/libs/ardour/ardour/automation_list.h
+++ b/libs/ardour/ardour/automation_list.h
@@ -54,7 +54,7 @@ class AutomationList : public PBD::StatefulDestructible, public Evoral::ControlL
void set_automation_state (AutoState);
AutoState automation_state() const { return _state; }
- PBD::Signal0<void> automation_state_changed;
+ PBD::Signal1<void, AutoState> automation_state_changed;
void set_automation_style (AutoStyle m);
AutoStyle automation_style() const { return _style; }
diff --git a/libs/ardour/ardour/midi_model.h b/libs/ardour/ardour/midi_model.h
index e91d6484ea..e959535a36 100644
--- a/libs/ardour/ardour/midi_model.h
+++ b/libs/ardour/ardour/midi_model.h
@@ -174,7 +174,9 @@ private:
friend class DeltaCommand;
void source_interpolation_changed (Evoral::Parameter, Evoral::ControlList::InterpolationStyle);
+ void source_automation_state_changed (Evoral::Parameter, AutoState);
void control_list_interpolation_changed (Evoral::Parameter, Evoral::ControlList::InterpolationStyle);
+ void automation_list_automation_state_changed (Evoral::Parameter, AutoState);
PBD::ScopedConnectionList _midi_source_connections;
diff --git a/libs/ardour/ardour/midi_source.h b/libs/ardour/ardour/midi_source.h
index 8d20f9c7b6..5afcc20255 100644
--- a/libs/ardour/ardour/midi_source.h
+++ b/libs/ardour/ardour/midi_source.h
@@ -122,10 +122,17 @@ class MidiSource : virtual public Source
void copy_interpolation_from (boost::shared_ptr<MidiSource>);
void copy_interpolation_from (MidiSource *);
+ AutoState automation_state_of (Evoral::Parameter) const;
+ void set_automation_state_of (Evoral::Parameter, AutoState);
+ void copy_automation_state_from (boost::shared_ptr<MidiSource>);
+ void copy_automation_state_from (MidiSource *);
+
/** Emitted when a different MidiModel is set */
PBD::Signal0<void> ModelChanged;
/** Emitted when a parameter's interpolation style is changed */
PBD::Signal2<void, Evoral::Parameter, Evoral::ControlList::InterpolationStyle> InterpolationChanged;
+ /** Emitted when a parameter's automation state is changed */
+ PBD::Signal2<void, Evoral::Parameter, AutoState> AutomationStateChanged;
protected:
virtual void flush_midi() = 0;
@@ -159,6 +166,12 @@ class MidiSource : virtual public Source
*/
typedef std::map<Evoral::Parameter, Evoral::ControlList::InterpolationStyle> InterpolationStyleMap;
InterpolationStyleMap _interpolation_style;
+
+ /** Map of automation states to use for Parameters; if they are not in this map,
+ * the correct automation state is Off.
+ */
+ typedef std::map<Evoral::Parameter, AutoState> AutomationStateMap;
+ AutomationStateMap _automation_state;
};
}
diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h
index c962832eb1..6656f755cf 100644
--- a/libs/ardour/ardour/plugin_insert.h
+++ b/libs/ardour/ardour/plugin_insert.h
@@ -133,7 +133,7 @@ class PluginInsert : public Processor
void connect_and_run (BufferSet& bufs, nframes_t nframes, nframes_t offset, bool with_auto, nframes_t now = 0);
void set_automatable ();
- void auto_state_changed (Evoral::Parameter which);
+ void control_list_automation_state_changed (Evoral::Parameter, AutoState);
void set_parameter_state (const XMLNode& node, int version);
void set_parameter_state_2X (const XMLNode& node, int version);