Convert a monophonic recording into MIDI notes. The pitch of the recording is tracked, that curve is cut into notes at the points where the pitch steps, and the result is written as a .mid file.
One line at a time
The limit is the detector, and it is not a setting. It estimates one fundamental per window, so it can follow a melody and cannot follow a chord.
That covers more than it sounds like. A sung or hummed idea, a bass part, a synth lead, a saxophone line, a whistled hook: all monophonic, all convertible. What fails is anything with two pitches sounding together, including a guitar strum, a piano part with a left hand, and any finished mix.
Cutting a curve into notes
A pitch track is continuous. A MIDI note is not, so the interesting work is deciding where one ends.
A note stays open while the pitch stays within the tolerance of where it started, and closes when the pitch moves past it or the signal goes unvoiced. The pitch tolerance control is that window, in cents.
Set it low, near 40, and a slide between two notes becomes several short notes. Set it high, near 120, and a semitone trill collapses into one held note. Vibrato is the case that decides the value: a singer with wide vibrato crosses the semitone boundary and comes back several times a second, and a narrow tolerance turns one note into a stutter.
Shortest note is the cleanup pass behind it. Anything briefer than the value is dropped, and two notes of the same pitch separated by less than the value are rejoined, which repairs the hole vibrato leaves.
Quantizing
Quantizing snaps note starts and ends to a grid derived from the tempo.
It is off by default because it is destructive in a way the other controls are not: a wrong tempo moves every note to the wrong place, and a performance that was never on a grid gets stiffer rather than tighter. Turn it on when the recording was played to a click and you want the export to line up with one in a DAW.
The tempo follows the file’s own onsets when the checkbox is ticked. On a sparse melody with no percussion, tempo detection has little to work with, so set it by hand.
Notes about the file
The export is a format 0 Standard MIDI File at 480 ticks per quarter note, with a tempo event, a program change on channel 1, and the notes.
Timing is stored in ticks against that tempo, which means the notes play back at the wall-clock seconds they were performed at whether or not the tempo is right. A wrong tempo shows the wrong bar lines. It does not shift the music.
Placement is accurate to roughly 50 ms. The pitch is measured over a window rather than at an instant, so each reading describes the 80 ms behind it; half of that is taken back off, and what is left is a note end that tends to run slightly long, because the tail of a note keeps the window periodic after it has stopped. That is well inside a 1/16 note at 120 BPM, which is what quantizing needs, and it is audible if you layer the MIDI against the original recording.
Where the transcription goes wrong
Low notes are hardest. One cycle of a low E on a bass takes 24 ms, and the detector needs several before it reports anything, so the first fraction of each note is missing and short notes may vanish entirely.
Breathy or whispered singing, distorted guitar, and heavy reverb all reduce how periodic the signal is, and less periodic means more dropouts and more spurious short notes. Reverb is the one worth removing first: the tail of the previous note overlaps the next one, which is a chord as far as the detector is concerned.
Expect to edit the result. A transcription is a starting point that saves the tedious part, not a finished part.