What happened?
The speech compression (Gain Reduction) meter in AetherSDR (v0.8.15) is producing incorrect and erratic readings. The behavior appears to be inverted or improperly scaled relative to the actual microphone input:
Low Volume Levels: The meter shows a constant, high compression indication even when speaking softly or during low background noise.
High Volume Levels: As the input volume increases (approaching the point where compression should actually engage), the meter drops to zero or shows no activity at all.
Erratic Movement: The meter needle/bar jumps inconsistently rather than following the expected smooth ballistics of a gain reduction indicator.
What did you expect?
The compression meter should function as a Gain Reduction indicator. It should:
Stay at 0 dB (no reduction) when the input signal is below the processor threshold.
Deflect downward (increasing reduction) proportionally as the speech volume exceeds the threshold.
Display smooth "attack" and "decay" ballistics that accurately reflect the FlexRadio's internal processor state.
Note that over the air testing signal reports suggest that speech compression is actually working and that the issue is the compression meter.
Steps to reproduce
Connect AetherSDR to the FLEX-6600.
Enable the Processor (PROC) in the Transmit/Audio panel.
Observe the meter while remaining silent or whispering; note the constant/high indication.
Speak loudly or whistle into the microphone; observe the meter dropping to zero or showing no reduction.
Radio model & firmware
Model: FLEX-6600
Firmware: 4.1.5.39794
OS & version
OS: Windows (AetherSDR v0.8.15 / Qt 6.7.3)
Developer Notes
Based on the project's architecture, the compression meter logic likely suffers from a protocol mapping or mathematical inversion error.
Potential Root Causes:
Inverted Calculation: The code may be treating the raw meter value as a peak-reading value rather than a reduction value. In the Flex API, gain reduction is often expressed as a positive value representing "amount reduced," which needs to be subtracted from a maximum or displayed on a negative scale.
Example logic error: displayed_val = raw_val instead of displayed_val = 0 - raw_val.
Incorrect Meter ID: The ProtocolHandler may be subscribing to the wrong meter ID (e.g., a "Leveler" or "Mic Peak" meter) and attempting to map its 0–100 scale onto the compression meter's dB scale.
VITA-49 Scaling: If the meter data is coming via the VITA-49 status stream, the scaling factor (typically defined by the radio's meter desc command) might be ignored, leading to the "erratic" jitter if the raw integer is being used without normalization.
Related Files & Functions:
src/network/ProtocolHandler.cpp: Check the regex for meter status updates and ensure the correct meter_id is linked to the COMP UI element.
src/gui/widgets/MeterWidget.cpp: Review the setValue() logic specifically for meters marked as "Reduction" types.
src/core/radio/FlexRadio.cpp: Verify the initialization strings—ensure the client is requesting the correct meter IDs for the transmit chain.
Suggested Logging for Diagnostics:
Please enable the following in Help → Support:
radio.responses (To capture the meter stream raw values during high/low audio).
gui.updates (To see how the meter widget is being commanded to move).
support-bundle-20260417-110538.zip
What happened?
The speech compression (Gain Reduction) meter in AetherSDR (v0.8.15) is producing incorrect and erratic readings. The behavior appears to be inverted or improperly scaled relative to the actual microphone input:
Low Volume Levels: The meter shows a constant, high compression indication even when speaking softly or during low background noise.
High Volume Levels: As the input volume increases (approaching the point where compression should actually engage), the meter drops to zero or shows no activity at all.
Erratic Movement: The meter needle/bar jumps inconsistently rather than following the expected smooth ballistics of a gain reduction indicator.
What did you expect?
The compression meter should function as a Gain Reduction indicator. It should:
Stay at 0 dB (no reduction) when the input signal is below the processor threshold.
Deflect downward (increasing reduction) proportionally as the speech volume exceeds the threshold.
Display smooth "attack" and "decay" ballistics that accurately reflect the FlexRadio's internal processor state.
Note that over the air testing signal reports suggest that speech compression is actually working and that the issue is the compression meter.
Steps to reproduce
Connect AetherSDR to the FLEX-6600.
Enable the Processor (PROC) in the Transmit/Audio panel.
Observe the meter while remaining silent or whispering; note the constant/high indication.
Speak loudly or whistle into the microphone; observe the meter dropping to zero or showing no reduction.
Radio model & firmware
Model: FLEX-6600
Firmware: 4.1.5.39794
OS & version
OS: Windows (AetherSDR v0.8.15 / Qt 6.7.3)
Developer Notes
Based on the project's architecture, the compression meter logic likely suffers from a protocol mapping or mathematical inversion error.
Potential Root Causes:
Inverted Calculation: The code may be treating the raw meter value as a peak-reading value rather than a reduction value. In the Flex API, gain reduction is often expressed as a positive value representing "amount reduced," which needs to be subtracted from a maximum or displayed on a negative scale.
Example logic error: displayed_val = raw_val instead of displayed_val = 0 - raw_val.
Incorrect Meter ID: The ProtocolHandler may be subscribing to the wrong meter ID (e.g., a "Leveler" or "Mic Peak" meter) and attempting to map its 0–100 scale onto the compression meter's dB scale.
VITA-49 Scaling: If the meter data is coming via the VITA-49 status stream, the scaling factor (typically defined by the radio's meter desc command) might be ignored, leading to the "erratic" jitter if the raw integer is being used without normalization.
Related Files & Functions:
src/network/ProtocolHandler.cpp: Check the regex for meter status updates and ensure the correct meter_id is linked to the COMP UI element.
src/gui/widgets/MeterWidget.cpp: Review the setValue() logic specifically for meters marked as "Reduction" types.
src/core/radio/FlexRadio.cpp: Verify the initialization strings—ensure the client is requesting the correct meter IDs for the transmit chain.
Suggested Logging for Diagnostics:
Please enable the following in Help → Support:
radio.responses (To capture the meter stream raw values during high/low audio).
gui.updates (To see how the meter widget is being commanded to move).
support-bundle-20260417-110538.zip