From 23c2b751aa1f80d5129d13d4bda39ecc05ac2aac Mon Sep 17 00:00:00 2001 From: Ben Loftis Date: Sun, 15 Oct 2017 18:13:28 -0500 Subject: US2400: map knobs for mixbus strips, when selected. --- libs/ardour/ardour/route.h | 1 + libs/ardour/ardour/stripable.h | 2 + libs/ardour/route.cc | 13 ++++++ libs/surfaces/us2400/strip.cc | 92 ++++++++++++++++++++++++++---------------- 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 filter_slope_controllable (bool) const; boost::shared_ptr filter_enable_controllable (bool) const; + boost::shared_ptr 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 filter_slope_controllable (bool hp) const = 0; virtual boost::shared_ptr filter_enable_controllable (bool hp) const = 0; + virtual boost::shared_ptr tape_drive_controllable () const { return boost::shared_ptr(); } + /* "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 +Route::tape_drive_controllable () const +{ +#ifdef MIXBUS + + if ( _ch_pre && (is_master() || mixbus()) ) { + return boost::dynamic_pointer_cast (_ch_pre->control (Evoral::Parameter (ARDOUR::PluginAutomation, 0, 4))); + } + + return boost::shared_ptr(); +#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 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 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 r) case 23: pc = r->send_level_controllable ( global_pos - 16 ); break; - } //global_pos switch } //if input_strip -- cgit v1.2.3