Audio → MIDI

Audio to MIDI Converter

Piano to MIDI: what a piano recording actually converts to

The short answer: a piano is the instrument this converter handles best in the middle of its range and worst at the two ends. In our own measurements the bottom of the keyboard is simply outside the detector's hearing: the lowest A (A0, 27.50 Hz) and the lowest C (C1, 32.70 Hz) sit under the 55 Hz floor that both detection modes start at, so monophonic mode writes nothing for them and polyphonic mode writes their overtones instead — six notes each, none of them the note you played. The top is half-visible: C7 (2,093 Hz) and E7 (2,637 Hz) are past the 1,800 Hz ceiling of monophonic mode, so only polyphonic mode reaches them, and C8 (4,186 Hz) is past the 4,000 Hz polyphonic ceiling as well. Between those edges everything converts. What decides whether one note survives is not its pitch — it is how bright its timbre is.

Every figure below came from running this site's own analyser (dsp.js) on synthesised instrument tones whose correct answer we knew before we started, at the default sensitivity of 60. Where we have not measured something, we say so rather than guess.

The two ends of the piano keyboard

The analyser searches for a fundamental inside a fixed frequency window, and there are two of them, because the two detection modes do not look at the same span. Monophonic mode tracks a single pitch inside a narrower band that tops out at 1,800 Hz. Polyphonic mode scans a wider span for spectral peaks, up to 4,000 Hz. Both start at 55 Hz. A piano's 88 keys run from 27.50 Hz to 4,186 Hz, so the instrument is wider than either window:

Single piano notes, one at a time, 1.6 s each, sensitivity 60, analysed with this site's own detector. A band is the frequency window a mode searches; a note outside it is never considered as a fundamental.
NoteTrue (Hz)In the mono band 55–1,800?In the poly band 55–4,000?Monophonic resultPolyphonic result
A0 — lowest key27.50nononothing writtensix notes: C#3, G3, A4, D4, E2, B3
C132.70nononothing writtensix notes: G2, C3, E3, A#3, F4, F#4
C265.41yesyesnote writtennote written
C4 — middle C261.63yesyesnote writtennote written
C72,093noyesnothing writtenC7 present
E72,637noyesnothing writtenE7 present
C8 — highest key4,186nononothing writtenone note, C#6 — not the key played

Two different failures live in that table, and they are worth keeping apart. Below the floor, the string's own fundamental is invisible but its overtones are not, and an overtone is a perfectly ordinary pitch — so the analyser reads a confident, clean, wrong chord where you played one low note. A0 came back as six notes spread from E2 up to A4, roughly an octave and a half above the key. That is not noise; it is a misidentification, which is why it survives into the MIDI file looking tidy.

Above the ceiling the failure is quieter: the note is simply absent. There is no higher band to fall back on, because the partials that would carry it are also above 4,000 Hz by then.

What actually decides whether a note survives

Here is the result that surprised us most, and it is the one worth remembering. Every frame of audio also gets a harmonic-comb score — how cleanly the spectrum lines up on a harmonic series — and a note is only written if that score clears a gate. At the default sensitivity of 60 the gate sits at 0.20. We held the pitch fixed and changed only the timbre: a soft tone whose harmonics fall away quickly, against a bright tone whose upper harmonics stay strong.

The harmonic-comb score for one pitch, against how bright the tone is and how many harmonics it carries. The gate is 0.20 at sensitivity 60; a score under it means no note is written.
TimbreHarmonics in the tonePitch testedScoreOutcome
Soft — 1/k1.5 and steeper4 to 32C2–C60.25–0.43every note written
Bright — 1/k1.016C40.187note lost
Bright24C40.168note lost
Bright32C40.156note lost
Bright16C50.165note lost
Bright24C50.148note lost
Bright24C60.198note lost
Bright32C30.188note lost

Read the two halves against each other. The soft timbre cleared the gate at every pitch we tried, from C2 to C6, at every harmonic count from four up to thirty-two — the lowest score in that whole block was 0.25, comfortably above 0.20. The bright timbre failed at C3, C4, C5 and C6, and the score fell further the more harmonics the tone carried. Same note, same loudness, same duration: one is written and one is not, and the only thing that changed is how much energy sits in the upper partials.

This is the mechanism behind the single complaint that comes up most often about converting a piano: a passage that converts perfectly and then one held note is simply not in the file. It is not that the note was too quiet or too short. Its own harmonics pushed the comb score under the gate, and once no frame inside the note qualifies, nothing is written — not a short note, not a faint one, nothing.

Why a real piano's stretched strings are not the problem

A piano string is not a mathematically ideal one. Its partials sit slightly sharp of exact whole-number multiples, a property called inharmonicity, and the effect grows as you go up the series. It is a reasonable guess that this is what breaks a piano conversion — the analyser is, after all, scoring how well the spectrum lines up on a harmonic series, and a real string does not line up exactly.

We tested that guess directly by rebuilding the same note with the string's partials stretched by increasing amounts and re-measuring. Over a sweep from a perfectly harmonic string to one with realistic stiffness, the middle C's monophonic score moved only from 0.187 to 0.164 — it never crossed the 0.20 gate in either direction, so the note was lost at every setting. In polyphonic mode the fundamental stayed the top-ranked peak throughout.

C4 with the string's partials stretched by an increasing stiffness coefficient, so the upper partials sit progressively sharper than exact multiples.
Stiffness coefficientStringMonophonic scoreCrosses the 0.20 gate?
0ideal, partials at exact multiples0.187no — note lost
0.002stiff, partials stretched sharp0.164no — note lost

So the tuning and the string stiffness are not what is costing you notes. They move the score by about two hundredths; the timbre moves it by more than a tenth. If a piano conversion is dropping notes, look at how bright the recording is before you look at the instrument's tuning — which is also why a close-miked, bright piano sample tends to convert worse than the same part played softly.

What a piano chord comes back as

Single notes are only half of what a piano does. We also played chords and counted what came out, and the result is not a tidy one-for-one translation.

Chords played as one held block, polyphonic mode, sensitivity 60. "Distinct pitches" counts how many different note names appear across the whole output, not how many sounded at any one instant.
What was playedNotes writtenDistinct pitchesWhat came back
Six voices: C4 E4 G4 C5 E5 G566exactly the six played
C4 major triad: C4 E4 G466C4 E4 G4, plus G#7, A7, B7
C3 major triad: C3 E3 G377C3 E3 G3, plus F#6, A6, B6, G#6
Ten-note chromatic cluster, C4 up to E53319more notes than were played

The clean six-voice voicing is the control, and it came back exactly right: six notes in, six notes out, no additions. Add nothing but a seventh and eighth pitch packed tightly together and the picture changes completely. The ten-note cluster, spanning a tenth and a half, produced thirty-three rows covering nineteen distinct pitches — the conversion over-reads a dense block, it does not under-read it.

The cause is a limit that applies per frame rather than per chord. The analyser will hold at most six pitches in any one frame, and a frame is only 11.6 ms long — the ceiling and its arithmetic are worked through in how many notes a converter can hold at once. Six is generous for a moment, but a chord played as a human plays it is not one moment: it is a few hundred milliseconds of frames, and every frame is free to nominate its own six. Play a wide cluster and the nominations drift as partials beat against each other, so the total accumulates.

The ghost notes are the more annoying half of this. A plain C4 triad produced three extra pitches at G#7, A7 and B7 — roughly 3.3 to 4.0 kHz, all of them inside the polyphonic window, none of them played. They sit far above the chord, so they are easy to spot in a piano roll and easy to delete, but they are there in the file. The practical move for anything dense is to set a lowest and highest note in your DAW after importing, or to convert the parts separately rather than as one fat block.

Bass to MIDI: the bottom of the instrument falls off the same edge

The piano's bottom octave is not a special case. Any instrument whose lowest notes live under 55 Hz runs into the same wall, and for bass to MIDI that is the whole bottom of the instrument rather than one awkward octave. On a standard four-string bass the lowest note is the open E at 41.20 Hz, which is below the floor of both modes — so it is not read at all as a fundamental. What the polyphonic mode does read is its harmonics.

Bass notes with a round, mellow tone, one at a time, sensitivity 60. The score column is the harmonic-comb score of the note as written.
NoteTrue (Hz)MonophonicPolyphonic
E1 — open low E41.20nothing writtena chord at E2, B2 and G#3 — the 2nd, 3rd and 5th partials
A1 — open A55.00A1, score 0.321strongest peak is A2, the octave above
B1 to A361.74–220fundamental, scores 0.235–0.281fundamental

Two things follow. First, the very bottom of the instrument turns into a chord a twelfth above where you played: the open E reads as E2, B2 and G#3 together, which in a piano roll looks like a small voicing rather than one note. Second, the open A lands exactly on the 55 Hz boundary and gets read, but only just — and in polyphonic mode the loudest peak there is already the octave, not the note itself.

Above that boundary the bass behaves. We checked B1 through A3 with a mellow tone and every note came back at its own fundamental in both modes, with no tendency to jump an octave — the low register is not inherently prone to octave errors, it is prone to disappearing.

That last point is the one to hold on to, because it explains a symptom people misread. With a bright or buzzy bass tone — the kind with a lot of upper-harmonic energy — the comb score falls below the gate and the note is dropped outright. We swept three timbres across the range: mellow scored 0.235 to 0.321, medium 0.174 to 0.257, bright and buzzy 0.087 to 0.206. Only the mellow end clears the gate reliably, and the higher notes die first, so a bright bass loses its top notes while the low ones hang on. When a bass note goes missing here it returns as nothing at all, not as a wrong octave.

The same bass notes across three timbres, sensitivity 60. The gate is 0.20; the range shown is the span across B1 to A3.
ToneScore rangeOutcome across B1–A3
Mellow — 1/k1.50.235–0.321all read at the fundamental
Medium — 1/k1.10.174–0.257the top of the range starts to drop out
Bright and buzzy — 1/k0.80.087–0.206notes vanish, highest first

Drums now have their own page: Drums to MIDI: what a pitch detector does with no pitch to find. A kit has no fundamental to recover, so this converter reads each hit as pitched material — the kick becomes a low bass line and a cymbal becomes hundreds of high tones. The one useful thing it does with a drum-heavy recording is pick out the bass line underneath the kit, not a drum track.

Violin to MIDI and the rest of the bowed strings

A bowed string sits comfortably inside the detector's window, so the floor and ceiling problems that dominate the piano do not apply to violin to MIDI at all. What applies instead is the timbre gate from earlier, and we measured it across the instrument's working range.

Single bowed-string notes with a bright harmonic profile, sensitivity 60. Every note below except the top one falls inside the monophonic band.
NoteTrue (Hz)Monophonic scoreMonophonic resultPolyphonic
G3 — lowest string196.00—read at the fundamentalread
D4293.660.153–0.196dropped — under the gateread
A4440.00—read at the fundamentalread
E5659.26—read at the fundamentalread
A5880.000.153–0.196dropped — under the gateread
E61,318.510.153–0.196dropped — under the gateread
A61,760.000.153–0.196dropped — under the gateread
E7 — top of the range2,636.99—outside the band entirelyread — poly sees E7

The pattern is not a simple high-notes-fail rule. G3, A4 and E5 came back correctly while D4, A5, E6 and A6 — all of them comfortably inside the band — were dropped for scoring under 0.20. That is the same timbre effect as the piano, showing up at pitches that have no range problem at all. It is also a reminder that a bowed instrument's brightness is not fixed: bow speed, bow position and how close the microphone is all change how much upper-harmonic energy reaches the file, and that is the lever that moves the score.

What this means for cello to MIDI

The cello's range sits lower than the violin's but still well inside the detector's window — its bottom string is around 65 Hz, above the 55 Hz floor, and its top is far below the ceiling. So it does not inherit the piano's bottom-octave problem, and the test that applies to it is the same timbre gate we just measured. We have not run cello tones through the analyser, so we are not going to put a score on this page that we cannot reproduce. What we would expect, and what you can check in a couple of minutes with the steps below, is that a dark, close-miked cello converts well and a bright, distant one loses notes in the middle of its range.

How to check your own recording

None of this needs to be taken on trust, and the check takes about two minutes once you have the file:

  1. Convert the file and export the note list, then open it in a spreadsheet.
  2. Sort by the start time and look for any note below the lowest key you actually played. A short cluster of notes an octave or more above a very low note is the floor at work, not a mistake you made.
  3. Look at the top of the list too. A handful of pitches up near 3 to 4 kHz that you did not play is the chord over-reading described above.
  4. If a single held note is missing from an otherwise clean passage, try converting the same take again with the sensitivity slider raised, and watch whether it returns as one note or as a row of short fragments. Fragments mean the timbre gate is the cause.
  5. If the whole bottom of the instrument is gone, no setting will bring it back — that is the frequency window, and it is fixed.

One honest limitation on everything above: these measurements come from synthesised tones — known pitches, controlled harmonic content, clean decays — not from a miked grand piano in a room. Real recordings add pedal resonance, sympathetic string vibration and room sound, all of which will move the numbers. The mechanisms will not move: a fixed frequency window at both ends, a harmonic-comb gate that timbre can push you under, and a per-frame ceiling that a wide chord can climb over.

Questions

Why is the bottom octave of my piano missing from the MIDI?

Because it is below the detector's 55 Hz floor. The lowest A and C on an 88-key piano sit at 27.50 Hz and 32.70 Hz, and no note under 55 Hz is ever considered as a fundamental in either mode. Monophonic mode writes nothing for them; polyphonic mode writes their overtones, which is why the bottom of the keyboard can come back as a cluster of notes higher than the keys you pressed. No setting changes the window.

Why does my chord come back with extra high notes?

Dense voicings over-read. A plain C4 major triad produced six notes on this converter — the three played, plus G#7, A7 and B7 — and a ten-note chromatic cluster produced 33 rows covering 19 distinct pitches. The limit of six applies to each 11.6 ms frame separately, so a chord spread over a few hundred milliseconds can accumulate far more than six. A clean six-voice voicing, by contrast, came back as exactly six.

Does an out-of-tune piano convert worse?

Not measurably. We stretched the partials of a note to simulate a stiff, inharmonic string and the score moved only from 0.187 to 0.164 — it stayed under the gate at both ends, and the fundamental stayed the top-ranked peak. Tuning is not the lever; brightness is. A bright, close-miked piano is a bigger risk to your note count than a slightly flat one.

Can I get just the melody line out of a piano recording?

Yes, if you record the melody on its own. Convert that single line in monophonic mode and you get one note at a time, which is usually what a melody to MIDI workflow is after. The same passage played with the left hand underneath it will not reduce to a melody automatically — this tool does not separate a performance into parts, and a chord voicing brings its own ghost notes with it. Record the line alone and the conversion is clean.

What is the most reliable way to transcribe audio to MIDI from an instrument?

Record close, play one part at a time, and convert with a mellow tone rather than a bright one. Those three choices attack the two things that actually cost notes here: a close, dark recording keeps the harmonic-comb score above the gate, and one part at a time keeps you under the per-frame ceiling. Recording straight into a file — rather than trying to capture live — is the other half of it, and what this converter does with a recording covers that boundary.

Will this work on a phone recording of my piano?

Yes. Record it on the phone, get the file onto the machine you are working on, and convert it here — an iPhone voice memo or any other phone recorder is a fine source, because the tool never asks for live microphone access at all. What matters is the recording, not the device: close to the instrument, no clipping, and a dry room all push the result in your favour.

Convert a piano take now — the analyser behind every table above is the same code, running in your browser, with the file never leaving your machine.

Related guides