Commit graph

11028 commits

Author SHA1 Message Date
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
Paul Davis
d07ed3b04f add GainControl::slaved() predicate 2016-05-31 15:30:39 -04:00
Paul Davis
a4935eca6d forward-propagate Changed signals through VCA master-slave connections 2016-05-31 15:30:39 -04:00
Paul Davis
a879310349 add VCAStatusChange message to GainControl 2016-05-31 15:30:39 -04:00
Paul Davis
35172bb369 change API for GainControl, VCA and VCAManager
This allows sane state save/restore
2016-05-31 15:30:39 -04:00
Paul Davis
cab88c6aad add VCA debug bit 2016-05-31 15:30:38 -04:00
Paul Davis
f5df3c291e fix VCA name/number 2016-05-31 15:30:38 -04:00
Paul Davis
acaaa98bd0 start shaping up VCA assign process 2016-05-31 15:30:38 -04:00
Paul Davis
984f4487e0 remove debug output 2016-05-31 15:30:38 -04:00
Paul Davis
4d14ae4e23 mostly restore VCA state on session loading.
This does not restore VCA assignments
2016-05-31 15:30:38 -04:00
Paul Davis
d2c405416c save/restore VCAManager state 2016-05-31 15:30:38 -04:00
Paul Davis
0d5705d096 reorder destruction of VCAManager and Routes 2016-05-31 15:30:38 -04:00
Paul Davis
bfd0ba7bf3 add a bit of state to VCAManager 2016-05-31 15:30:38 -04:00
Paul Davis
4478bdc1d1 add a bit of state to VCAs 2016-05-31 15:30:38 -04:00
Paul Davis
f44cac5cc6 expand and improve VCA API 2016-05-31 15:30:38 -04:00
Paul Davis
8eafe8b804 vca design: gain controls cannot silently "merge" the master(s) value into their own 2016-05-31 15:30:38 -04:00
Paul Davis
405f9fc712 change VCA model to facilitate Harrison *and* SSL designs 2016-05-31 15:30:38 -04:00
Paul Davis
3daad04936 don't force size allocation to recompute pixfader patterns unless size actually changes 2016-05-31 15:30:38 -04:00
Paul Davis
99d251de7d first pass at making the GUI for a VCA visible 2016-05-31 15:30:38 -04:00
Paul Davis
c61a5cabc7 Session HAS-A VCAManager 2016-05-31 15:30:38 -04:00
Paul Davis
ab9bb49f39 initial implementation of a VCA Manager object 2016-05-31 15:30:38 -04:00
Paul Davis
cfc55e392f add name() method to VCA 2016-05-31 15:30:38 -04:00
Paul Davis
5c658db4bf most of the changes required to add a new master faders tabbable
the visibility button isn't actually working correctly
2016-05-31 15:30:38 -04:00