🎧 Music Library BPM Orchestrator
Small CLI tool to download, analyze, tag and organize MP3 music files by BPM.
It integrates with Archive.org and provides a manual BPM tap interface using pygame.
✨ Features
- 🔎 Search and download music from Archive.org
- 🎵 Manual BPM tapping interface (keyboard or buttons)
- 🏷️ Write BPM metadata into MP3 files (ID3 tag)
- 🗂️ Automatically rename and organize files into BPM ranges
- 📚 Process local folders of MP3 files
- ⚡ CLI built with Click
🚀 Installation
Install from pypi.org or pypi.org in your environment.
To test that it was installed properly run:
music-tapper
🚀 Installation (local dev)
This project uses Poetry.
poetry install
Run commands inside the virtual environment:
poetry run music-tapper --help
🎛️ CLI Usage
- Download music from Archive.org
Supports filters:
- --text
- --artist
- --genres
- --subjects
- --year-from
- --year-to
poetry run music-tapper download \
--text "swing jazz" \
--artist "count basie" \
--year-from 1930 \
--year-to 1945
- Process local folder
poetry run music-tapper from-folder ./my_mp3s
This will:
- Open BPM tap UI
- Save BPM to MP3 metadata
- Rename file to (BPM) Artist - Title.mp3
- Move it into /library//
🎹 BPM Tap Controls
Inside the UI:
| Key / Button | Action |
|---|---|
SPACE |
Tap BPM |
ENTER |
Save BPM |
ESC |
Exit |
[> ] |
Play |
[||] |
Stop |
[R] |
Restart track |
[>>] |
Skip track |
📁 Output Structure
library/
├── 100-140/
├── 140-180/
├── 180-200/
└── 200-260/
Each file is renamed automatically using metadata.
🧠 Dependencies
- pygame – playback & UI
- mutagen – ID3 tagging
- requests – Archive.org API
- click – CLI
⚠️ Notes
- Designed for educational and personal use
- Be respectful with Archive.org bandwidth (the tool already throttles requests)
- Metadata quality depends on source files
🛠️ Future Ideas
- 🌐 Web UI (Flask + React)
- 🔎 BPM database browser
- 🤖 Automatic BPM detection
- 🧾 Export to CSV / JSON
Metadata
Release files for music-tapper 0.2.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 | |
|---|---|---|---|
| music_tapper-0.2.0.tar.gz | 11.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| music_tapper-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.4 kB
Release files / music_tapper-0.2.0.tar.gz
| Download URL | music_tapper-0.2.0.tar.gz |
|---|---|
| Size | 11.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f549752acff770aa37bdcedbc210f006094552c8d0d806b150d80fd5ce3b1894
|
|
BLAKE2b-256 checksum How to use checksums |
6ef0c606cc0bdbcab40d57612161ef69953daf63ef5ef6fbb15de85803991892
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.4 CPython/3.13.5 Windows/11
|
Release files / music_tapper-0.2.0-py3-none-any.whl
| Download URL | music_tapper-0.2.0-py3-none-any.whl |
|---|---|
| Size | 12.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c48d5424584ae6b8f0bc63e0c4be3ad905358d2d250ba8783cc2f4144ca9cc54
|
|
BLAKE2b-256 checksum How to use checksums |
f70ce739634e652a22a03416be7931d7da708c19aae1195403c3f07a2f0c3504
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.4 CPython/3.13.5 Windows/11
|