An additional nuance to this requirement: if a file is referenced external to the .vcv file, it can be changed or deleted later. One person may consider being able to change the external file and have those changes visible in the patch as an advantage; another may consider it an unwanted side-effect.
I personally would prefer behavior that makes a safe copy of any external data into the patch file so that it is a frozen snapshot in time. Only if I explicitly import a new version of external data into the patch should it update the behavior of the patch. This way, I don’t end up with patches and random file dependencies scattered around my hard drive. That gets hard to manage over time unless you have a meticulous system to know what audio files are used by what patches, which are safe to edit/delete, and which must be left as-is.
So the second requirement…
… ends up satisfying my preferences for simplifying state management of patches on a single machine also.
Many samplers (and this is the strategy we are pursuing with short circuit this year) store the path and md5sum or some such. Then the obvious implementation for missing sample can also be used for changed.
Thanks for the tag. I’ll keep an eye on this discussion, but I have a ton going on at the moment, including a new project that’s taking up most of my time. It’s unlikely that I’ll be updating my Voxglitch samplers anytime soon. I wonder if storing a URL to the samples online might be worth considering. When the patch loads, it would download the resources locally and use the local copies whenever possible.
I inserted the “Save sample in Patch” function in the context menu of my player/sampler modules.
When vcv is launched the module tries to load the sample from the reference, and if it is not found it is loaded from the patchfile, without losing the link to the original file.
I also noticed that the onSave() function is only executed when vcv closes or when a manual save occurs, and never on autoSave, this is very good when working with large sample sizes.