Commit Graph

14472 Commits

Author SHA1 Message Date
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
Paul Davis
87481a2ee1 initially pass at libardour VCA implementation 2016-05-31 15:30:38 -04:00
nick_m
829c257f45 Make TempoMap::framepos_plus_beats() & TempoMap::framepos_minus_beats() more correct. 2016-05-30 11:03:45 +10:00
Robin Gareus
39e818a03a prototype lua midi generators & filters and port event-rewrite 2016-05-29 20:36:32 +02:00
Robin Gareus
60200bf923 bump max number of possible ALSA backend channels 2016-05-29 20:36:32 +02:00
nick_m
1316fe6601 Make TempoMap::framewalk_to_beats () more correct. 2016-05-30 01:23:19 +10:00
nick_m
ecd93207ad Fix bbt dragging wrt audio-locked tempos. 2016-05-29 06:58:24 +10:00