Array sizes in PD

Hi everyone, I’m running a Genius v22.4.0 and am trying to figure out the maximum size of a wavetable in a PD array that can be compiled by Heavy then loaded in to the OWL device. I’ve read here on the forum that Heavy has a maximum size of 1MB for the PD patch is can compile from. However, when I try to upload a PD patch that is 408KB (in which there is an array that is 40085 elements, I get a File Upload Error, “file too large.”

I tried making smaller versions of the same patch, and tried with an array of size 17640. This one compiled fine, but the load to the device failed “Error 0x60 Load failed”. This is the patch,

Finally, I halved the array again, to size 9981, and this compiled and loaded and ran!

Is there any guidance on maximum patch file sizes or maximum array data structure sizes?

Many thanks,
Atau

As PD patches don’t support loading from flash storage, you can only load data that is a part of your patch. This means that you will be limited by patch size which includes the actual patch code in addition to your data. I would expect PD patch code to use something like 32-64kb itself, depending on patch complexity.

Maximum patch size depends on hardware on which you run:

  1. OWL1 - 80kb

  2. OWL2 - 144kb

  3. OWL3 - 80kb by default (in backwards compatible mode that you will get when compiling on site)

  4. And if you build the patch offline for OWL3, you can enable using another section of memory for patches which would increase it to 512kb

In order to be able to fit your data in memory on Genius you can build it with PLATFORM=OWL3 option added. If you wonder why it doesn’t happen by default on web builder, that’s because the result would be able to run only on OWL3. It could be enabled once there would be some way to build patches for more than one platform.

Ah that’s exactly the information I needed. Where/how can I specify PLATFORM=OWL3 on the web compiler?
Also, to do offline compiling, would it mean cloning this repo?

thanks, AT

There’s no way to specify it in the web patcher, that’s why I’ve mentioned that you’ll have to build them offline.

You can build patches from here - https://github.com/RebelTechnology/OwlProgram . HVCC that you’ve linked to is the upstream version, but for OWL you’ll have to use a fork. This should all be explained in OwlProgram README file.

Cheers - thanks for the correct repo link. I had seen this one but since it lists as prerequisite the upstream hvcc, I jumped to that assumption. I’ll read more carefully. Meanwhile I’ve been managing with the smaller array size and have gotten a windowed wavetable voice working. But I’ve found a problem with multiple tabread~ reading off the same array - I’m trying to break down the problem, and will post separately when I can reproduce the error. Thanks again.

2 Likes