{
  "$schema": "https://pointcast.xyz/music.schema.json",
  "version": 1,
  "name": "PointCast Music Landscape",
  "description": "A catalog of the pointcast.xyz music app: every page in the listen → understand → play → create → capstone journey, with phase, description, persistent-state keys, and exportable flags. Intended for agents, plugins, and downstream tooling that want to discover or link into the music surfaces.",
  "generatedAt": "2026-05-16T17:11:48.379Z",
  "canonical": "https://pointcast.xyz/music.json",
  "landingPages": [
    "https://pointcast.xyz/town-music",
    "https://pointcast.xyz/sprint-overnight-2026-05-10"
  ],
  "journey": [
    {
      "phase": "listen",
      "label": "Listen",
      "intent": "Hear what the drum hub can make."
    },
    {
      "phase": "understand",
      "label": "Understand",
      "intent": "Learn how Web Audio primitives work."
    },
    {
      "phase": "play",
      "label": "Play",
      "intent": "Train your ear and rhythm."
    },
    {
      "phase": "create",
      "label": "Create",
      "intent": "Make your own song."
    },
    {
      "phase": "capstone",
      "label": "Capstone",
      "intent": "See your progress as a diploma."
    },
    {
      "phase": "meta",
      "label": "Meta",
      "intent": "Discover the landscape."
    }
  ],
  "pages": [
    {
      "path": "/cast-music-pro",
      "name": "Cast Music Pro",
      "phase": "listen",
      "description": "Spotify-shaped music app for the drum hub. UI polish layer with real typography hierarchy, animated album art, lyric tickers, onboarding modal, Wrapped-style summary.",
      "tags": [
        "ui-polish",
        "listen",
        "spotify-shaped"
      ],
      "localStorageKey": "pc-cmp-saved · pc-cmp-playlists · pc-cmp-recent · pc-cmp-plays",
      "shippedOn": "2026-05-08",
      "approxLines": 1615,
      "canonicalUrl": "https://pointcast.xyz/cast-music-pro"
    },
    {
      "path": "/cast-studio",
      "name": "Cast Studio",
      "phase": "listen",
      "description": "Synth engine depth pass. 8-bar arrangements per song, per-artist sound design, voice-led chord progressions, mastering bus (glue compression + soft clip + limiter), send-based reverb + delay.",
      "tags": [
        "synth-engine",
        "listen",
        "mastering-bus"
      ],
      "shippedOn": "2026-05-08",
      "approxLines": 1327,
      "canonicalUrl": "https://pointcast.xyz/cast-studio"
    },
    {
      "path": "/cast-real",
      "name": "Cast Real",
      "phase": "listen",
      "description": "Real recorded instrument samples loaded from the gleitz/midi-js-soundfonts CDN. Each Noun artist gets a different real instrument (trumpet, vibraphone, flute, choir pad). Drums stay synthesized.",
      "tags": [
        "real-samples",
        "listen",
        "cdn-dependency"
      ],
      "shippedOn": "2026-05-08",
      "approxLines": 999,
      "canonicalUrl": "https://pointcast.xyz/cast-real"
    },
    {
      "path": "/drum-academy",
      "name": "Drum Academy",
      "phase": "understand",
      "description": "Ten interactive Web Audio lessons hosted by Noun teachers. Stereo, binaural, waveforms, AM, FM, reverb, compression, Karplus-Strong, ADSR, filter sweep.",
      "tags": [
        "theory",
        "understand",
        "lessons"
      ],
      "shippedOn": "2026-05-09",
      "approxLines": 1564,
      "canonicalUrl": "https://pointcast.xyz/drum-academy"
    },
    {
      "path": "/drum-school",
      "name": "Drum School",
      "phase": "play",
      "description": "Seven mini-games training real musical skills. Beat keeping, chord recognition, interval ear, rhythm echo, key recognition, tempo tap, melody memory. Star-based progression (max 21).",
      "tags": [
        "ear-training",
        "play",
        "star-system"
      ],
      "localStorageKey": "pc-ds-stars",
      "shippedOn": "2026-05-09",
      "approxLines": 1396,
      "canonicalUrl": "https://pointcast.xyz/drum-school"
    },
    {
      "path": "/cast-make",
      "name": "Cast Make",
      "phase": "create",
      "description": "A 4-bar tiny composer. Pick a Noun kit, sketch chords, toggle drums, pick a lead phrase. Save 3 compositions, share via URL hash, render to a downloadable WAV.",
      "tags": [
        "composer",
        "create",
        "4-bar",
        "wav-export"
      ],
      "localStorageKey": "pc-make-slot-1 · pc-make-slot-2 · pc-make-slot-3",
      "exportable": true,
      "shippedOn": "2026-05-08",
      "approxLines": 975,
      "canonicalUrl": "https://pointcast.xyz/cast-make"
    },
    {
      "path": "/cast-make-pro",
      "name": "Cast Make Pro",
      "phase": "create",
      "description": "Pro-tier 8-bar composer. Per-bar drum patterns, 4-level velocity, swing slider, per-bar lead phrases, pad voicings, multi-track WAV+ZIP export, undo/redo, 8 save slots.",
      "tags": [
        "composer",
        "create",
        "8-bar",
        "wav-export",
        "multi-track",
        "undo"
      ],
      "localStorageKey": "pc-mp-slot-1 … pc-mp-slot-8",
      "exportable": true,
      "shippedOn": "2026-05-10",
      "approxLines": 2170,
      "canonicalUrl": "https://pointcast.xyz/cast-make-pro"
    },
    {
      "path": "/cast-graduate",
      "name": "Cast Graduate",
      "phase": "capstone",
      "description": "Reads your /drum-school stars + /cast-make compositions and awards a rank (Apprentice → Maestro). Generates a personalized \"graduating-class Noun\" deterministically from your progress.",
      "tags": [
        "capstone",
        "diploma",
        "progression"
      ],
      "shippedOn": "2026-05-10",
      "approxLines": 602,
      "canonicalUrl": "https://pointcast.xyz/cast-graduate"
    },
    {
      "path": "/town-music",
      "name": "Town Music",
      "phase": "meta",
      "description": "Music landscape dashboard. Surfaces all pages in the journey plus your local state: recently heard, your compositions, star rankings, a journey-map visualization.",
      "tags": [
        "dashboard",
        "meta",
        "discovery"
      ],
      "shippedOn": "2026-05-10",
      "approxLines": 679,
      "canonicalUrl": "https://pointcast.xyz/town-music"
    },
    {
      "path": "/sprint-overnight-2026-05-10",
      "name": "Overnight Sprint Dashboard",
      "phase": "meta",
      "description": "Public scoreboard of the 2026-05-10 overnight sprint. Seven parallel agents ship seven PRs in one night. Cards show PR #, merge SHA, line count per task.",
      "tags": [
        "dashboard",
        "meta",
        "sprint-artifact"
      ],
      "shippedOn": "2026-05-11",
      "approxLines": 311,
      "canonicalUrl": "https://pointcast.xyz/sprint-overnight-2026-05-10"
    }
  ],
  "counts": {
    "pages": 10,
    "byPhase": {
      "listen": 3,
      "understand": 1,
      "play": 1,
      "create": 2,
      "capstone": 1,
      "meta": 2
    },
    "totalApproxLines": 11638
  },
  "sharedLibraries": {
    "src/lib/audio-scheduler.ts": {
      "purpose": "Tiny shared Web Audio scheduler. trackSource() registers sources for stopAll(); schedule(fn, atCtxTime) parks timers across pause/resume. Adopted by cast-music-pro, cast-studio, cast-real, cast-make, cast-make-pro, drum-school.",
      "adopters": [
        "/cast-music-pro",
        "/cast-studio",
        "/cast-real",
        "/cast-make",
        "/cast-make-pro",
        "/drum-school"
      ],
      "notAdopted": [
        "/drum-academy (manual disconnect in each lesson stop() — punch-list item #6)"
      ]
    }
  },
  "auditTrail": {
    "latestAudit": "docs/audit-2026-05-10-audio.md",
    "punchListFixes": [
      {
        "pr": 568,
        "sha": "c1c6302",
        "items": "1-6 (BUGs + RACE + LEAKs)"
      },
      {
        "pr": 574,
        "sha": "e3d0a56",
        "items": "7-11 (POLISH + A11Y + PERF + BUG)"
      }
    ],
    "deferredItems": [
      "12 — truncated-MP3 sanity check in cast-real (defer per audit note)"
    ]
  }
}