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 49d1ba4a2daf0dc1921562756593a144e6673796
parent fe520f8e9e7be9be0e279b24f6295fc1ae854755
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Sat, 19 Mar 2022 01:30:00 +0100

make various controls optional due to the Trancy skin not having them / different onces

Diffstat:
Msource/jucePlugin/ui3/Parts.cpp | 18++++++++++++++----
Msource/jucePlugin/ui3/VirusEditor.cpp | 37++++++++++++++++++++++++++-----------
Msource/jucePlugin/ui3/VirusEditor.h | 2++
3 files changed, 42 insertions(+), 15 deletions(-)

diff --git a/source/jucePlugin/ui3/Parts.cpp b/source/jucePlugin/ui3/Parts.cpp @@ -20,8 +20,13 @@ namespace genericVirusUI for(size_t i=0; i<m_partSelect.size(); ++i) { m_partSelect[i]->onClick = [this, i]{ selectPart(i); }; - m_presetPrev[i]->onClick = [this, i]{ selectPrevPreset(i); }; - m_presetNext[i]->onClick = [this, i]{ selectNextPreset(i); }; + + if(!m_presetPrev.empty()) + m_presetPrev[i]->onClick = [this, i]{ selectPrevPreset(i); }; + + if(!m_presetNext.empty()) + m_presetNext[i]->onClick = [this, i]{ selectNextPreset(i); }; + m_presetName[i]->onClick = [this, i]{ selectPreset(i); }; _editor.getParameterBinding().bind(*m_partVolume[i], Virus::Param_PartVolume, static_cast<uint8_t>(i)); @@ -134,8 +139,13 @@ namespace genericVirusUI m_partSelect[i]->setVisible(visible); m_partPan[i]->setVisible(visible); m_partVolume[i]->setVisible(visible); - m_presetPrev[i]->setVisible(visible); - m_presetNext[i]->setVisible(visible); + + if(i < m_presetPrev.size()) + m_presetPrev[i]->setVisible(visible); + + if(i < m_presetNext.size()) + m_presetNext[i]->setVisible(visible); + m_presetName[i]->setVisible(visible); } } diff --git a/source/jucePlugin/ui3/VirusEditor.cpp b/source/jucePlugin/ui3/VirusEditor.cpp @@ -28,11 +28,20 @@ namespace genericVirusUI m_controlLabel = findComponentT<juce::Label>("ControlLabel"); m_romSelector = findComponentT<juce::ComboBox>("RomSelector"); - m_playModeSingle = findComponentT<juce::Button>("PlayModeSingle"); - m_playModeMulti = findComponentT<juce::Button>("PlayModeMulti"); + m_playModeSingle = findComponentT<juce::Button>("PlayModeSingle", false); + m_playModeMulti = findComponentT<juce::Button>("PlayModeMulti", false); + + if(m_playModeSingle && m_playModeMulti) + { + m_playModeSingle->onClick = [this]{ setPlayMode(virusLib::PlayMode::PlayModeSingle); }; + m_playModeMulti->onClick = [this]{ setPlayMode(virusLib::PlayMode::PlayModeMulti); }; + } + else + { + m_playModeToggle = findComponentT<juce::Button>("PlayModeToggle"); + m_playModeToggle->onClick = [this]{ setPlayMode(m_playModeToggle->getToggleState() ? virusLib::PlayMode::PlayModeMulti : virusLib::PlayMode::PlayModeSingle); }; + } - m_playModeSingle->onClick = [this]{ setPlayMode(virusLib::PlayMode::PlayModeSingle); }; - m_playModeMulti->onClick = [this]{ setPlayMode(virusLib::PlayMode::PlayModeMulti); }; updatePlayModeButtons(); if(m_romSelector) @@ -51,7 +60,7 @@ namespace genericVirusUI m_controlLabel->setText("", juce::dontSendNotification); - auto* versionInfo = findComponentT<juce::Label>("VersionInfo"); + auto* versionInfo = findComponentT<juce::Label>("VersionInfo", false); if(versionInfo) { @@ -59,11 +68,13 @@ namespace genericVirusUI versionInfo->setText(message, juce::dontSendNotification); } - auto* presetSave = findComponentT<juce::Button>("PresetSave"); - presetSave->onClick = [this] { savePreset(); }; + auto* presetSave = findComponentT<juce::Button>("PresetSave", false); + if(presetSave) + presetSave->onClick = [this] { savePreset(); }; - auto* presetLoad = findComponentT<juce::Button>("PresetLoad"); - presetLoad->onClick = [this] { loadPreset(); }; + auto* presetLoad = findComponentT<juce::Button>("PresetLoad", false); + if(presetLoad) + presetLoad->onClick = [this] { loadPreset(); }; m_presetName->setEditable(false, true, true); m_presetName->onTextChange = [this]() @@ -204,8 +215,12 @@ namespace genericVirusUI void VirusEditor::updatePlayModeButtons() const { - m_playModeSingle->setToggleState(!getController().isMultiMode(), juce::dontSendNotification); - m_playModeMulti->setToggleState(getController().isMultiMode(), juce::dontSendNotification); + if(m_playModeSingle) + m_playModeSingle->setToggleState(!getController().isMultiMode(), juce::dontSendNotification); + if(m_playModeMulti) + m_playModeMulti->setToggleState(getController().isMultiMode(), juce::dontSendNotification); + if(m_playModeToggle) + m_playModeToggle->setToggleState(getController().isMultiMode(), juce::dontSendNotification); } void VirusEditor::savePreset() diff --git a/source/jucePlugin/ui3/VirusEditor.h b/source/jucePlugin/ui3/VirusEditor.h @@ -8,6 +8,7 @@ #include "MidiPorts.h" #include "PatchBrowser.h" +class VirusParameterBinding; class AudioPluginAudioProcessor; namespace genericVirusUI @@ -63,6 +64,7 @@ namespace genericVirusUI juce::Button* m_playModeSingle = nullptr; juce::Button* m_playModeMulti = nullptr; + juce::Button* m_playModeToggle = nullptr; juce::TooltipWindow m_tooltipWindow;