Aubio BeatCheck
A comprehensive validation and benchmarking tool for testing aubio audio analysis functions. Designed for closed-loop optimization of aubio parameters and performance tracking.
Features
- 🎯 Standard Test Suites - Comprehensive pre-built test signals for tempo, onset, pitch, and complex analysis
- 📊 Evaluation Metrics - Precision, recall, F-measure, and timing accuracy (MAE)
- 📈 Waveform Visualization - Interactive plots comparing ground truth vs detected events
- 💾 JSON Artifacts - Machine-readable outputs for AI-driven optimization
- ⚡ Performance Metrics - Frame processing times (mean, P95, P99)
- 🌐 Web UI + CLI - Choose between interactive web interface or scriptable CLI
Installation
# Clone the repository
git clone https://github.com/shauneccles/aubio-beatcheck.git
cd aubio-beatcheck
# Install with uv (recommended)
uv sync
# Or with pip
pip install -e .
Quick Start
CLI Mode (for AI Agent Integration)
Run analysis and generate JSON/PNG artifacts:
# Run tempo suite with 10-second signals
aubio-beatcheck run --suite tempo --duration 10 --output ./results
# Run all suites
aubio-beatcheck run --suite all --duration 15 --output ./results
# Output structure:
# ./results/
# ├── test_input.json # Test configuration
# ├── ground_truth.json # Expected events
# ├── analysis_results.json # Detected events + metrics
# ├── evaluation.json # Precision/recall/F1
# └── plots/
# └── *.png # Waveform visualizations
Web UI Mode
Start the web server for interactive analysis:
# Start backend
aubio-beatcheck web --port 8000
# Start frontend (in another terminal)
cd web && npm run dev
# Open http://localhost:5173
Test Suites
| Suite | Description | Tests |
|---|---|---|
tempo |
Beat tracking & BPM detection | 60-180 BPM, timing jitter, click durations |
onset |
Transient detection | Attack types (impulse, sharp, medium, slow) |
pitch |
Fundamental frequency | Chromatic scales, intervals, waveforms |
rhythmic |
Complex patterns | Syncopation, polyrhythms |
complex |
Combined signals | Beats + melody + noise at various SNR |
all |
All of the above | Full validation suite |
API Reference
REST Endpoints
| Method | Endpoint | Description |
|---|---|---|
GET |
/api/suites |
List available test suites |
POST |
/api/suites/{id}/run |
Start analysis |
GET |
/api/results/{suite_id} |
Get analysis results |
GET |
/api/results/{suite_id}/{signal}/plot |
Get waveform plot (PNG) |
JSON Artifact Formats
See docs/API.md for detailed schema documentation.
Development
# Install dev dependencies
uv sync --all-extras --dev
# Run tests
uv run pytest tests/ -v
# Lint & format
uv run ruff check .
uv run ruff format .
Architecture
aubio-beatcheck/
├── aubio_beatcheck/ # Core package
│ ├── cli.py # CLI entry point
│ ├── core/ # Analysis logic
│ │ ├── analyzers.py # Aubio wrappers
│ │ ├── evaluation.py # Metrics calculation
│ │ ├── ground_truth.py # Pydantic schemas
│ │ └── thebeat_gen.py # Signal generation
│ └── suites/ # Test suite definitions
├── web_api/ # Litestar REST API
│ ├── main.py
│ ├── routers.py
│ └── plotting.py
├── web/ # React frontend
└── tests/ # pytest tests
References
- aubio - Audio analysis library
- thebeat - Research-validated signal generation
- Litestar - Python ASGI framework
License
GPL-3.0
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aubio_beatcheck-0.1.0.tar.gz.
File metadata
- Download URL: aubio_beatcheck-0.1.0.tar.gz
- Upload date:
- Size: 58.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e6b92420e505c2c6ff097720c53b1db10a12bc1755e665e31a7f61c7dc880c23
|
|
| MD5 |
6de04cfb3d5cd148378db51fe4a30521
|
|
| BLAKE2b-256 |
6585bf68af024f0d9b32c4c77a920eac7be1281b1ff7724d7be84fdca0cd3afc
|
Provenance
The following attestation bundles were made for aubio_beatcheck-0.1.0.tar.gz:
Publisher:
publish.yml on shauneccles/aubio-beatcheck
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aubio_beatcheck-0.1.0.tar.gz -
Subject digest:
e6b92420e505c2c6ff097720c53b1db10a12bc1755e665e31a7f61c7dc880c23 - Sigstore transparency entry: 747185765
- Sigstore integration time:
-
Permalink:
shauneccles/aubio-beatcheck@7b014be889ee9a6907eb3e0add8e789d4aa5a75d -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/shauneccles
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7b014be889ee9a6907eb3e0add8e789d4aa5a75d -
Trigger Event:
push
-
Statement type:
File details
Details for the file aubio_beatcheck-0.1.0-py3-none-any.whl.
File metadata
- Download URL: aubio_beatcheck-0.1.0-py3-none-any.whl
- Upload date:
- Size: 63.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d78c3ddaf204c3665758e1002dd545980e647a62f6a3aee1f80d8678a000262
|
|
| MD5 |
8b8f5405a90c79dc1f9e157b66caf124
|
|
| BLAKE2b-256 |
9f15cbe6f15432c2f915b8c36ba91b7fe56dd6ed7aae1f97e9b528b387ada34d
|
Provenance
The following attestation bundles were made for aubio_beatcheck-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on shauneccles/aubio-beatcheck
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
aubio_beatcheck-0.1.0-py3-none-any.whl -
Subject digest:
1d78c3ddaf204c3665758e1002dd545980e647a62f6a3aee1f80d8678a000262 - Sigstore transparency entry: 747185768
- Sigstore integration time:
-
Permalink:
shauneccles/aubio-beatcheck@7b014be889ee9a6907eb3e0add8e789d4aa5a75d -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/shauneccles
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7b014be889ee9a6907eb3e0add8e789d4aa5a75d -
Trigger Event:
push
-
Statement type: