Audio analysis · No upload
MP3 to MIDI
Drop a solo melody — sung, hummed, whistled or played — and get a MIDI file of the notes, each printed with how far it sat from concert pitch and how steady it was. One line at a time. When this page hears more than one note at once it says so and stops, because a chord repeats at a pitch two octaves below itself and that phantom root is exactly what other converters write into your file. Everything runs inside your browser and this page downloads nothing at any point.
How this transcriber works
When you choose a file, the browser's File API hands this page the bytes in memory — the file is already on your machine, so nothing travels anywhere — and your browser decodes the audio into raw samples itself. Those samples are mixed to one channel and resampled to 22,050 per second, which the readout states rather than hides. The recording is then walked in overlapping frames of about a tenth of a second, close enough together that a note lasting a sixteenth of a second still lands in several of them.
Each frame is measured with YIN, which looks for the lag at which the waveform most nearly repeats itself and then refines that lag to a fraction of a sample. That gives a frequency, and with it a confidence: how nearly the repeat was exact. But a confident pitch is not the same as a real one, so each frame is checked a second way — the energy at the found pitch and its first eight multiples is measured directly, and a frame only counts as a real note if a solid share of that energy sits at the pitch itself. That second test is what separates one instrument from several, and it is the reason this page can refuse a chord instead of transcribing its ghost.
Frames that survive both tests are grouped into notes wherever the rounded pitch holds steady, and anything shorter than about a sixteenth of a second at a moderate tempo is dropped as a slur or a squeak rather than written down. What comes out is a list of notes with start times, lengths, tuning offsets and confidences, and a standard MIDI file built from exactly that list. Nothing in the file is smoothed, quantised to a grid, or corrected toward what the melody probably meant.
Frequently asked questions
Is my audio uploaded anywhere?
No. Your browser opens the file with its File API and decodes the audio itself, and everything after that — the pitch tracking, the harmonic check, the MIDI writing — is JavaScript running inside this tab. The readout's network meter counts every request from the moment your file is read and stays at zero, and there is no library download to footnote: this page fetches nothing at any point. The methodology page shows how to verify that independently, including with your wifi switched off.
Why does it refuse chords?
Because the alternative is a file full of notes nobody played, which is what every converter that accepts chords actually returns. A pitch tracker looks for the period a signal repeats at, and a chord has one: the frequencies of a C-E-G triad stand in ratios near 4:5:6, so their sum genuinely repeats at a pitch two octaves below the chord. A tracker locks onto that missing fundamental and reports it as confidently as a real note. That phantom root is the single most common thing wrong with automatic transcription, and refusing is the only honest answer to it. This page checks where the energy actually sits relative to the pitch it found, and when that does not look like one instrument playing one note, it says so and stops.
What should I feed it?
One melodic line at a time: a sung or hummed tune, a whistled phrase, a solo flute, violin, bass or lead line, or a monophonic synth part. It works best on a clean recording with one sound source and no backing. What it will refuse: chords and strummed guitar, piano parts with more than one note held together, full mixes, drum tracks, and anything where two instruments overlap. Speech and percussion are refused too, because neither carries a steady pitch to read.
How accurate is it?
Every note is printed with two numbers that let you judge it yourself rather than take it on trust. The cents column is how far the sung or played pitch sat from equal temperament, so a note that was genuinely flat reads as flat rather than being silently rounded onto the grid. The confidence column is how steady the pitch was across the note. A wobbly take produces low confidence and looks wrong on the page, which is the intention — a transcription that hides its own uncertainty is the thing to be suspicious of. Very short notes and heavy vibrato are the usual sources of error.
What is in the MIDI file?
A standard format 0 MIDI file with one track: a tempo event, then a note-on and note-off pair per transcribed note, then an end-of-track marker. It opens in any DAW, notation editor or MIDI player. The tempo is written as a plain 120 BPM because this page reads pitch and timing in seconds and does not try to infer a time signature or a bar line — guessing a tempo from a free melody would be a second guess layered on the first, so the note timings are exact in seconds and you set the tempo where you want it.