Subject: [apache-labs] PowerSDR_mRX Audio Chain - How it works
From: Warren C. Pratt <warren@wpratt.com>
There has been quite a bit of discussion lately of MIC sensitivity and the audio processing in the mRX release. I
think a few words of explanation about how things work might be helpful to those exploring various situations
and alternatives.
In the case audio enters the MIC connector, it is fairly quickly routed to an audio CODEC to be converted to
digital samples. Within that chip, before the ADC, there is a 20dB gain block that can be switched OFF/ON. This
gain block is the 20dB Mic Boost that can be selected. Although I haven't tried, I suppose it's possible to
overdrive the input stages or
ADC [especially with the 20dB gain block enabled] which could result in clipping of the digital data and resulting
distortion.
After conversion to digital, the 16-bit, 48Khz samples are transferred to the computer where they are promptly
converted to floating point. With floating point samples, dynamic range is of little consequence as they then
progress through the digital signal processing chain. The processing chain is then as follows:
MIC GAIN - a simple multiplier determined by your gain settings is applied to the samples.
DOWNWARD EXPANDER - If activated, the signal is reduced in gain if it is below the threshold set on the
console.
GRAPHIC EQUALIZER - If activated, a filter is applied to the audio. The frequency response of the filter is
tailored to the response curve that has been set.
LEVELER - If activated, the specified leveler gain is applied to the audio if/when the signal level is running
below the leveler's output target amplitude. I currently have the output target set to +0.4 dB. Why not 0 dB?
The slight positive bias is beneficial for upcoming features. [Note: NOT the same algorithm that Flex used.]
COMPRESSOR - If activated, the specified maximum compression is applied. Output is compressed to 0dB
maximum. [NOTE: Not the compander algorithm that Flex used.]
FILTER - The audio is filtered to match the transmit bandwidth.
ALC - The audio is restricted to 0dB so as not to over-drive the fixed-point dynamic range of the FPGA and/or
the DAC. [NOTE: Not the same algorithm used by Flex.]
Finally the audio is converted to 16-bit, 48Khz, samples and transferred to the hardware for up-conversion.
What happens if you run your MIC level above 0dB? If the Leveler is ON, you will get some compression there
and everything else runs as normal. If the Leveler is NOT on but the compressor IS, you will get some additional
compression there, above the value you have selected. If neither the Leveler or Compressor is ON, you will get
some compression by the ALC. IN NO EVENT does the compression cause "flat-topping" or "splatter." These
phenomena only result from non-linearity and overdrive of the analog amplifiers. Note that the ALC has no
knowledge of the analog amplifiers--it is strictly in the digital signal
processing chain.
73,
Warren NR0V
Copyright Apache Labs © ANAN-200D
23
June 22, 2015
Need help?
Do you have a question about the ANAN-200D and is the answer not in the manual?
Questions and answers