feat(tci): per-mode overflow handling with right-click slider menu#3065
Merged
ten9876 merged 1 commit intoMay 24, 2026
Merged
Conversation
The TCI TX path applied a hard ±1.0 saturating clamp unconditionally
after the gain stage, introducing harmonic distortion on any overshoot.
For well-formed digital-mode tones at -3 dBFS the clamp is a no-op, but
the asymmetry with the DAX path (which has no float-domain clamp at all)
made "100% client-side bypass" claims inaccurate.
Users now pick the regime via right-click on the TCI TX slider:
Clip — saturating clamp at ±1.0 (legacy default, defensive)
NaNGuard — zero NaN/Inf only; pass everything else bit-exact
Measure — pure passthrough; count overshoots for telemetry,
never mutate samples (downstream int16 conversion in
the radio-native DAX route still clamps)
Selection persists to TciTxOverflowMode (0/1/2). Default stays Clip so
existing users see no behavior change; WSJT-X / FT8 operators chasing
bit-exact tone fidelity can switch to NaNGuard or Measure.
Telemetry (peak / sumSq / clipSamples) preserved across all three
modes; Measure mode guards the math against NaN so a pathological
client can't poison the running stats.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
ten9876
added a commit
that referenced
this pull request
May 24, 2026
Headline entry next to TCI tx_gain + ALC since both touch the same TCI TX path. Commit count 138 → 139. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The TCI TX path applied a hard ±1.0 saturating clamp unconditionally
after the gain stage, introducing harmonic distortion on any overshoot.
For well-formed digital-mode tones at -3 dBFS the clamp is a no-op, but
the asymmetry with the DAX path (which has no float-domain clamp at all)
made "100% client-side bypass" claims inaccurate.
Users now pick the regime via right-click on the TCI TX slider:
Clip — saturating clamp at ±1.0 (legacy default, defensive)
NaNGuard — zero NaN/Inf only; pass everything else bit-exact
Measure — pure passthrough; count overshoots for telemetry,
never mutate samples (downstream int16 conversion in
the radio-native DAX route still clamps)
Selection persists to TciTxOverflowMode (0/1/2). Default stays Clip so
existing users see no behavior change; WSJT-X / FT8 operators chasing
bit-exact tone fidelity can switch to NaNGuard or Measure.
Telemetry (peak / sumSq / clipSamples) preserved across all three
modes; Measure mode guards the math against NaN so a pathological
client can't poison the running stats.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com