summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Loftis <ben@harrisonconsoles.com>2017-10-15 18:13:28 -0500
committerBen Loftis <ben@harrisonconsoles.com>2017-10-19 11:53:55 -0500
commit23c2b751aa1f80d5129d13d4bda39ecc05ac2aac (patch)
treecff23f9bc43953349decfa709f622c1b51e134da
parent618020424e7be8e73d7003124dee6f5b3e61221a (diff)
US2400: map knobs for mixbus strips, when selected.
-rw-r--r--libs/ardour/ardour/route.h1
-rw-r--r--libs/ardour/ardour/stripable.h2
-rw-r--r--libs/ardour/route.cc13
-rw-r--r--libs/surfaces/us2400/strip.cc92
4 files changed, 73 insertions, 35 deletions
diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h
index 235ae2089b..520608b29e 100644
--- a/libs/ardour/ardour/route.h
+++ b/libs/ardour/ardour/route.h
@@ -527,6 +527,7 @@ public:
boost::shared_ptr<AutomationControl> filter_slope_controllable (bool) const;
boost::shared_ptr<AutomationControl> filter_enable_controllable (bool) const;
+ boost::shared_ptr<AutomationControl> tape_drive_controllable () const;
/* "well-known" controls for a compressor in this route. Any or all may
* be null.
diff --git a/libs/ardour/ardour/stripable.h b/libs/ardour/ardour/stripable.h
index 28c8fe1d93..5c36b39d31 100644
--- a/libs/ardour/ardour/stripable.h
+++ b/libs/ardour/ardour/stripable.h
@@ -147,6 +147,8 @@ class LIBARDOUR_API Stripable : public SessionObject,
virtual boost::shared_ptr<AutomationControl> filter_slope_controllable (bool hp) const = 0;
virtual boost::shared_ptr<AutomationControl> filter_enable_controllable (bool hp) const = 0;
+ virtual boost::shared_ptr<AutomationControl> tape_drive_controllable () const { return boost::shared_ptr<AutomationControl>(); }
+
/* "well-known" controls for a compressor in this route. Any or all may
* be null.
*/
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index cb27b54472..4636d7957c 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -5420,6 +5420,19 @@ Route::filter_enable_controllable (bool) const
#endif
}
+boost::shared_ptr<AutomationControl>
+Route::tape_drive_controllable () const
+{
+#ifdef MIXBUS
+
+ if ( _ch_pre && (is_master() || mixbus()) ) {
+ return boost::dynamic_pointer_cast<ARDOUR::AutomationControl> (_ch_pre->control (Evoral::Parameter (ARDOUR::PluginAutomation, 0, 4)));
+ }
+
+ return boost::shared_ptr<AutomationControl>();
+#endif
+}
+
string
Route::eq_band_name (uint32_t band) const
{
diff --git a/libs/surfaces/us2400/strip.cc b/libs/surfaces/us2400/strip.cc
index aa186c0b38..f8229d9369 100644
--- a/libs/surfaces/us2400/strip.cc
+++ b/libs/surfaces/us2400/strip.cc
@@ -776,8 +776,64 @@ Strip::setup_trackview_vpot (boost::shared_ptr<Stripable> r)
_vpot->set_mode(Pot::wrap);
#ifdef MIXBUS
+
+ //Trim & dynamics
+ switch (global_pos) {
+ case 0:
+ pc = r->trim_control ();
+ _vpot->set_mode(Pot::boost_cut);
+ break;
+
+ case 1:
+ pc = r->pan_azimuth_control ();
+ _vpot->set_mode(Pot::dot);
+ break;
+
+ case 2:
+ pc = r->comp_threshold_controllable();
+ break;
+
+ case 3:
+ pc = r->comp_speed_controllable();
+ break;
+
+ case 4:
+ pc = r->comp_mode_controllable();
+ _vpot->set_mode(Pot::wrap);
+ break;
+
+ case 5:
+ pc = r->comp_makeup_controllable();
+ break;
+
+
+ } //trim & dynamics
+
+
+ //EQ
int eq_band = -1;
- if (r->is_input_strip ()) {
+ if (r->mixbus ()) {
+
+ switch (global_pos) {
+
+ case 6:
+ pc = r->pan_width_control();
+ break;
+
+ case 7:
+ pc = r->tape_drive_controllable();
+ break;
+
+ case 8:
+ case 9:
+ case 10:
+ eq_band = (global_pos-8);
+ pc = r->eq_gain_controllable (eq_band);
+ _vpot->set_mode(Pot::boost_cut);
+ break;
+ }
+
+ } else if (r->is_input_strip ()) {
#ifdef MIXBUS32C
switch (global_pos) {
@@ -828,39 +884,6 @@ Strip::setup_trackview_vpot (boost::shared_ptr<Stripable> r)
#endif
- //trim & dynamics
-
- switch (global_pos) {
- case 0:
- pc = r->trim_control ();
- _vpot->set_mode(Pot::boost_cut);
- break;
-
- case 1:
- pc = r->pan_azimuth_control ();
- _vpot->set_mode(Pot::dot);
- break;
-
- case 2:
- pc = r->comp_threshold_controllable();
- break;
-
- case 3:
- pc = r->comp_speed_controllable();
- break;
-
- case 4:
- pc = r->comp_mode_controllable();
- _vpot->set_mode(Pot::wrap);
- break;
-
- case 5:
- pc = r->comp_makeup_controllable();
- break;
-
-
- } //trim & dynamics
-
//mixbus sends
switch (global_pos) {
case 16:
@@ -873,7 +896,6 @@ Strip::setup_trackview_vpot (boost::shared_ptr<Stripable> r)
case 23:
pc = r->send_level_controllable ( global_pos - 16 );
break;
-
} //global_pos switch
} //if input_strip