aethersdr / aethersdr/AetherSDR

Add multi-panadapter IQ recording, playback, and demo-rig signal simulation

Open
#4,600 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

audio enhancement GUI maintainer-review multi-pan spectrum VITA-49
Dominant language
C++
Stars
221
Forks
117
Avg merge
2d 7h
Merged PRs (30d)
299

Description

Request preparation
  • I used an AI assistant to help structure this request
  • I checked for existing issues covering the same feature
What would you like?

What

Add the ability to record IQ data from one or more panadapters and replay it later as an interactive SDR recording.

During playback, the user should be able to:

  • Move to any recorded time.
  • Tune anywhere within the bandwidth captured by a recorded panadapter.
  • Change receive frequency, mode, filter width, and other receiver settings.
  • See when transmissions occurred.
  • Optionally follow the recorded transmit frequency.
  • Play back multiple simultaneously recorded panadapters.

The same playback engine should also be usable by the demo rig. Instead of generating only synthetic noise, the demo rig could replay prepared IQ recordings containing real signals.

AetherSDR could provide several selectable demo scenarios, for example:

  • Busy contest activity
  • Normal weekday activity
  • Quiet band conditions
  • Strong local signals
  • Weak-signal operation
  • Crowded digital-mode segments
  • Split-frequency or pile-up operation

Recording should be configurable independently for each panadapter, allowing one or several panadapters to be recorded at the same time.

Why

Contest recording and review

This would be particularly useful during contests.

An operator could record an entire contest and later:

  • Review activity at a particular time or frequency.
  • Revisit missed callsigns or exchanges.
  • Investigate interference and operating mistakes.
  • Compare activity across multiple bands.
  • Replay the contest as though tuning the radio live.
  • Follow the station's transmit-frequency changes during split or multi-band operation.

An ordinary audio recording captures only the receiver and frequency selected at that moment. Recording IQ data preserves the complete captured bandwidth, allowing different signals within that bandwidth to be tuned and demodulated afterwards.

More realistic demo rig

The demo rig currently has to simulate RF activity, such as by injecting noise. Replaying IQ recordings would allow it to behave much more like a real radio.

Users could:

  • Tune across real signals.
  • Change mode and filter width.
  • Listen to different stations within the recorded bandwidth.
  • Experiment with slices and panadapters.
  • Learn the AetherSDR interface without owning or connecting a radio.
  • Reproduce known signal conditions while testing changes.
  • Select different operating scenarios depending on what they want to demonstrate.

This would also give developers and testers a repeatable signal source. The same recording could be replayed while debugging spectrum, waterfall, filtering, demodulation, and UI behaviour.

How Other Clients Do It

GQRX supports recording raw baseband IQ samples and reopening the recording as a signal source. The user can then tune and demodulate signals within the recorded bandwidth using different settings.

Other general-purpose SDR clients provide similar baseband recording workflows, usually presenting the recording as a virtual SDR source with a timeline and frequency controls.

SmartSDR's built-in quick recording is primarily focused on recording and playing back slice audio rather than preserving an entire panadapter's IQ bandwidth.

AetherSDR could go further by combining IQ data with panadapter, slice, transmit, and radio-state metadata, while also allowing recordings to be used as reusable demo-rig scenarios.

Suggested Behavior

Recording

Add a recording control to each RxApplet or panadapter AppletPanel.

The control could provide:

  • Start IQ Recording
  • Stop IQ Recording
  • Recording destination
  • Available disk-space estimate
  • Estimated data rate
  • Maximum file size or recording duration
  • Optional automatic file splitting
  • Optional transmit-frequency tracking
  • Optional recording of slice and radio-state changes

When recording starts:

  1. A recording indicator appears in the relevant AppletPanel.

  2. The indicator shows elapsed time, file size, and current data rate.

  3. AetherSDR records the IQ stream for that panadapter.

  4. Relevant metadata is recorded alongside the IQ data, including:

    • Panadapter centre frequency
    • IQ sample rate and bandwidth
    • Timestamp information
    • Slice frequencies, modes, and filter widths
    • Active transmit slice
    • Transmit frequency
    • PTT state
    • Radio model and firmware version
  5. Recording another panadapter starts an independent stream or track.

The user should be warned when the expected disk usage is unusually high.

Interactive playback

Add an Open IQ Recording action that opens the recording in a playback-oriented RxApplet or dedicated recording applet.

The playback UI should include:

  • A time-position slider
  • Current and total duration
  • Play, pause, and playback-speed controls
  • A timeline showing transmit periods
  • Markers for band, panadapter, and slice changes
  • A Follow recorded TX frequency option
  • A list of available recorded panadapters
  • Controls to enable or disable individual recorded panadapters

The recorded panadapter should behave similarly to a live panadapter:

  • Clicking or dragging creates or tunes a playback VFO.
  • VfoWidget mode and filter controls demodulate the recorded IQ data.
  • The user can tune anywhere inside the bandwidth available at the selected recording time.
  • Seeking updates the displayed spectrum, waterfall, slices, and recorded radio state.
  • Playback must never issue tuning, PTT, or other control commands to a connected physical radio.

When Follow recorded TX frequency is enabled, the playback VFO should move to the frequency used for transmission at that point in the recording. When disabled, the user remains on the frequency they selected manually.

Demo rig playback

Add an IQ playback source to the demo rig alongside the existing synthetic-noise source.

When creating or configuring a demo rig, the user could select:

  • Synthetic noise
  • IQ recording
  • Bundled demo scenario
  • Custom recording

Bundled scenarios could appear with descriptive names such as:

  • Busy Contest
  • Normal Day on 20 Metres
  • Digital Modes
  • Weak Signals
  • Pile-up and Split Operation

When a scenario is selected:

  1. The demo rig exposes the recorded panadapter data as though it were coming from a radio.
  2. The spectrum and waterfall show the recorded signals.
  3. Demo slices can tune and demodulate signals within the recorded bandwidth.
  4. Recorded frequency and radio-state metadata are exposed where practical.
  5. The recording can loop automatically for continuous demonstrations.
  6. The scenario can optionally start at a random time to provide variation.

The demo rig should use the same playback and demodulation components as normal recording playback rather than having a separate implementation.

Protocol Hints

The receive side may be able to use the existing VITA-49 DAX IQ stream associated with each panadapter or DAX IQ channel.

Possible relevant data includes:

  • VITA-49 IQ packets
  • Panadapter centre frequency and bandwidth
  • Stream identifiers
  • Slice status messages
  • TX slice assignment
  • Slice frequency changes
  • interlock or PTT state
  • Transmit-frequency status

It is unclear whether a client can obtain raw transmit IQ directly from FLEX-6000 or FLEX-8000 radios.

The initial implementation may therefore need to:

  • Record receive IQ for each selected panadapter.
  • Record TX frequency, PTT state, mode, and other transmit metadata.
  • Mark transmissions on the playback timeline.
  • Follow the recorded transmit frequency during playback without necessarily storing raw transmit IQ.

Recording the actual transmitted IQ waveform may require additional FlexRadio protocol or firmware support.

Transmit IQ capture: Unknown — needs research.

A chunked and indexed recording format should be considered so that long recordings can be:

  • Accessed without scanning the entire file.
  • Seeked efficiently.
  • Split into manageable files.
  • Recovered after interruption.
  • Used by the demo rig without loading the full recording into memory.
  • Packaged with descriptive scenario metadata.

The recording format should preserve enough information for the playback engine to provide the same IQ data to either an interactive recording applet or a demo-rig instance.

Acceptance Criteria

  • A user can independently start and stop IQ recording for each panadapter.
  • At least two panadapters can be recorded simultaneously when supported by the radio and available system resources.
  • A recording can be reopened and seeked by time without loading the entire file into memory.
  • During playback, the user can tune and demodulate any frequency within the bandwidth recorded at the selected time.
  • Transmit periods and transmit-frequency changes are recorded, displayed, and can optionally be followed during playback.
  • Playback does not send commands to or key a connected physical radio.
  • The demo rig can use an IQ recording instead of synthetic noise.
  • A user can select from multiple bundled demo scenarios or load a custom recording.
  • Demo-rig playback supports normal panadapter, slice, mode, filter, spectrum, and waterfall interactions.
  • The UI displays recording duration, data rate, file size, and disk-space warnings.

Suggested Labels

enhancement, audio, GUI, spectrum, protocol

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the existing RxApplet, AppletPanel, VfoWidget, demo-rig source, and VITA-49 DAX IQ stream handling. Research the recording format, transmit metadata limits, and how playback can share demodulation without sending commands to a physical radio. Done means independently recorded panadapters can be indexed, reopened, interactively tuned, and used by the demo rig with transmit markers and scenario selection.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
desktop
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.