Request preparation
What would you like?
I have performed a mandatory duplicate check by scanning the open issues for "CW", "sidetone", and "paddle". While there are issues regarding CW TX offset (#1027) and zero-point lines (#1019), there is no current open issue tracking the implementation of local sidetone or USB paddle/keyer support.
Since this involves adding new capabilities (sidetone generation and external hardware keying), I have formatted this as a Feature Request.
Implement local CW sidetone and USB paddle/keyer support
What
This feature adds functional local CW sidetone and support for USB-connected paddles or straight keys. This allows the user to hear their own keying in real-time through the PC audio output (local sidetone) and use physical telegraphy hardware connected via USB (HID or Serial/DTR/RTS) to key the FlexRadio.
Why
Currently, CW operation in AetherSDR lacks the essential feedback loop provided by a sidetone when operating remotely or using PC audio. Furthermore, without USB paddle support, users are restricted to keyboard-based keying or radio-connected keys, which limits the "shack-in-a-box" experience AetherSDR aims to provide for Linux users.
How Other Clients Do It
SmartSDR (Windows): Provides a "PC Sidetone" toggle in the CW settings. It handles local keying via the FlexControl or specialized USB interfaces (Winkeyer).
SDR++ / GQRX: While generally RX-focused, plugins for these often use low-latency audio buffers to generate a sine wave tone triggered by a GPIO or Serial event.
n1mm / Log4OM: Use Winkeyer protocol or serial port pin toggling (DTR/RTS) for high-precision keying.
Suggested Behavior
Sidetone UI: A "Local Sidetone" toggle and volume slider should be added to the RxApplet or a dedicated CW configuration section in the AppletPanel.
Keyer Config: A new settings tab in the main Preferences window to select a Serial/USB port for a paddle, with options for "Iambic A/B" or "Straight Key" and pin mapping (e.g., DTR=Dot, RTS=Dash).
UX Flow: When the user presses a physical paddle, AetherSDR should:
Trigger the CW KEY command to the FlexRadio.
Simultaneously play a local sine wave at the user-configured pitch and volume through the AudioEngine.
Protocol Hints
CW Keying: cw key 1 and cw key 0 via the TCP control protocol.
Sidetone Pitch: Can be synced with the radio's cw pitch setting via the CW object in FlexLib.
Keyer: Integration may require QSerialPort to monitor hardware pins for low-latency input.
Acceptance Criteria
[ ] Local sidetone is audible through PC speakers/headphones when keying.
[ ] Sidetone pitch matches the radio's CW pitch setting.
[ ] User can select a USB/Serial device for paddle input.
[ ] Latency between physical key press and local sidetone is minimal (low-latency audio buffer).
[ ] Toggle exists to disable local sidetone if using the radio's hardware sidetone.
Labels: enhancement, audio, protocol, external devices
Request preparation
What would you like?
I have performed a mandatory duplicate check by scanning the open issues for "CW", "sidetone", and "paddle". While there are issues regarding CW TX offset (#1027) and zero-point lines (#1019), there is no current open issue tracking the implementation of local sidetone or USB paddle/keyer support.
Since this involves adding new capabilities (sidetone generation and external hardware keying), I have formatted this as a Feature Request.
Implement local CW sidetone and USB paddle/keyer support
What
This feature adds functional local CW sidetone and support for USB-connected paddles or straight keys. This allows the user to hear their own keying in real-time through the PC audio output (local sidetone) and use physical telegraphy hardware connected via USB (HID or Serial/DTR/RTS) to key the FlexRadio.
Why
Currently, CW operation in AetherSDR lacks the essential feedback loop provided by a sidetone when operating remotely or using PC audio. Furthermore, without USB paddle support, users are restricted to keyboard-based keying or radio-connected keys, which limits the "shack-in-a-box" experience AetherSDR aims to provide for Linux users.
How Other Clients Do It
SmartSDR (Windows): Provides a "PC Sidetone" toggle in the CW settings. It handles local keying via the FlexControl or specialized USB interfaces (Winkeyer).
SDR++ / GQRX: While generally RX-focused, plugins for these often use low-latency audio buffers to generate a sine wave tone triggered by a GPIO or Serial event.
n1mm / Log4OM: Use Winkeyer protocol or serial port pin toggling (DTR/RTS) for high-precision keying.
Suggested Behavior
Sidetone UI: A "Local Sidetone" toggle and volume slider should be added to the RxApplet or a dedicated CW configuration section in the AppletPanel.
Keyer Config: A new settings tab in the main Preferences window to select a Serial/USB port for a paddle, with options for "Iambic A/B" or "Straight Key" and pin mapping (e.g., DTR=Dot, RTS=Dash).
UX Flow: When the user presses a physical paddle, AetherSDR should:
Trigger the CW KEY command to the FlexRadio.
Simultaneously play a local sine wave at the user-configured pitch and volume through the AudioEngine.
Protocol Hints
CW Keying: cw key 1 and cw key 0 via the TCP control protocol.
Sidetone Pitch: Can be synced with the radio's cw pitch setting via the CW object in FlexLib.
Keyer: Integration may require QSerialPort to monitor hardware pins for low-latency input.
Acceptance Criteria
[ ] Local sidetone is audible through PC speakers/headphones when keying.
[ ] Sidetone pitch matches the radio's CW pitch setting.
[ ] User can select a USB/Serial device for paddle input.
[ ] Latency between physical key press and local sidetone is minimal (low-latency audio buffer).
[ ] Toggle exists to disable local sidetone if using the radio's hardware sidetone.
Labels: enhancement, audio, protocol, external devices