summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libs/ardour/ardour/route.h5
-rw-r--r--libs/ardour/ardour/stripable.h4
-rw-r--r--libs/ardour/ardour/types.h4
-rw-r--r--libs/ardour/ardour/vca.h4
-rw-r--r--libs/ardour/route.cc32
-rw-r--r--libs/surfaces/mackie/strip.cc69
6 files changed, 111 insertions, 7 deletions
diff --git a/libs/ardour/ardour/route.h b/libs/ardour/ardour/route.h
index e916bc403e..038e750d01 100644
--- a/libs/ardour/ardour/route.h
+++ b/libs/ardour/ardour/route.h
@@ -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.
*/
diff --git a/libs/ardour/ardour/stripable.h b/libs/ardour/ardour/stripable.h
index 7298a4807e..dea2d55c89 100644
--- a/libs/ardour/ardour/stripable.h
+++ b/libs/ardour/ardour/stripable.h
@@ -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.
*/
diff --git a/libs/ardour/ardour/types.h b/libs/ardour/ardour/types.h
index 17a86fc6c5..0076a72a1f 100644
--- a/libs/ardour/ardour/types.h
+++ b/libs/ardour/ardour/types.h
@@ -160,8 +160,10 @@ namespace ARDOUR {
EQFrequency,
EQQ,
EQShape,
- EQHPF,
EQEnable,
+ EQHPF,
+ EQLPF,
+ EQFilterEnable,
CompThreshold,
CompSpeed,
CompMode,
diff --git a/libs/ardour/ardour/vca.h b/libs/ardour/ardour/vca.h
index 5cf06e4d69..8ef0b9d241 100644
--- a/libs/ardour/ardour/vca.h
+++ b/libs/ardour/ardour/vca.h
@@ -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;
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index c6e3f157b3..dba71584e2 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -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
{
diff --git a/libs/surfaces/mackie/strip.cc b/libs/surfaces/mackie/strip.cc
index 9a570f8227..61cb64ce9b 100644
--- a/libs/surfaces/mackie/strip.cc
+++ b/libs/surfaces/mackie/strip.cc
@@ -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;
}