US2400: map knobs for mixbus strips, when selected.

This commit is contained in:
Ben Loftis 2017-10-15 18:13:28 -05:00
parent 618020424e
commit 23c2b751aa
4 changed files with 73 additions and 35 deletions

View File

@ -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.

View File

@ -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.
*/

View File

@ -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
{

View File

@ -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