diff --git a/modules/juce_dsp/frequency/juce_Convolution.cpp b/modules/juce_dsp/frequency/juce_Convolution.cpp index 6fb58f1196..706813e754 100644 --- a/modules/juce_dsp/frequency/juce_Convolution.cpp +++ b/modules/juce_dsp/frequency/juce_Convolution.cpp @@ -781,6 +781,8 @@ private: if (wantsNormalise == Convolution::Normalise::yes) normaliseImpulseResponse (resampled); + else + resampled.applyGain ((float) (originalSampleRate / processSpec.sampleRate)); const auto currentLatency = jmax (processSpec.maximumBlockSize, (uint32) latency.latencyInSamples); const auto maxBufferSize = shouldBeZeroLatency ? static_cast (processSpec.maximumBlockSize) diff --git a/modules/juce_dsp/frequency/juce_Convolution_test.cpp b/modules/juce_dsp/frequency/juce_Convolution_test.cpp index af93b73702..0cbd97d0d7 100644 --- a/modules/juce_dsp/frequency/juce_Convolution_test.cpp +++ b/modules/juce_dsp/frequency/juce_Convolution_test.cpp @@ -514,6 +514,9 @@ public: AudioBuffer result (original.getNumChannels(), finalSize); resamplingSource.getNextAudioBlock ({ &result, 0, result.getNumSamples() }); + + result.applyGain ((float) resampleRatio); + return result; }(); @@ -550,10 +553,10 @@ public: const auto ramp = makeRamp (static_cast (spec.maximumBlockSize) * 8); using BlockSize = decltype (spec.maximumBlockSize); - for (auto latency : { /*static_cast (0), + for (auto latency : { static_cast (0), spec.maximumBlockSize / 3, spec.maximumBlockSize, - spec.maximumBlockSize * 2, */ + spec.maximumBlockSize * 2, static_cast (spec.maximumBlockSize * 2.5) }) { testConvolution (spec,