Request preparation
What would you like?
What
A client-side Digital Voice Keyer (DVK) that plays locally stored audio files as transmitted speech — without requiring audio files to be stored on the FlexRadio hardware and without needing an upgraded SmartSDR license (e.g. the Maestro or SSDR DVK feature).
The user loads a set of WAV/FLAC files (e.g. CQ calls, contest exchanges, 73 messages) into AetherSDR, assigns them to numbered slots, and triggers playback with a button click or keyboard shortcut. AetherSDR keys the radio's PTT via the TX audio path, streams the audio, then unkeys when the file ends.
A prior art implementation by K9DUR for SmartSDR on Windows demonstrates the concept and community demand: it injected PC audio into the DAX TX channel to achieve the same result client-side.
Why
- The FlexRadio hardware-side DVK (CWX DVK macros) requires an upgraded SmartSDR license tier not available to all users
- Contest and DX operation benefits enormously from repeatable, consistent TX audio for CQ calls and exchanges
- Linux users have no access to third-party DVK utilities written for Windows
- A client-side implementation stores files locally, keeps operation fully offline, and requires zero radio firmware changes
How Other Clients Do It
Client | Approach
-- | --
SmartSDR (Windows) | Hardware DVK via dvk commands — audio stored on radio, requires license upgrade
K9DUR's DVK utility | Injects a WAV file into the DAX TX audio channel from the PC side; keys PTT via xmit 1 / xmit 0 — no license needed
N1MM+ / Win-Test | WAV file playback routed through virtual audio (VAC/VB-Cable) into radio TX
WSJT-X | Routes generated audio through system audio to DAX TX; PTT via CAT or VOX
The direct VITA-49 path (feeding AudioEngine's TX buffer directly) is preferred: it avoids PipeWire, works in all modes, and uses the already-wired r8brain-free-src resampler for sample rate conversion.
Audio format requirements (from existing AudioEngine): float32, big-endian, 24 kHz stereo. The Resampler class (r8brain-free-src) already handles arbitrary-rate → 24 kHz conversion for RN2 and RADE — the same pipeline can be reused here.
Acceptance Criteria
- User can assign a local audio file (WAV/FLAC) to each of 8 DVK slots via the UI; assignments survive application restart (stored in
AppSettings)
- Pressing a slot button keys the radio (
xmit 1), streams the audio file through the existing TX audio path at the correct sample rate, and automatically unkeys (xmit 0) when playback ends
- Pressing Stop or
Esc at any time during playback immediately stops audio and sends xmit 0
- Repeat mode continuously retransmits a slot with a configurable inter-transmission gap until stopped
- The DVK is disabled (buttons greyed out) when the radio is not connected or when the active slice mode is CW (to avoid accidental phone transmission on a CW QSO)
Suggested labels: enhancement, audio, GUI
Request preparation
What would you like?
What
A client-side Digital Voice Keyer (DVK) that plays locally stored audio files as transmitted speech — without requiring audio files to be stored on the FlexRadio hardware and without needing an upgraded SmartSDR license (e.g. the Maestro or SSDR DVK feature).
The user loads a set of WAV/FLAC files (e.g. CQ calls, contest exchanges, 73 messages) into AetherSDR, assigns them to numbered slots, and triggers playback with a button click or keyboard shortcut. AetherSDR keys the radio's PTT via the TX audio path, streams the audio, then unkeys when the file ends.
A prior art implementation by K9DUR for SmartSDR on Windows demonstrates the concept and community demand: it injected PC audio into the DAX TX channel to achieve the same result client-side.
Why
How Other Clients Do It
The direct VITA-49 path (feeding
AudioEngine's TX buffer directly) is preferred: it avoids PipeWire, works in all modes, and uses the already-wiredr8brain-free-srcresampler for sample rate conversion.Audio format requirements (from existing
AudioEngine): float32, big-endian, 24 kHz stereo. TheResamplerclass (r8brain-free-src) already handles arbitrary-rate → 24 kHz conversion for RN2 and RADE — the same pipeline can be reused here.Acceptance Criteria
AppSettings)xmit 1), streams the audio file through the existing TX audio path at the correct sample rate, and automatically unkeys (xmit 0) when playback endsEscat any time during playback immediately stops audio and sendsxmit 0Suggested labels:
enhancement,audio,GUI