Request preparation
What would you like?
Title: Feature Request: Surface Aetherial Audio Presets in Profile Manager + Bundle Default Aetherial Audio Presets as Starting Points
What happened?
This report covers two related gaps in how AetherSDR's profile and Aetherial Audio Channel Strip systems work together:
1. Siloed preset selection. AetherSDR has two separate preset systems that don't share a UI or a single point of selection:
- Radio-side profiles (Profiles → Profile Manager…): Global, Transmit, and Microphone profiles, stored on the FLEX-6600.
- Aetherial Audio Channel Strip presets: the client-side DSP chain already supports named, saved/recallable presets (e.g., "Contest-DX," "Rag Chew," "ESSB") via its own preset library in the Aetherial Audio panel.
To fully reconfigure the station for an operating style, the operator must load a Transmit/Mic profile from the Profile Manager and separately open the Aetherial Audio panel to select the matching named chain preset — there's no combined "scenario" selection that does both in one action.
2. No bundled default Aetherial presets. AetherSDR ships without any default Aetherial Audio Channel Strip presets. New users get an empty preset library and must build every named preset from scratch by ear. I've built a working set of three presets — Contest-DX, Rag Chew, and ESSB — covering TX and RX chains for GATE/EQ/DESS/COMP/TUBE/PUDU/VERB, which could serve as a template for factory-bundled defaults, clearly labeled as starting points for the user to then tune to their own mic and voice. Representative highlights from each:
Parameter | Contest-DX | Rag Chew | ESSB
-- | -- | -- | --
Chain order (TX) | Gate→EQ→Comp→DeEss→Tube→Pudu→Reverb | Gate→EQ→DeEss→Comp→Tube→Pudu→Reverb | Gate→EQ→DeEss→Comp→Tube→Pudu→Reverb
EQ filter family | Elliptic | Butterworth | Butterworth
EQ character | HPF 250 Hz, notch at 300/500 Hz (-6/-3 dB), presence +5 dB @2.1 kHz, LPF 2.8 kHz | HPF 100 Hz, gentle scoop, presence +2 dB @1.5 kHz, LPF 3.1 kHz | HPF 40 Hz, LF shelf +3.5 dB
@80 Hz, extended LPF 4.2 kHz
Compressor | Thresh -22 dB, 4.5:1, Atk 5 ms, Rel 80 ms, Makeup +3 dB | Thresh -18 dB, 2.8:1, Atk 15 ms, Rel 180 ms, Makeup +0.5 dB | Thresh -16 dB, 2.2:1, Atk 30 ms, Rel 250 ms, Makeup +1 dB
De-Esser | 5500 Hz, Q2.5, -8 dB | 6000 Hz, Q2.2, -6 dB | 6500 Hz, Q2, -5 dB
Tube | Model A, Drive 3.5 dB, Mix 70% | Model A, Drive 1.5 dB, Mix 90% | Model A, Drive 2 dB, Mix 80%
PUDU/AetherVoice | Aphex mode, Doo Mix 35%, Poo Mix 10% | Behringer mode, Doo Mix 25%, Poo Mix 20% | Aphex mode, Doo Mix 20%, Poo Mix 25%
Reverb | Disabled | Disabled (Mix 5% if enabled) | Enabled, Size 40%, Decay 1.1 s, Mix 10%
Final limiter ceiling | -0.5 dB | -1 dB | -1 dB
RX chain | Gate→EQ→Comp (lighter touch, no DeEss/Tube/Pudu) | Same pattern | Same pattern
The full preset definitions are stored as JSON (attached as AetherSDR-ChannelStrip-Library_Defaults.json), keyed by preset name, with each preset carrying independent gate/eq/deess/comp/tube/pudu/reverb/finalLimiter objects for TX plus a nested rx object with the equivalent structure for RX — this schema maps directly onto the existing Client*Tx*/Client*Rx* settings keys and looks like a natural on-disk/importable format for factory-default presets.
What did you expect?
- A single named configuration (e.g., "Contest") that applies both the appropriate radio-side profile(s) and the matching Aetherial Audio preset in one action, without needing to visit the Profile Manager and the Aetherial Audio screen separately.
- Out-of-the-box, AetherSDR should include a small number of default Aetherial Audio presets — e.g., Contest-DX, Rag Chew, and ESSB as demonstrated above — that a new user can load immediately, then adjust to their own mic and voice, rather than starting from an empty preset library.
Steps to reproduce
- Open the Aetherial Audio panel and confirm named TX chain presets can be created/saved (e.g., "Contest-DX," "Rag Chew," "ESSB"), but on a fresh install the preset list is empty — no defaults are bundled.
- Open Profiles → Profile Manager… and note the tabs: Global, Transmit, Microphone, Auto-Save — there is no reference to, or control for, the Aetherial preset library here.
- Load a Transmit profile intended to correspond to a contesting scenario.
- Observe that the Aetherial Audio chain does not automatically switch to a matching preset — the operator must separately open the Aetherial Audio panel and manually select (or first build, since none ship by default) the corresponding preset.
- Compare against a hand-built preset set (attached) covering Contest-DX/Rag Chew/ESSB — none of these, or anything like them, are loadable out of the box on a fresh install.
Radio model & firmware
FLEX-6600, firmware 4.2.20.41343
OS & version
Windows — AetherSDR 26.9.1, Qt 6.8.3
Developer Notes
Architecture context: Radio-side profiles round-trip over the SmartSDR command channel to the radio. The Aetherial Audio Channel Strip's named-preset library is persisted client-side in AetherSDR.settings (%APPDATA%\AetherSDR\AetherSDR\ on Windows) alongside the live Client*Tx*/Client*Rx* parameter keys and Client*ChainStages ordering keys. Both requested features are additive:
- Cross-linking profiles ↔ Aetherial presets is a UI/reference gap — needs a way for a Transmit/Global profile to carry a reference to (or trigger) an Aetherial preset by name.
- Bundled defaults is a packaging/data gap — needs factory preset definitions (attached JSON is a working example of the schema/values) shipped with the app and seeded into a fresh install's preset library on first run, or exposed as a "Restore factory presets" action that doesn't clobber a user's existing custom presets (note the attached file's structure already coexists cleanly with user-created entries like the fourth "Try1" preset in the same library — a defaults-seeding routine should only add/refresh the named factory presets, not touch others).
Likely source locations (inferred from the src/gui/ convention visible in recent PRs — please confirm exact paths/line numbers against the current tree, which I didn't have direct repo browsing access to):
src/gui/ProfileManagerDialog.cpp / .h — needs an Aetherial-preset reference field per profile.
- The Aetherial Audio panel/preset-library UI (likely
src/gui/AetherialAudioWidget.cpp or similarly named, feeding per-stage classes such as ClientEqWidget/ClientCompWidget/ClientTubeWidget/ClientPuduWidget/ClientReverbWidget) — needs (a) a public "load preset by name" entry point callable from the Profile Manager, and (b) a "load factory defaults" action separate from user-saved presets. The preset-serialization code (whatever reads/writes the JSON structure seen in the attached file — likely a PresetLibrary or ChannelStripPreset class) is the natural home for a "seed factory defaults" routine.
AppSettings (likely src/core/AppSettings.h or src/gui/AppSettings.h) — stores the Aetherial preset library; would need a lookup table (profile name → Aetherial preset name) for the linkage.
- Packaging/resource layer (e.g.,
resources/ or resources/presets/, alongside the existing resources.qrc pattern) — where factory-default preset JSON (matching the attached file's schema) would be added and wired into the build via qt_add_resources.
Logging categories to enable for diagnostic capture (Help → Support…): Both items are feature/packaging requests rather than runtime faults, so logs won't show much, but for confirming current (non-)behavior:
- GUI (
aether.gui) — confirm no hidden linkage exists between profile load and Aetherial preset selection.
- Transmit (
aether.transmit) — TX state and profile load/save commands.
- Audio (
aether.audio) — confirms the Aetherial chain doesn't react to a profile switch at the audio-processing layer.
Suggested fix direction:
- Add an optional "Aetherial preset" association field to Transmit/Global profiles in the Profile Manager so loading a radio profile also triggers the linked Aetherial preset.
- Ship the three attached presets (Contest-DX, Rag Chew, ESSB) — or an equivalent factory set derived from them — seeded on first run or available via a "Restore factory presets" action, clearly framed as starting points for the user to tune to their own mic and voice.
Attachment: AetherSDR-ChannelStrip-Library_Defaults.json (contains the three presets above; a fourth user-experimental preset in the same file is not part of this request and should be disregarded for the factory-default set).
AetherSDR-ChannelStrip-Library Defaults.json
Request preparation
What would you like?
Title: Feature Request: Surface Aetherial Audio Presets in Profile Manager + Bundle Default Aetherial Audio Presets as Starting Points
What happened?
This report covers two related gaps in how AetherSDR's profile and Aetherial Audio Channel Strip systems work together:
1. Siloed preset selection. AetherSDR has two separate preset systems that don't share a UI or a single point of selection:
To fully reconfigure the station for an operating style, the operator must load a Transmit/Mic profile from the Profile Manager and separately open the Aetherial Audio panel to select the matching named chain preset — there's no combined "scenario" selection that does both in one action.
2. No bundled default Aetherial presets. AetherSDR ships without any default Aetherial Audio Channel Strip presets. New users get an empty preset library and must build every named preset from scratch by ear. I've built a working set of three presets — Contest-DX, Rag Chew, and ESSB — covering TX and RX chains for GATE/EQ/DESS/COMP/TUBE/PUDU/VERB, which could serve as a template for factory-bundled defaults, clearly labeled as starting points for the user to then tune to their own mic and voice. Representative highlights from each:
The full preset definitions are stored as JSON (attached as
AetherSDR-ChannelStrip-Library_Defaults.json), keyed by preset name, with each preset carrying independentgate/eq/deess/comp/tube/pudu/reverb/finalLimiterobjects for TX plus a nestedrxobject with the equivalent structure for RX — this schema maps directly onto the existingClient*Tx*/Client*Rx*settings keys and looks like a natural on-disk/importable format for factory-default presets.What did you expect?
Steps to reproduce
Radio model & firmware
FLEX-6600, firmware 4.2.20.41343
OS & version
Windows — AetherSDR 26.9.1, Qt 6.8.3
Developer Notes
Architecture context: Radio-side profiles round-trip over the SmartSDR command channel to the radio. The Aetherial Audio Channel Strip's named-preset library is persisted client-side in
AetherSDR.settings(%APPDATA%\AetherSDR\AetherSDR\on Windows) alongside the liveClient*Tx*/Client*Rx*parameter keys andClient*ChainStagesordering keys. Both requested features are additive:Likely source locations (inferred from the
src/gui/convention visible in recent PRs — please confirm exact paths/line numbers against the current tree, which I didn't have direct repo browsing access to):src/gui/ProfileManagerDialog.cpp/.h— needs an Aetherial-preset reference field per profile.src/gui/AetherialAudioWidget.cppor similarly named, feeding per-stage classes such asClientEqWidget/ClientCompWidget/ClientTubeWidget/ClientPuduWidget/ClientReverbWidget) — needs (a) a public "load preset by name" entry point callable from the Profile Manager, and (b) a "load factory defaults" action separate from user-saved presets. The preset-serialization code (whatever reads/writes the JSON structure seen in the attached file — likely aPresetLibraryorChannelStripPresetclass) is the natural home for a "seed factory defaults" routine.AppSettings(likelysrc/core/AppSettings.horsrc/gui/AppSettings.h) — stores the Aetherial preset library; would need a lookup table (profile name → Aetherial preset name) for the linkage.resources/orresources/presets/, alongside the existingresources.qrcpattern) — where factory-default preset JSON (matching the attached file's schema) would be added and wired into the build viaqt_add_resources.Logging categories to enable for diagnostic capture (Help → Support…): Both items are feature/packaging requests rather than runtime faults, so logs won't show much, but for confirming current (non-)behavior:
aether.gui) — confirm no hidden linkage exists between profile load and Aetherial preset selection.aether.transmit) — TX state and profile load/save commands.aether.audio) — confirms the Aetherial chain doesn't react to a profile switch at the audio-processing layer.Suggested fix direction:
Attachment:
AetherSDR-ChannelStrip-Library_Defaults.json(contains the three presets above; a fourth user-experimental preset in the same file is not part of this request and should be disregarded for the factory-default set).AetherSDR-ChannelStrip-Library Defaults.json