Merge pull request #47 from moddevices/optimize-audio-level-loop

Optimize audio level loop code
This commit is contained in:
Mike Oliphant
2023-08-16 12:13:29 -07:00
committed by GitHub
+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;
} }
} }
} }