Add a feedback for every controllable state, matrix send presets

A matrix-send knob looked dead on the booth Companion although the console
followed it (verified through Companion's rotate API: -90 -> -60 -> -59):
the module had matrix send actions but no matrix send feedbacks.

- Every action with a readable state now has a matching feedback: matrix
  send on/level text/level bar, matrix and control group solo and fader
  bars, graphic EQ in and band gain text/bar, aux send pan text, and value
  text for trim, gain and filter frequencies. A test checks the parity.
- New action: matrix output solo.
- Matrix sends use the console's -90 dB floor: adjusting down from -inf no
  longer writes -150 there.
- Presets: "Matrix sends to <output>" (on/off and knob per matrix input)
  and graphic EQ in/out. 2970 presets, 1.8 MB.

npm test: 368 checks pass on Node 25 and on Companion's Node 22.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-19 15:44:43 -04:00
co-authored by Claude Opus 5.5
parent 57645be1e9
commit 90dee14444
9 changed files with 351 additions and 57 deletions
+2 -1
View File
@@ -603,6 +603,7 @@ const SD_PROPS = {
prepost: { kind: 'int', min: 0, max: 1 }, // send_pre-post; captured as an int, range assumed
group: { kind: 'flag', wire: SD_GROUP_ASSIGN_WIRE_TYPE }, // Group_Send/M/group assign 0/1
geqGain: { kind: 'f', min: -12, max: 12 },
matrixLevel: { kind: 'f', min: -90, max: 10 }, // a matrix send floors at -90 dB (S31: off sends read -90), unlike -150 elsewhere
};
/**
* Per-channel switches and values answered on inputs and busses (Aux_Outputs and Group_Outputs),
@@ -790,7 +791,7 @@ function sdResolve(address) {
const input = sdMatrixIn[Number(m[1])];
const snd = input && input.sends[Number(m[2])];
const prop = m[3] === 'send_on' ? 'on' : 'level';
return snd ? { target: snd, prop, spec: SD_PROPS[prop] } : null;
return snd ? { target: snd, prop, spec: prop === 'level' ? SD_PROPS.matrixLevel : SD_PROPS.on } : null;
}
m = SD_RE_GEQ.exec(address);
if (m) {