2.0 KiB
2.0 KiB
Phase 2: App Core + Audio - Discussion Log
Audit trail only. Do not use as input to planning, research, or execution agents. Decisions are captured in CONTEXT.md — this log preserves the alternatives considered.
Date: 2026-04-03 Phase: 02-app-core-audio Areas discussed: Choreography format, Audio pipeline, Playback clock, CLI interface Mode: auto (all areas auto-selected, recommended defaults chosen)
Choreography File Format
| Option | Description | Selected |
|---|---|---|
| Pydantic JSON with event list | Structured, validated, sorted events | [auto] |
| YAML with event list | More human-readable but slower parsing | |
| SQLite database | Overkill for file-based storage |
User's choice: [auto] Pydantic-validated JSON (recommended default)
Audio Pipeline
| Option | Description | Selected |
|---|---|---|
| Separate threads (miniaudio + sounddevice) | Clean isolation, no device contention | [auto] |
| Single thread with multiplexing | Complex, potential blocking | |
| Subprocess for audio | Over-engineered for this use case |
User's choice: [auto] Separate threads with call_from_thread bridge (recommended default)
Playback Clock
| Option | Description | Selected |
|---|---|---|
| Absolute monotonic timestamps | No drift, correct after pause/resume | [auto] |
| Relative sleep chains | Simple but drifts 100-200ms/minute | |
| Hardware timer | Overkill for Pi |
User's choice: [auto] Absolute monotonic timestamps (recommended default)
CLI Interface
| Option | Description | Selected |
|---|---|---|
| Simple asyncio REPL | Lightweight, disposable | [auto] |
| Click/Typer CLI | Over-engineered for testing | |
| No CLI (scripts only) | Less interactive |
User's choice: [auto] Simple asyncio REPL (recommended default)
Claude's Discretion
- Python package structure, asyncio task organization, Pydantic details, aubio config
Deferred Ideas
None