Files
RFP_Infinity-Vis/Infinity_Vis_1/FEATURE_INVENTORY.md

2.9 KiB

Current Feature Inventory

This inventory was collected from the current app/ codebase and is the scope target for the clean rebuild.

Core control flow

  • Mapping/project open, save, and save-as
  • Startup auto-load of sample mapping
  • Live scene and Next scene
  • FOH mode with Go and Fade Go
  • Tempo transport and transition time control
  • Utility modes such as blackout and single-tile white test

Pattern system

Current built-in patterns:

  • solid
  • checker
  • row_gradient
  • column_gradient
  • center_pulse
  • sparkle
  • breathing
  • wave_line
  • scan
  • arrow
  • scan_dual
  • sweep
  • saw
  • two_dots
  • strobe
  • stopwatch
  • snake

Pattern parameter surface in the current app includes:

  • brightness
  • fade / smoothing
  • tempo multiplier
  • direction
  • checker mode
  • scan style and angle
  • on/off width
  • band thickness
  • flip horizontal / vertical
  • strobe mode and duty cycle
  • stopwatch mode
  • color mode
  • primary / secondary colors
  • palette
  • symmetry
  • center pulse mode
  • step size
  • block size
  • pixel group size
  • randomness

Preview and UI

  • Main desktop Qt window
  • Pattern panel
  • Preset browser
  • Tile preview / technical preview / LEDs-only preview
  • Fullscreen preview window
  • Selected tile panel
  • Utility controls
  • Output diagnostics panel

Mapping and editing

  • XML mapping load/save/validation
  • Tile table editing
  • Segment table editing
  • Raw XML editor
  • Calibration and enable flags per tile
  • Controller IP / host / name / MAC metadata persistence

WLED-assisted mapping

  • Network scan for WLED devices
  • Device discovery via /json/info and /json
  • Per-device identify action
  • Tile assignment workflow inside Mapping Settings
  • Immediate persistence back to the mapping file

Presets

  • JSON-backed preset storage
  • Seed presets on first run
  • Save, load, and delete presets

Output

  • Preview backend
  • DDP backend for WLED
  • Art-Net backend seam
  • Output enable/disable
  • Output FPS target
  • Render FPS / Send FPS / Output health diagnostics
  • Controller-side FPS polling for WLED live mode

Performance pain points in the current code

  • A lot of per-frame object churn:
    • PreviewFrame
    • TileFrame
    • TilePatternSample
    • many RGBColor instances
    • nested dict[str, list[RGBColor]] payloads
  • Per-frame rebuilding of LED pixel lists for each segment
  • Preview and output coordination still centered around one controller loop
  • Multiple render engines and transition helpers duplicating state
  • DDP payload generation starts from nested Python objects instead of a compact frame buffer

Rebuild priorities for Infinity_Vis_1

  • fixed-size runtime state
  • lower per-frame allocation
  • preview cadence separated from hardware output cadence
  • controller-first payload generation
  • shared-IP multi-tile controller topology as a first-class concept
  • clean feature layering so UI, preview, render, and output can scale independently