Song to MIDI
Live · free to tryTurn any song, YouTube link or recording into MIDI notes. Read them as a sheet, practise them on a piano in your browser, or call the API.
Example runA real song turned into MIDI
A YouTube piano video turned into MIDI. Play it, download it, or practise it below as the default song.
The song that went in
The MIDI that came out
Loading the MIDI…
Add your own song
Use the exact piano video or MIDI you want to practise. Song-name searches and non-piano links use a piano cover, which can differ from the original recording.
YouTube link or song name
- ✓ Any YouTube link, normal songs too
- ✓ Not a piano video? We find a piano version of the same song for you
- ✓ Or just type a song name
- MIDI (.mid, .midi): opens instantly, no limit
- Piano recording (MP3, WAV, M4A, OGG, FLAC, MP4, MOV, WEBM): solo piano only, up to 10 minutes and 200 MB
Free: 3 songs a day (links, song names and recordings count together). Making the notes takes about 1–2× the song length.
Loading piano sounds…
Progress
0 / 311
Accuracy
100%
Streak
0 (best 0)
Time
0:00
Play the glowing keys: tap them, use your computer keyboard, or connect a MIDI keyboard. The song waits for you, and chords need every note. Switch to the Roblox key sheet to see which computer key plays each note. Hold each key for its time; letting go early means playing it again.
Piano sound: Salamander Grand Piano by Alexander Holm, CC BY 3.0
Made for lessons, covers and games
- LearningPiano lessonsEasy and full arrangements of any song for falling-notes practice.
- CreatorsCovers and DAWsDrop the MIDI into any DAW and start a cover in minutes.
- GamesGame key sheetsAn optional Roblox Virtual Piano key sheet, timing and chords included.
Call Song to MIDI from your code
Free, no key needed: call it over REST from your code, and point your AI agent at llms.txt to learn how. Daily limits are per IP address.
https:/ / api.opennan.com/ v1/ piano/ transcriptions- POST
/The same endpoint under the music path.v1/ music/ midi-transcriptions - GET
/Status and filesv1/ piano/ transcriptions/ {id} - GET
/Download the MIDI file.v1/ piano/ transcriptions/ {id}/ midi
No key needed
This tool is free to call without a key. Daily limits are per IP address.
Send your first request
Send it from your code or your terminal as is.
curl https://api.opennan.com/v1/piano/transcriptions \ -F url="https://www.youtube.com/watch?v=..." # Then poll until status is "succeeded": curl https://api.opennan.com/v1/piano/transcriptions/{id} # And download the MIDI: curl -o song.mid https://api.opennan.com/v1/piano/transcriptions/{id}/midiPoll the task
The call answers right away with a task id. Ask for the task until it finishes:
GEThttps:// api.opennan.com/ v1/ piano/ transcriptions/ {id} - queued
- Waiting for a worker
- running
- Being made
- succeeded
- Done: outputs[].url holds the files
- failed
- Failed: you are not charged
Errors and how to fix them
401Missing or wrong key
Send the header Authorization: Bearer with a key from the console.
402Balance too low
Add credit in Billing, then send the same call again.
400A value is not accepted
Read error.message: it names the field. Use a value from the parameter table.
429Too many requests
Wait a few seconds and try again, waiting longer after each 429.
Song to MIDI: questions
How much does Song to MIDI cost?
It is free: 3 songs a day, no key.
How do I call it from my code?
Send POST https://api.opennan.com/v1/piano/transcriptions. No key is needed. It answers with a task id: ask https://api.opennan.com/v1/piano/transcriptions/{id} until the task succeeds or fails.
Can my AI agent use it?
Yes. Point your agent at https://api.opennan.com/llms.txt: it explains this endpoint and every other one.