diff options
author | Len Ovens <len@ovenwerks.net> | 2017-06-23 13:12:43 -0700 |
---|---|---|
committer | Len Ovens <len@ovenwerks.net> | 2017-06-23 14:26:29 -0700 |
commit | 2a087464377e753e42395ed39081322c73d13f03 (patch) | |
tree | 866574b6c7be9f7ac24559c35ec4ddae0b646a34 /libs/surfaces | |
parent | 1138b62fb8fe42592e36432518e734f42ee546c2 (diff) |
OSC: Fix math error in send fader feedback
Diffstat (limited to 'libs/surfaces')
-rw-r--r-- | libs/surfaces/osc/osc_select_observer.cc | 13 | ||||
-rw-r--r-- | libs/surfaces/osc/osc_select_observer.h | 1 |
2 files changed, 9 insertions, 5 deletions
diff --git a/libs/surfaces/osc/osc_select_observer.cc b/libs/surfaces/osc/osc_select_observer.cc index 2786aafcf8..1b6c387611 100644 --- a/libs/surfaces/osc/osc_select_observer.cc +++ b/libs/surfaces/osc/osc_select_observer.cc @@ -61,6 +61,7 @@ OSCSelectObserver::OSCSelectObserver (boost::shared_ptr<Stripable> s, lo_address as = ARDOUR::Off; send_size = 0; plug_size = 0; + _comp_redux = 1; if (feedback[0]) { // buttons are separate feedback _strip->PropertyChanged.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::name_changed, this, boost::lambda::_1), OSC::instance()); @@ -280,13 +281,14 @@ OSCSelectObserver::send_init() uint32_t page_start = ((sur->send_page - 1) * send_size); uint32_t last_send = sur->send_page * send_size; uint32_t c = 1; + send_timeout.push_back (2); for (uint32_t s = page_start; s < last_send; ++s, ++c) { bool send_valid = false; if (_strip->send_level_controllable (s)) { _strip->send_level_controllable(s)->Changed.connect (send_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::send_gain, this, c, _strip->send_level_controllable(s)), OSC::instance()); - send_timeout.push_back (0); + send_timeout.push_back (2); send_gain (c, _strip->send_level_controllable(s)); send_valid = true; } @@ -491,15 +493,16 @@ OSCSelectObserver::tick () } } if (feedback[13]) { - if (_strip->comp_redux_controllable()) { - if (_strip->comp_redux_controllable()->get_parameter()) { + if (_strip->comp_redux_controllable() && _strip->comp_enable_controllable() && _strip->comp_enable_controllable()->get_value()) { + if (_comp_redux != _strip->comp_redux_controllable()->get_parameter()) { send_float ("/select/comp_redux", (float) _strip->comp_redux_controllable()->get_parameter ()); + _comp_redux = _strip->comp_redux_controllable()->get_parameter(); } } - for (uint32_t i = 0; i < send_timeout.size(); i++) { + for (uint32_t i = 1; i <= send_timeout.size(); i++) { if (send_timeout[i]) { if (send_timeout[i] == 1) { - text_with_id ("/select/send_name", i + 1, _strip->send_name(i)); + text_with_id ("/select/send_name", i, _strip->send_name(i - 1)); } send_timeout[i]--; } diff --git a/libs/surfaces/osc/osc_select_observer.h b/libs/surfaces/osc/osc_select_observer.h index 4114ecb2d5..ea5ab5aeed 100644 --- a/libs/surfaces/osc/osc_select_observer.h +++ b/libs/surfaces/osc/osc_select_observer.h @@ -66,6 +66,7 @@ class OSCSelectObserver float _last_meter; uint32_t nsends; float _last_gain; + float _comp_redux; ARDOUR::AutoState as; uint32_t send_size; uint32_t nplug_params; |