2026-09-11 16:38:28 +02:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include <JuceHeader.h>
|
|
|
|
|
#include "PluginProcessor.h"
|
|
|
|
|
#include "LcdDisplay.h"
|
|
|
|
|
#include "MenuSystem.h"
|
2026-10-09 17:58:07 +02:00
|
|
|
#include "JoystickPad.h"
|
2026-09-11 16:38:28 +02:00
|
|
|
#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;
|
2026-09-12 21:53:16 +02:00
|
|
|
void sliderDragStarted (juce::Slider*) override;
|
|
|
|
|
void sliderDragEnded (juce::Slider*) override;
|
2026-09-11 16:38:28 +02:00
|
|
|
|
|
|
|
|
void setupKnobs();
|
|
|
|
|
void setupNavButtons();
|
|
|
|
|
void buildRootMenu();
|
|
|
|
|
void updateLCD();
|
2026-09-12 21:53:16 +02:00
|
|
|
void cyclePreset (int delta);
|
2026-09-13 22:04:43 +02:00
|
|
|
void openPresetMenu();
|
2026-09-11 16:38:28 +02:00
|
|
|
|
|
|
|
|
SM26AudioProcessor& proc;
|
|
|
|
|
MenuSystem menu;
|
|
|
|
|
|
|
|
|
|
LcdDisplay lcd;
|
|
|
|
|
|
2026-09-12 21:53:16 +02:00
|
|
|
bool knobDragging[4] = {};
|
|
|
|
|
|
2026-09-11 16:38:28 +02:00
|
|
|
juce::Slider knobSliders[4];
|
|
|
|
|
juce::Label knobLabels[4];
|
|
|
|
|
juce::Label knobValueLabels[4];
|
|
|
|
|
|
2026-10-09 17:58:07 +02:00
|
|
|
RoundNavButton navEnter { "OK" };
|
|
|
|
|
RoundNavButton navEsc { "ESC" };
|
|
|
|
|
|
|
|
|
|
JoystickPad navStick;
|
2026-09-11 16:38:28 +02:00
|
|
|
|
|
|
|
|
juce::Label footer;
|
|
|
|
|
|
|
|
|
|
bool menuWasOpen = false;
|
|
|
|
|
|
|
|
|
|
static juce::String buildGitFooter();
|
|
|
|
|
|
|
|
|
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (SM26AudioProcessorEditor)
|
|
|
|
|
};
|