From 7138e76d2d86881c5d6b92b63e61802e112b3b97 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 12 May 2020 10:06:36 -0600 Subject: new mechanism to refill pre-loop buffer when loop changes (used for xfading loop ends) --- libs/ardour/ardour/disk_reader.h | 3 +++ libs/ardour/disk_reader.cc | 5 +++++ 2 files changed, 8 insertions(+) (limited to 'libs/ardour') diff --git a/libs/ardour/ardour/disk_reader.h b/libs/ardour/ardour/disk_reader.h index 9351ebcfd2..ec84713e6b 100644 --- a/libs/ardour/ardour/disk_reader.h +++ b/libs/ardour/ardour/disk_reader.h @@ -247,6 +247,9 @@ private: bool overwrite_existing_audio (); bool overwrite_existing_midi (); + + samplepos_t last_refill_loop_start; + void setup_preloop_buffer (); }; } // namespace ARDOUR diff --git a/libs/ardour/disk_reader.cc b/libs/ardour/disk_reader.cc index 69b7a7dad3..29e53df87a 100644 --- a/libs/ardour/disk_reader.cc +++ b/libs/ardour/disk_reader.cc @@ -64,6 +64,7 @@ DiskReader::DiskReader (Session& s, string const& str, DiskIOProcessor::Flag f) , _declick_amp (s.nominal_sample_rate ()) , _declick_offs (0) , _declick_enabled (false) + , last_refill_loop_start (0) { file_sample[DataType::AUDIO] = 0; file_sample[DataType::MIDI] = 0; @@ -1044,6 +1045,10 @@ DiskReader::audio_read (Sample* sum_buffer, loop_declick_out.run (sum_buffer, start, start + this_read); break; case XFadeLoop: + if (last_refill_loop_start != loc->start()) { + setup_preloop_buffer (); + last_refill_loop_start = loc->start(); + } maybe_xfade_loop (sum_buffer, start, start + this_read, rci); break; } -- cgit v1.2.3