Add FX chain: per-pad filter, master compressor/EQ/distortion/reverb, VU meter
- Per-pad low-pass filter (cutoff + resonance) applied in DrumPad render - Master bus FX chain in PluginProcessor::applyMasterFx(): - Distortion (tanh waveshaper with drive/mix) - 3-band EQ (low shelf 200Hz, peak 1kHz, high shelf 5kHz) - Compressor (juce::dsp::Compressor with threshold/ratio) - Reverb (juce::dsp::Reverb with size/decay) - Master volume + pan with constant-power pan law - VU meter: RMS level measurement with exponential smoothing - All FX panel and master panel knobs now connected to audio processing - SampleEditorPanel cutoff/reso knobs linked to DrumPad filter params Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -64,6 +64,10 @@ public:
|
||||
float sustain = 1.0f;
|
||||
float release = 0.05f;
|
||||
|
||||
// Per-pad filter
|
||||
float filterCutoff = 20000.0f; // Hz
|
||||
float filterReso = 0.707f; // Q
|
||||
|
||||
// State
|
||||
bool isPlaying() const { return playing; }
|
||||
juce::String getLoadedFileName() const { return loadedFileName; }
|
||||
@@ -87,6 +91,10 @@ private:
|
||||
bool playing = false;
|
||||
float currentVelocity = 1.0f;
|
||||
|
||||
// Per-pad low-pass filter (stereo)
|
||||
juce::dsp::IIR::Filter<float> filterL, filterR;
|
||||
float lastCutoff = 20000.0f;
|
||||
|
||||
// ADSR state
|
||||
enum class EnvelopeStage { Idle, Attack, Decay, Sustain, Release };
|
||||
EnvelopeStage envStage = EnvelopeStage::Idle;
|
||||
|
||||
Reference in New Issue
Block a user