Notice that the AVL drums (Red Zepp) are working, the animations are working.
Notice that the LSP sampler has successfully reloaded all 8 samples.
Notice that the Drumkv1 has successfully reloaded all 3 samples.
Notice that the QSampler (linuxsampler) has successfully reloaded all 3 instruments.
Sample files were from varied locations including 'relative' (under the song project folder).
I can guarantee that before these fixes, that would not be possible. Things were messed up.
That's at least four synths that are now fixed And it's not even my original code.
Pardon my language, but that took some really seriously intense mind-fucking debugging.
Hope y'all appreciate it. I accept donations
Portability was a bonus. Any file references under the song project folder are attempted to be kept relative,
while any file references OUTSIDE the song project folder are deemed absolute.
However some plugins insist on storing absolute file paths. Sorry, those stored references can't be portable. YMMV.
Notice: As of these fixes, I cannot support older LV2 plugin configuration data stored in external files as part of an older song.
Storing plugin config data in external folders is now disabled. See the new ENABLE_LV2_MAKE_PATH cmake option. (Not recommended!)
We want that. We want all data stored in one place if possible - the song file. Not spread over several folders.
Hopefully it won't affect many users, since it was really kind of messed up before anyways. It's a new beginning.
[Edit:] Also, the LV2 and LinuxVST base64 binary configuration data stored in song files is now compressed
with qCompress() and qUncompress(), greatly reducing the massive song file sizes with these huge binary blobs.
Some gory details from ChangeLog:
Code: Select all
* LV2 Major rewrite of state/worker support and more, fixes several synths:
- Worker message data now uses new LockFreeDataRingBuffer for bidi comm.
Fixes major problems with synth workers.
- Fixed problems with how our worker thread is awoken. Fixes several plugins.
- Fixed problems with how our EvBuf reads port data. Fixes several plugins.
- Fixed state file storing/reading and locations. State files are stored
in a unique configuration folder for each plugin, even if the song file
is not in its own folder.
- All file references IN or UNDER the song project folder are deemed RELATIVE,
to the plugin's configuration folder. All file references OUTSIDE the song
file folder are deemed ABSOLUTE.
- New cmake option ENABLE_LV2_MAKE_PATH, it is disabled by default !!!
If enabled (NOT RECOMMENDED), the above mentioned configuration folders are used.
If disabled, NO external files or folders are created parallel to the song file.
This is what we want with MusE, all data stored inside the song file if possible.
- Tested OK saving/reloading several synths that were broken before.