Gripverb

Implementation of a Schroeder Reverb (4 all-pass filters into 8 comb filters) in JUCE.

The tunings of the filters are taken from the Freeverb implementation by Jezar at Dreampoint, with slight changes as per my prototyping in PureData. Theme inspired from Hotline Miami 2.

< Code >

There are multiple techniques to create a reverb - we’ll use the classic Schroeder algorithm using parallel comb filters and cascading all-pass filters.

The comb filters produce a long series of echoes and the all-pass filters multiply the echoes, overlaying their own decaying impulse response on top of each comb echo.

Description

We’ll use 8 low passed feedback comb filters in parallel that feed into a series of all pass filters.

The “All Pass” Filter is a cascaded Feedback Comb Filter with a Feedforward Comb Filter, also called the Schroeder All Pass Comb Filter.

Schroeder-Moorer Lowpass Feedback Comb Filer

All Pass Filter (Single, which is then cascaded into the next all pass filter)

The Low pass Comb Filter by Schroeder and Moorer

When d = 0, the LBCF reduces to the feedback comb filter (FBCF) in which the feedback was not filtered.

-------------------------------------------------------------------------------------------------------------

Pure Data Prototype

I wanted to model the Schroeder reverb in PureData, and mess around with the parameters to see what sounds good. After putting in the tunings for the Feedback + Feedforward comb filters (delay times and FF+FB coefficients) from Jezar's version, I changed them up a bit and experimented with the feedback values to get a more "lush" sounding verb which I can use in my JUCE plugin. After going through the all-pass filters, I pass the signal to the high-pass filters to avoid excessive hissing. To visualize the audio, I use the array object to project the waveforms on the L and R channels of the reverbed output.

If unavailable, please refresh the page