Stutter+Hold ("Stutter and hold") is a timbral tremolo, basically a freeze pedal and tremolo combined.
Under the hood it's built on a phase vocoder, but this is all really just an excuse to build up an overlap-add analysis synthesis class for JUCE.
- Freeze sets the plugin to on or off.
- Tempo Sync sets the stutter rate to sync with the DAW playback tempo.
- Refresh is a manual trigger to grab a new frame to freeze on (only useful when Stutter Rate is set to 0).
- Stutter Rate sets the freeze update rate (in Hz or beats).
- Envelope Depth determines how much the effect (the frozen part) follows the amplitude envelope of the wet signal. Fun stuff.
- Dry/Wet sets the mix of processed and unprocessed audio.
The plugin uses an overlap-add buffer class which was designed to be general purpose. To use it, fill the buffer sample-by-sample with the process
method. It will store the new value, and mutate the input sample into an output value. What a time to be alive.
Here's how it's working for now: inherit from the OlaBuffer
class, which takes care of all the overlap adding. You'll have to implement a processFrameBuffers
method, which is called every hopSize
samples (i.e., whenever an overlapping frame is filled up). The SimpleOlaProcessor
class does all the spectral processing here -- it inherits from OlaBuffer
and does all the spectral phasey goodness.
Certainly there is a better way to do this, but when in the vast and featureless landscape of C++, premature optimization is surely the root of all evil. Hope you enjoy.