Roadmap · v1.0.0 · 2026-07-16

Music DNA — Roadmap & Status

Shipped in v1.0, waiting on APIs, and planned after that. Companion to the product spec.

← Back home

Version: 1.0.0 Last updated: 2026-07-16 Companion to: /spec


1. v1.0 MVP — what works today

Everything below is live in the app right now and does not depend on any pending third-party API.

Auth & library

  • Email / password + Google sign-in via Lovable Cloud.
  • Route-gated _authenticated/* subtree redirects to /auth.
  • Personal track library with upload; every row is RLS-scoped to auth.uid().

Music DNA layer

  • L1 Measured — key, BPM, time signature, chord progression, section timestamps, loudness. Solid borders in the UI signal "confidence 1.0".
  • L2 Derived — energy curve, section loudness, harmonic complexity, vocal presence (RMS-approximated), stereo width, Roman-numeral chord movement with common-name mapping ("Sensitive Female Progression"). Dashed borders signal "derived, ~0.9".
  • L3 Interpreted — genre, sub-genre, mood adjectives, era feel, "sounds like" references, plain-English why per tag. Muted borders signal "interpreted, ~0.7".
  • Every DNA blob is versioned by METHODOLOGY_VERSION and stamped with its provider, so re-analysis is deterministic and auditable.
  • Provider is swappable at a single env flag: self-built today, musicatlas the day the key lands, cyanite as a commercial escape hatch.

Chat (text-only for now)

  • Five specialist agents: Chord Coach, Producer, Lyricist, Reference Scout, Blueprint Architect. Each is one config: persona + greeting + system prompt + tool set.
  • Per-track threads (/tracks/:id has an inline chat) and a global chat page (/chat + /chat/:threadId) with a sidebar of every session.
  • Tools available now: get_track_dna, search_tracks, compare_tracks. All run server-side with user-scoped Supabase reads.
  • Thread IDs are URL-first — refresh restores the exact conversation.

Corrections

  • Every DNA tag has a "this is wrong" affordance. Corrections are logged to dna_corrections (RLS-scoped) and will bump METHODOLOGY_VERSION when L2 thresholds are retuned.

Visuals (moves with the music, no APIs required)

  • DNA Helix — rotating double-helix, one rung per chord; rung weight = duration.
  • Energy Ribbon — mirrored RMS ribbon with dashed section boundaries + sweeping playhead glimmer.
  • Chord Constellation — unique-chord ring, arcs weighted by transition frequency.
  • Section Contact Sheet — one card per section with mini energy sparkline, LUFS, duration.
  • Confidence Weather — every DNA tag as a cell; solid / dashed / dotted border by confidence tier; low-confidence cells breathe.

Docs & admin

  • Public product spec at /spec with a Markdown download.
  • Public roadmap at /roadmap (this doc) with a Markdown download.
  • Personal admin at /admin: library totals, correction count, methodology version, API-readiness matrix, and quick links.

2. Waiting on APIs (lands in days, not weeks)

Three external APIs unlock the next tier. Everything in this section is scaffolded and flag-gated — no rewrite required when the keys arrive.

2.1 Stem separation

Vendor TBD. When live:

  • Real vocal presence L2 metric (replaces RMS approximation).
  • Hum-to-analyze — user hums a melody, we isolate voice and analyze pitch contour.
  • Live reference listening — Reference Scout answers "what's the kick doing here?" on isolated drums.
  • Stem downloads for DAW handoff.
  • New visual: Stem Cross-Section — per-stem waveform lanes.

2.2 MusicAtlas Song DNA (Plan A provider)

Replaces the current mock provider as the primary L1 + L2 source when the flag flips. Adds:

  • Rhythmic density, groove micro-timing (currently on the roadmap as Python-only).
  • MERT embeddings, Essentia mood.
  • Nearest-neighbor "sounds like" search — powers the search_tracks tool for real and unlocks the Reference Scout Nebula visual (2D projection of your library).

2.3 ElevenLabs music snippet API

Short (5–20s) generated snippets from prompt or DNA blob. Wired into the Blueprint Architect agent as generate_snippet:

  • User says "give me a bridge that departs from vi–IV–I–V but keeps the tempo".
  • Agent extracts constraints from the current DNA, calls the API, and plays the snippet inline in the chat transcript.
  • Snippets persist in a snippets table and can drag onto a track's timeline as an idea marker.
  • New visual: Snippet Sculpt — morphing waveform across iterations.

2.4 Deepgram voices + hands-free

  • Each agent bound to an Aura-2 voice (Luna, Orion, Andromeda, Arcas, Zeus).
  • Per-user voice picker persisted in agent_voice_prefs.
  • Press-to-talk first; then VAD (voice-activity detection) with sensitivity presets — quiet room / normal / loud studio — tunable START_RMS, SILENCE_MS, and a busyRef lock so the mic doesn't hear the app's own playback.
  • Songwriter keeps both hands on the instrument. Sing, hum, play a chord — agent answers by voice.

3. Planned (post-API polish and depth)

  • Comparison mode — two tracks side-by-side, radar chart, LLM narrates the gaps. Extends the existing compare_tracks tool with a visual.
  • MIO relationships tableinspired_by, derived_blueprint, cover_of, practice_version. Turns the "reference → my song" story into first-class data.
  • pgvector similarity — "songs like this one" once ≥50 tracks exist and MusicAtlas embeddings are live.
  • MIO export bundle — auditable download (DNA + corrections + confidence + relationships), only meaningful when we expose a public API.
  • Cyanite provider (Plan C) — commercial-licensing escape hatch; interface exists, activation is one env var.
  • Live Waveform Sync — playhead-driven full-mix waveform (needs stems + playback wiring).
  • Lyric Prosody River — syllable stress + rhyme arcs on lyric lines (needs lyrics extraction pipeline).

4. Explicitly non-goals

  • Not a DAW. We do not replace Logic, Ableton, or FL Studio.
  • Not a distribution platform. We do not publish to Spotify.
  • Not a stock-music library. Snippets are sketches, not licensed cues.
  • Not a general chatbot. Every agent is scoped to songwriting.

This roadmap is the source of truth for what's shipped vs. what's coming. When it changes, bump `ROADMAP_VERSION` in `src/lib/roadmap-doc.ts`.