diff options
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/automatable.h | 8 | ||||
-rw-r--r-- | libs/ardour/ardour/automation_list.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_model.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/midi_source.h | 13 | ||||
-rw-r--r-- | libs/ardour/ardour/plugin_insert.h | 2 |
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); |