This follows up on my previous thread. I’ve succeeded in getting multiple tabread~ to read an array, and my PD patches are compiling ok on the web compiler. I now have a load error when transferring to the Genius, and it depends on the number of voices I try to run.
The core patch is one voice (or grain), and this compiles/loads fine.
I have made a two grain version, and this also compiles/loads no problem and plays. It’s a joy!
But when I try to go four grains, it compiles but does not load. Any ideas on what might be happening? Has the compiled filed gotten two big for the maximum transfer?
The Genius display shows “ERROR: Load failed”
The compiled patch binary is in “Build/patch.bin”, so you can have a look at its size to see how much space it needs. This is pretty much what gets loaded in memory and runs as your patch on device.
I would also suggest measuring CPU/memory usage, maybe your patch is too slow too run even if you manage to fit it in memory? Note that as patch gets twice as big, it might require more than x2 of microcontroller’s resources because:
- faster memory is utilized first
- higher cache utilization, so overall performance might become less efficient
I wonder if it can still manage with 3 grains? Also, does the same happen if you load the patch into memory instead of storing (use
make load command for this). Currently you can store a patch that will be too large to run, because storage layer is saving both patches and resources (samples or arbitrary user data) and it doesn’t require patches to be runnable in order to save them.
Thanks for your reply and for the info. I’m still using the web compiler, so the only binaries I have access to are the .syx and .js files that are generated. Those sizes are:
1 Voice: .js 159kb / .syx 86kb
2 Voice: .js 164kb / .syx 92kb
4 Voice: .js 175kb / .sys 105kb
Meanwhile, since it’s the web compiler, I use the load command to try to load into memory as a matter of course. It’s this “load” that invokes the error on the device at the end of the progress bar onscreen going to the end.
I’ll try with 3 voices, and see about optimising other parts of the patch.
Ah I see. Well then you’re reaching the 80kb limit. Sysex output would be around 8 / 7 from binary patch size plus a few extra bytes as headers, so the math adds up.