LMMS / LMMS/lmms

Improved savefile layout for external resources

Open
#4,922 11 comments 14 reactions 1 assignee Claimed by @Reflexe View on GitHub
core
Dominant language
C++
Stars
10.4k
Forks
1.3k
Avg merge
2d 13h
Merged PRs (30d)
7

Description

Currently, LMMS saves "most" plugins into the mmp files, but not all. E.g. zynaddsubfx or 3osc are saved, but audiofileprocessor only saves a file name.

On one hand, this behaviour is practical, because savefiles stay small. On the other hand, this makes some projects unsharable, especially professional projects where audio file processor is used. With Lv2, there may be more plugins that save binary files and users may get fed up with not being able to load projects from LSP because they miss those binary files.

I'd suggest something like "Save" and "Save as Release", to save either for personal use and for distributed use.

If a project is saved for distributed use, there are at least two options:

1. :rocket: Save binary files as (large) CDATA in the XML: `\x00\x01...`
2. :eyes: Extend savefiles to folders. Binary files are still just referenced by name, and a file with the name is put into the folder
3. :heart: Something else?

1 has the advantage that still everything is just one file, but the files may get very large and you may need to scroll down a lot to scroll past a serialized wave file.
2 has the advantage that project files stay small, and thus easy to read. However, as the whole save-file is now a save-folder, you may need to zip it (like mmpz) to have it in one file. Zipped files are more hard to handle, e.g. in version control or in comparing them with others. Also, this is more implementation overhead.

What are your preferences? Also, what about a "Save as Release" menu item?

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.