diff options
author | Robin Gareus <robin@gareus.org> | 2017-06-13 18:09:22 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-06-13 18:09:59 +0200 |
commit | c1912b6d516b69db67757687de38a115b3b6ab69 (patch) | |
tree | cf1e91a94e56d6973a4acffe2c930bf8db60ab64 /libs/ardour/automation_control.cc | |
parent | b34d891b23e0268f50e171a2149f425987598902 (diff) |
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.
Diffstat (limited to 'libs/ardour/automation_control.cc')
-rw-r--r-- | libs/ardour/automation_control.cc | 10 |
1 files changed, 7 insertions, 3 deletions
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()); |