Integrator filter with delayless feedback path

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

rola wrote:
neotec wrote:
ralphb wrote:Did you make any headway with the highpass filter?
Yep, after going through all the stuff again, I finally have got a 24dB resonant highpass filter ... my filter feedback path calculations were faulty^^
Can you show how to make a one pole highpass filter?
You just pick the signal at the negative feedback point of the 1-pole lowpass. So you have a multimode 1-pole filter (LP and HP outputs at the same time).

BTW, I'm not sure about the DFII transposed BL integrator. Isn't the transpose the same as the original (should be)? Or was it about a different thing? (no time to read the whole thread)

Regards,
{Z}

Post

Z1202 wrote:BTW, I'm not sure about the DFII transposed BL integrator. Isn't the transpose the same as the original (should be)? Or was it about a different thing? (no time to read the whole thread)

Regards,
{Z}
DF II
Image
Transposed DF II
Image

I don't remember why I chose DF II transposed, but I think it was the best looking thing ... ^^
... when time becomes a loop ...
---
Intel i7 3770k @3.5GHz, 16GB RAM, Windows 7 / Ubuntu 16.04, Cubase Artist, Reaktor 6, Superior Drummer 3, M-Audio Audiophile 2496, Akai MPK-249, Roland TD-11KV+

Post

neotec wrote:
Z1202 wrote:BTW, I'm not sure about the DFII transposed BL integrator. Isn't the transpose the same as the original (should be)? Or was it about a different thing? (no time to read the whole thread)

Regards,
{Z}
DF II
Transposed DF II

I don't remember why I chose DF II transposed, but I think it was the best looking thing ... ^^
I thought we are talking about the BL integrator, in which case I think both forms coincide. Nevermind then.

Post

Hi guys, sorry for some necrophilia, but may I ask a question about this?:

Code: Select all

out = lastout; 
DO 
 copyRealFilterBuffersToTemp(); 
 newout = tempFilter(input - out * r); 
 IF ABS(newout - out) < epsilon THEN 
  copyTempBuffersToFilter(); 
  out = newout; 
  BREAK    // we're done, exit the loop 
 ENDIF 
 // epsilon was not reached, continue iteration 
 out = newout; 
LOOP 
lastout = out;
The code above uses iterative approach to find value of out. But..., what is the reason here for implementing an iterative approach but not just calculate out once?

Let me show what I mean:

Suppose we have this simple filter:

Code: Select all

out = (input - lastOut) / 2;
Wouldn't be right instead of lastOut just calculate out once and use that instead of lastOut? Like this:

Code: Select all

outTemp = (input - lastOut) / 2;
out = (input - outTemp) / 2;
Or same as:

Code: Select all

out = (input - (input - lastOut) / 2) / 2;
Why outTemp is not the final value we want? So why to iterate or what is logic behind that?

Post

V@dim wrote:The code above uses iterative approach to find value of out. But..., what is the reason here for implementing an iterative approach but not just calculate out once?
Because tempFilter() may be non-linear, at which point it may become impossible to algebraically solve for the value of out. So you can't compute the final value of out analytically.

Post

ralphb wrote:
V@dim wrote:The code above uses iterative approach to find value of out. But..., what is the reason here for implementing an iterative approach but not just calculate out once?
Because tempFilter() may be non-linear, at which point it may become impossible to algebraically solve for the value of out. So you can't compute the final value of out analytically.
Hmm, now I see :).... I'm quite fascinated with these zero-feedback filters, but as usual dsp stuff, have trouble to understand this, so thanks for the answer, now this will be a bit easier :)

Post

neotec: i still don't fully understand this voodoo here

your 1st order LP/HP filters use a "fixed" sample prediction which is of 1 iteration at all times?
while the other post proposes the iteration method..

got lots of questions and i still don't get how this works exactly

1) your HP and LP filters, what can be done with them? can they be added together to form a cascaded filter? i guess yes, but then, i think feedback from the last stage to the first won't work without extra code, right?

2) the iterative method - filter buffers you mean the memory? x1 y1 y2 and so on, right?
as far as i understand, for each sample, you use a temporary "filter"
you copy the memory variables from the original filter
then you process 1 sample with the temporary filter, but you don't let it store what it usually has to store in it's memory buffers
then you check it's output..

at first i thought you process with a temporary filter, but i didn't notice you reset the memory every time, and i thought it would begin to resonate (depending on parameters) which seemed to not make sense..
but now it looks like you're processing the thing but NOT letting it resonate, this does make a bit sense if i'm right..

it still amazes me, how can you "predict" the output, my brain simply shuts down
It doesn't matter how it sounds..
..as long as it has BASS and it's LOUD!

irc.libera.chat >>> #kvr

Post

it still amazes me, how can you "predict" the output, my brain simply shuts down
I think it's something like this:

Code: Select all

outTemp = (input - lastOut) / 2; 
out = (input - outTemp) / 2;
But in another form... (Haven't read KeepTopology stuff because of busyness yet, so I may be wrong about that, I wonder where I get capability and time to read and to understand the paper)

Post

Just a quick note here. In doing the iterative approach one has to be careful and consider the convergence of the iteration. At extreme filter settings the most obvious kind of iteration (simple iteration) may fail to converge even in the linear case. Other iterative approaches have their own limitations as well. Even the trapezoidal integration (=bilinear transform) itself has similar problems, which again show up at the extreme settings.

Regards,
{Z}

Post

Z1202 wrote:Just a quick note here. In doing the iterative approach one has to be careful and consider the convergence of the iteration. At extreme filter settings the most obvious kind of iteration (simple iteration) may fail to converge even in the linear case. Other iterative approaches have their own limitations as well. Even the trapezoidal integration (=bilinear transform) itself has similar problems, which again show up at the extreme settings.

Regards,
{Z}
Yes, I too have found this using the iterative approach. At standard settings it only takes around four iterations but at more extreme settings it can take anything upto 50 iterations. Oversampling and having a good starting prediction help though.

Post

Caco wrote:
Z1202 wrote:Just a quick note here. In doing the iterative approach one has to be careful and consider the convergence of the iteration. At extreme filter settings the most obvious kind of iteration (simple iteration) may fail to converge even in the linear case. Other iterative approaches have their own limitations as well. Even the trapezoidal integration (=bilinear transform) itself has similar problems, which again show up at the extreme settings.

Regards,
{Z}
Yes, I too have found this using the iterative approach. At standard settings it only takes around four iterations but at more extreme settings it can take anything upto 50 iterations. Oversampling and having a good starting prediction help though.
You're right. However I was talking about the case where the iteration fails to converge at all. I also guess that you can "oversample" just the iteration itself (which probably could be done by inserting an LPF into the feedback loop during the iteration, never tried this though) to mitigate the convergence problems.

Regards,
{Z}

Post

i'm not sure that neotec is all that frequent a visitor, or inclined to check private messages..

i'd like to use a filter derived from this thread, please contact me before your attorney does :) i'd also like to know, if permitted, what form of credit you would like.

thank you for this discussion.!
you come and go, you come and go. amitabha neither a follower nor a leader be tagore "where roads are made i lose my way" where there is certainty, consideration is absent.

Post Reply

Return to “DSP and Plugin Development”