ΣSigmaStudio Ask AI Русский Log in

How can I change the curve of an RMS compressor with safeload mechanism?

SigmaDSP & SigmaStudio sec1980 Nov 15, 2016 00:00 2 replies Original on forum ↗
Subscribe
sec1980 Question
Nov 15, 2016 00:00

I need to change in real time the compression curve of an RMS compressor without click and pop noise, uploading data from a microcontroller.

I've seen that using SigmaStudio, when I change the curve, on the capture window it appears a safeload write of 160bytes...

How it is possible? The safeload max length is 5 words (20 bytes), isn't it?

Here the capture window data from SigmaStudio:

Safeload Write
Time: 12:11:16 - 104ms
IC: IC 2
Cell Name: Compressor2
Param Name: TwoChannelExtDetectAlgNoGain6dBFix1
Param Address: 0x0000
Param Value: 1
Bytes: 160
Param Data:
0x00, 0x80, 0x00, 0x00,
0x00, 0x80, 0x00, 0x00,
0x00, 0x80, 0x00, 0x00,
0x00, 0x80, 0x00, 0x00,
0x00, 0x80, 0x00, 0x00,
0x00, 0x80, 0x00, 0x00,
0x00, 0x80, 0x00, 0x00,
0x00, 0x80, 0x02, 0x90,
0x00, 0x80, 0xE5, 0x6B,
0x00, 0x81, 0xCC, 0x78,
0x00, 0x82, 0xB5, 0x20,
0x00, 0x83, 0x9F, 0x69,
0x00, 0x84, 0x8B, 0x56,
0x00, 0x85, 0x78, 0xE6,
0x00, 0x86, 0x68, 0x23,
0x00, 0x87, 0x59, 0x0E,
0x00, 0x87, 0x4B, 0x1E,
0x00, 0x86, 0x65, 0x92,
0x00, 0x85, 0x81, 0x87,
0x00, 0x84, 0x9F, 0x03,
0x00, 0x83, 0xBD, 0xFC,
0x00, 0x82, 0xDE, 0x76,
0x00, 0x82, 0x00, 0x68,
0x00, 0x81, 0x23, 0xD4,
0x00, 0x80, 0x48, 0xB6,
0x00, 0x80, 0x00, 0x00,
0x00, 0x80, 0x00, 0x00,
0x00, 0x80, 0x00, 0x00,
0x00, 0x80, 0x00, 0x00,
0x00, 0x80, 0x00, 0x00,
0x00, 0x80, 0x00, 0x00,
0x00, 0x80, 0x00, 0x00,
0x00, 0x80, 0x00, 0x00,
0x00, 0x80, 0x00, 0x00,
0x00, 0x5A, 0x82, 0x7A,
0x00, 0x40, 0x00, 0x00,
0x00, 0x2D, 0x41, 0x3D,
0x00, 0x20, 0x00, 0x00,
0x00, 0x16, 0xA0, 0x9E,
0x00, 0x10, 0x00, 0x00

On SigmaStudio, naturally, this kind of operation does not produce any noise on the audio channel, and I need to reach a similar result from my micro.

Please help me...

KJBob Reply
Nov 26, 2016 00:00

Hello,

Sorry that no one has gotten to your question. You can go ahead and change the compressor's lookup table by safeloading five words at a time. Safeload's five word capacity is designed to completely update one biquad filter, because partially updating those coefficients is a sonic disaster. There's no such problem with the compressor's table. Since at any moment the incoming level is selecting only one table entry (gain-setting word) at a time, it doesn't matter if you load one word, a few words, or the entire table together. Despite this you still must do safeloads -- not direct writes -- for another reason: Safeloads carefully work in between samples to avoid disrupting their processing. On the other hand, direct writes are asynchronous, thus can upset a running DSP. As a result, direct writing even to parameters completely out of the audio path (such as unconnected DC sources) may produce clicks and pops.

For examples of a typical compressor table format, see:

Compressor Table Format - Changing compressors at run-time

and,

https://ez.analog.com/message/265593?commentID=265593#comment-265593

Best regards,

Bob

Reini Reply
Feb 22, 2018 00:00

I was looking for an answer on when to use safeloads. Now I know that I should always use a safeload when the core is running, even if I want to set a DC source outside the audiopath to avaoid clicks and plops (I use the DSP also to calcuate a temperature from a NTC sensor, the input comes from a microcontroller which sets a DC source).

Thanks again Bob!

Kind regards,

Reini