hi list,
here's a limiter patch but it doesn't work.
i can calculate a limitation for decibels, but how can i adjust it to the original signal? and is it possible to avoid any click?
thanx for hints. mirko
#N canvas 603 162 1007 794 12; #X floatatom 426 284 5 0 0 0 - - -; #X obj 174 585 *~; #X floatatom 375 230 5 0 0 0 - - -; #X obj 375 196 env~ 64; #X obj 174 140 *~; #X obj 173 38 osc~ 440; #X obj 237 96 pipe 10; #X msg 244 58 4; #X msg 278 58 0.5; #X obj 276 21 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X floatatom 402 87 5 0 0 0 - - -; #X floatatom 426 345 5 0 0 0 - - -; #X floatatom 321 404 5 0 0 0 - - -; #X obj 298 374 *; #X floatatom 349 457 5 0 0 0 - - -; #X obj 301 638 env~ 64; #X obj 175 261 z~ 64; #X obj 375 255 moses 90; #X obj 426 312 expr 90/$f1; #X text 395 387 1st question:; #X text 299 21 <- 2nd question: is it possible to really get no click? ; #X text 390 414 it's no problem to limit the number stream (limit is 90db); #X text 420 453 but it should be the same here! how convert?; #X text 66 38 test signal; #X text 454 86 any amplification , e.g. 2; #X obj 173 732 dac~; #X connect 0 0 18 0; #X connect 1 0 15 0; #X connect 1 0 25 0; #X connect 1 0 25 1; #X connect 2 0 13 0; #X connect 2 0 17 0; #X connect 3 0 2 0; #X connect 4 0 3 0; #X connect 4 0 16 0; #X connect 5 0 4 0; #X connect 6 0 4 1; #X connect 7 0 4 1; #X connect 8 0 6 0; #X connect 9 0 7 0; #X connect 9 0 8 0; #X connect 10 0 4 1; #X connect 11 0 13 1; #X connect 11 0 1 1; #X connect 13 0 12 0; #X connect 15 0 14 0; #X connect 16 0 1 0; #X connect 17 1 0 0; #X connect 18 0 11 0;
Hi Mirko,
Is there any reason not to use [limiter~] (i.e. to stay Vanilla)?
To avoid clicks, look at:
[num
|
[pack 0 50]
|
[line~]
where 50 can be replaced with the interpolation time you choose to avoid discontinuities. Output of [line~] can go to right inlet of [*~]. Using discreet messages to manipulate an audio signal (as you have done at the final [*~] in your patch) will certainly give clicks.
Details on using [line~] here:
http://en.flossmanuals.net/PureData/Amplifier
below peak-to-peak amplitude" (from the [env~] help patch). For a limiter you are definitely interested in the peaks and not the average!!!!
everything in the audio domain rather than switching between audio and messages through signal analysis (for the reason I wrote above...discrete messages give clicks). Again, [limiter~] would be the best choice here.
best! D.
Mirko Maier wrote:
hi list,
here's a limiter patch but it doesn't work.
i can calculate a limitation for decibels, but how can i adjust it to the original signal? and is it possible to avoid any click?
thanx for hints. mirko
#N canvas 603 162 1007 794 12; #X floatatom 426 284 5 0 0 0 - - -; #X obj 174 585 *~; #X floatatom 375 230 5 0 0 0 - - -; #X obj 375 196 env~ 64; #X obj 174 140 *~; #X obj 173 38 osc~ 440; #X obj 237 96 pipe 10; #X msg 244 58 4; #X msg 278 58 0.5; #X obj 276 21 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X floatatom 402 87 5 0 0 0 - - -; #X floatatom 426 345 5 0 0 0 - - -; #X floatatom 321 404 5 0 0 0 - - -; #X obj 298 374 *; #X floatatom 349 457 5 0 0 0 - - -; #X obj 301 638 env~ 64; #X obj 175 261 z~ 64; #X obj 375 255 moses 90; #X obj 426 312 expr 90/$f1; #X text 395 387 1st question:; #X text 299 21 <- 2nd question: is it possible to really get no click? ; #X text 390 414 it's no problem to limit the number stream (limit is 90db); #X text 420 453 but it should be the same here! how convert?; #X text 66 38 test signal; #X text 454 86 any amplification , e.g. 2; #X obj 173 732 dac~; #X connect 0 0 18 0; #X connect 1 0 15 0; #X connect 1 0 25 0; #X connect 1 0 25 1; #X connect 2 0 13 0; #X connect 2 0 17 0; #X connect 3 0 2 0; #X connect 4 0 3 0; #X connect 4 0 16 0; #X connect 5 0 4 0; #X connect 6 0 4 1; #X connect 7 0 4 1; #X connect 8 0 6 0; #X connect 9 0 7 0; #X connect 9 0 8 0; #X connect 10 0 4 1; #X connect 11 0 13 1; #X connect 11 0 1 1; #X connect 13 0 12 0; #X connect 15 0 14 0; #X connect 16 0 1 0; #X connect 17 1 0 0; #X connect 18 0 11 0;
Hallo, Derek Holzer hat gesagt: // Derek Holzer wrote:
- Is there any reason not to use [limiter~] (i.e. to stay Vanilla)?
Staying vanilla can be a pretty good reason e.g. if you want your patch to run on RjDj, too. OTOH the rj-library already contains a (vanilla) limiter with [e_dynproc] which also acts as noisegate, compressor and expander.
Frank
Hey Frank,
I was curious his reasons, but no value judgment implied ;-)
I figured either he wanted to stay Vanilla or he was experimenting with building from low level objects as an exercise.
Actually it's past time that I take a spin through rj-library just to see how things are handled with only vanilla. If only there was time... sigh....
Does the rj-lib limiter do everything in audio domain, or does it also use [env~]?
D.
Frank Barknecht wrote:
Hallo, Derek Holzer hat gesagt: // Derek Holzer wrote:
- Is there any reason not to use [limiter~] (i.e. to stay Vanilla)?
Staying vanilla can be a pretty good reason e.g. if you want your patch to run on RjDj, too. OTOH the rj-library already contains a (vanilla) limiter with [e_dynproc] which also acts as noisegate, compressor and expander.
Ciao
Hallo, Derek Holzer hat gesagt: // Derek Holzer wrote:
Actually it's past time that I take a spin through rj-library just to
see how things are handled with only vanilla. If only there was time...
sigh....Does the rj-lib limiter do everything in audio domain, or does it also
use [env~]?
It also uses [env~].
Frank
Hi Derek,
- Is there any reason not to use [limiter~] (i.e. to stay Vanilla)?
I would like to understand it! And [limiter~] also produces a dampening not in the right moment (my 2nd question).
- To avoid clicks, look at:
[num
| [pack 0 50] | [line~]
That doesn't work in my patch, there is still a big peak when i give a short (10 ms) loud sound.
- [env~] gives "RMS amplitude which (for a sinusoid) is about 3 dB
below peak-to-peak amplitude" (from the [env~] help patch). For a limiter you are definitely interested in the peaks and not the average!!!!
Ok, so which object can be used for that?
- For something like a limiter, you might want something which does
everything in the audio domain rather than switching between audio and messages through signal analysis (for the reason I wrote above...discrete messages give clicks). Again, [limiter~] would be the
Of course, that would be good. Isn't that possible with pd vanilla or at least with a selfmade-patch using objects from pd extended?
cheers mirko
best choice here.
best! D.
Mirko Maier wrote:
hi list,
here's a limiter patch but it doesn't work.
i can calculate a limitation for decibels, but how can i adjust it to
the original signal? and is it possible to avoid any click?
thanx for hints. mirko
#N canvas 603 162 1007 794 12; #X floatatom 426 284 5 0 0 0 - - -; #X obj 174 585 *~; #X floatatom 375 230 5 0 0 0 - - -; #X obj 375 196 env~ 64; #X obj 174 140 *~; #X obj 173 38 osc~ 440; #X obj 237 96 pipe 10; #X msg 244 58 4; #X msg 278 58 0.5; #X obj 276 21 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X floatatom 402 87 5 0 0 0 - - -; #X floatatom 426 345 5 0 0 0 - - -; #X floatatom 321 404 5 0 0 0 - - -; #X obj 298 374 *; #X floatatom 349 457 5 0 0 0 - - -; #X obj 301 638 env~ 64; #X obj 175 261 z~ 64; #X obj 375 255 moses 90; #X obj 426 312 expr 90/$f1; #X text 395 387 1st question:; #X text 299 21 <- 2nd question: is it possible to really get no click? ; #X text 390 414 it's no problem to limit the number stream (limit is 90db); #X text 420 453 but it should be the same here! how convert?; #X text 66 38 test signal; #X text 454 86 any amplification , e.g. 2; #X obj 173 732 dac~; #X connect 0 0 18 0; #X connect 1 0 15 0; #X connect 1 0 25 0; #X connect 1 0 25 1; #X connect 2 0 13 0; #X connect 2 0 17 0; #X connect 3 0 2 0; #X connect 4 0 3 0; #X connect 4 0 16 0; #X connect 5 0 4 0; #X connect 6 0 4 1; #X connect 7 0 4 1; #X connect 8 0 6 0; #X connect 9 0 7 0; #X connect 9 0 8 0; #X connect 10 0 4 1; #X connect 11 0 13 1; #X connect 11 0 1 1; #X connect 13 0 12 0; #X connect 15 0 14 0; #X connect 16 0 1 0; #X connect 17 1 0 0; #X connect 18 0 11 0;
-- ::: derek holzer ::: http://blog.myspace.com/macumbista ::: http://www.vimeo.com/macumbista ::: ---Oblique Strategy # 117: "Make it more sensual"
Hallo, Mirko Maier hat gesagt: // Mirko Maier wrote:
- Is there any reason not to use [limiter~] (i.e. to stay Vanilla)?
I would like to understand it! And [limiter~] also produces a dampening not in the right moment (my 2nd question).
- To avoid clicks, look at:
[num
| [pack 0 50] | [line~]That doesn't work in my patch, there is still a big peak when i give a short (10 ms) loud sound.
... which is normal, because your input signal has a short click, too. A limiter will not elimiate clicks of arbitrary shortness. A lowpass filter does that or a clipper.
- [env~] gives "RMS amplitude which (for a sinusoid) is about 3 dB
below peak-to-peak amplitude" (from the [env~] help patch). For a limiter you are definitely interested in the peaks and not the average!!!!
A limiter does not fully eliminate peaks (see above). If you *really* want everything be below the cliping range, you would use [clip~ -1 1]. But that would not sound right and would give distortion. You can still use clip~ after the limiter if you want to be extra cautious. But any "real" limiter will use an analysis over a certain number of samples and calculate the average of that to change the volume.
Anyway you should definitely declick the limiting operation as well the way Derek described, i.e. with a line~. Limiters and compressors generally let you configure the interpolation time with controlls like attack and release times.
Attached is a declicked version of your patch, which also has an input declicker.
You can find e_dynproc in the rj librarya here: http://trac.rjdj.me/browser/trunk/rjlib/rj
Frank