ZComms 0.1.13
Every feed now has an input meter, sitting just before the gain keys.
Why there was nothing to see before
FeedChain::peak() — the thing behind the feed lamp — is measured after the latch envelope, and an unlatched chain returns early and stores peak 0. So a feed that was not on air read as no signal, always, which is exactly when you need to see level. You check a line before you open it, not after.
input_peak() is the pre-envelope, post-gain tap, measured above that early return, so it reads the same whether the feed is up or down. Post-gain deliberately: the meter sits beside the gain keys and the two must agree, so you can see what would go to air while riding the trim.
The two instruments split the problem
| meter | lamp | what it means |
|---|---|---|
| dead | — | wrong device or channel — nothing is arriving |
| moving | dark | not latched |
| moving | live | it is leaving ZComms — check who is actually on that talkback channel |
That last row matters: a feed goes to one talkback channel, so only people assigned to that channel hear it. A perfectly healthy feed latched into a channel nobody is on is audible to no one.
Details worth knowing
Meter ballistics decay per 20 ms of audio, not per device callback — the first cut would have shown different fall times on a 10 ms card versus a 100 ms one. The meter updates in place and is deliberately excluded from the row's structure signature, so a meter moving at 10 Hz cannot re-break the LATCH click fixed in 0.1.12; that's verified, not assumed.
94 tests, green — including one asserting the meter reads a −12 dBFS tone while unlatched, at the same instant the lamp correctly reads zero.
Install
ZComms-Setup-0.1.13.exe — per-user, no UAC. Zoom SDK ships inside. Still unsigned; SmartScreen will warn.
Full changelog: v0.1.12...v0.1.13