diff options
| author | Dominik Kaiser | 2026-03-20 13:38:04 +0100 |
|---|---|---|
| committer | GitHub | 2026-03-20 13:38:04 +0100 |
| commit | 07c679a2246636e5dc26d856d133bedb2c0415f5 (patch) | |
| tree | f04620a6ebb7eac99240ae605802aadd24e4c4a4 /README.md | |
| parent | 2517ba4814f4eed76d9dac76918e0054aac425e2 (diff) | |
| download | SchroederReverb-main.tar.gz SchroederReverb-main.zip | |
Diffstat (limited to 'README.md')
| -rw-r--r-- | README.md | 24 |
1 files changed, 19 insertions, 5 deletions
@@ -2,16 +2,30 @@ 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 of course my first thought was: "How can I make this myself?" - -Reverb seemed simple enough to understand, so I implemented this Schroeder reverberator. -This is my first real C++ project and I was also able to learn the basics of CMake and the JUCE framework along the way. +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. -I added UI knobs in order to change Dry/Wet mix, Pre-Delay and Decay easily. +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) |
