ByteScope

Audio to MIDI

Drop a recording or hum into the microphone: an AI model finds the notes in this tab, you check them on a piano roll and download a .mid file.

Your files never leave your browser — all processing is local.

Your recording

Drop an audio or video file here

or click to browse — you can paste (Ctrl+V) a file too. Up to 10 minutes.

The note model is 230 KB and downloads the first time you use the page, together with the ONNX Runtime engine that runs it (about 13 MB, from the jsDelivr CDN). After that both stay in this browser's cache.

Your audio is not uploaded. Decoding, the model and the MIDI file all run in this tab.

Works best on one instrument in a clean recording. A full mix with drums, bass and vocals together comes out messy.

Record a hum or an instrument with the microphone. Echo cancelling and noise suppression are off.

Honest limits

  • Best for one instrument or a hummed melody in a clean recording. A full mix comes out messy; separate the part you want first.
  • Drums and other sounds without a pitch are not turned into notes.
  • Tempo and bar lines are a guess (or what you type). Notes are not snapped to the beat.
  • The output is MIDI, not sheet music.
  • Your audio is not uploaded.

About this tool

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.

Frequently asked questions

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.