In my opinion this is too complicated format. Also the finger numbers are not as I wanted them. My ideal was:Alright, I've finished the grammar for the written-out finger hint data. It's as similar to what we discussed over in Frost's automated fingering thread as I could make it. Maybe a little simpler.
Here are some specifics (pretty much just for TonE ):
Whitespace (and ANY character not in 0-9, :, -, t, or m) is ignored and can be used anywhere.
The numbers 1-5 used anywhere outside the context of a track or measure command means the "next" note is left-hand, finger 1-5.
Similarly, 6-0 means right-hand, finger 1-5 respectively. (So 6 is finger 1, 9 is finger 4, and 0 is finger 5.)
Use - to skip a note. "132-43" would apply 5 labels to 6 notes where the 4th note had no label.
Jump to assigning finger hints to notes in a different track with "tN:" where N is an integer. So "t14:123" would add 3 labels to track 14. (Tracks are zero-based.)
Use "mN:" to jump to a different measure in the current track. Measures are ones-based. "t2: 123-4 m7: 789" will add seven labels to track 2... four of which are in the first (and second, if it spills over) measure and another three to the 7th measure.
That's it. Everything for the same song goes in the same big string. Use newlines for clarity, but they're not required. My serializer is probably going to put spaces between measures and newlines for each track. Still, whitespace is totally arbitrary. This is hard to read but perfectly valid: "t1:1248t2:325m9:974"... instead though, you'd probably want to write it something closer to this:
Code: Select all
t1: 1248
t2: 325 m9:974
The default track and measure are 0 and 1 respectively.
The "next" note mentioned in the first bullet refers very specifically to the order of note-on events in the original MIDI file. I was (painstakingly) able to create a mapping back to the "original" positions of all events and tracks. So a "t0:" command will refer specifically to whatever was in the first track in the MIDI file... all of my wacky splitting/merging/deleting/re-ordering aside. This makes it a little hectic for format-0 MIDI. My recommendation: don't use format-0 MIDI.
Finger hints are auto-saved in a new fingers.xml file. It'll look something like this:
Spoiler:
And I'll be adding a method in the synthesia-metadata-gui (very soon) to extract auto-saved in-Synthesia finger hints out to metadata files you can share with friends or on the forum or whatever. The process will be roughly:
Use Synthesia to enter finger hints.
Open the metadata editor.
Add the songs you want to share finger hints for.
Click the (forthcoming) "Import Finger Hints from Synthesia" menu option.
Save the file and share it.
As always, including that .synthesia file someplace in your watched folders path will cause it to be automatically loaded and finger hints should just show up.
The dev preview with all of this will be up very soon (today probably), and then I'll be embarking on the journey of adding all the finger hints from the G Major original PDFs to the in-game songs. If anyone wanted to help out with that, you'll totally get a credit in the readme and I'll be forever grateful. Like past data-entry attempts, we'll just agree on something like "I'll take the 'Medium' folder... you get 'Easy'."
right hand: 12345 for the fingers 12345
left hand: 67890 for the fingers 12345 (left hand = right hand + 5, except you have to imagine the 0 as a 10)
As in my previous proposal no "track consideration" was available, this can be accomplished simply by using multiple text files, one for each track which contains any fingering information. Then the proposal as in the original post, each line denoting a measure, jumping over notes via ".", but a "-" is also ok, I would prefer a DOT as I imagine a note more like a dot, than a horizontal line = minus.
The numbering system above is not for easy typing on the laptop or pc, "the logic should be easy in the human brain". Mostly songs have right hand information, so we can say at least for beginners, the right hand is more important than left hand, as the main melody is usually in the right hand, the left hand contains only the bass or additional chord notes, not always, but very often. At least for beginner songs. This is why the simple numbers 1..5 should just be mapped to the RIGHT HANDs 1..5 finger numbers.
For the LEFT HAND, I would prefer using the editing method via AutoHotkey, using LEFTCONTROL + 1..5, which would map to 6..0. Each time I would see a fingering information on the bass clef, which is lower on the sheet, I would simply press LEFTCONTROL additionally, which is also lower on the QWERTY area. In short for the fingering we never need to spend any "brain power", always using 1..5, depending on G-clef or bass-clef WITHOUT a leftcontrol or WITH leftcontrol.
Finally, how could be the fingering file names? For example as follows
song.t1.txt
song.t2.txt (in one-based fashion) or
song.t0.txt
song.t1.txt (in zero-based fashion)
I would prefer the one based fashion in this case. Most songs would have anyway most fingering information on a single track or at maximum on two tracks.
The idea of this whole method is, to be able to write EASILY fingering information in following scenario:
- you have already your midi files, in the example above as song.mid
- you have the correct fingering information in a real book or in .pdf files, which relate exactly to the above midi files
- you do not want to write your fingering information in synthesia
- you want to write the fingering in a simple text editor as Notepad++ or Vim or Emacs
- you do not want to think much while writing the fingering
- you want to be able to write the fingering information very quickly
- you want fingering information be easily shareable and easily visible in forums, meaning every new line is a new measure.