A JUCE audio plugin to showcase the behaviour of the lifter model in my module: punk_dsp
This is a VST3/AU compressor plugin made with JUCE. The sole purpose of this plugin is to showcase and test the performance of my Lifter class in punk_dsp.
The Lifter class uses the following logic for applying dynamic processing:
- Identify sidechain - feed-back or feed-forward topology determine how this is done.
- Measure sidechain.
- Compute gain addition.
- Apply gain addition.
All classes have methods for updating the following parameters:
- Ratio.
- Threshold (in decibels).
- Knee (in decibels).
- Attack and release times (in miliseconds).
- Make-up gain (in decibels).
- Mix (in percentage).
- Feed-back / feed-forward topology.
Furthermore, there is a getGainAddition method meant to be used in the GUI for displaying the current gain addition.
// --- PluginProcessor.h ---
#include "punk_dsp/punk_dsp.h"
class PluginProcessor : public juce::AudioProcessor
{
public:
/* Your processor public stuff
* ...
*/
private:
/* Your processor private stuff
* ...
*/
punk_dsp::Lifter lifter;
};
// --- PluginProcessor.cpp ---
void PluginProcessor::prepareToPlay(double sampleRate, int samplesPerBlock)
{
juce::dsp::ProcessSpec spec;
spec.maximumBlockSize = samplesPerBlock;
spec.numChannels = getTotalNumOutputChannels();
spec.sampleRate = sampleRate;
lifter.prepare( spec );
// Your code...
}
void PluginProcessor::updateParameters()
{
// Examples
lifter.updateThres(-30.f);
lifter.updateRatio(6.f);
lifter.updateMix(90.f);
// Your code...
}
void PunkOTTProcessor::processBlock (juce::AudioBuffer<float>& buffer)
{
lifter.process(buffer);
}- PunkOTT and PunkOTT-MB, my take on OTT-style processors.
