Files
InstaDrums/Source/WaveformDisplay.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

27 sor
954 B
C++

#pragma once
#include <JuceHeader.h>
class WaveformDisplay : public juce::Component
{
public:
WaveformDisplay();
void setBuffer (const juce::AudioBuffer<float>* buffer, double sampleRate = 44100.0);
void setColour (juce::Colour c) { waveColour = c; repaint(); }
void setStartEnd (float start, float end) { startPos = start; endPos = end; repaint(); }
void setADSR (float a, float d, float s, float r) { adsrA = a; adsrD = d; adsrS = s; adsrR = r; repaint(); }
void setShowADSR (bool show) { showADSR = show; repaint(); }
void paint (juce::Graphics& g) override;
private:
const juce::AudioBuffer<float>* audioBuffer = nullptr;
double bufferSampleRate = 44100.0;
juce::Colour waveColour { 0xffff8844 };
float startPos = 0.0f, endPos = 1.0f;
float adsrA = 0.001f, adsrD = 0.1f, adsrS = 1.0f, adsrR = 0.05f;
bool showADSR = false;
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (WaveformDisplay)
};