From 6f1a423b5af964a2d91113373c6683caf0a9fba8 Mon Sep 17 00:00:00 2001 From: falkTX Date: Wed, 16 Aug 2023 18:39:50 +0200 Subject: [PATCH] Optimize audio level loop code Signed-off-by: falkTX --- src/nam_plugin.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/nam_plugin.cpp b/src/nam_plugin.cpp index b9274b3..5ab5da1 100644 --- a/src/nam_plugin.cpp +++ b/src/nam_plugin.cpp @@ -226,26 +226,30 @@ namespace NAM { } } + float level; + // convert input level from db float desiredInputLevel = powf(10, *(ports.input_level) * 0.05f); if (fabs(desiredInputLevel - inputLevel) > SMOOTH_EPSILON) { + level = inputLevel; for (unsigned int i = 0; i < n_samples; i++) { // do very basic smoothing - inputLevel = (.99f * inputLevel) + (.01f * desiredInputLevel); + level = (.99f * level) + (.01f * desiredInputLevel); - ports.audio_out[i] = ports.audio_in[i] * inputLevel; + ports.audio_out[i] = ports.audio_in[i] * level; } + inputLevel = level; } else { - inputLevel = desiredInputLevel; + level = inputLevel = desiredInputLevel; for (unsigned int i = 0; i < n_samples; i++) { - ports.audio_out[i] = ports.audio_in[i] * inputLevel; + ports.audio_out[i] = ports.audio_in[i] * level; } } @@ -265,21 +269,23 @@ namespace NAM { if (fabs(desiredOutputLevel - outputLevel) > SMOOTH_EPSILON) { + level = outputLevel; for (unsigned int i = 0; i < n_samples; i++) { // do very basic smoothing - outputLevel = (.99f * outputLevel) + (.01f * desiredOutputLevel); + level = (.99f * level) + (.01f * desiredOutputLevel); ports.audio_out[i] = outputPtrs[0][i] * outputLevel; } + outputLevel = level; } else { - outputLevel = desiredOutputLevel; + level = outputLevel = desiredOutputLevel; for (unsigned int i = 0; i < n_samples; i++) { - ports.audio_out[i] = outputPtrs[0][i] * outputLevel; + ports.audio_out[i] = outputPtrs[0][i] * level; } } }