Report preparation
What happened?
What happened
Intermittent issue: when BYPASS is enabled on the Aetherial Audio Channel
Strip TX side, then the strip is switched to RX and back to TX, the BYPASS
button is no longer checked. Same applies to the RX side.
Root cause
isTxBypassed() returns !m_txBypassSnapshot.isEmpty(), but the snapshot is
only populated with stages that were enabled at the time of BYPASS click.
If all stages are already disabled when BYPASS is engaged, the snapshot
stays empty and isTxBypassed() returns false even though setTxBypassed(true)
was just called.
On the TX/RX/TX switch, AetherialAudioStrip queries isTxBypassed() to
re-sync the button state, gets false back, and unchecks the button.
setTxBypassed(false) is never actually called - the state just becomes
inconsistent.
Code references:
- AudioEngine.cpp:2204 - setTxBypassed() populates snapshot conditionally
- AudioEngine.cpp:2122 - isTxBypassed() returns based on snapshot emptiness
- AetherialAudioStrip.cpp:243 - side-switch reads isTxBypassed()
- AudioEngine.cpp:2220 - identical bug exists for RX side
Suggested fix
Add dedicated bool members m_txBypassActive{false} and m_rxBypassActive{false}
to AudioEngine.h. Set them in setTxBypassed()/setRxBypassed() before the
emit. Change isTxBypassed()/isRxBypassed() to return the flag instead of
checking snapshot emptiness.
The snapshot continues to serve its restore purpose unchanged. The flag
becomes the sole source of truth for "is bypass currently engaged".
Environment
- AetherSDR: current main
- OS: Linux (Arch / KDE)
Suggested labels: bug, audio, GUI
What did you expect?
What I expected
BYPASS state should persist across TX/RX side switches.
Steps to reproduce
Steps to reproduce
- Open Aetherial Audio Channel Strip on TX
- Ensure all chain stages (GATE, EQ, DESS, COMP, TUBE, EVO, VERB) are
disabled
- Click BYPASS - button appears checked
- Switch to RX
- Switch back to TX - BYPASS is no longer checked
The bug is reproducible whenever BYPASS is clicked while all bypass-eligible
stages are already disabled. It also reproduces on app restart after a
previous session ended with BYPASS active (settings persist all stages as
disabled, then any subsequent BYPASS click hits the same case).
AetherSDR version
v26.5.2.1
Radio model & firmware
AU-520
Operating system
Linux
OS version and hardware
CachyOS
Report preparation
What happened?
What happened
Intermittent issue: when BYPASS is enabled on the Aetherial Audio Channel
Strip TX side, then the strip is switched to RX and back to TX, the BYPASS
button is no longer checked. Same applies to the RX side.
Root cause
isTxBypassed() returns !m_txBypassSnapshot.isEmpty(), but the snapshot is
only populated with stages that were enabled at the time of BYPASS click.
If all stages are already disabled when BYPASS is engaged, the snapshot
stays empty and isTxBypassed() returns false even though setTxBypassed(true)
was just called.
On the TX/RX/TX switch, AetherialAudioStrip queries isTxBypassed() to
re-sync the button state, gets false back, and unchecks the button.
setTxBypassed(false) is never actually called - the state just becomes
inconsistent.
Code references:
Suggested fix
Add dedicated bool members m_txBypassActive{false} and m_rxBypassActive{false}
to AudioEngine.h. Set them in setTxBypassed()/setRxBypassed() before the
emit. Change isTxBypassed()/isRxBypassed() to return the flag instead of
checking snapshot emptiness.
The snapshot continues to serve its restore purpose unchanged. The flag
becomes the sole source of truth for "is bypass currently engaged".
Environment
Suggested labels: bug, audio, GUI
What did you expect?
What I expected
BYPASS state should persist across TX/RX side switches.
Steps to reproduce
Steps to reproduce
disabled
The bug is reproducible whenever BYPASS is clicked while all bypass-eligible
stages are already disabled. It also reproduces on app restart after a
previous session ended with BYPASS active (settings persist all stages as
disabled, then any subsequent BYPASS click hits the same case).
AetherSDR version
v26.5.2.1
Radio model & firmware
AU-520
Operating system
Linux
OS version and hardware
CachyOS