Audio → MIDI

Audio to MIDI Converter

WAV to MIDI converter: what bit depth actually changes

The short answer: bit depth reaches a WAV to MIDI conversion as a noise floor, nothing else. The converter reads samples as numbers, not as a “16-bit” or “24-bit” label, so a 24-bit and a 16-bit copy of the same loud note convert identically — measured, both come back as one note at velocity 110. The difference only appears on quiet material. An 8-bit file carries quantization noise at −52.94 dBFS, and when a note is quiet enough that the noise becomes a real part of the signal, two opposite failures show up: in monophonic mode the note vanishes (the noise dilutes its pitch score below the detection gate), and in polyphonic mode it explodes into fake notes (the noise itself forms random spectral peaks). Measured on this converter’s own dsp.js: the same A3 note at −40 dB converts cleanly as one note in a 24-bit file, but comes back as 11 notes in an 8-bit file.

1. Bit depth is a noise floor, not a pitch thing

An integer PCM WAV stores each sample as a whole number on a fixed grid. 16-bit gives 65,536 steps between silence and full scale; 24-bit gives 16,777,216; 8-bit gives only 256. The rounding error from squeezing a real signal onto that grid is called quantization noise, and its RMS level is predictable — step / √12, where step = 1 / 2bits−1.

Quantization noise floor (RMS) by bit depth. Nothing here is specific to this converter; it is the arithmetic of signed-integer PCM.
Bit depthStep (of full scale)Quantization noise (RMS)
8-bit1 / 128−52.94 dBFS
12-bit1 / 2048−77.02 dBFS
16-bit1 / 32768−101.10 dBFS
24-bit1 / 8388608−149.27 dBFS

Notice the gap. The 8-bit noise floor at −52.94 dBFS is not a subtle spec — it is louder than the −60 dBFS point where this converter’s velocity formula bottoms out at 20. On this converter, velocity = round(20 + (dB + 60) × 100/54), so a signal sitting at −52.94 dBFS already reads velocity 33 all by itself. In a 16-bit or 24-bit file, the noise floor is 100 dB down or more, and it contributes nothing a note detector can hear.

2. Measured: a loud note does not care

We synthesised a clean A3 (220 Hz, harmonics rolled off as 1/k1.25, 2 seconds) and quantized it to each bit depth, then ran it through the site’s own dsp.js + midi.js in both detection modes.

Same A3 note at amplitude 0.8, sensitivity 60, shortest note 60 ms. “mono sal” is the pitch-confidence score; the monophonic gate rejects anything below 0.20.
FilePoly notesPoly velocityMono notesMono velocityMono sal
float (reference)111011100.229
24-bit111011100.229
16-bit111011100.228
12-bit111011100.228
8-bit111011120.222

The takeaway is boring on purpose: for a note that is comfortably loud, bit depth is close to invisible. All five files produce one note, and the velocity differences are one or two steps at most. The place where 8-bit and 24-bit diverge is not here — it is on the quiet end, where the noise floor stops being background and starts being the loudest thing present.

3. Measured: a quiet note is where it bites

The same note, swept down in amplitude, at 24-bit versus 8-bit:

Same A3 note at decreasing amplitude. 24-bit stays one clean note down to −40 dB; 8-bit first loses the note in mono, then floods it with fake notes in poly. All runs sensitivity 60, shortest note 60 ms.
Amplitude24-bit poly24-bit mono8-bit poly8-bit mono
0.80 (−2 dB)1 × 1101 × 1101 × 1101 × 112
0.25 (−12 dB)1 × 921 × 921 × 921 × 92
0.08 (−22 dB)1 × 731 × 732 × 72, 550 (sal 0.180)
0.03 (−30 dB)1 × 581 × 587 (vel 57–42)0 (sal 0.148)
0.01 (−40 dB)1 × 401 × 4011 (vel 47–30)0 (sal 0.119)

At −22 dB the paths split. The 24-bit file still returns one correct note at velocity 73. The 8-bit file, in polyphonic mode, returns two notes — the real one at 72 and a second, quieter one at 55 that was never played. By −40 dB the 8-bit file has turned into eleven notes spread from velocity 30 to 47, none of them the single quiet note that was actually there. In monophonic mode the opposite happens: the note is simply dropped, its pitch score dragged under the 0.20 gate by the noise.

This is the practical reason people disagree about “whether bit depth matters for audio to MIDI.” It matters only when the source has quiet, delicate material — a soft vocal, a fade-out, a light finger on a piano key. Loud material hides the noise; quiet material sits inside it.

4. Why mono drops the note and poly invents notes

The two failures come from the two different ways this converter scores a frame.

Neither behaviour is a bug and neither is specific to this tool. They are the two standard ways a pitch detector can meet a broadband interference, and the quiet 8-bit note is exactly the case that exposes the difference.

5. One more WAV-ism: a DC offset

WAV files can carry a constant (DC) offset — a steady value added to every sample, usually from cheap hardware or a bad export. It is the sort of thing a listener never notices and a note detector sometimes does.

Same clean A3 at amplitude 0.8, with a constant offset added to every sample. Poly mode inflates velocity; mono mode eventually drops the note.
DC offsetPoly notesPoly velocityMono notesMono sal
0111010.229
+0.1111310.222
+0.5112400.199

A small offset (+0.1) barely registers; a large one (+0.5) is another matter. In polyphonic mode the note survives but its velocity is inflated to 124 — the constant lift reads as extra loudness even though the note is not louder. In monophonic mode the note is dropped entirely, because the offset feeds the sal denominator the same way quantization noise does, pushing the score just under the 0.20 gate. It is a useful tell: if a WAV converts with suspiciously high velocities on everything, check for a DC offset.

6. How to check your own WAV before converting

  1. Check the bit depth and the quietest material, not the format name. A 24-bit WAV of a fade-out will convert far more cleanly than an 8-bit WAV of the same thing. The format matters less than the distance between your quietest note and the −52.94 dBFS noise floor an 8-bit file brings with it.
  2. If the source is quiet, don’t convert it as-is. Normalise (or at least gain it up) before converting, so the quiet notes sit above the noise floor. A quiet 8-bit part turned up 20 dB is still an 8-bit file, but the note is now far enough above the noise to survive.
  3. Know which failure mode to expect. Mono mode will drop the note; poly mode will invent notes around it. If your converter has both modes, run the same quiet passage in each — a clean note in one and a scatter of fakes in the other is the signature of a noise floor, not of bad detection.
  4. Watch the velocities. A DC offset inflates every velocity without making anything louder. If a WAV comes back with every note near the top of the range, inspect the file for a constant offset before you touch the sensitivity.

Every one of those checks runs on your own machine in a few seconds, and each one isolates bit depth or offset as the cause instead of guessing.

Questions people actually ask

Is a 24-bit WAV better than a 16-bit WAV for converting to MIDI?

Not for loud material — measured on this converter, a loud note converts identically from a 16-bit and a 24-bit file. The difference only shows on quiet material. 16-bit keeps its noise floor at −101 dB, which is already far below anything a note detector hears; 24-bit pushes it to −149 dB. Unless your recording has very soft passages right at the noise edge, the two are interchangeable for this purpose.

Why did my quiet note disappear when I converted an 8-bit WAV?

An 8-bit file carries quantization noise at −52.94 dBFS. In monophonic mode the pitch score divides the note’s harmonic energy by the total spectrum energy, and that broadband noise inflates the total — dragging the score under the 0.20 gate (at sensitivity 60) so the frame is treated as non-musical and dropped. The fix is to turn the quiet part up before converting, not to change the detection mode.

Why did converting a quiet 8-bit file give me a pile of extra notes?

That is the polyphonic mode. It keeps every spectral peak above 3% of the loudest peak, and broadband quantization noise has peaks everywhere that are not harmonics of anything, so they survive the harmonic filter and each becomes a note. The quieter the real note, the more of the spectrum is noise, and the more fake notes come back — measured, an A3 at −40 dB is one note at 24-bit but eleven notes at 8-bit.

Why do all my notes come back at high velocity?

Look for a DC offset — a constant value added to every sample. On this converter it reads as extra loudness: a +0.5 offset lifted a note from velocity 110 to 124 without making the note louder. It is a WAV-specific problem (cheap hardware or a bad export) and it is fixed at the file level, not by the sensitivity slider.

Does a 48 kHz WAV convert more accurately than a 44.1 kHz one?

No. This converter’s analysis runs at a fixed target of 22,050 Hz (TARGET_SR in dsp.js), so any file above that — 48 kHz, 96 kHz, whatever — is resampled down to 22,050 before a single note is detected. Measured on the site’s own source: the same eight-second passage rendered at 96 kHz, 48 kHz and 44.1 kHz produces byte-identical MIDI (35 notes each), because after resampling they all land on the same 22,050 Hz analysis grid where each FFT bin is 10.7666 Hz wide. The extra samples a 48 kHz file carries are thrown away by the same linear resampler, so they change nothing about the pitches or the timing the detector sees. What actually decides accuracy on a WAV is bit depth on quiet material (the question above), not the sample rate — a “studio 48 kHz” file gets no edge over a “CD 44.1 kHz” one here, it only costs more upload size and decode time.

Drop a file in and watch the piano roll — the Audio to MIDI Converter runs entirely in your browser, so everything above is yours to reproduce on your own WAV in a few seconds.

Related guides