summaryrefslogtreecommitdiff
path: root/libs/surfaces/osc/osc_global_observer.cc
diff options
context:
space:
mode:
authorLen Ovens <len@ovenwerks.net>2018-02-05 10:39:58 -0800
committerLen Ovens <len@ovenwerks.net>2018-02-05 10:40:25 -0800
commit70d8300cb285256784f543da6aaf076d76b5052b (patch)
tree607569227d94ca6471912b7e9a214c1bbe64ce1d /libs/surfaces/osc/osc_global_observer.cc
parentea1740d65f5f95c6fb6bd5a8700a00ef7a6e1b9d (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.cc47
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);
+}
+