Skip to the answer

ACTUAL BROWSER EXPORT / OCTOBER 7, 2026

MP3 to MIDI.
Same count.
Different notes.

Inspect the downloaded MIDI, not just its note count. Our stronger-partial WAV produced 13 notes and 202 bytes in both the live browser and offline CPU paths, but the files and note boundaries differed. A simpler WAV produced 10 browser notes versus 9 offline notes. These are two generated WAV cross-checks, not an MP3 or accuracy benchmark.

The summary can agree.
The events can disagree.

FUNDAMENTAL WAV / BROWSER VS OFFLINE10 / 9 events179 / 171 bytes.
Same per-slot pitches; different fragmentation.
STRONGER-PARTIAL WAV / BOTH PATHS13 events · 202 bytesEqual totals do not imply equal files.
Per-slot fragment counts still differ.
Events assigned to successive source-tone slots. Reference pitches: 48, 52, 55, 60.
InputPathEventsBytesEvents per slot
Fundamental onlyChrome101794, 2, 2, 2
Fundamental onlyOffline CPU91714, 2, 2, 1
Stronger upper partialsChrome132023, 3, 4, 3
Stronger upper partialsOffline CPU132024, 3, 3, 3

Fundamental only

Chrome: 10 events, 179 bytes; slots 4, 2, 2, 2.
Offline: 9 events, 171 bytes; slots 4, 2, 2, 1.

Stronger upper partials

Chrome: 13 events, 202 bytes; slots 3, 3, 4, 3.
Offline: 13 events, 202 bytes; slots 4, 3, 3, 3.

Actual parsed MIDI timelines: note boundaries differ between browser and offline paths in both generated controls
Each bar is a parsed exported note. Horizontal position is seconds; vertical position is MIDI pitch. Dashed lines mark defined source starts. Open the full-size plot.

The fundamental control kept only the reference pitch in each slot in both paths. Its last slot had two Chrome events but one offline event. The browser's larger count therefore did not reveal another played pitch in that slot. The stronger-partial control kept the same pitch sets in both paths: [48,60,67], [52,64,71], [55,67,74] and [60,72,79]. Its extra event was assigned to a different slot, even though the overall count stayed the same.

Neither downloaded browser MIDI was byte-identical to its offline counterpart. The report includes SHA-256 hashes and every parsed pitch, start tick, duration tick, velocity and time in seconds. Equal size and equal event count were insufficient to reproduce the stronger-partial export. Matching per-slot pitch sets was also insufficient to reproduce its boundaries.

Slot assignment is explicit, not an accuracy score.

We used the nearest source-tone centre to each event midpoint: argmin(abs((note.startSeconds + note.durationSeconds/2) - (sourceStart + 0.175))). Source starts came from the generated fixture; parsed note times came from each actual MIDI. Centres were 0.375, 0.925, 1.475 and 2.025 seconds.

Follow the live download all the way.

On October 7, we selected each generated WAV on this site's unchanged live homepage in Chrome on Windows. We clicked Convert to MIDI, waited for Complete, then clicked Download .mid. The fundamental result displayed 10 detected notes · 2.5 sec source · 179 B; the stronger-partial result displayed 13 detected notes · 2.5 sec source · 202 B. We retained the actual downloaded files, not reconstructed MIDI made from those labels.

Actual live browser result for fundamental.wav, showing Complete, 10 detected notes, 2.5 seconds and 179 bytes
Live conversion proof, retained with the downloaded MIDI. Enlarge fundamental result / Inspect stronger-partial result.

The downloaded MIDI was parsed with the project's installed MIDI library. Both parsed counts and byte sizes agreed with the observed UI. Each input was 110,294 bytes, and each input copy matched its October 6 WAV byte for byte. The offline exports were retained from that earlier experiment rather than rerun until they matched today's browser results. File hashes, UI strings and both sets of parsed events are in the measurement report.

The automation's first download-event wait timed out. The download itself existed in the machine's Downloads directory; we copied it and parsed it successfully. This distinction matters: a failed automation wait is not evidence that the converter failed, and a Complete label alone is not evidence that we retained an output.

The source converter was unchanged, including onset and frame thresholds of 0.25 and minimum length of 5 frames. Its source hash matched the October 6 report. The homepage decodes WAV through Web Audio; the offline path used native FFmpeg and Node CPU inference. We did not independently observe the browser's inference backend or decoded sample buffer. This comparison changes the complete execution path, not one isolated component.

Known inputs. Narrow conclusions.

These two WAVs come from the harmonic controls: generated mono audio at 22,050 Hz, with four sequential tone references at MIDI pitches 48, 52, 55 and 60. Each tone lasts 0.35 seconds. One waveform contains only the fundamental; the other uses relative components [0.2,1,0.3] at [f,2f,3f] before whole-waveform RMS scaling. No user recording or vocal performance was used.

This was one browser run per input, not a repeatability study. We did not test MP3 in this cross-check, vary browser backends, compare conversion speed, use a phone, import into a DAW, or listen and rate the result. The files show that these two end-to-end paths can differ; they do not identify the cause or establish which path is more accurate.

The fixed reference pages motivated this evidence angle: Note Foundry describes local processing; Tuneonmusic describes browser decoding and execution paths; MP3MIDITool reports a measured phrase check. None of their converters was run in this experiment. These are this site's own live downloads paired with its own offline controls.

Keep the file you actually edited.

  1. Retain your actual browser export alongside its source. An offline result from a similar pipeline is not automatically the file you downloaded.
  2. Compare pitch sets, repeated fragments and timing, not only a total note count. In these controls, equal totals concealed different boundaries.
  3. Inspect the exported events before making cleanup decisions. A higher simultaneous layer and a repeated same-pitch fragment are different things; do not delete every octave or every short event by default.

This page documents exports. The homepage remains the converter; the DAW handoff covers the next operation. No synonym landing page or new converter setting was added.

Same sources. Both real outputs.

The source fixtures are reusable generated media. Downloaded MIDI, raw records and screenshots distinguish browser observations from the retained offline evidence. The analysis script copies and parses files already present; it does not automate inference, reproduce a browser environment, or call an external conversion service.