30 lines
1.3 KiB
C
30 lines
1.3 KiB
C
|
|
#pragma once
|
||
|
|
#include "Processor.h"
|
||
|
|
class XtcJuceEditor final : public juce::AudioProcessorEditor,
|
||
|
|
private juce::MidiKeyboardState::Listener,
|
||
|
|
private juce::Timer {
|
||
|
|
public:
|
||
|
|
explicit XtcJuceEditor(XtcJuceProcessor&);
|
||
|
|
~XtcJuceEditor() override;
|
||
|
|
void paint(juce::Graphics&) override;
|
||
|
|
void resized() override;
|
||
|
|
private:
|
||
|
|
XtcJuceProcessor& engine;
|
||
|
|
juce::MidiKeyboardState keyboardState;
|
||
|
|
juce::MidiKeyboardComponent keyboard{keyboardState,juce::MidiKeyboardComponent::horizontalKeyboard};
|
||
|
|
std::array<juce::Slider,4> sliders;
|
||
|
|
std::array<juce::Label,4> labels;
|
||
|
|
std::array<std::unique_ptr<juce::AudioProcessorValueTreeState::SliderAttachment>,4> attachments;
|
||
|
|
juce::ToggleButton effects{"Filter + reverb"};
|
||
|
|
std::unique_ptr<juce::AudioProcessorValueTreeState::ButtonAttachment> effectsAttachment;
|
||
|
|
juce::TextButton save{"Save preset"},load{"Load preset"},panicButton{"Panic"};
|
||
|
|
juce::Label status;
|
||
|
|
juce::String presetStatus;
|
||
|
|
std::unique_ptr<juce::FileChooser> chooser;
|
||
|
|
float level=0;
|
||
|
|
void handleNoteOn(juce::MidiKeyboardState*,int,int,float) override;
|
||
|
|
void handleNoteOff(juce::MidiKeyboardState*,int,int,float) override;
|
||
|
|
void timerCallback() override;
|
||
|
|
void choosePreset(bool saving);
|
||
|
|
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(XtcJuceEditor)
|
||
|
|
};
|