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 27866bb7d75d00d6634bac250a826987b7cf2574
parent 3f3252bff3e60f384f48d34eb98a57105241eb11
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Wed,  1 May 2024 12:58:41 +0200

create base class for all future rom loaders

Diffstat:
Msource/synthLib/CMakeLists.txt | 1+
Asource/synthLib/romLoader.cpp | 38++++++++++++++++++++++++++++++++++++++
Asource/synthLib/romLoader.h | 15+++++++++++++++
Msource/virusLib/romloader.cpp | 31-------------------------------
Msource/virusLib/romloader.h | 7+++----
5 files changed, 57 insertions(+), 35 deletions(-)

diff --git a/source/synthLib/CMakeLists.txt b/source/synthLib/CMakeLists.txt @@ -26,6 +26,7 @@ set(SOURCES plugin.cpp plugin.h resampler.cpp resampler.h resamplerInOut.cpp resamplerInOut.h + romLoader.cpp romLoader.h sysexToMidi.cpp sysexToMidi.h wavReader.cpp wavReader.h wavTypes.h diff --git a/source/synthLib/romLoader.cpp b/source/synthLib/romLoader.cpp @@ -0,0 +1,38 @@ +#include "romLoader.h" + +#include "os.h" + +namespace synthLib +{ + + std::vector<std::string> RomLoader::findFiles(const std::string& _extension, const size_t _minSize, const size_t _maxSize) + { + std::vector<std::string> results; + + const auto path = synthLib::getModulePath(); + synthLib::findFiles(results, path, _extension, _minSize, _maxSize); + + const auto path2 = synthLib::getModulePath(false); + if(path2 != path) + synthLib::findFiles(results, path2, _extension, _minSize, _maxSize); + + if(results.empty()) + { + const auto path3 = synthLib::getCurrentDirectory(); + if(path3 != path2 && path3 != path) + synthLib::findFiles(results, path, _extension, _minSize, _maxSize); + } + + return results; + } + + std::vector<std::string> RomLoader::findFiles(const std::string& _path, const std::string& _extension, size_t _minSize, size_t _maxSize) + { + if(_path.empty()) + return findFiles(_extension, _minSize, _maxSize); + + std::vector<std::string> results; + synthLib::findFiles(results, _path, _extension, _minSize, _maxSize); + return results; + } +} diff --git a/source/synthLib/romLoader.h b/source/synthLib/romLoader.h @@ -0,0 +1,15 @@ +#pragma once + +#include <string> +#include <vector> +#include <cstddef> + +namespace synthLib +{ + class RomLoader + { + public: + static std::vector<std::string> findFiles(const std::string& _extension, size_t _minSize, size_t _maxSize); + static std::vector<std::string> findFiles(const std::string& _path, const std::string& _extension, size_t _minSize, size_t _maxSize); + }; +} diff --git a/source/virusLib/romloader.cpp b/source/virusLib/romloader.cpp @@ -80,37 +80,6 @@ namespace virusLib return ROMFile::invalid(); } - std::vector<std::string> ROMLoader::findFiles(const std::string& _extension, const size_t _minSize, const size_t _maxSize) - { - std::vector<std::string> results; - - const auto path = synthLib::getModulePath(); - synthLib::findFiles(results, path, _extension, _minSize, _maxSize); - - const auto path2 = synthLib::getModulePath(false); - if(path2 != path) - synthLib::findFiles(results, path2, _extension, _minSize, _maxSize); - - if(results.empty()) - { - const auto path3 = synthLib::getCurrentDirectory(); - if(path3 != path2 && path3 != path) - synthLib::findFiles(results, path, _extension, _minSize, _maxSize); - } - - return results; - } - - std::vector<std::string> ROMLoader::findFiles(const std::string& _path, const std::string& _extension, size_t _minSize, size_t _maxSize) - { - if(_path.empty()) - return findFiles(_extension, _minSize, _maxSize); - - std::vector<std::string> results; - synthLib::findFiles(results, _path, _extension, _minSize, _maxSize); - return results; - } - ROMLoader::FileData ROMLoader::loadFile(const std::string& _name) { FileData data; diff --git a/source/virusLib/romloader.h b/source/virusLib/romloader.h @@ -2,9 +2,11 @@ #include "romfile.h" +#include "../synthLib/romLoader.h" + namespace virusLib { - class ROMLoader + class ROMLoader : public synthLib::RomLoader { public: enum FileType @@ -31,9 +33,6 @@ namespace virusLib static ROMFile findROM(const std::string& _filename, DeviceModel _model = DeviceModel::ABC); private: - static std::vector<std::string> findFiles(const std::string& _extension, size_t _minSize, size_t _maxSize); - static std::vector<std::string> findFiles(const std::string& _path, const std::string& _extension, size_t _minSize, size_t _maxSize); - static FileData loadFile(const std::string& _name); static DeviceModel detectModel(const std::vector<uint8_t>& _data);