Files
InstaDrums/Source/MasterPanel.h
hariel1985 a0e83fa0a4 Per-pad FX chain, animated toggles, GR meter, simplified master panel
- FX moved from master bus to per-pad processing:
  each pad has its own Filter, Distortion, EQ, Compressor, Reverb
  via DrumPad::applyPadFx() with temp buffer rendering
- FxPanel now edits the selected pad's FX parameters
- Animated toggle switches with smooth lerp transition and glow
- Per-pad compressor GR meter connected to FxPanel display
- Master panel simplified: Volume/Tune/Pan + Limiter toggle + VU meter
- Master bus chain: Vol/Pan → Output Limiter (0dB brickwall) → VU
- Pointer glow reduced to half intensity (4 layers, narrower spread)
- Smooth 8-layer arc glow with exponential opacity falloff

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 06:42:47 +01:00

35 sor
1.0 KiB
C++

#pragma once
#include <JuceHeader.h>
#include "VuMeter.h"
class MasterPanel : public juce::Component
{
public:
MasterPanel();
void paint (juce::Graphics& g) override;
void resized() override;
float getMasterVolume() const { return (float) volumeSlider.getValue(); }
float getMasterTune() const { return (float) tuneSlider.getValue(); }
float getMasterPan() const { return (float) panSlider.getValue(); }
bool isLimiterEnabled() const { return limiterToggle.getToggleState(); }
VuMeter& getVuMeter() { return vuMeter; }
private:
juce::Slider volumeSlider, tuneSlider, panSlider;
juce::Label volumeLabel, tuneLabel, panLabel;
juce::Label masterTitle { {}, "MASTER" };
juce::ToggleButton limiterToggle;
juce::Label limiterLabel { {}, "LIMITER" };
VuMeter vuMeter;
void setupKnob (juce::Slider& s, juce::Label& l, const juce::String& name,
double min, double max, double val, double step = 0.01);
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (MasterPanel)
};