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
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

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!