Issue with [sysexin] object only at runtime
Hello,
I'm currently designing a MIDI editor for my Alesis QuadraVerb Plus (QVP) multi-effect unit. Work is progressing well and my device runs quite smoothly now. I'm on macOS High Sierra 10.13.6, Ableton Live Suite 10.1.9 & Max 8.1.1.
But today I need some help since I've discovered a serious problem with the [sysexin] object that I can't resolve.
When I load a single program from my QVP, I get 155 bytes of data, which is correct, and everything goes well with my patchers. Now, I when load the whole 100 programs of the QVP at once (a value > 100 must be sent with [sxformat], I use "101"), I should get 14708 bytes of data from the [sysexin] object. This is exactly what I get when I'm in Patching Mode with Max Editor opened. Things get buggy when I test my device at runtime in Ableton Live. In this case I get only 3072 bytes, there is some serious data loss and my patchers stop to work correctly...
I've done a lot of researches on the web and on this forum too, but I can't seem to find any helping info to solve my problem. Max documentation is quite basic concerning [sysexin] object and I haven't find any attribute that could explain this strange data byte truncation.
Is there a byte limit for the [sysexin] object ? Or maybe it's a bug ?
Here is a small test patcher I've build in order to demonstrate the problem :
Here are 2 sets of data I get from my QVP :
β a full one containing 14708 bytes, which is fine
β a truncated one containing only 3072 bytes
Thank you in advance for your help. :)
All the best from France.
Guillaume
Hi,
I finally got some very interesting infos from the support :
- - - - -
Hi Guillaume,
My apologies for the delayed response. I can definitely reproduce this issue on my computer. As you stated, everything works fine in the Max editor, but in Live the sysex messages are capped at 3072 bytes. This appears to be a current limitation of Max for Live. We can look into expanding the limit, but in the mean time you might need to figure out how to send a series of smaller packets that are below 3072 bytes each. I know that's not a great solution, but it's unfortunately the only current workaround.
I'll create a feature request now to expand the limit.
best,
A.
- - - - -
Hi Guillaume,
What you're encountering is an issue with preallocated data buffers. I'll need to take a look at your report and the associated data before I can say more, though.
...
The difference is that we need to preallocate buffers for the interprocess communication between Max and Live. Whereas we can easily reuse buffers in Max standalone and not worry about the total size. Anyway, I haven't researched this yet, so everything I'm saying has an asterix.
best,
J.
- - - - -
Maybe a fix in next Max release ? π
Well, Max 8.1.4 is out now and this sysexin bug seems to be fixed ! π
I'm now able to receive my 14708 bytes in the device at runtime too, so buffers preallocation is running well in this new version.
A big thank to A. and J. from C'74 dev team for their precious help and great work ! π
Hello Guillaume,
An old thread but I hope you might see this:
I wonder if you would be willing to share your QuadraVerb Plus editor?
I've just brought an old QV Plus out of retirement, and a Max 8 / macOS editor would be a real boon. I'm not using Live, but it sounds as if your patcher works well without it.
Many thanks!
Neal
Hello Neal,
I've never finished my QVP Editor ans I know it's quite buggy. This one was my first Max for Live device and I've learned a lot since then. So if I had to rebuild it from scratch, I would use JS like I did for my Matrix-1000 Editor ! :)
Anyway, I will share my QVP Editor with you with great pleasure, but I think you will have to tweak it a bit in order to make it work outside of Ableton Live. Here is a download link. Please let me know if you managed to make it work the way you want it to. ;)
All the best from France.
Guillaume
Hi Guillaume,
Thanks so much for your reply! β and greetings to you there in France, from just across the water in the UK.
And thank you for the linked material. It opens looking like something 'Live', so I look forward to exploring.
This morning, I got as far as making a patcher to receive individual programme dumps, and convert the 8 x 7-bit MIDI blocks into 7 x 8-bit QV bytes. I was able to grab the data from my ancient user patches (still in the memory, amazingly) for archiving, and confirm programme numbers and names from the data. But that's where I stopped for the time being...
Thanks again, and hope you are staying safe.
Neal
Hi Neal,
You're welcome mate ! :)
As you probably noticed, the conversion of 8 x 7-bit MIDI blocks into 7 x 8-bit QV bytes is a bit tricky !
The QVP "page" system is another thing to be implemented well in Max if you want your QVP to respond correctly to the SysEx messages. That's where my device is sometimes a bit buggy, because my logic patchers are not very well designed and the page number sent with my SysEx is not always the good one... Indeed that's where I wanted to rebuild things using JS, since it's a lot easier and cleaner to do with code ! But I didn't have the time to...
Hope you are staying safe too in the UK too.
Guillaume