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