The short answer: a converted MIDI is a raw export, not a finished part, so plan on five cleanup passes before it is usable — the first three you cannot skip (delete the ghost and overlapping notes the detector left behind, fix the flat velocity curve the converter estimated from loudness, and decide on quantize rather than leaving every note floating on an 11.610 ms analysis grid), and two more that earn their place on harder material: correcting the low end (below about 181 Hz the pitch read gets shaky) and adding the things the file was never going to contain on its own — an instrument, a key, and separated channels. None of this is the converter's fault; it is what a pitch-to-note export is, and the steps below are the same ones you would run on any audio-to-MIDI result. This page is written by the team behind an audio to MIDI converter that runs in your browser, so the numbers quoted (the 11.610 ms frame, the 181 Hz floor, the velocity-from-loudness rule) come from how that converter actually works.
Why the file needs cleanup at all
Understanding what the converter did — and stopped short of doing — tells you exactly where to spend your cleanup time. The detector reads the audio in fixed frames, scores candidate fundamentals by summing harmonics, and groups frames that share a pitch into notes. It writes the result as a Standard MIDI file with note-on and note-off pairs, and a velocity per note taken straight from that note's loudness. That is the whole job.
What it does not do is musical judgement. It does not know which peaks are real instruments and which are artefacts; it does not know that a soft verse should be quieter than a loud chorus; and it does not know the notes are supposed to land on a grid. So the export arrives "honest but raw," and every problem below is a direct consequence of that honesty. Cleanup is not fixing mistakes — it is adding the musical context the detector was never asked for.
Pass 1 — Delete overlapping and ghost notes
In polyphonic mode the detector looks for several spectral peaks at once. On clear, separated parts that is a strength; on dense or reverberant material it also returns extra notes that are not really there — the classic "ghost notes" people complain about. They show up in two recognizable shapes:
- Note-on with no real note-off. A frame the detector tagged as a pitch that then never resolved cleanly. In the piano roll it looks like a long, thin sliver sitting under a proper note.
- Two notes on the same pitch and the same time. The detector double-triggering one event. In a DAW they overlap exactly and usually sound like a single, slightly harder hit.
- Short notes inside a held note. Artefacts from a momentary spectral blip, often a few milliseconds long, sitting inside a sustained tone.
The fastest way to find them is to sort the .csv export by start_sec and scan for rows where a new note starts while the previous one on the same pitch is still open. Delete the sliver, keep the real one. A good rule of thumb: if a note is shorter than your shortest intended note and overlaps a longer neighbour on the same pitch, it is a ghost. This single pass removes most of what makes a raw export sound "busy."
Pass 2 — Fix the velocity curve
The converter estimates velocity from how loud each note is. That rule sounds reasonable until you remember how recordings are made: a track is usually normalized or compressed so the whole song sits near the same level. The result is a velocity lane that is weirdly flat — a whispered intro and a shouted chorus can come back at nearly the same value — or, if the recording was not normalized, a single loud transient dominates and everything else looks quiet.
- Read the raw values. Open the
.csvand look at thevelocitycolumn. If it spans only, say, 60–75 out of 127, the dynamic range collapsed. - Set a target range. Most natural performances live roughly in 45–110. Map the detected values into that band rather than leaving them where loudness put them.
- Apply a curve, not a flat shift. Multiplying every velocity by the same number keeps the flatness. Instead, stretch the range: push low notes lower and high notes higher so the quiet/loud relationship is audible again.
- Hand-tune the accents. The downbeat of a phrase and the note after a rest should usually be the loudest. The detector cannot know that; you do.
This is the pass that turns "a correct but robotic part" into something that breathes. It is also where the file stops resembling a metronome with pitches attached.
Pass 3 — Decide on quantize, deliberately
With quantize off, note times keep the resolution the analysis produced: multiples of one 11.610 ms frame. That is an awkward number to put on a musical grid, so an unquantised export is full of note starts sitting slightly off the round values a sequencer expects. Two opposite mistakes are common here:
- Quantizing everything blindly. Snapping every note to 1/16 hides the timing error rather than removing it, and it erases the human push-and-pull that made the performance feel real.
- Leaving everything raw. The part sounds hesitant, because small frame-rounding offsets pile up against the beat.
A useful middle path: quantize to 1/16 for the backbone (kick-aligned notes, obvious downbeats) but leave the off-beat and grace notes where they landed. Most DAWs let you set a quantize strength below 100% precisely for this — at 60–70% you pull notes toward the grid without glueing them to it. If you know the source was performed tightly to a click, full quantize is safe; if it was a loose live take, keep the strength low.
Pass 4 — Correct the low end
Below roughly 181 Hz (about F#3) the frequency gap between two neighbouring semitones is smaller than one analysis bin, so the pitch read there gets unreliable. Two cleanup patterns follow from that:
- A single low note shown as two close notes. The detector flickered between two pitches a semitone apart at the floor of its resolution. Merge them into the one you can hear.
- A bass note misread up or down a step. Correct it by ear rather than trusting the number — the FFT simply cannot separate those pitches cleanly at that register.
This pass matters most for bass lines and low piano. Mid and high material is far more trustworthy, so spend the correction time where the resolution actually bites. It is the same reason an MP3 to MIDI conversion loses its accuracy in the bass first.
Pass 5 — Add what the file never contained
A raw audio-to-MIDI export is deliberately thin. It carries no instrument, no key signature, no channel split, and only a single fixed tempo. Before the file is truly usable in a project, you usually add:
- A program (instrument). Without a program-change message the part opens as the General MIDI default — a piano — no matter what you converted. Set it to the sound you actually want.
- A key signature. The converter measures pitch and timing, not harmony, so the key is yours to declare in the notation or sequencer.
- Separated channels for separate parts. All notes land on one channel. If you pulled out a melody and a bass line, move them to different channels so you can mix them independently.
- A real tempo map, if the source drifts. The file writes one tempo at tick 0. A performance that speeds up or drags will need tempo events added to stay in sync.
None of these are "fixing" the conversion — they are the musical metadata a pitch detector is not built to guess. The byte-level details of what the file does and does not carry are spelled out in what is actually inside a MIDI file.
A realistic cleanup order
Doing the passes in the right order saves rework. Delete bad notes first (so you are not polishing ghosts), then fix velocity (so the part has dynamics before you align it), then quantize (so timing decisions act on the final note set), then correct the low end (a small, targeted pass), and finally add metadata. The table is a working checklist:
| Step | Pass | What you are removing or adding |
|---|---|---|
| 1 | Delete | Overlapping, zero-length and double-triggered notes |
| 2 | Velocity | Flat loudness-derived curve → musical dynamics |
| 3 | Quantize | 11.610 ms frame grid → chosen musical grid |
| 4 | Low end | Misread bass notes below ~181 Hz |
| 5 | Metadata | Instrument, key, channels, tempo map |
If you are in a hurry, passes 1 and 2 alone take a raw export from "unusable" to "good enough," and the rest are polish. Monophonic versus polyphonic source material changes how many ghosts you face in pass 1 — see mono vs poly for why polyphonic takes throw more of them.
After these five passes the part is correct, but it is often still mechanically even — the next layer is feel, not accuracy. Why converted MIDI sounds robotic and how to humanize it walks the humanize pass (groove, velocity contour, expression) that follows cleanup.
Questions
Is it better to clean up in the converter or in my DAW?
Do the note-level deletion where you can see the piano roll best — usually the DAW. But use the converter's own quantize checkbox and sensitivity before you export, because lowering sensitivity at the source removes ghosts before they are ever written, which is cleaner than deleting them afterwards. Think of it as prevention (settings) plus cure (DAW edits).
Will quantizing hide that the conversion was wrong?
Yes, and that is the danger. Quantize moves a note's time, not its pitch. A note that was misread a step too high stays a step too high after quantize — it just lands on the grid. So correct pitch mistakes (passes 1 and 4) before you quantize, or you will lock the error into a tidy grid.
Do I have to do all five passes every time?
No. A clean mono recording of one instrument may need only pass 2 (velocity) and a light pass 3. A dense live band capture may need all five plus extra patience on pass 1. The list is a menu, ordered so you never redo work — not a mandate.
Can I just regenerate the MIDI instead of cleaning it?
Sometimes. Raising sensitivity or switching mode can produce a cleaner export, and if the problem is at the source that is the right fix. But the velocity flatness and the missing metadata are properties of the export format itself, not of your settings, so those two always need a manual pass regardless of how many times you re-run the conversion.
Convert a file now — runs in your browser, nothing is uploaded, and you download both the .mid and the .csv so the cleanup above starts from readable numbers.
Related guides
- MIDI converterWhat is actually inside a MIDI file
- Mono vs polyWhat each detection mode misses
- MP3 to MIDIWhy MP3 loses notes that WAV keeps
- MIDI to sheet musicWhat this tool covers, and where the score comes from
- Sheet music to MIDIWhy this tool listens to audio, not reads scores
- Audio to sheet musicWhere a chord's notes actually land, measured
- MP3 to sheet musicWhether the codec moves anything the page would show
- MIDI to MP3What this tool covers, and what a synth does instead
- MIDI to WAVWhy the Play button is a synth but not an export