
manuels
@lacuna Just because anyone else has replied yet ...
I don't really understand the code of IEMlib's [filter~] but I'm pretty sure that it is indeed a biquad filter, that is: if the filter (defined by the first argument) is second order. First order filters use a similar but cheaper algorithm. Higher order filters are implemented as a cascade of first and second order sections depending on whether the filter order is even or uneven.
To get the biquad coefficients right, it's important to notice the differences in implementation. (There has been confusion in the past because Max and Pd use different implementations.) Both Pd's [biquad~] and IEMlib's [filter~] seem to use DirectForm II, but I'm not sure about that.

manuels
@ddw_music Maybe [player~] from the ELSE library could be an option?

manuels
@beep.beep Instead of using a send symbol for the routing to the two outlets, couldn't you just use the plain old [route] object with a preceding [list prepend]?

manuels
@ddw_music said:
Wouldn't surprise me at all if lop2~'s behavior is identical to RLPF's.
But ELSE's [lop2~] isn't even a resonant filter, just a first order lowpass filter! I think it's just named "lop2~" because "lop~" is already used in Pd Vanilla, kinda misleading though.
The resonant lowpass filter in ELSE is called [lowpass~]. Checking its help file, I noticed a somewhat strange preset range for the resonance/Q parameter. (Maybe that's also an issue in SC's RLPF?) Values smaller than 0.5 don't seem all too reasonable to me because the filter is then "overdamped" and the actual cutoff frequency drops far below the specified frequency. In some filters Q = 0.5 is therefore simply defined as zero resonance, which probably adds to the confusion ...
Edit: It's even worse than that, because there are also two different definitions of the Q factor. (Here, I was refering to the "physical" rather than the bandwidth definition.)
Another edit: In the ELSE tutorial only the bandwidth definition of Q is given (or maybe I just overlooked something?). But in Robert BristowJohnson's Audio EQ Cookbook, which is the source for some of ELSE's filters, the physical / electrical engineering definition is used. So there might really be a bit of confusion. Or is it just me confusing things here?

manuels
Here's an updated version of the polezero diagram I posted two years ago:
Unfortunately, I didn't know about ELSE back then. As you probably know, it has frequency response and polezero plots as well, and there's also a section about the Zplane in the wonderful liveelectronics tutorial. In fact, these are the main reasons, why I decided to update my patch.
So the new version of my polezero diagram has two additional features: First, you can now switch between linear and logarithmic scaling of both amplitude and frequency, and second, I added some examples of standard filter types, so that you can also see the effect of changing a filter's parameters on the positions of its poles and zeros.
I hope this may be helpful for some of you. If something's wrong with the patch or the filter examples, please tell me!

manuels
@ddw_music Thanks for the link! Should probably read the SC forum more often ... This is indeed an exact explanation for what's going on in my version of the filter: As I said, I just used the Butterworth calculation of the filter coefficients, and therefore linear frequency in the Splane is mapped into the Zplane using the bilinear transform and frequency warping. Remains the question: What's the disadvantage of this mapping? There must be one, I guess ...
The main reason for asking this question was this: I'm going to post a little update to my polezero diagram with some examples, which I all implemented using BLT, and I'm just not sure whether that's a good way to do this.

manuels
Haha, yes, it takes some time to get into that. And after a few years it's still like if you're just scratching the surface ...

manuels
Still don't fully understand ... Maybe it's just an approximation for computational reasons?
If I plot the feedback coefficient of both versions of the filter, it looks like this:
So for frequencies up to about 1500 Hz the approximation works pretty well, for higher frequencies there's an increasing error, and for frequencies above 2 radians the filter has no action at all (as it says in the help file).
Or maybe I'm completely missing the point ...
Edit: Actually the help file for ELSE's [lop2~] only says that the filter has no action "as you reach nyquist", which is of course true for the filter with the exact coefficient as well.

manuels
I stumbled on this while trying to finally understand the Butterworth filter in the Pd audio examples (see "H13.butterworth.pd"). Studying the calculation of the filter coefficients I was wondering how the locations of the real pole and zero were different from those of the 1st order filter. So I compared it with a onepole, onezero lowpass filter, ELSE's [lop2~].
Well, yes, there are differences ... But here's the strange thing: My filter with the coefficients calculated exactly like in the Butterworth filter behaves as I would have expected, whereas ELSE's [lop2~] doesn't work too well in the high frequency range. This is even stated in the help file.
Here's how I tested the filter: lop2test.pd
Can anyone explain this? Am I missing something?

manuels
@jameslo said:
@manuels So judging from your patch, it's not essential to have all waveshaped noise output samples be either 0 or positive?
It's certainly not essential, maybe not even preferable, but I'm not sure about that. Wouldn't a purely positive valued signal produce DC if there was some in the signal it's getting convolved with?