docs: create roadmap (4 phases)
This commit is contained in:
@@ -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
79
.planning/ROADMAP.md
Normal 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
64
.planning/STATE.md
Normal 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
|
||||
Reference in New Issue
Block a user