Sigma Dsp Compressor  Level Readout

I am using the ADAU1452 processor and have implemented our dsp to be controlled via a Linux coprocessor.  While all of this is working well the code export seems to be lacking.  I am looking for the parameter addresses to read back things such as input, output, and compression levels displayed on a std rms compressor block and other level types in general.  I know there has to be a readable address as sigma studio has to be able to access this data but I do not see any read back parameters.  Any help would be appreciated as i would like to expose as much functionality as possible. 



  •    Hello Ed,

       The Multiband RMS Compressor does show the levels via SigmaStudio, and while in operation I see the USBi's yellow LED rapidly blinking indicating data transfer -- similar to what we see when the Real-Time Display is in use.  Unfortunately, the Capture Window shows none of this activity.  And this is the only compressor that actually lets SigmaStudio know what's going on.  The remaining compressors (such as the one shown below) do not send any data back.

    The usual workaround is to read the necessary levels back yourself -- via Envelope Follower and DSP Readback blocks.  Peak and RMS Envelope blocks are available.  The AvgEnv one shown here appears to be average responding, as it yields a reading of 0.64 instead of 0.71 for a sine wave of peak value 1.0.

    When you press the Read button(s), the Capture Window shows what your microcontroller needs to do in order to get the readings.  You can then perform calculations to render the level data as your application requires.

       Best regards,


  • Bob,

    Thanks for the input but i was looking at this from a more programmatic implementation outside of sigma studio.  I already use an average envelope to read the end level if our signal chain but this level does not appear to match the threshold values in the compressor.  We are using the compressor with levels but when i look at the coefficient address output for the project I do not get the in out or compression level read back addresses.  If that data is available to sigma studio it has to have a coefficient address and therefor should be exported for use programmatically.  We are using sigma studio to generate our project but we are modifying the coefficients and reading back data from the DSP in linux and displaying on a web ui..  In the below compressor, which we are using, i see level windows but they are nowhere to be seen in the code.  This can also be said of the level meters available in sigma studio.  While these things are useful when using sigma studio i nee to access them from my code to see what levels the compressor is seeing as it does not seem to correlate with an avg envelope read back.

  • Hello emcnicholas,

    I apologize for the delay and also that the person I need to ask about this is on vacation. But, I can get started on this and fill in some of the details later. This should be able to get you started.

    If you look at the parameters window you will find the following parameters associated with the limiter that are shown in red below.

    Parameter X is the upper word of the input data and X_lo is the lower word of the input data. (56 bits from the accumulator)

    So this is what is being read by SigmaStudio for the input.

    The "Y" parameter I do not know exactly what it is at the moment. It seems to be the output level but it only changes when the compression parameter is not "1". But the "Y" may be something different. It may be used for the bouncing ball display. In that case you can take the input data and apply the multiplication factor and then display that as the output level. 

    Note that the Compression parameter is in 8.24 format so as shown in the screen shot it is a "1".

    In this example there is no compression happening so the compression is 1. This number goes down once there is compression. I suspect that this is the multiplication factor being applied to the incoming audio, in other words, the compression ratio.

    The SigmaStudio GUI then will be doing a lot of calculations. It will be calculating the output level based on the multiplication factor being used on the input level. I am not sure if the integration is happening in the DSP but I think it is. Because the "X" data does not seem to ever go negative so that will make your programming easier.

    You can use a DC source to look at the behavior. It stays constant that way. You can send the DC source through a volume control if you want to lower/raise the DC level in decibels.

    So I am sorry that I do not have all the details right now, we try to chain the programmer to his desk but every once in a while he gets loose.

    Please update us on your progress.

    Dave T

  • David,

    Thanks for the help this information is very useful and I can integrate it with the code i am developing.  While this is helpful i do feel that it would be useful to export these parameters and addresses in the code generation process as this would make for a simpler integration.  I will see if i can not find similar data points on other objects.  Also if your developer could chime in on what the exact format of the data is that would be very useful. Looking at the data in compression both y and compression values match and are equal to the compression amount.  I See the x parameter being split over 56 bits but how does that convert to a floating point value?  Is it a 64bit float with the leading zeros what is the format?

  • David,

    Just now looking at a level i have in my signal chain the code address for the level is 0 and the actual address of the x and x low is 73 and appears to be in the same 56 bit format.