dj-score

The one shared library for DJ track analysis — beat grid, key, events, spectral score, collision, Rekordbox export. Camelot is its UI; CyborgDJ is its second consumer.

Repo: dj-score — logical name dj-score, sibling ../dj-score (next to camelot-from-youtube and cyborgdj) Links: Two Libraries Out of a Grown Tool — the extraction and its lessons (2026-10-22), dj-render — the render library it pairs with, Camelot From YouTube — the source specimen and the UI that consumes it, CyborgDJ — second consumer (its forked scripts retire), Well-Structured Python at Scale — the design this follows (§2 layout, §4 migration recipe), Eyes and Ears for LLMs — G1 grid / G7 stems goals, DJ Blend Tool Test Plan — Phase 3 grid results behind the grid swap, CyborgDJ as Controller — this library as an MCP tool surface (design; needs cache-first analysis)

State

Ledger steps 1–5 done (2026-10-21), archiving deferred until all extraction is finished. dj-score holds the model, the cache store, every analysis module and the services. camelot’s UI now runs on them, verified by a replayed- session oracle against the pre-repoint UI. Every camelot CLI now has a dj-score subcommand. Code-only: fixtures are generated locally. Camelot extraction complete (2026-10-22: nothing left to harvest, per a Breeder hand-label evaluation). Camelot’s retired tools are archived locally (2026-10-22). Tracks now live in a shared, local-only music library (../music: originals, plus analysis/<track>/ for derived files), resolved for every tool by dj-score adapters/library. Next: the comb grid as an optional second grid (step 6 prep), then the CyborgDJ audit: code, data (same cleanup as camelot) and whether the mixer is its own library. Python ≥ 3.11, src layout; layers cli → bootstrap → (adapters | services) → ports → domain enforced by import-linter, core kept free of plotting/UI/ML/IO packages. Migration from camelot is copy → repoint → archive (nothing is purged; retired tools and their outputs move to camelot’s archive/); the per-tool keep / fold / retire verdicts and the order live in the repo at MIGRATION.md — that file is the single source; this page only points at it.

Tags

music, python, audio-processing