Hey, sorry for being late to the party. Maybe the next time just ping me
The "programs" in the cache file are really just (read-only) factory presets. You can choose them with "program_set".
What you're looking for are the "preset" methods, i.e. "preset_save" and "preset_load". Those are for storing and recalling user presets. The presets are saved in standardized locations, so you can simply do
[preset_save foo( and
[preset_load foo(. They will automatically show up in
The "program_read" and "program_write" methods are more low-level and allow to save/read presets using custom file paths.
Finally, there's "program_data_set" and "program_data_get", which lets you work with the raw plugin state as a list of bytes, e.g. to build your own preset management.
Actually, the section
[pd presets] in the help file mentions "preset_save" and "preset_load" first, so I'm surprised you didn't consider them. Maybe you still have an older version? The documentation has certainly improved (but it is still far from perfect).