MCP: Mixbus32C: Restore missing filter controls to the Dyn page.

This commit is contained in:
Ben Loftis 2017-05-10 11:31:03 -05:00 committed by Robin Gareus
parent 8ba868e933
commit efc2660fec
6 changed files with 111 additions and 7 deletions

View File

@ -511,6 +511,11 @@ public:
boost::shared_ptr<AutomationControl> eq_enable_controllable () const;
boost::shared_ptr<AutomationControl> eq_hpf_controllable () const;
//additional filter params (currently 32C only )
boost::shared_ptr<AutomationControl> eq_lpf_controllable () const;
boost::shared_ptr<AutomationControl> filter_enable_controllable () const;
/* "well-known" controls for a compressor in this route. Any or all may
* be null.
*/

View File

@ -142,6 +142,10 @@ class LIBARDOUR_API Stripable : public SessionObject,
virtual boost::shared_ptr<AutomationControl> eq_enable_controllable () const = 0;
virtual boost::shared_ptr<AutomationControl> eq_hpf_controllable () const = 0;
//additional filter params (currently 32C only )
virtual boost::shared_ptr<AutomationControl> eq_lpf_controllable () const = 0;
virtual boost::shared_ptr<AutomationControl> filter_enable_controllable () const = 0;
/* "well-known" controls for a compressor in this route. Any or all may
* be null.
*/

View File

@ -160,8 +160,10 @@ namespace ARDOUR {
EQFrequency,
EQQ,
EQShape,
EQHPF,
EQEnable,
EQHPF,
EQLPF,
EQFilterEnable,
CompThreshold,
CompSpeed,
CompMode,

View File

@ -140,6 +140,10 @@ class LIBARDOUR_API VCA : public Stripable,
boost::shared_ptr<MonitorProcessor> monitor_control() const { return boost::shared_ptr<MonitorProcessor>(); }
boost::shared_ptr<MonitorControl> monitoring_control() const { return boost::shared_ptr<MonitorControl>(); }
//additional filter params (currently 32C only )
boost::shared_ptr<AutomationControl> eq_lpf_controllable () const { return boost::shared_ptr<AutomationControl>(); }
boost::shared_ptr<AutomationControl> filter_enable_controllable () const { return boost::shared_ptr<AutomationControl>(); }
private:
int32_t _number;

View File

@ -5113,6 +5113,38 @@ Route::eq_hpf_controllable () const
#endif
}
boost::shared_ptr<AutomationControl>
Route::eq_lpf_controllable () const
{
#ifdef MIXBUS32C
boost::shared_ptr<PluginInsert> eq = ch_eq();
if (!eq) {
return boost::shared_ptr<AutomationControl>();
}
return boost::dynamic_pointer_cast<ARDOUR::AutomationControl> (eq->control (Evoral::Parameter (ARDOUR::PluginAutomation, 0, 6)));
#else
return boost::shared_ptr<AutomationControl>();
#endif
}
boost::shared_ptr<AutomationControl>
Route::filter_enable_controllable () const
{
#ifdef MIXBUS32C
boost::shared_ptr<PluginInsert> eq = ch_eq();
if (!eq) {
return boost::shared_ptr<AutomationControl>();
}
return boost::dynamic_pointer_cast<ARDOUR::AutomationControl> (eq->control (Evoral::Parameter (ARDOUR::PluginAutomation, 0, 2)));
#else
return boost::shared_ptr<AutomationControl>();
#endif
}
string
Route::eq_band_name (uint32_t band) const
{

View File

@ -525,12 +525,14 @@ Strip::notify_eq_change (AutomationType type, uint32_t band, bool force_update)
case EQShape:
control = r->eq_shape_controllable (band);
break;
case EQHPF:
control = r->eq_hpf_controllable ();
break;
case EQEnable:
control = r->eq_enable_controllable ();
break;
#ifndef MIXBUS32C
case EQHPF:
control = r->eq_hpf_controllable ();
break;
#endif
default:
break;
}
@ -578,6 +580,17 @@ Strip::notify_dyn_change (AutomationType type, bool force_update, bool propagate
case CompEnable:
control = r->comp_enable_controllable ();
break;
#ifdef MIXBUS32C
case EQHPF:
control = r->eq_hpf_controllable ();
break;
case EQLPF:
control = r->eq_lpf_controllable ();
break;
case EQFilterEnable:
control = r->filter_enable_controllable ();
break;
#endif
default:
break;
}
@ -993,6 +1006,7 @@ Strip::do_parameter_display (AutomationType type, float val)
case EQQ:
case EQShape:
case EQHPF:
case EQLPF:
case CompThreshold:
case CompSpeed:
case CompMakeup:
@ -1001,6 +1015,7 @@ Strip::do_parameter_display (AutomationType type, float val)
pending_display[1] = buf;
screen_hold = true;
break;
case EQFilterEnable:
case EQEnable:
case CompEnable:
if (val >= 0.5) {
@ -1531,6 +1546,12 @@ Strip::setup_dyn_vpot (boost::shared_ptr<Stripable> r)
boost::shared_ptr<AutomationControl> kc = r->comp_makeup_controllable ();
boost::shared_ptr<AutomationControl> ec = r->comp_enable_controllable ();
#ifdef MIXBUS32C //Mixbus32C needs to spill the filter controls into the comp section
boost::shared_ptr<AutomationControl> hpfc = r->eq_hpf_controllable ();
boost::shared_ptr<AutomationControl> lpfc = r->eq_lpf_controllable ();
boost::shared_ptr<AutomationControl> fec = r->filter_enable_controllable ();
#endif
uint32_t pos = _surface->mcp().global_index (*this);
/* we will control the pos-th available parameter, from the list in the
@ -1546,6 +1567,12 @@ Strip::setup_dyn_vpot (boost::shared_ptr<Stripable> r)
if (kc) { available.push_back (kc); params.push_back (CompMakeup); }
if (ec) { available.push_back (ec); params.push_back (CompEnable); }
#ifdef MIXBUS32C //Mixbus32C needs to spill the filter controls into the comp section
if (hpfc) { available.push_back (hpfc); params.push_back (EQHPF); }
if (lpfc) { available.push_back (lpfc); params.push_back (EQLPF); }
if (fec) { available.push_back (fec); params.push_back (EQFilterEnable); }
#endif
if (pos >= available.size()) {
/* this knob is not needed to control the available parameters */
_vpot->set_control (boost::shared_ptr<AutomationControl>());
@ -1585,9 +1612,24 @@ Strip::setup_dyn_vpot (boost::shared_ptr<Stripable> r)
case CompRedux:
pot_id = "Redux";
break;
#ifdef MIXBUS32C
case CompEnable:
pot_id = "CompIn";
break;
case EQHPF:
pot_id = "HPF";
break;
case EQLPF:
pot_id = "LPF";
break;
case EQFilterEnable:
pot_id = "FiltIn";
break;
#else
case CompEnable:
pot_id = "on/off";
break;
#endif
default:
break;
}
@ -1651,6 +1693,16 @@ Strip::setup_eq_vpot (boost::shared_ptr<Stripable> r)
band_name = r->eq_band_name (eq_band);
switch (parameter) {
#ifdef MIXBUS32C //in 32C, we swap the order of freq/gain to match the GUI
case 0:
pc = r->eq_freq_controllable (eq_band);
param = EQFrequency;
break;
case 1:
pc = r->eq_gain_controllable (eq_band);
param = EQGain;
break;
#else
case 0:
pc = r->eq_gain_controllable (eq_band);
param = EQGain;
@ -1659,6 +1711,7 @@ Strip::setup_eq_vpot (boost::shared_ptr<Stripable> r)
pc = r->eq_freq_controllable (eq_band);
param = EQFrequency;
break;
#endif
case 2:
pc = r->eq_q_controllable (eq_band);
param = EQQ;
@ -1677,6 +1730,7 @@ Strip::setup_eq_vpot (boost::shared_ptr<Stripable> r)
uint32_t parameter = global_pos - total_band_parameters;
switch (parameter) {
#ifndef MIXBUS32C
case 0: /* first control after band parameters */
pc = r->eq_hpf_controllable();
param = EQHPF;
@ -1685,6 +1739,7 @@ Strip::setup_eq_vpot (boost::shared_ptr<Stripable> r)
pc = r->eq_enable_controllable();
param = EQEnable;
break;
#endif
default:
/* nothing to control */
_vpot->set_control (boost::shared_ptr<AutomationControl>());
@ -1716,12 +1771,14 @@ Strip::setup_eq_vpot (boost::shared_ptr<Stripable> r)
case EQShape:
pot_id = band_name + " Shp";
break;
case EQHPF:
pot_id = "HPFreq";
break;
case EQEnable:
pot_id = "on/off";
break;
#ifndef MIXBUS32C
case EQHPF:
pot_id = "HPFreq";
break;
#endif
default:
break;
}