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 b892ac4af4d53e972375ffbe7ba43c254e2cb528
parent e1b61fd5c00ad641e225101309131dda56861abc
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date:   Thu, 19 May 2022 18:22:14 +0200

various helper functions

Diffstat:
Msource/jucePluginLib/midipacket.cpp | 30++++++++++++++++++++++++++++++
Msource/jucePluginLib/midipacket.h | 4++++
Msource/jucePluginLib/parameterdescriptions.h | 2++
3 files changed, 36 insertions(+), 0 deletions(-)

diff --git a/source/jucePluginLib/midipacket.cpp b/source/jucePluginLib/midipacket.cpp @@ -193,6 +193,36 @@ namespace pluginLib return true; } + uint32_t MidiPacket::getByteIndexForType(MidiDataType _type) const + { + for(uint32_t i=0; i<m_definitions.size(); ++i) + { + const auto& d = m_definitions[i]; + if(d.type != _type) + continue; + + return m_definitionToByteIndex.find(i)->second; + } + return InvalidIndex; + } + + uint32_t MidiPacket::getByteIndexForParameterName(const std::string& _name) const + { + for(uint32_t i=0; i<m_definitions.size(); ++i) + { + const auto& d = m_definitions[i]; + + if(d.type != MidiDataType::Parameter) + continue; + + if(d.paramName != _name) + continue; + + return m_definitionToByteIndex.find(i)->second; + } + return InvalidIndex; + } + uint8_t MidiPacket::calcChecksum(const MidiDataDefinition& _d, const Sysex& _src) { auto checksum = _d.checksumInitValue; diff --git a/source/jucePluginLib/midipacket.h b/source/jucePluginLib/midipacket.h @@ -29,6 +29,7 @@ namespace pluginLib { public: static constexpr uint8_t AnyPart = 0xff; + static constexpr uint32_t InvalidIndex = 0xffffffff; struct MidiDataDefinition { @@ -64,6 +65,9 @@ namespace pluginLib bool parse(Data& _data, ParamValues& _parameterValues, const ParameterDescriptions& _parameters, const Sysex& _src, bool _ignoreChecksumErrors = true) const; bool getParameterIndices(ParamIndices& _indices, const ParameterDescriptions& _parameters) const; + uint32_t getByteIndexForType(MidiDataType _type) const; + uint32_t getByteIndexForParameterName(const std::string& _name) const; + private: static uint8_t calcChecksum(const MidiDataDefinition& _d, const Sysex& _src); diff --git a/source/jucePluginLib/parameterdescriptions.h b/source/jucePluginLib/parameterdescriptions.h @@ -25,6 +25,8 @@ namespace pluginLib bool getIndexByName(uint32_t& _index, const std::string& _name) const; + const std::map<std::string, MidiPacket>& getMidiPackets() const { return m_midiPackets; } + private: std::string loadJson(const std::string& _jsonString); void parseMidiPackets(std::stringstream& _errors, juce::DynamicObject* _packets);