summaryrefslogtreecommitdiff
path: root/libs/ardour/amp.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-09-19 04:54:42 +0200
committerRobin Gareus <robin@gareus.org>2017-09-19 04:54:42 +0200
commit29e553ab86ecb8112914b773b60cdbdcb855a750 (patch)
treef0eadb90468582f66c113617c7cd265f5a3ed62c /libs/ardour/amp.cc
parent1ec471c961c328ca4c585d35f9e567135f301d2d (diff)
Amend c8a9b28d3 and 40aebce. Fix gain automation edge-cases:
* drop Trim/Fader automation for bypassed processor * Trim/Fader automation for Busses is always active when rolling
Diffstat (limited to 'libs/ardour/amp.cc')
-rw-r--r--libs/ardour/amp.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/libs/ardour/amp.cc b/libs/ardour/amp.cc
index 5533e4e045..94d3f4617d 100644
--- a/libs/ardour/amp.cc
+++ b/libs/ardour/amp.cc
@@ -78,6 +78,8 @@ void
Amp::run (BufferSet& bufs, samplepos_t /*start_sample*/, samplepos_t /*end_sample*/, double /*speed*/, pframes_t nframes, bool)
{
if (!_active && !_pending_active) {
+ /* disregard potentially prepared gain-automation. */
+ _apply_gain_automation = false;
return;
}
@@ -121,7 +123,7 @@ Amp::run (BufferSet& bufs, samplepos_t /*start_sample*/, samplepos_t /*end_sampl
}
/* used it, don't do it again until setup_gain_automation() is
- called successfully.
+ * called successfully.
*/
_apply_gain_automation = false;
@@ -389,6 +391,9 @@ Amp::set_state (const XMLNode& node, int version)
/** Write gain automation for this cycle into the buffer previously passed in to
* set_gain_automation_buffer (if we are in automation playback mode and the
* transport is rolling).
+ *
+ * After calling this, the gain-automation buffer is valid for the next run.
+ * so make sure to call ::run() which invalidates the buffer again.
*/
void
Amp::setup_gain_automation (samplepos_t start_sample, samplepos_t end_sample, samplecnt_t nframes)