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

parameterdescriptions.h (2235B)


      1 #pragma once
      2 
      3 #include <unordered_map>
      4 #include <string>
      5 #include <vector>
      6 
      7 #include "controllermap.h"
      8 #include "midipacket.h"
      9 #include "parameterdescription.h"
     10 #include "parameterlink.h"
     11 #include "parameterregion.h"
     12 
     13 namespace synthLib
     14 {
     15 	struct SMidiEvent;
     16 }
     17 
     18 namespace juce
     19 {
     20 	class var;
     21 	class DynamicObject;
     22 }
     23 
     24 namespace pluginLib
     25 {
     26 	class ParameterDescriptions
     27 	{
     28 	public:
     29 		explicit ParameterDescriptions(const std::string& _jsonString);
     30 
     31 		const std::vector<Description>& getDescriptions() const
     32 		{
     33 			return m_descriptions;
     34 		}
     35 
     36 		const MidiPacket* getMidiPacket(const std::string& _name) const;
     37 
     38 		static std::string removeComments(std::string _json);
     39 
     40 		bool getIndexByName(uint32_t& _index, const std::string& _name) const;
     41 
     42 		const std::unordered_map<std::string, MidiPacket>& getMidiPackets() const { return m_midiPackets; }
     43 
     44 		const auto& getRegions() const { return m_regions; }
     45 
     46 		const ValueList* getValueList(const std::string& _key) const;
     47 
     48 		const std::string& getErrors() const { return m_errors; }
     49 		bool isValid() const { return getErrors().empty(); }
     50 
     51 		const auto& getControllerMap() const { return m_controllerMap; }
     52 
     53 	private:
     54 		std::string loadJson(const std::string& _jsonString);
     55 
     56 		std::string parseValueList(const std::string& _key, const juce::var& _values);
     57 
     58 		void parseMidiPackets(std::stringstream& _errors, juce::DynamicObject* _packets);
     59 		void parseMidiPacket(std::stringstream& _errors, const std::string& _key, const juce::var& _value);
     60 
     61 		void parseParameterRegions(std::stringstream& _errors, const juce::Array<juce::var>* _regions);
     62 		void parseParameterRegion(std::stringstream& _errors, const juce::var& _value);
     63 
     64 		void parseControllerMap(std::stringstream& _errors, const juce::Array<juce::var>* _controllers);
     65 		void parseController(std::stringstream& _errors, const juce::var& _value);
     66 
     67 		std::unordered_map<std::string, ValueList> m_valueLists;
     68 		std::vector<Description> m_descriptions;
     69 		std::unordered_map<std::string, uint32_t> m_nameToIndex;
     70 		std::unordered_map<std::string, MidiPacket> m_midiPackets;
     71 		std::vector<ParameterLink> m_parameterLinks;
     72 		std::unordered_map<std::string, ParameterRegion> m_regions;
     73 		ControllerMap m_controllerMap;
     74 
     75 		std::string m_errors;
     76 	};
     77 }