From 5e5f7a55ee29665d0bb8fbf97a07bf835a76bfcb Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 23 Jun 2017 15:55:42 +0200 Subject: MCU: Remove use of AutomationType as ID, part one. --- libs/surfaces/mackie/strip.cc | 205 ++++++++---------------------------------- libs/surfaces/mackie/strip.h | 6 +- 2 files changed, 41 insertions(+), 170 deletions(-) (limited to 'libs/surfaces') diff --git a/libs/surfaces/mackie/strip.cc b/libs/surfaces/mackie/strip.cc index 3f1ab24da6..f4f3ebfff8 100644 --- a/libs/surfaces/mackie/strip.cc +++ b/libs/surfaces/mackie/strip.cc @@ -412,7 +412,7 @@ Strip::show_stripable_name () } void -Strip::notify_send_level_change (AutomationType type, uint32_t send_num, bool force_update) +Strip::notify_send_level_change (uint32_t send_num, bool force_update) { boost::shared_ptr r = _surface->mcp().subview_stripable(); @@ -433,7 +433,7 @@ Strip::notify_send_level_change (AutomationType type, uint32_t send_num, bool fo if (control) { float val = control->get_value(); - do_parameter_display (type, val); + do_parameter_display (control->desc().type, val); if (_vpot->control() == control) { /* update pot/encoder */ @@ -497,7 +497,7 @@ Strip::notify_trackview_change (AutomationType type, uint32_t send_num, bool for } void -Strip::notify_eq_change (AutomationType type, uint32_t band, bool force_update) +Strip::notify_eq_change (boost::weak_ptr pc, bool force_update) { boost::shared_ptr r = _surface->mcp().subview_stripable(); @@ -511,43 +511,17 @@ Strip::notify_eq_change (AutomationType type, uint32_t band, bool force_update) return; } - boost::shared_ptr control; - - switch (type) { - case EQGain: - control = r->eq_gain_controllable (band); - break; - case EQFrequency: - control = r->eq_freq_controllable (band); - break; - case EQQ: - control = r->eq_q_controllable (band); - break; - case EQShape: - control = r->eq_shape_controllable (band); - break; - case EQEnable: - control = r->eq_enable_controllable (); - break; -#ifndef MIXBUS32C - case EQHPF: - control = r->filter_freq_controllable (true); - break; -#endif - default: - break; - } - + boost::shared_ptr control = pc.lock (); if (control) { float val = control->get_value(); - do_parameter_display (type, val); + do_parameter_display (control->desc().type, val); /* update pot/encoder */ _surface->write (_vpot->set (control->internal_to_interface (val), true, Pot::wrap)); } } void -Strip::notify_dyn_change (AutomationType type, bool force_update, bool propagate_mode) +Strip::notify_dyn_change (boost::weak_ptr pc, bool force_update, bool propagate_mode) { boost::shared_ptr r = _surface->mcp().subview_stripable(); @@ -561,48 +535,16 @@ Strip::notify_dyn_change (AutomationType type, bool force_update, bool propagate return; } - boost::shared_ptr control; + boost::shared_ptr control= pc.lock (); bool reset_all = false; - switch (type) { - case CompThreshold: - control = r->comp_threshold_controllable (); - break; - case CompSpeed: - control = r->comp_speed_controllable (); - break; - case CompMode: - control = r->comp_mode_controllable (); - reset_all = true; - break; - case CompMakeup: - control = r->comp_makeup_controllable (); - break; - case CompEnable: - control = r->comp_enable_controllable (); - break; -#ifdef MIXBUS32C - case EQHPF: - control = r->filter_freq_controllable (true); - break; - case EQLPF: - control = r->filter_freq_controllable (false); - break; - case EQFilterEnable: - control = r->filter_enable_controllable (true); // both HP/LP - break; -#endif - default: - break; - } - if (propagate_mode && reset_all) { _surface->subview_mode_changed (); } if (control) { float val = control->get_value(); - do_parameter_display (type, val); + do_parameter_display (control->desc().type, val); /* update pot/encoder */ _surface->write (_vpot->set (control->internal_to_interface (val), true, Pot::wrap)); } @@ -1559,19 +1501,19 @@ Strip::setup_dyn_vpot (boost::shared_ptr r) * order shown above. */ - vector > available; + vector, std::string > > available; vector params; - if (tc) { available.push_back (tc); params.push_back (CompThreshold); } - if (sc) { available.push_back (sc); params.push_back (CompSpeed); } - if (mc) { available.push_back (mc); params.push_back (CompMode); } - if (kc) { available.push_back (kc); params.push_back (CompMakeup); } - if (ec) { available.push_back (ec); params.push_back (CompEnable); } + if (tc) { available.push_back (std::make_pair (tc, "Thresh")); } + if (sc) { available.push_back (std::make_pair (sc, mc ? r->comp_speed_name (mc->get_value()) : "Speed")); } + if (mc) { available.push_back (std::make_pair (mc, "Mode")); } + if (kc) { available.push_back (std::make_pair (kc, "Makeup")); } + if (ec) { available.push_back (std::make_pair (ec, "on/off")); } #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); } + if (hpfc) { available.push_back (std::make_pair (hpfc, "HPF")); } + if (lpfc) { available.push_back (std::make_pair (lpfc, "LPF")); } + if (fec) { available.push_back (std::make_pair (fec, "FiltIn")); } #endif if (pos >= available.size()) { @@ -1583,65 +1525,20 @@ Strip::setup_dyn_vpot (boost::shared_ptr r) } boost::shared_ptr pc; - AutomationType param; - pc = available[pos]; - param = params[pos]; + pc = available[pos].first; + string pot_id = available[pos].second; - pc->Changed.connect (subview_connections, MISSING_INVALIDATOR, boost::bind (&Strip::notify_dyn_change, this, param, false, true), ui_context()); + pc->Changed.connect (subview_connections, MISSING_INVALIDATOR, boost::bind (&Strip::notify_dyn_change, this, boost::weak_ptr(pc), false, true), ui_context()); _vpot->set_control (pc); - string pot_id; - - switch (param) { - case CompThreshold: - pot_id = "Thresh"; - break; - case CompSpeed: - if (mc) { - pot_id = r->comp_speed_name (mc->get_value()); - } else { - pot_id = "Speed"; - } - break; - case CompMode: - pot_id = "Mode"; - break; - case CompMakeup: - pot_id = "Makeup"; - break; - 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; - } - if (!pot_id.empty()) { pending_display[0] = pot_id; } else { pending_display[0] = string(); } - notify_dyn_change (param, true, false); + notify_dyn_change (boost::weak_ptr(pc), true, false); } void @@ -1650,12 +1547,11 @@ Strip::setup_eq_vpot (boost::shared_ptr r) boost::shared_ptr pc; const uint32_t global_pos = _surface->mcp().global_index (*this); - AutomationType param = NullAutomation; - int eq_band = -1; - string band_name; + string pot_id; #ifdef MIXBUS - if ( r->is_input_strip() ) { + int eq_band = -1; + if (r->is_input_strip ()) { #ifdef MIXBUS32C switch (global_pos) { @@ -1666,7 +1562,7 @@ Strip::setup_eq_vpot (boost::shared_ptr r) eq_band = global_pos / 2; pc = r->eq_freq_controllable (eq_band); band_name = r->eq_band_name (eq_band); - param = EQFrequency; + pot_id = band_name + "Freq"; break; case 1: case 3: @@ -1675,21 +1571,21 @@ Strip::setup_eq_vpot (boost::shared_ptr r) eq_band = global_pos / 2; pc = r->eq_gain_controllable (eq_band); band_name = r->eq_band_name (eq_band); - param = EQGain; + pot_id = band_name + "Gain"; break; case 8: pc = r->eq_shape_controllable(0); //low band "bell" button band_name = "lo"; - param = EQShape; + pot_id = band_name + " Shp"; break; case 9: pc = r->eq_shape_controllable(3); //high band "bell" button band_name = "hi"; - param = EQShape; + pot_id = band_name + " Shp"; break; case 10: pc = r->eq_enable_controllable(); - param = EQEnable; + pot_id = "EQ"; break; } @@ -1702,7 +1598,7 @@ Strip::setup_eq_vpot (boost::shared_ptr r) eq_band = global_pos / 2; pc = r->eq_gain_controllable (eq_band); band_name = r->eq_band_name (eq_band); - param = EQGain; + pot_id = band_name + "Gain"; break; case 1: case 3: @@ -1710,15 +1606,15 @@ Strip::setup_eq_vpot (boost::shared_ptr r) eq_band = global_pos / 2; pc = r->eq_freq_controllable (eq_band); band_name = r->eq_band_name (eq_band); - param = EQFrequency; + pot_id = band_name + "Freq"; break; case 6: pc = r->eq_enable_controllable(); - param = EQEnable; + pot_id = "EQ"; break; case 7: pc = r->filter_freq_controllable(true); - param = EQHPF; + pot_id = "HP Freq"; break; } @@ -1732,7 +1628,7 @@ Strip::setup_eq_vpot (boost::shared_ptr r) eq_band = global_pos; pc = r->eq_gain_controllable (eq_band); band_name = r->eq_band_name (eq_band); - param = EQGain; + pot_id = band_name + "Gain"; break; } } @@ -1740,34 +1636,9 @@ Strip::setup_eq_vpot (boost::shared_ptr r) //If a controllable was found, connect it up, and put the labels in the display. if (pc) { - pc->Changed.connect (subview_connections, MISSING_INVALIDATOR, boost::bind (&Strip::notify_eq_change, this, param, eq_band, false), ui_context()); + pc->Changed.connect (subview_connections, MISSING_INVALIDATOR, boost::bind (&Strip::notify_eq_change, this, boost::weak_ptr(pc), false), ui_context()); _vpot->set_control (pc); - string pot_id; - - switch (param) { - case EQGain: - pot_id = band_name + "Gain"; - break; - case EQFrequency: - pot_id = band_name + "Freq"; - break; - case EQQ: - pot_id = band_name + " Q"; - break; - case EQShape: - pot_id = band_name + " Shp"; - break; - case EQEnable: - pot_id = "EQ"; - break; - case EQHPF: - pot_id = "HP Freq"; - break; - default: - break; - } - if (!pot_id.empty()) { pending_display[0] = pot_id; } else { @@ -1780,7 +1651,7 @@ Strip::setup_eq_vpot (boost::shared_ptr r) pending_display[1] = string(); } - notify_eq_change (param, eq_band, true); + notify_eq_change (boost::weak_ptr(pc), true); } void @@ -1802,12 +1673,12 @@ Strip::setup_sends_vpot (boost::shared_ptr r) return; } - pc->Changed.connect (subview_connections, MISSING_INVALIDATOR, boost::bind (&Strip::notify_send_level_change, this, BusSendLevel, global_pos, false), ui_context()); + pc->Changed.connect (subview_connections, MISSING_INVALIDATOR, boost::bind (&Strip::notify_send_level_change, this, global_pos, false), ui_context()); _vpot->set_control (pc); pending_display[0] = PBD::short_version (r->send_name (global_pos), 6); - notify_send_level_change (BusSendLevel, global_pos, true); + notify_send_level_change (global_pos, true); } void diff --git a/libs/surfaces/mackie/strip.h b/libs/surfaces/mackie/strip.h index a1816f3844..c42f9c9bf5 100644 --- a/libs/surfaces/mackie/strip.h +++ b/libs/surfaces/mackie/strip.h @@ -160,13 +160,13 @@ private: bool is_midi_track () const; - void notify_eq_change (ARDOUR::AutomationType, uint32_t band, bool force); + void notify_eq_change (boost::weak_ptr, bool force); void setup_eq_vpot (boost::shared_ptr); - void notify_dyn_change (ARDOUR::AutomationType, bool force, bool propagate_mode_change); + void notify_dyn_change (boost::weak_ptr, bool force, bool propagate_mode_change); void setup_dyn_vpot (boost::shared_ptr); - void notify_send_level_change (ARDOUR::AutomationType, uint32_t band, bool force); + void notify_send_level_change (uint32_t band, bool force); void setup_sends_vpot (boost::shared_ptr); void notify_trackview_change (ARDOUR::AutomationType, uint32_t band, bool force); -- cgit v1.2.3