How to Read the Piano Roll Preview and Spot a Bad Conversion
Last updated 30 September 2026
Read three numbers before you download: the note count, the pitch range, and whether the blocks start on even columns. That is the whole method. If the count is roughly double what you played, you are looking at octave ghosts. If two blocks share a left edge and sit an exact octave apart, the upper one is a ghost — a copy of the note below made from its overtones, not a note you played. If the pitch range reaches far above your instrument's top note, the same thing is happening. On a measured 60-note melody our converter's raw output was 153 notes with a range spanning 42 semitones; the extra 93 notes were all within 20 milliseconds of a real note, and cleaning them cut the range to 16 semitones.
Everything below is measured by running files through this site's converter and reading the note table the preview is drawn from — not from reading a specification.
What the preview actually shows you
Before you download, the page prints the note count and the lowest-to-highest pitch of the result, and draws every note as a block on a grid. The block's horizontal position is its start time, its width is its duration, and its vertical position is its pitch, low notes at the bottom. Opacity tracks how hard the note was struck, so a heavily attenuated note renders pale.
That is enough to diagnose a conversion without importing anything. The three questions map one-to-one onto the three visual properties:
| What you check | Where it is | What a problem looks like |
|---|---|---|
| Note count | Printed above the roll | Roughly double what you played |
| Pitch range | Printed above the roll | Reaches an octave or more above your instrument |
| Vertical alignment | The blocks themselves | Upper blocks sharing a left edge with lower ones |
Note that the note count and pitch range are printed as text precisely so you do not have to eyeball the roll. The roll is for the second opinion: when the number looks odd, it shows you where the oddities are.
The four failure shapes, and how each one looks
Almost every bad conversion falls into one of four patterns. Three of them are visible in the roll; one of them is only visible in the numbers.
| Failure | What you see in the roll | Measured example | Fix |
|---|---|---|---|
| Octave ghosts | A second copy of your line, one octave up, each block sharing a left edge with the note below it | 60 real notes produced 93 extra; 58 sat exactly +12 semitones, 34 sat +28 semitones, one at +8 | Automatic — the converter removes these on a single-line input |
| Thick chords | A dense band with several pale blocks stacked above the strong ones | 24 played notes produced 59; 20 were harmonics turned down to 25% rather than deleted | Leave them, or delete them in your DAW |
| Stuck durations | Blocks running into each other into one long ribbon instead of separate notes | Not present in our clean run — fragmentation came out at exactly 1.00 block per note | Convert a drier section; the sustain is a property of the recording |
| Off-grid notes (only visible in the numbers) | Nothing obviously wrong individually, but the whole line looks smeared against the bar lines | 61 BPM was estimated from a chord run, below the confidence floor, so the file fell back to 120 BPM | Correct the tempo in your DAW; the note positions are unaffected |
Three of these you can see; the fourth — off-grid timing — is a numbers problem, and the preview states it in plain words rather than making you infer it. We get to that below.
Failure 1: octave ghosts, and why they share an edge
A harmonic ghost is not a mistake in the sense of a wild note. It is a note in the wrong place for the right reason: a pitched tone has energy at its overtones as well as at its fundamental, and a converter that is listening for pitched content can report the overtone as its own note.
On a 30-second measured melody — 60 notes, one per quarter note at 120 BPM, spanning MIDI 60 to 76 — the raw output was 153 notes. Sixty were real. Ninety-three were ghosts, and their distribution is the give-away:
| Distance above a real note | Which harmonic | How many |
|---|---|---|
| +12 semitones (one octave) | 2nd harmonic | 58 |
| +28 semitones | 5th harmonic | 34 |
| +8 semitones | — | 1 |
Most of them are an exact octave above the note being played, because the second harmonic of a tone is the same pitch class one octave up, and it is the strongest overtone in most instruments. The +28 group is the fifth harmonic (its interval is about two octaves and a major third), and the single +8 outlier is a fifth above the octave.
The tell in the roll is not the pitch alone — an octave above is a plausible note — it is the coincidence in time. A ghost starts when the note producing it starts. In our run, 89 of the 93 ghosts began within 20 milliseconds of a real note, and those 89 split cleanly into two groups: 64 exactly aligned to the millisecond, and 25 arriving 11.6 milliseconds late. Only four of the 93 landed anywhere else. So in the roll you do not see a countermelody; you see your own line printed twice, the upper copy starting at the same instant as the lower one.
The second tell is amplitude, which is drawn as opacity. Real notes in that run had amplitudes of 0.719 to 0.799. The ghosts ran 0.231 to 0.365 — there is no overlap between the two groups at all, a gap of nearly a factor of two. In the roll the ghosts are visibly paler. An upper block that is both edge-aligned and faint is a ghost, and it is safe to ignore.
One melody, 30 seconds, 120 BPM, 44.1 kHz mono, ground truth known by construction — we wrote the notes, so we know exactly which pitches were supposed to come back. Desktop Chrome, headless, software WebGL renderer. These are measurements from one machine, one signal and one model, not a general accuracy claim.
Reading the pitch range as a quality signal
The pitch range printed above the roll is the single most useful number on the page, because ghosts have nowhere to hide in it. If you played a melody on an instrument whose top note is C5 and the range reads up to F#7, something is wrong upstream of your DAW.
On the 60-note melody, the raw output spanned MIDI 60 to 102 — C4 up to F#7, an instrument range of 42 semitones for a tune that never leaves a fourteen-note span. After the ghosts were removed the same run spanned MIDI 60 to 76 — C4 to E5, 16 semitones. The pitch range collapsed by more than half, entirely by deleting notes that were never played.
| Run | Notes | Lowest | Highest | Span |
|---|---|---|---|---|
| Raw output | 153 | C4 (MIDI 60) | F#7 (MIDI 102) | 42 semitones |
| After cleaning | 60 | C4 (MIDI 60) | E5 (MIDI 76) | 16 semitones |
So the range check is: does the printed top note reach more than an octave above the highest note you actually played? If yes, you are looking at ghosts, and you can judge how many from the note count. If the range matches your instrument, the pitches are almost certainly right — in this run the raw output had no wrong-pitch errors at all beyond the harmonics, and the cleaned output was 60 for 60.
Failure 2: a thick chord is not automatically a bad one
Chords break the simple rule above, and it is worth knowing why before you judge a dense preview. On a single line, a faint note sitting an octave above a strong one is almost certainly a ghost, and it can be deleted safely. On a chord it might be a real inner voice — the third of a chord played softly under a strong root is exactly the shape a ghost presents: quiet, and an interval above something louder.
We measured this directly. On a four-chord progression — 24 played notes — the raw output was 59 notes, of which 20 matched a harmonic pattern. Deleting them would have risked losing real quiet voices, so on a chord the converter does not delete; it turns them down to 25% velocity instead. That is reversible: a wrongly-softened real note can be turned back up in a DAW, whereas a wrongly-deleted one is gone.
In the roll the result reads as a few strong blocks with a haze of pale ones above them. And the numbers above the roll tell you it is a chord, not a melody: on that run the analysis reported three notes sounding at once on average, a polyphony ratio of 0.62, so the preview is labelled polyphonic and the cleaning logic switches from delete to soften. You do not have to work this out yourself — the badge says which mode was detected.
| Chord run | Notes | Audible notes | Readable precision |
|---|---|---|---|
| Raw output | 59 | 59 | 0.41 |
| After cleaning | 54 | 34 | 0.71 |
The row to read is "audible notes": after cleaning, 20 of the 59 blocks were quiet enough to be inaudible, so the number you actually hear dropped from 59 to 34 while the total only fell from 59 to 54. That is the softening working — the notes are still in the file, they just no longer dominate the mix.
Failure 3: stuck durations and blocked merging
This is the failure that looks worst in the roll and is easiest to misattribute. When a note is held, or when reverb and sustain blur the gap between two notes, a converter can hear one continuous sound and write one continuous block where you played three. In the roll it appears as a ribbon: no gaps, each block's right edge touching or overlapping the next block's left edge.
What makes it easy to misread is that the opposite failure — one note shattered into many tiny blocks — also starts as a duration problem. Both are measured by fragmentation, the average number of blocks written per note you actually played. A value of 1.00 is perfect. On our clean 60-note run the raw fragmentation was 2.55, meaning the model was splitting and doubling notes; after cleaning it was exactly 1.00, one block per note for all 60. The chord run went from 2.46 to 2.25, merging five fragments along the way.
You do not see the fragmentation number in the preview, but you see its symptom: count the blocks against the notes you played. If the roll shows three blocks where you played one, and they are stacked or adjacent, that is fragmentation; the converter's fragment-merging cleans most of it, and what is left you fix in a DAW. If instead you see one long block where you played three, the merge happened in the recording, and no converter can undo it — convert a section where the arrangement is drier.
Failure 4: off-grid notes, the one you read rather than see
This is the pattern you cannot spot by looking, because each block looks individually fine. The problem is that the whole line sits slightly off the bar lines, so when you drop it into a DAW with a click track it sounds late or early even though every note is the right pitch and roughly the right length.
The cause is the tempo the converter estimated. If it guessed the wrong tempo, the notes are still written at their true absolute times — the block positions do not move — but the grid they are measured against is wrong, so the bar lines land in the wrong places. On our chord run the tempo estimator read 61 BPM with a confidence of 0.008, well below the floor of 0.35 the converter requires, so it refused the guess and fell back to 120 BPM. The preview says so in plain text: "61 BPM is unreliable — using 120."
That sentence is the preview telling you the grid is a placeholder, not a measurement. If you see it, do not trust the bar lines in the roll; set the tempo yourself in your DAW once you are happy with the notes. If instead the tempo is reported with high confidence — our clean melody came back as "120 BPM (100% confidence)" — the grid is real and the notes should sit on it.
| What the preview says about tempo | What it means for the roll |
|---|---|
| "120 BPM (100% confidence)" with a detected value | The bar lines are measured — notes should line up with the grid |
| "… is unreliable — using 120" | The grid is a placeholder — note positions are still true, bar lines are not |
Why the preview matches the file you download
The last thing to settle is whether the preview is a preview of your file or just an illustration. It is the file. The roll is drawn from the exact note list the converter will write, and that same list becomes the note-on and note-off events in the download; there is no second pass that changes anything after you click. If the roll shows 60 blocks, the file has 60 notes.
The file itself is deliberately plain. It is MIDI format 0 — a single track — at 480 ticks per quarter note, so a quarter note is always 480 ticks regardless of what tempo is written. That is what makes the grid reading safe: the horizontal position you see in the roll is the note's real time, and the conversion from time to ticks uses the same tempo value the preview reports. Nothing is re-scaled between what you look at and what you hear.
Specifications quoted above (format 0, 480 ticks per quarter note, single track) are properties of the file this converter writes; the counts, ranges, amplitudes and percentages are all measured from runs on this machine and are not a general accuracy claim.
Frequently asked questions
What should I check in the piano roll preview before downloading?
Three things, in this order. First the note count: does it roughly match how many notes you actually play in the phrase? Second the pitch range, printed as the lowest and highest note: does it match the instrument you recorded? Third the shape of the blocks: do the notes start on even columns and stay roughly as long as you held them? Those three checks catch almost every bad conversion, and all three are on screen before you download anything.
Why does the preview show far more notes than I played?
Almost always because of harmonic ghost notes. On a measured 60-note melody our converter's raw output was 153 notes: 60 real and 93 ghosts. The ghosts sat exactly one octave above the note being played (58 of the 93) or on the fifth harmonic, 28 semitones up (34 of the 93). They come from the overtones every pitched instrument produces being read as separate notes. 89 of those 93 extra notes started within 20 milliseconds of a real note, and 64 of them at exactly the same instant, so in the roll they look like a second copy of your line shifted up, beginning when the note below begins.
How do I tell an octave error from a real high note in the roll?
Look at the vertical gap and the start times. A real high note is written where you played it and starts when you played it. A harmonic ghost sits an exact multiple above — usually 12 semitones, one octave — and starts at the same instant as the note below it, so the two blocks share a left edge. In our measured run every ghost was at +12, +28 or +8 semitones from a real note, and all of them started within 20 ms of one. In the roll, if the upper block sits exactly one octave above a lower block and they line up vertically, it is a ghost, not a melody.
The chord looks like a solid block. Is that a bad conversion?
It can be, but it is not automatically wrong. On a measured four-chord progression our converter wrote 59 notes where 24 were played, and it deliberately did not delete the 20 notes that matched a harmonic pattern. Instead it turned them down to 25% velocity, because in a chord a genuine but quiet inner voice looks identical to a ghost. In the roll those softened notes render faintly — at 25% amplitude the block is drawn with much lower opacity — so a dense chord reads as a few strong blocks with a haze of pale ones above them. If the haze is what you played, turn it back up in your DAW; nothing was deleted.
What does a stuck duration look like in the piano roll?
Blocks that run into each other and cover the next note's start, producing one long bar where you played separate notes. The preview is where you catch it, because you can see whether each block's right edge stops before the next block's left edge. In our measured 60-note run this was not a problem — fragmentation of the raw output was 2.55 blocks per real note, and after cleaning it was exactly 1.00, one block per note. If you see the opposite, blocks merging into a continuous ribbon, the fix is upstream: the recording probably has a sustained pad or reverb tail underneath, so convert a drier section.
Can I trust the preview to match the downloaded MIDI file?
Yes, because the preview and the file are built from the same note table. The roll is drawn from the exact notes the converter will write, and the same objects become note-on and note-off events in the downloaded .mid. The file is format 0 at 480 ticks per quarter note, so one quarter note always covers 480 ticks regardless of tempo; what you see positioned in the preview is what lands in the file. If the roll shows 60 blocks, your file has 60 notes.