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:
58
Source/PluginEditor.h
Normal file
58
Source/PluginEditor.h
Normal file
@@ -0,0 +1,58 @@
|
||||
#pragma once
|
||||
#include <JuceHeader.h>
|
||||
#include "PluginProcessor.h"
|
||||
#include "PadComponent.h"
|
||||
#include "SampleEditorPanel.h"
|
||||
#include "FxPanel.h"
|
||||
#include "MasterPanel.h"
|
||||
#include "LookAndFeel.h"
|
||||
|
||||
class InstaDrumsEditor : public juce::AudioProcessorEditor,
|
||||
private juce::Timer
|
||||
{
|
||||
public:
|
||||
explicit InstaDrumsEditor (InstaDrumsProcessor&);
|
||||
~InstaDrumsEditor() override;
|
||||
|
||||
void paint (juce::Graphics&) override;
|
||||
void resized() override;
|
||||
|
||||
private:
|
||||
InstaDrumsProcessor& processor;
|
||||
InstaDrumsLookAndFeel customLookAndFeel;
|
||||
|
||||
// Pad grid (left side)
|
||||
juce::OwnedArray<PadComponent> padComponents;
|
||||
static constexpr int padColumns = 4;
|
||||
|
||||
// Right side panels
|
||||
SampleEditorPanel sampleEditor;
|
||||
FxPanel fxPanel;
|
||||
|
||||
// Bottom
|
||||
MasterPanel masterPanel;
|
||||
|
||||
// Top bar buttons
|
||||
juce::TextButton loadSampleButton { "LOAD SAMPLE" };
|
||||
juce::TextButton saveKitButton { "SAVE KIT" };
|
||||
juce::TextButton loadKitButton { "LOAD KIT" };
|
||||
juce::TextButton loadFolderButton { "LOAD FOLDER" };
|
||||
|
||||
juce::Label titleLabel { {}, "INSTADRUMS" };
|
||||
juce::Label versionLabel { {}, "v1.0" };
|
||||
juce::Label padsLabel { {}, "DRUM SAMPLER" };
|
||||
|
||||
// State
|
||||
int selectedPadIndex = 0;
|
||||
|
||||
void rebuildPadGrid();
|
||||
void selectPad (int index);
|
||||
void timerCallback() override;
|
||||
|
||||
std::unique_ptr<juce::FileChooser> fileChooser;
|
||||
|
||||
// Resizable
|
||||
juce::ComponentBoundsConstrainer constrainer;
|
||||
|
||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (InstaDrumsEditor)
|
||||
};
|
||||
Reference in New Issue
Block a user