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 8e71149a128be41bbd7a143970ac227f8dbb868f
parent 4e4b47c5c398121fafec3bd008582354be49269d
Author: Tal Aviram <me@talaviram.com>
Date:   Mon, 26 Jul 2021 21:06:00 +0300

controller - parseAsciiText from dumps.

Diffstat:
Msource/jucePlugin/VirusController.cpp | 17+++++++++++++++++
Msource/jucePlugin/VirusController.h | 3+++
2 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/source/jucePlugin/VirusController.cpp b/source/jucePlugin/VirusController.cpp @@ -68,6 +68,9 @@ namespace Virus { uint8_t bankNum, progNum, data256, checksum; assert(msg.size() - kHeaderWithMsgCodeLen > 0); + constexpr auto startPos = kHeaderWithMsgCodeLen + 4; + auto progName = parseAsciiText(msg, startPos + 1); + DBG(progName); } void Controller::parseData(const SysEx &msg, const size_t startPos) @@ -79,6 +82,20 @@ namespace Virus const auto dataSize = msg.size() - startPos - 1; const auto hasChecksum = dataSize == expectedDataSize + checkSumSize; assert(hasChecksum || dataSize == expectedDataSize); + + const auto namePos = 128 + 112; + assert(startPos + namePos < msg.size()); + auto progName = parseAsciiText(msg, startPos + namePos); + DBG(progName); + } + + juce::String Controller::parseAsciiText(const SysEx &msg, const int start) + { + char text[kNameLength + 1]; + text[kNameLength] = 0; // termination + for (auto pos = 0; pos < kNameLength; ++pos) + text[pos] = msg[start + pos]; + return juce::String(text); } void Controller::printMessage(const SysEx &msg) const diff --git a/source/jucePlugin/VirusController.h b/source/jucePlugin/VirusController.h @@ -10,6 +10,8 @@ namespace Virus class Controller { public: + static constexpr auto kNameLength = 10; + Controller(AudioPluginAudioProcessor &, unsigned char deviceId = 0x00); // this is called by the plug-in on audio thread! @@ -18,6 +20,7 @@ namespace Virus void printMessage(const SysEx &) const; private: + juce::String parseAsciiText(const SysEx &, int startPos); void parseMessage(const SysEx &); void parseSingle(const SysEx &); void parseMulti(const SysEx &);