had a chance to work on this, basically connecting an Erae 2 to the MM to use the Erae 2 developer API (based on sysec) for some ‘custom’ UI for MM ![]()
ok, before I continue, apologise i didnt get to test this before release,
here is what Ive found…
issues
a) sysex not sent?
Ive trace the call to sendMessage, and thats ok but nothing comes out.
not, only does Erae not initialise, but using a usb midi monitor it sees no sysex? but connnect to vcv on mac, and its fine.
I tested by sending a note message out, and that worked (so my midioutput object ‘appears ok’)
do I need to enable sysex at all? saw no reference to this in midi.hpp?
b) Sysex received , but appears incomplete.
k, so using the mac, I can initialise the erae to put in correct mode (to get around (a))
then connect to MM, and I can see sysex.
BUT the messages are incomplete…I do get F0 … data … F7, but they are missing ‘continuation’ packets…
thoughts on possible issues?
no idea about the output, just looks like its not sending sysex
input, a LOT of sysex is generated, each touch is 32 bytes, but its sending pretty continuously, so it could be you have some kind of limited buffer size, and overruns are happening?
Im polling inside process() and draining midi queue each time - so its not draining, its on ‘input’ somewhere.
(Id hope test with smaller messages but its hard as the send/init is not working properly)
Background
just an fyi, so you know what Im talking about,
Im using this to talk to an Erae mk2, using the sysex api found here.
basically you send a 16 byte sysex to turn on streaming , then start getting in (finger aka touch) messages, which doesnt happen.
If I do this initisaliation from my mac (erae holds state), then I do start getting in touch messages but the data is incomplete… they should be 32 bytes, but instead are 21 or 18.
testing - mac vs hardware
so Ive tested the underlying code on mac, so the ‘protocol’ logic is correct.
it also works within vcv desktop fine, as vcv sdk2 now handles variable length midi msgs fine as uses a byte vector… and so sysex passes thru both ways fine.
so the ‘only’ difference is the ‘chunking’, but Ive put in quite a bit of effort to test this - Im pretty sure this is correct. it looks like its at the hardware layer things go awry.
testing limitations
i dont really have a lot I can do hardware debugging with, mainly been sending text to module display. I also dont have a usb analyser so cant see usb packets sent.
I do have USB midi monitor, which Ive used… but its pretty limited, I could only see if sysex was sent - which it wasnt (except when on mac)
unfortunately, Erae has no way to throttle data, so I couldn’t get it to back off…
where next?
Sorry, I know thats not a lot to go on… so I guess at this stage the questions are more about my understanding.
a) Why does the send not work?
this seems like a good starting point… as Im able to get note on/off out, why not sysex? and the messages are only 16/14 bytes…
b) what limitations are in place?
I guess if we know something about queue/buffer sizes, and what happens in overruns, we might be able to explain behaviour when dealing with larger or very frequent messages.
theres a chance this is not a bug , but rather limitations.
