summaryrefslogtreecommitdiff
path: root/libs/ardour/send.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-09-28 16:06:57 +0200
committerRobin Gareus <robin@gareus.org>2017-09-29 05:03:48 +0200
commitddd4e3cf1d9e253f638719ca0664a0598383e857 (patch)
treede52e7ee2208218d610c4cc10167844128adceed /libs/ardour/send.cc
parentf974cd5401f8e042f7c221261c5ce18b9adb8859 (diff)
Aux-Send Latency compensation, part 1: latent sources
Diffstat (limited to 'libs/ardour/send.cc')
-rw-r--r--libs/ardour/send.cc23
1 files changed, 15 insertions, 8 deletions
diff --git a/libs/ardour/send.cc b/libs/ardour/send.cc
index 28f4286f70..ae442d5715 100644
--- a/libs/ardour/send.cc
+++ b/libs/ardour/send.cc
@@ -131,7 +131,14 @@ Send::deactivate ()
}
void
-Send::set_delay_in(samplecnt_t delay)
+Send::set_output_latency (samplecnt_t cnt)
+{
+ Processor::set_output_latency (cnt);
+ set_delay_in (cnt);
+}
+
+void
+Send::set_delay_in (samplecnt_t delay)
{
if (!_delayline) return;
if (_delay_in == delay) {
@@ -140,13 +147,13 @@ Send::set_delay_in(samplecnt_t delay)
_delay_in = delay;
DEBUG_TRACE (DEBUG::LatencyCompensation,
- string_compose ("Send::set_delay_in(%1) + %2 = %3\n",
- delay, _delay_out, _delay_out + _delay_in));
- _delayline.get()->set_delay(_delay_out + _delay_in);
+ string_compose ("Send::set_delay_in %1: (%2) - %3 = %4\n",
+ name (), _delay_in, _delay_out, _delay_in - _delay_out));
+ _delayline->set_delay(_delay_in - _delay_out);
}
void
-Send::set_delay_out(samplecnt_t delay)
+Send::set_delay_out (samplecnt_t delay)
{
if (!_delayline) return;
if (_delay_out == delay) {
@@ -154,9 +161,9 @@ Send::set_delay_out(samplecnt_t delay)
}
_delay_out = delay;
DEBUG_TRACE (DEBUG::LatencyCompensation,
- string_compose ("Send::set_delay_out(%1) + %2 = %3\n",
- delay, _delay_in, _delay_out + _delay_in));
- _delayline.get()->set_delay(_delay_out + _delay_in);
+ string_compose ("Send::set_delay_out %1: %2 - (%3) = %4\n",
+ name (), _delay_in, _delay_out, _delay_in - _delay_out));
+ _delayline->set_delay(_delay_in - _delay_out);
}
void