Automatic Fingering Prediction 0.1ish

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.
TonE
Synthesia Donor
Posts: 1180

Post by TonE »

Nicholas wrote:or just put in the first couple notes and then go to the next line to avoid having to put the requisite number of dots.
Yeah the dots we would only need for the case where fingering information does not start with the first note in a measure, but later. To know exactly how later we would need the dots. I am happy that you like this suggestion so far.

Maybe you can make it possible that even Synthesia can write out in this .txt format when adding manual fingering information within Synthesia, by clicking on the notes in the falling notes view? So users would have two possibilities to generate such .txt files, directly from Synthesia, or externally seeing the midi file notes somewhere, e.g. in MidiSwing or any other sequencer with staff view and writing in a text editor like Notepad++ as in my case.
Nicholas
Posts: 13170

Post by Nicholas »

TonE wrote:Maybe you can make it possible that even Synthesia can write out in this .txt format when adding manual fingering information within Synthesia...
This is one of those cases where I'd consider deviating from XML. In general, XML is super easy to use programmatically, but I have a hard time swallowing how gigantic it can make data sometimes. I know XML can preserve whitespace (I'll have to see if the library I'm using can do it correctly and we might have to standardize between Mac newlines or Windows newlines) so I could see including something like this format right in the metadata XML. Something along these lines:

Code: Select all

<SynthesiaMetadata Version="1">
   <Songs>
      <Song UniqueId="675403b27132c587463ca15a58fbbeb5" Title="Main Theme" Tags="videogame;nes" Subtitle="Bubble Bobble" Composer="Zuntata" Arranger="Gori Fater" Difficulty="70">
         <NoteAnnotations Tracks="1,2,4">
14258473
382..4.7234
2313
2948300
123959.3
         </NoteAnnotations>
      </Song>
   </Songs>
</SynthesiaMetadata>

The Metadata editor would let you copy-paste stuff in that format directly into some (multi-line) text box and it would get saved correctly in the file.

In some Utopian future, it might even show the note blocks right in the editor with the annotations right on them.

Though, I do agree, adding some amount of flexibility so you can have more than one character per annotation (though, probably not more than 3 or so) would be nice.
vicentefer31
Posts: 899

Post by vicentefer31 »

I have a new idea about how to add the fingering and I think it's very interesting. What we need?
a) The midi file we want to add the fingerings. Example: idea.mid
b) A copy of that midi file where we are going to add the fingerings. We are going to rename as idea.fin
c) A software like PianoRollComposer. A free software which let us add the fingerings in a very easy way.
c) Synthesia read the notes from "idea.mid" and the fingerings from "idea.fin"

I think it's very easy. What do you think?
Picasso: I am always doing that which I cannot do, in order that I may learn how to do it.
Nicholas
Posts: 13170

Post by Nicholas »

What a weird abuse of sequence MIDI events. It wouldn't be that tricky to read them in that format though. But it seems like it'd make other MIDI editors crazy. They would probably only be expecting one of those events per track -- not one per note.

As for having a side-by-side .fin file, I don't see any reason why you couldn't just put the fingerings in the original MIDI.

I'll have to try out PianoRollComposer myself, but depending on exactly how it stores the events, this could be extended to >1 character annotations on notes. Granted, we can't go much more than 2 or so before the text gets really hard to display, but that's still not a terrible way to do it.
TonE
Synthesia Donor
Posts: 1180

Post by TonE »

I tried PianoRollComposer some time ago and my testing result was: FAILED.

Explanation: Somehow I added a few fingering information, saved the file. Reopened the file to check if those information were still there. They were not. Strange. Maybe I tried even more stuff, I do not remember now, but I do not want to use any software which does not work.
vicentefer31
Posts: 899

Post by vicentefer31 »

Nicholas wrote:I don't see any reason why you couldn't just put the fingerings in the original MIDI.
If you add something new to "idea.mid" then it has a new MD5 and this is not good for example for the only scoreboard, so the fingering data should be add to another file like "idea.fin"
TonE wrote:I tried PianoRollComposer some time ago and my testing result was: FAILED.
It works, believe me.
Picasso: I am always doing that which I cannot do, in order that I may learn how to do it.
Nicholas
Posts: 13170

Post by Nicholas »

vicentefer31 wrote:If you add something new to "idea.mid" then it has a new MD5...
That's not the worst thing in the world. Though, I am sensitive to it. There might be one last shimmy to the G Major set before the scoreboard goes live to make sure everything is nice and consistent. I'm still looking into that though.

It does make me think about changing that requirement a little. Perhaps doing something a little closer to the configuration hash might be in order: take the list of "You Play" notes and hash together their pitch, start, and duration. Maybe mix-in some top-level stuff that also matters like the tempo changes. Then you could fiddle around with the MIDI a little and it would still detect as the same song if you didn't change anything related to that. You could even add or edit tracks that weren't you-play, and it would still work just fine.
TonE
Synthesia Donor
Posts: 1180

Post by TonE »

vicentefer31 wrote:
TonE wrote:I tried PianoRollComposer some time ago and my testing result was: FAILED.
It works, believe me.
Maybe in one single scenario, I usually do extensive midi processing, I do not remember now what I tried exactly, but some of simple tests it could not pass for my ideas at that time. Mainly my approach is never sticking to a single software solution, if the solution should work, it should work with any software which can save or export midi files. But maybe you can write a tutorial into the wiki what your exact workflow is with PianoRollComposer?!
vicentefer31
Posts: 899

Post by vicentefer31 »

Hi TonE, I'm going to make a video for you can see how it works.
Picasso: I am always doing that which I cannot do, in order that I may learn how to do it.
vicentefer31
Posts: 899

Post by vicentefer31 »

Well, here is the video
Picasso: I am always doing that which I cannot do, in order that I may learn how to do it.
User avatar
pasqualerossi
Posts: 3

Post by pasqualerossi »

Hi guys, I just bought the learning pack of Synthesia, I'm a bass player and want to have funny with piano for composition, but learning is hard without fingering, I know just little about programming but reading your post maybe I've a solution that can be a pure nonsense but...
it can be created a instrument in mute within the file midi like "piano fingering" that play C=1 D=2 E=3... for the left hand and the sharp for the right ecc...?
TonE
Synthesia Donor
Posts: 1180

Post by TonE »

pasqualerossi wrote:it can be created a instrument in mute within the file midi like "piano fingering" that play C=1 D=2 E=3... for the left hand and the sharp for the right ecc...?
This would be another method of encoding fingering information as real midi notes data, as pitch classes, using any first five white keys starting at c for the right hand and any five black keys for the left hand.
User avatar
pasqualerossi
Posts: 3

Post by pasqualerossi »

Not only for fingering, but using the other pitch, like C3 rather than C4 can be added also things like "forte" "fortissimo".
TonE
Synthesia Donor
Posts: 1180

Post by TonE »

pasqualerossi wrote:Not only for fingering, but using the other pitch, like C3 rather than C4 can be added also things like "forte" "fortissimo".
Well, ok, then you mean using exact pitches rather than pitch classes.
User avatar
pasqualerossi
Posts: 3

Post by pasqualerossi »

put this case: there 8 octave, the first octave C1=left thumb, D1=left index... C#1=right thumb D#1=right index...
second octave C2= a C#2= b...
third octave C3= A C#3= B... (for Karaoke lol)
but dunno how to put the word in phrases rather than single letter, anyway you got the idea... I wish.
Strainer
Posts: 6

Post by Strainer »

Piano Roll Composer seems to do the work pretty well, especially because it offers a GUI.

Greets
User avatar
DC64
Posts: 830

Post by DC64 »

So now we have manual fingering, we will need to develop a system to make auto fingering.
"And now for something completely different."
mquarmoc
Posts: 1

Post by mquarmoc »

+1 for autofingering.

Everything auto and intelligent is good, like "Exhibition Mode"
TonE
Synthesia Donor
Posts: 1180

Post by TonE »

See also this manual fingering writing tool. You can write fingering in TonE text format then convert to *.synthesia format.
TonE
Synthesia Donor
Posts: 1180

Post by TonE »

I found a beautiful comment about piano fingering:
At a very beginning level there will mostly likely be a single "correct" fingering for a given piece, and you should generally stick with your teacher's or the editor's fingering in this case. As you progress to intermediate-level music, you'll find that there are multiple possibilities for piano fingering that change according to your hands and—more importantly—the musical effect you wish to achieve. At this point you'll need to "finger it out for yourself"!
Source: http://www.key-notes.com/finger-numbers.html
Post Reply