summaryrefslogtreecommitdiff
path: root/libs/ardour/ardour/slavable_automation_control.h
AgeCommit message (Collapse)Author
2019-08-03Update libardour GPL boilerplate and (C) from git logRobin Gareus
2017-10-20Remove not implemented APIRobin Gareus
2017-09-18globally change all use of "frame" to refer to audio into "sample".Paul Davis
Generated by tools/f2s. Some hand-editing will be required in a few places to fix up comments related to timecode and video in order to keep the legible
2017-07-16Add API to run automation only (emit Changed signal).Robin Gareus
Note: MuteControl already implemented this, This removes the special case of boolean_automation_run(). Likewise this removes special-cases for actually_set_value() during automation playback.
2017-06-22Update Slavable APIRobin Gareus
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-14Special-case VCA at 0 (-inf dB), force gain slaves to -inf dBRobin Gareus
2017-06-14Merge event control lists when disconnecting a master-ctrlRobin Gareus
2017-06-13Apply master-value to automation on disconnect.Robin Gareus
2017-06-13Write inverse master automation.Robin Gareus
* The UI and ctrl-surface controls use and display the combined value, including control-masters. * The Automation lane of a control is the raw value of the control without masters. When touching (or writing) automation, the control-master needs to be factored out (or subtracted). e.g press+hold a control -> write inverse master automation.
2017-06-13amend 11ba1854 -- locked curve-evaluation is not publicRobin Gareus
2017-06-12VCA/SlavableAutomationCtrl re-design:Robin Gareus
* remember master-ctrl value on assignment & save with session * Control/AutomationCtrl only stores ctrl's own value (w/o master) * virtual AutomationControl::get_value () -> use SlavableAC method * MasterRecord uses weak-ptr (fixes recursive ~Controllable() deadlock)
2017-06-10Implement slaved boolean automation and update mute special-caseRobin Gareus
2017-06-09Fix deletion of VCA with slaved controls.Robin Gareus
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-03Add infrastructure for evaluating VCA automation curvesRobin Gareus
2017-06-03amend 67f9f6fd: no recursive ReaderLockRobin Gareus
2017-05-30Prepare for automation control masterRobin Gareus
Basic infrastructure to allow VCA automation and Trim automation: look up events during automation playback.
2017-02-21redesign VCA control over gain (and theoretically other scalar controls)Paul Davis
master(s) value now just scales the control's own value; a trivial bit of math at assign/deassign ensures that values do not change during add/remove master operations
2017-02-06save/restore VCA master state inside slaves, so that a reloaded session ends ↵Paul Davis
up back in the same state
2016-10-14Revert "change return type of AutomationControl::actually_set_value() from ↵Paul Davis
void to bool, to indicate if value was changed." This reverts commit c104c9d4726f3ba1ecd352d13b88a57f2f964510.
2016-10-12change return type of AutomationControl::actually_set_value() from void to ↵Paul Davis
bool, to indicate if value was changed. Don't call Session::set_dirty() when no change occurs
2016-09-21gain controls are supposed to be "gain-like"Paul Davis
2016-05-31rearrange inheritance so that Automatable IS-A SlavablePaul Davis
Share assign code via Slavable; add visibility tags to Slavable+SlavableAutomationControl
2016-05-31move ever close to working master/slave logic, this time with audio testingPaul Davis
2016-05-31fix return type of SlavableAutomationControl::get_boolean_masters() to make ↵Paul Davis
it usefl
2016-05-31move SlavableAutomationControl into its own headerPaul Davis