Audial's audio to MIDI conversion transcribes a recording into notes. Upload a song or a single stem and the job returns MIDI you can drag straight onto a track in your DAW.
A full mix is split into stems first, so you get one .mid per stem: bass, vocals, drums and other. Each part is transcribed on its own, which keeps the bass line out of the melody and the drums out of both. On the website every file is drawn on a piano roll before you download it.
Note timing follows the detected tempo unless you pass a BPM to override it. The REST endpoint takes the audio inline as multipart form data, the Python SDK call is audial.generate_midi and accepts one path or a list of paths, and the Audial MCP server exposes it as generate_midi.
What you get
- One .mid per stem: bass, vocals, drums and other
- Transcribe a full song or a single stem you already have
- Optional BPM override, otherwise the detected tempo is used
- Piano roll preview on the website before you download
- Several files in one Python SDK call
- Works from the website, the Python SDK, the REST API and MCP
Hear it
The source mix. The job splits it into stems and returns one .mid per stem: bass, vocals, drums and other.
Use it from code
curl -X POST "https://api.audialmusic.ai/api/functions/run/generate-midi" \
-H "X-API-Key: your_api_key" -H "X-User-ID: your_user_id" \
-F "userId=your_user_id" \
-F "files=@/path/to/track.mp3" \
-F "bpm=120"import audial
audial.config.set_api_key("your_api_key")
audial.config.set_user_id("your_user_id")
# One file
midi = audial.generate_midi("track.mp3", bpm=120)
# Or a batch
midi = audial.generate_midi(["verse.mp3", "chorus.mp3"], bpm=140)
print(list(midi["files"]["files"])) # one .mid per stem# In Claude, Cursor or any MCP client with audial-mcp installed:
"Convert ~/Music/track.mp3 to MIDI at 128 BPM and list the .mid files you wrote."Frequently asked questions
Upload the audio on the MIDI tab, call audial.generate_midi from Python, or post the file to /functions/run/generate-midi. The job transcribes the notes and returns MIDI files you can download.
A full song is separated into stems first, so you get one .mid per stem: bass, vocals, drums and other. Feed it a single stem and you get a single transcription back.
Yes. Split the track with the stem splitter first, then send the stem you care about. That usually gives the cleanest note detection.
Yes. Pass a BPM with the request and note timing is quantised against it. Leave it out and the detected tempo is used.
Yes. Post to https://api.audialmusic.ai/api/functions/run/generate-midi with your X-API-Key and X-User-ID headers and the audio file as multipart form data.
