Post Go back to editing

Implementing AGC in ADAU1442


Does anyone have any suggestions for how to implement AGC (+/-10dB range) on the ADAU1442?

I currently have something running using a lookup table and a single slew ext control volume control. Whilst it works in a fashion I'm sure it should be possible to do better.



  • Hi Ian,

    We currently have an AGC in development and it should ship with the next release of SigmaStudio.

    In the meantime, your solution with the look-up table and slew volume is probably the best bet.

    Another option would be an RMS compressor/expander with a very slow attack and release.

  • Hi Brett,

    Thanks for the info. I'll push on with what I have for now.

    Does the new AGC component have the ability to freeze in the absence of input signal? It's useful to have if you are dealing with speach so the gain doesn't ramp up in speach pauses.



  • Hi Ian,

    Since this algorithm should be shipping soon, I think it's OK to give you a preview of the GUI. This is the beta version, so keep in mind that the finished product might end up looking a little different, but this should give you the basic idea.

    AVC Enable : Turns the processing on and off. I'm not sure yet if turning the algorithm off in mid-operation will reset the gain immediately or if the gain will slowly decay back to 0 dB.

    Decay Rate : Sets the rate at which gain or attenuation is applied. In other words, how long does it take for the output gain to reach its target?

    Max Attenuation : The maximum attenuation that will be applied to a loud signal.

    Max Gain : The maximum gain that will be applied to a quiet signal.

    Output Level : The target level (I believe in RMS) that the algorithm will try to maintain.

    Freeze Level : The level at which the gain will "freeze" at its current value. For example, when the audio input goes away, the output gain will remain unchanged.

  • Hi Brett

    Thanks, that looks very useful. Any idea when it will be available?

    On a separate note, are there any plans to add any bit manipulation

    components? We use the devices in a self-booted mode and feed control

    data in or out through one of the spare digital audio channels. A

    component that allowed us to directly access the bits within a stream

    would be very useful.

    I've used this technique to drive LED bar-graphs and 7 segment displays

    from the sigma chip using just external shift registers.

    Kind Regards

    Ian Burns

    Design Engineer

    Glensound Electronics Ltd. 1,5 & 6 Brooks Place, Maidstone, Kent, ME14

    1HE. UK

    Tel: +44 (0) 1622 753020 Fax: +44 (0) 1622 762330 <>

    *Designers and manufacturers of the leading broadcast products

    including the new T3 Analogue Broadcast Console, *and the new

    GDC-6432 Glensound Digital Commentary System.

    Product line includes: ATM networked audio systems, 4 wire boxes,

    commentators equipment, DTMF equipment, distribution amps, headphone

    amps & limiters, hearing aid loop amplifiers, ISDN codecs, level

    controllers, mobile phone interfaces, audio mixers, mic amps, audio

    monitoring units, switchers, converters, talkback intercoms, and balance

    converters, Specialists in bespoke designs.

    Glensound Electronics. Serving broadcasters since 1966.

    /This email and its attachments may be confidential and are intended

    solely for the use of the individual to whom it is addressed. Any views

    or opinions expressed are solely those of the author and do not

    necessarily represent those of Glensound Electronics Ltd. If you are not

    the intended recipient of this email and its attachments, you must take

    no action based upon them, nor must you copy or show them to anyone.

    Please contact the sender if you believe you have received this email in


    Glensound Electronics Ltd. Is registered in London no:1347507.

    Registered address: Sunn Lodge, Weavering Street, Maidstone, Kent. Email

    // <

  • Currently there are no bit manipulation elements but I can see how that would be useful. Depending on the core generation, the ability to perform bit-level functions changes, so it's possible that some of the more complex functions would only be available on the newer cores. I will pass this request on to the software team.

  • Ah, and to answer your first question, the AVC algorithm should be included in the SigmaStudio 3.2 release, but there's a small chance it won't.

  • Thanks. We have a technique that works but it's not as simple as it

    could be.



  • Interesting, and thanks for including this new block.  Yes, some of us are using the 'slew volume control' in various circuits, although correction must be added for the asymmetrical up-and-down slew rates of this part.

    In addition to "gating," to hold gain at the current value when the program falls below a preset threshold, the held gain ought to time out after a few seconds and slowly return to the 0dB resting point.  The gating might want to have some frequency weighting included, or the option to put a bandpass filter in this path, as air-conditioner rumble or random high-frequency noises (like crickets!) don't want to be brought slowly up to full level during lulls in dialog.

    Also, what is the response of this AGC to program material; that is, peak, quasi-peak or RMS?  Will it have a separate control input, like the other compressors and limiters, so that its response to program dynamics can be tailored?

  • Hi electrojim. Thanks for the comments!

    The algorithm is new enough that I'm actually still getting a handle on it myself. I'll be working together with the software engineers to create the related help documentation, so at that point I'll be able to get the answers to your questions.

    I'll also pass on your comments and suggestions. I especially like the idea of bandlimiting the detection signal and the gain time-out. If these features don't make it into the original release, perhaps they could show up sometime in the future as an "advanced AGC" algorithm.

  • Hi All,

    This post is over a year old, but still have related questions:

    In sigma studio 3.4 i can not find the AVC module - has this been implemented?

    About the AGC/AVC:

    I'm looking for a solution to connect microphones (to a ADAU1442) to measure the ambient noise.

    When the noise increases/decreases (starting from a defined minimum level), the output gain of the specific channel should also increase/decrease (within a certain range, but with a minimum set level).

    Any change this is possible using the AGC and some other blocks?

    If the AGC module has not been implemented in Sigma studio 3.2 (>): any suggestions to achieve this are very welcome.