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

state.h (2067B)


      1 #pragma once
      2 
      3 #include <array>
      4 
      5 #include "jucePluginLib/patchdb/patch.h"
      6 #include "jucePluginLib/types.h"
      7 
      8 namespace jucePluginEditorLib::patchManager
      9 {
     10 	class State;
     11 	class PatchManager;
     12 
     13 	class PartState
     14 	{
     15 	public:
     16 		void setSelectedPatch(const pluginLib::patchDB::PatchKey& _patch, uint32_t _searchHandle);
     17 
     18 		const auto& getPatch() const { return m_patch; }
     19 		const auto& getSearchHandle() const { return m_searchHandle; }
     20 
     21 		bool isValid() const { return m_patch.isValid() && m_searchHandle != pluginLib::patchDB::g_invalidSearchHandle; }
     22 
     23 		void setConfig(pluginLib::PluginStream& _s);
     24 		void getConfig(pluginLib::PluginStream& _s) const;
     25 
     26 		void clear();
     27 
     28 	private:
     29 		pluginLib::patchDB::PatchKey m_patch;
     30 		pluginLib::patchDB::SearchHandle m_searchHandle = pluginLib::patchDB::g_invalidSearchHandle;
     31 	};
     32 
     33 	class State
     34 	{
     35 	public:
     36 		explicit State(PatchManager& _patchManager) : m_patchManager(_patchManager), m_parts({})
     37 		{
     38 		}
     39 
     40 		void setSelectedPatch(const uint32_t _part, const pluginLib::patchDB::PatchKey& _patch, uint32_t _searchHandle);
     41 
     42 		std::pair<pluginLib::patchDB::PatchPtr, uint32_t> getNeighbourPreset(uint32_t _part, int _offset) const;
     43 		std::pair<pluginLib::patchDB::PatchPtr, uint32_t> getNeighbourPreset(const pluginLib::patchDB::PatchKey& _patch, pluginLib::patchDB::SearchHandle _searchHandle, int _offset) const;
     44 
     45 		pluginLib::patchDB::PatchKey getPatch(uint32_t _part) const;
     46 		pluginLib::patchDB::SearchHandle getSearchHandle(uint32_t _part) const;
     47 
     48 		bool isValid(uint32_t _part) const;
     49 
     50 		std::pair<std::vector<pluginLib::patchDB::PatchPtr>, uint32_t> getPatchesAndIndex(const pluginLib::patchDB::PatchKey& _patch, pluginLib::patchDB::SearchHandle _searchHandle) const;
     51 
     52 		void setConfig(pluginLib::PluginStream& _s);
     53 		void getConfig(pluginLib::PluginStream& _s) const;
     54 
     55 		uint32_t getPartCount() const
     56 		{
     57 			return static_cast<uint32_t>(m_parts.size());
     58 		}
     59 
     60 		void clear(const uint32_t _part);
     61 		void copy(uint8_t _target, uint8_t _source);
     62 
     63 	private:
     64 		PatchManager& m_patchManager;
     65 		std::array<PartState, 16> m_parts;
     66 	};
     67 }