MP3 to MIDI Accuracy: Four Converters, Measured

On 3 November 2026 we ran the same six test clips through four MP3 to MIDI converters and counted three things per clip: how many reference notes were matched, how many notes appeared that no reference note explains, and how many reference notes never appeared in the output.

All four converters found 80 of 80 reference notes. The extra-note count is where they separate: 1 (Stayput), 43 (SoundToMIDI), 43 (Spotify's Basic Pitch demo), 1 (this site, after the change described below). None of them missed a reference note in this set.

3 November 2026. Each cell is matched / extra / missed. One run per clip, each site at its own default settings, no tuning on our side.
Test clipReference notesStayputSoundToMIDIBasic Pitch demoThis site
Single notes, dry88 / 0 / 08 / 0 / 08 / 0 / 08 / 0 / 0
Single notes, with echoes88 / 0 / 08 / 9 / 08 / 9 / 08 / 0 / 0
Three-note chords, dry2424 / 0 / 024 / 0 / 024 / 0 / 024 / 0 / 0
Three-note chords, with echoes2424 / 1 / 024 / 25 / 024 / 25 / 024 / 1 / 0
Drum pattern, dry88 / 0 / 08 / 0 / 08 / 0 / 08 / 0 / 0
Drum pattern, with echoes88 / 0 / 08 / 9 / 08 / 9 / 08 / 0 / 0
Total8080 / 1 / 080 / 43 / 080 / 43 / 080 / 1 / 0

Two converters show identical numbers in all six rows. That is not a coincidence, and the section on model identity below says why.

How to read the three numbers

How the six clips were built

The clips are synthetic, not recordings. Each was rendered from a written note list, so the reference notes are exact rather than estimated from a score. All six share the same eight pitches — MIDI 60, 62, 64, 65, 67, 69, 71 and 72 — one event every 0.5 seconds starting at 0.3 seconds, each note lasting 0.14 seconds. What changes between them is what sounds at those moments:

Each of those three appears twice: dry, and with echoes — three delayed copies at 0.2, 0.32 and 0.41 seconds with gains of 0.53, 0.22 and 0.12. The files are 128 kbps mono MP3 at 44.1 kHz, five seconds long, 120 BPM.

Every rendered tone is a fundamental plus a second harmonic at 0.2 times the fundamental's amplitude. That figure is a setting in the generator, not something measured from the converters, and it matters here: a harmonic that a converter promotes into its own note lands in the extra column.

How the output was counted

Every downloaded .mid file was read by the same parser and compared against the same reference list in the same run, with no manual editing. The matching rule is pitch equality plus onset within 0.15 seconds, one-to-one. The 0.15 second tolerance is a choice we made; a tighter or looser window would move the numbers, and these figures are only comparable between sites measured under this same rule.

One caveat on the drum rows. A drum hit is a noise burst, not a pitched note, so the eight reference pitches for those clips are the pitches the generator was told to use, not pitches a listener would hear. A match there means the converter placed a note event at that pitch and time, not that it identified a pitch by ear. Read the drum rows as event placement, not as tuning accuracy.

Why two of the four columns are identical

SoundToMIDI and Spotify's Basic Pitch demo returned the same six cells, and their model files are byte-identical:

So three of the four converters in this table run the same open-source model. What differs is the thresholds and the post-processing each site applies to that model's output, not the note detection itself. We did not identify Stayput's engine; that column is a black box in this test and we make no claim about what it runs.

What changed on this site, with the numbers

Before 3 November 2026 this site used an onset threshold of 0.25, a frame threshold of 0.25 and a minimum note length of 8 frames, with no merging step. On these six clips that produced 79 matched, 83 extra, 1 missed. The 83 was not spread evenly: 49 came from the three-note chords with echoes, and 16 each from the single notes and the drum pattern with echoes.

Two changes were tested separately on the same six clips:

The merging step is the one that mattered. The model often splits a single sounding note into several fragments of the same pitch separated by a few frames. The step joins any two fragments of the same pitch whose gap is 3 frames or less. At 22,050 Hz with a 256-sample hop, 3 frames is about 35 milliseconds. The site now runs the default thresholds plus this merge, which is the configuration in the right-hand column above.

The cost of merging, stated plainly

Merging cannot tell a fragment from a repeat. Two genuine strikes of the same pitch less than about 35 milliseconds apart are joined into one note. On a piano that is a repeated note played very fast; on drums it is a roll or a flam.

This test did not measure that loss. None of the six clips contains a repeated strike of the same pitch — every event is 0.5 seconds apart — so the merge had nothing genuine to eat here. We have not quantified how much real music is affected, and we are not going to invent a percentage. If your material has fast repeated notes on one pitch, expect them to be under-counted.

What this test does not cover

Checking this yourself

The method needs no special access: take audio whose notes you already know, convert it on any site, download the .mid, and match output notes to reference notes by pitch plus onset within a fixed window. Report all three counts — matched, extra and missed — because a converter that finds every note can still be the one adding the most wrong ones. We do not host the test audio or the resulting MIDI files on this page.

To convert your own file with the current settings, use the MP3 to MIDI converter, the WAV converter, or the piano converter. The mixed-song test shows what happens on a full recording rather than a controlled clip.