summaryrefslogtreecommitdiff
path: root/libs/ardour/automation_control.cc
AgeCommit message (Collapse)Author
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-09-18Add support for Latch AutomationRobin Gareus
2017-07-30Turn AutomationCtrl into a SessionHandleRefRobin Gareus
This fixes a crash with GUI elements which are only deleted during GUI Idle and hold a Reference to a Controllable, The session is already destroyed at that point: ARDOUR::CoreSelection::remove_control_by_id(PBD::ID const&) ARDOUR::AutomationControl::~AutomationControl() ARDOUR::SlavableAutomationControl::~SlavableAutomationControl() ARDOUR::MonitorControl::~MonitorControl() boost::detail::sp_counted_base::destroy() boost::detail::sp_counted_impl_p<AudioGrapher::Interleaver<float>::Input>::dispose() boost::detail::sp_counted_base::release() boost::detail::shared_count::~shared_count() boost::shared_ptr<PBD::Controllable>::~shared_ptr() boost::shared_ptr<PBD::Connection>::~shared_ptr() ArdourWidgets::BindingProxy::~BindingProxy() ArdourWidgets::ArdourButton::~ArdourButton() VCAMasterStrip::~VCAMasterStrip() int idle_delete<VCAMasterStrip>(VCAMasterStrip*)
2017-07-28Delete CoreSelection at session closeRobin Gareus
2017-07-25Make start_touch() truly idempotentRobin Gareus
Also don't allow outsiders to call Controllable::set_touching()
2017-07-24Fix saving automation record undoRobin Gareus
Calling AutomationList::before() clears the state.
2017-07-24Remove unused "mark" parameter from stop_touch() APIRobin Gareus
2017-07-16Consistent Automation evaluation:Robin Gareus
Rule #89: The *owner* of each automation-control is responsible to evaluate automation of automated automation-controls (and emit Changed() signals to notify the GUI and slaved controls). This can happen during run(), when the Processor evaluates automation (eg. PluginInsert does that), but needs to regardless, every cycle. Emit Changed signal for GainControl This follow the same concept as PluginInsert: The Changed signal is called on demand when evaluating automation.
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-07-08Add API to expand/flatten AC groupsRobin Gareus
2017-06-21Centralize Parameter scalingRobin Gareus
This exposes an AutomationType dependent abstract version of inteface_to_internal(), internal_to_interface().
2017-06-21Remove Cruft -- AutomationStyle never did anything.Robin Gareus
Trim automation is planned via SlavableAC as normal AutomationMode. Some of this code have a revival (a special "Trim+Preview" state before merging Automation but that has to be more general than Pan & Gain.
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-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-09Prepare to eventually drop Automatable::value_as_string()Robin Gareus
Probably due to historical reasons, there are two APIs to format a control's value. In all both variants end up calling either ARDOUR::value_as_string() or the Controllable's formatting function (except for panners).
2017-05-05libardour now has CoreSelection object to manage selection status of ↵Paul Davis
Stripables and AutomationControls
2017-03-12Fix issue with automation-playback constantly marking a session dirty.Robin Gareus
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-08an automation control that has to do things before its value is set in an RT ↵Paul Davis
context should potentially tell its ControlGroup This fixes record-enable controls in a group failing generate a call to the required stuff for tracks (moving meter position, preparing diskstream) #7213
2016-10-17remove debug outputPaul Davis
2016-10-17fix thinko in d2835bc80 (re-enables mute, solo and likely other automation ↵Paul Davis
controls)
2016-10-16improved and hopefully correct fix for "setting AutomationControl marks ↵Paul Davis
session dirty even when it should not, if in playback mode" Hopefully comment is more explanatory as well.
2016-10-14remove debug outputPaul Davis
2016-10-14much simpler implementation of fix originally in c104c9d4726f3: don't call ↵Paul Davis
Session::set_dirty() or emit Changed() unless AutomationControl actually changes value
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-07-14enough with umpteen "i18n.h" files. Consolidate on pbd/i18n.hPaul Davis
2016-06-28tweak b7e645ec6, use session start/end positionRobin Gareus
2016-06-27switching to "touch" implies existing automation.Robin Gareus
This fixes an issue of Fader jumping to unity when switching from manual to touch if there is no prior automation. Likewise for plugin parameters jumping to "default"
2016-06-05extend comments to avoid unused-variable warnings from commented codePaul Davis
2016-06-05plugin support for Controllable::NotAutomatableRobin Gareus
2016-05-31remove debug outputPaul Davis
2016-05-31remove explicit setting of Toggle flag for AutomationControlsPaul Davis
Make it be based on the ParameterDescriptor, which indicates toggle status anyway
2016-05-31fix return type of SlavableAutomationControl::get_boolean_masters() to make ↵Paul Davis
it usefl
2016-05-31design changes to various SlavableAutomationControls to make it possible to ↵Paul Davis
get the logic right for boolean controls
2016-05-31do not route AutomationControl changes to an RT thread if we are loading a ↵Paul Davis
session
2016-05-31fix logic for removing an AutomationControl from a ControlGroupPaul Davis
2016-05-31universal change in the design of the way Route/Track controls are designed ↵Paul Davis
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-31add implicit mute state to MuteMaster and use when a master of a mute ↵Paul Davis
control is enabled/disabled. Add AutomationControl::master_changed() as a virtual method to handle ... master value changes
2016-05-31change API of Controllable::Changed signal to include (from_self, ↵Paul Davis
GroupControlDisposition) This allows the signal to convey more information, which may be required by some handlers of a control's Changed signal
2016-05-31rearrange AutomationControl and RouteAutomationControl to get more shared ↵Paul Davis
logic and consistent master/slave behaviour
2016-05-31redesign control slave/master system, move code from GainControl to ↵Paul Davis
AutomationControl
2016-02-28specialize isfinite for MSVC compatRobin Gareus
2016-02-26prevent livelock on NaN, inf control parameters - fixes #6789Robin Gareus
|: Gtk::Adjustment::value_changed AutomationControl::set_value Controllable::Changed GUI Event Loop Gtk::Adjustment::set_value :| TODO: check portability of `isfinite ()`
2016-01-02change Controllable::set_value() API to include grouped control consideration.Paul Davis
This also removes Route::group_gain_control() and associated machinery. Not yet tested with Mackie or other surfaces. More work to done to start using the group capabilities, and also potentially to add or derive more controls as RouteAutomationControls
2015-11-02Clean up _before XMLNode in AutomationList if no automation write occurred.nick_m
2015-10-21Add AutomationControl::set_value_unchecked() and ↵Paul Davis
AutomationControl::writable() and use them. Classes derived from AutomationControl now check ::writable() in their ::set_value() methods to ensure that they do not attempt to overwrite data sent to them while automation playback is underway.
2015-10-20Make automation record undo per pass rather than per touch.nick_m