Using the SGTL5000 Audio Processor

Status
Not open for further replies.

w9ran

Member
Now that I have Rich Heslip's excellent "Teensy SDR" working well, I'm ready to try enhancing it using the built-in Audio Processor. My goal in using the Audio Processor is to expand or compress the audio signal from the mic to maintain a constant level, and by means of the graphic equalizer, to emphasize the range of frequencies that convey intelligence by the human voice in the 300-3000 Hz range.

Since this is a transceiver, the audio inputs and outputs are routed differently in the transmit and receive modes, which simplifies what I want to do, because the code already reconfigures the audio path when switching from transmit to receive. I want to add the 5 band graphic equalizer (and maybe AGC) but only in the transmit mode, and disable all processing functions completely for the receive mode. Here is a snippet of code that sets up the audio path for the Lower Sideband (LSB) transmit mode:

case SSB_LSB:
// Initialize the +/-45 degree Hilbert filters
Hilbert45_I.begin(TX_hilbertm45,HILBERT_COEFFS); // swap filters for LSB mode
Hilbert45_Q.begin(TX_hilbert45,HILBERT_COEFFS);
Audiochannelsetup(ROUTE_SSB_TX); // switch audio outs to TX Hilbert filters
audioShield.inputSelect(inputTX); // SSB TX mode uses mic in
audioShield.micGain(MIC_GAIN); // have to adjust mic gain after selecting mic in
audioShield.volume(SSB_SIDETONE_VOLUME); // fixed level for TX
break;

There's a corresponding block for Upper Sideband, which simply reverses the Hilbert45 filters.

My understanding is that I would enable the Audio Processor by setting the parameters for the desired functions e.g. eqSelect(n); eqBands(bass, mid_bass, midrange, mid_treble, treble); and multiple settings for eqBand(bandNum, n); and then adding code to enable it in the above block. Since I only want the Audio Processor features to be active in the transmit mode, I think I can do this by configuring the parameters as needed, and then using the audioPreProcessorEnable() and audioPreProcessorDisable() controls to turn it on for transmit and off.

Do I have this essentially correct?

Am I correctly reading the datasheet that the AVC function can be used simultaneously with the eq? For this I'd need to set the parameters: autoVolumeControl(maxGain, response, hardLimit, threshold, attack, decay); and then adding autoVolumeEnable(); when I want to turn the function on and autoVolumeDisable() to turn it off. My understanding is that the AVC function also is controlled by audioPreProcessorEnable() and audioPreProcessorDisable() so I could use that as well.

I'm just starting to understand the capabilities of this amazing part, and would very much appreciate pointers to any other examples that might be helpful. I didn't exactly start with a trivial project but thanks to the excellent work by Rich and others, the learning has been coming fast and I've already got ideas for future projects of my own. Thanks!

Bob
 
Status
Not open for further replies.
Back
Top