Skip to content

fix(audio): add 44.1 kHz Int16 step to QsoRecorder playback ladder (#3385). Principle XIII.#3386

Merged
aethersdr-agent[bot] merged 1 commit into
mainfrom
aetherclaude/issue-3385
Jun 4, 2026
Merged

fix(audio): add 44.1 kHz Int16 step to QsoRecorder playback ladder (#3385). Principle XIII.#3386
aethersdr-agent[bot] merged 1 commit into
mainfrom
aetherclaude/issue-3385

Conversation

@aethersdr-agent

Copy link
Copy Markdown
Contributor

Summary

Fixes #3385

What was changed

fix(audio): add 44.1 kHz Int16 step to QsoRecorder playback ladder (#3385). Principle XIII.

Files modified

  • src/core/QsoRecorder.cpp
 src/core/QsoRecorder.cpp | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

Generated by AetherClaude (automated agent for AetherSDR)


🤖 aethersdr-agent · cost: $4.9894 · model: claude-opus-4-7

…3385). Principle XIII.

PR #3378 extended ClientPuduMonitor::startPlayback()'s format negotiation
to 24/48/44.1 kHz Int16, matching CwSidetoneQAudioSink and handling Windows
HFP/SCO routes and USB DACs that reject 48 kHz Int16 but accept 44.1 kHz.
The same ladder extension was missed in QsoRecorder::startPlayback(), so
on such devices monitor playback now succeeds at 44.1 kHz while QSO
recording playback silently bails.

Insert the same 44.1 kHz fallback step between the existing 48 kHz attempt
and the bail. preparePlaybackPcm(sinkRate) already constructs a Resampler
at the requested rate, so no resampler changes are needed.

Per the issue body, scope is "format negotiation only" — the structured
AudioSummaryLogger reporting and Float32 preferredFormat fallback that
CPM also carries are out of scope for this fix.

Blast radius: risk_score=0.158, 3 high-risk affected
(top: MainWindow::MainWindow, MainWindow::onSliceAdded,
MainWindow::registerMidiParams). All are signal-wiring/construction
sites that depend on the public method and signal contract, both
unchanged by this internal ladder extension.

@NF0T NF0T left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Exactly the change requested in #3385 — 44.1 kHz Int16 step inserted correctly inside the existing 48 kHz rejection block, sinkRate = 44100 set alongside the format change, and the comment explaining parity with ClientPuduMonitor is clear. The ladder now reads 24→48→44.1→bail, matching the monitor path so both code paths behave consistently on HFP/SCO and USB DAC devices that reject 48 kHz Int16.

The issue mentioned matching fallback log strings — QsoRecorder never had AudioSummaryLogger instrumentation, so there's nothing to align there; the gap is pre-existing and out of scope for this PR.

Single file, Tier 3. Bot-generated PR in response to a filed issue — reviewed as required by CODEOWNERS.

✅ Approved.

@aethersdr-agent aethersdr-agent Bot merged commit 6a14280 into main Jun 4, 2026
4 checks passed
@aethersdr-agent aethersdr-agent Bot deleted the aetherclaude/issue-3385 branch June 4, 2026 02:07
G6PWY-Chris pushed a commit to G6PWY-Chris/AetherSDR that referenced this pull request Jun 22, 2026
…ethersdr#3385). Principle XIII. (aethersdr#3386)

## Summary

Fixes aethersdr#3385

### What was changed

fix(audio): add 44.1 kHz Int16 step to QsoRecorder playback ladder
(aethersdr#3385). Principle XIII.

### Files modified

- `src/core/QsoRecorder.cpp`

```
 src/core/QsoRecorder.cpp | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
```

---
Generated by AetherClaude (automated agent for AetherSDR)

---
<sub>🤖 aethersdr-agent · cost: $4.9894 · model: claude-opus-4-7</sub>

Co-authored-by: aethersdr-agent[bot] <273844287+aethersdr-agent[bot]@users.noreply.github.com>
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.

fix(audio): align QsoRecorder format ladder with ClientPuduMonitor (add 44.1 kHz Int16 step)

1 participant