Page 1 of 1

The Zip Filter (experimental and improvable)

PostPosted: Mon Jul 24, 2023 6:51 pm
by Tepeix
Here's what i call the Low Pass Zip Filter.
Don't know if this structure already exist ? ChatGpt don't know it, and i didn't find equivalence.

It seams to stay stable. But the way i calculate coefficient is very special...

Any idea of how i could make it more classical or precise ??)

One drawback is that the slope would decrease after 1/4 nyquiest frequency.
For now the Q control is a little experimental.. It might be adjusted according to the frequency..

So coefficient of the first order is simply sin(freq/SR*pi).
Then each coefficient is derivated from the precedent in a very special and complex to describe way...)

Héhé any idea to improve this strange thing ?)

Re: The Zip Filter (experimental and improvable)

PostPosted: Tue Jul 25, 2023 1:23 pm
by Tepeix
A little upgrade.

The big problem was a bug in the Q system.
When using a graph and multiple module instead of a single code, the graph could introduce a delay of one sample somewhere, then not represent the true reality; and it was the case.
But without this error i never get the idea to introduce a delay here, which i find cool, but maybe not classic,
as the Q will only have effect when there's some cutoff attenuation.. Which depend on sample rate..

Also i fix a little the way coefficient are calculated, just adding more curve in the way they interpolate between x2,x1,or another value, it help to get the same slope when at different cutoff.
So now the filter reach is slope at 1/2 nyquiest. And the Q seams more constant but not completely..

Re: The Zip Filter (experimental and improvable)

PostPosted: Fri Jul 28, 2023 1:25 pm
by Tepeix
I find a better way to calculate the coefficients. Yet it's still strange.

So each coefficient is again derived from the next one in this way:

C1 = ((1-C0)*C0*param)+C0 where param might be choose carefully..

But an adjustment might be made when the cutoff are lower.
The parameter of C1 might slide from 0.59 to 0.99, adding to it (1-C0)^4 * 0.4..
(would maybe be better to adjust all in this way..)

Héhé that's strange, but it works, keeping the slope almost identical when changing cutoff..

I wonder what are the mathematics that make it works ? As i just observe some behaviors without really understanding it...

Then i go for higher order, but i spot a precision problem related to the dnorm value..
When using higher sample rate it begin to blow up at lower cutoff..
That's where i thing about some scaling, to avoid this.. Multiply then redivide before more th... :shock: :?:
But it imply some experiment.. To see how it could be done avoiding dnorm and instability if possible..

Well an experimental and strange way..