A beets plugin for the deeprhythm tempo predictor
Project description
BeetRhythm - Beets Plugin for DeepRhythm Tempo Prediction
A beets plugin that uses DeepRhythm to predict tempo (BPM) for your music library with high accuracy and speed.
Features
- Automatic tempo prediction during music import
- Batch processing for efficient analysis of large collections
- High accuracy using the DeepRhythm CNN model (95.91% accuracy)
- Fast processing with GPU acceleration support
- Flexible configuration with confidence thresholds and device selection
- CLI command for manual processing of specific files or folders
Installation
- Install the plugin:
poetry install
- Install DeepRhythm:
pip install deeprhythm
- Add the plugin to your beets configuration:
plugins:
- beetrhythm
beetrhythm:
auto: true # Automatically predict tempo on import
write: true # Write tempo to file tags
force: false # Overwrite existing tempo values
device: auto # Device for prediction (auto, cpu, cuda, mps)
batch_size: 128 # Batch size for processing
workers: 8 # Number of workers for batch processing
confidence_threshold: 0.0 # Minimum confidence threshold (0.0-1.0)
disable_batch: false # Disable batch processing (use for resource-constrained servers)
write_confidence: false # Always calculate and store confidence scores
Usage
Automatic Mode
When auto: true is set in configuration, the plugin will automatically predict tempo for:
- Albums imported with
beet import - Individual tracks imported as singletons
Manual CLI Command
Use the beet beetrhythm command to manually process files or folders:
# Process all items in library without tempo
beet beetrhythm
# Process specific folder
beet beetrhythm /path/to/music/folder
# Process specific files
beet beetrhythm /path/to/song1.mp3 /path/to/song2.flac
# Show confidence scores
beet beetrhythm -c /path/to/music
# Force overwrite existing tempo values
beet beetrhythm -f /path/to/music
# Use specific device
beet beetrhythm -d cuda /path/to/music
# Don't write to file tags (database only)
beet beetrhythm --no-write /path/to/music
Command Options
-f, --force: Overwrite existing tempo values-w, --write: Write tempo to file tags (default: true)--no-write: Don't write tempo to file tags-c, --confidence: Show confidence scores-d, --device: Device for prediction (auto, cpu, cuda, mps)
Configuration Options
| Option | Default | Description |
|---|---|---|
auto |
true |
Automatically predict tempo during import |
write |
true |
Write tempo values to file tags |
force |
false |
Overwrite existing tempo values |
device |
auto |
Device for prediction (auto, cpu, cuda, mps) |
batch_size |
128 |
Batch size for processing |
workers |
8 |
Number of workers for batch processing |
confidence_threshold |
0.0 |
Minimum confidence threshold (0.0-1.0) |
disable_batch |
false |
Disable batch processing (for resource-constrained servers) |
write_confidence |
false |
Always calculate and store confidence scores |
Database Fields
The plugin adds the following flexible fields to your beets database:
bpm: The predicted tempo in beats per minute (float)bpm_confidence: The confidence score of the prediction (float, 0.0-1.0)
Note: Confidence scores are only calculated and stored when:
- Using the
-c, --confidenceCLI flag, OR - Setting
write_confidence: truein configuration
You can query these fields like any other beets field:
# Find songs with tempo between 120-140 BPM
beet list bpm:120..140
# Find songs with high confidence predictions
beet list bpm_confidence:0.9..
# Find songs without tempo predictions
beet list bpm:^$
Performance
The plugin uses batch processing when possible to greatly reduce processing time, especially when processing entire directories.
Requirements
- Python 3.8+
- beets
- deeprhythm
- PyTorch (installed automatically with deeprhythm)
Troubleshooting
DeepRhythm not found
If you get an error about DeepRhythm not being installed:
pip install deeprhythm
GPU not detected
If you have a CUDA-capable GPU but it's not being used:
- Ensure you have the CUDA version of PyTorch installed
- Set
device: cudain your configuration - Check that your GPU drivers are up to date
Memory issues
If you encounter memory issues with large batches:
- Reduce
batch_sizein configuration - Reduce
workerscount - Use
device: cpuinstead of GPU
Hanging or multiprocessing issues
If the plugin hangs or has issues on resource-constrained servers:
- Set
disable_batch: truein your configuration - Set
workers: 1andbatch_size: 1 - This will process files individually instead of using batch processing
License
This project is licensed under the same terms as the beets project.
Credits
- DeepRhythm by bleugreen
- beets music library manager
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
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 beetrhythm-0.1.1.tar.gz.
File metadata
- Download URL: beetrhythm-0.1.1.tar.gz
- Upload date:
- Size: 7.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.12.9 Darwin/24.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8adac64284823c7f17943b566204251f6ec6b517437c4843a5e3c30555b5b93
|
|
| MD5 |
816941295151e1c286063fb23fa2f95d
|
|
| BLAKE2b-256 |
7f42af3f78e1bc0a3e3110d9814c38deb7eaa97f73044f393727ea80b229ca97
|
File details
Details for the file beetrhythm-0.1.1-py3-none-any.whl.
File metadata
- Download URL: beetrhythm-0.1.1-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.12.9 Darwin/24.5.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5dfbed85b81f3cdd33dc538cce29038341cb18de071c091296e2b1659b361d17
|
|
| MD5 |
3e6eae57d0986adbc9e74111257860dd
|
|
| BLAKE2b-256 |
eeb5b33564a505e204eec64a571abf29deade3f492d66cfb12142ae3c282cec5
|