Audio → MIDI

Audio to MIDI Converter

Most accurate audio to MIDI converter: what we measured on 11 clips

Across 11 test clips containing 75 notes whose pitch and timing we knew in advance, this converter returned 65 of them — 86.7% recall — and wrote 6 notes that were not in the audio, so 91.5% of what it produced was real. It was exact on clean single-line material: 8 of 8 on a sine scale, 8 of 8 on a piano melody, 6 of 6 on a guitar phrase, every one at the right pitch. It failed in exactly three situations, and they are not the ones people usually blame. Those three are below with their numbers.

Every figure on this page was produced by running this site's own analysis code (dsp.js and midi.js) outside the browser, on audio we generated ourselves so that the correct answer was known. Default settings throughout: sensitivity 60, shortest note 60 ms, no grid snapping, 120 BPM. We have not measured Melodyne, Prism, Neural Note or Basic Pitch. There is no number here for them, because we do not have one.

The 11 clips

Measured: this site's own converter at default settings. "Found" means a returned note whose onset was within 100 ms of a real one. "Right pitch" counts only notes that were found.
ClipWhat is in itNotes presentFoundRight pitchInventedOnset error
Sine scale8 clean tones, C4–C5888/80−35.7 ms
Piano melody8 notes, piano timbre with decay888/80−21.8 ms
Guitar phrase6 plucked notes, bright timbre666/60−13.7 ms
Bass line6 notes, E2–G2, bass timbre655/50−34.3 ms
Fast 16ths8 notes of 125 ms at 120 BPM888/80−19.5 ms
Vibrato4 notes, ±25 cents at 5.5 Hz444/40−26.5 ms
Wide dynamics4 notes at four very different levels433/30−22.1 ms
Piano chords4 triads, polyphonic mode12127/120−70.1 ms
Octave-doubled4 notes doubled an octave up, polyphonic884/80−82.0 ms
Pitch bend3 notes bent up a whole tone393/36−14.1 ms
Piano + noisethe piano melody at 17.1 dB SNR80—0—

Two things are worth noticing before the individual cases. Onset errors are consistently negative: every reported note starts earlier than the audio does, by 13.7 ms on the guitar clip up to 82 ms on the octave clip. That is not a timing bug, it is the shape of the measurement, and it is constant enough to correct for.

The second is more useful. There are two opposite failure modes here, and telling them apart tells you what to do with a bad result. Under noise the converter goes quiet — it returns too few notes, and the ones it returns are still correctly pitched. Under pitch movement it does the reverse — on the bend clip it returned three times as many notes as existed, and every extra one was a fragment of a bend rather than a wrong pitch. If your result has too few notes, the material is probably too noisy. If it has too many, something in it is sliding.

"Does it go out of tune on guitar?"

This is the most common complaint about converters in general, and the wording is usually that the output "sounds out of tune". On our bend clip that is not what happens. Three notes were bent upward by a whole tone over 0.35 s. The converter returned nine notes: three that matched the real ones and six that did not exist. Every matched note was at the correct pitch. Nothing was out of tune. What came out was a bend chopped into steps.

That distinction matters because the fix is different. If a note is at the wrong pitch, you have to re-derive it. If a bend has been sliced into four consecutive notes, you delete three of them and pitch-bend the first — or switch the part to an instrument that bends for you. A file that sounds "out of tune" is very often a file with too many notes in it, not one with wrong notes.

Vibrato, by contrast, was not a problem at all. Four notes with ±25 cents of vibrato at 5.5 Hz came back as four notes, all correctly pitched. Slow deliberate bends break the segmentation; fast small wobble does not.

"Is it faster to just work it out by ear?"

On clean single-line material, no. The converter was exact on 30 of 30 notes across the sine, piano, guitar and 16th-note clips, and it was exact on the first attempt with default settings. Transcribing those by hand would take longer and would not be more correct.

There is a real case for doing it by ear, and it has a boundary. On the four-note clip where the same phrase was played at four different levels, the converter found the three loud ones and lost the quietest, which sat 26 dB below the first. If your part has that much dynamic range, expect the soft end to go missing, and check it by ear rather than trusting the export.

So the honest answer is not "always" or "never". Convert it, then spend your listening time on the quiet passages and the sustained notes, which are the two places the numbers say the detector is weakest.

"Are the free tools good enough, or do you need to pay?"

We cannot answer this for tools we have not measured, and we have not measured the paid ones. What we can do is say what the money is for, in terms of this converter's own behaviour: the free tier of difficulty is wide. Everything in the top seven rows of the table above — clean single lines, fast passages, bass, vibrato — came back at 100%. The failures are all in the bottom four rows.

If your material is a clean single-line recording, our numbers say you do not need to pay anyone. If it is a noisy live take with bends in it, no converter we have data for is going to hand you a finished file, paid or not, and what you are buying with money is how much cleanup is left afterwards.

"Can it follow chords, or only single lines?"

It finds them and gets the pitches wrong about half the time. On four triads — 12 notes — polyphonic mode returned 12 notes with the right onset and got 7 of the 12 pitches right. On a line doubled an octave up, it returned all 8 notes and got 4 pitches right. Both clips are cases where the same pitch class appears at two heights at once, which is exactly what a harmonic-suppression rule is designed to discard.

Treat polyphonic output as a sketch, not a transcription. The onsets are useful — it found every chord change in both clips — the pitches need checking note by note.

"Will an old or noisy recording still convert?"

This is where the cliff is, and it is sharper than most people expect. We took the eight-note piano melody and mixed broadband noise into it at eight levels, then converted each one at three sensitivity settings. The signal-to-noise ratios below were computed over the whole file, not declared.

Notes found out of 8, piano melody with broadband noise added. Spurious notes: none at any setting.
SNRSensitivity 40Sensitivity 60 (default)Sensitivity 80
clean8/88/88/8
37.1 dB8/88/88/8
31.1 dB8/88/88/8
25.1 dB1/88/88/8
21.6 dB0/83/88/8
17.1 dB0/80/83/8
13.1 dB0/80/80/8
9.5 dB0/80/80/8

Three things follow from that table. The collapse is abrupt rather than gradual: the default setting goes from 8 of 8 at 25 dB to 3 of 8 at 21.6 dB to nothing at 17.1 dB, a fall of about 8 dB from perfect to empty. Raising sensitivity from 40 to 80 moves the point of total failure from 21.6 dB down to 13.1 dB — about 8.5 dB more noise tolerance, which is worth spending before you give up on a file. And at no point did the converter invent a note — under noise it under-reports, so a short note list from a noisy file is a warning sign, not a clean result.

One honest caveat: this test added broadband noise, which is not the same thing as MP3 compression. Codec artefacts are structured differently, and we have no measurement of them here. If your source is a low-bitrate MP3, treat this table as the shape of the problem rather than the exact threshold.

If your source is an MP3, the details differ

The noise table above is broadband only. MP3 compression artefacts are structured, not broadband, and we have not measured them here — so treat that table as the shape of the problem, not an exact threshold. What we have measured is the pitch side of the same issue: whether MP3 to MIDI loses notes vs WAV (measured) explains the frequency-resolution cause and how to check it on your own file.

"Does it need AI to be accurate?"

No, and this one does not use any. There is no model, no training data and no network call in dsp.js; the analysis is fixed arithmetic that runs on your own CPU. Whether that helps or hurts depends on which row of the table you are on. On the seven clips that came back at 100%, a neural approach would have had to work to beat it. On pitch bends, a model trained on real performances may well segment a bend more gracefully than a fixed threshold does — but we have not measured one, so we are not claiming it.

The practical difference you will notice is that a fixed algorithm fails in the same place every time. That is a disadvantage if you want it to handle everything, and an advantage if you want to know in advance what to check.

What people say about the other tools, and whether we measured them

The tools that come up most often in these discussions are below. Quotes are things users have written about them publicly; the accuracy column is empty for all of them because we have not run them, and we are not going to fill it in with a number we did not produce.

Accuracy column: measured by us, or not measured. There is no third option on this page.
ToolWhat users sayPriceAccuracy
Melodyne"Melodyne is pretty amazing" — and from another user, "I had less success with neural note than with melodyne"not verified herenot measured
Prism"There's a tool called Prism it's $80 and has a trial … it's the best I've used"$80 (as quoted by that user)not measured
Basic Pitch / Neural Note"free and worth trying, but the pitch bends make the output sound out of tune … mostly acoustic garbage"freenot measured
NoteGrabber"works well but it's kind of a process"not verified herenot measured
This converter—free86.7% recall, 91.5% precision on the 11 clips above

Note that the bend complaint quoted against Basic Pitch is the same failure our own bend clip shows, in a different form: three real notes came back as nine. "Sounds out of tune" and "returned three times too many notes" can describe the same file.

How to check it on your own file

The percentages above are for our clips, and they do not transfer to your recording. What transfers is the method. Convert the same file three times, at sensitivity 40, 60 and 80, and export the CSV note list each time. Notes that appear in all three at the same pitch, starting within about 50 ms of each other, are real. Notes that appear in only one run are the detector guessing. Because nothing is uploaded, three passes take about a minute.

The CSV is the same array of notes the MIDI writer uses, so it is a faithful mirror of the file rather than a second estimate. Its columns are index, midi_note, note_name, start_sec, end_sec, duration_sec, velocity, with times to four decimals.

If you also want the tempo and key of the same file, the BPM finder reads both from the audio and can export the notes as a .mid.

What these numbers are not

They are measurements of synthetic audio. Every clip was generated from a tone model, which means the correct answer was known exactly and the material was cleaner and more regular than a real recording. There is no performance here, no room, no microphone, no codec, and no guitar with old strings on it.

That cuts both ways. A percentage measured on real recordings would be more relevant to you, and we do not have one. A percentage measured on known-answer audio is reproducible by anyone, including you, and it is the only kind we are willing to publish. If a page offers you an accuracy figure for real-world recordings without saying which recordings and how the answer was checked, the number is decoration.

Convert a file and export the CSV — runs in your browser, nothing is uploaded.

"Why does bouncing audio to MIDI seem so hit and miss?"

Because two different things are being judged by one result. The pitch of a note can be right while its start, end and length are all off, and the ear notices the second kind of error far more than the first. On our measured runs the pitch came back correct on notes whose length was out by tens of milliseconds: a 200 ms test note was reported as 185.8 ms in monophonic mode and 290.2 ms in polyphonic mode, same audio, same settings. Nothing about the pitch was "miss" in either case; the rhythm was.

So before you decide a conversion was a hit or a miss, separate the two: check the note_name column for pitch and the duration_sec column for timing. If the names are right and the durations are not, the fix is not sensitivity, it is the grid — see where the note boundaries land.

Does audio to MIDI capture chords, or just a single line?

It captures chords. The converter is polyphonic and can hold up to six notes at once, so a chord comes back as several rows in the CSV and several notes in the MIDI. Two things to expect from measurement: octave doublings collapse into one note, and in a dense mix the quieter inner voices of a chord can drop while the melody and bass survive. For a clean chord capture, convert the chord on its own stem rather than inside a full arrangement, so nothing louder steals the frame.

What is the best audio to MIDI converter?

"Best" depends on your material, and we do not claim a ranking. What we can state is measured: on our own eleven synthetic clips this converter returned 86.7% recall and 91.5% precision, and you can reproduce that check on your own file by converting three times and comparing the CSV. The trait worth chasing is not a badge but visibility — a tool that shows you the raw note list lets you verify the result instead of trusting a label you cannot check.

Related guides