From 85c587d7025edbd33ae6e8bbcf06b6e5a2c66bdd Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 12 Apr 2017 11:14:22 +0200 Subject: fix mb32 well-known EQ (4 bands, different ports) --- libs/ardour/route.cc | 116 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 73 insertions(+), 43 deletions(-) (limited to 'libs/ardour/route.cc') diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc index 81c5284583..1b5c0579c1 100644 --- a/libs/ardour/route.cc +++ b/libs/ardour/route.cc @@ -4943,7 +4943,15 @@ uint32_t Route::eq_band_cnt () const { if (Profile->get_mixbus()) { +#ifdef MIXBUS32C + if (is_master() || mixbus()) { + return 3; + } else { + return 4; + } +#else return 3; +#endif } else { /* Ardour has no well-known EQ object */ return 0; @@ -4961,30 +4969,33 @@ Route::eq_gain_controllable (uint32_t band) const } uint32_t port_number; - switch (band) { - case 0: - if (is_master() || mixbus()) { - port_number = 4; - } else { - port_number = 8; + if (is_master() || mixbus()) { + switch (band) { + case 0: port_number = 4; break; + case 1: port_number = 3; break; + case 2: port_number = 2; break; + default: + return boost::shared_ptr(); } - break; - case 1: - if (is_master() || mixbus()) { - port_number = 3; - } else { - port_number = 6; + } else { +#ifdef MIXBUS32C + switch (band) { + case 0: port_number = 14; break; + case 1: port_number = 12; break; + case 2: port_number = 10; break; + case 3: port_number = 8; break; + default: + return boost::shared_ptr(); } - break; - case 2: - if (is_master() || mixbus()) { - port_number = 2; - } else { - port_number = 4; +#else + switch (band) { + case 0: port_number = 8; break; + case 1: port_number = 6; break; + case 2: port_number = 4; break; + default: + return boost::shared_ptr(); } - break; - default: - return boost::shared_ptr(); +#endif } return boost::dynamic_pointer_cast (eq->control (Evoral::Parameter (ARDOUR::PluginAutomation, 0, port_number))); @@ -4996,7 +5007,6 @@ boost::shared_ptr Route::eq_freq_controllable (uint32_t band) const { #ifdef MIXBUS - if (mixbus() || is_master()) { /* no frequency controls for mixbusses or master */ return boost::shared_ptr(); @@ -5009,19 +5019,24 @@ Route::eq_freq_controllable (uint32_t band) const } uint32_t port_number; +#ifdef MIXBUS32C switch (band) { - case 0: - port_number = 7; - break; - case 1: - port_number = 5; - break; - case 2: - port_number = 3; - break; - default: - return boost::shared_ptr(); + case 0: port_number = 13; break; + case 1: port_number = 11; break; + case 2: port_number = 9; break; + case 3: port_number = 7; break; + default: + return boost::shared_ptr(); } +#else + switch (band) { + case 0: port_number = 7; break; + case 1: port_number = 5; break; + case 2: port_number = 3; break; + default: + return boost::shared_ptr(); + } +#endif return boost::dynamic_pointer_cast (eq->control (Evoral::Parameter (ARDOUR::PluginAutomation, 0, port_number))); #else @@ -5063,11 +5078,15 @@ Route::eq_hpf_controllable () const #ifdef MIXBUS boost::shared_ptr eq = ch_eq(); - if (!eq) { + if (is_master() || mixbus() || !eq) { return boost::shared_ptr(); } - +#ifdef MIXBUS32C + return boost::dynamic_pointer_cast (eq->control (Evoral::Parameter (ARDOUR::PluginAutomation, 0, 3))); +#else return boost::dynamic_pointer_cast (eq->control (Evoral::Parameter (ARDOUR::PluginAutomation, 0, 2))); +#endif + #else return boost::shared_ptr(); #endif @@ -5076,20 +5095,30 @@ Route::eq_hpf_controllable () const string Route::eq_band_name (uint32_t band) const { +#ifdef MIXBUS32C + if (is_master() || mixbus()) { +#endif if (Profile->get_mixbus()) { switch (band) { - case 0: - return _("lo"); - case 1: - return _("mid"); - case 2: - return _("hi"); - default: - return string(); + case 0: return _("lo"); + case 1: return _("mid"); + case 2: return _("hi"); + default: return string(); } } else { return string (); } +#ifdef MIXBUS32C + } else { + switch (band) { + case 0: return _("lo"); + case 1: return _("lo mid"); + case 2: return _("hi mid"); + case 3: return _("hi"); + default: return string(); + } + } +#endif } boost::shared_ptr @@ -5178,6 +5207,7 @@ Route::comp_redux_controllable () const return boost::shared_ptr(); } + // XXX redux is an output-port, query via comp->plugin(0)->get_parameter (6) return boost::dynamic_pointer_cast (comp->control (Evoral::Parameter (ARDOUR::PluginAutomation, 0, 6))); #else return boost::shared_ptr(); -- cgit v1.2.3