ferraus analyze tempo

Tempo, beat times, downbeats, and time signature

Synopsis

ferraus analyze tempo <input> [options] [-o <output>]

What it does

Onset strength (spectral flux on a log-mel spectrogram) is autocorrelated and scored on a comb of metrical levels with a perceptual prior around 120 BPM; beats are placed by dynamic programming (Ellis 2007) and the tempo is refined through the beat times. Downbeats are reported only when the bar accent pattern is clear.

Examples

BPM, confidence, and beat times

ferraus analyze tempo song.wav --json

Search only fast tempi

ferraus analyze tempo dnb.wav --range 140..190

Keep a slow ballad from being read at double time

ferraus analyze tempo ballad.wav --range 50..100 --json

Options

FlagTypeDefaultMeaning
--rangetext60..200Tempo search range in BPM, low..high

Global options

Every command also accepts the global options (-o, --json, --dry-run, --overwrite, --progress, ...). See Global options.

Exit codes

CodeMeaning
0Success
1Processing failed
2Usage or parameter error
3Input missing or unreadable
4Unsupported format or codec
8Cancelled
70Internal error (bug)

Common mistakes

  • Forgetting that outputs are never overwritten: pass --overwrite or a new -o path when re-running.

For models

  • MCP tool: ferraus_analyze_tempo
  • Schema: ferraus schema analyze tempo
  • Pipeline: { op: analyze tempo, args: { ... } } (flag names with _ instead of -)
  • fx stage: no
{"command": "analyze tempo", "defaults": {"range": "60..200"}}