diff options
author | Robin Gareus <robin@gareus.org> | 2017-06-19 00:57:53 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-06-21 18:12:04 +0200 |
commit | 567c0a8f5321f70f13e8e0c4c78725ce4521608b (patch) | |
tree | 343c5178af230a8ca1ec7644500ffc17344cd3c5 | |
parent | e91b80eb85452586f226f4b7eb84d8be36ea1a3c (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.cc | 2 | ||||
-rw-r--r-- | libs/ardour/gain_control.cc | 4 | ||||
-rw-r--r-- | libs/ardour/parameter_descriptor.cc | 6 | ||||
-rw-r--r-- | libs/surfaces/generic_midi/midicontrollable.cc | 7 | ||||
-rw-r--r-- | libs/surfaces/osc/osc.cc | 25 | ||||
-rw-r--r-- | libs/surfaces/osc/osc_cue_observer.cc | 4 | ||||
-rw-r--r-- | libs/surfaces/osc/osc_global_observer.cc | 4 | ||||
-rw-r--r-- | libs/surfaces/osc/osc_route_observer.cc | 4 | ||||
-rw-r--r-- | libs/surfaces/osc/osc_select_observer.cc | 6 |
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) { |