13
0

OSC added plugin activate/deactivate

This commit is contained in:
Michiel de Roo 2016-09-15 19:05:18 +02:00 committed by Paul Davis
parent 24eaec1fa8
commit bbb20272d5
2 changed files with 74 additions and 0 deletions

View File

@ -593,6 +593,8 @@ OSC::register_callbacks()
REGISTER_CALLBACK (serv, "/strip/plugin/parameter", "iiif", route_plugin_parameter);
// prints to cerr only
REGISTER_CALLBACK (serv, "/strip/plugin/parameter/print", "iii", route_plugin_parameter_print);
REGISTER_CALLBACK (serv, "/strip/plugin/activate", "ii", route_plugin_activate);
REGISTER_CALLBACK (serv, "/strip/plugin/deactivate", "ii", route_plugin_deactivate);
REGISTER_CALLBACK (serv, "/strip/send/gain", "iif", route_set_send_gain_dB);
REGISTER_CALLBACK (serv, "/strip/send/fader", "iif", route_set_send_fader);
REGISTER_CALLBACK (serv, "/strip/send/enable", "iif", route_set_send_enable);
@ -2722,6 +2724,74 @@ OSC::route_plugin_parameter_print (int ssid, int piid, int par, lo_message msg)
return 0;
}
int
OSC::route_plugin_activate (int ssid, int piid, lo_message msg)
{
if (!session)
return -1;
boost::shared_ptr<Stripable> s = get_strip (ssid, lo_message_get_source (msg));
boost::shared_ptr<Route> r = boost::dynamic_pointer_cast<Route> (s);
if (!r) {
PBD::error << "OSC: Invalid Remote Control ID '" << ssid << "'" << endmsg;
return -1;
}
boost::shared_ptr<Processor> redi=r->nth_plugin (piid);
if (!redi) {
PBD::error << "OSC: cannot find plugin # " << piid << " for RID '" << ssid << "'" << endmsg;
return -1;
}
boost::shared_ptr<PluginInsert> pi;
if (!(pi = boost::dynamic_pointer_cast<PluginInsert>(redi))) {
PBD::error << "OSC: given processor # " << piid << " on RID '" << ssid << "' is not a Plugin." << endmsg;
return -1;
}
boost::shared_ptr<ARDOUR::Plugin> pip = pi->plugin();
pi->activate();
return 0;
}
int
OSC::route_plugin_deactivate (int ssid, int piid, lo_message msg)
{
if (!session)
return -1;
boost::shared_ptr<Stripable> s = get_strip (ssid, lo_message_get_source (msg));
boost::shared_ptr<Route> r = boost::dynamic_pointer_cast<Route> (s);
if (!r) {
PBD::error << "OSC: Invalid Remote Control ID '" << ssid << "'" << endmsg;
return -1;
}
boost::shared_ptr<Processor> redi=r->nth_plugin (piid);
if (!redi) {
PBD::error << "OSC: cannot find plugin # " << piid << " for RID '" << ssid << "'" << endmsg;
return -1;
}
boost::shared_ptr<PluginInsert> pi;
if (!(pi = boost::dynamic_pointer_cast<PluginInsert>(redi))) {
PBD::error << "OSC: given processor # " << piid << " on RID '" << ssid << "' is not a Plugin." << endmsg;
return -1;
}
boost::shared_ptr<ARDOUR::Plugin> pip = pi->plugin();
pi->deactivate();
return 0;
}
// select
int

View File

@ -454,6 +454,8 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
PATH_CALLBACK3(route_set_send_enable,i,i,f);
PATH_CALLBACK4(route_plugin_parameter,i,i,i,f);
PATH_CALLBACK3(route_plugin_parameter_print,i,i,i);
PATH_CALLBACK2_MSG(route_plugin_activate,i,i);
PATH_CALLBACK2_MSG(route_plugin_deactivate,i,i);
int route_mute (int rid, int yn, lo_message msg);
int route_solo (int rid, int yn, lo_message msg);
@ -479,6 +481,8 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
int route_set_send_enable (int rid, int sid, float val, lo_message msg);
int route_plugin_parameter (int rid, int piid,int par, float val, lo_message msg);
int route_plugin_parameter_print (int rid, int piid,int par, lo_message msg);
int route_plugin_activate (int rid, int piid, lo_message msg);
int route_plugin_deactivate (int rid, int piid, lo_message msg);
//banking functions
int set_bank (uint32_t bank_start, lo_message msg);