Is there a datasheet about the LMMS mmp and mmpz format?

Having trouble with LMMS? Ask about it here.
I know it is a xml and gzipd xml respectively and they are lmms-project files. Is there anything saying what xml tags are valid or why it was chosen over all other music notation formats?
I believe xml was chosen because it was the most convenient they had, and it allowed you to sort the data in whatever manner you wanted while being one of the most well known formats to do so. Again, xml isn't a music notation format, but a data format, and what LMMS produced as an output was something xml was ideal for given how it works. It was capable of containing not only track notes, but instrument properties, automation track fine-tuning controls, FX properties etc, all in a format where a human could (albeit barely) look through it and understand some part of what was going on.
As for valid xml tags, I don't think there is a datasheet anywhere. One's best bet would be to look through a .mmp (not .mmpz, those have gibberish) and see what it contains.
Oflameo wrote:
Sun Aug 08, 2021 6:18 pm
I know it is a xml and gzipd xml respectively and they are lmms-project files. Is there anything saying what xml tags are valid or why it was chosen over all other music notation formats?
^ What monospace said ^
We have discussions about using jSon instead, so be 'conservative' in the amount of work you put into a tool for processing MMP-data!
In respect to tags. Its XML, so tags are up to you
MMP is not the same thing as MusicXML even though they are both encoded in XML and related to music.
Oflameo wrote:
Tue Aug 10, 2021 12:47 am
MMP is not the same thing as MusicXML even though they are both encoded in XML and related to music.
No we know that. MMP is encoded in XML meaning that if you know XML you can make tags. MMP is our own project format, and it is not shared with anything else. You need to write a tool if you want cross-compatibility. Intrinsic, there is none
The clean way to implement such a tool is to extend lmms --dump to output other formats since we know for sure it will always keep up with mmp and mmpz. The quick and cheap way is to use python3-xmltodict to slurp it up, map the compatible attributes, and then dump it in the correct format.
And what about the incompatible attributes?
I drop the incompatible attributes and give out a warning listing each and every attribute that won't be mapped and print it out of standard error (stderr).
Oflameo wrote:
Tue Aug 10, 2021 3:50 pm
I drop the incompatible attributes and give out a warning listing each and every attribute that won't be mapped and print it out of standard error (stderr).
OP if you create such a tool I would be interested in seeing the outcome. If you do choose to do it, keep us in the loop
I spent some time in the past analyzing the mmp files. I did not cover every detail of every plugin, but in case anyone is interested, this was my approach.

I made a very simple song, using one plugin. I saved it as an mmp file. Then it was not difficult to figure out how the notes are stored. Since my attention span for figuring out other people's code is pretty short, I gave up on the plugin settings.

But I soon realized that there was a much easier way for me to avoid hacking the mmp files. It's easy enough to fiddle with the plugins using the GUI and saving my own presets. This is all explained in the manual. The GUI for the built-in synths are similar, which is helpful.

But when it comes to entering notes, I still prefer text, it's just something about my attention span and lack of patience. Nothing specific about LMMS, I have never liked entering notes using piano roll or notation based sequencers. So I use my own text based tool to generate MIDI files, and then import the MIDI tracks into LMMS. I set up the presets in the standard way, and then copy the MIDI tracks where they belong, then mute the MIDI tracks and play them on the LMMS instruments.