commit 5d962e8b4741d866cf9074b1851b27a1b02457a5
parent debe78c20542d80966efb05ae7c1d11647bc6e12
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date: Thu, 19 May 2022 18:23:11 +0200
additional packet parsing variants
Diffstat:
2 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/source/jucePluginLib/controller.cpp b/source/jucePluginLib/controller.cpp
@@ -197,13 +197,34 @@ namespace pluginLib
return true;
}
+ bool Controller::parseMidiPacket(const MidiPacket& _packet, MidiPacket::Data& _data, MidiPacket::ParamValues& _parameterValues, const std::vector<uint8_t>& _src) const
+ {
+ _data.clear();
+ _parameterValues.clear();
+ return _packet.parse(_data, _parameterValues, m_descriptions, _src);
+ }
+
bool Controller::parseMidiPacket(const std::string& _name, MidiPacket::Data& _data, MidiPacket::ParamValues& _parameterValues, const std::vector<uint8_t>& _src) const
{
auto* m = getMidiPacket(_name);
assert(m);
if(!m)
return false;
+ return parseMidiPacket(*m, _data, _parameterValues, _src);
+ }
- return m->parse(_data, _parameterValues, m_descriptions, _src);
+ bool Controller::parseMidiPacket(std::string& _name, MidiPacket::Data& _data, MidiPacket::ParamValues& _parameterValues, const std::vector<uint8_t>& _src) const
+ {
+ const auto packets = m_descriptions.getMidiPackets();
+
+ for (const auto& packet : packets)
+ {
+ if(!parseMidiPacket(packet.second, _data, _parameterValues, _src))
+ continue;
+
+ _name = packet.first;
+ return true;
+ }
+ return false;
}
}
diff --git a/source/jucePluginLib/controller.h b/source/jucePluginLib/controller.h
@@ -26,7 +26,9 @@ namespace pluginLib
bool createMidiDataFromPacket(std::vector<uint8_t>& _sysex, const std::string& _packetName, const std::map<MidiDataType, uint8_t>& _params, uint8_t _part) const;
+ bool parseMidiPacket(const MidiPacket& _packet, MidiPacket::Data& _data, MidiPacket::ParamValues& _parameterValues, const std::vector<uint8_t>& _src) const;
bool parseMidiPacket(const std::string& _name, MidiPacket::Data& _data, MidiPacket::ParamValues& _parameterValues, const std::vector<uint8_t>& _src) const;
+ bool parseMidiPacket(std::string& _name, MidiPacket::Data& _data, MidiPacket::ParamValues& _parameterValues, const std::vector<uint8_t>& _src) const;
protected:
virtual Parameter* createParameter(Controller& _controller, const Description& _desc, uint8_t _part, int _uid) = 0;