ADAU1761 RMS compressor table values
I have a GUI for a project using 3 ADAU1761. I would like to add custom/Realtime changes to the compressor curve. I can see the 34 table multipliers and how there are 3db steps and that flat is all 1's.
When attempt tp set my software application (vb.net, visual studio 2019) to any of the X poles to be offset by some decibel value, i can not get the derived multiplier to match ADI's value from the compressor curve drawing window. I would like to know what the actual formula is to get these numbers please. Thanks
Audio Signal Processors
sigma studio
software
SigmaDSP Audio Processors
adau1761
Hello Paul,
The number is the gain factor when the level in the sidechain is at that exact level and you are correct that the points are spaced 3dB apart. When the DSP code runs it will interpolate the gain factor based on the point above and below the measured level.
The formula for the gain factor is rather standard. This is my favorite web site to do the calculations and it shows the formulas. Gain factor dB conversion to factor ratio gain conversion to level in decibels dB amplitude voltage gain field quantity dBu dBm dBW dBV dBmV dBµV dBu energy size power voltage damping factor attenuation amplitude amplification acoustic intensity sound pressure factor ratio voltage gain power loss level decibel dB - sengpielaudio Sengpiel Berlin
Then you end up with a real number in decimal format. Then you have to change it to a binary(hex) value in 5.23 format. This is a good post that discusses this conversion.
(+) decimal to 5.23 conversion - Q&A - SigmaDSP Processors & SigmaStudio Dev. Tool - EngineerZone (analog.com)
Keep in mind that there will be some rounding errors that SigmaStudio may do differently than what you are using. bitmechanic made reference to that by pointing out the resolution of a 23 bit number in that thread. So if the bottom few bits are not exact it should not be a problem especially knowing that the DSP will interpolate the actual gain factor to use and the audio level in the sidechain is constantly changing.
Dave T
Thanks, I just saw this now, after figuring it out by entering xy values and recording the numbers. I used the same website you mention, and made a table of 1db offsets, then scaled my graphic interface (0 to 100) to the -93db to 6db. then grabbed the offset value from there. I also wrote a decimal to hex routine for sending the bytes. Thanks again for this info
Please log in to reply.