fix(audio): add 44.1 kHz Int16 step to QsoRecorder playback ladder (#3385). Principle XIII.#3386
Conversation
…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
left a comment
There was a problem hiding this comment.
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.
…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>
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.cppGenerated by AetherClaude (automated agent for AetherSDR)
🤖 aethersdr-agent · cost: $4.9894 · model: claude-opus-4-7