16 Commits

Author SHA1 Message Date
shawn bf518d78b3 Add AGENTS.md for AI agent context
Lint & Validate / lint (push) Has been cancelled
2026-05-25 20:19:00 -04:00
shawn 7c9b46c59f Fix build.sh --target arg parsing, add USB/NVMe boot instructions to docs
Lint & Validate / lint (push) Has been cancelled
2026-05-19 23:22:50 -04:00
shawn 6a6f2739be P7-R3: Add comprehensive troubleshooting guide
Lint & Validate / lint (push) Has been cancelled
- docs/troubleshooting.md: 8-section guide covering audio, MIDI, network,
  recording, streaming, system, and build issues
- Includes diagnostic health check script and JACK error code reference
- All other docs (README, build-guide, user-manual, hardware-compatibility,
  developer-guide) were already committed and verified as complete
2026-05-19 23:03:19 -04:00
shawn e450189858 Docs: Full USB/NVMe boot coverage across all documentation
Lint & Validate / lint (push) Has been cancelled
- build-guide.md: Boot medium options table, USB/NVMe flash instructions,
  EEPROM boot order setup, first-boot wizard boot config step
- user-manual.md: Required hardware lists all 3 boot targets, EEPROM
  bootstrap instructions, NVMe HAT recommendation for live use
- hardware-compatibility.md: New storage/boot media section with NVMe
  HAT compatibility table (official, Pimoroni, Geekworm)
- Obsidian wiki: Build section with all 3 targets + EEPROM config
- developer-guide.md: Added (from task completion)
2026-05-19 22:58:49 -04:00
shawn 9e007ae197 Build: Add USB boot + NVMe HAT support
Lint & Validate / lint (push) Has been cancelled
- --target flag in build.sh (sd|usb|nvme)
- NVMe kernel driver enabled for --target nvme
- EEPROM boot-order config in first-boot wizard
- USB/NVMe flashing docs in build/README.md
- Hardware compatibility + user manual docs from P7
2026-05-19 22:54:41 -04:00
shawn 5e208d5123 P7-R2: Wiki documentation — Obsidian + Gitea wiki pages
Lint & Validate / lint (push) Has been cancelled
2026-05-19 22:49:16 -04:00
shawn e9c504c0d7 P7-R1: Build Script / SD Card Image — automated build system
Lint & Validate / lint (push) Has been cancelled
Adds complete SD card image builder for the RPi Audio Mixer:
- build/build.sh: Main builder (RPiOS Lite base + chroot config + optional RT kernel cross-compile)
- build/configure-system.sh: Chroot configuration (packages, services, audio config)
- build/first-boot/setup-wizard.sh: Interactive first-boot setup (audio, WiFi, hostname, API key, JACK)
- build/README.md: Flashing instructions and build documentation
- Updated .gitignore to track build scripts but ignore artifacts
- Updated README.md with current project status

735/735 tests pass. Build runs on x86_64 without a Raspberry Pi.
2026-05-19 22:38:15 -04:00
shawn f945196199 P6-R2: Session manager — save/load mixer states with setlists and snapshots
Lint & Validate / lint (push) Has been cancelled
Core session management:
- MixerSession: full mixer state as versioned JSON (channels, buses, routing, plugins, MIDI, transport, automation)
- SessionManager: save/load/list/delete/rename/duplicate/import/export sessions to ~/.config/rpi-mixer/sessions/
- Setlist: ordered collection of sessions with transition types (cut, crossfade, wait)
- SnapshotEngine: instant scene capture/recall with persistence, categories, next/prev

API endpoints (all under /api/v1/):
- GET/POST/DELETE /sessions — list, save, load, delete, info
- POST /sessions/{name}/rename, /duplicate, /export, /import
- GET/POST/DELETE /setlists — list, save, load, delete
- GET/POST/DELETE /snapshots — list, capture, recall, delete, next, prev
- GET/POST /sessions/autosave — status, enable, disable

Web UI:
- Sessions tab: full session browser with load/delete/duplicate/export
- Setlists subtab: create/edit/activate setlist with entry management
- Snapshots subtab: capture/recall with category badges
- Auto-save status indicator
- Import/export all sessions as zip

Kivy touchscreen UI:
- New SES tab with sessions/setlists/snapshots sub-views
- Touch-optimized cards with save/load/delete actions

Tests: 51 new tests, 735 project total — all passing
2026-05-19 22:19:39 -04:00
shawn cdf04bd8eb P6-R1: Audio/video streaming pipeline
Lint & Validate / lint (push) Has been cancelled
- src/streaming/ module: camera detection (USB webcam + Pi Camera Module via
  v4l2/libcamera), GStreamer pipeline builder with V4L2/OMX/x264 h264 encoders,
  platform presets (YouTube, Twitch, Facebook, custom RTMP), streamer lifecycle
  manager with auto-reconnect, scene management, stream statistics
- Keyboard shortcut controller (evdev + pynput fallback) for stream control:
  Ctrl+Shift+S (start/stop), Ctrl+Shift+1-9 (scene switch), Ctrl+Shift+R (reconnect)
- REST API: /api/v1/stream/* endpoints for start/stop/status, scenes, cameras,
  platforms, and hotkey listing — integrated into NetworkServer
- StreamStateProvider bridging layer connects REST routes to Streamer instance
- GStreamer pipeline supports ALSA/JACK/PulseAudio audio capture and
  V4L2/libcamera video capture with H.264 hardware encoding on RPi4B
- Low-latency streaming settings for live performance (zerolatency, no B-frames)
- 89 streaming tests (709 total project tests pass)
2026-05-19 22:13:51 -04:00
shawn d6480a35ed P3-R3: Multi-track recording engine
Lint & Validate / lint (push) Has been cancelled
- WAV writer with streaming support for 16/24/32-bit integer and 32-bit float
- MultiTrackRecorder with per-channel arming, arm state machine, write-ahead
  buffer queues decoupling JACK real-time thread from SD card I/O
- Punch in/out recording on individual channels with punch region tracking
- Session file format (JSON): session metadata, takes, tracks, mixer state,
  punch regions, serialization round-trip
- Take management: create, delete, rename, list, track association
- Stereo bounce engine with pan law (-3dB constant power), normalisation,
  master bus volume/mute/dim, block-based processing for memory efficiency
- Disk space monitor with configurable warning/critical thresholds, estimated
  recording time remaining, background polling, callback on threshold change
- 117 tests: sample conversion, WAV header validation, recorder lifecycle,
  session CRUD, serialization, bounce with pan/normalisation/master, integration

Integrates with JACK capture ports → mixer → recording ports → disk.
Architecture: JACK callback → recorder.write() → buffer queue → writer thread → WAV files.
2026-05-19 21:44:28 -04:00
shawn 349139ad1f P5-R3: fix count-in recursion + test buffer loop size
Lint & Validate / lint (push) Has been cancelled
2026-05-19 21:08:15 -04:00
shawn b79d7288c5 P5-R3: Web app frontend — touch-optimized mixer UI
Lint & Validate / lint (push) Has been cancelled
- Complete SPA rewrite: 4 tabs (Mixer, Routing, Plugins, Sessions)
- Touch-optimized faders with animated level meters (dark theme)
- Channel strips: fader, mute, solo, pan, EQ modal with 3-band EQ + compressor + gate
- Routing matrix: drag-and-drop source→destination, connection list with mute toggles
- Plugin control: per-channel plugin cards with bypass and parameter sliders
- Session browser: list/load/save/delete scenes via REST API
- Transport controls: play, stop, record, loop, locate (keyboard shortcuts: space=play)
- Responsive: phone portrait (touch-first), landscape, tablet, desktop
- Zero dependencies: vanilla JS + WebSocket only
- Backend: added DELETE /api/v1/scenes/{name} endpoint, wired delete_scene callback

web/app.js (917 lines), web/style.css (1100 lines), web/index.html (160 lines)
2026-05-19 21:05:43 -04:00
shawn 9cd8292acc Phase 1-4: Audio stack, mixer engine, MIDI, and network API
Lint & Validate / lint (push) Has been cancelled
P2-R1: ALSA + JACK2 low-latency config (scripts, quirks, tuning)
P2-R2: Carla integration (build scripts, 8ch rack config, NAM LV2 support)
P2-R3: Plugin manager, categories, blacklist, NAM model support
P3-R1: Mixer DSP engine (channel strip, routing matrix, bus mgr, automation)
P4-R1: MIDI engine (learn mode, clock sync, HID discovery, mapping store)
P4-R2: Network API (OSC server, FastAPI REST, WebSocket, auth, rate limiter)
P5-R1: Touchscreen UI evaluation + main entry point
docs: Audio stack, Carla integration, MIDI support, UI evaluation
tests: Full test suite (292 passing)
2026-05-19 20:39:17 -04:00
shawn 7b123762b5 P1-R3: Add credential files to .gitignore
Lint & Validate / lint (push) Has been cancelled
2026-05-19 19:11:55 -04:00
shawn c51feb4b1e P1-R3: Add CI/CD skeleton (Gitea Actions)
Lint & Validate / lint (push) Has been cancelled
- .gitea/workflows/lint.yaml: EditorConfig, Markdown, ShellCheck, YAML lint
- Runs on push/PR to main
2026-05-19 19:08:02 -04:00
shawn 96a6b96b7e P1-R3: Initial project infrastructure
- Project directory structure: docs/, src/, build/, recipes/, scripts/, wiki/
- README.md with project overview and status
- .editorconfig for consistent code style
- .gitignore for Python, C/C++, kernel, and build artifacts
- docs/research/: system research report + base OS decision
- docs/audio-stack-config.md: audio stack configuration notes
- config/: JACK, ALSA, CPU performance configs
- Preserved research from P1-R1 and P1-R2 tasks
2026-05-19 19:06:12 -04:00