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 21e626f262dede1ea098187e6156367950182dc2
parent c44a9f4c6d177fd08ba843581870c5cabdc2e07a
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Fri, 21 Feb 2025 17:24:20 +0100

add ExportType to have the ability to alter the patch data depending on the export destination

Diffstat:
Msource/jucePluginEditorLib/patchmanager/patchmanager.cpp | 6+++---
Msource/jucePluginEditorLib/patchmanager/patchmanager.h | 2+-
Msource/jucePluginEditorLib/patchmanager/savepatchdesc.cpp | 2+-
Msource/jucePluginEditorLib/pluginEditor.cpp | 2+-
Msource/jucePluginLib/filetype.h | 9+++++++++
Msource/jucePluginLib/patchdb/db.h | 3++-
Msource/mqJucePlugin/mqPatchManager.cpp | 4++--
Msource/mqJucePlugin/mqPatchManager.h | 2+-
Msource/nord/n2x/n2xJucePlugin/n2xPatchManager.cpp | 2+-
Msource/nord/n2x/n2xJucePlugin/n2xPatchManager.h | 2+-
Msource/virusJucePlugin/PatchManager.cpp | 4++--
Msource/virusJucePlugin/PatchManager.h | 2+-
Msource/xtJucePlugin/xtPatchManager.cpp | 4++--
Msource/xtJucePlugin/xtPatchManager.h | 2+-
14 files changed, 28 insertions(+), 18 deletions(-)

diff --git a/source/jucePluginEditorLib/patchmanager/patchmanager.cpp b/source/jucePluginEditorLib/patchmanager/patchmanager.cpp @@ -618,7 +618,7 @@ namespace jucePluginEditorLib::patchManager std::vector<pluginLib::patchDB::Data> patchData; for (const auto& patch : _patches) { - const auto patchSysex = applyModifications(patch, type); + const auto patchSysex = applyModifications(patch, type, pluginLib::ExportType::File); if(!patchSysex.empty()) patchData.push_back(patchSysex); @@ -1080,12 +1080,12 @@ namespace jucePluginEditorLib::patchManager return activatePatchFromString(juce::SystemClipboard::getTextFromClipboard().toStdString()); } - std::string PatchManager::toString(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _type) const + std::string PatchManager::toString(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _fileType, const pluginLib::ExportType _exportType) const { if(!_patch) return {}; - const auto data = applyModifications(_patch, _type); + const auto data = applyModifications(_patch, _fileType, _exportType); return pluginLib::Clipboard::createJsonString(m_editor.getProcessor(), {}, {}, data); } diff --git a/source/jucePluginEditorLib/patchmanager/patchmanager.h b/source/jucePluginEditorLib/patchmanager/patchmanager.h @@ -106,7 +106,7 @@ namespace jucePluginEditorLib::patchManager std::vector<pluginLib::patchDB::PatchPtr> getPatchesFromClipboard(); bool activatePatchFromString(const std::string& _text); bool activatePatchFromClipboard(); - std::string toString(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _type) const; + std::string toString(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _fileType, pluginLib::ExportType _exportType) const; LayoutType getLayout() const { return m_layout; } void setLayout(LayoutType _layout); diff --git a/source/jucePluginEditorLib/patchmanager/savepatchdesc.cpp b/source/jucePluginEditorLib/patchmanager/savepatchdesc.cpp @@ -46,7 +46,7 @@ namespace jucePluginEditorLib::patchManager for (auto& patch : patches) { - auto data = m_patchManager.applyModifications(patch.second, pluginLib::FileType::Mid); + auto data = m_patchManager.applyModifications(patch.second, pluginLib::FileType::Mid, pluginLib::ExportType::DragAndDrop); if(data.empty()) return false; patchesData.emplace_back(std::move(data)); diff --git a/source/jucePluginEditorLib/pluginEditor.cpp b/source/jucePluginEditorLib/pluginEditor.cpp @@ -304,7 +304,7 @@ namespace jucePluginEditorLib if(!p) return; - const auto patchAsString = m_patchManager->toString(p, pluginLib::FileType::Empty); + const auto patchAsString = m_patchManager->toString(p, pluginLib::FileType::Empty, pluginLib::ExportType::Clipboard); if(!patchAsString.empty()) juce::SystemClipboard::copyTextToClipboard(patchAsString); diff --git a/source/jucePluginLib/filetype.h b/source/jucePluginLib/filetype.h @@ -1,6 +1,7 @@ #pragma once #include <string> +#include <cstdint> namespace pluginLib { @@ -21,4 +22,12 @@ namespace pluginLib private: std::string m_type; }; + + enum class ExportType : uint8_t + { + Clipboard, + DragAndDrop, + EmuHardware, + File + }; } diff --git a/source/jucePluginLib/patchdb/db.h b/source/jucePluginLib/patchdb/db.h @@ -15,6 +15,7 @@ namespace pluginLib { + enum class ExportType : uint8_t; class FileType; } @@ -100,7 +101,7 @@ namespace pluginLib::patchDB virtual bool loadLocalStorage(DataList& _results, const DataSource& _ds); virtual bool loadFolder(const DataSourceNodePtr& _folder); virtual PatchPtr initializePatch(Data&& _sysex, const std::string& _defaultPatchName) = 0; - virtual Data applyModifications(const PatchPtr& _patch, const FileType& _targetType) const = 0; + virtual Data applyModifications(const PatchPtr& _patch, const FileType& _fileType, ExportType _exportType) const = 0; virtual bool parseFileData(DataList& _results, const Data& _data); virtual bool equals(const PatchPtr& _a, const PatchPtr& _b) const { diff --git a/source/mqJucePlugin/mqPatchManager.cpp b/source/mqJucePlugin/mqPatchManager.cpp @@ -64,7 +64,7 @@ namespace mqJucePlugin return p; } - pluginLib::patchDB::Data PatchManager::applyModifications(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _targetType) const + pluginLib::patchDB::Data PatchManager::applyModifications(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _fileType, pluginLib::ExportType _exportType) const { auto result = _patch->sysex; @@ -112,7 +112,7 @@ namespace mqJucePlugin bool PatchManager::activatePatch(const pluginLib::patchDB::PatchPtr& _patch, uint32_t _part) { - m_controller.sendSingle(applyModifications(_patch, pluginLib::FileType::Empty), static_cast<uint8_t>(_part)); + m_controller.sendSingle(applyModifications(_patch, pluginLib::FileType::Empty, pluginLib::ExportType::EmuHardware), static_cast<uint8_t>(_part)); return true; } } diff --git a/source/mqJucePlugin/mqPatchManager.h b/source/mqJucePlugin/mqPatchManager.h @@ -17,7 +17,7 @@ namespace mqJucePlugin bool requestPatchForPart(pluginLib::patchDB::Data& _data, uint32_t _part, uint64_t _userData) override; bool loadRomData(pluginLib::patchDB::DataList& _results, uint32_t _bank, uint32_t _program) override; pluginLib::patchDB::PatchPtr initializePatch(pluginLib::patchDB::Data&& _sysex, const std::string& _defaultPatchName) override; - pluginLib::patchDB::Data applyModifications(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _targetType) const override; + pluginLib::patchDB::Data applyModifications(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _fileType, pluginLib::ExportType _exportType) const override; uint32_t getCurrentPart() const override; bool activatePatch(const pluginLib::patchDB::PatchPtr& _patch, uint32_t _part) override; diff --git a/source/nord/n2x/n2xJucePlugin/n2xPatchManager.cpp b/source/nord/n2x/n2xJucePlugin/n2xPatchManager.cpp @@ -94,7 +94,7 @@ namespace n2xJucePlugin return p; } - pluginLib::patchDB::Data PatchManager::applyModifications(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _targetType) const + pluginLib::patchDB::Data PatchManager::applyModifications(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _fileType, pluginLib::ExportType _exportType) const { auto d = n2x::State::stripPatchName(_patch->sysex); diff --git a/source/nord/n2x/n2xJucePlugin/n2xPatchManager.h b/source/nord/n2x/n2xJucePlugin/n2xPatchManager.h @@ -17,7 +17,7 @@ namespace n2xJucePlugin bool requestPatchForPart(pluginLib::patchDB::Data& _data, uint32_t _part, uint64_t _userData) override; bool loadRomData(pluginLib::patchDB::DataList& _results, uint32_t _bank, uint32_t _program) override; pluginLib::patchDB::PatchPtr initializePatch(pluginLib::patchDB::Data&& _sysex, const std::string& _defaultPatchName) override; - pluginLib::patchDB::Data applyModifications(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _targetType) const override; + pluginLib::patchDB::Data applyModifications(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _fileType, pluginLib::ExportType _exportType) const override; uint32_t getCurrentPart() const override; bool activatePatch(const pluginLib::patchDB::PatchPtr& _patch, uint32_t _part) override; bool parseFileData(pluginLib::patchDB::DataList& _results, const pluginLib::patchDB::Data& _data) override; diff --git a/source/virusJucePlugin/PatchManager.cpp b/source/virusJucePlugin/PatchManager.cpp @@ -192,7 +192,7 @@ namespace genericVirusUI return patch; } - pluginLib::patchDB::Data PatchManager::applyModifications(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _targetType) const + pluginLib::patchDB::Data PatchManager::applyModifications(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _fileType, pluginLib::ExportType _exportType) const { if (_patch->sysex.size() < 267) return _patch->sysex; @@ -422,7 +422,7 @@ namespace genericVirusUI bool PatchManager::activatePatch(const pluginLib::patchDB::PatchPtr& _patch, const uint32_t _part) { - return m_controller.activatePatch(applyModifications(_patch, pluginLib::FileType::Empty), _part); + return m_controller.activatePatch(applyModifications(_patch, pluginLib::FileType::Empty, pluginLib::ExportType::EmuHardware), _part); } void PatchManager::addRomPatches() diff --git a/source/virusJucePlugin/PatchManager.h b/source/virusJucePlugin/PatchManager.h @@ -23,7 +23,7 @@ namespace genericVirusUI // PatchDB impl bool loadRomData(pluginLib::patchDB::DataList& _results, uint32_t _bank, uint32_t _program) override; std::shared_ptr<pluginLib::patchDB::Patch> initializePatch(std::vector<uint8_t>&& _sysex, const std::string& _defaultPatchName) override; - pluginLib::patchDB::Data applyModifications(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _targetType) const override; + pluginLib::patchDB::Data applyModifications(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _fileType, pluginLib::ExportType _exportType) const override; bool parseFileData(std::vector<std::vector<uint8_t>>& _results, const std::vector<uint8_t>& _data) override; bool requestPatchForPart(pluginLib::patchDB::Data& _data, uint32_t _part, uint64_t _userData) override; uint32_t getCurrentPart() const override; diff --git a/source/xtJucePlugin/xtPatchManager.cpp b/source/xtJucePlugin/xtPatchManager.cpp @@ -111,7 +111,7 @@ namespace xtJucePlugin return p; } - pluginLib::patchDB::Data PatchManager::applyModifications(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _targetType) const + pluginLib::patchDB::Data PatchManager::applyModifications(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _fileType, pluginLib::ExportType _exportType) const { auto applyModifications = [&_patch](pluginLib::patchDB::Data& _result) -> bool { @@ -172,7 +172,7 @@ namespace xtJucePlugin bool PatchManager::activatePatch(const pluginLib::patchDB::PatchPtr& _patch, const uint32_t _part) { - if(!m_controller.sendSingle(applyModifications(_patch, pluginLib::FileType::Empty), static_cast<uint8_t>(_part))) + if(!m_controller.sendSingle(applyModifications(_patch, pluginLib::FileType::Empty, pluginLib::ExportType::EmuHardware), static_cast<uint8_t>(_part))) { genericUI::MessageBox::showOk(juce::MessageBoxIconType::WarningIcon, m_editor.getProcessor().getProperties().name + " - Unable to load patch", diff --git a/source/xtJucePlugin/xtPatchManager.h b/source/xtJucePlugin/xtPatchManager.h @@ -17,7 +17,7 @@ namespace xtJucePlugin bool requestPatchForPart(pluginLib::patchDB::Data& _data, uint32_t _part, uint64_t _userData) override; bool loadRomData(pluginLib::patchDB::DataList& _results, uint32_t _bank, uint32_t _program) override; pluginLib::patchDB::PatchPtr initializePatch(pluginLib::patchDB::Data&& _sysex, const std::string& _defaultPatchName) override; - pluginLib::patchDB::Data applyModifications(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _targetType) const override; + pluginLib::patchDB::Data applyModifications(const pluginLib::patchDB::PatchPtr& _patch, const pluginLib::FileType& _fileType, pluginLib::ExportType _exportType) const override; uint32_t getCurrentPart() const override; bool activatePatch(const pluginLib::patchDB::PatchPtr& _patch, uint32_t _part) override; bool parseFileData(pluginLib::patchDB::DataList& _results, const pluginLib::patchDB::Data& _data) override;