ADAU1701 Variable gain based on input level
Hello, I was wondering if anybody has done a design in which the the gain is adjusted based on average input signal level. If level is very low no gain. If level is very high high gain?
Any help is greatly appreciated.
John
Audio Signal Processors
SigmaDSP Audio Processors
adau1701
Would a peak hold (scaled down) feeding a multiplier work?
It sounds like you could do what you want with one of the dynamics processor blocks used as an expander. The block can calculate the rms level of the input signal. For small signals, you would set up your transfer curve at a noise gate (low-level signals are highly-attenuated) and for larger signals you could apply higher gain, therefore expanding the dynamic range of your signal.
If you do this, you will need to be careful with your levels through the signal chain. Adding a lot of gain to high-level signals will naturally bring you near or above the clipping point of your output. While you can add up to +24 dB gain internal to the SigmaDSP, you will have to be sure to that your signal at the output does not exceed a 1.0 full-scale level.
I'm, sorry guys I think I was not clear enough on my original post. I would like to use the average input level of one signal to be used to vary the gain/attenuation of a second different signal. I have a input audio signal and a carrier signal. I would like to drop the level of the carrier when the input is low on the audio signal and allow it to track up as the input gets higher. I think I can do this externally with a buffer and hold up cap then feed the level into an adc, then use the adc value to set the gain/attenuation of the carrier, but I was hoping to solve this inside the 1701. I hope it is clearer now.
Thanks, John
You can still do this in the way I described above, with just one small adjustment. You can use a dynamics processor block with external detector input. In this block, the detector can be driven from a different signal than the signal path that is being compressed or expanded. In your case, you would connect the carrier signal to the dynamics processing input path, and connect your audio signal to the detector input. This way, the gain applied to the carrier is controlled by the level of your audio signal.
I implemented the compressor to compress my carrier base on an external signal, and it seems to work fine. For a test rather than an external signal I used a white noise source and a volume control to drop its level. My problem is when I take this working block and drop it into my other program that takes a input signal and mixes it with the carrer, hook it up. I get nothing out. Coud it be that I am running out of resources? It seems to compile and download but the output goes flat.
Hello, I answered the question about resources in your other thread: https://ez.analog.com/thread/6260?tstart=0.
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.