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>
This commit is contained in:
41
Source/SampleEditorPanel.h
Normal file
41
Source/SampleEditorPanel.h
Normal file
@@ -0,0 +1,41 @@
|
||||
#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)
|
||||
};
|
||||
Reference in New Issue
Block a user