I'm assuming that I'd have to build an approximation in plugdata, is that correct? Do you have any suggestions on how to begin? I started stacking up a bunch of [vcf~] but had that strong "I have no idea what I'm doing" feeling.
-
iemlib/vcf_hp4~ in plugdata?
-
@jameslo With just vanilla objects that's gonna be difficult, because you'd have to use the raw filters like [cpole~]. Since the iemlib filter is a series of two 2nd order filters, my first guess would be to do the same with ELSE's [highpass~], which is also 2nd order. Its exact formula might be different though.
Edit: It actually seems to be the same, but you also have to take the square root of the Q factor!
-
@manuels Oh thanks! I missed else/highpass~
It actually seems to be the same
Teach a man to fish: you know this because you looked at source code, or some other way?
but you also have to take the square root of the Q factor!
Oh look, and they take the cube root for vcf_hp6~ when they chain 3 filters. I wasn't aware that Q worked that way. Do you know what they are doing with the cutoff freq signal, [iem_cot4~]?
Edit: just built it and listened on the cue I used to run live in Pd--I would not have been able to tell the difference blindfolded. Thanks again.
-
@jameslo said:
Teach a man to fish: you know this because you looked at source code, or some other way?
I just compared the output of both filters, and it turned out to be exactly the same.
Oh look, and they take the cube root for vcf_hp6~ when they chain 3 filters. I wasn't aware that Q worked that way. Do you know what they are doing with the cutoff freq signal, [iem_cot4~]?
Not sure if you can say in general that Q works this way. It might depend on how the filter is normalized. [vcf~], for example, has unit gain at the resonant frequency, but other filters produce higher gains at the resonant frequency. So if you put them in series the gains potentiate, and there has to be some compensation for that. What the [iem_cot4~] does, I don't know. Unfortunately I can't read C code.
-
Yeah, the bunch of filter abstractions in iemlib just build higher order filters by stacking 2nd order filters in cascade. The same can be done with ELSE's filters or any other.