v1.3: Auto makeup gain, spectrum analyzer, FIR normalization, README overhaul
- Auto makeup gain: RMS-based loudness compensation from actual FIR response - Real-time FFT spectrum analyzer behind EQ curves - FIR normalization fix: flat settings now produce exact 0 dB passthrough - Brickwall limiter (0 dB ceiling) with toggle - Drag-and-drop signal chain reordering - Low FIR tap count warning for 512/1024 - Double-click reset on all knobs - Comprehensive README with linear phase EQ explanation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -48,7 +48,10 @@ public:
|
||||
std::atomic<bool> bypassed { false };
|
||||
std::atomic<float> masterGainDb { 0.0f };
|
||||
std::atomic<bool> limiterEnabled { true };
|
||||
std::atomic<float> makeupGainDb { 0.0f }; // -24 to +24 dB
|
||||
std::atomic<bool> autoMakeupEnabled { true };
|
||||
|
||||
float getActiveAutoMakeupDb() const;
|
||||
float getMeasuredAutoMakeupDb() const { return measuredMakeupDb.load(); }
|
||||
|
||||
// Chain order (read/write from GUI, read from audio thread)
|
||||
std::array<ChainStage, numChainStages> getChainOrder() const;
|
||||
@@ -86,6 +89,11 @@ public:
|
||||
int currentBlockSize = 512;
|
||||
bool firLoaded = false;
|
||||
|
||||
// Signal-based auto makeup measurement
|
||||
double smoothedInputRms = 0.0;
|
||||
double smoothedOutputRms = 0.0;
|
||||
std::atomic<float> measuredMakeupDb { 0.0f };
|
||||
|
||||
std::array<ChainStage, numChainStages> chainOrder { MasterGain, Limiter, MakeupGain };
|
||||
juce::SpinLock chainLock;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user