13
0
Commit Graph

10843 Commits

Author SHA1 Message Date
9d2538ae72 remove any reference to Route in Generic MIDI support (basically a NO-OP) 2016-05-31 15:30:43 -04:00
d31527f2e6 improve/extend Session::controllable_by_descriptor() 2016-05-31 15:30:43 -04:00
c448b805d1 fix implementation of Session::get_remote_nth_stripable() 2016-05-31 15:30:43 -04:00
05647470ef add required MuteControl method 2016-05-31 15:30:43 -04:00
2ff7821128 expand and correct accepted syntax for ControllableDescriptor strings
note: manual needs updating to reflect this
2016-05-31 15:30:43 -04:00
31a8f01d16 fix thinko in use of sizeof() for bitshifting 2016-05-31 15:30:43 -04:00
cefd3ac8be convert faderport to use Stripable instead of Route 2016-05-31 15:30:43 -04:00
7eb2d1d16d make ::muted_by_others_soloing() part of the Muteable API 2016-05-31 15:30:43 -04:00
7321e1b4a2 add MonitorProcessor accessor to Stripable API 2016-05-31 15:30:43 -04:00
186209c03c fix crash in mackie code caused by assumption that all Stripables have meters 2016-05-31 15:30:43 -04:00
83052ad18c clean up debug output for OrderKeys 2016-05-31 15:30:42 -04:00
2c27b3df93 improve debug output 2016-05-31 15:30:42 -04:00
201c5825ac remove debug output 2016-05-31 15:30:42 -04:00
6ef7139fb3 missing initialization 2016-05-31 15:30:42 -04:00
2c9c210213 manually fix rebase/merge issues caused by addition of plugin presets to methods which add a new track/bus 2016-05-31 15:30:42 -04:00
4b0a235f91 manually fix rebase/merge issues for Mackie Control support 2016-05-31 15:30:42 -04:00
01890af71e temporarily remove Session::new_midi_track from lua api 2016-05-31 15:30:42 -04:00
4b7bbacaaa make mackie surfaces aware of VCAs 2016-05-31 15:30:42 -04:00
c34ad3a723 convert Mackie Control Surface support to use Stripable, not Route 2016-05-31 15:30:42 -04:00
1a8769ab03 add two more AutomationControl fetch methods to Stripable 2016-05-31 15:30:42 -04:00
937af04ba0 more const value_as_string fixes 2016-05-31 15:30:42 -04:00
14fb1367a2 fix check for order max in PresentationInfo::parse (string&) 2016-05-31 15:30:42 -04:00
38dde7f818 add Session::get_stripables() 2016-05-31 15:30:42 -04:00
d7cce2ff7d implementation side of Controllable::get_user_string() with const arg 2016-05-31 15:30:42 -04:00
99bc6a4290 add two more AutomationControl fetch methods to VCA 2016-05-31 15:30:42 -04:00
dd57a83793 add Stripable analogs for Route signals and methods in ControlProtocol
These will go away once all surfaces have migrated to Stripables
2016-05-31 15:30:42 -04:00
96faa622ee fwd declaration of Stripable and associated lists 2016-05-31 15:30:42 -04:00
534b2de35b Add PanControllable::get_user_string() (provide indirect access to Panner::value_as_string(); make ::get_user_string() use a const arg everywhere 2016-05-31 15:30:42 -04:00
8346fab567 remove irrelevant, out of date and incorrect comment 2016-05-31 15:30:42 -04:00
d5127001bb move ControllableDescriptor from libpbd to libardour; add support for describing VCAs 2016-05-31 15:30:42 -04:00
e0ff70cf86 first vaguely working version using PresentationInfo
remote control ID and "order keys" have been removed.
2016-05-31 15:30:42 -04:00
0ab10bf8e3 API and implementation tweaks for destroying VCAs 2016-05-31 15:30:42 -04:00
f485cfa324 rearrange inheritance so that Automatable IS-A Slavable
Share assign code via Slavable; add visibility tags to Slavable+SlavableAutomationControl
2016-05-31 15:30:41 -04:00
eee3837245 remove explicit setting of Toggle flag for AutomationControls
Make it be based on the ParameterDescriptor, which indicates toggle status anyway
2016-05-31 15:30:41 -04:00
52b150ba5d generalize VCA assign/unassign code.
Need to share this approach across Slavables
2016-05-31 15:30:41 -04:00
f2984260d4 add rec-enable and monitor controls to VCAs 2016-05-31 15:30:41 -04:00
1e9b2abe73 save and restore vca assignments 2016-05-31 15:30:41 -04:00
83e51ee69b add Slavable API for VCA assign/unassign 2016-05-31 15:30:41 -04:00
84a0386f9c new files 2016-05-31 15:30:41 -04:00
be4e898996 improve cleanup of VCA related objects 2016-05-31 15:30:41 -04:00
51064f77a8 fix compiler issues with pair<T1,T2> construction 2016-05-31 15:30:41 -04:00
d0f5958542 fix chaining of masters for boolean controls 2016-05-31 15:30:41 -04:00
a48fada3c7 move new fractional pane utility functions into libs/gtkmm2ext 2016-05-31 15:30:41 -04:00
b9ba91ac1d fix solo isolate controls 2016-05-31 15:30:41 -04:00
a89b3f5687 clear all solo state should affect VCAs too 2016-05-31 15:30:41 -04:00
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
01bba9f910 fix backend logic for PFL/AFL when mastered 2016-05-31 15:30:41 -04:00
69250b64ea move ever close to working master/slave logic, this time with audio testing 2016-05-31 15:30:41 -04:00
bce617375e fix return type of SlavableAutomationControl::get_boolean_masters() to make it usefl 2016-05-31 15:30:41 -04:00
9e70384ccf fix solo control to use VCA logic as worked out for mute 2016-05-31 15:30:41 -04:00
0ef0492cbb remove debug output 2016-05-31 15:30:41 -04:00
3fe50951e4 fix call to base class 2016-05-31 15:30:41 -04:00
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
01aefd236a move SlavableAutomationControl into its own header 2016-05-31 15:30:41 -04:00
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
7d493b091a do not route AutomationControl changes to an RT thread if we are loading a session 2016-05-31 15:30:40 -04:00
4a30e1f4c8 add Session::loading() to allow easy detection of "session is being loaded" condition 2016-05-31 15:30:40 -04:00
e1bcd70712 a slew of as-yet incomplete work to get VCA solo+mute closer to working 2016-05-31 15:30:40 -04:00
86a9fb2844 stop crash caused by missing conditional 2016-05-31 15:30:40 -04:00
cba56ade87 fix logic for Session::solo_control_mode_changed() 2016-05-31 15:30:40 -04:00
b042072df4 fix logic for removing an AutomationControl from a ControlGroup 2016-05-31 15:30:40 -04:00
b2b5c965c8 some tweaks for solo logic to get things working as they were before (correctly) 2016-05-31 15:30:40 -04:00
5499bad836 add back some amount of XML save/restore for route controls 2016-05-31 15:30:40 -04:00
0cf89e76ef add new enums 2016-05-31 15:30:40 -04:00
e9d72383c7 extend function of Automatable::control_factory() [ this may be the wrong design ... review coming ] 2016-05-31 15:30:40 -04:00
2ca819c00b add track controls to its Automatable self 2016-05-31 15:30:40 -04:00
8fc1876626 do not non-automable controls to an Automatable's list of what can be automated 2016-05-31 15:30:40 -04:00
2c6d595614 add a new Controllable::NotAutomable flag 2016-05-31 15:30:40 -04:00
4aa1c242ab add new files to source tree 2016-05-31 15:30:40 -04:00
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
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
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
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
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
1f6800d421 redesign Route and VCA objects to inherit from ARDOUR::Stripable 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
dd31ef2d1b fix ambiguity in VCA constructors 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
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
d07ed3b04f add GainControl::slaved() predicate 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
a879310349 add VCAStatusChange message to GainControl 2016-05-31 15:30:39 -04:00
35172bb369 change API for GainControl, VCA and VCAManager
This allows sane state save/restore
2016-05-31 15:30:39 -04:00
cab88c6aad add VCA debug bit 2016-05-31 15:30:38 -04:00
f5df3c291e fix VCA name/number 2016-05-31 15:30:38 -04:00
acaaa98bd0 start shaping up VCA assign process 2016-05-31 15:30:38 -04:00