How is it possible to access the gain reduction of a "Dynamics Processor" with a microcontroller ? I need a readback possibility of the actual Gain value. DSP is ADAU1452/1442. Any ideas ?
Bernd
KCC Quizzes AQQ303 about the radius of a circle
1. Quote of the month: "When I die, I want to die like my grandfather who died peacefully in his sleep. Not screaming like all the passengers in his car" - Will Rogers
2. Quiz AQQ304 about finding the radius of a circle
Good luck, and try to be
View All
August Monthly Blog Quiz! Read the blog, take the quiz, and you could win a gift card
Important: Read the blog first . The quiz questions are all based on the content of the blog:
Stay in the loop and win! Read the blog Current Output Driving Industrial Loops , then take our quick five-question quiz for a chance to win a gift card
View All
ADAU1452
Production
The ADAU1452 / ADAU1451 / ADAU1450 are automotive qualified audio processors that far exceed the digital signal processing capabilities of earlier SigmaDSPÂ...
Datasheet
ADAU1452 on Analog.com
How is it possible to access the gain reduction of a "Dynamics Processor" with a microcontroller ? I need a readback possibility of the actual Gain value. DSP is ADAU1452/1442. Any ideas ?
Bernd
HI Bernd:
If the block doesn't expose the gain, then there are 2 ways to read the gain reduction. Question: Is this for display or diagnostic purpuse? If so, do you need to use the gain for some additional realtime purpose? If not, then:
1.- Substract the output signal with the input signal (derived the gain)
2.- Find the location for the calculated gain in the files generated by SigmaStudio and read from the memory location used internall y in SigmaStudio to gain access from it. This will require some reverse engineering of the existing code.
Let me know if this answers your concerns and/or if you need more guidance.
Migule
Hi Migule,
I need the gain information to let a external uC/Software show the status of a noisegate (open/close) or a limiter (gain reduction) to a user.
1. Output minus Input = gain reduction works fine. Except if there is no signal present. Then Output minus Input = 0.
This is equal to no gain reduction. In case of a closed noise gate this obviously gives a wrong information.
2.The Gain Table values are known but not the input of the Gain Table.
As i see the RMS value of a Dynamic Processor is not externally accessible, It is present in the accumulator but there is no Readback mechanism to access it there.
A good solution would be to write the gain reduction from the accumulator to a data ram location. There it can be properly accessed. But this has to be done by AD in the dynamic processor block. It then would appear as a data output in the Dynamic Processor block.
So thanks for the 2 good approaches but it does not really solve my problem.
Bernd
Hi
Understand your concern and agree on the need, unfortunately, this effort and request will probably take a couple of months before having a release available to the public. It comes to mind that when the signal goes below a threshold, you can freeze your gain derivation to cover for that corner case. There are probably other ways to come up with this value by using other blocks or even Dynamic Processors. I do know for a fact that some other compressors in the library do give access to this info.
Do you need us to post some examples?
Regards
Miguel
Hi Miguel,
- the compressor/limiter gain readback can be solved by comparing input and output.
- the noisegate gain readback does not work because of the zero signal problem.
A compressor with a data output unfortunately does not exist in the library.
If you have one please tell me where you found it.
I tried several signal readback methods and found the following:
The envelope rms gives you the squared rms value.
Followed by a log2 and a multiplication gives you the value in dB.
For the zero signal situation the log2 gives the highest positive output instead of the the most negative value.
So you must tweak the log2 input by adding a 1 in 32:0 format.
Next when i checked the time constants Attack/Decay i found they are not in dB/s as mentioned in the help, Instead the Decay is linear Amplitude/s and the Attack something unknown. The GUI Block is labeled k/s for the Decay whatever this means.
Now i adjusted these time constants to Decay in 1 second from 0dB down to -90dB
When i do a readback with the result and show it on a external meterbar it is nice and smooth moving for small signals but with high signals +24dB and more it seems to get stuck in the high levels.
This is because of the linear time constants and the enhanced dynamic range of the adau1452.
There is a workaround for this problem by doing it all yourself with the basic arithmetic functions.
And so it goes on and on....
There is all this graphic meter stuff in the GUI but not one working signal readback possibility for the real world !
I thought SigmaStudio should help me to develop faster real world applications. Instead it looks like the real world is not really the target.
No end user will work with the SigmaStudio GUI. But i as a developer have to provide controls and meters for this end user ( think of a mixing console). I would highly appreciate if the focus will come back to the real world needs.
Anyway thanks for your support
Regards
Bernd
HI Bernd:
Thank you for your feedback, we'll keep all of it in mind. Practically, it is easier if we focusing in enhancing specific compressors rather than enhancing them all to expose the gain being applied. Can you tell us the specific compressor you are looking to show it's gain? this way we can focus on providing that functionality in the next build (available 1Q 2015) with priority. Do you have schedule?
On a different note, I'm afraid instantaneous knowledge of the gain doesn't always map to what you need to visualize in real life compressors. In many cases, you want to hold values a period of time so that your led's and display react gracefully.
We have qualified 3rd parties that could recommend to you, if you prefer to closely control the deliverable.
We understand your frustrations and are eager to enhance our offerings to further service higher end applications such as yours.
Miguel
PS. I will double check but I do think there was a compressor / GUI that did expose attenuation values precisely for display needs.
Hello Bernd and Miguel,
SteveL came up with an ingenious way to produce a true exponential decay for a level meter. By applying feedback to a External Decay Peak Detector, he sets up the differential equation dy/dt = - Ky, which solves to y = e^ (-Kt). The original, shown at https://ez.analog.com/message/64727#64727 ran on a -1701, but easily ports to a -1452 as shown:
The result is an exponential decay, which makes an excellent level meter.
I haven't found a compression block that offers a gain reduction (ratio) output, but the limiter block definitely does.
Best regards,
Bob
Hi Miguel,
Thanks for your answer.
Actually i am using Dynamics Processor/RMS/Full Range/Ext Detector Input/RMS(no gain) , One Channel.
Standard resolution is also possible but there is no Mono Version available yet.
Ext. Detector input is important to shift the table to the required range.
1Q 2015 would be ok. I already started without the readback.
To PS: I checked my old projects back to AD1940 2006 but i never used a compressor with data output. Maybe you are able to find a hidden gem.
Bernd
Hi Bob,
Thanks for this hint. In the link i see that several people are trying to find an easy solution for the signal detection.
It is on the wishlist since 2012 !
For the ADAU1442 i used a "RTA to Output" Level Detector which works with a decay of dB/s . This would do it for signal detection but it is only implemented for the ADAU144x.
@Bob: Since 1442 and 1452 are not so different maybe this could be implemented for the ADAU1452 in the next release ?
Bernd
Hello Bernd,
Miguel () could better answer about future block additions to SigmaStudio then I can, as I'm not with ADI. The ADAU1452 is a third generation ("Sigma 300") DSP which is quite different from all previous SigmaDSPs. Thus it may not be easy for ADI's programmers to port blocks over to it.
Best Regards,
Bob
KJBob (and SteveL) - Thank you for this block! For peak metering this does a much nicer job than the k/s delay found in the default blocks for the ADAU1452.
Now I'm also trying to implement some average metering. I am using the Envelope RMS block, which has a decay built in (again, k/s). It works, but the k/s decay methodology (when set at its maximum) causes the average meter to decay at a very slow rate from higher amplitudes, which is not intuitive--just like in the peak meter.
I thought that if I could just find a way to gather RMS data without the decay, I could use a mechanism like your Exponential Peak Decay to get a more reasonable decay rate (or even no decay rate). In the SigmaStudio help file, there is a block called "RMS (no: gain, hold, decay)" which would be perfect, but the block is apparently not implemented on the ADAU1452. I looked at using a running average and calculating RMS in separate blocks, but the Running Average block has the decay built in again.
Is anyone aware of a way to calculate a 300ms RMS or running average WITHOUT the built in decay on the 1452?
Thanks!