@oid It's getting better and better! The tanh soft clipper adds a nice grit to the sound
Is there a specific reason for setting the feedback delay to 10 samples? I would think 1 sample delay to be ideal?
I still prefer having signal rate frequency control. There are several ways to achieve this besides the filter I posted previously. The classic one pole low pass equation is y[n] = y[n-1] + a * (x[n] - y[n-1])
. That was what I based my filter on (with a few tricks to minimize computation exploiting the fact that each filter should also be inverted). You could do this with [fexpr~] as well (and [rpole~] too).
Testing impulse response against [lop~] there is a slight difference (very tiny) in output amplitude, which I reckon is either because of difference in filter coefficient calculation or [lop~] gaining the outlet slightly as mentioned in H01.low.pass.pd: The lop~ object is normalized to pass DC (the lowest frequency) with a gain of one
However, looking at the source code for [lop~] ( https://github.com/pure-data/pure-data/blob/master/src/d_filter.c ) the coefficient is calculated the same way as I did it though: coef= F(Hz) * 2PI / samplerate
. I can't seem to find any "normalizing" function, and the central filter equation is: y[n] = a*x[n] + (1-a)*y[n-1]
, essentially the same as y[n] = y[n-1] + a * (x[n] - y[n-1])
.
Here are two [lop~] alternatives with signal rate frequency input for you to try out: Alternative_lop.zip