sm-26/Source/PluginEditor.h
Armin bdd3b38cee Persist engine state in DAW projects, black monochrome panel, expand preset bank
- Save/load the engine's full parameter set alongside the preset index so
  knob and menu tweaks survive relaunching a song project
- Make the plugin panel black: top/surround laser border and bottom deck
  (rotary + nav keys) are now #000000
- Extend factory bank to 320 categorized presets and add LCD click-to-open
  preset category browser
2026-09-13 22:04:43 +02:00

65 lines
No EOL
1.7 KiB
C++

#pragma once
#include <JuceHeader.h>
#include "PluginProcessor.h"
#include "LcdDisplay.h"
#include "MenuSystem.h"
#include "Presets.h"
#include "SynthParams.h"
class SM26AudioProcessorEditor : public juce::AudioProcessorEditor,
private juce::Timer,
private juce::Slider::Listener
{
public:
SM26AudioProcessorEditor (SM26AudioProcessor&);
~SM26AudioProcessorEditor() override;
void paint (juce::Graphics&) override;
void resized() override;
void timerCallback() override;
private:
void sliderValueChanged (juce::Slider*) override;
void sliderDragStarted (juce::Slider*) override;
void sliderDragEnded (juce::Slider*) override;
void setupKnobs();
void setupNavButtons();
void buildRootMenu();
void updateLCD();
void cyclePreset (int delta);
void openPresetMenu();
SM26AudioProcessor& proc;
MenuSystem menu;
class NavButtonLookAndFeel : public juce::LookAndFeel_V4
{
public:
juce::Font getTextButtonFont (juce::TextButton&, int) override;
} navLookAndFeel;
LcdDisplay lcd;
bool knobDragging[4] = {};
juce::Slider knobSliders[4];
juce::Label knobLabels[4];
juce::Label knobValueLabels[4];
juce::TextButton navUp { "UP" };
juce::TextButton navDown { "DN" };
juce::TextButton navLeft { "LT" };
juce::TextButton navRight { "RT" };
juce::TextButton navEnter { "OK" };
juce::TextButton navEsc { "ESC" };
juce::Label footer;
bool menuWasOpen = false;
static juce::String buildGitFooter();
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SM26AudioProcessorEditor)
};