Files
InstaDrums/Source/SampleEditorPanel.h
hariel1985 4cc22e0bf0 Initial commit: InstaDrums VST3 drum sampler plugin
- 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>
2026-03-22 10:59:31 +01:00

42 sor
1.2 KiB
C++

#pragma once
#include <JuceHeader.h>
#include "DrumPad.h"
#include "WaveformDisplay.h"
class SampleEditorPanel : public juce::Component,
public juce::Slider::Listener
{
public:
SampleEditorPanel();
void setPad (DrumPad* pad);
DrumPad* getCurrentPad() const { return currentPad; }
void paint (juce::Graphics& g) override;
void resized() override;
void sliderValueChanged (juce::Slider* slider) override;
void updateFromPad();
private:
DrumPad* currentPad = nullptr;
WaveformDisplay waveform;
// ADSR knobs
juce::Slider attackSlider, decaySlider, sustainSlider, releaseSlider;
juce::Label attackLabel, decayLabel, sustainLabel, releaseLabel;
// Sample controls
juce::Slider pitchSlider, panSlider, cutoffSlider, resoSlider;
juce::Label pitchLabel, panLabel, cutoffLabel, resoLabel;
juce::Label titleLabel { {}, "Sample Editor" };
juce::Label padNameLabel { {}, "" };
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 (SampleEditorPanel)
};