summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-06-19 00:57:53 +0200
committerRobin Gareus <robin@gareus.org>2017-06-21 18:12:04 +0200
commit567c0a8f5321f70f13e8e0c4c78725ce4521608b (patch)
tree343c5178af230a8ca1ec7644500ffc17344cd3c5
parente91b80eb85452586f226f4b7eb84d8be36ea1a3c (diff)
Switch to PBD control-math and prefer Controllable API
Note: Control-surfaces should always use interface_to_internal() and internal_to_interface().
-rw-r--r--gtk2_ardour/gain_meter.cc2
-rw-r--r--libs/ardour/gain_control.cc4
-rw-r--r--libs/ardour/parameter_descriptor.cc6
-rw-r--r--libs/surfaces/generic_midi/midicontrollable.cc7
-rw-r--r--libs/surfaces/osc/osc.cc25
-rw-r--r--libs/surfaces/osc/osc_cue_observer.cc4
-rw-r--r--libs/surfaces/osc/osc_global_observer.cc4
-rw-r--r--libs/surfaces/osc/osc_route_observer.cc4
-rw-r--r--libs/surfaces/osc/osc_select_observer.cc6
9 files changed, 36 insertions, 26 deletions
diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc
index f03a001b1a..9bc31e9760 100644
--- a/gtk2_ardour/gain_meter.cc
+++ b/gtk2_ardour/gain_meter.cc
@@ -310,7 +310,7 @@ GainMeterBase::setup_gain_adjustment ()
gain_adjustment.set_upper (GAIN_COEFF_UNITY);
gain_adjustment.set_step_increment (dB_coeff_step(Config->get_max_gain()) / 10.0);
gain_adjustment.set_page_increment (dB_coeff_step(Config->get_max_gain()));
- gain_slider->set_default_value (gain_to_slider_position (GAIN_COEFF_UNITY));
+ gain_slider->set_default_value (gain_to_slider_position_with_max (GAIN_COEFF_UNITY, Config->get_max_gain()));
} else {
_data_type = DataType::MIDI;
gain_adjustment.set_lower (0.0);
diff --git a/libs/ardour/gain_control.cc b/libs/ardour/gain_control.cc
index 7b0f4e404c..35f666bdf1 100644
--- a/libs/ardour/gain_control.cc
+++ b/libs/ardour/gain_control.cc
@@ -50,7 +50,7 @@ double
GainControl::internal_to_interface (double v) const
{
if (_desc.type == GainAutomation) {
- return gain_to_slider_position (v);
+ return gain_to_slider_position_with_max (v, _desc.upper);
} else {
return (accurate_coefficient_to_dB (v) - lower_db) / range_db;
}
@@ -60,7 +60,7 @@ double
GainControl::interface_to_internal (double v) const
{
if (_desc.type == GainAutomation) {
- return slider_position_to_gain (v);
+ return slider_position_to_gain_with_max (v, _desc.upper);
} else {
return dB_to_coefficient (lower_db + v * range_db);
}
diff --git a/libs/ardour/parameter_descriptor.cc b/libs/ardour/parameter_descriptor.cc
index 16c618dec6..f6460a514e 100644
--- a/libs/ardour/parameter_descriptor.cc
+++ b/libs/ardour/parameter_descriptor.cc
@@ -19,6 +19,8 @@
#include <boost/algorithm/string.hpp>
+#include "pbd/control_math.h"
+
#include "ardour/amp.h"
#include "ardour/dB.h"
#include "ardour/parameter_descriptor.h"
@@ -157,8 +159,8 @@ ParameterDescriptor::update_steps()
/* dB_coeff_step gives a step normalized for [0, max_gain]. This is
like "slider position", so we convert from "slider position" to gain
to have the correct unit here. */
- largestep = slider_position_to_gain(dB_coeff_step(upper));
- step = slider_position_to_gain(largestep / 10.0);
+ largestep = position_to_gain (dB_coeff_step(upper));
+ step = position_to_gain (largestep / 10.0);
smallstep = step;
} else {
/* note that LV2Plugin::get_parameter_descriptor ()
diff --git a/libs/surfaces/generic_midi/midicontrollable.cc b/libs/surfaces/generic_midi/midicontrollable.cc
index 0a7caac3bc..92c86d665c 100644
--- a/libs/surfaces/generic_midi/midicontrollable.cc
+++ b/libs/surfaces/generic_midi/midicontrollable.cc
@@ -23,10 +23,10 @@
#include <iostream>
#include "pbd/error.h"
-#include "pbd/xml++.h"
+#include "pbd/compose.h"
#include "pbd/stacktrace.h"
#include "pbd/types_convert.h"
-#include "pbd/compose.h"
+#include "pbd/xml++.h"
#include "midi++/types.h" // Added by JE - 06-01-2009. All instances of 'byte' changed to 'MIDI::byte' (for clarification)
#include "midi++/port.h"
@@ -36,7 +36,6 @@
#include "ardour/automation_control.h"
#include "ardour/controllable_descriptor.h"
#include "ardour/midi_ui.h"
-#include "ardour/utils.h"
#include "ardour/debug.h"
#include "midicontrollable.h"
@@ -175,7 +174,7 @@ int
MIDIControllable::control_to_midi (float val)
{
if (controllable->is_gain_like()) {
- return gain_to_slider_position (val) * max_value_for_type ();
+ return controllable->internal_to_interface (val) * max_value_for_type ();
}
float control_min = controllable->lower ();
diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc
index ec4966c8c0..1e67d746ef 100644
--- a/libs/surfaces/osc/osc.cc
+++ b/libs/surfaces/osc/osc.cc
@@ -28,6 +28,7 @@
#include "pbd/gstdio_compat.h"
#include <glibmm.h>
+#include "pbd/control_math.h"
#include <pbd/convert.h>
#include <pbd/pthread_utils.h>
#include <pbd/file_utils.h>
@@ -586,7 +587,7 @@ OSC::register_callbacks()
REGISTER_CALLBACK (serv, "/select/eq_q", "if", sel_eq_q);
REGISTER_CALLBACK (serv, "/select/eq_shape", "if", sel_eq_shape);
- /* These commands require the route index in addition to the arg; TouchOSC (et al) can't use these */
+ /* These commands require the route index in addition to the arg; TouchOSC (et al) can't use these */
REGISTER_CALLBACK (serv, "/strip/mute", "ii", route_mute);
REGISTER_CALLBACK (serv, "/strip/solo", "ii", route_solo);
REGISTER_CALLBACK (serv, "/strip/solo_iso", "ii", route_solo_iso);
@@ -613,7 +614,7 @@ OSC::register_callbacks()
REGISTER_CALLBACK (serv, "/strip/send/enable", "iif", route_set_send_enable);
REGISTER_CALLBACK(serv, "/strip/name", "is", route_rename);
REGISTER_CALLBACK(serv, "/strip/sends", "i", route_get_sends);
- REGISTER_CALLBACK(serv, "/strip/receives", "i", route_get_receives);
+ REGISTER_CALLBACK(serv, "/strip/receives", "i", route_get_receives);
REGISTER_CALLBACK(serv, "/strip/plugin/list", "i", route_plugin_list);
REGISTER_CALLBACK(serv, "/strip/plugin/descriptor", "ii", route_plugin_descriptor);
REGISTER_CALLBACK(serv, "/strip/plugin/reset", "ii", route_plugin_reset);
@@ -2297,7 +2298,7 @@ OSC::master_set_fader (float position)
if (!session) return -1;
boost::shared_ptr<Stripable> s = session->master_out();
if (s) {
- s->gain_control()->set_value (slider_position_to_gain_with_max (position, 2.0), PBD::Controllable::NoGroup);
+ s->gain_control()->set_value (slider_position_to_gain_with_max (position, 2.0), PBD::Controllable::NoGroup); // XXX use interface_to_internal, unhardcode 2.0
}
return 0;
}
@@ -2378,7 +2379,7 @@ OSC::monitor_set_fader (float position)
if (!session) return -1;
boost::shared_ptr<Stripable> s = session->monitor_out();
if (s) {
- s->gain_control()->set_value (slider_position_to_gain_with_max (position, 2.0), PBD::Controllable::NoGroup);
+ s->gain_control()->set_value (slider_position_to_gain_with_max (position, 2.0), PBD::Controllable::NoGroup); // XXX use internal_to_interface, unhardcode 2.0
}
return 0;
}
@@ -2456,7 +2457,7 @@ OSC::route_get_sends(lo_message msg) {
lo_message_add_string(reply, isend->name().c_str());
lo_message_add_int32(reply, i);
boost::shared_ptr<Amp> a = isend->amp();
- lo_message_add_float(reply, gain_to_slider_position(a->gain_control()->get_value()));
+ lo_message_add_float(reply, gain_to_position(a->gain_control()->get_value())); // XXX use internal_to_interface
lo_message_add_int32(reply, p->active() ? 1 : 0);
}
}
@@ -2516,7 +2517,7 @@ OSC::route_get_receives(lo_message msg) {
lo_message_add_int32(reply, get_sid(tr, get_address(msg)));
lo_message_add_string(reply, tr->name().c_str());
lo_message_add_int32(reply, j);
- lo_message_add_float(reply, gain_to_slider_position(a->gain_control()->get_value()));
+ lo_message_add_float(reply, gain_to_position(a->gain_control()->get_value())); // XXX use internal_to_interface
lo_message_add_int32(reply, p->active() ? 1 : 0);
}
}
@@ -3285,7 +3286,7 @@ OSC::route_set_gain_fader (int ssid, float pos, lo_message msg)
return -1;
}
int ret;
- ret = route_set_gain_abs (ssid, slider_position_to_gain_with_max (pos, 2.0), msg);
+ ret = route_set_gain_abs (ssid, slider_position_to_gain_with_max (pos, 2.0), msg); // XXX use interface_to_internal, unhardcode 2.0
if (ret != 0) {
return route_send_fail ("fader", ssid, 0, get_address (msg));
}
@@ -3304,7 +3305,7 @@ OSC::sel_fader (float val, lo_message msg)
}
if (s) {
float abs;
- abs = slider_position_to_gain_with_max (val, 2.0);
+ abs = slider_position_to_gain_with_max (val, 2.0); // XXX use interface_to_internal, unhardcode 2.0
if (s->gain_control()) {
fake_touch (s->gain_control());
s->gain_control()->set_value (abs, PBD::Controllable::NoGroup);
@@ -3479,7 +3480,7 @@ OSC::route_set_send_fader (int ssid, int id, float val, lo_message msg)
#ifdef MIXBUS
abs = s->send_level_controllable(id)->interface_to_internal (val);
#else
- abs = slider_position_to_gain_with_max (val, 2.0);
+ abs = slider_position_to_gain_with_max (val, 2.0); // XXX use interface_to_internal, unhardcode 2.0
#endif
s->send_level_controllable (id)->set_value (abs, PBD::Controllable::NoGroup);
return 0;
@@ -3555,7 +3556,7 @@ OSC::sel_sendfader (int id, float val, lo_message msg)
#ifdef MIXBUS
abs = s->send_level_controllable(send_id)->interface_to_internal (val);
#else
- abs = slider_position_to_gain_with_max (val, 2.0);
+ abs = slider_position_to_gain_with_max (val, 2.0); // XXX interface_to_internal, unhardcode 2.0
#endif
s->send_level_controllable (send_id)->set_value (abs, PBD::Controllable::NoGroup);
return 0;
@@ -5005,7 +5006,7 @@ OSC::cue_aux_fader (float position, lo_message msg)
if (s) {
float abs;
- abs = slider_position_to_gain_with_max (position, 2.0);
+ abs = slider_position_to_gain_with_max (position, 2.0); // XXX use interface_to_internal, unhardcode 2.0
if (s->gain_control()) {
s->gain_control()->set_value (abs, PBD::Controllable::NoGroup);
return 0;
@@ -5048,7 +5049,7 @@ OSC::cue_send_fader (uint32_t id, float val, lo_message msg)
float abs;
if (s) {
if (s->gain_control()) {
- abs = slider_position_to_gain_with_max (val, 2.0);
+ abs = slider_position_to_gain_with_max (val, 2.0); // XXX use interface_to_internal, unhardcode 2.0
s->gain_control()->set_value (abs, PBD::Controllable::NoGroup);
return 0;
}
diff --git a/libs/surfaces/osc/osc_cue_observer.cc b/libs/surfaces/osc/osc_cue_observer.cc
index 40f97d7c3b..727eb8d37b 100644
--- a/libs/surfaces/osc/osc_cue_observer.cc
+++ b/libs/surfaces/osc/osc_cue_observer.cc
@@ -19,6 +19,8 @@
#include "boost/lambda/lambda.hpp"
+#include "pbd/control_math.h"
+
#include "ardour/track.h"
#include "ardour/dB.h"
#include "ardour/meter.h"
@@ -221,7 +223,7 @@ OSCCueObserver::send_gain_message (uint32_t id, boost::shared_ptr<Controllable>
path = string_compose ("%1/%2", path, id);
}
lo_message msg = lo_message_new ();
- lo_message_add_float (msg, gain_to_slider_position (controllable->get_value()));
+ lo_message_add_float (msg, gain_to_position (controllable->get_value())); // XXX use internal_to_interface
gain_timeout[id] = 8;
lo_send_message (addr, path.c_str(), msg);
diff --git a/libs/surfaces/osc/osc_global_observer.cc b/libs/surfaces/osc/osc_global_observer.cc
index d73fd1a043..5f5632b2a4 100644
--- a/libs/surfaces/osc/osc_global_observer.cc
+++ b/libs/surfaces/osc/osc_global_observer.cc
@@ -19,6 +19,8 @@
#include "boost/lambda/lambda.hpp"
+#include "pbd/control_math.h"
+
#include "ardour/session.h"
#include "ardour/dB.h"
#include "ardour/meter.h"
@@ -259,7 +261,7 @@ void
OSCGlobalObserver::send_gain_message (string path, boost::shared_ptr<Controllable> controllable)
{
if (gainmode) {
- float_message (string_compose ("%1fader", path), gain_to_slider_position (controllable->get_value()));
+ float_message (string_compose ("%1fader", path), gain_to_position (controllable->get_value())); // XXX use internal_to_interface
text_message (string_compose ("%1name", path), string_compose ("%1%2%3", std::fixed, std::setprecision(2), accurate_coefficient_to_dB (controllable->get_value())));
if (path.find("master") != std::string::npos) {
master_timeout = 8;
diff --git a/libs/surfaces/osc/osc_route_observer.cc b/libs/surfaces/osc/osc_route_observer.cc
index c33ad7cc2b..9075737b37 100644
--- a/libs/surfaces/osc/osc_route_observer.cc
+++ b/libs/surfaces/osc/osc_route_observer.cc
@@ -19,6 +19,8 @@
#include "boost/lambda/lambda.hpp"
+#include "pbd/control_math.h"
+
#include "ardour/session.h"
#include "ardour/track.h"
#include "ardour/monitor_control.h"
@@ -358,7 +360,7 @@ OSCRouteObserver::send_gain_message (string path, boost::shared_ptr<Controllable
}
if (gainmode) {
- lo_message_add_float (msg, gain_to_slider_position (controllable->get_value()));
+ lo_message_add_float (msg, gain_to_position (controllable->get_value())); // XXX use internal_to_interface
text_with_id ("/strip/name", ssid, string_compose ("%1%2%3", std::fixed, std::setprecision(2), accurate_coefficient_to_dB (controllable->get_value())));
gain_timeout = 8;
} else {
diff --git a/libs/surfaces/osc/osc_select_observer.cc b/libs/surfaces/osc/osc_select_observer.cc
index 66974c75c8..8438847896 100644
--- a/libs/surfaces/osc/osc_select_observer.cc
+++ b/libs/surfaces/osc/osc_select_observer.cc
@@ -20,6 +20,8 @@
#include <vector>
#include "boost/lambda/lambda.hpp"
+#include "pbd/control_math.h"
+
#include "ardour/session.h"
#include "ardour/track.h"
#include "ardour/monitor_control.h"
@@ -634,7 +636,7 @@ OSCSelectObserver::gain_message ()
if (gainmode) {
text_message ("/select/name", string_compose ("%1%2%3", std::fixed, std::setprecision(2), accurate_coefficient_to_dB (value)));
gain_timeout = 8;
- send_float ("/select/fader", gain_to_slider_position (value));
+ send_float ("/select/fader", gain_to_position (value)); // XXX use internal_to_interface
} else {
if (value < 1e-15) {
send_float ("/select/gain", -200);
@@ -704,7 +706,7 @@ OSCSelectObserver::send_gain (uint32_t id, boost::shared_ptr<PBD::Controllable>
#ifdef MIXBUS
value = controllable->internal_to_interface (controllable->get_value());
#else
- value = gain_to_slider_position (controllable->get_value());
+ value = gain_to_position (controllable->get_value()); // XXX use internal_to_interface
#endif
text_with_id ("/select/send_name" , id, string_compose ("%1%2%3", std::fixed, std::setprecision(2), db));
if (send_timeout.size() > id) {