From c1912b6d516b69db67757687de38a115b3b6ab69 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 13 Jun 2017 18:09:22 +0200 Subject: Write inverse master automation. * 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. --- libs/ardour/automation_control.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'libs/ardour/automation_control.cc') diff --git a/libs/ardour/automation_control.cc b/libs/ardour/automation_control.cc index 055c000bc9..e22379f75c 100644 --- a/libs/ardour/automation_control.cc +++ b/libs/ardour/automation_control.cc @@ -257,10 +257,14 @@ AutomationControl::start_touch(double when) } if (!touching()) { - if (alist()->automation_state() == Touch) { - /* subtle. aligns the user value with the playback */ - set_value (get_value (), Controllable::NoGroup); + /* subtle. aligns the user value with the playback and + * use take actual value (incl masters). + * + * Touch + hold writes inverse curve of master-automation + * using AutomationWatch::timer () + */ + AutomationControl::actually_set_value (get_value (), Controllable::NoGroup); alist()->start_touch (when); if (!_desc.toggled) { AutomationWatch::instance().add_automation_watch (shared_from_this()); -- cgit v1.2.3