On Sam, 2018-02-03 at 02:47 +0000, Dario Sanfilippo wrote:
Thanks, Roman.
On 2 February 2018 at 21:28, Roman Haefeli reduzent@gmail.com wrote:
On Fre, 2018-02-02 at 18:31 +0000, Dario Sanfilippo wrote:
There's an implementation of a peak holder in this blog
post: http://
dariosanfilippo.tumblr.com/post/162523174771/lookahead-limiting-
in-
pure-data. I remember testing it but please let me know if you
find a
bug.
Very nice write up. Thanks for sharing.
The current peak is replaced to whatever the input is after a
desired
time, and the counter is reset whenever a new peak is found. It should be easy to change it so that the peak is reset
periodically.
It's not exactly equivalent with what I've asked, since your implementation only takes new peaks into account after the hold period has ended.
Perhaps my wording in the previous email was confusing: what happens is that every new peak will update the output immediately, and whenever that happens the countdown starts so that, should no other peak be detected after that time, the output will be set to whatever the input is in that moment.
Assume an input signal consisting of a series of 1-sample impulses with a period that is slightly lower than the hold period. The output signal has a gap before each second impulse. For the use case in your article (which is also the use case I'm interested in), that doesn't matter much, because the peak holder signal is fed to a peak enveloper which somewhat masks those gaps.
In that case, we should expect a full-amp DC out of the peak holder for the impulses are faster than the hold time, and that's what we actually get:
Yes, correct. If the peaks reach the same level or are higher than the ones before, then the hold period is prolonged. But when they have less amplitude than the ones before, gaps appear. See:
https://netpd.org/~roman/tmp/peakholder_gaps.png
With a true max(x[0-(-N)], a downward stairway would appear and there wouldn't be any gaps.
As I said, that is only small difference and for the purpose of a look- ahead limiter it probably doesn't matter that much.
Roman