There are several compressors available in SigmaStudio. Some of them use peak detection, while others use an approximated RMS detection. In order to make the algorithm memory efficient, the transfer function of the compressor that maps input levels to output gain is stored in memory, and the output gain is calculated by linear interpolation.
A list of available compressors is available here: https://wiki.analog.com/resources/tools-software/sigmastudio/toolbox/dynamicsprocessors
The compressor table has 33 points, which matches the 33 points on the GUI. By changing a big point on the curve, you can change the shape of the overall curve. The big blue points act like "anchors" as they alter the curve of the small blue points behind them.
The calculation is actually done using 34 points stored in RAM. The first point stored in RAM represents the gain reduction value for any input below -90dB.
Here's an example: A compressor with a threshold of -6dB and a ratio of 2:1. For all inputs between -90 dB and -6 dB, the output gain is 1. For points above -6 dB, the output gain decreases by 3 dB for every 6 dB increase in input level.
The resulting table is as follows:
Point | dB input | Output Gain |
1 | -90 | 1 |
2 | -87 | 1 |
3 | -84 | 1 |
4 | -81 | 1 |
5 | -78 | 1 |
6 | -75 | 1 |
7 | -72 | 1 |
8 | -69 | 1 |
9 | -66 | 1 |
10 | -63 | 1 |
11 | -60 | 1 |
12 | -57 | 1 |
13 | -54 | 1 |
14 | -51 | 1 |
15 | -48 | 1 |
16 | -45 | 1 |
17 | -42 | 1 |
18 | -39 | 1 |
19 | -36 | 1 |
20 | -33 | 1 |
21 | -30 | 1 |
22 | -27 | 1 |
23 | -24 | 1 |
24 | -21 | 1 |
25 | -18 | 1 |
26 | -15 | 1 |
27 | -12 | 1 |
28 | -9 | 1 |
29 | -6 | 1 |
30 | -3 | 0.85 |
31 | 0 | 0.707 |
32 | 3 | 0.6 |
33 | 6 | 0.50 |
Note that at an input of -6dB (the threshold), the output = input.
At 0dB, the output is 0.707, or -3dB.
At 6 dB, the output is 0.51, or -6dB.
You can make your own curves and calculate the parameters in manually if you prefer. Typically, in a real world system, this is calculated by the microcontroller.
The GUI in SigmaStudio is intended as an easy way to set the compressor curve while tuning the system. To give an end user control over the curve, the table points should be calculated in the microcontroller.
In the GUI, the maximum ratio achievable is limited. However, you can enter in your own parameter data (or right click on a blue point and choose "Set Point Value" to bypass this limitation.
You are correct, the x values are always in 3 dB spacings.
The new "Standard RMS Compressor" has now been released - Check the toolbox under Dynamics Processors > RMS > Standard Resolution > Lower Range.
This FAQ was generated from the following discussion: Developing Sigma DSP Cluster