Skip to content

Implement ParameterState model with echo suppression #16

@joaodotwork

Description

@joaodotwork

Description

Build the thread-safe ParameterState class that manages parameter values from both encoder input and OSC feedback, with temporal echo suppression to prevent feedback loops.

Tasks

  • Implement ParameterState with thread-safe lock
  • set_from_encoder(name, delta) — apply relative change, mark dirty, set echo window
  • set_from_osc(name, value) — apply if not within echo suppression window
  • 100ms temporal echo suppression window
  • Value dead zone (0.001 threshold) to handle float rounding
  • pop_dirty() — return and clear set of parameters needing redraw
  • snapshot() — return current parameter values for rendering
  • Support parameter paging (banks of 8)

Acceptance Criteria

  • Encoder changes propagate immediately to display and OSC
  • OSC feedback updates display but doesn't echo back to VDMX within 100ms
  • Thread-safe under concurrent encoder + OSC updates
  • Tests cover echo suppression timing and concurrent access

Technical Notes

Three-layer feedback suppression:

  1. Temporal — 100ms window after local change, ignore incoming OSC for that parameter
  2. Value dead zone — ignore changes < 0.001 (float rounding noise)
  3. Source tagging (optional) — track last change origin

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions