From 8012532c515c6124ea112b2cf1c2e22e35d9d62f Mon Sep 17 00:00:00 2001 From: Jean Pierre Cimalando Date: Thu, 26 Mar 2020 22:15:38 +0100 Subject: [PATCH] Eliminate EG recording latency (because of connection loop) --- devtools/CaptureEG.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/devtools/CaptureEG.cpp b/devtools/CaptureEG.cpp index 05ca680f..558b0d14 100644 --- a/devtools/CaptureEG.cpp +++ b/devtools/CaptureEG.cpp @@ -244,10 +244,11 @@ void Application::saveSoundFile(const QString& path, int format) size_t size = _captureFill; double sampleRate = jack_get_sample_rate(_client.get()); double scaleFactor = 1.0 / _ui->internalGainVal->value(); + size_t captureLatency = jack_get_buffer_size(_client.get()); SndfileHandle snd(path.toUtf8().data(), SFM_WRITE, format|SF_FORMAT_PCM_16, 1, sampleRate); - for (size_t i = 0; i < size; ++i) { + for (size_t i = captureLatency; i < size; ++i) { float sample = scaleFactor * data[i]; sample = std::max(-1.0f, std::min(+1.0f, sample)); snd.write(&sample, 1); @@ -269,9 +270,11 @@ void Application::savePlotData(const QString& path) size_t size = _captureFill; double sampleRate = jack_get_sample_rate(_client.get()); double scaleFactor = 1.0 / _ui->internalGainVal->value(); + size_t captureLatency = jack_get_buffer_size(_client.get()); - for (size_t i = 0; i < size; ++i) - stream << (i / sampleRate) << ' ' << (scaleFactor * data[i]) << '\n'; + for (size_t i = captureLatency; i < size; ++i) + stream << ((i - captureLatency) / sampleRate) + << ' ' << (scaleFactor * data[i]) << '\n'; } void Application::performSfzUpdate()