why I wanted a shimmer control
I like shimmer reverbs, but I usually like them at the point just before they take over the whole sound. I wanted that version in oooo: something that could brighten a loop a little, but could still be turned up into the enormous cloudy thing when that was actually useful. In 1.5.0 I added Shimmer as a continuous control inside the global reverb.
The effect uses all-pass and delay stages, two slowly moving delay reads, crossfaded taps, a low-pass filter, and DC blocking. The delay lengths and modulation rates are recalculated for the host sample rate. This is important because the exact same preset should work at 44.1 kHz and 96 kHz, and because a broken delay line is a fairly efficient way to make a computer produce a very bad noise.
getting one knob all the way through the program
Adding the sound was only part of this change. The commit touched 32 files because Shimmer also had to exist in the engine API, the effects bus, the JUCE controls, the parameter labels, plugin state, session archives, and the embedded Lua runtime. I have learned that a knob which comes back as zero when a project is reopened is not really a knob yet.
I added tests for zero shimmer, non-zero shimmer, block processing, reset behavior, engine control, and samples that stay finite and inside reasonable bounds. The last one is not very exciting to look at, but it lets me turn the control past 100% without wondering whether the reverb will eventually invent infinity.