zero ();
return;
}
+ // The active V-pot control may not be active for this strip
+ // But if we zero it in the controls function it may erase
+ // the one we do want
+ _surface->write (_vpot->zero());
notify_solo_changed ();
notify_mute_changed ();
if (_route) {
if (!_route->trim() || !route()->trim()->active()) {
- _surface->write (_vpot->zero());
return;
}
Control* control = 0;
{
if (_route) {
if (!_route->phase_invert().size()) {
- _surface->write (_vpot->zero());
return;
}
if (_route) {
boost::shared_ptr<Processor> p = _route->nth_send (_current_send);
if (!p) {
- _surface->write (_vpot->zero());
return;
}
return;
}
+ string fullname = string();
if (!_route) {
- return;
+ // make sure first three strips get cleared of view mode
+ if (_index > 2) {
+ return;
+ }
+ } else {
+ fullname = _route->name();
}
string line1;
- string fullname = _route->name();
if (fullname.length() <= 6) {
line1 = fullname;
boost::shared_ptr<AutomationControl> pan_control = _route->pan_azimuth_control ();
if (!pan_control) {
- _surface->write (_vpot->zero());
return;
}
boost::shared_ptr<AutomationControl> pan_control = _route->pan_width_control ();
if (!pan_control) {
- _surface->write (_vpot->zero());
return;
}
/* reset to default */
boost::shared_ptr<AutomationControl> ac = _fader->control ();
if (ac) {
- ac->set_value (ac->normal());
+ ac->set_value (ac->normal(), Controllable::NoGroup);
}
return;
}
if (control->toggled()) {
if (control->toggled()) {
- control->set_value (!control->get_value());
+ control->set_value (!control->get_value(), Controllable::NoGroup);
}
}
if (ac) {
/* reset to default/normal value */
- ac->set_value (ac->normal());
+ ac->set_value (ac->normal(), Controllable::NoGroup);
}
} else {
if (_surface->mcp().main_modifier_state() & MackieControlProtocol::MODIFIER_SHIFT) {
if (ac) {
- ac->set_value (ac->normal());
+ ac->set_value (ac->normal(), Controllable::NoGroup);
}
} else {
/* apply change */
for (MackieControlProtocol::ControlList::iterator c = controls.begin(); c != controls.end(); ++c) {
- (*c)->set_value (new_value);
+ (*c)->set_value (new_value, Controllable::NoGroup);
}
} else {
{
bool reshow_vpot_mode = false;
bool reshow_name = false;
+ bool good_strip = true;
if (!_route) {
- return;
+ // view mode may cover as many as 3 strips
+ // needs to be cleared when there are less than 3 routes
+ if (_index > 2) {
+ return;
+ } else {
+ good_strip = false;
+ }
}
if (_block_screen_redisplay_until >= now) {
/* timeout reached, reset */
_block_screen_redisplay_until = 0;
- reshow_vpot_mode = true;
+ reshow_vpot_mode = (true && good_strip);
reshow_name = true;
}
/* timeout reached, reset */
_block_vpot_mode_redisplay_until = 0;
- reshow_vpot_mode = true;
+ reshow_vpot_mode = (true && good_strip);
}
if (reshow_name) {
if (reshow_vpot_mode) {
return_to_vpot_mode_display ();
- } else {
+ } else if (good_strip) {
/* no point doing this if we just switched back to vpot mode
display */
update_automation ();
}
meters:
- update_meter ();
+ if (good_strip) {
+ update_meter ();
+ }
}
void
return;
}
p = _route->nth_send (_current_send + 1);
- if (p && p->name() != "Monitor 1") {
+ if (p) {
_current_send++;
+ if (p->name() == "Monitor 1") { // skip monitor
+ p = _route->nth_send (_current_send + 1);
+ if (p) {
+ _current_send++;
+ } else {
+ _current_send = 0;
+ }
+ }
} else {
_current_send = 0;
}
}
boost::shared_ptr<AutomationControl> tc = r->comp_threshold_controllable ();
- boost::shared_ptr<AutomationControl> sc = r->comp_speed_controllable ();
- boost::shared_ptr<AutomationControl> mc = r->comp_mode_controllable ();
- boost::shared_ptr<AutomationControl> kc = r->comp_makeup_controllable ();
- boost::shared_ptr<AutomationControl> rc = r->comp_redux_controllable ();
- boost::shared_ptr<AutomationControl> ec = r->comp_enable_controllable ();
-
- uint32_t pos = _surface->mcp().global_index (*this);
-
- /* we will control the pos-th available parameter, from the list in the
- * order shown above.
- */
-
- vector<boost::shared_ptr<AutomationControl> > available;
- vector<AutomationType> 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 (rc) { available.push_back (rc); params.push_back (CompRedux); }
- if (ec) { available.push_back (ec); params.push_back (CompEnable); }
-
- if (pos >= available.size()) {
- /* this knob is not needed to control the available parameters */
- _vpot->set_control (boost::shared_ptr<AutomationControl>());
- _surface->write (display (0, string()));
- _surface->write (display (1, string()));
- return;
- }
-
- boost::shared_ptr<AutomationControl> pc;
- AutomationType param;
-
- pc = available[pos];
- param = params[pos];
-
- pc->Changed.connect (subview_connections, MISSING_INVALIDATOR, boost::bind (&Strip::notify_dyn_change, this, param, 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;
- case CompEnable:
- pot_id = "on/off";
- break;
- default:
- break;
- }
-
- if (!pot_id.empty()) {
- _surface->write (display (0, pot_id));
- }
-
- notify_dyn_change (param, true, false);
+ boost::shared_ptr<AutomationControl> sc = r->comp_speed_controllable ();
+ boost::shared_ptr<AutomationControl> mc = r->comp_mode_controllable ();
+ boost::shared_ptr<AutomationControl> kc = r->comp_makeup_controllable ();
+ boost::shared_ptr<AutomationControl> rc = r->comp_redux_controllable ();
+ boost::shared_ptr<AutomationControl> ec = r->comp_enable_controllable ();
+
+ uint32_t pos = _surface->mcp().global_index (*this);
+
+ /* we will control the pos-th available parameter, from the list in the
+ * order shown above.
+ */
+
+ vector<boost::shared_ptr<AutomationControl> > available;
+ vector<AutomationType> 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 (rc) { available.push_back (rc); params.push_back (CompRedux); }
+ if (ec) { available.push_back (ec); params.push_back (CompEnable); }
+
+ if (pos >= available.size()) {
+ /* this knob is not needed to control the available parameters */
+ _vpot->set_control (boost::shared_ptr<AutomationControl>());
+ _surface->write (display (0, string()));
+ _surface->write (display (1, string()));
+ return;
+ }
+
+ boost::shared_ptr<AutomationControl> pc;
+ AutomationType param;
+
+ pc = available[pos];
+ param = params[pos];
+
+ pc->Changed.connect (subview_connections, MISSING_INVALIDATOR, boost::bind (&Strip::notify_dyn_change, this, param, 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;
+ case CompEnable:
+ pot_id = "on/off";
+ break;
+ default:
+ break;
+ }
+
+ if (!pot_id.empty()) {
+ _surface->write (display (0, pot_id));
+ }
+
+ notify_dyn_change (param, true, false);
}
void
_pan_mode = PanAzimuthAutomation;
if (_surface->mcp().flip_mode() != MackieControlProtocol::Normal) {
/* gain to vpot, pan azi to fader */
- _vpot->set_control (_route->group_gain_control());
+ _vpot->set_control (_route->gain_control());
vpot_parameter = GainAutomation;
control_by_parameter[GainAutomation] = _vpot;
_fader->set_control (pan_control);
} else {
/* gain to fader, pan azi to vpot */
vpot_parameter = PanAzimuthAutomation;
- _fader->set_control (_route->group_gain_control());
+ _fader->set_control (_route->gain_control());
control_by_parameter[GainAutomation] = _fader;
_vpot->set_control (pan_control);
control_by_parameter[PanAzimuthAutomation] = _vpot;
_pan_mode = PanWidthAutomation;
if (_surface->mcp().flip_mode() != MackieControlProtocol::Normal) {
/* gain to vpot, pan width to fader */
- _vpot->set_control (_route->group_gain_control());
+ _vpot->set_control (_route->gain_control());
vpot_parameter = GainAutomation;
control_by_parameter[GainAutomation] = _vpot;
_fader->set_control (pan_control);
} else {
/* gain to fader, pan width to vpot */
vpot_parameter = PanWidthAutomation;
- _fader->set_control (_route->group_gain_control());
+ _fader->set_control (_route->gain_control());
control_by_parameter[GainAutomation] = _fader;
_vpot->set_control (pan_control);
control_by_parameter[PanWidthAutomation] = _vpot;
vpot_parameter = TrimAutomation;
if (_surface->mcp().flip_mode() != MackieControlProtocol::Normal) {
/* gain to vpot, trim to fader */
- _vpot->set_control (_route->group_gain_control());
+ _vpot->set_control (_route->gain_control());
control_by_parameter[GainAutomation] = _vpot;
if (_route->trim() && route()->trim()->active()) {
_fader->set_control (_route->trim_control());
}
} else {
/* gain to fader, trim to vpot */
- _fader->set_control (_route->group_gain_control());
+ _fader->set_control (_route->gain_control());
control_by_parameter[GainAutomation] = _fader;
if (_route->trim() && route()->trim()->active()) {
_vpot->set_control (_route->trim_control());
vpot_parameter = PhaseAutomation;
if (_surface->mcp().flip_mode() != MackieControlProtocol::Normal) {
/* gain to vpot, phase to fader */
- _vpot->set_control (_route->group_gain_control());
+ _vpot->set_control (_route->gain_control());
control_by_parameter[GainAutomation] = _vpot;
if (_route->phase_invert().size()) {
_fader->set_control (_route->phase_control());
}
} else {
/* gain to fader, phase to vpot */
- _fader->set_control (_route->group_gain_control());
+ _fader->set_control (_route->gain_control());
control_by_parameter[GainAutomation] = _fader;
if (_route->phase_invert().size()) {
_vpot->set_control (_route->phase_control());
if (!Profile->get_mixbus()) {
if (_surface->mcp().flip_mode() != MackieControlProtocol::Normal) {
// gain to vpot, send to fader
- _vpot->set_control (_route->group_gain_control());
+ _vpot->set_control (_route->gain_control());
control_by_parameter[GainAutomation] = _vpot;
// test for send to control
boost::shared_ptr<Processor> p = _route->nth_send (_current_send);
}
} else {
// gain to fader, send to vpot
- _fader->set_control (_route->group_gain_control());
+ _fader->set_control (_route->gain_control());
control_by_parameter[GainAutomation] = _fader;
boost::shared_ptr<Processor> p = _route->nth_send (_current_send);
if (p && p->name() != "Monitor 1") {
control_by_parameter[SendAutomation] = _vpot;
} else {
// gain to fader, send to vpot
- _fader->set_control (_route->group_gain_control());
+ _fader->set_control (_route->gain_control());
control_by_parameter[GainAutomation] = _fader;
boost::shared_ptr<Processor> p = _route->nth_send (_current_send);
if (p && p->name() != "Monitor 1") {