mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-06 14:54:56 +01:00
LCXL: make sends assignable for 32C
* add an option to the controller configuration gui
to assign the 3x2 send banks in mixer mode
to either the upper (1-6) or lower (7-12) Mixbus sends
* This was a user request to better support the workflow
of the CoMondo Mix system
This commit is contained in:
parent
45ff356819
commit
d7fed7c52e
4 changed files with 79 additions and 2 deletions
|
|
@ -80,6 +80,7 @@ LaunchControlXL::LaunchControlXL (ARDOUR::Session& s)
|
|||
, _fader8master (false)
|
||||
, _device_mode (false)
|
||||
#ifdef MIXBUS32C
|
||||
, _ctrllowersends (false)
|
||||
, _fss_is_mixbus (false)
|
||||
#endif
|
||||
, _refresh_leds_flag (false)
|
||||
|
|
@ -164,6 +165,11 @@ LaunchControlXL::begin_using_device ()
|
|||
if (fader8master()) {
|
||||
set_fader8master (fader8master());
|
||||
}
|
||||
#ifdef MIXBUS32C
|
||||
if (ctrllowersends()) {
|
||||
set_ctrllowersends (ctrllowersends());
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -770,6 +776,9 @@ LaunchControlXL::get_state()
|
|||
|
||||
child = new XMLNode (X_("Configuration"));
|
||||
child->set_property ("fader8master", fader8master());
|
||||
#ifdef MIXBUS32C
|
||||
child->set_property ("ctrllowersends", ctrllowersends());
|
||||
#endif
|
||||
node.add_child_nocopy (*child);
|
||||
|
||||
return node;
|
||||
|
|
@ -805,6 +814,9 @@ LaunchControlXL::set_state (const XMLNode & node, int version)
|
|||
if ((child = node.child (X_("Configuration"))) !=0) {
|
||||
/* this should propably become a for-loop at some point */
|
||||
child->get_property ("fader8master", _fader8master);
|
||||
#ifdef MIXBUS32C
|
||||
child->get_property ("ctrllowersends", _ctrllowersends);
|
||||
#endif
|
||||
}
|
||||
|
||||
return retval;
|
||||
|
|
@ -1242,6 +1254,7 @@ LaunchControlXL::init_device_mode()
|
|||
init_knobs();
|
||||
init_buttons(false);
|
||||
#ifdef MIXBUS32C
|
||||
set_ctrllowersends(false);
|
||||
store_fss_type();
|
||||
#endif
|
||||
init_dm_callbacks();
|
||||
|
|
@ -1307,6 +1320,9 @@ LaunchControlXL::set_device_mode (bool yn)
|
|||
if (device_mode()) {
|
||||
init_device_mode();
|
||||
} else {
|
||||
#ifdef MIXBUS32C
|
||||
set_ctrllowersends(ctrllowersends());
|
||||
#endif
|
||||
switch_bank (bank_start);
|
||||
}
|
||||
}
|
||||
|
|
@ -1330,10 +1346,37 @@ LaunchControlXL::set_fader8master (bool yn)
|
|||
switch_bank (bank_start);
|
||||
}
|
||||
|
||||
#ifdef MIXBUS32C
|
||||
void
|
||||
LaunchControlXL::set_ctrllowersends (bool yn)
|
||||
{
|
||||
|
||||
_ctrllowersends = yn;
|
||||
|
||||
if (device_mode()) { return; }
|
||||
|
||||
/* reinit the send bank */
|
||||
if (_ctrllowersends) {
|
||||
_send_bank_base = 6;
|
||||
} else {
|
||||
_send_bank_base = 0;
|
||||
}
|
||||
set_send_bank(0);
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
LaunchControlXL::set_send_bank (int offset)
|
||||
{
|
||||
if ((_send_bank_base == 0 && offset < 0) || (_send_bank_base == 4 && offset > 0)) {
|
||||
|
||||
int lowersendsoffset = 0;
|
||||
|
||||
#ifdef MIXBUS32C
|
||||
if (ctrllowersends() && !device_mode()) {
|
||||
lowersendsoffset = 6;
|
||||
}
|
||||
#endif
|
||||
if ((_send_bank_base == (0 + lowersendsoffset) && offset < 0) || (_send_bank_base == (4 + lowersendsoffset) && offset > 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -1348,7 +1391,7 @@ LaunchControlXL::set_send_bank (int offset)
|
|||
}
|
||||
|
||||
_send_bank_base = _send_bank_base + offset;
|
||||
_send_bank_base = max (0, min (4, _send_bank_base));
|
||||
_send_bank_base = max (0 + lowersendsoffset, min (4 + lowersendsoffset, _send_bank_base));
|
||||
|
||||
DEBUG_TRACE (DEBUG::LaunchControlXL, string_compose ("set_send_bank - _send_bank_base: %1 \n", send_bank_base()));
|
||||
|
||||
|
|
@ -1366,16 +1409,22 @@ LaunchControlXL::set_send_bank (int offset)
|
|||
switch (_send_bank_base) {
|
||||
case 0:
|
||||
case 1:
|
||||
case 6:
|
||||
case 7:
|
||||
write (sbu->state_msg(false));
|
||||
write (sbd->state_msg(true));
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
case 8:
|
||||
case 9:
|
||||
write (sbu->state_msg(true));
|
||||
write (sbd->state_msg(true));
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
case 10:
|
||||
case 11:
|
||||
write (sbu->state_msg(true));
|
||||
write (sbd->state_msg(false));
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue