Fingering in %APPDATA% folder but on Android

Collaborate with other modders to make Synthesia the way you want it.
Always the latest versions: [ colors.xml | ui.xml ]
Read the Getting Started topic to learn how important it is to MERGE YOUR CHANGES every time you download a new dev preview.
Post Reply
bluestreak711
Posts: 15

Post by bluestreak711 »

Edit: Solved. Thanks Nicolas!


I know how to find the fingers.xml file on a windows pc, but not on an Android device. My purpose is to easily backup and insert fingering directly into the data file that stores it. Can anyone help me out by telling me where to find it on an Android device?
Last edited by bluestreak711 on 12-09-19 9:02 pm, edited 1 time in total.
Nicholas
Posts: 13170

Post by Nicholas »

Unfortunately this data lives in a private place on Android that is inaccessible unless your device is rooted. :?

We originally tried leaving it in one of the public places (to support exactly the kinds of use cases you described), but quickly discovered through crash reports, 1-star reviews, and emails from Android users that only the private area is guaranteed to always be present on all devices.

I've been thinking about a single-tap "import/export all data" feature that would let you save a zip file someplace else on your device or SD card or wherever. That feature doesn't exist today, unfortunately. So, the best (awful) advice is to do your finger hinting on a PC or Mac and then extract that metadata into a .synthesia file that can be more easily shared on iOS and Android devices.
bluestreak711
Posts: 15

Post by bluestreak711 »

This is extremely helpful information believe it or not. I can either try to root this phone or install Synthesia on one of my other rooted phones. Can you tell me where I can find this data on a rooted Android device?
Nicholas
Posts: 13170

Post by Nicholas »

It should be someplace like /data/data/com.synthesia.synthesia
bluestreak711
Posts: 15

Post by bluestreak711 »

I successfully rooted my device and I do not see it in that location. I accessed a Meta data folder under apps in File Explorer, but still no fingering. I also do not think it is saving my fingering I set eash time I close the apps.
Nicholas
Posts: 13170

Post by Nicholas »

Hmm, usually file saving is all-or-nothing. Is anything custom appearing anywhere (say, the recent songs list on the title screen)?

I think the save location varies by device and manufacturer. It'll be around there someplace. If you can search the filesystem, try looking for "settings.xml". The rest of the XML files (including fingers.xml) should be in that folder too.
bluestreak711
Posts: 15

Post by bluestreak711 »

It has been several months, but I have great news to report. I found the directory using an app called Root Browser. The regular file explorer apps will not access that directory. I want to thank you for all your help and I feel like the work all the creators and community is paying off. I would like to suggest a feature for backing up the fingering different than what you were thinking. On the song options screen where you can select which hand, or both, to play the song. There should be a button to cause a message box appear displaying the metadata. That way, fingering can easily be copied and pasted to backup and restore it.
Lelle
Posts: 2

Post by Lelle »

First I like to say that I have just started to use this wonderful program and think it will help me alot to "finally" learn to play the Piano.

After installation on a Windows stationary computer I realized that I needed a bit more mobility to sit down and practice at the best keyboard in the house where we don't have a computer. So I installed on an pretty old Android tablet (Google Nexus 10).

I've googled quite some and looked around here to see how I could import fingering data from windows to Android. I'm stuck at getting it into the Android tablet.

1. I created a .synthesia-file with help of Synthesia metadata editor by first Adding a song. Then import data from Synthesia and saved to a file named after the song followed by '.synthesia.'

2. I copied the created .synthesia file in step 1 to the Android tablet and the same location as the song (which is not changed in anyway which else would cause it to have a different UniqueId/hash).

3. Fired up Synthesia on the Android tablet and started the song, but the fingering information was not there.

How should I do to get the fingering information over to the Android tablet?

I have the following ideas (just brainstorming) regarding settings like songinfo, metadata_store, users. Device specific configuration like midi configuration should perhaps be saved per device.

1. On Android make it possible to through settings toggle if the settings file is to be saved on a path reachable without root ex. /Android/data/org.synthesia.synthesia/files/ (think there is an empty folder created there after installation).

2. Possibility to tell Synthesia to use a network path to a share to be able to have it use the same metadata/user-configuration among all devices at home. Possibly this might cause problem with several devices accessing, writing to the same file. Maybe this can perhaps be solved with some lock or a database file (lock on operations) instead, checking for last modified (and warn if there is a newer version of metadata on the share). But using this at home in most cases I guess that it would be rare that several devices will be used at the same time to create fingering-data.

3. A cloud storage for the metadata.

4. Directly in Synthesia possibility to mark songs and export metadata that is copied temporary to some cloud service. Then one can from another device choose to import from there.

BR

/Lelle
Nicholas
Posts: 13170

Post by Nicholas »

I've been leaning toward something closest to your #1 suggestion: a sort of backup/restore feature where you could tap a button to generate a zip with all your settings. These could be exported/copied/migrated/whatever between all four platforms using another button that would take that zip and restore its contents to Synthesia's private space again.

The only reason we use the private location is because it's the only one that is 100% guaranteed to exist (and we still sometimes see crashes coming from trying to read/write to the folder on Android *sigh*). The earliest versions wrote to a public folder (to support exactly this use case) but we started getting bug reports from users where that storage location simply wasn't there, causing the app to crash.

That said, I'm not sure why the .synthesia metadata isn't showing up in the app. (One possible cause that can be a little frustrating: if you've ever entered a single finger hint yourself for a song, that becomes "local" metadata, which takes a higher priority than "external" metadata found in .synthesia files. So it's very easy to override that metadata. Really, sometimes I almost regret my decision to have Synthesia never modify a MIDI file. It would be super easy if the annotations were in the file itself.)
Lelle
Posts: 2

Post by Lelle »

I have from windows 10 exported the songs into a file forgotten.synthesia and put that on the Android tablet in the same directory as the song forgotten.mid. I double checked that the .synthesia file has the fingering info.

I have not done any fingering och konfiguration for the song on the android tablet. I have though configured key labels and note lables and on "Hands, Colors and Instruments" Changed from left to right hand. I don't know if this might have saved any song specific data in the metadatafile so that it don't recognise or care about the .synthesia file?

Perhaps a configuration about if one want to prioritize external .synthesia files if found with the same name as the song without suffix so that will be imported and overwrite the local metadata for the song?

But am I doing right by putting the .synthesia file named as the song in my case forgotten.synthesia in the same folder as the song itself forgotten.mid?

If so, I guess I have to uninstall the app and install again or is it enough with clearing data and cache for the app and again unlock the app, configure song path and see if I get the song and fingering-info imported?
Nicholas
Posts: 13170

Post by Nicholas »

I'm very sorry for the wait on this!
Lelle wrote: 09-11-20 11:19 amI have though configured key labels and note lables and on "Hands, Colors and Instruments" Changed from left to right hand. I don't know if this might have saved any song specific data in the metadatafile so that it don't recognise or care about the .synthesia file?
It shouldn't have. The "local" finger hints should only overwrite those found from external sources if they're different. Even if you change the finger hint on some notes, as long as you change them all back to the same values as the external data, they will stop overwriting and "taking control".
Lelle wrote: 09-11-20 11:19 amPerhaps a configuration about if one want to prioritize external .synthesia files if found with the same name as the song without suffix so that will be imported and overwrite the local metadata for the song?
Something like this sounds like a good idea. This is not the first time this problem has come up.
Lelle wrote: 09-11-20 11:19 amBut am I doing right by putting the .synthesia file named as the song in my case forgotten.synthesia in the same folder as the song itself forgotten.mid?
Yes, that should be all that is required. (There is a new wrinkle starting in Android 10 where that folder must be one that Synthesia is allowed access, but since you've got a Nexus 10, I'm guessing you're not running Android 10.)
Lelle wrote: 09-11-20 11:19 amIf so, I guess I have to uninstall the app and install again or is it enough with clearing data and cache for the app and again unlock the app, configure song path and see if I get the song and fingering-info imported?
I believe clearing the data and cache for the app should be enough. (You'll know for sure if everything else disappears like the recently played song list on the title screen.)
Post Reply