summaryrefslogtreecommitdiff
path: root/libs/surfaces
diff options
context:
space:
mode:
authorLen Ovens <len@ovenwerks.net>2017-06-23 13:12:43 -0700
committerLen Ovens <len@ovenwerks.net>2017-06-23 14:26:29 -0700
commit2a087464377e753e42395ed39081322c73d13f03 (patch)
tree866574b6c7be9f7ac24559c35ec4ddae0b646a34 /libs/surfaces
parent1138b62fb8fe42592e36432518e734f42ee546c2 (diff)
OSC: Fix math error in send fader feedback
Diffstat (limited to 'libs/surfaces')
-rw-r--r--libs/surfaces/osc/osc_select_observer.cc13
-rw-r--r--libs/surfaces/osc/osc_select_observer.h1
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;