OSC: Fix math error in send fader feedback
authorLen Ovens <len@ovenwerks.net>
Fri, 23 Jun 2017 20:12:43 +0000 (13:12 -0700)
committerLen Ovens <len@ovenwerks.net>
Fri, 23 Jun 2017 21:26:29 +0000 (14:26 -0700)
libs/surfaces/osc/osc_select_observer.cc
libs/surfaces/osc/osc_select_observer.h

index 2786aafcf84269c6361f50c7150290a4027b54e0..1b6c38761168888bae1bae403ee52e723e94fd69 100644 (file)
@@ -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]--;
                        }
index 4114ecb2d51412b5c168d5a91778d05ec6726c65..ea5ab5aeedf5f9529166b57002ef4bb972a9df88 100644 (file)
@@ -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;