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
Metadata
Release files for aubio-beatcheck 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| aubio_beatcheck-0.1.0.tar.gz | 58.7 kB | With provenance | Details for aubio_beatcheck-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| aubio_beatcheck-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for aubio_beatcheck-0.1.0-py3-none-any.whl |
Total release size: 122.6 kB
Release files / aubio_beatcheck-0.1.0.tar.gz
| Download URL | aubio_beatcheck-0.1.0.tar.gz |
|---|---|
| Size | 58.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e6b92420e505c2c6ff097720c53b1db10a12bc1755e665e31a7f61c7dc880c23
|
|
BLAKE2b-256 checksum How to use checksums |
6585bf68af024f0d9b32c4c77a920eac7be1281b1ff7724d7be84fdca0cd3afc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 6, 2025.
Transparency logRelease files / aubio_beatcheck-0.1.0-py3-none-any.whl
| Download URL | aubio_beatcheck-0.1.0-py3-none-any.whl |
|---|---|
| Size | 63.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1d78c3ddaf204c3665758e1002dd545980e647a62f6a3aee1f80d8678a000262
|
|
BLAKE2b-256 checksum How to use checksums |
9f15cbe6f15432c2f915b8c36ba91b7fe56dd6ed7aae1f97e9b528b387ada34d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 6, 2025.
Transparency logSecurity for aubio-beatcheck 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for aubio_beatcheck-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 6, 2025.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.