Paul Davis
b9ba91ac1d
fix solo isolate controls
2016-05-31 15:30:41 -04:00
Paul Davis
a89b3f5687
clear all solo state should affect VCAs too
2016-05-31 15:30:41 -04:00
Paul Davis
5b5e64d860
remove Route::listening_via_monitor()
...
This is better tested with direct use of the solo_control and
Config->get_solo_controls_are_listen_controls()
2016-05-31 15:30:41 -04:00
Paul Davis
01bba9f910
fix backend logic for PFL/AFL when mastered
2016-05-31 15:30:41 -04:00
Paul Davis
69250b64ea
move ever close to working master/slave logic, this time with audio testing
2016-05-31 15:30:41 -04:00
Paul Davis
bce617375e
fix return type of SlavableAutomationControl::get_boolean_masters() to make it usefl
2016-05-31 15:30:41 -04:00
Paul Davis
9e70384ccf
fix solo control to use VCA logic as worked out for mute
2016-05-31 15:30:41 -04:00
Paul Davis
0ef0492cbb
remove debug output
2016-05-31 15:30:41 -04:00
Paul Davis
3fe50951e4
fix call to base class
2016-05-31 15:30:41 -04:00
Paul Davis
8ee6603561
design changes to various SlavableAutomationControls to make it possible to get the logic right for boolean controls
2016-05-31 15:30:41 -04:00
Paul Davis
01aefd236a
move SlavableAutomationControl into its own header
2016-05-31 15:30:41 -04:00
Paul Davis
6de4953be8
a variety of changes that get closer to correctly functioning behaviour for VCA solo+mute (BUT ARE NOT DONE YET)
2016-05-31 15:30:41 -04:00
Paul Davis
7d493b091a
do not route AutomationControl changes to an RT thread if we are loading a session
2016-05-31 15:30:40 -04:00
Paul Davis
4a30e1f4c8
add Session::loading() to allow easy detection of "session is being loaded" condition
2016-05-31 15:30:40 -04:00
Paul Davis
e1bcd70712
a slew of as-yet incomplete work to get VCA solo+mute closer to working
2016-05-31 15:30:40 -04:00
Paul Davis
86a9fb2844
stop crash caused by missing conditional
2016-05-31 15:30:40 -04:00
Paul Davis
cba56ade87
fix logic for Session::solo_control_mode_changed()
2016-05-31 15:30:40 -04:00
Paul Davis
b042072df4
fix logic for removing an AutomationControl from a ControlGroup
2016-05-31 15:30:40 -04:00
Paul Davis
b2b5c965c8
some tweaks for solo logic to get things working as they were before (correctly)
2016-05-31 15:30:40 -04:00
Paul Davis
5499bad836
add back some amount of XML save/restore for route controls
2016-05-31 15:30:40 -04:00
Paul Davis
0cf89e76ef
add new enums
2016-05-31 15:30:40 -04:00
Paul Davis
e9d72383c7
extend function of Automatable::control_factory() [ this may be the wrong design ... review coming ]
2016-05-31 15:30:40 -04:00
Paul Davis
2ca819c00b
add track controls to its Automatable self
2016-05-31 15:30:40 -04:00
Paul Davis
8fc1876626
do not non-automable controls to an Automatable's list of what can be automated
2016-05-31 15:30:40 -04:00
Paul Davis
2c6d595614
add a new Controllable::NotAutomable flag
2016-05-31 15:30:40 -04:00
Paul Davis
4aa1c242ab
add new files to source tree
2016-05-31 15:30:40 -04:00
Paul Davis
653ae4acd6
universal change in the design of the way Route/Track controls are designed and used. The controls now own their own state, rather than proxy for state in their owners.
...
Massive changes all over the code to accomodate this. Many things are not finished. Consider this a backup safety commit
2016-05-31 15:30:40 -04:00
Paul Davis
194b213456
add implicit mute state to MuteMaster and use when a master of a mute control is enabled/disabled. Add AutomationControl::master_changed() as a virtual method to handle ... master value changes
2016-05-31 15:30:40 -04:00
Paul Davis
5531c83496
change API of Controllable::Changed signal to include (from_self, GroupControlDisposition)
...
This allows the signal to convey more information, which may be required by some handlers of a control's Changed signal
2016-05-31 15:30:40 -04:00
Paul Davis
4b36593106
fix faderport and mackie to use route AutomationControls to be notified about solo/mute changes
2016-05-31 15:30:40 -04:00
Paul Davis
1c0c9b40b7
new API for route solo/mute state mgmt
...
Route now calls back into Session when solo/mute/listen state changes. All other interested
parties must use the Route::{solo,mute,...}_control()->Changed() to be notified of changes.
The Session requires more information than the Changed signal can provide, in order to
propagate solo/mute changes across the entire Session correctly.
Note that this uses an experimental use of CRTP to isolate a public API within Session
2016-05-31 15:30:40 -04:00
Paul Davis
8eb45c518d
rearrange AutomationControl and RouteAutomationControl to get more shared logic and consistent master/slave behaviour
2016-05-31 15:30:40 -04:00
Paul Davis
c660703f95
redesign control slave/master system, move code from GainControl to AutomationControl
2016-05-31 15:30:40 -04:00
Paul Davis
74f8a81276
change master records in GainControl to use AutomationControl
...
The first step of generalizing master/slave to other controls
2016-05-31 15:30:40 -04:00
Paul Davis
a3c5b81ca1
Session API changes to enable VCAs to set soloed-by-upstream on assigned routes
2016-05-31 15:30:39 -04:00
Paul Davis
9a0f4b1ef3
move vca assignment up to the Route level (from GainControl)
2016-05-31 15:30:39 -04:00
Paul Davis
04e26fe7e6
move VCA assignment up to Route level
2016-05-31 15:30:39 -04:00
Paul Davis
c3afeab49c
don't increment actual VCA counter when saving session state
2016-05-31 15:30:39 -04:00
Paul Davis
7b62e08233
add required header
2016-05-31 15:30:39 -04:00
Paul Davis
0dca11cb47
save+restore VCA counter value across instances
2016-05-31 15:30:39 -04:00
Paul Davis
1132d3f4c8
VCA solo and mute controls need to call AutomationControl::set_value() to emit a signal
2016-05-31 15:30:39 -04:00
Paul Davis
aee283f056
use redesigned Route and VCA object architecture/API
2016-05-31 15:30:39 -04:00
Paul Davis
1f6800d421
redesign Route and VCA objects to inherit from ARDOUR::Stripable
2016-05-31 15:30:39 -04:00
Paul Davis
00b7385e4c
correctly restore VCA-VCA slave/master relationships at session load time
2016-05-31 15:30:39 -04:00
Paul Davis
aa80321976
fix deadlock caused by VCA=>VCA slaving and set_state()
2016-05-31 15:30:39 -04:00
Paul Davis
dd31ef2d1b
fix ambiguity in VCA constructors
2016-05-31 15:30:39 -04:00
Paul Davis
6b7a384e34
add solo/mute logic to VCA masters
2016-05-31 15:30:39 -04:00
Paul Davis
17853bc472
ensure that GainControl::get_value() never returns > Config->get_max_gain()
2016-05-31 15:30:39 -04:00
Paul Davis
0c5e5f54a0
change master-record management to use std::map to avoid const iterators; drop connection to master Changed signal when unassigning
2016-05-31 15:30:39 -04:00
Paul Davis
562ec7df8f
probably get the design of VCAs basically correct: use a per-master ratio model
...
See comments in the code for a bit more detail
2016-05-31 15:30:39 -04:00