torlando-techandClaude Opus 4.7 6dbbe1bee7 fix(audio): correct degenerate HPF formula in voice filter chain
VoiceFilterChain::applyHighPass collapsed to a constant-gain
multiplier instead of a real high-pass response. The inner loop
read `samples[prevIdx]` as "previous input" — but that slot held
y[n-1] (output) since the previous iteration had overwritten it.
Substituting that into the formula

  y[n] = α(y[n-1] + x[n] - x[n-1])

with x[n-1] := y[n-1] gave

  y[n] = α(y[n-1] + x[n] - y[n-1]) = α · x[n]

i.e. just a fixed gain ≈ 0.81 at 300Hz cutoff / 8kHz. DC offsets
sailed through; the chain only kept signal levels reasonable
because the AGC stage downstream pulled the residual toward target.
The same bug exists in upstream LXST-kt's
native_audio_filters.cpp (filed as LXST-kt#13).

Fix: walk per-channel with explicit `xPrev` / `yPrev` variables so
input history isn't clobbered by the output write. Per-chunk save
of `lastInputs[ch]` now stores the actual last input, not the last
output, so the first sample of each new chunk uses the correct
x[n-1].

Test `dc_offset_attenuated_by_hpf` updated to assert tail RMS
< 0.01 (was < 0.5 — accommodating the broken behavior). Pass.

End-to-end acoustic test (Mac speaker → T-Deck mic): pyxis_rms
went up from 4378 → 5835, bot_rms from 1194 → 1517 — DC offset
removal lets clean signal through better.

Pyxis-side fix only. LXST-kt should pick up the same fix
upstream — see project_lxst_hpf_filter_bug.md in the vault.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 13:27:34 -04:00
2026-02-07 11:49:21 -05:00
2026-03-04 14:12:36 -05:00

Pyxis logo

Pyxis

An LXMF and LXST client firmware for T-Deck, built on a highly modified fork of microReticulum

Very much WIP, don't expect stability :)

Features

Reticulum transport over:

  • RNode-compatible LoRa
  • AutoInterface (local wifi)
  • TCP Client
  • BLE Interface (barely working if at all)

Other features:

  • GPS-synced time
  • One really annoying beep when you get a new message (user toggle)
  • View the announce stream
  • Choose a propagation node (and sync with it) (fixed in v0.2.1)
  • Set auto announce timer
  • Light up keyboard (user toggle)
  • Will crash in about 5 minutes of normal use (sorry) I had 5d uptime on v0.2.0 with BLE disabled
  • Make LXST voice calls (codec2 only, quality sounds horrible coming out the other end in Columba, needs work)

Why "Pyxis"

Pyxis, latin for "compass," is a constellation in the southern sky depicting a mariner's compass. Small but essential, the compass ensures every message finds its destination - even when the path is uncertain.

S
Description
No description provided
Readme GPL-3.0
311 MiB
0 Stars 1 Watchers 0 Forks
Languages
C++ 47%
C 40.3%
Python 10.7%
JavaScript 1%
mupad 0.7%
Other 0.2%