Skip to main content

Python utilities for audio BPM analysis, tap tempo, BPM conversion, and tempo workflow helpers.

Project description

BPM Finder

BPM Finder is a lightweight Python package for audio BPM analysis, tap tempo, BPM conversion, and practical tempo workflow helpers. For browser-based audio BPM detection, visit https://bpm-finder.net/

What It Does

This package gives you a compact set of utilities for common tempo-related tasks in scripts, internal tools, and automation workflows:

  • Analyze the BPM of a local WAV audio file
  • Estimate BPM from tap timestamps or intervals
  • Convert BPM to note length in milliseconds
  • Normalize half-time and double-time values into a practical range
  • Classify tempo into simple buckets for UI or workflow logic

The package is dependency-free and designed for straightforward command-line and library usage. Audio file analysis currently supports uncompressed WAV files.

Installation

pip install bpm-finder

CLI Usage

Analyze BPM from an audio file

bpm-finder analyze-audio ./loop.wav

Estimate BPM from tap intervals

bpm-finder tap --intervals 500,500,498,502

Convert BPM to milliseconds

Use --division 4 for quarter notes, 8 for eighth notes, and 1 for whole notes.

bpm-finder bpm-to-ms --bpm 128 --division 4

Convert milliseconds back to BPM

bpm-finder ms-to-bpm --ms 468.75 --division 4

Normalize BPM into a practical range

bpm-finder normalize --bpm 64

Get a simple tempo bucket

bpm-finder bucket --bpm 174

Library Usage

from bpm_finder import (
    analyze_audio_file,
    bpm_to_ms,
    estimate_bpm_from_taps,
    is_bpm_in_range,
    ms_to_bpm,
    normalize_bpm,
    tempo_bucket,
)

audio_bpm = analyze_audio_file("loop.wav")
tap_bpm = estimate_bpm_from_taps([0, 500, 1000, 1500, 2000])
quarter_note_ms = bpm_to_ms(128, note_division=4)
detected_bpm = ms_to_bpm(468.75, note_division=4)
normalized = normalize_bpm(64)
bucket = tempo_bucket(174)
in_range = is_bpm_in_range(128, 90, 180)

Public API

  • analyze_audio_file(file_path: str, min_bpm: float = 70, max_bpm: float = 180) -> float
  • bpm_to_ms(bpm: float, note_division: int = 1) -> float
  • ms_to_bpm(milliseconds: float, note_division: int = 1) -> float
  • normalize_bpm(bpm: float, min_bpm: float = 70, max_bpm: float = 180) -> float
  • estimate_bpm_from_taps(timestamps: list[float], strategy: str = "median") -> float
  • tempo_bucket(bpm: float) -> str
  • is_bpm_in_range(bpm: float, low: float, high: float) -> bool

Use Cases

  • Detect BPM from exported WAV loops in build scripts or content pipelines
  • Build tap tempo shortcuts into DJ prep scripts
  • Convert BPM to delay times in music production utilities
  • Normalize BPM data from mixed sources before sorting playlists
  • Add quick tempo helpers to internal music or workout tools
  • Attach tempo buckets to rows in analytics or recommendation workflows

Why BPM Finder Online

This package is ideal for Python scripts, automation, and developer workflows. If you need browser-based audio BPM detection with a user-friendly interface, use BPM Finder Online at https://bpm-finder.net/

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bpm_finder-0.2.0.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bpm_finder-0.2.0-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file bpm_finder-0.2.0.tar.gz.

File metadata

  • Download URL: bpm_finder-0.2.0.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for bpm_finder-0.2.0.tar.gz
Algorithm Hash digest
SHA256 500adc81be1777c7ad71394629d4fba58d0aa49a91c6db0233609ff5091ab134
MD5 a28f806b63b8a758e5722ddaa6f4576a
BLAKE2b-256 17294864480ae6c8cab242d11e99291506996eea767b18a13132492bed0a1523

See more details on using hashes here.

File details

Details for the file bpm_finder-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: bpm_finder-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for bpm_finder-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 be0767d10c6ce1ca6cbeff69239b66887147d5c825dc795d449e2cf32cb8573e
MD5 bb2d517015718e2e61c233bf7b615b40
BLAKE2b-256 b31e22cbb2ea75cfad0e18121551822557b170b7be39a40c34475a666ac29ca8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page