Implementing AGC in ADAU1442
Hello,
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.
Cheers
Ian.
Audio Signal Processors
adau1442
SigmaDSP Audio Processors
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.
Cheers
Ian.
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
www.glensound.co.uk <http://www.glensound.co.uk/>
*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
error.
Glensound Electronics Ltd. Is registered in London no:1347507.
Registered address: Sunn Lodge, Weavering Street, Maidstone, Kent. Email
//office@glensound.co.uk/ <mailto:office@glensound.co.uk
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.
Cheers
Ian.
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.
Thanks.
Hi everyone.
You can certainly take the do-it-yourself approach and craft a custom AVC with some of SigmaStudio's basic building blocks. If you want to instead use our AVC solution, you can find in in the "ADI Algorithms" folder in SigmaStudio's toolbox. It hasn't found an appropriate subfolder yet, so we dropped it into a folder called "unclassified" for now.
iPodから送信
Hey, Ramon,
Seems to me that I did see some sort of AGC/AVC in 3.4, but it fell short of our particular need. We implemented this function in Sigma using common building blocks. In short: You have level detectors, logic blocks and an adjustable-slewing-rate volume control. If the corrected output level is below a determined optimum value, you tell the volume control to slew up; if it's above your desired level you tell it to slew down. Where the input falls below some 'legitimate' input level, you either freeze the gain or slowly return it back to your unity-gain resting value.
All this is possible in Sigma; in fact, many, many things can be done that have not yet been (nor probably ever will be!) implemented into Sigma modules. Working with this suite has almost put the fun back into audio equipment design. It's darn-near the equivalent of my old 3M breadboard and pushing components and connecting wires into little holes. You need only use your imagination and true wonders can be accomplished.
Thank you both,
I found the building block. Is more information available how to use this block, or examples maybe. I've check the SS-3.4 help file, bu could not find anything on this building block.
I would like to now how i could use a mic to sense the ambient noise, if getting loud, increase the output gain (and the other way around).
Looking at the AVC building block o do not see an immediate solution, bu i may be wrong.
Thanks to all for sharing more info/examples of this block.
Hi Ramon,
Please check this post earlier in the thread, which has basic descriptions of how each of the controls work:
Is this AVC block not available in the ADAU1701?
The AVC algorithm implementation uses some specific hardware accelerators that are not present in the ADAU1701 core. We might try to port this over at some point, but it would require a re-write.
Any way to implement this using standard blocks in the ADAU1701?
Yes, there is a way to do this using standard blocks. I would recommend using an RMS table to feed the input of an externally controlled volume control. You would need to tweak the values in the RMS table to different levels of gain depending on the level of the input.
In the example project, I set all of the values in the RMS table to one, so it will have no effect. However, you could start changing the values to create your required functionality.
Here is the example project I mentioned.
This question has been assumed as answered either offline via email or with a multi-part answer. This question has now been closed out. If you have an inquiry related to this topic please post a new question in the applicable product forum.
Thank you,
EZ Admin
Please log in to reply.



