diff options
author | Carl Hetherington <carl@carlh.net> | 2012-01-21 16:38:56 +0000 |
---|---|---|
committer | Carl Hetherington <carl@carlh.net> | 2012-01-21 16:38:56 +0000 |
commit | 4381b590bbc6e5e6c3f8d5b4e8d88d8a085280b1 (patch) | |
tree | a4d7e211489431f9c592828571b036995fef69d6 /libs | |
parent | a8bb49e5d89f2689d6aeb61381e3c4bd3560d859 (diff) |
Reinstate user Controllable values, as they are needed
for gain (which I forgot about).
git-svn-id: svn://localhost/ardour2/branches/3.0@11293 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs')
-rw-r--r-- | libs/ardour/amp.cc | 12 | ||||
-rw-r--r-- | libs/ardour/ardour/amp.h | 6 | ||||
-rw-r--r-- | libs/ardour/ardour/automation_control.h | 12 | ||||
-rw-r--r-- | libs/ardour/ardour/plugin_insert.h | 4 | ||||
-rw-r--r-- | libs/ardour/plugin_insert.cc | 4 | ||||
-rw-r--r-- | libs/pbd/pbd/controllable.h | 32 |
6 files changed, 41 insertions, 29 deletions
diff --git a/libs/ardour/amp.cc b/libs/ardour/amp.cc index 01a31329cf..b038cde695 100644 --- a/libs/ardour/amp.cc +++ b/libs/ardour/amp.cc @@ -423,21 +423,21 @@ Amp::GainControl::set_value (double val) } double -Amp::GainControl::get_value (void) const +Amp::GainControl::internal_to_interface (double v) const { - return AutomationControl::get_value(); + return gain_to_slider_position (v); } double -Amp::GainControl::user_to_ui (double v) const +Amp::GainControl::interface_to_internal (double v) const { - return gain_to_slider_position (v); + return slider_position_to_gain (v); } double -Amp::GainControl::ui_to_user (double v) const +Amp::GainControl::internal_to_user (double v) const { - return slider_position_to_gain (v); + return accurate_coefficient_to_dB (v); } void diff --git a/libs/ardour/ardour/amp.h b/libs/ardour/ardour/amp.h index b811cca173..398d43ee3e 100644 --- a/libs/ardour/ardour/amp.h +++ b/libs/ardour/ardour/amp.h @@ -82,10 +82,10 @@ public: } void set_value (double val); - double get_value (void) const; - double user_to_ui (double) const; - double ui_to_user (double) const; + double internal_to_interface (double) const; + double interface_to_internal (double) const; + double internal_to_user (double) const; Amp* _amp; }; diff --git a/libs/ardour/ardour/automation_control.h b/libs/ardour/ardour/automation_control.h index 7e375de3ed..2aa8490086 100644 --- a/libs/ardour/ardour/automation_control.h +++ b/libs/ardour/ardour/automation_control.h @@ -77,6 +77,18 @@ public: void set_value (double); double get_value () const; + virtual double internal_to_interface (double v) const { + return v; + } + + virtual double interface_to_internal (double v) const { + return v; + } + + virtual double internal_to_user (double v) const { + return v; + } + double lower() const { return parameter().min(); } double upper() const { return parameter().max(); } double normal() const { return parameter().normal(); } diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h index f6afd13573..5b4a5294f2 100644 --- a/libs/ardour/ardour/plugin_insert.h +++ b/libs/ardour/ardour/plugin_insert.h @@ -89,8 +89,8 @@ class PluginInsert : public Processor double get_value (void) const; XMLNode& get_state(); - double user_to_ui (double) const; - double ui_to_user (double) const; + double internal_to_interface (double) const; + double interface_to_internal (double) const; private: PluginInsert* _plugin; diff --git a/libs/ardour/plugin_insert.cc b/libs/ardour/plugin_insert.cc index 74f82aaade..a03c25ee72 100644 --- a/libs/ardour/plugin_insert.cc +++ b/libs/ardour/plugin_insert.cc @@ -1174,7 +1174,7 @@ PluginInsert::PluginControl::set_value (double user_val) } double -PluginInsert::PluginControl::user_to_ui (double val) const +PluginInsert::PluginControl::internal_to_interface (double val) const { if (_logarithmic) { if (val > 0) { @@ -1188,7 +1188,7 @@ PluginInsert::PluginControl::user_to_ui (double val) const } double -PluginInsert::PluginControl::ui_to_user (double val) const +PluginInsert::PluginControl::interface_to_internal (double val) const { if (_logarithmic) { val = exp (val); diff --git a/libs/pbd/pbd/controllable.h b/libs/pbd/pbd/controllable.h index f61a375ba7..b23cdc7e97 100644 --- a/libs/pbd/pbd/controllable.h +++ b/libs/pbd/pbd/controllable.h @@ -43,27 +43,27 @@ class Controllable : public PBD::StatefulDestructible { Controllable (const std::string& name, Flag f = Flag (0)); virtual ~Controllable() { Destroyed (this); } - /* We express Controllable values in one of two ways: - * 1. `UI' --- as used in some cases for the internal representation - * of the UI. This may be the same as `user', or may be something - * like the natural log of frequency in order that sliders operate - * in a logarithmic fashion. - * 2. `user' --- as passed to a plugin, and presented to the user. + /* We express Controllable values in one of three ways: + * 1. `user' --- as presented to the user (e.g. dB, Hz, etc.) + * 2. `interface' --- as used in some cases for the UI representation + * (in order to make controls behave logarithmically). + * 3. `internal' --- as passed to a processor, track, plugin, or whatever. + * + * Note that in some cases user and processor may be the same + * (and interface different) e.g. frequency, which is presented + * to the user and passed to the processor in linear terms, but + * which needs log scaling in the interface. + * + * In other cases, user and interface may be the same (and processor different) + * e.g. gain, which is presented to the user in log terms (dB) + * but passed to the processor as a linear quantity. */ - /** Set `user' value */ + /** Set `internal' value */ virtual void set_value (double) = 0; - /** @return `user' value */ + /** @return `internal' value */ virtual double get_value (void) const = 0; - virtual double user_to_ui (double v) const { - return v; - } - - virtual double ui_to_user (double v) const { - return v; - } - PBD::Signal0<void> LearningFinished; static PBD::Signal3<void,PBD::Controllable*,int,int> CreateBinding; static PBD::Signal1<void,PBD::Controllable*> DeleteBinding; |