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:
hariel1985
2026-03-25 22:28:31 +01:00
szülő 9c5b5a3957
commit aa546c7357
9 fájl változott, egészen pontosan 229 új sor hozzáadva és 73 régi sor törölve

Fájl megtekintése

@@ -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;