Making sheet music out of untimed hand played and piano roll midi files

• May 28, 2021 - 15:40

If you look at my profile and scroll through the scores, you'll find that I have made sheet music out of player piano rolls and hand played midi files that I didn't play to a metronome.

MuseScore has an algorithm of some sort that can find the approximate tempo of a midi file and quantify it to that tempo (though the software will remove syncopation and mess up grace notes). I use this to my advantage to make piano roll transcriptions, and sheet music of my own playing.

Unfortunately, the program has a terrible time mapping swing in midi files (especially foxtrots from piano rolls) and I usually have to quantize everything to an 8th note or 16th (depending on if I use normal tempo or double time).

This method is very time consuming and I wish there was a way that the program AT LEAST WOULDN'T REMOVE SYNCOPATION!!!! Correcting the removed syncopation is the most time consuming part of the process.


Have you tried playing wiht the swing settings in the import panel? In general swing shouldn't present any particular difficult - no more so than the usual difficulties inherent in any MIDI import, that is. Can you attach a specific MIDI file you are having trouble with?

But I would also say if the software you are using to record your MIDI file makes the simple act of quantizing "very time consuming", you might consider different software for the recording. Quantizing should be trivially simple in most MIDI recording software (eq, pretty much any DAW).

In reply to by Marc Sabatella

It's not that I'm having any particular difficulty but when MuseScore imports a piano roll scan that was recorded with swing (foxtrots played by J. Lawrence Cook are a perfect example) then the swing turns into notes in triplets to simulate swing which is exactly what it is. I have to then select everything except for grace notes, triplet trills etc. and quantize everything else.

In reply to by Marc Sabatella

Ok here's a midi file of a piano roll that i tried to quantize. It has a constant tempo because it's a timed piano roll puch matrix midi file. I split the tracks to help MuseScore not make an illegible piece of junk but it still couldn't map the swing no matter what setting I used on the import panel.

The second midi file (Your the cream in my coffee) is a straight piano roll scan that is not timed or anything. I've managed to quantify these but only by extensive syncopation fixing and quantization to remove all the swing which in this case is very very badly mapped into a mess of tuplets and augmented notes.

In reply to by Piotr Barcz

Carolina Shout seems off by a fraction a beat pretty much throughout. That is the notes that should be on the beat are not. No doubt that plays havoc with the swing recognition. If you can shift this in your sequencer to coincide with the metronome better, you'll have much better luck I suspect. Also probably better if you can convince your sequencer to output the relevant metadata to the actual piano track.

In reply to by Piotr Barcz

As far as I know, MuseScore doesn't usually "figure out" tempo, it's normally recorded directly in the MIDI file. But in cases where the info is missing, I don't think there would be any way to guess it. But my point here is, the MIDI file doesn't have a notion of "triplets" - just notes at pretty varying places relative to a beat that in fact is not the actual beat of the song. There's no way for MuseScore to recognize what you "intended" the file to contain, it can only see what is actually there. That's why being careful to play to a metronome, and being sure to quantize to that before export the MIDI file, is vitally important is a format like MIDI - never intended to be used for notation - is going to have any hope of producing decent results.

In reply to by Marc Sabatella

The thing is, this happens with midi files that have swing and are conventionally sequenced and the swing compensation just doesn't get rid of all the triplets. The only way I've found to make sheets from these files is to go through them and select all the notes that aren't part of triplets that are necessary to have in the score and quantize them to straighten the rhythm...

In reply to by Marc Sabatella

It is actually impossible for me to quantify a piano roll without Smart Tempo of some sort. This is a feature only high end paid programs have and I cannot afford to get Logic Pro or Ableton Live, both of which have that feature.

Piano roll scans that I have aren't recorded by me and even if they were there is no way for me to record them to a metronome.

In reply to by Pentatonus

Ummm, yeah, sort of, you can still see that a lot of the notes are on the second voice which isn't right, and also, there are still some screwed up spots in the swing even though the song is quantized...

But also, I want two staves, not four. I don't know really what this program does but I usually don't get that clean of a result...

In reply to by Piotr Barcz

Best way to get only two staves would be to use only one MIDI channel. As it is, MuseScore sees separate tracks and separate channels and thinks this is a two-pian duet. But assuming you are using track 1 for the top staff and track 2 for the bottom, just uncheck "split staff in the MIDI import dialog for each track, then hit apply

And indeed, you won't get a clean result importing MIDI - it was never designed to be a notation format and lacks a lot of really basic info that would be needed for good results.

In reply to by Marc Sabatella

I do usually uncheck the "split staff" because of how it doesn't even split the staff correctly xD, I have to admit though, this program has a fairly solid algorithm since I have actually hand played midi files and made sheet music of them as well. I have an example attached. I hand played the midi file as smoothly as I could but I did NOT record it with a metronome, MuseScore just finds the tempo and quantized the midi and made some pretty ok sheet music that I then edited because of how the program removes Syncopation (that's the one major annoyance). I kind of wish that the dev team would build on this and maybe incorporate an AI neural net or something to make sheet music from midi imports conform to modern notation conventions and so on.

Attachment Size
Maple Leaf Wrong.mscz 44.39 KB

In reply to by Piotr Barcz

Again, there is no such thing as "correctly" when it comes to how MIDI data is turned into notation. Every single AI algorithm that attempts to reconstruct the missing information - including the AI algorithm already built into MuseScore - will guess differently as to the best way to do it. That's just the nature of trying to use MIDI to build notation - tons and tons and tons of crucial info is missing, and a program will need to use AI to guess how to best reconstruct it. In almost all real world cases, you can expect to spend many times more work overriding the AI decisions using your own expertise than simply making the decisions yourself to begin by entering the music directly. AI technology just isn't anywhere near the level where you can expect this to go well in any but really simple cases. But sure, it's conceivably that in the coming decades this technology may mature. but consider. people have been working on this since the 1980's and it's still primitive.

Do you still have an unanswered question? Please log in first to post your question.