BPM2OSC listens to any audio source and streams tempo data over OSC to lighting consoles, VJ software, and show-control systems — with zero latency overhead and no cloud dependency.
Built for live events, DJ sets, and show-control environments where rock-solid tempo data needs to reach multiple systems simultaneously.
No external beat-tracking libraries. The entire pipeline — Superflux ODF, ACF harmonic sum, Kalman filter — is implemented in pure Python/NumPy for full transparency and zero black-box surprises.
Send BPM and beat triggers to any number of destinations simultaneously over UDP or TCP. Each target has its own OSC paths, protocol, and enable toggle.
Capture whatever is playing through your speakers or headphones — no physical cable needed. Perfect for DJ software, media players, or any desktop audio source.
7 built-in presets pre-tuned for Rock, House, Hip-Hop, Techno, Latin, and more. Each preset adjusts the BPM search range and octave-correction gates to match the genre's rhythmic patterns.
Freeze the BPM automatically when detection confidence drops — e.g. during breakdowns or DJ transitions. The display and OSC hold the last good value without any manual intervention.
Override the engine instantly by tapping or halving/doubling the detected value. Configurable timeouts let overrides expire automatically so you never forget to undo one.
Live diagnostic panel showing the ODF waveform, adaptive threshold, onset ticks, confidence bar, octave-correction badge, BPM history graph, and full ACF score curve — all at 50 fps.
A complex DFT at the detected tempo frequency gives the absolute time of the next beat, used to phase-lock the metronome automatically. No manual RESYNC required between songs.
Per-channel RMS bars with peak hold and decay. Green / yellow / red zones match the classic −18 dB / −6 dB broadcast thresholds. Automatically expands for stereo and multi-channel devices.
The detection engine runs on a dedicated audio thread and never blocks the UI. Every step is tunable and visible in the AlgoMonitor panel.
Half-wave-rectified spectral flux against a max-pooled previous frame, weighted across 5 sub-bands (kick, bass, snare-lo, snare-hi, hi-hat). Suppresses vibrato and pitch-modulation false positives.
Autocorrelation with harmonic scoring S(L) = Σ acf[k·L]/k for k = 1…8 over a 12-second ring buffer. Strong peaks at the true beat period, weak ones at sub-beats and multiples.
Three sequential ratio tests — ×2 (subdivision), ÷2 (half-tempo groove), 4:3 (Latin clave) — applied using raw ACF values rather than score comparisons, so they are gated correctly per genre.
score[peak] / (noise_floor × 5) — how dominant the detected period is over the background. Frames below 2.5× noise floor are discarded without updating the BPM history.
±12% median filter rejects single-frame glitches. A bimodal fallback takes the median of the last 3 values when the history is split between two tempos (e.g. at a DJ transition).
Jumps larger than 15% are accepted only when confidence is at least 5× the noise floor, preventing runaway estimates on transient noise. A scalar Kalman filter smooths the output between updates.
Complex DFT at the tempo frequency gives the instantaneous beat phase → absolute wall-clock time of the next beat. The UI metronome phase-locks to this without any manual RESYNC (Müller 2015 §6.2).
BPM float and beat trigger are broadcast over UDP or TCP to all configured targets. OSC is sent only on change (or every 10 s as a keepalive), keeping network traffic minimal.
BPM2OSC sends three message types. Paths, port, and protocol are fully configurable per target.
/composition/tempocontroller/tempo,
port 7000, normalize on (min 20 / max 500). Resync maps to /composition/tempocontroller/resync.
Each preset sets the BPM search range, the Gaussian prior, and the octave-correction gates. Select one with a single click — or fine-tune the numeric values manually.
Screenshots coming soon. If you'd like to contribute, send them to info@fblab.it.
Main window
AlgoMonitor — Engine diagnostics
Settings
Free Windows installer. No account, no subscription, no telemetry.
⬇ Download for WindowsFound a bug, have a feature request, or want to integrate BPM2OSC with your console?
✉ Contact info@fblab.it Read the full manual →
BPM2OSC is free software, built by Fabrizio Borelli / FBLab.it
and given to the live-events community at no cost.
Special thanks to Shara, Aurora, Bri / Pro One,
Isotta & Angelo / Isolution, Roby MusicArt, Roby Sbi,
and Anthropic Claude Sonnet 4.6 for help, beta testing, and vibe coding.