Skip to content

OM-M1.5: Parameters read in the units the touchscreen shows #13

Description

@jonathanstokes

Slice Type: extension

Description

As a Quad Cortex owner, I want a block's parameters to read in the units my screen shows, so that a knob displaying -6.0 dB reads -6.0 and I never meet a raw 0..1 scale.

This story closes the Epic's acceptance gate: it is the last piece inspect_preset.py needs, so the rewritten example lands here.

Acceptance Criteria

  • block.params["GAIN"] returns a typed Parameter, and iterating params yields the block's parameters with the labels the screen uses
  • KnobParam carries the value, unit, and range as displayed; SwitchParam covers two-state switches only; a switch of three or more states is a ChoiceParam over its own option list, as the manual describes
  • ChoiceParam options come from the preset's own option lists, so they match the screen exactly; where the option set is fixed it is a real enum, and where it is dynamic but structured it is a domain value type rather than a bare string
  • A parameter whose display mapping is unverified is absent from params rather than present with a caveat, and the omission is recorded in the design doc's appendix (principle 3)
  • param.follows_scenes reads, and a parameter that differs across scenes reports the right value through each scene's binding
  • device.virtual_devices lists categories and devices under the names the parameter editor uses, with stereo and sidechain markers
  • examples/inspect_preset.py is rewritten against the model: no proto import, and none of the protocol layer's reading helpers (blocks, splits, free_rows, field_present)
  • A hardware test runs the rewritten example and the current one against the same preset and asserts the same findings - blocks, splits, free rows, and the scene-following parameters

Links

Out of Scope

  • Setting any parameter value - M2
  • Promoting or demoting a parameter's scene following - M2. follows_scenes reads here
  • Splitter and mixer parameters beyond reading them through the same Params surface

Notes

  • NaN is real: factory presets store NaN in unused parameter slots, and NaN never equals itself. The current example drops NaN before comparing scene values, and the model has to absorb the same trap rather than re-teaching it
  • The catalogue is the source of parameter names, and the preset's own dynamic_steps is the source of option names. Both already exist at the protocol layer

Metadata

Metadata

Assignees

No one assigned

    Labels

    release-m1M1 read-only model milestoneslice-extensionExtension storystoryStory sub-issue of an Epic

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions