68 lines
2.0 KiB
Markdown
68 lines
2.0 KiB
Markdown
# 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
|