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);
return 0;
}
+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)
{
PATH_CALLBACK1_MSG(scrub,f);
PATH_CALLBACK1_MSG(jog,f);
PATH_CALLBACK1_MSG(jog_mode,f);
+ PATH_CALLBACK1_MSG(bank_delta,f);
PATH_CALLBACK1_MSG(sel_recenable,i);
PATH_CALLBACK1_MSG(sel_recsafe,i);
PATH_CALLBACK1_MSG(sel_mute,i);
int set_bank (uint32_t bank_start, lo_message msg);
int _set_bank (uint32_t bank_start, lo_address addr);
int bank_up (lo_message msg);
+ int bank_delta (float delta, lo_message msg);
int bank_down (lo_message msg);
int set_surface (uint32_t b_size, uint32_t strips, uint32_t fb, uint32_t gmode, uint32_t se_size, uint32_t pi_size, lo_message msg);
int set_surface_bank_size (uint32_t bs, lo_message msg);