- 12-pad drum sampler with 4x3 grid (expandable by 4) - Velocity layers with round-robin (Salamander-style filename parsing) - Rhythm Engine-style GUI: pad grid (left), sample editor (right top), FX panel (right bottom), master panel (bottom) - Waveform thumbnails on pads + large waveform in sample editor - ADSR envelope, pitch, pan per pad - Drag & drop sample/folder loading - Kit save/load (.drumkit XML presets) - Load Folder with smart name matching (kick, snare, hihat, etc.) - Choke groups, one-shot/polyphonic mode - Dark modern LookAndFeel with neon accent colors - Built with JUCE framework, CMake, MSVC 2022 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
46 sor
1.7 KiB
C++
46 sor
1.7 KiB
C++
#pragma once
|
|
#include <JuceHeader.h>
|
|
|
|
class FxPanel : public juce::Component
|
|
{
|
|
public:
|
|
FxPanel();
|
|
|
|
void paint (juce::Graphics& g) override;
|
|
void resized() override;
|
|
|
|
// FX parameter getters (for processor to read)
|
|
float getCompThreshold() const { return (float) compThreshSlider.getValue(); }
|
|
float getCompRatio() const { return (float) compRatioSlider.getValue(); }
|
|
float getEqLo() const { return (float) eqLoSlider.getValue(); }
|
|
float getEqMid() const { return (float) eqMidSlider.getValue(); }
|
|
float getEqHi() const { return (float) eqHiSlider.getValue(); }
|
|
float getDistDrive() const { return (float) distDriveSlider.getValue(); }
|
|
float getDistMix() const { return (float) distMixSlider.getValue(); }
|
|
float getReverbSize() const { return (float) reverbSizeSlider.getValue(); }
|
|
float getReverbDecay() const { return (float) reverbDecaySlider.getValue(); }
|
|
|
|
private:
|
|
// Compressor
|
|
juce::Slider compThreshSlider, compRatioSlider;
|
|
juce::Label compThreshLabel, compRatioLabel, compTitle;
|
|
|
|
// EQ
|
|
juce::Slider eqLoSlider, eqMidSlider, eqHiSlider;
|
|
juce::Label eqLoLabel, eqMidLabel, eqHiLabel, eqTitle;
|
|
|
|
// Distortion
|
|
juce::Slider distDriveSlider, distMixSlider;
|
|
juce::Label distDriveLabel, distMixLabel, distTitle;
|
|
|
|
// Reverb
|
|
juce::Slider reverbSizeSlider, reverbDecaySlider;
|
|
juce::Label reverbSizeLabel, reverbDecayLabel, reverbTitle;
|
|
|
|
void setupKnob (juce::Slider& s, juce::Label& l, const juce::String& name,
|
|
double min, double max, double val, double step = 0.01);
|
|
void setupTitle (juce::Label& l, const juce::String& text);
|
|
|
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (FxPanel)
|
|
};
|