Commit Graph

44 Commits

Author SHA1 Message Date
Paul Davis
5ea862ccc2 fix several more controls to take a time domain from their owner (Automatable) 2021-08-13 12:51:33 -06:00
Paul Davis
df37c62e37 mute controls starts with its stripable's time domain 2021-08-13 12:51:33 -06:00
Edgar Aichinger
70937dc1f9 Fix typos in preparation for translations 2020-04-13 16:10:13 +02:00
Robin Gareus
a22f918d9d Update libardour GPL boilerplate and (C) from git log 2019-08-03 15:53:16 +02:00
Robin Gareus
5dc54c91c7 Prevent recursive VCA assignments
The GUI so far only prevents direct connections  VCA 1 > VCA 2 > VCA 1,
but does not recurse  VCA 1 > VCA 2 > VCA 3 > VCA 1
2017-10-20 02:54:28 +02:00
Robin Gareus
9334c99b35 Update Slavable API
Do not use AutomationType to identify parameters, use complete
Evoral::Parameter and Automatable.

For "batch connections", a Slavables needs to implement an API to return
the relevant controls.

This is only a first step towards a more generic Master/Slave framework.
2017-06-22 22:04:10 +02:00
Robin Gareus
50c5425004 Restore VCA Automation state 2017-06-10 14:38:21 +02:00
Robin Gareus
a1b4f9b8ab Fix deletion of VCA with slaved controls.
The crashed previously because:
 A VCA is-a Automatable is-a Evoral::ControlSet

 After VCA's d'tor completes ~Automatable runs and emits signal to
 DropReferences of all master-controls.

 This in turn calls SlavableAutomationControl::master_going_away()
 for slaved parameters for the given master-control

 In ::master_going_away() the weak-pointer reference to the master's
 AutomationControl (owned by the destroyed VCA) is still valid.

 Execution is in the d'tor of Automatable which is-a ControlSet and
 the ContolSet keeps a reference to the Control and hence also to the
 AutomationControl which is-a Evoral::Control.

 So master_going_away() locks a boost::shared_ptr<ARDOUR::AutomationControl>
 which is actually the MuteControl owned by the VCA.
 It calls SlavableAutomationControl::remove_master() which
 in turn calls MuteControl::pre_remove_master() which uses the
 MuteMaster API to retrieve the value. The MuteMaster however is the
 VCA that has just been destroyed.


The solution is twofold:
 1) emit "drop_references" from the VCA d'tor itself,
    before the VCA is destroyed.

 2) disconnect a slaved control from the master's drop_references signal
    when un-assigning a master-control.
2017-06-09 23:25:42 +02:00
Paul Davis
0c035778e1 libardour now has CoreSelection object to manage selection status of Stripables and AutomationControls 2017-05-05 18:56:25 +01:00
Tim Mayberry
161cd4f3cd Use XMLNode::get/set_property API in ARDOUR::VCA class 2017-04-19 09:36:53 +10:00
Paul Davis
e12e8716ba add VCA::full_name() which returns "VCA %n" : VCA %n" by default and "VCA %n : user-provided-name" if the name has been set 2017-01-28 16:06:28 +01:00
Paul Davis
cf52d6e4b4 enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.h 2016-07-14 14:45:23 -04:00
Paul Davis
b37ec38d86 change VCA number to signed.
Allows for more robust out-of-band (negative) value
2016-07-08 11:46:01 -04:00
Paul Davis
d58cb3daa3 extensive changes to PresentationInfo API
Now handles color, partially.
2016-06-05 16:33:01 -04:00
Paul Davis
2ac7108ccb use new record safe control in libardour 2016-05-31 15:30:45 -04:00
Paul Davis
d09b466f05 VCA: fix numbering scheme to allow contiguous numbers after removing the last VCA; remove unnecessary remote_control_id() method 2016-05-31 15:30:44 -04:00
Paul Davis
a48888e688 add slaved_to() and slaved() methods to VCA 2016-05-31 15:30:43 -04:00
Paul Davis
e0ff70cf86 first vaguely working version using PresentationInfo
remote control ID and "order keys" have been removed.
2016-05-31 15:30:42 -04:00
Paul Davis
0ab10bf8e3 API and implementation tweaks for destroying VCAs 2016-05-31 15:30:42 -04:00
Paul Davis
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
Paul Davis
52b150ba5d generalize VCA assign/unassign code.
Need to share this approach across Slavables
2016-05-31 15:30:41 -04:00
Paul Davis
f2984260d4 add rec-enable and monitor controls to VCAs 2016-05-31 15:30:41 -04:00
Paul Davis
1e9b2abe73 save and restore vca assignments 2016-05-31 15:30:41 -04:00
Paul Davis
83e51ee69b add Slavable API for VCA assign/unassign 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
69250b64ea move ever close to working master/slave logic, this time with audio testing 2016-05-31 15:30:41 -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
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
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
c3afeab49c don't increment actual VCA counter when saving session state 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
1f6800d421 redesign Route and VCA objects to inherit from ARDOUR::Stripable 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
35172bb369 change API for GainControl, VCA and VCAManager
This allows sane state save/restore
2016-05-31 15:30:39 -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
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
405f9fc712 change VCA model to facilitate Harrison *and* SSL designs 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
87481a2ee1 initially pass at libardour VCA implementation 2016-05-31 15:30:38 -04:00