Audial tool

BPM and Key Finder: a song's tempo and key from the audio

Drop in a track and get its tempo and key, plus where every beat and bar falls.

Audial reads a song's BPM and key from the audio alone: drop the track on the Stem Separation tab and its BPM and key controls start at what was detected, or ask the API, the Python SDK (audial.analyze) or the analyze MCP tool, and an analysis adds a tempo map with every beat and bar.

$10 a month or $100 a year. Unlimited runs, cancel any time. 2 free runs to try it first.

Tempo and key are the first two things you need to know about a track, and Audial reads both from the audio, with nothing to tap and no file tags needed. On the website, drop a track on the Stem Separation tab: before anything is split, its BPM and key controls start at the tempo and key that were detected. Over the API it is one call to /functions/run/primary-analysis, in Python it is audial.analyze, and from Claude or Cursor it is the analyze MCP tool. Each gives you the BPM as a whole number and the key as a short name such as Amin.

When one number is not enough, run an analysis. It reads only the mix and in about half a minute returns the BPM, whether the tempo is constant or variable, the time signature, where bar 1 lands, and a tempo map: the track as constant-tempo pieces, from which every beat and bar time follows. A track that drifts, as live recordings do, comes back as more pieces instead of one tempo forced onto the whole song. Get audio features on the same analysis adds the key, its mode (major, natural minor, dorian and six more) and the loudness.

You rarely have to ask, either: when a stem split, analysis, sample pack or MIDI job arrives without a tempo or key, the API detects the ones it needs first, so a file is all you send.

What you get

  • BPM and key from the audio alone: nothing to tap, no file tags needed
  • On the website, the Stem Separation tab shows the detected BPM and key before you split
  • One REST call, one Python line (audial.analyze) or one MCP tool (analyze)
  • An analysis adds a tempo map: constant or variable tempo, time signature, bar 1 and every beat
  • Audio features add the mode (nine of them, with a confidence) and the loudness
  • Detected for you whenever a stem split, analysis, sample pack or MIDI job needs it

Hear it

A full demo mix
  1. Lead-in
  2. Intro
  3. Up
  4. Chorus
  5. Up
  6. Chorus
  7. Down
  8. Outro

Audial's analysis of this mix: 129 BPM at a constant tempo, bar 1 at 5.77 s and 208 bars, with the sections drawn to scale. Hover a block for its times.

Audial vs doing it by hand

TempoAudial: Read from the audio: one BPM, or a tempo map from an analysisBy hand: Tap along or count beats against a clock; quick on a steady dance track
KeyAudial: Read from the audio, as a name such as AminBy hand: Find the tonic on a keyboard and decide major or minor by ear
Tempo changesAudial: An analysis marks the tempo constant or variable and maps each pieceBy hand: Tap through the whole song and note every place it moves
Half time or double timeAudial: Reports one answer; it cannot know which feel you wantBy hand: You decide how the track feels, which is what counts in a DJ set or a remix
CostAudial: The BPM and key check never counts as a runBy hand: Free, apart from your time

Use it from code

# BPM and key in one call. The answer carries them as original.bpm and original.key.
curl -X POST "https://api.audialmusic.ai/api/functions/run/primary-analysis" \
  -H "X-API-Key: your_api_key" -H "X-User-ID: your_user_id" \
  -F "userId=your_user_id" \
  -F "fileURL=@/path/to/track.mp3"

# The tempo map as well: analyse the mix (keep the exeId), then read the analysis.
curl -X POST "https://api.audialmusic.ai/api/functions/run/segmentation" \
  -H "X-API-Key: your_api_key" -H "X-User-ID: your_user_id" \
  -F "userId=your_user_id" \
  -F "original=@/path/to/track.mp3"

curl "https://api.audialmusic.ai/api/db/your_user_id/execution/exe_12345abcde/analysis" \
  -H "X-API-Key: your_api_key" -H "X-User-ID: your_user_id"

Frequently asked questions

Drop the track on the Stem Separation tab of audialmusic.ai: before anything is split, its BPM and key controls start at the tempo and key Audial detected. From code, post the file to /functions/run/primary-analysis or call audial.analyze in Python, and both come back in the answer.

Related