Skip to content

Fix CW sidetone missing on Windows by calling startSidetoneStream() (#2100)#2105

Merged
ten9876 merged 1 commit intomainfrom
aetherclaude/issue-2100
Apr 30, 2026
Merged

Fix CW sidetone missing on Windows by calling startSidetoneStream() (#2100)#2105
ten9876 merged 1 commit intomainfrom
aetherclaude/issue-2100

Conversation

@aethersdr-agent
Copy link
Copy Markdown
Contributor

Summary

Fixes #2100

What was changed

Fix CW sidetone missing on Windows by calling startSidetoneStream() (#2100)

Files modified

  • src/core/AudioEngine.cpp
 src/core/AudioEngine.cpp | 1 +
 1 file changed, 1 insertion(+)

Generated by AetherClaude (automated agent for AetherSDR)

…2100)

The Windows branch in startRxStream() returns early before reaching the
common code path that calls startSidetoneStream(). Add the call to the
Windows branch so the dedicated sidetone sink is created on all platforms.

Co-Authored-By: Claude Opus 4.6 <[email protected]>
@aethersdr-agent aethersdr-agent Bot requested a review from ten9876 as a code owner April 27, 2026 20:07
@aethersdr-agent aethersdr-agent Bot enabled auto-merge (squash) April 27, 2026 20:07
Copy link
Copy Markdown
Contributor Author

@aethersdr-agent aethersdr-agent Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review of PR #2105 — Fix CW sidetone missing on Windows by calling startSidetoneStream()

The fix itself is correct. The non-Windows path (line 614) already calls startSidetoneStream() alongside the RX stream with a clear comment explaining why. The Windows #ifdef Q_OS_WIN branch was missing it, so the sidetone sink was never opened on Windows.

One concern: duplicate of #2103

PR #2103 (aetherclaude/issue-2097) makes the same one-line startSidetoneStream() addition in AudioEngine.cpp and adds CWX interlock state tracking in RadioModel to prevent the audio gate from being forced off during CWX sends. That PR is the more complete fix for the same underlying problem.

This PR and #2103 will conflict on merge. I'd recommend closing this one in favor of #2103, which includes a comment explaining the call and fixes the related CWX gate issue.

If this PR is preferred for its minimal scope, it would benefit from:

  • Adding the explanatory comment that the non-Windows path already has (lines 611-613), so future readers know why startSidetoneStream() is called here.

No bugs, no convention issues, no scope creep — just the duplication concern. Thanks for the contribution.

@ten9876 ten9876 merged commit c906165 into main Apr 30, 2026
5 checks passed
@ten9876 ten9876 deleted the aetherclaude/issue-2100 branch April 30, 2026 03:54
ten9876 added a commit that referenced this pull request Apr 30, 2026
#2181)

When CWX is sending (the user pressed Send in the CWX window or fired
a macro), the radio enters TRANSMITTING via CW keying.  The interlock
handler at onStatusReceived gates m_txAudioGate based on whether we
believe we're the source of TX — but for CWX it had no signal that
the local CWX queue is in flight, so the gate was forced off and the
local sidetone path silenced.

Adds an m_cwxActive flag, set in the cwxModel commandReady lambda
when "cwx send" / "cwx macro send" goes out and cleared on "cwx clear"
or when the radio leaves the transmitting state.  The interlock guard
now includes !m_cwxActive in the "should we force gate off" check.

Carved out from PR #2103 (which also added a now-redundant
startSidetoneStream() call in AudioEngine — already landed via PR
#2105 / commit c906165).  This PR contains only the substantive
CWX-tracking changes.

Fixes #2097.

Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

No CW local sidetone on Windows version 0.9.1

1 participant