unfortunately, I (personally) think that model is a bit confusing... as it mixes the idea of where to source a file from, and where it goes. /kick.wav seems to refer to a file on your local file system in the root directory.... yet, its basically using the 'absence' of a file to say 'do it yourself'. this of course then leads to a potential problem - lets say a user creates a patch that uses a local sample, but then deletes/moves it (say a month later) on the local machine. now they only get an error when the patch is run (and when the sampled is triggered), since its now a 'dynamically resolved file'.
ideally, I think the way forward is library dependencies (which starts to get us in to packaging)
so... (first , baby steps, so local library dependency only*)
a) libraries are extended, to have a resources directory, with sub types, so we end up with:
/patches/
/objects/
/resources/waves
/resources/samples
/resources/data (?)
(note: the subdirectories under samples are under control of the user, like objects/patches)
b) we then allow a patch to be dependent on other libraries (initially local user libraries)
c) dependent libraries, have their resources sync'd to the SDCard, under the library name
so on a sd card we have potentially have something like:
/mypatch/localsample.raw
/mylibrary/waves/wdorf/mywt.wt
/mylibrary/samples/bigkit/kick.wav
d) play objects etc.
questions here about how to 'reference' a file in a library, it seems possibly you might need something like: of course, this could with a choose option be 'hidden' to some extent from the user, with a library file selection dialog. (the referencing format, is needed for dynamic handling)
I think the above, would allow the user to not only keep there samples etc together and share among patches, but also not have to worry about uploading files manually to the SDCard.. and (for me importantly) it works with multiple axolotis, you don't have to worry, if you have uploaded things to a particular sdcard or not, its 'automatic'
(I suspect for many users, they may just have one library which holds everything, for simplicity)
note: the user already, has a local library, in ~/Documents/Axoloti, so using the above logic, we can place a resources directory there, and immediately have something a user can use without 'thinking about it'
(id say a default library dependancy of factory + contrib +local , is reasonable, and for now we still don't allow resources to be added to user library, as I fear samples etc there, is calling for uncontrolled growth, and slow syncing times ... adding factory, has a nice side effect, that we can finally remove the drums from the flash rom, IF we say an sdcard is required, otherwise we need to support embedded samples in patches )
(*) of course, libraries (and resources) can of course be hosted on git still, by local library dependancy, I mean we are not going to say a patch can be dependent on a remote library (package) on the internet, and axoloti, goes download it. the user will have to have already added the remote library in preferences.
anyway something, we can agree on post 1.0.10 release, and then I can take a look at.