Skip to main content

DJ GPS MVP

Updated 2026-09-13. The acceptance target is a professional DJ selecting a track pool, playing manually with useful guidance, allowing automatic mixing, taking over, and returning control without resetting the musical session. For the developer, the same system must support Start and a coherent 30-minute unattended set.

One planner should stay active across all three modes. Modes change execution permission, not musical memory. Ignoring advice is new context, not proof of a mistake or an automatic negative training label.

See the subsequent live recipe/Kimi implementation. Bounded live advice and editable stored sequential-fade recipes are now implemented; phrase-aligned blending and dataset-trained musical skill remain incomplete.

Current distance from the target

We have an operational control prototype, not a validated professional DJ MVP. A percentage would hide the largest uncertainty: whether the selected regions, timing and vocal evidence produce convincing audible blends.

RequirementCurrent evidenceRemaining acceptance
Select owned track poolLive UI, Mongo library and bounded Qdrant-assisted retrievalCurated audition-ready pool; standalone track versions and reviewed timing
Four decks and one mixerAudible engine, channel controls, browser monitor, rekordbox discoveryNo requirement to reproduce modern hardware fully for this MVP
Manual / co-pilot / autopilotShared live controller; mode changes retain session; manual takeover, alternative loading and one-shot execution testedLong manual passages and repeated manual → auto → manual cycles with professional listening
Automatic continuous playbackFour real tracks and three handoffs tested; ten simulated handoffs tested30 minutes / ten tracks with no required intervention and listening acceptance
Transition qualityLive four-second fade-out followed by four-second fade-in, without overlapOne reviewed phrase-aligned smooth blend; controlled EQ/bass exchange; tempo/grid and vocal compatibility checks
Guidance for a human-selected trackReplans in-pool manual choices; shows preparation/cue suggestions, tempo and vocal/timing warnings, optional Kimi explanationVerified phrase-aware EQ/FX steps, continuous in-mix adaptation and outside-pool guest-track context
LLMKimi K3 live shortlist adviser; one request per established track, bounded replanning, explicit refresh, session budget and stale-result checksListening evaluation of advice and cluster-wide spending controls
Human scoringOffline rendered attempts, listening and dimension ratings; low-rating penalty and reversible exact-context AvoidAuthenticated reviewer identity/expertise, live attempt capture, sample/overlay and whole-set reviews
LearningDurable event history; offline recipe-rating pipeline; 57,416 Raveform observations and train-only timing baselineLive corpus retrieval, additional dataset adapters, qualified quality labels, approved models and personalized ranking
Idle AI-vs-AI practiceOffline renderer and technical metrics existBackground scheduler, resource budget, live-session priority, experiment deduplication and challenger evaluation

The successful accelerated live run is documented in Live autopilot. It is not evidence that phrase-aligned blending or professional sound quality is solved.

MVP checkpoints, in order

  1. One good overlap: review two recordings' grids and relevant vocal/phrase intervals; map both regions to their approved grids; render a smooth blend; reject stale, mismatched or unapproved coordinates; listen against the predicted result.
  2. Human guidance: show Now, selected Next, cue and transition window, steps, alternatives and explicit unknowns. Advice refers to the human's chosen track. A fallback should say why a blend is unavailable; it must not invent bars, vocal absence or a confidence percentage.
  3. Continuous authority: test human → auto → human → auto during playback, preserving the pool, playing position, history, skips and current choice. Cancel superseded actions before issuing new controls. Changing modes must not reload or restart the currently playing track unnecessarily.
  4. Showcase set: run ten tracks / at least 30 minutes, with captured control trace and audio, no unintended silence/clipping or conflicting automation, then obtain listening feedback. Engineering tests and listening ratings are separate acceptance results.
  5. Learning in operation: harvest eligible rendered attempts, train a challenger from labelled examples, evaluate a frozen holdout and compare auditions. Deploy only an approved version with rollback. Add the second transition family after the first is convincing.

FX, samples and vocal overlays follow this same loop, but need their own labels and placement checks. A good full-track transition score does not qualify a vocal overlay. No fixed "5–10% sample probability" is a substitute for suitability.

Moderate LLM usage — original target, refined in the live adviser update

Database filters, Qdrant retrieval, search-as-you-type, state polling, audio analysis and control scheduling use zero LLM calls. The model sees a bounded shortlist and compact region evidence only when selecting the next move or handling a materially changed human choice. It never streams fader commands.

Start with a configurable per-session budget of 12 requests, a shortlist of five, a 30-second minimum interval between requests, and at most one in-flight request. Cache by track/region IDs, analysis revisions, pool, energy target and authority revision. Discard results from superseded state. Exhausted budgets, timeouts or invalid output fall back to local ranking and explicit provisional guidance. The implementation now uses one strategy consultation per established track plus bounded replanning and explicit refresh requests, with no model calls in recipe execution. It implements the request/count/timeout bounds. Persistent advice caching and cluster-wide cost enforcement remain future work. See the live adviser page for the exact contract.

Idle practice — target policy, not a deployed training job

Use isolated offline rendering, not the audible booth. When enabled, run one low-priority experiment at a time with a daily CPU/storage budget, pause new work when a live session is active, and retain reproducible audio/control/provenance artifacts. RabbitMQ supplies durable jobs and retry identity. Avoid repeatedly counting the same render or rewarding longer silence because it avoids clipping.

Automatic measurements may reject clipping, timing violations or unintentional gaps. They cannot establish professional taste. LLM criticism is a separate unverified label source, never expert ground truth. Practice may improve a technical objective; musical improvement still needs independent evidence. A model does not promote itself merely because its own ratings increased.

See Training, test sets and manual feedback for the implemented offline foundation and researched dataset options.

Learning queue placement

Reuse the RabbitMQ cluster in prochain-rabbitmq. The proposed learning topology has a dedicated virtual host or scoped exchange/queue permissions, durable aidj.learning.practice, a retry/dead-letter path and a separate worker pool. Messages carry tenant/job/artifact IDs, not audio bytes. Acknowledgement follows persisted results; stable experiment IDs make retries idempotent.

Virtual hosts provide logical resource/permission separation, not separate CPU, memory, storage or a separate failure domain. Separate consumers, prefetch limits, Kubernetes worker budgets, bounded retention and broker resource monitoring remain necessary. Another broker is justified only if measured load or availability needs require physical isolation. These learning queues/workers are a proposed design, not newly provisioned services. See RabbitMQ queues and virtual hosts.

UI as a learning surface

The current booth already displays live deck transport and four fader/EQ/filter strips. This iteration adds an always-visible action timeline with human/supervisor, requested/accepted status and channel/value descriptions, plus the steps of the actual sequential-fade recipe. An accepted command is not proof that a fade finished; live values are observed by polling, not sample-accurate animation.

The complete target adds per-control activity highlights, scheduled beat/bar markers, human-selected-track advice, and a stable link from each performed action to its recommendation and eventual review. Suggested, scheduled and observed controls must be visibly distinct. Never animate an unexecuted suggestion as an actual fader movement. The learning workspace should expose queued practice, completed auditions, human review, dataset coverage, train/validation/test counts, challenger versus baseline results and deployed model version. Those learning workspace screens remain to be built.

The implemented Canvas overview now shows four deck platters, player status, channel fader positions, EQ-control indicators and shared master gain. Positions A/B use separate colors, but still feed one mixer. It follows polled engine state with smoothing, shows stale/disconnected state, respects reduced-motion preferences for interpolation, and retains ordinary labelled HTML controls. It draws neither fabricated waveforms nor audio level meters.