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
c107f1ab56
show VCA master mute state in RouteUI, even if Config->get_show_solo_mutes() is false (since it is orthogonal)
2016-05-31 15:30:40 -04:00
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
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
36784ee94f
use route automation control Changed() signals for solo/mute in GUI
2016-05-31 15:30:40 -04:00
4b36593106
fix faderport and mackie to use route AutomationControls to be notified about solo/mute changes
2016-05-31 15:30:40 -04:00
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
8eb45c518d
rearrange AutomationControl and RouteAutomationControl to get more shared logic and consistent master/slave behaviour
2016-05-31 15:30:40 -04:00
91f8c0be54
use new API for control slave/master relationships
2016-05-31 15:30:40 -04:00
c660703f95
redesign control slave/master system, move code from GainControl to AutomationControl
2016-05-31 15:30:40 -04:00
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
9f66fe1ebb
start adding a context menu for VCA strips
2016-05-31 15:30:40 -04:00
567fb50aad
GUI tweaks for VCAMasterStrip, including renaming
2016-05-31 15:30:40 -04:00
b34f949518
follow session track-number policy in mixer strip, as is done in the editor
2016-05-31 15:30:40 -04:00
1249e61d73
trivially change API of GainMeter but more importantly don't show meter if no Route is set
2016-05-31 15:30:40 -04:00
fcec93a28e
remove VCA active button
2016-05-31 15:30:40 -04:00
a3c5b81ca1
Session API changes to enable VCAs to set soloed-by-upstream on assigned routes
2016-05-31 15:30:39 -04:00
9a0f4b1ef3
move vca assignment up to the Route level (from GainControl)
2016-05-31 15:30:39 -04:00
04e26fe7e6
move VCA assignment up to Route level
2016-05-31 15:30:39 -04:00
c3afeab49c
don't increment actual VCA counter when saving session state
2016-05-31 15:30:39 -04:00
7b62e08233
add required header
2016-05-31 15:30:39 -04:00
0dca11cb47
save+restore VCA counter value across instances
2016-05-31 15:30:39 -04:00
1132d3f4c8
VCA solo and mute controls need to call AutomationControl::set_value() to emit a signal
2016-05-31 15:30:39 -04:00
aee283f056
use redesigned Route and VCA object architecture/API
2016-05-31 15:30:39 -04:00
406e9d05ce
use redesigned Route and VCA object architecture/API
2016-05-31 15:30:39 -04:00
1f6800d421
redesign Route and VCA objects to inherit from ARDOUR::Stripable
2016-05-31 15:30:39 -04:00
a03d969a97
update VCA assign buttons to show status for VCA strips
2016-05-31 15:30:39 -04:00
00b7385e4c
correctly restore VCA-VCA slave/master relationships at session load time
2016-05-31 15:30:39 -04:00
aa80321976
fix deadlock caused by VCA=>VCA slaving and set_state()
2016-05-31 15:30:39 -04:00
cd6a88d0d4
fix incorrect selection of all strips/tracks at opening.
...
Old code was counting how many child nodes where in the MixerUI, assuming they
were all routes, and using that to decide if this was a from_scratch setup.
The addition of VCAs to the track_model changes that, so now we have to actually
check there are no existing Routes before doing the from_scratch setup
2016-05-31 15:30:39 -04:00
6f9beb1e33
no self-assign for VCA masters
2016-05-31 15:30:39 -04:00
dd31ef2d1b
fix ambiguity in VCA constructors
2016-05-31 15:30:39 -04:00
dc9f579a8b
add GUI support for slaving VCAs to other VCAs
2016-05-31 15:30:39 -04:00
9339a7b997
add solo/mute controls to VCAMasterStrip
2016-05-31 15:30:39 -04:00
6b7a384e34
add solo/mute logic to VCA masters
2016-05-31 15:30:39 -04:00
17853bc472
ensure that GainControl::get_value() never returns > Config->get_max_gain()
2016-05-31 15:30:39 -04:00
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
a38aabfce3
revert GainMeter back to simpler code now that VCA model appears correct
2016-05-31 15:30:39 -04:00
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
c572d4ed9e
add VCAMasterStrip::set_selected()
2016-05-31 15:30:39 -04:00
4d87503863
fix restoration of editor pane positions
2016-05-31 15:30:39 -04:00
419c7e95f3
GUI modifications to improve VCA strips and their placement in the mixer
...
Note that this includes some changes that actually make mixer pane settings get restored,
which has been broken for some time. Of course, they are not restored perfectly, yet.
2016-05-31 15:30:39 -04:00
c5c6be4170
adjust logic for slaved faders, not necessarily correctly.
...
More info in the code comments.
2016-05-31 15:30:39 -04:00
0275582b89
rename GainMeter::gain_adjusted() to GainMeter::fader_moved() to be more clear
2016-05-31 15:30:39 -04:00
d07ed3b04f
add GainControl::slaved() predicate
2016-05-31 15:30:39 -04:00
8e643563e5
make GUI fader positions reflect VCA master values
2016-05-31 15:30:39 -04:00
a4935eca6d
forward-propagate Changed signals through VCA master-slave connections
2016-05-31 15:30:39 -04:00
7f244ce14d
use VCAUpdateStatus to keep VCA button current
2016-05-31 15:30:39 -04:00
a879310349
add VCAStatusChange message to GainControl
2016-05-31 15:30:39 -04:00
3be9d6dccc
remove debug output
2016-05-31 15:30:39 -04:00