int ssid = atoi (&path[13]);
ret = route_set_gain_fader (ssid, argv[0]->f, msg);
}
+ else if (!strncmp (path, "/strip/db_delta", 15)) {
+ // in db delta
+ int ssid;
+ int ar_off = 0;
+ float delta;
+ if (strlen (path) > 15 && argc == 1) {
+ ssid = atoi (&path[16]);
+ } else if (argc == 2) {
+ if (types[0] == 'f') {
+ ssid = (int) argv[0]->f;
+ } else {
+ ssid = argv[0]->i;
+ }
+ ar_off = 1;
+ } else {
+ return -1;
+ }
+ if (types[ar_off] == 'f') {
+ delta = argv[ar_off]->f;
+ } else {
+ delta = (float) argv[ar_off]->i;
+ }
+ ret = strip_db_delta (ssid, delta, msg);
+ }
else if (!strncmp (path, "/strip/trimdB/", 14) && strlen (path) > 14) {
int ssid = atoi (&path[14]);
ret = route_set_trim_dB (ssid, argv[0]->f, msg);
return 0;
}
+int
+OSC::strip_db_delta (int ssid, float delta, lo_message msg)
+{
+ if (!session) return -1;
+ boost::shared_ptr<Stripable> s = get_strip (ssid, get_address (msg));
+ if (s) {
+ float db = accurate_coefficient_to_dB (s->gain_control()->get_value()) + delta;
+ float abs;
+ if (db < -192) {
+ abs = 0;
+ } else {
+ abs = dB_to_coefficient (db);
+ }
+ s->gain_control()->set_value (abs, PBD::Controllable::NoGroup);
+ return 0;
+ }
+ return -1;
+}
+
int
OSC::sel_fader (float val, lo_message msg)
{
int route_set_gain_abs (int rid, float level, lo_message msg);
int route_set_gain_dB (int rid, float dB, lo_message msg);
int route_set_gain_fader (int rid, float pos, lo_message msg);
+ int strip_db_delta (int ssid, float delta, lo_message msg);
int route_set_trim_abs (int rid, float level, lo_message msg);
int route_set_trim_dB (int rid, float dB, lo_message msg);
int route_set_pan_stereo_position (int rid, float left_right_fraction, lo_message msg);