summaryrefslogtreecommitdiff
path: root/libs/surfaces/osc/osc.cc
diff options
context:
space:
mode:
authorLen Ovens <len@ovenwerks.net>2017-06-23 18:08:04 -0700
committerLen Ovens <len@ovenwerks.net>2017-06-23 18:08:04 -0700
commit33bfe681c94f7c9ba36a683521daf74b5834b3e9 (patch)
treeeb318ae015a570f138f6591a9e787aef1de929b2 /libs/surfaces/osc/osc.cc
parent01e75da96bff67eb44d253bfe9f8d695ab412aea (diff)
OSC: Allow /bank_up to accept -1 as well as 1 so encoder can work.
Diffstat (limited to 'libs/surfaces/osc/osc.cc')
-rw-r--r--libs/surfaces/osc/osc.cc19
1 files changed, 18 insertions, 1 deletions
diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc
index 7d44efda26..9818514e36 100644
--- a/libs/surfaces/osc/osc.cc
+++ b/libs/surfaces/osc/osc.cc
@@ -530,7 +530,7 @@ OSC::register_callbacks()
REGISTER_CALLBACK (serv, "/scroll_dn_1_page", "f", scroll_dn_1_page);
REGISTER_CALLBACK (serv, "/scroll_dn_1_page", "", scroll_dn_1_page);
REGISTER_CALLBACK (serv, "/bank_up", "", bank_up);
- REGISTER_CALLBACK (serv, "/bank_up", "f", bank_up);
+ REGISTER_CALLBACK (serv, "/bank_up", "f", bank_delta);
REGISTER_CALLBACK (serv, "/bank_down", "", bank_down);
REGISTER_CALLBACK (serv, "/bank_down", "f", bank_down);
@@ -1909,6 +1909,23 @@ OSC::bank_up (lo_message msg)
}
int
+OSC::bank_delta (float delta, lo_message msg)
+{
+ if (!session) {
+ return -1;
+ }
+ OSCSurface *s = get_surface(get_address (msg));
+ uint32_t new_bank = s->bank + (s->bank_size * (int) delta);
+ if ((int)new_bank < 1) {
+ new_bank = 1;
+ }
+ if (new_bank != s->bank) {
+ set_bank (new_bank, msg);
+ }
+ return 0;
+}
+
+int
OSC::bank_down (lo_message msg)
{
if (!session) {