Problems exporting finger hints. Please help!

Have questions? Just saying hello? This is the place.
No explicit, hateful, or hurtful language. Nothing illegal.
Post Reply
aptomm
Posts: 4

Post by aptomm »

Friends, maybe I'm not doing something right, but it's not working for me to transfer the finger hints information from one computer to another. I made the .synthesia file, my question is, do I have to put both the midi and the .synthesia files in the same folder on the destination computer and does it work automatically when I open the midi in Synteshia? Is there something else I should be doing?

I've made sure that the .synthesia files are in a folder that's being monitored by the Synthesia song library, but it doesn't load the information automatically. Please, I really need the help!
Nicholas
Posts: 13172

Post by Nicholas »

It should be enough to have them in the same folder.

Which information were you trying to move over and which isn't showing up on the new computer? For things like finger hints, there is a hierarchy that Synthesia follows for where it gets its information. Each of the following will overwrite anything earlier in the list:
  • Metadata that is built-into/ships-with Synthesia (generally only applies to the built-in songs).
  • Metadata found in .synthesia files near song files.
  • Local changes made right in the interface by the user.
So, if you ever made finger hint changes on the "new" computer, those finger hints would supersede anything found in a .synthesia file.

One good way to check whether this is the case is to set some of the other fields in the .synthesia file for that song (say, the title, subtitle, author, copyright, etc.) Because there isn't a way to modify those right in the app, so it'll always use the values from the .synthesia file (if they're being found/loaded correctly). Then if your finger hints still aren't showing, you'll know it's because there are local changes.
User avatar
jimhenry
Posts: 1904

Post by jimhenry »

I hadn't thought about the local changes versus metadata for finger hints.

Do local changes only override the metadata for the note they apply to? In other words, if metadata has hinted a whole song and I change just one note's hint, will I see all the metadata hints with my one local change?

Is there a way to globally erase all local changes?

Maybe there should be an option to display locally changed finger hints differently from metadata? Color would be the obvious way but a handwritten looking font versus a printed looking font would be cute.
Jim Henry
Author of the Miditzer, a free virtual theatre pipe organ
http://www.Miditzer.org/
Bavi_H
Posts: 122

Post by Bavi_H »

aptomm wrote: 04-03-24 12:07 pmit's not working for me to transfer the finger hints information from one computer to another. I made the .synthesia file [...and] I've made sure that the .synthesia files are in a folder that's being monitored by the Synthesia song library, but it doesn't load the information automatically.
Nicholas wrote: 04-03-24 1:48 pmif you ever made finger hint changes on the "new" computer, those finger hints would supersede anything found in a .synthesia file.

One good way to check whether this is the case is to [...]
If you are able to run the Metadata Editor on the second computer, here is another way to check if there are local fingering changes for the song:
  • 1. On the second computer, open the Metadata Editor, add the song, and import the fingering data from Synthesia. If the song has any "local changes" fingering data, you will see a message that it imported fingering data and see data appear in the "Fingers" field.
If you want to delete the local fingering changes for just that one song, continue with the following steps:
  • 2. Save the metadata as a .synthesia file in a song folder that Synthesia is set up to monitor.
  • 3. Open Synthesia, open the song, and start the falling notes screen in any mode. Then close Synthesia. Synthesia will notice the song's fingering data matches the metadata file and remove the song from the local changes file.
  • 4. Now you can remove the .synthesia metadata file from the song folder. At this point, the song will have no fingering data in either the local changes file or in a .synthesia metadata file.
Now you can copy the desired .synthesia metadata file from the first computer and Synthesia should now be able to see and use it.
Bavi_H
Posts: 122

Post by Bavi_H »

jimhenry wrote: 04-04-24 9:00 amIs there a way to globally erase all local changes?
It looks like the local finger data is saved to the fingers.xml file in the data folder. To remove all the local finger data on the Windows or Mac versions, you can go to the data folder, make sure to close Synthesia (or the Synthesia Configuration window), then delete or move the fingers.xml file. (On the Android and iOS versions, I think you can not access the fingers.xml file, so it's not possible to remove the local finger data that way for those versions of Synthesia.)

jimhenry wrote: 04-04-24 9:00 amDo local changes only override the metadata for the note they apply to? In other words, if metadata has hinted a whole song and I change just one note's hint, will I see all the metadata hints with my one local change?
According to my tests:

Before you open Synthesia, if a song has a metadata file with fingering but no local changes fingering data, then when you open Synthesia, it will load the metadata fingering into memory.

If you make any fingering changes to the song, then when you close Synthesia, all the fingering data in memory for the song (both the the unchanged fingerings and the modifications) will be saved to the local changes file.

The next time you open Synthesia, it will load the fingering data from the local changes file instead of the metadata file.


More advanced discussion:
  • If you open Synthesia again and manually modify the song's fingerings so that they once again match the fingerings in the metadata file, when you close Synthesia, Synthesia will notice the fingerings once again match the metadata file and remove the song from the local changes file. Then the next time you open Synthesia, it will use the fingerings from the metadata file again for that song because the song no longer exists in the local changes file.
  • It is actually a little more involved when you consider the internal metadata and the .synthesia metadata files in song folders separately. I started doing some tests to characterize the possibilities when you make changes, but it was getting complicated to explain reliably and didn't seem to have much benefit for now. Just be aware of how Nicholas explained it in his post: When you open Synthesia, if multiple sources of finger data exist for a song, Synthesia will only use the last one in this order: internal data, song folder .synthesia files, or local changes in the data folder fingers.xml file. It won't try to merge anything, only the last source that has fingerings for the song will be used.

jimhenry wrote: 04-04-24 9:00 amMaybe there should be an option to display locally changed finger hints differently from metadata? Color would be the obvious way but a handwritten looking font versus a printed looking font would be cute.
Because Synthesia saves both the modified and unmodified fingerings to the local changes file, I think Synthesia isn't doing anything special to keep track of which notes you manually changed. So it might currently be difficult for Synthesia to indicate the changes you made from the original fingering with a different color or font?
Nicholas
Posts: 13172

Post by Nicholas »

jimhenry wrote: 04-04-24 9:00 amIs there a way to globally erase all local changes?
The most important part of the answer to this question is the iPad/Android situation: currently the only "workaround" to globally remove that metadata is to uninstall/reinstall the app, which is completely unacceptable.

Bavi_H wrote: 04-06-24 1:34 pmAccording to my tests...
Bavi_H wrote: 04-06-24 1:34 pmMore advanced discussion...
FWIW, all of that sounds correct. In general Synthesia tries not to store data if it's equal to the "default" value. (This is true for almost all of the data files.) So the behavior you witnessed where manually changing finger hints in the app back so they match a previous source will have the effect of no longer storing them locally.


A technical aside that doesn't have anything to do with these questions but that I think is kind of neat:

There's a more interesting process going on under the hood: because there are many different ways to record the same finger hints, the app actually "canonicalizes" both representations before comparing them. Consider a single track, two-measure song in 4/4 time with 8x quarter notes, one at each beat. Let's say they were all left-hand notes and the finger hints (where dashes are "don't display a hint") for the eight notes should be:

2 - - - 1 - 3 1

All of the following are valid ways to say the same thing in Synthesia's finger hint markup (with the last couple examples being particularly pathological):

• t1: 2---1-31
• 2 m2:1-31
• m2:1-31 m1:2
• m1:44444444 m1:44441-31 m1:44-- m1:2-

Because of the "go-to" nature of the "measure" and "track" instructions, Synthesia has to follow through the markup almost like a list of code/instructions. So, when comparing finger hint markup between data sources, internally it "applies" each set of markup to the song's notes and then completely re-generates the markup from scratch. Finally, it compares the two newly-generated strings to determine whether the finger hints are actually different. Because it's own hint markup generator is deterministic we can guarantee that comparison will be resilient to all kinds of stuff like hand-crafted markup, changes in Synthesia's own markup generator between versions, etc.

It's been >10 years or something but I think that's a pretty cool system that I'm still a little proud of. :lol:
Post Reply