commit 3f0ba0d8800148629cfd2f53205704fbc2360b86
parent c23414990601e00225d3d91d771260b5778e94e2
Author: Tal Aviram <me@talaviram.com>
Date: Sun, 15 Aug 2021 22:13:44 +0300
Add basic JUCE generic param editor.
Diffstat:
4 files changed, 28 insertions(+), 6 deletions(-)
diff --git a/source/jucePlugin/PluginEditor.cpp b/source/jucePlugin/PluginEditor.cpp
@@ -4,10 +4,9 @@
#include "version.h"
//==============================================================================
-AudioPluginAudioProcessorEditor::AudioPluginAudioProcessorEditor (AudioPluginAudioProcessor& p)
- : AudioProcessorEditor (&p), processorRef (p)
- , m_btSingleMode("Single Mode")
- , m_btMultiMode("Multi Mode")
+AudioPluginAudioProcessorEditor::AudioPluginAudioProcessorEditor(AudioPluginAudioProcessor &p) :
+ AudioProcessorEditor(&p), processorRef(p), m_btSingleMode("Single Mode"), m_btMultiMode("Multi Mode"),
+ m_tempEditor(p)
{
ignoreUnused (processorRef);
@@ -29,6 +28,8 @@ AudioPluginAudioProcessorEditor::AudioPluginAudioProcessorEditor (AudioPluginAud
m_btMultiMode.setClickingTogglesState(true);
m_btMultiMode.setTopLeftPosition(m_btSingleMode.getPosition().x + m_btSingleMode.getWidth() + 10, 0);
m_btMultiMode.setSize(120,30);
+
+ addAndMakeVisible(m_tempEditor);
}
AudioPluginAudioProcessorEditor::~AudioPluginAudioProcessorEditor()
@@ -57,4 +58,5 @@ void AudioPluginAudioProcessorEditor::resized()
{
// This is generally where you'll want to lay out the positions of any
// subcomponents in your editor..
+ m_tempEditor.setBounds(0, 35, getWidth(), getHeight() - 35);
}
diff --git a/source/jucePlugin/PluginEditor.h b/source/jucePlugin/PluginEditor.h
@@ -18,6 +18,8 @@ private:
// access the processor object that created it.
AudioPluginAudioProcessor& processorRef;
+ juce::GenericAudioProcessorEditor m_tempEditor;
+
juce::TextButton m_btSingleMode;
juce::TextButton m_btMultiMode;
diff --git a/source/jucePlugin/VirusController.cpp b/source/jucePlugin/VirusController.cpp
@@ -185,8 +185,24 @@ namespace Virus
return bankNames;
}
- void Controller::parseSingle(const SysEx &msg)
- {
+ void Controller::setCurrentPartPreset(uint8_t part, uint8_t bank, uint8_t prg)
+ {
+ if (bank < 0 || bank > 1 || prg < 0 || prg > 127)
+ {
+ jassertfalse;
+ return;
+ }
+
+ uint8_t pt = isMultiMode() ? part : 0x40;
+ auto &preset = m_singles[bank][prg];
+ SysEx patch = {MessageType::DUMP_SINGLE, 0x0, pt};
+ for (auto i = 0; i < kDataSizeInBytes; ++i)
+ patch.push_back(preset.data[i]);
+ sendSysEx(constructMessage(patch));
+ }
+
+ void Controller::parseSingle(const SysEx &msg)
+ {
constexpr auto pageSize = 128;
constexpr auto expectedDataSize = pageSize * 2 + 1 + 1; // we have 2 pages
constexpr auto checkSumSize = 1;
diff --git a/source/jucePlugin/VirusController.h b/source/jucePlugin/VirusController.h
@@ -32,6 +32,8 @@ namespace Virus
juce::StringArray getSinglePresetNames(int bank) const;
juce::StringArray getMultiPresetsName() const;
bool isMultiMode() { return getParam(0, 2, 0x7a)->getValue(); }
+ // part 0 - 15 (ignored when single! 0x40...)
+ void setCurrentPartPreset(uint8_t part, uint8_t bank, uint8_t prg);
private:
void timerCallback() override;