Hi list,
nice weather today, isn't it?
I am trying to understand the [pd compander-limiter] example from slop~'s help patch because I need a 0dBFS brickwall limiter as abstraction without externals.
When set to the "no change" parameters, the example will still saturate any signals hotter than 0dBFS.
I don't understand what the ratio parameter does, especially its unit and range. It is 100 for dynamic reduction and 200 for expansion in the examples.
Furthermore the threshold parameter is 100 for "expansion" and "compression", but 60 for "noise gate"...
"Limit" does introduce audible saturation for signals above 0dBFS and I am wondering which paramters could prevent this. Lowering the speed parameter to values smaller than 50 improves this a bit. Is speed an inverse attack time parameter perhaps?
And I can't seem to make sense of the boost parameter.
Any hints are greatly appreciated! Thanks in advance!
Peter
As far as I can tell limiter design is a dark art. Here's one (that imposes a hard limit just within the (-1, 1) range - I made this for "music101" where I needed a hard limit and am assuming the input signal is a voice (so unlikely to have extremely fast attacks)...
cheers Miller
#N canvas 219 162 342 348 12; #N canvas 125 146 761 589 limiter 0; #X obj 61 108 inlet~; #X obj 75 135 abs~; #X obj 75 160 slop~ 0 0 5 0 1e+09; #X obj 74 192 *~ 10.1; #X obj 487 88 array define $0-limit 1000; #X obj 542 155 loadbang; #X obj 542 180 t b b; #X obj 542 205 1000; #X obj 542 230 until; #X obj 542 255 f; #X obj 574 255 + 1; #X obj 598 209 0; #X obj 542 280 t f f; #X obj 458 365 tabwrite $0-limit; #X obj 491 157 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 444 320 expr min(1 , 10/(max(1 , $f1))); #X obj 74 217 tabread4~ $0-limit; #X obj 61 249 *~; #X obj 61 276 outlet~; #X obj 241 107 inlet~; #X obj 255 134 abs~; #X obj 255 159 slop~ 0 0 5 0 1e+09; #X obj 254 191 *~ 10.1; #X obj 254 216 tabread4~ $0-limit; #X obj 241 248 *~; #X obj 241 275 outlet~; #X connect 0 0 1 0; #X connect 0 0 17 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 16 0; #X connect 5 0 6 0; #X connect 6 0 7 0; #X connect 6 1 11 0; #X connect 7 0 8 0; #X connect 8 0 9 0; #X connect 9 0 10 0; #X connect 9 0 12 0; #X connect 10 0 9 1; #X connect 11 0 9 1; #X connect 12 0 15 0; #X connect 12 1 13 1; #X connect 14 0 6 0; #X connect 15 0 13 0; #X connect 16 0 17 1; #X connect 17 0 18 0; #X connect 19 0 20 0; #X connect 19 0 24 0; #X connect 20 0 21 0; #X connect 21 0 22 0; #X connect 22 0 23 0; #X connect 23 0 24 1; #X connect 24 0 25 0; #X restore 88 148 pd limiter; #X f 11;
On Sat, Apr 24, 2021 at 10:46:04AM +0200, Peter P. wrote:
Hi list,
nice weather today, isn't it?
I am trying to understand the [pd compander-limiter] example from slop~'s help patch because I need a 0dBFS brickwall limiter as abstraction without externals.
When set to the "no change" parameters, the example will still saturate any signals hotter than 0dBFS.
I don't understand what the ratio parameter does, especially its unit and range. It is 100 for dynamic reduction and 200 for expansion in the examples.
Furthermore the threshold parameter is 100 for "expansion" and "compression", but 60 for "noise gate"...
"Limit" does introduce audible saturation for signals above 0dBFS and I am wondering which paramters could prevent this. Lowering the speed parameter to values smaller than 50 improves this a bit. Is speed an inverse attack time parameter perhaps?
And I can't seem to make sense of the boost parameter.
Any hints are greatly appreciated! Thanks in advance!
Peter
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://urldefense.com/v3/__https://lists.puredata.info/listinfo/pd-list__;!...
As far as I can tell limiter design is a dark art. Here's one (that imposes a hard limit just within the (-1, 1) range - I made this for "music101" where I needed a hard limit and am assuming the input signal is a voice (so unlikely to have extremely fast attacks)...
Thanks Miller, it seems that this implementation causes harmonic distortion to a (200Hz in my case) sine wave scaled to less than 0dBFS [*~ 0.9].
best, P
Ahhh, you noticed that "warm tube-compander" sound - producers pay top $ for that :)
I think it's pretty easy to get lower distortion by making the response curve exactly flat below maximum amplitude - I didn't do that in this application thinking that the limiting is going to kick in often and so there will often be distortion anyway... anyone who hits, say, 0.7 with any frequency is also going to hit 0 sometimes, and that will be the loudest sound where the distortion is also most noticeable.
It's possible to add a "blanking" interval like some analog solid-state limiters did. In digital, if you add "lookahead" (also known as "delay") you can do much, much better without having to think too hard (that's what Ableton's built-in compressor does; it won't do zero-delay at all).
For live applications I prefer to make them zero-delay, preferring some inevitable distortion to adding delay.
all part of the Dark Art (tm:)
Miller
On Mon, May 03, 2021 at 09:14:42AM +0200, Peter P. wrote:
- Miller Puckette via Pd-list pd-list@lists.iem.at [2021-04-24 17:45]:
As far as I can tell limiter design is a dark art. Here's one (that imposes a hard limit just within the (-1, 1) range - I made this for "music101" where I needed a hard limit and am assuming the input signal is a voice (so unlikely to have extremely fast attacks)...
Thanks Miller, it seems that this implementation causes harmonic distortion to a (200Hz in my case) sine wave scaled to less than 0dBFS [*~ 0.9].
best, P
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://urldefense.com/v3/__https://lists.puredata.info/listinfo/pd-list__;!...
here’s a basic compressor patch i made for class. you really want separate attack and decay controls (slow the attack to let initial transients through uncompressed, slow the decay to minimize pumping). also, varying the [env~] window can change the responsiveness.
a high threshold, high ratio, and pretty fast attack/decay is needed for limiting.
a good overview article with ideas for further compressor abstractions -
https://www.soundonsound.com/techniques/using-your-daws-compressors-limiters
On May 3, 2021, at 8:08 AM, Miller Puckette via Pd-list pd-list@lists.iem.at wrote:
Ahhh, you noticed that "warm tube-compander" sound - producers pay top $ for that :)
I think it's pretty easy to get lower distortion by making the response curve exactly flat below maximum amplitude - I didn't do that in this application thinking that the limiting is going to kick in often and so there will often be distortion anyway... anyone who hits, say, 0.7 with any frequency is also going to hit 0 sometimes, and that will be the loudest sound where the distortion is also most noticeable.
It's possible to add a "blanking" interval like some analog solid-state limiters did. In digital, if you add "lookahead" (also known as "delay") you can do much, much better without having to think too hard (that's what Ableton's built-in compressor does; it won't do zero-delay at all).
For live applications I prefer to make them zero-delay, preferring some inevitable distortion to adding delay.
all part of the Dark Art (tm:)
Miller
On Mon, May 03, 2021 at 09:14:42AM +0200, Peter P. wrote:
- Miller Puckette via Pd-list pd-list@lists.iem.at [2021-04-24 17:45]:
As far as I can tell limiter design is a dark art. Here's one (that imposes a hard limit just within the (-1, 1) range - I made this for "music101" where I needed a hard limit and am assuming the input signal is a voice (so unlikely to have extremely fast attacks)...
Thanks Miller, it seems that this implementation causes harmonic distortion to a (200Hz in my case) sine wave scaled to less than 0dBFS [*~ 0.9].
best, P
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://urldefense.com/v3/__https://lists.puredata.info/listinfo/pd-list__;!...
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
tom erbe - tre@soundhack.com professor - uc san diego | founder - soundhack
i made this thingie, "pp.dynamics~.pd". It uses slop~ for attack
release, "lookahead" and Katja's Pd implementation of Olli Niemitalo's
quadrature transformer for fast peak detection.
https://www.katjaas.nl/compander/compander.html optionally if you
wish, you can have the warm analog distortion as well.
it's pretty decent, check it out. you can find it in the "audiolab" library via deken.
Quoting Miller Puckette via Pd-list pd-list@lists.iem.at:
Ahhh, you noticed that "warm tube-compander" sound - producers pay top $ for that :)
I think it's pretty easy to get lower distortion by making the response curve exactly flat below maximum amplitude - I didn't do that in this application thinking that the limiting is going to kick in often and so there will often be distortion anyway... anyone who hits, say, 0.7 with any frequency is also going to hit 0 sometimes, and that will be the loudest sound where the distortion is also most noticeable.
It's possible to add a "blanking" interval like some analog solid-state limiters did. In digital, if you add "lookahead" (also known as "delay") you can do much, much better without having to think too hard (that's what Ableton's built-in compressor does; it won't do zero-delay at all).
For live applications I prefer to make them zero-delay, preferring some inevitable distortion to adding delay.
all part of the Dark Art (tm:)
Miller
On Mon, May 03, 2021 at 09:14:42AM +0200, Peter P. wrote:
- Miller Puckette via Pd-list pd-list@lists.iem.at [2021-04-24 17:45]:
As far as I can tell limiter design is a dark art. Here's one
(that imposes
a hard limit just within the (-1, 1) range - I made this for
"music101" where
I needed a hard limit and am assuming the input signal is a voice
(so unlikely
to have extremely fast attacks)...
Thanks Miller, it seems that this implementation causes harmonic distortion to a (200Hz in my case) sine wave scaled to less than 0dBFS [*~ 0.9].
best, P
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management ->
https://urldefense.com/v3/__https://lists.puredata.info/listinfo/pd-list__;!...
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management ->
https://lists.puredata.info/listinfo/pd-list