Hummingtomidi

Batch Convert MP3 to MIDI — The Realistic Approach

You have a folder of MP3 files and want MIDI for all of them. Here is what actually works when the conversion tool runs in your browser and processes one file at a time.

Short answer: This converter is a browser-based tool that processes one file at a time. There is no upload button, no server-side batch queue, and no way to drop a folder and walk away. To convert many MP3 files to MIDI, you load each file, click convert, download the .mid file, and repeat. That is the honest reality of a tool that decodes audio and detects pitch entirely in your browser using the Web Audio API's decodeAudioData and JavaScript autocorrelation — no file ever leaves your device.

If you need to convert dozens or hundreds of files, the realistic approach is to script the conversion locally using the same pitch-detection logic, or to accept the one-at-a-time workflow and prioritize which files matter most. This page explains both paths and why a browser tool that never uploads your files cannot also be a one-click batch processor.

Why this tool is single-file by design

The converter on the homepage accepts one audio file at a time. The file input element (<input type="file">) in the HTML does not have the multiple attribute. When you drag and drop a file, the drop handler reads e.dataTransfer.files[0] — the first file only. Once a file is loaded, the converter decodes it, runs pitch detection, displays the note list, and lets you download the result. There is no queue, no pending list, and no way to stack files.

This is not a limitation we are hiding. It is a consequence of how the tool works. The audio is decoded by the Web Audio API inside your browser. The pitch detection — an autocorrelation function called autoCorrelate — runs as JavaScript on your device's CPU. The MIDI bytes are assembled by a function called buildMidi and offered as a download via URL.createObjectURL. No part of this pipeline touches a server. A batch system that processes files in parallel would need a server to receive and store your files, which contradicts the no-upload design.

The no-upload tradeoff

Because your files never leave your device, there is no server-side queue, no cloud processing, and no way to submit a batch job. Every conversion happens in your active browser tab. If you close the tab, the work is gone. This is the tradeoff: privacy and simplicity in exchange for no batch automation in the web interface.

What a realistic batch workflow looks like

If you have a handful of files — say five to ten melodies you hummed into your phone — the workflow is straightforward:

  1. Open the converter on hummingtomidi.com.
  2. Load the first MP3. Drag and drop it or click to browse.
  3. Click convert. The pitch detector runs through the audio frame by frame, using a hop size of 0.023 * sampleRate samples and a window of 0.046 * sampleRate samples, mapping each detected frequency to a MIDI note number with Math.round(69 + 12 * Math.log2(f / 440)).
  4. Check the note list before downloading. Each entry shows the note name (like C4 or F#3), the start time in seconds, and the duration in seconds. If the output looks wrong — wrong octave, missing notes, garbage from a noisy recording — the source audio needs cleaning before reconverting. See our guide on why your MP3 to MIDI sounds bad.
  5. Download the .mid file. It is a Standard MIDI File (SMF format 0, 480 PPQ, 120 BPM) generated entirely in your browser.
  6. Repeat for the next file. Click the remove chip to clear the current file, then load the next one.

For five files, this takes a few minutes. For fifty files, it becomes tedious. For five hundred, it is impractical. The rest of this page addresses what to do when the manual workflow is not enough.

When you need actual batch automation

If you are converting a large collection of audio files — a sample library, a set of field recordings, or an archive of vocal takes — the browser interface is not the right tool for the job. The realistic options are:

Option 1: Script it locally with the same algorithm

The pitch detection and MIDI writing logic in this tool is JavaScript. The core functions — autoCorrelate for pitch detection, detectNotes for note tracking, and buildMidi for SMF generation — are self-contained and do not depend on a server. If you are comfortable with Node.js, you can replicate the pipeline locally:

This gives you true batch processing with the same detection logic, running on your machine, with no uploads. The code is visible in app.js on this site — you can read every function and replicate it.

Option 2: Use a DAW or audio editor with scripting

If you already work in a DAW like Reaper, Ableton Live, or Logic Pro, you may have access to scripting or batch processing features. Reaper's ReaScript, Ableton's Max for Live, and Logic's Scripter all let you automate repetitive tasks. You can write a script that imports each audio file, runs a pitch-to-MIDI function (Reaper has a built-in "Audio to MIDI" feature), and exports the result. This is a different detection algorithm than the one on this site, but it solves the batch problem within a tool you already own.

Option 3: Accept the manual workflow and prioritize

If you have a large collection but only need MIDI for a subset — the melodies you actually want to use, the takes that mattered, the ideas worth developing — then the manual workflow is fine. Convert the files you care about, one at a time, and skip the rest. The tool is free, requires no login, and adds no per-file cost. The constraint is your time, not money or account limits.

What does not work

Some things that sound like they should work for batch MP3-to-MIDI conversion but do not:

Quality stays the same whether you convert one or many

Batch processing does not change the accuracy of the conversion. Each file is processed identically — the same autocorrelation function, the same hop and window sizes, the same frequency-to-MIDI mapping, the same minimum duration filter. Whether you convert one file or fifty, the pitch detector is monophonic: it detects one pitch per window, and chords or multi-instrument audio will not convert cleanly. If a file produces bad output in a single-file conversion, it will produce the same bad output in a batch script. The fix is always the same: use cleaner source audio, isolate the melody, and feed the converter a single-line input.

For more on what causes bad output and how to fix it, read why your MP3 to MIDI sounds bad. For the specific limitations of monophonic detection, see why MP3 to MIDI cannot hear chords.

The honest summary

No browser-based tool that never uploads your files can also be a one-click batch processor. The no-upload design — decoding audio with decodeAudioData, running autocorrelation in JavaScript, generating SMF bytes with buildMidi — means every conversion happens in your active tab, one file at a time. For a small number of files, the manual workflow works. For large collections, port the detection logic to a local script and run it on your machine. The code is on this page and in app.js — nothing is hidden, nothing requires a server, and nothing sends your audio anywhere.

Convert your first MP3 to MIDI →