gearmulator

Emulation of classic VA synths of the late 90s/2000s that are based on Motorola 56300 family DSPs
Log | Files | Refs | Submodules | README | LICENSE

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:
Msource/jucePlugin/PluginEditor.cpp | 10++++++----
Msource/jucePlugin/PluginEditor.h | 2++
Msource/jucePlugin/VirusController.cpp | 20++++++++++++++++++--
Msource/jucePlugin/VirusController.h | 2++
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;