# SchroederReverb A lightweight cross-platform VST3 reverb plugin written in C++ with the JUCE framework ## My motivation I'm rather new to digital audio, but as a tinkerer, my first thought when working with audio plugins was: "How can I make this myself?" After some research I decided that Reverb seemed easy enough to replicate. This way I was able to learn digital signal processing, get to know the JUCE framework and the CMake build system and improve my ability to write code in C++ by implementing a real-world application. ## Implementation The Schroeder reverberator works by first feeding the signal into four parallel comb filters. After that the result is sent through two all-pass filters in a row. Comb filters function by mixing a signal with a delayed version of itself. The implementation is based on the formula: $FBCF_N^g = \frac{1}{1-g\,z^{-N}}$ The all-pass filter keeps all frequencies at the same amplitude, but changes the phase relationship between different frequencies. I implemented it based on this formula: $AP_N^g = \frac{-g + z^{-N}}{1 - g z^{-N}}$ I also added UI knobs in order to change Dry/Wet mix, Pre-Delay and Decay easily. The Decay was implemented by adjusting the gain used in the all-pass filters accordingly. ## Dependencies - [CMake](https://cmake.org) - pkg-config - [JUCE dependencies](https://github.com/juce-framework/JUCE/blob/cbe7eb9c5211784e903cfd62fef18531e6a88579/docs/Linux%20Dependencies.md) (on linux) ## How to build this ```bash git clone --recurse-submodules https://github.com/dkaisr/SchroederReverb.git cd SchroederReverb cmake -S . -B build cmake --build build ```