How can I change the curve of an RMS compressor with safeload mechanism?
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...
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
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
Please log in to reply.