Optimize audio level loop code

Signed-off-by: falkTX <falktx@falktx.com>
This commit is contained in:
falkTX
2023-08-16 18:39:50 +02:00
parent fbf05b4472
commit 6f1a423b5a
+13 -7
View File
@@ -226,26 +226,30 @@ namespace NAM {
} }
} }
float level;
// convert input level from db // convert input level from db
float desiredInputLevel = powf(10, *(ports.input_level) * 0.05f); float desiredInputLevel = powf(10, *(ports.input_level) * 0.05f);
if (fabs(desiredInputLevel - inputLevel) > SMOOTH_EPSILON) if (fabs(desiredInputLevel - inputLevel) > SMOOTH_EPSILON)
{ {
level = inputLevel;
for (unsigned int i = 0; i < n_samples; i++) for (unsigned int i = 0; i < n_samples; i++)
{ {
// do very basic smoothing // 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 else
{ {
inputLevel = desiredInputLevel; level = inputLevel = desiredInputLevel;
for (unsigned int i = 0; i < n_samples; i++) 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) if (fabs(desiredOutputLevel - outputLevel) > SMOOTH_EPSILON)
{ {
level = outputLevel;
for (unsigned int i = 0; i < n_samples; i++) for (unsigned int i = 0; i < n_samples; i++)
{ {
// do very basic smoothing // do very basic smoothing
outputLevel = (.99f * outputLevel) + (.01f * desiredOutputLevel); level = (.99f * level) + (.01f * desiredOutputLevel);
ports.audio_out[i] = outputPtrs[0][i] * outputLevel; ports.audio_out[i] = outputPtrs[0][i] * outputLevel;
} }
outputLevel = level;
} }
else else
{ {
outputLevel = desiredOutputLevel; level = outputLevel = desiredOutputLevel;
for (unsigned int i = 0; i < n_samples; i++) 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;
} }
} }
} }