summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/surfaces/osc/osc.cc43
-rw-r--r--libs/surfaces/osc/osc.h1
2 files changed, 44 insertions, 0 deletions
diff --git a/libs/surfaces/osc/osc.cc b/libs/surfaces/osc/osc.cc
index 9ac31b3162..90989c5d18 100644
--- a/libs/surfaces/osc/osc.cc
+++ b/libs/surfaces/osc/osc.cc
@@ -966,6 +966,30 @@ OSC::catchall (const char *path, const char* types, lo_arg **argv, int argc, lo_
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);
@@ -3303,6 +3327,25 @@ OSC::route_set_gain_fader (int ssid, float pos, lo_message msg)
}
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)
{
OSCSurface *sur = get_surface(get_address (msg));
diff --git a/libs/surfaces/osc/osc.h b/libs/surfaces/osc/osc.h
index d92d0777d1..02002cb828 100644
--- a/libs/surfaces/osc/osc.h
+++ b/libs/surfaces/osc/osc.h
@@ -567,6 +567,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI<OSCUIRequest>
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);