Skip to content

Local STn slider has no effect on PC sidetone volume #2030

Description

@nreed97

Here is the complete GitHub bug report, ready to paste:


Title: Local STn slider has no effect on PC sidetone volume

What happened?

The Local STn slider, which is intended to control the sidetone volume rendered through the PC's local audio output, produces no audible change when adjusted. Moving the slider across its full range — from minimum to maximum — has no effect on the sidetone level heard during CW keying. The slider moves visually and appears to accept input, but the audio output remains at a constant level regardless of the slider position.

What did you expect?

Moving the Local STn slider should proportionally increase or decrease the volume of the locally-rendered CW sidetone audio played through the PC's audio output device. At minimum, sidetone should be silent or barely audible; at maximum, it should be at the configured peak level. The control should respond in real time as the slider is dragged.

Steps to reproduce

  1. Launch AetherSDR and connect to a FLEX-6600.
  2. Open the P/CW applet from the AppletPanel toggle row.
  3. Set the active slice to a CW mode (e.g., CW, CWL, or CWU).
  4. Ensure PC audio output is active (radio line-out routing to PC speakers/headphones).
  5. Key the radio (or use the TUNE function) to generate sidetone audio.
  6. Move the Local STn slider to its minimum position.
  7. Observe that sidetone volume is unchanged.
  8. Move the Local STn slider to its maximum position.
  9. Observe that sidetone volume is still unchanged.

Radio model & firmware

  • Radio: FLEX-6600
  • Firmware: 4.1.5.39794

OS & version

  • OS: Windows
  • AetherSDR version: 0.9.0
  • Qt version: 6.7.3

Developer Notes

Based on review of the CLAUDE.md architecture, the following areas are most likely involved:

Most likely root cause — broken or missing signal/slot connection:

The Local STn slider almost certainly lives in src/gui/PhoneCwApplet.cpp (the P/CW applet, which already owns MON + monitor volume controls). The slider's valueChanged(int) signal may not be connected to the volume-setting method in AudioEngine, or the connection may target a slot that has no implementation yet. Given that the slider moves visually but produces no effect, this is the most probable cause — the widget exists in the UI but the wiring is absent or incomplete.

Suspected files and functions:

File What to check
src/gui/PhoneCwApplet.cpp Constructor or setupUi() — look for the Local STn slider widget, verify connect() call from valueChanged to an AudioEngine or SliceModel slot
src/core/AudioEngine.cpp / .h Check for a setSidetoneVolume(float) or setLocalSidetoneLevel(int) method — it may be declared but not implemented, or may not apply gain to the correct audio path
src/models/SliceModel.cpp If the sidetone is routed through the model, check whether a cw_sidetone_level setter emits commandReady() toward the radio rather than adjusting the local audio path — these are distinct: the SmartSDR protocol has a radio-side sidetone level (e.g., radio cw_sidetone_level=XX) that is separate from the PC-local audio mix

Distinguish radio-side vs. PC-side sidetone:

The SmartSDR protocol controls radio-side sidetone via a command such as radio cw_sidetone_level=<0–100>. If the slider is wired to emit this command instead of adjusting AudioEngine's local gain, the radio-side tone in the headphone jack will change but the PC audio path will not — this could explain the symptom exactly. Verify which path the slider targets.

Volume scaling mismatch:

If a connection does exist, check for a unit mismatch: the slider likely produces integer values (e.g., 0–100), but AudioEngine's volume API (backed by QAudioSink::setVolume()) expects a float in the range [0.0, 1.0]. Passing a raw integer 75 as a float would peg the volume at the hardware ceiling.

Logging to enable:

Open Help → Support and enable the following diagnostic categories before reproducing the issue:

  • Audio — will show AudioEngine volume changes and audio path routing
  • Commands — will reveal whether a radio cw_sidetone_level command is (or isn't) being sent to the radio when the slider moves
  • GUI — may surface signal/slot connection errors or unhandled widget events

With those enabled, move the Local STn slider and check whether any log output appears at all. Silence in the Audio and Commands categories when the slider moves would confirm the signal is not reaching any handler.

Metadata

Metadata

Assignees

No one assigned

    Labels

    CWCW keying, decode, and operationWindowsWindows-specific issueaudioAudio engine and streamingbugSomething isn't workingmaintainer-reviewRequires maintainer review before any action is taken

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions