docs: create roadmap (4 phases)

This commit is contained in:
Claude
2026-04-03 12:39:17 +02:00
parent 1d26fc2dc5
commit 72ed07b0e9
4 changed files with 338 additions and 5 deletions

View File

@@ -77,13 +77,35 @@
| Requirement | Phase | Status |
|-------------|-------|--------|
| (populated during roadmap creation) | | |
| FW-01 | Phase 1 | Pending |
| FW-02 | Phase 1 | Pending |
| FW-03 | Phase 1 | Pending |
| FW-04 | Phase 1 | Pending |
| FW-05 | Phase 1 | Pending |
| AUD-01 | Phase 2 | Pending |
| AUD-02 | Phase 2 | Pending |
| AUD-03 | Phase 2 | Pending |
| AUD-04 | Phase 2 | Pending |
| CHR-04 | Phase 2 | Pending |
| CHR-05 | Phase 2 | Pending |
| CHR-01 | Phase 3 | Pending |
| CHR-02 | Phase 3 | Pending |
| CHR-03 | Phase 3 | Pending |
| UI-01 | Phase 3 | Pending |
| UI-02 | Phase 3 | Pending |
| UI-03 | Phase 3 | Pending |
| UI-04 | Phase 3 | Pending |
| UI-05 | Phase 3 | Pending |
| UI-06 | Phase 3 | Pending |
| LIVE-01 | Phase 4 | Pending |
| LIVE-02 | Phase 4 | Pending |
| SPT-01 | Phase 4 | Pending |
**Coverage:**
- v1 requirements: 22 total
- Mapped to phases: 0
- Unmapped: 22
- v1 requirements: 23 total
- Mapped to phases: 23
- Unmapped: 0
---
*Requirements defined: 2026-04-03*
*Last updated: 2026-04-03 after initial definition*
*Last updated: 2026-04-03 after roadmap creation*

79
.planning/ROADMAP.md Normal file
View File

@@ -0,0 +1,79 @@
# Roadmap: LED Sync Studio
## Overview
Four phases build a music-synchronized LED choreography system from hardware up. Phase 1 validates the ESP32 firmware and retires all hardware risks before any Pi-side code is written. Phase 2 builds the headless Pi core — audio playback, beat detection, choreography engine, and UDP transport — all CLI-testable against real hardware. Phase 3 assembles the full cyberpunk TUI on top of the stable core, delivering the choreography editor end-to-end. Phase 4 adds live-reactive mode and Spotify as a second audio source.
## Phases
**Phase Numbering:**
- Integer phases (1, 2, 3): Planned milestone work
- Decimal phases (2.1, 2.2): Urgent insertions (marked with INSERTED)
Decimal phases appear between their surrounding integers in numeric order.
- [ ] **Phase 1: ESP32 Firmware** - Both LED strips driven by a WiFi-connected ESP32 that executes named animations from JSON commands
- [ ] **Phase 2: App Core + Audio** - Headless Pi layer: song playback, beat detection, choreography engine, UDP transport
- [ ] **Phase 3: Choreography TUI** - Full cyberpunk terminal UI with timeline editor, event list, transport controls, and animation panel
- [ ] **Phase 4: Live Reactive + Spotify** - Beat-driven animation mode with sensitivity calibration and Spotify as audio source
## Phase Details
### Phase 1: ESP32 Firmware
**Goal**: Both LED strips are driven by one ESP32-C3 that receives JSON commands over WiFi and executes named animations autonomously
**Depends on**: Nothing (first phase)
**Requirements**: FW-01, FW-02, FW-03, FW-04, FW-05
**Success Criteria** (what must be TRUE):
1. WS2801 (160 LEDs, SPI) and SK6812 (300 LEDs, RMT/RGBW) both illuminate correctly and simultaneously with no flicker from WiFi interference
2. Sending a UDP JSON command (e.g. `{"zone":"wall","animation":"chase","speed":0.5}`) from a laptop triggers the named animation on the correct strip within 50ms
3. All 8 built-in animations (Chase, Pulse, Rainbow, Strobe, Color Wash, Breathe, Sparkle, Gradient Sweep) run on either zone without crashing
4. Each zone can be commanded independently — different animations run on Schrank and Wand simultaneously
5. Animation parameters (color/RGBW, speed, intensity) visibly change behavior when included in the JSON command
**Plans**: TBD
### Phase 2: App Core + Audio
**Goal**: The Pi can play songs, detect beats, schedule choreography events, and send animation commands to the ESP32 — all testable from the command line without any TUI
**Depends on**: Phase 1
**Requirements**: AUD-01, AUD-02, AUD-03, AUD-04, CHR-04, CHR-05
**Success Criteria** (what must be TRUE):
1. A local MP3, FLAC, or WAV file plays with audible output and the current playback position is readable at any moment
2. Playback can be paused, resumed, and seeked to an arbitrary timestamp via CLI commands
3. Beat events are detected from the system audio stream in real time (aubio) with visible console output per beat
4. A choreography JSON file loads and plays back: correct animations fire on the ESP32 at the timestamps specified in the file
5. Choreography edits (adding an event) save to a JSON file that reloads correctly on next run
**Plans**: TBD
### Phase 3: Choreography TUI
**Goal**: The full cyberpunk terminal UI is usable over SSH: user can load a song, place animations on the timeline, and play back a complete light show
**Depends on**: Phase 2
**Requirements**: CHR-01, CHR-02, CHR-03, UI-01, UI-02, UI-03, UI-04, UI-05, UI-06
**Success Criteria** (what must be TRUE):
1. The TUI launches over SSH with cyberpunk/neon styling — dark background, glowing colored elements — and all panels are legible in a standard terminal
2. User can select a position in the song, choose an animation with parameters, and assign it to a zone — it appears as a block on the timeline view
3. User can tap a key on the beat during playback to stamp timing marks, and those marks are visible on the timeline
4. User can switch between Timeline view (horizontal blocks) and Event List view (table of timestamps) for the same choreography
5. Pressing Play runs the full light show — animations fire on the ESP32 in sync with the song — and the playhead advances visibly on the timeline
**Plans**: TBD
**UI hint**: yes
### Phase 4: Live Reactive + Spotify
**Goal**: Users can switch into live-reactive mode where beats drive LED animations in real time, and can optionally use Spotify as the audio source
**Depends on**: Phase 3
**Requirements**: LIVE-01, LIVE-02, SPT-01
**Success Criteria** (what must be TRUE):
1. User can switch from choreography mode to live-reactive mode without restarting the app, and LEDs respond to beats within 100ms of audio onset
2. User can adjust beat-detection sensitivity in the UI and see the effect immediately — more sensitive triggers fire on quieter transients, less sensitive ignores them
3. Spotify audio passes through the system audio pipeline and triggers beat-reactive animations the same way local file playback does
**Plans**: TBD
## Progress
**Execution Order:**
Phases execute in numeric order: 1 → 2 → 3 → 4
| Phase | Plans Complete | Status | Completed |
|-------|----------------|--------|-----------|
| 1. ESP32 Firmware | 0/? | Not started | - |
| 2. App Core + Audio | 0/? | Not started | - |
| 3. Choreography TUI | 0/? | Not started | - |
| 4. Live Reactive + Spotify | 0/? | Not started | - |

64
.planning/STATE.md Normal file
View File

@@ -0,0 +1,64 @@
# Project State
## Project Reference
See: .planning/PROJECT.md (updated 2026-04-03)
**Core value:** Songs mit LED-Animationen choreografieren und abspielen — der Nutzer baut Timeline-basierte Lichtshows zu seiner Musik.
**Current focus:** Phase 1 — ESP32 Firmware
## Current Position
Phase: 1 of 4 (ESP32 Firmware)
Plan: 0 of ? in current phase
Status: Ready to plan
Last activity: 2026-04-03 — Roadmap created, all 23 v1 requirements mapped to 4 phases
Progress: [░░░░░░░░░░] 0%
## Performance Metrics
**Velocity:**
- Total plans completed: 0
- Average duration: -
- Total execution time: 0 hours
**By Phase:**
| Phase | Plans | Total | Avg/Plan |
|-------|-------|-------|----------|
| - | - | - | - |
**Recent Trend:**
- Last 5 plans: -
- Trend: -
*Updated after each plan completion*
## Accumulated Context
### Decisions
Decisions are logged in PROJECT.md Key Decisions table.
Recent decisions affecting current work:
- [Roadmap]: Hardware-first build order — ESP32 is the validation target for all Pi-side work; developing against a mock risks protocol mismatches late.
- [Roadmap]: WiFi+RMT coexistence must be tested on day 1 of Phase 1 (documented FastLED #1657, February 2026 — actively problematic on single-core ESP32-C3).
- [Roadmap]: SK6812 is RGBW (4 bytes/LED) — configure explicitly before any animation code; retrofitting requires protocol version bump.
### Pending Todos
None yet.
### Blockers/Concerns
- [Phase 1]: ESP32-C3 RMT+WiFi coexistence has conflicting documentation — test simultaneously on first flash.
- [Phase 1]: GPIO pin assignment for simultaneous RMT (SK6812) + SPI (WS2801) on SuperMini needs hardware validation.
- [Phase 2]: aubio 0.4.9 ARM pip wheel on Raspberry Pi OS bookworm unverified — may require source build.
- [Phase 2]: sounddevice + miniaudio simultaneous PipeWire access needs early testing.
## Session Continuity
Last session: 2026-04-03
Stopped at: Roadmap written, STATE.md initialized. No plans exist yet.
Resume file: None