Audio → MIDI

Audio to MIDI Converter

Can you batch convert several files to MIDI at once?

The short answer: not with a single "drop a folder" button — and that is a direct consequence of how this converter is built, not a missing feature you can switch on. The analysis runs entirely on your own device, with no server, no upload, and no account, so there is nothing on the other end that could hold a queue of files for you. The real multi-file workflow is one file at a time: you load a file, it is analyzed from a completely clean state, you download the .mid and .csv, and only then do you load the next one. We measured that clean-state behaviour on this site's own detector — converting file A, then B, then A again returns A's notes identically both times and never leaks B into A — so the only thing "batch" costs you here is your own clicking, not accuracy.

Why there is no batch button here

A folder-drop batch job implies a server that receives your files, processes them in the background, and hands back a zip. This tool has none of those parts by design. Three facts follow straight from the architecture:

That is the same trade-off described on the converter overview's "online vs desktop" point: what you give up is the plumbing around the analysis, not the analysis itself. The pitch detection still runs on a fixed internal grid — a 22 050 Hz working rate, a 2048-sample window, one frame every 11.610 ms — and those numbers are identical for every single file.

What we actually measured: each file is a clean run

People worry that a browser tool might "remember" the previous file's notes, or that running several files in a row might blend them. So we ran this site's own detector (dsp.js) on two different four-note clips — clip A is a C-major arpeggio (C4/E4/G4/C5), clip B is an A-minor set (A3/D4/F4/B4) — in the order A, then B, then A again:

Notes recovered in polyphonic mode, run back-to-back in the browser detector.
StepFile loadedNotes returned
Run 1Clip A (C major)C4 / E4 / G4 / C5
Run 2Clip B (A minor)A3 / D4 / F4 / B4
Run 3Clip A againC4 / E4 / G4 / C5

The third run produced exactly the same four notes as the first, and none of clip B's pitches leaked in. That tells you the detector resets its state completely between files: there is no carry-over, no shared buffer, no "ghost" of the last song. So when you process files one after another, you are getting a genuinely independent conversion each time — the result of one file never contaminates the next.

The real cost of "batch": your device's time, added up

Because there is no server doing the work for you, the time to convert N files is simply N times the time for one. We measured analyze() on this site's detector at a few lengths:

Analysis time on the detector's own CPU-bound path (no server offload).
Clip lengthAnalyze timePer second of audio
5 s99 ms19.8 ms/s
15 s266 ms17.8 ms/s
30 s573 ms19.1 ms/s
three × 15 s, back-to-back799 msadditive

Two things to take from this. First, the cost scales roughly linearly — about 18–20 ms of analysis per second of audio on a desktop CPU — so a 3-minute track is on the order of 3.5 seconds, and a stack of ten such tracks is ten times that. Second, there is no batch discount: three 15-second files take the same 799 ms whether you do them now or spread across the day. A heavier phone CPU is 3–5× slower, so plan for that if you are doing the work on a phone (see doing audio to MIDI on iPhone or Android). The time is real, predictable, and paid by your machine — not hidden behind a server queue.

The workflow that actually works

Treat it like a small assembly line. The steps are boring on purpose — the boring version is the one that does not lose files:

  1. Prep the folder first. Rename your source files so you know what they are before you start. The converter does not name the output for you; the downloaded .mid keeps the original filename, so a tidy input folder saves you later.
  2. Pick a consistent mode and settings. If these are all single-line recordings, leave it on monophonic. If they are mixes, use polyphonic. Set the same sensitivity, shortest-note, and BPM for every file so the results are comparable — these are per-file inputs you type each time, not a saved profile.
  3. Convert one, download one. Get the .mid and the .csv for the current file before loading the next. Closing the tab throws the result away, so the download is your only backup.
  4. Sanity-check in the piano roll. For a quick pass, glance at the note list before moving on. If a file came back thin, fix it now (mode, sensitivity, shortest note — see the order to fix dropped notes) rather than discovering it after you have closed the tab.
  5. Import once the set is done. When all the .mid files are on disk, bring them into your DAW one at a time — FL Studio, Ableton Live, or Logic Pro each have a short drag-and-drop path.

What you cannot do here, and where to do it instead

Being clear about the boundary is the point of this page. The following genuinely are not possible with this browser tool, and pretending otherwise would be a lie:

If you truly need to convert hundreds of files unattended, an installed desktop application with a batch window is the right tool — that is the one column where an offline app beats a browser page. But for a handful of tracks, the one-at-a-time workflow here is the same conversion, just without sending any audio off your machine. For what the file looks like once it lands, what is actually inside a MIDI file covers the notes, tempo and channels you will be importing.

How to keep a batch from losing its mind

Questions

Is there really no way to convert more than one file at a time?

Correct — not in one action. The tool processes one file per load, and the load is a single-file picker. The workaround is the workflow above: load, convert, download, repeat. It is the same note-for-note conversion an offline batch would give you, just driven by your clicks instead of a server queue.

Will converting file after file mix them up?

No. We measured it: each file is analyzed from a fully reset state, so the notes from one file never appear in the next. Run the same file twice and you get byte-for-byte the same note list both times.

Why is there no upload if it would make batching easy?

Because the no-upload design is the whole reason the tool is free and private. There is no server to bill, so there is no sign-up, no watermark, and no limit — but also no place for a folder to live while it is processed. You trade the batch button for the fact that your audio never leaves your device.

Does a longer file take longer, or is there a flat overhead?

It scales with length: roughly 18–20 ms of analysis per second of audio on a desktop CPU, linear, with no batch speedup. A 3-minute track is about 3.5 seconds; ten of them is ten times that, and it is all paid by your own machine.

Can I leave the tab open and do other things while it works?

The analysis is fast, but it is synchronous on your device, so the tab should stay front-and-center until the .mid downloads. More importantly, once a file is done, download it before loading the next — the result is not saved anywhere you can come back to.

Convert a file now — runs in your browser, nothing is uploaded.

Related guides