# Audio to MIDI

> Convert an mp3, a piano or guitar recording, or a hummed tune into a MIDI file. AI note detection, piano roll and tuning sliders; free, nothing uploaded.

- URL: https://bytescope.dev/en/audio-to-midi/
- Locale: en · Also: [ja](https://bytescope.dev/ja/audio-to-midi.md) · [zh-Hant](https://bytescope.dev/zh-Hant/audio-to-midi.md)
- Runs: Your files never leave your browser — all processing is local.
- Requires: Any modern browser (Chrome, Edge, Firefox, Safari), desktop and mobile.
- Updated: 2026-09-08

## What it does

Audio to MIDI turns a recording into the notes that were played: which pitch, when it started, how long it lasted and how hard it was hit. Use it to get a piano or guitar part into a DAW and change the sound, to write down a melody you hummed, or to pick out the notes of a tune you are learning. The model is Basic Pitch by Spotify (Apache-2.0). It runs in this tab, so the recording is never uploaded.

### From sound to notes

The page decodes the file, mixes it to mono at 22,050 Hz and feeds it to the model in short overlapping windows. The model answers, for every 11 ms slice and each of the 88 piano keys, how likely a note is to be sounding and how likely one just started. Your settings turn that into notes: sensitivity decides how clear an attack has to be, the sustain threshold decides when a note stops, and the shortest-note and pitch-range limits throw away blips. Changing them only redoes this last step, so the piano roll updates right away. Play the result as a plain synth, or put the original in the left ear and the MIDI in the right to hear what was missed.

### Honest limits

It works best on one instrument in a clean recording. A full mix with drums, bass and vocals together comes out messy; separate the part you want first. Drums and other sounds without a pitch are not turned into notes. The tempo and bar lines are a guess, or whatever you type: notes keep their exact times and are not snapped to the beat, so quantize in your DAW if you need that. The output is a MIDI file, not sheet music. Bends are written assuming a range of 2 semitones, and some synths ignore them.

### What it downloads and what it keeps

The first time you use the page it downloads the note model, 230 KB, and the engine that runs it, ONNX Runtime for WebAssembly, about 13 MB from the jsDelivr CDN. The browser keeps both afterwards. There is no upload endpoint for your audio. Clips up to 10 minutes are accepted; the work runs in a background worker and you can cancel at any time. The .mid file is a Standard MIDI file with one track, written at the tempo you pick, and is named after your original file.

## Limits

Does not write sheet music, does not transcribe drums or other unpitched sounds, does not separate instruments from a full mix, does not snap notes to the beat, and does not upload audio.

## FAQ

### Is my audio uploaded?

No. The file is decoded, analysed and turned into MIDI in this tab, and the site has no upload endpoint. The only downloads are the 230 KB note model and the ONNX Runtime engine, and your audio is not part of those requests. Open the Network tab in DevTools if you would rather check than trust.

### What does the first use download?

The note model, a single 230 KB file from this site, and the engine that runs it, ONNX Runtime for WebAssembly: about 13 MB from the jsDelivr CDN. The browser caches both, so the next clip starts without waiting.

### Why does a whole song come out as a mess?

The model is built to follow one instrument at a time. With drums, bass, chords and a voice playing together it finds notes that belong to several of them at once, and also invents some from the noise. For a song, first separate the part you want, for example the piano or the vocal line, and convert that on its own.

### Will it write drum parts or sheet music?

No to both. Drums and other sounds without a clear pitch are ignored, and the output is a MIDI file, not a PDF score. You can open the file in a notation program such as MuseScore and tidy it there.

### What do the settings do?

Sensitivity is how clearly a new note has to start to count: higher finds quieter and softer notes but also more false ones. The sustain threshold is how strong a note has to stay to keep going; a higher value ends notes sooner. Shortest note drops anything briefer, and the lowest and highest note ignore everything outside that range. Pitch bend writes the slides and vibrato inside a note; turn it off if your instrument sounds out of tune with it.

### Why do the notes not line up with the beat?

The page does not know where the beats are. It writes every note at the time it was played, and puts it in a file at the tempo you choose: 120 BPM by default, the tempo it measured from the audio, or a number from 20 to 300. If you pick a tempo that matches the music, the notes will sit near the grid in your DAW, and its quantize function can do the rest.

### Can I record or hum into the microphone?

Yes. Press Record, play or hum, and press Stop; the recording goes through the same steps as a file. Echo cancelling and noise suppression are switched off so the sound is not bent first. The browser asks for permission, and a recording stops by itself after 10 minutes. Humming works best when it is steady and clear, one note at a time.

### How long can the audio be, and how long does it take?

Up to 10 minutes; longer is refused before anything runs. The model runs on the CPU, so the time grows with the length of the clip. The page shows how far along it is, and Cancel stops it immediately. Moving a slider afterwards is quick, because it does not run the model again.

## Related tools

- [BPM & Key Finder](https://bytescope.dev/en/bpm-key-finder.md) — Find the BPM and key of a song, then set the tempo here.
- [MIDI Tester & Monitor](https://bytescope.dev/en/midi-test.md) — Plug in a MIDI keyboard or controller and watch every message live.
