From f9af69ca81965cf1ff08b1714a2c794fd04de4e4 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Mon, 21 Sep 2020 04:15:52 +1000 Subject: [PATCH] mathbase: use sample indices and copy rather than zeroing out --- app/node/math/math/mathbase.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/node/math/math/mathbase.cpp b/app/node/math/math/mathbase.cpp index 4a793af93..731a750da 100644 --- a/app/node/math/math/mathbase.cpp +++ b/app/node/math/math/mathbase.cpp @@ -248,8 +248,8 @@ NodeValueTable MathNodeBase::ValueInternal(NodeValueDatabase &value, Operation o SampleBufferPtr mixed_samples = SampleBuffer::CreateAllocated(samples_a->audio_params(), max_samples); - // Mix samples that are in both buffers for (int i=0;iaudio_params().channel_count();i++) { + // Mix samples that are in both buffers for (int j=0;jdata()[i][j] = PerformAll(operation, samples_a->data()[i][j], samples_b->data()[i][j]); } @@ -259,9 +259,11 @@ NodeValueTable MathNodeBase::ValueInternal(NodeValueDatabase &value, Operation o // Fill in remainder space with 0s int remainder = max_samples - min_samples; + SampleBufferPtr larger_buffer = (max_samples == samples_a->sample_count()) ? samples_a : samples_b; + for (int i=0;iaudio_params().channel_count();i++) { - memset(mixed_samples->data()[i] + min_samples * sizeof(float), - 0, + memcpy(&mixed_samples->data()[i][min_samples], + &larger_buffer->data()[i][min_samples], remainder * sizeof(float)); } }