osc: publish session-provided trigger functions: bang/unbang
This commit is contained in:
parent
7fe7adb83c
commit
42a4216f22
@ -462,6 +462,10 @@ OSC::register_callbacks()
|
||||
REGISTER_CALLBACK (serv, X_("/trigger_cue_row"), "i", trigger_cue_row);
|
||||
REGISTER_CALLBACK (serv, X_("/trigger_stop_all"), "i", trigger_stop_all);
|
||||
|
||||
REGISTER_CALLBACK (serv, X_("/trigger_stop"), "ii", trigger_stop); //Route num (position on the Cue page), Stop now
|
||||
REGISTER_CALLBACK (serv, X_("/trigger_bang"), "ii", trigger_bang); //Route num (position on the Cue page), Trigger index
|
||||
REGISTER_CALLBACK (serv, X_("/trigger_unbang"), "ii", trigger_unbang); //Route num (position on the Cue page), Trigger index
|
||||
|
||||
REGISTER_CALLBACK (serv, X_("/save_state"), "", save_state);
|
||||
REGISTER_CALLBACK (serv, X_("/save_state"), "f", save_state);
|
||||
REGISTER_CALLBACK (serv, X_("/prev_marker"), "", prev_marker);
|
||||
@ -5436,6 +5440,62 @@ OSC::route_plugin_parameter (int ssid, int piid, int par, float val, lo_message
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
OSC::trigger_stop (int route_index, int now, lo_message msg)
|
||||
{
|
||||
if (!session) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* this function doesn't refer to surface banking but instead directly controls routes in the order they appear on the trigger_page
|
||||
*/
|
||||
|
||||
int index = 0;
|
||||
StripableList sl;
|
||||
session->get_stripables (sl);
|
||||
sl.sort (Stripable::Sorter ());
|
||||
for (StripableList::iterator s = sl.begin (); s != sl.end (); ++s) {
|
||||
boost::shared_ptr<Route> r = boost::dynamic_pointer_cast<Route> (*s);
|
||||
if (!r || !r->triggerbox ()) {
|
||||
continue;
|
||||
}
|
||||
/* we're only interested in Trigger Tracks */
|
||||
if (!(r->presentation_info ().trigger_track ())) {
|
||||
continue;
|
||||
}
|
||||
if (index == route_index) {
|
||||
r->stop_triggers(now!=0);
|
||||
break;
|
||||
}
|
||||
index++;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
OSC::trigger_bang (int route_index, int row_index, lo_message msg)
|
||||
{
|
||||
if (!session) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
bang_trigger_at(route_index, row_index);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
OSC::trigger_unbang (int route_index, int row_index, lo_message msg)
|
||||
{
|
||||
if (!session) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
unbang_trigger_at(route_index, row_index);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//prints to cerr only
|
||||
int
|
||||
OSC::route_plugin_parameter_print (int ssid, int piid, int par, lo_message msg)
|
||||
|
@ -632,6 +632,9 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
|
||||
PATH_CALLBACK1_MSG(route_plugin_list,i);
|
||||
PATH_CALLBACK2_MSG(route_plugin_descriptor,i,i);
|
||||
PATH_CALLBACK2_MSG(route_plugin_reset,i,i);
|
||||
PATH_CALLBACK2_MSG(trigger_bang,i,i);
|
||||
PATH_CALLBACK2_MSG(trigger_unbang,i,i);
|
||||
PATH_CALLBACK2_MSG(trigger_stop,i,i); /* second arg is 'stop now' */
|
||||
|
||||
int strip_parse (const char *path, const char* types, lo_arg **argv, int argc, lo_message msg);
|
||||
int master_parse (const char *path, const char* types, lo_arg **argv, int argc, lo_message msg);
|
||||
@ -655,6 +658,10 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
|
||||
int route_plugin_descriptor(int ssid, int piid, lo_message msg);
|
||||
int route_plugin_reset(int ssid, int piid, lo_message msg);
|
||||
|
||||
int trigger_bang(int rid, int stop_now, lo_message msg);
|
||||
int trigger_unbang(int rid, int stop_now, lo_message msg);
|
||||
int trigger_stop(int rid, int row_id, lo_message msg);
|
||||
|
||||
//banking functions
|
||||
int set_bank (uint32_t bank_start, lo_message msg);
|
||||
int _set_bank (uint32_t bank_start, lo_address addr);
|
||||
|
Loading…
Reference in New Issue
Block a user