summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/automation_controller.cc8
-rw-r--r--gtk2_ardour/generic_pluginui.cc6
-rw-r--r--gtk2_ardour/processor_box.cc14
-rw-r--r--libs/ardour/amp.cc12
-rw-r--r--libs/ardour/ardour/amp.h6
-rw-r--r--libs/ardour/ardour/automation_control.h12
-rw-r--r--libs/ardour/ardour/plugin_insert.h4
-rw-r--r--libs/ardour/plugin_insert.cc4
-rw-r--r--libs/pbd/pbd/controllable.h32
9 files changed, 54 insertions, 44 deletions
diff --git a/gtk2_ardour/automation_controller.cc b/gtk2_ardour/automation_controller.cc
index 9a06b91da5..91009bf487 100644
--- a/gtk2_ardour/automation_controller.cc
+++ b/gtk2_ardour/automation_controller.cc
@@ -95,11 +95,11 @@ AutomationController::get_label (double& xpos)
void
AutomationController::display_effective_value()
{
- double const ui_value = _controllable->user_to_ui (_controllable->get_value());
+ double const interface_value = _controllable->internal_to_interface (_controllable->get_value());
- if (_adjustment->get_value() != ui_value) {
+ if (_adjustment->get_value () != interface_value) {
_ignore_change = true;
- _adjustment->set_value (ui_value);
+ _adjustment->set_value (interface_value);
_ignore_change = false;
}
}
@@ -108,7 +108,7 @@ void
AutomationController::value_adjusted ()
{
if (!_ignore_change) {
- _controllable->set_value (_controllable->ui_to_user (_adjustment->get_value()));
+ _controllable->set_value (_controllable->interface_to_internal (_adjustment->get_value()));
}
}
diff --git a/gtk2_ardour/generic_pluginui.cc b/gtk2_ardour/generic_pluginui.cc
index 671cc988ac..08ad93285a 100644
--- a/gtk2_ardour/generic_pluginui.cc
+++ b/gtk2_ardour/generic_pluginui.cc
@@ -570,8 +570,8 @@ GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<Automat
Adjustment* adj = control_ui->controller->adjustment();
boost::shared_ptr<PluginInsert::PluginControl> pc = boost::dynamic_pointer_cast<PluginInsert::PluginControl> (control_ui->control);
- adj->set_lower (pc->user_to_ui (desc.lower));
- adj->set_upper (pc->user_to_ui (desc.upper));
+ adj->set_lower (pc->internal_to_interface (desc.lower));
+ adj->set_upper (pc->internal_to_interface (desc.upper));
adj->set_step_increment (desc.step);
adj->set_page_increment (desc.largestep);
@@ -594,7 +594,7 @@ GenericPluginUI::build_control_ui (guint32 port_index, boost::shared_ptr<Automat
}
- adj->set_value (pc->user_to_ui (plugin->get_parameter (port_index)));
+ adj->set_value (pc->internal_to_interface (plugin->get_parameter (port_index)));
/* XXX memory leak: SliderController not destroyed by ControlUI
destructor, and manage() reports object hierarchy
diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc
index 70d35d053a..db5ee835c5 100644
--- a/gtk2_ardour/processor_box.cc
+++ b/gtk2_ardour/processor_box.cc
@@ -385,14 +385,14 @@ ProcessorEntry::Control::Control (Glib::RefPtr<Gdk::Pixbuf> s, boost::shared_ptr
_slider.show ();
box.pack_start (_slider);
- double const lo = c->user_to_ui (c->lower ());
- double const up = c->user_to_ui (c->upper ());
+ double const lo = c->internal_to_interface (c->lower ());
+ double const up = c->internal_to_interface (c->upper ());
_adjustment.set_lower (lo);
_adjustment.set_upper (up);
_adjustment.set_step_increment ((up - lo) / 100);
_adjustment.set_page_increment ((up - lo) / 10);
- _slider.set_default_value (c->user_to_ui (c->normal ()));
+ _slider.set_default_value (c->internal_to_interface (c->normal ()));
_adjustment.signal_value_changed().connect (sigc::mem_fun (*this, &Control::slider_adjusted));
c->Changed.connect (_connection, MISSING_INVALIDATOR, boost::bind (&Control::control_changed, this), gui_context ());
@@ -419,7 +419,7 @@ ProcessorEntry::Control::slider_adjusted ()
return;
}
- c->set_value (c->ui_to_user (_adjustment.get_value ()));
+ c->set_value (c->interface_to_internal (_adjustment.get_value ()));
}
void
@@ -432,14 +432,12 @@ ProcessorEntry::Control::control_changed ()
_ignore_slider_adjustment = true;
- _adjustment.set_value (c->user_to_ui (c->get_value ()));
+ _adjustment.set_value (c->internal_to_interface (c->get_value ()));
- /* XXX: general presentation of values to the user */
stringstream s;
s.precision (1);
s.setf (ios::fixed, ios::floatfield);
- s << accurate_coefficient_to_dB (c->get_value ());
- s << _("dB");
+ s << c->internal_to_user (c->get_value ());
_slider.set_tooltip_text (s.str ());
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;