Hello Jules !
There is a typo in your reverb algoritm. The processMono function should be written like this :
void processMono (float* const samples, const int numSamples) noexcept { jassert (samples != nullptr); if (shouldUpdateDamping) updateDamping(); for (int i = 0; i < numSamples; ++i) { const float input = samples[i] * gain; float output = 0; for (int j = 0; j < numCombs; ++j) // accumulate the comb filters in parallel output += comb[0][j].process (input); for (int j = 0; j < numAllPasses; ++j) // run the allpass filters in series output = allPass[0][j].process (output); // better ! samples[i] = output * wet1 + samples[i] * dry * 0.5f; // wrong, because of the gain, and the dryScalefactor //samples[i] = output * wet1 + in * dry; } }