Store metadata along midi file

Synthesia is a living project. You can help by sharing your ideas.
Search the forum before posting your idea. :D

No explicit, hateful, or hurtful language. Nothing illegal.
Post Reply
emzero
Posts: 13

Post by emzero »

I'm sorry if this has already been asked but I couldn't find anything related.

I would like an option to store metadata (finger, parts, bookmarks, etc) along the midi file.

So if open "Piano Song.midi" in Synthesia, add some finger data and bookmarks, this should save a "Piano Song.synthesia" (or whatever) next to the midi so it's plain easy to share those 2 files to another Synthesia installation and everything should be the same.

I'm a developer myself and I find quite strange how you guys decided to store metadata.

Is this going to be improved in Synthesia 11?

Thanks!
Nicholas
Posts: 13135

Post by Nicholas »

emzero wrote:I'm a developer myself and I find quite strange how you guys decided to store metadata.
I take a very, very conservative approach to modifying a user's file system. The only folder Synthesia ever writes to is shell:appdata\Synthesia (or your Desktop if it crashes :D ).

In your suggestion, if one of those .synthesia files already exists from a previous run, should Synthesia stomp the contents of it? What if you didn't want that? Now the user is angry.

Instead, by making it an explicit "Save As..." decision (with overwrite confirmation prompt) in the metadata editor, the user gets 100% control over the situation. The export process is relatively painless and can be done in bulk (one .synthesia file for many songs, creating less cruft on your drive), so it's not too onerous.

While it's not necessarily ideal today, I'll take that over an app silently overwriting my data any day.
emzero
Posts: 13

Post by emzero »

Nicholas wrote:In your suggestion, if one of those .synthesia files already exists from a previous run, should Synthesia stomp the contents of it? What if you didn't want that? Now the user is angry.
I understand the part of not wanting Synthesia writing all over the file system. But to me, as a Windows user with multiple computers I really hate APPDATA. Whenever I can use the "portable mode" where settings and metadata is stored into the program folder itself, I always chose that. It's waaaay easier to backup and move to another system. I know APPDATA is the way apps are supposed to store data, but again, I hated it from the beginning and I still hate it today.

So if writing .synthesia files next to the midi files (inside folders you are actually giving permission to look into) is not an option I guess I'll just keep with the Metadata editor.

On the other hand, I don't end understand your question. There can only be one and only one .synthesia file for each midi file, matched simply by filename. You can't override one since Synthesia will load one if it finds and all the updates goes into it or create one if it doesn't.
Nicholas
Posts: 13135

Post by Nicholas »

You're right that I was a little unclear, sorry.

I meant the situation where you start with a nice, known-good set of metadata for a particular song. Then, in Synthesia you tinker with the settings a bit -- maybe make a mistake with the hand-split tool and wipe out all the hand-splitting information for the song. Without a way to opt-out of silently overwriting the file, you've just lost something good and replaced it with something bad.

Certainly appdata is a working space where the same problem can happen, but if you've got your settings pulled out into .synthesia files, today those sorts of lost-data situations are impossible.

Also -- for the same reason appdata is the recommended place for data -- you run into lots of corner cases like MIDI files that are being read from read-only CDs, or read-only network shares. You can even pass Synthesia a URL and it'll download a song from the Internet in-situ, with the file never touching your drive. Where should the metadata be stored in those cases?
emzero
Posts: 13

Post by emzero »

You've made some valid points, so... what about something integrated into Synthesia to export the .synthesia file with all the metadata?

I'm not sure yet how exactly Synthesia deals with a .synthesia file if present. Does it use that over its own metadata in APPDATA or what?

I'm just trying to suggest an easier way to share metadata between computers. Because I usually use my desktop PC to set hands and finger metadata and then I have to open the Metadata Editor, import the metadata from Synthesia, save the .synthesia and only then I can go to my piano where I have my Win10 tablet and open synthesia.

I'd just love an easier way to do this kind of things. But maybe I'm the only one that uses Synthesia in more than one device, I don't know.
Nicholas
Posts: 13135

Post by Nicholas »

The rules for metadata in Synthesia are: local user data (set inside the client, manually) overrides everything else. Then .synthesia files. And finally the built-in metadata for the songs that ship with Synthesia. (If locally-set data didn't override .synthesia files, you'd never be able to change anything again once there was a .synthesia file.)

I do agree that something like an export button would be convenient on the song settings screen right inside Synthesia. (On tablet platforms it might invoke the "Send to..." dialog with destinations like email, Dropbox, some other app, etc. On PC/Mac it would just pop up a "Save As..." window.)
Post Reply