The GAIN a freshly-seeded head-amp record shows: the box's committing NORMAL GAIN, in dB.
0x20 — and under the one-unit law the byte IS the gain in dB, so +32. This is ONE number
shared by two codebases: it MATCHES reac-pw's REAC_GRANT_DEFAULT_SENS (also 0x20), the
value reac-pw arms an unset channel with on grant, so a fresh REAC channel's preamp IS at
+32 the moment it enrols. Seeding the least-gain 0x00 floor instead was a display that lied
about the hardware: an all-zero channel never commits, so no box ever actually sits there
(operator decision 2026-07-24, reconfirmed 2026-08-19 — "provably the default gain we need
per box instead of 0"). A real M-200 pushes its own saved per-channel scene at
establishment; this is only the fallback for a channel with no saved value.
DERIVED from REAC_HEAD_AMP_GAIN_DEFAULT, not declared: that declaration carries the same
number AND the measured provenance that says how the desk knows it, and restating the number
here is exactly the second spelling SENS_VALUE_MIN avoids. This name survives because the
REAC value is the one a caller who wants only the byte asks for; a caller who needs to explain
it asks import('./source.js').gainDefaultOf instead.
Still only ever a DISPLAY/seed value — the head-amp row never marks a seeded value KNOWN, so
it is never written to a box (that is the whole D1 rule in head-amp-resource.ts).
The GAIN a freshly-seeded head-amp record shows: the box's committing NORMAL GAIN, in dB.
0x20— and under the one-unit law the byte IS the gain in dB, so +32. This is ONE number shared by two codebases: it MATCHES reac-pw'sREAC_GRANT_DEFAULT_SENS(also 0x20), the value reac-pw arms an unset channel with on grant, so a fresh REAC channel's preamp IS at +32 the moment it enrols. Seeding the least-gain 0x00 floor instead was a display that lied about the hardware: an all-zero channel never commits, so no box ever actually sits there (operator decision 2026-07-24, reconfirmed 2026-08-19 — "provably the default gain we need per box instead of 0"). A real M-200 pushes its own saved per-channel scene at establishment; this is only the fallback for a channel with no saved value.DERIVED from
REAC_HEAD_AMP_GAIN_DEFAULT, not declared: that declaration carries the same number AND themeasuredprovenance that says how the desk knows it, and restating the number here is exactly the second spellingSENS_VALUE_MINavoids. This name survives because the REAC value is the one a caller who wants only the byte asks for; a caller who needs to explain it asks import('./source.js').gainDefaultOf instead.Still only ever a DISPLAY/seed value — the head-amp row never marks a seeded value KNOWN, so it is never written to a box (that is the whole D1 rule in
head-amp-resource.ts).