WAV vs MP3 for Audio to MIDI: What Reaches the .mid File

Short answer: On 6 November 2026 we took one published eight-second WAV, encoded it to MP3 twice, and ran all three files through this site's browser converter. Each .mid came back 129 bytes with 9 notes, PPQ 480 and no tempo event. But the first note sits at tick 0 for WAV and tick 33 (0.034375 s) for both MP3s, and the single extra short note is 74 (D5) at tick 959 for WAV but 79 (G5) at tick 3859 for MP3. The 128 kbps and 320 kbps results share the same note sequence but are not byte-identical: 6 notes differ in at least one cell.

That is one eight-second synthetic scale on one Windows Chrome, not an accuracy rate and not a speed promise. Open the audio to MIDI converter

The one variable: the container, not the music

The source is a file already published on this site: /examples/C-major-eight-notes-44k1.wav, made on 24 October 2026. It is eight one-second notes from C4 to C5, mono PCM, 44,100 Hz, 16-bit, 8 seconds. Its size is not a mystery: 44 + 44,100 x 8 x 1 x 16/8 = 705,644 bytes, which is exactly the byte count on disk.

We copied those 352,800 PCM samples and encoded them with lamejs 1.2.1 as MPEG-1 Layer III CBR at 128 and 320 kbps. No resampling, no gain change, no added silence, no trim. So the only thing that changes between the three inputs is the container and its compression; the source PCM sha256 5854fdafce6f8520… is the parent of all three.

InputBytes on diskFormula valueRatio to WAV
WAV (PCM 16-bit)705,644 B705,644 B1.00x smaller
MP3 128 kbps128,731 B128,000 B5.48x smaller
MP3 320 kbps321,828 B320,000 B2.19x smaller

The MP3 byte counts land within 0.57% of bitrate x 1,000 x seconds / 8; the remainder is frame alignment and encoder delay, which is also where the tick shift below comes from.

What the converter produced

Each file was selected in a real Chrome page, converted by the site's own tool (app-7c537f3f6b.js), downloaded as a .mid, then parsed independently with @tonejs/midi 2.0.28. The page engine's own parser was not used to produce any number here.

Input.mid bytesNotesPPQFirst noteFirst tickTempo events
WAV129 B94800.000000 s00
MP3 128129 B94800.034375 s330
MP3 320129 B94800.034375 s330

All three have one track, 9 notes, PPQ 480, and zero FF 51 03 Set Tempo events. 120 BPM is the player default, not a detected tempo. The .mid byte count is identical (129 B) while the sha256 differs for every input: same-sized, different bytes.

Note by note: the 33-tick shift is not a constant

The extra short note changes position, so pairing notes by array index would shift everything after it by one row and invent six fake pitch changes. We separate the eight sustained melody notes (matched by pitch sequence, identical across all three) from the one short low-velocity note, then compare ticks cell by cell.

#PitchWAV tick128k tick320k tick128k minus WAV
160 (C4)03333+33
262 (D4)959981981+22
364 (E4)191819411952+23
465 (F4)287728992899+22
567 (G4)383738593859+22
669 (A4)480648294829+23
771 (B4)575557555755+0
872 (C5)671367476747+34

The melody pitch sequence is identical in all three files. But the WAV-to-MP3 onset shift is not a uniform offset: it ranges from 0 to 34 ticks across the eight notes, and one note (number 8) does not move at all. Saying "MP3 adds 33 ticks" would be wrong; the table is the claim.

The extra short note moved

Each output also contains one brief, low-velocity note beyond the eight-note scale. In the WAV output it is 74 (D5) at tick 959, 67 ticks long. In both MP3 outputs it is 79 (G5) at tick 3859 — a different pitch appearing three notes later. This is the same kind of artefact described on the clean up MIDI page.

InputExtra note pitchTickLength (ticks)Velocity
WAV74 (D5)959670.2913
MP3 12879 (G5)3859780.3150
MP3 32079 (G5)3859670.3150

The two MP3s differ only in that note's length: 78 ticks at 128 kbps versus 67 ticks at 320 kbps. Velocity is 0.3150 in both, versus 0.2913 for WAV.

Did the bitrate matter?

Not for the note sequence. The 128 kbps and 320 kbps files have the same 9 notes in the same order at the same pitch set, and both are 129 bytes. They are still different files: sha256 bd926d878814c739… versus dc0fe201d13ad720…. Every differing cell is listed below.

Note #PitchField128 kbps320 kbps
160 (C4)velocity0.73230.7244
364 (E4)onset (ticks)19411952
364 (E4)length (ticks)936925
364 (E4)velocity0.73230.7480
465 (F4)velocity0.74020.7323
679 (G5)length (ticks)7867
769 (A4)velocity0.76380.7717
871 (B4)velocity0.76380.7559

On this one clip, the container switch (PCM to lossy MP3) moved the onsets and changed the extra note; raising the MP3 bitrate from 128 to 320 changed only six small cells. That is an observation about these three files, not a general rule about bitrate.

Recompute every number yourself

Both source files are downloadable from this site, so the whole experiment can be repeated. The formulae and the two independent readings are side by side; tick-to-second conversion uses seconds = ticks x 60 / (BPM x PPQ) with 120 BPM as the player default and PPQ 480 read from the files.

QuantityFormulaRecomputedObserved
WAV file size44 + 44,100 x 8 x 1 x 16/8705,644 B705,644 B
MP3 128 file size128 x 1,000 x 8 / 8128,000 B128,731 B
MP3 320 file size320 x 1,000 x 8 / 8320,000 B321,828 B
MP3 first note, seconds33 x 60 / (120 x 480)0.034375 s0.034375 s
WAV note 4, seconds1918 x 60 / (120 x 480)1.997917 s1.997917 s
WAV note 9, seconds6713 x 60 / (120 x 480)6.992708 s6.992708 s

Checksums for all six files (three inputs, three outputs):

FileBytesSHA-256
source.wav705,644 B5854fdafce6f85206400b35ec65c593e59069048315d7ee20dc358febb6573ca
mp3-128.mp3128,731 B5403e5eb152bc391dc95cbb17819038bd99bcf629f82d4710f6e86b7c89717c4
mp3-320.mp3321,828 Be1611c5ac396dd6e2ffb56506e9d67ff84d41bc4a514f971ad0bfb11c194f619
wav.mid129 B80be1fcab03b21d359d59e638d1e45d80f38754ba1ed9a2bc78c3d8ff79c0ddf
mp3-128.mid129 Bbd926d878814c739cffc1ef0089732e1a4e147823279457ab29de8ebe8403801
mp3-320.mid129 Bdc0fe201d13ad720db81e193346855ab454579c978bda741e6d18f1153a4a419

A .mid that is only 129 bytes can be opened in any MIDI editor; these were parsed with @tonejs/midi 2.0.28, which is independent of the browser engine that wrote them.

How much of this page is exclusive material

Exclusive means independently reproducible measurements from files this site actually produced, not method notes, limitations, disclaimers or general facts. We report both denominators side by side, as required: sections 7/10=70.0% and characters 6,310/7,931=79.6%.

Algorithm: split the body at every <h2>, count sections; strip tags, normalise entities, collapse whitespace, count characters. Sections carrying data-exclusive="1" are the numerator. The head, the first-screen answer and the footer are outside the denominator. A section is exclusive only if it contains measurements that can be recomputed from the published files.

What this does not tell you

One eight-second synthetic C-major scale, mono at 44,100 Hz, on one Windows Chrome on 6 November 2026. It says nothing about a full song, a voice, a guitar, or a mix. It is not an accuracy measurement, not a comparison with any other converter, and not a promise about how long a conversion takes. The tool writes a single track with no tempo event; it does not separate instruments, does not keep a drum part, does not detect BPM, and accepts local files rather than links.

If you need the tempo set to something other than the 120 BPM default, see MIDI wrong tempo after conversion. For the byte-level structure of a .mid, see what is MIDI.

Convert your own WAV or MP3

The converter runs in your browser and does not upload your audio. It accepts MP3, WAV, M4A, FLAC and OGG, one file at a time, up to 100 MB or 10 minutes, whichever comes first. The result is one editable single-track .mid file.

Related reading

MP3 to MIDI accuracy: four converters, measured describes the paired-clip comparison and its limits. What is MIDI shows the same 169-byte file byte by byte. About explains what the tool does and does not do.