ReadonlydeliveryWhat the last head-amp drive of this PORT reported — HeadAmpDelivery. OBSERVED and
derived on every read like gainRange, never stored and never written, so OPTIONS
marks it writable: false.
It rides the ROW rather than one write's response because all three are standing facts about the port: true between writes as much as after one. A client asks "is this preamp reachable right now?" by reading, not by writing to find out.
ReadonlygainThe preamp's GAIN, in dB — the box's, not the console's digital stage. Pad-independent.
Optional ReadonlygainThe GAIN this preamp comes up at, published so a surface's "reset to default" lands on the value the hardware provably arms with, never on a number the client made up. Clients render from what the wire sent; none of them imports the constant.
Resolved by gainDefaultOf (spec 2026-09-07-come-up-gain-defaults.md §2), so it is
this preamp's own measured come-up gain where one is declared, the house mic default where
none is, and the operator's /console/defaults value where that differs from either.
Present iff the travel can hold it — an RME line input's 0..18 declares none rather than a clamped +18, because a clamped default renames "the most gain this has" as "normal". OBSERVED and derived on every read, exactly like gainRange.
Optional ReadonlygainHOW the desk knows gainDefaultDb — measured, driver, declared, desk or
operator (import('./head-amp.js').GAIN_DEFAULT_PROVENANCES).
It travels WITH the number and is present exactly where the number is, because a default with no provenance is one the desk cannot explain: +32 dB is a MEASUREMENT of a Roland box and also this desk's JUDGEMENT about a nominal mic gain, and a surface that says "the box arms this" must not say it about the second. It is what lets a settings page show "your setting" over an override without a second read.
OBSERVED and derived on every read, never stored, writable: false — the same standing as
gainRange and delivery. An override does not rewrite the hardware's fact; it
changes which fact answers, and clearing the override brings the first one back.
Optional ReadonlygainThe travel the patched preamp declares — in the same unit as HeadAmp.gainDb, and
bounding it. That was not true before 2026-08-12: the row published a VALUE in dBu beside a
RANGE in dB, so -10 sat outside a declared 0..65 and no conformance arm could compare the
two. A value and its range in different units have no testable relationship, which is exactly
why the divergence went unnoticed for as long as it did.
OBSERVED, not set: nobody writes this — the device reports it — so OPTIONS marks it
writable: false and it rides GET like the values it bounds.
ABSENT WHERE THE CHANNEL HAS NO HeadAmpCapability.sens, which is the same thing
that field's own doc says of itself ("only meaningful where sens is true"). A channel
patched to an application has no preamp, so it has no preamp travel, and headAmpGainRangeOf
answers the REAC constant for it — a real travel belonging to hardware that is not there.
Published, that number was read as the desk's own: measured on the rig 2026-09-07, channel 4
(Firefox:output_FR) reported gainRange 0..55 with gainDefaultDb 32 beside a gainDb
field OPTIONS had already refused. A refused field is not licensed to publish a travel, and
the contract declares exactly what exists — so this is absent, and absence is the fact.
Readonlypad−20 dB analog pad — an actuator ahead of the gain, not a change of its travel.
Readonlyphantom+48 V phantom.
ReadonlypresentAlways true here — the sibling of HeadAmpAbsentRow.present, so a reader can
narrow HeadAmpRowOrAbsent on this one field without a second discriminant to remember.
The PHYSICAL preamp properties a source carries, applied at the head: the analog box trio (gain/pad/phantom) only — what the engine fans out to the box's adapter. Digital trim and polarity are deliberately absent (2026-07-30): they are channel-owned, not physical, so they are never part of the record a split shares.