summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLen Ovens <len@ovenwerks.net>2017-08-27 14:15:05 -0700
committerLen Ovens <len@ovenwerks.net>2017-08-27 14:15:34 -0700
commite07bb078994c7e36f25c49c59c5c9627dc2aff8e (patch)
tree930a9cbf4906ea902d0a60698cee07c78bdb1fc9
parent7d553eea8028977021f1526b8ab538737a21767c (diff)
OSC: Change jog mode should not stop transport
unless started by scrub or shuttle.
-rw-r--r--libs/surfaces/osc/osc.cc16
1 files changed, 13 insertions, 3 deletions
diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc
index 9eee330949..335bfcc6ad 100644
--- a/libs/surfaces/osc/osc.cc
+++ b/libs/surfaces/osc/osc.cc
@@ -2250,7 +2250,7 @@ OSC::scrub (float delta, lo_message msg)
if (speed == 1) {
session->request_transport_speed (.5);
} else {
- session->request_transport_speed (1);
+ session->request_transport_speed (9.9);
}
} else if (speed < 0) {
if (speed == -1) {
@@ -2289,7 +2289,7 @@ OSC::jog (float delta, lo_message msg)
text_message (path, "Shuttle", get_address (msg));
if (delta) {
double speed = get_transport_speed ();
- set_transport_speed (speed + (delta / 8));
+ set_transport_speed (speed + (delta / 8.1));
} else {
set_transport_speed (0);
}
@@ -2348,31 +2348,42 @@ OSC::jog_mode (float mode, lo_message msg)
if (!session) return -1;
OSCSurface *s = get_surface(get_address (msg));
+ if (get_transport_speed () != 1.0) {
+ set_transport_speed (0);
+ }
switch((uint32_t)mode)
{
case JOG :
+ text_message ("/jog/mode/name", "Jog", get_address (msg));
s->jogmode = JOG;
break;
case SCRUB:
+ text_message ("/jog/mode/name", "Scrub", get_address (msg));
s->jogmode = SCRUB;
break;
case SHUTTLE:
+ text_message ("/jog/mode/name", "Shuttle", get_address (msg));
s->jogmode = SHUTTLE;
break;
case SCROLL:
+ text_message ("/jog/mode/name", "Scroll", get_address (msg));
s->jogmode = SCROLL;
break;
case TRACK:
+ text_message ("/jog/mode/name", "Track", get_address (msg));
s->jogmode = TRACK;
break;
case BANK:
+ text_message ("/jog/mode/name", "Bank", get_address (msg));
s->jogmode = BANK;
break;
case NUDGE:
+ text_message ("/jog/mode/name", "Nudge", get_address (msg));
s->jogmode = NUDGE;
break;
case MARKER:
+ text_message ("/jog/mode/name", "Marker", get_address (msg));
s->jogmode = MARKER;
break;
default:
@@ -2384,7 +2395,6 @@ OSC::jog_mode (float mode, lo_message msg)
lo_message_free (reply);
}
- jog (0, msg);
return 0;
}