FP8: update for Mixbus v9
* add expander/gate * show/hide mixer-strip controls * add plugin-presets for channelstrip (if any)
This commit is contained in:
parent
9ef6ee21de
commit
886d7b9069
|
@ -1295,37 +1295,64 @@ FaderPort8::assign_plugin_presets (std::shared_ptr<PluginInsert> pi)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
FaderPort8::build_well_known_processor_ctrls (std::shared_ptr<Stripable> s, bool eq)
|
FaderPort8::build_well_known_processor_ctrls (std::shared_ptr<Stripable> s, int which)
|
||||||
{
|
{
|
||||||
#define PUSH_BACK_NON_NULL(N, C) do {if (C) { _proc_params.push_back (ProcessorCtrl (N, C)); }} while (0)
|
#define PUSH_BACK_NON_NULL(N, C) do {if (C) { _proc_params.push_back (ProcessorCtrl (N, C)); }} while (0)
|
||||||
|
|
||||||
_proc_params.clear ();
|
_proc_params.clear ();
|
||||||
if (eq) {
|
switch (which) {
|
||||||
int cnt = s->eq_band_cnt();
|
case 1:
|
||||||
|
{ /* EQ */
|
||||||
|
int cnt = s->eq_band_cnt();
|
||||||
|
|
||||||
#ifdef MIXBUS32C
|
#ifdef MIXBUS32C
|
||||||
PUSH_BACK_NON_NULL ("Flt In", s->filter_enable_controllable (true)); // both HP/LP
|
PUSH_BACK_NON_NULL ("Flt In", s->filter_enable_controllable (true)); // both HP/LP
|
||||||
PUSH_BACK_NON_NULL ("HP Freq", s->filter_freq_controllable (true));
|
PUSH_BACK_NON_NULL ("HP Freq", s->filter_freq_controllable (true));
|
||||||
PUSH_BACK_NON_NULL ("LP Freq", s->filter_freq_controllable (false));
|
PUSH_BACK_NON_NULL ("LP Freq", s->filter_freq_controllable (false));
|
||||||
PUSH_BACK_NON_NULL ("EQ In", s->eq_enable_controllable ());
|
PUSH_BACK_NON_NULL ("EQ In", s->eq_enable_controllable ());
|
||||||
#elif defined (MIXBUS)
|
#elif defined (MIXBUS)
|
||||||
PUSH_BACK_NON_NULL ("EQ In", s->eq_enable_controllable ());
|
PUSH_BACK_NON_NULL ("EQ In", s->eq_enable_controllable ());
|
||||||
PUSH_BACK_NON_NULL ("HP Freq", s->filter_freq_controllable (true));
|
PUSH_BACK_NON_NULL ("HP Freq", s->filter_freq_controllable (true));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (int band = 0; band < cnt; ++band) {
|
for (int band = 0; band < cnt; ++band) {
|
||||||
std::string bn = s->eq_band_name (band);
|
std::string bn = s->eq_band_name (band);
|
||||||
PUSH_BACK_NON_NULL (string_compose ("Gain %1", bn), s->eq_gain_controllable (band));
|
PUSH_BACK_NON_NULL (string_compose ("Gain %1", bn), s->eq_gain_controllable (band));
|
||||||
PUSH_BACK_NON_NULL (string_compose ("Freq %1", bn), s->eq_freq_controllable (band));
|
PUSH_BACK_NON_NULL (string_compose ("Freq %1", bn), s->eq_freq_controllable (band));
|
||||||
PUSH_BACK_NON_NULL (string_compose ("Band %1", bn), s->eq_q_controllable (band));
|
PUSH_BACK_NON_NULL (string_compose ("Band %1", bn), s->eq_q_controllable (band));
|
||||||
PUSH_BACK_NON_NULL (string_compose ("Shape %1", bn), s->eq_shape_controllable (band));
|
PUSH_BACK_NON_NULL (string_compose ("Shape %1", bn), s->eq_shape_controllable (band));
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
PUSH_BACK_NON_NULL ("Comp In", s->comp_enable_controllable ());
|
break;
|
||||||
PUSH_BACK_NON_NULL ("Threshold", s->comp_threshold_controllable ());
|
case 2:
|
||||||
PUSH_BACK_NON_NULL ("Makeup", s->comp_makeup_controllable ());
|
PUSH_BACK_NON_NULL ("Comp In", s->comp_enable_controllable ());
|
||||||
PUSH_BACK_NON_NULL ("Speed", s->comp_speed_controllable ());
|
PUSH_BACK_NON_NULL ("Threshold", s->comp_threshold_controllable ());
|
||||||
PUSH_BACK_NON_NULL ("Mode", s->comp_mode_controllable ());
|
PUSH_BACK_NON_NULL ("Makeup", s->comp_makeup_controllable ());
|
||||||
|
PUSH_BACK_NON_NULL ("Speed", s->comp_speed_controllable ());
|
||||||
|
PUSH_BACK_NON_NULL ("Mode", s->comp_mode_controllable ());
|
||||||
|
PUSH_BACK_NON_NULL ("Makeup", s->comp_makeup_controllable ());
|
||||||
|
PUSH_BACK_NON_NULL ("Ratio", s->comp_ratio_controllable ());
|
||||||
|
PUSH_BACK_NON_NULL ("Attack", s->comp_attack_controllable ());
|
||||||
|
PUSH_BACK_NON_NULL ("Release", s->comp_release_controllable ());
|
||||||
|
PUSH_BACK_NON_NULL ("Emphasis", s->comp_key_filter_freq_controllable ());
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
PUSH_BACK_NON_NULL ("Gate In", s->gate_enable_controllable ());
|
||||||
|
PUSH_BACK_NON_NULL ("Exp", s->gate_mode_controllable ());
|
||||||
|
PUSH_BACK_NON_NULL ("Threshold", s->gate_threshold_controllable ());
|
||||||
|
PUSH_BACK_NON_NULL ("Depth", s->gate_depth_controllable ());
|
||||||
|
PUSH_BACK_NON_NULL ("Attack", s->gate_attack_controllable ());
|
||||||
|
PUSH_BACK_NON_NULL ("Release", s->gate_release_controllable ());
|
||||||
|
PUSH_BACK_NON_NULL ("Exp Ratio", s->gate_ratio_controllable ());
|
||||||
|
PUSH_BACK_NON_NULL ("Exp Knee", s->gate_knee_controllable ());
|
||||||
|
PUSH_BACK_NON_NULL ("Gate Hyst", s->gate_hysteresis_controllable ());
|
||||||
|
PUSH_BACK_NON_NULL ("Gate Hold", s->gate_hold_controllable ());
|
||||||
|
PUSH_BACK_NON_NULL ("SC Enable", s->gate_key_filter_enable_controllable ());
|
||||||
|
PUSH_BACK_NON_NULL ("SC Freq", s->gate_key_filter_freq_controllable ());
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
assert (0);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1358,11 +1385,58 @@ FaderPort8::select_plugin (int num)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (num < 0) {
|
if (num < 0) {
|
||||||
build_well_known_processor_ctrls (r, num == -1);
|
processor_connections.drop_connections ();
|
||||||
|
r->DropReferences.connect (processor_connections, MISSING_INVALIDATOR, boost::bind (&FP8Controls::set_fader_mode, &_ctrls, ModeTrack), this);
|
||||||
|
|
||||||
|
build_well_known_processor_ctrls (r, -num);
|
||||||
assign_processor_ctrls ();
|
assign_processor_ctrls ();
|
||||||
_showing_well_known = num;
|
_showing_well_known = num;
|
||||||
|
|
||||||
|
#ifdef MIXBUS
|
||||||
|
/* find proc */
|
||||||
|
std::shared_ptr<Processor> proc;
|
||||||
|
std::shared_ptr<PluginInsert> pi;
|
||||||
|
for (uint32_t i = 0; 0 != (proc = r->nth_plugin (i)); ++i) {
|
||||||
|
switch (std::dynamic_pointer_cast<PluginInsert> (proc)->channelstrip ()) {
|
||||||
|
case Processor::MBComp:
|
||||||
|
if (num == -2) {
|
||||||
|
pi = std::dynamic_pointer_cast<PluginInsert> (proc);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Processor::MBGate:
|
||||||
|
if (num == -3) {
|
||||||
|
pi = std::dynamic_pointer_cast<PluginInsert> (proc);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Processor::MBEq:
|
||||||
|
if (num == -1) {
|
||||||
|
pi = std::dynamic_pointer_cast<PluginInsert> (proc);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!pi) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_plugin_insert = std::weak_ptr<ARDOUR::PluginInsert> (pi);
|
||||||
|
std::shared_ptr<ARDOUR::Plugin> plugin = pi->plugin ();
|
||||||
|
|
||||||
|
plugin->PresetAdded.connect (processor_connections, MISSING_INVALIDATOR, boost::bind (&FaderPort8::preset_changed, this), this);
|
||||||
|
plugin->PresetRemoved.connect (processor_connections, MISSING_INVALIDATOR, boost::bind (&FaderPort8::preset_changed, this), this);
|
||||||
|
plugin->PresetLoaded.connect (processor_connections, MISSING_INVALIDATOR, boost::bind (&FaderPort8::preset_changed, this), this);
|
||||||
|
plugin->PresetDirty.connect (processor_connections, MISSING_INVALIDATOR, boost::bind (&FaderPort8::preset_changed, this), this);
|
||||||
|
|
||||||
|
if (_auto_pluginui) {
|
||||||
|
pi->ShowUI (); /* EMIT SIGNAL */
|
||||||
|
}
|
||||||
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_showing_well_known = 0;
|
_showing_well_known = 0;
|
||||||
|
|
||||||
std::shared_ptr<Processor> proc = r->nth_plugin (num);
|
std::shared_ptr<Processor> proc = r->nth_plugin (num);
|
||||||
|
@ -1496,6 +1570,7 @@ FaderPort8::spill_plugins ()
|
||||||
int spillwidth = N_STRIPS;
|
int spillwidth = N_STRIPS;
|
||||||
bool have_well_known_eq = false;
|
bool have_well_known_eq = false;
|
||||||
bool have_well_known_comp = false;
|
bool have_well_known_comp = false;
|
||||||
|
bool have_well_known_gate = false;
|
||||||
|
|
||||||
// reserve last slot(s) for "well-known"
|
// reserve last slot(s) for "well-known"
|
||||||
if (r->eq_band_cnt() > 0) {
|
if (r->eq_band_cnt() > 0) {
|
||||||
|
@ -1506,8 +1581,12 @@ FaderPort8::spill_plugins ()
|
||||||
--spillwidth;
|
--spillwidth;
|
||||||
have_well_known_comp = true;
|
have_well_known_comp = true;
|
||||||
}
|
}
|
||||||
|
if (r->gate_enable_controllable ()) {
|
||||||
|
--spillwidth;
|
||||||
|
have_well_known_gate = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (n_plugins == 0 && !have_well_known_eq && !have_well_known_comp) {
|
if (n_plugins == 0 && !have_well_known_eq && !have_well_known_comp && !have_well_known_gate) {
|
||||||
_ctrls.set_fader_mode (ModeTrack);
|
_ctrls.set_fader_mode (ModeTrack);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1550,15 +1629,15 @@ FaderPort8::spill_plugins ()
|
||||||
_ctrls.strip(id).unset_controllables ();
|
_ctrls.strip(id).unset_controllables ();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (have_well_known_comp) {
|
if (have_well_known_gate) {
|
||||||
assert (id < N_STRIPS);
|
assert (id < N_STRIPS);
|
||||||
boost::function<void ()> cb (boost::bind (&FaderPort8::select_plugin, this, -2));
|
boost::function<void ()> cb (boost::bind (&FaderPort8::select_plugin, this, -3));
|
||||||
_ctrls.strip(id).unset_controllables (FP8Strip::CTRL_ALL & ~FP8Strip::CTRL_TEXT & ~FP8Strip::CTRL_SELECT);
|
_ctrls.strip(id).unset_controllables (FP8Strip::CTRL_ALL & ~FP8Strip::CTRL_TEXT & ~FP8Strip::CTRL_SELECT);
|
||||||
_ctrls.strip(id).set_select_cb (cb);
|
_ctrls.strip(id).set_select_cb (cb);
|
||||||
_ctrls.strip(id).select_button ().set_color (0xffff00ff);
|
_ctrls.strip(id).select_button ().set_color (0xffff00ff);
|
||||||
_ctrls.strip(id).select_button ().set_active (true);
|
_ctrls.strip(id).select_button ().set_active (true);
|
||||||
_ctrls.strip(id).select_button ().set_blinking (false);
|
_ctrls.strip(id).select_button ().set_blinking (false);
|
||||||
_ctrls.strip(id).set_text_line (0, "Comp");
|
_ctrls.strip(id).set_text_line (0, "Gate");
|
||||||
_ctrls.strip(id).set_text_line (1, "Built-In");
|
_ctrls.strip(id).set_text_line (1, "Built-In");
|
||||||
_ctrls.strip(id).set_text_line (2, "--");
|
_ctrls.strip(id).set_text_line (2, "--");
|
||||||
_ctrls.strip(id).set_text_line (3, "");
|
_ctrls.strip(id).set_text_line (3, "");
|
||||||
|
@ -1578,6 +1657,20 @@ FaderPort8::spill_plugins ()
|
||||||
_ctrls.strip(id).set_text_line (3, "");
|
_ctrls.strip(id).set_text_line (3, "");
|
||||||
++id;
|
++id;
|
||||||
}
|
}
|
||||||
|
if (have_well_known_comp) {
|
||||||
|
assert (id < N_STRIPS);
|
||||||
|
boost::function<void ()> cb (boost::bind (&FaderPort8::select_plugin, this, -2));
|
||||||
|
_ctrls.strip(id).unset_controllables (FP8Strip::CTRL_ALL & ~FP8Strip::CTRL_TEXT & ~FP8Strip::CTRL_SELECT);
|
||||||
|
_ctrls.strip(id).set_select_cb (cb);
|
||||||
|
_ctrls.strip(id).select_button ().set_color (0xffff00ff);
|
||||||
|
_ctrls.strip(id).select_button ().set_active (true);
|
||||||
|
_ctrls.strip(id).select_button ().set_blinking (false);
|
||||||
|
_ctrls.strip(id).set_text_line (0, "Comp");
|
||||||
|
_ctrls.strip(id).set_text_line (1, "Built-In");
|
||||||
|
_ctrls.strip(id).set_text_line (2, "--");
|
||||||
|
_ctrls.strip(id).set_text_line (3, "");
|
||||||
|
++id;
|
||||||
|
}
|
||||||
assert (id == N_STRIPS);
|
assert (id == N_STRIPS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1638,6 +1731,7 @@ FaderPort8::assign_sends ()
|
||||||
}
|
}
|
||||||
#ifdef MIXBUS // master-assign on last solo
|
#ifdef MIXBUS // master-assign on last solo
|
||||||
_ctrls.strip(N_STRIPS - 1).set_solo_controllable (s->master_send_enable_controllable ());
|
_ctrls.strip(N_STRIPS - 1).set_solo_controllable (s->master_send_enable_controllable ());
|
||||||
|
AccessAction ("Mixer", "ShowStripBus");
|
||||||
#endif
|
#endif
|
||||||
/* set select buttons */
|
/* set select buttons */
|
||||||
assigned_stripable_connections.drop_connections ();
|
assigned_stripable_connections.drop_connections ();
|
||||||
|
|
|
@ -166,7 +166,7 @@ private:
|
||||||
void spill_plugins ();
|
void spill_plugins ();
|
||||||
void assign_processor_ctrls ();
|
void assign_processor_ctrls ();
|
||||||
bool assign_plugin_presets (std::shared_ptr<ARDOUR::PluginInsert>);
|
bool assign_plugin_presets (std::shared_ptr<ARDOUR::PluginInsert>);
|
||||||
void build_well_known_processor_ctrls (std::shared_ptr<ARDOUR::Stripable>, bool);
|
void build_well_known_processor_ctrls (std::shared_ptr<ARDOUR::Stripable>, int);
|
||||||
void preset_changed ();
|
void preset_changed ();
|
||||||
void select_plugin (int num);
|
void select_plugin (int num);
|
||||||
void select_plugin_preset (size_t num);
|
void select_plugin_preset (size_t num);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user