diff options
author | Len Ovens <len@ovenwerks.net> | 2018-02-05 10:39:58 -0800 |
---|---|---|
committer | Len Ovens <len@ovenwerks.net> | 2018-02-05 10:40:25 -0800 |
commit | 70d8300cb285256784f543da6aaf076d76b5052b (patch) | |
tree | 607569227d94ca6471912b7e9a214c1bbe64ce1d /libs/surfaces/osc/osc_global_observer.cc | |
parent | ea1740d65f5f95c6fb6bd5a8700a00ef7a6e1b9d (diff) |
OSC: clean up jog mode, simplify feedback
Diffstat (limited to 'libs/surfaces/osc/osc_global_observer.cc')
-rw-r--r-- | libs/surfaces/osc/osc_global_observer.cc | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/libs/surfaces/osc/osc_global_observer.cc b/libs/surfaces/osc/osc_global_observer.cc index a63520b572..e68858150f 100644 --- a/libs/surfaces/osc/osc_global_observer.cc +++ b/libs/surfaces/osc/osc_global_observer.cc @@ -44,6 +44,7 @@ OSCGlobalObserver::OSCGlobalObserver (OSC& o, Session& s, ArdourSurface::OSC::OS ,_last_master_gain (0.0) ,_last_master_trim (0.0) ,_last_monitor_gain (0.0) + ,_jog_mode (1024) ,last_punchin (4) ,last_punchout (4) ,last_click (4) @@ -52,6 +53,7 @@ OSCGlobalObserver::OSCGlobalObserver (OSC& o, Session& s, ArdourSurface::OSC::OS session = &s; gainmode = sur->gainmode; feedback = sur->feedback; + uint32_t jogmode = sur->jogmode; _last_sample = -1; if (feedback[4]) { @@ -126,6 +128,7 @@ OSCGlobalObserver::OSCGlobalObserver (OSC& o, Session& s, ArdourSurface::OSC::OS send_change_message ("/click/level", click_controllable); extra_check (); + jog_mode (jogmode); /* * Maybe (many) more @@ -202,6 +205,8 @@ OSCGlobalObserver::clear_observer () _osc.float_message (X_("/toggle_punch_in"), 0, addr); _osc.float_message (X_("/toggle_click"), 0, addr); _osc.float_message (X_("/click/level"), 0, addr); + _osc.text_message (X_("/jog/mode/name"), " ", addr); + _osc.int_message (X_("/jog/mode"), 0, addr); } @@ -500,3 +505,45 @@ OSCGlobalObserver::extra_check () } } +void +OSCGlobalObserver::jog_mode (uint32_t jogmode) +{ + if (jogmode == _jog_mode || !feedback[4]) { + // no change + return; + } + _jog_mode = jogmode; + + switch(jogmode) + { + case 0: + _osc.text_message (X_("/jog/mode/name"), "Jog", addr); + break; + case 1: + _osc.text_message (X_("/jog/mode/name"), "Nudge", addr); + break; + case 2: + _osc.text_message (X_("/jog/mode/name"), "Scrub", addr); + break; + case 3: + _osc.text_message (X_("/jog/mode/name"), "Shuttle", addr); + break; + case 4: + _osc.text_message (X_("/jog/mode/name"), "Marker", addr); + break; + case 5: + _osc.text_message (X_("/jog/mode/name"), "Scroll", addr); + break; + case 6: + _osc.text_message (X_("/jog/mode/name"), "Track", addr); + break; + case 7: + _osc.text_message (X_("/jog/mode/name"), "Bank", addr); + break; + default: + PBD::warning << X_("Jog Mode: ") << jogmode << X_(" is not valid.") << endmsg; + break; + } + _osc.int_message (X_("/jog/mode"), jogmode, addr); +} + |