You are probably already using Zero Delay Feedback filters, so let your customers know!

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

andy-cytomic wrote:PS: calling something "topology preserving" is useful, but please remember that the chamberlin svf is topology preserving, and it is an explicit method.
By Vadim's definition, the Chamberlin SVF isn't topology preserving.

Only because state and "feedback state" fall into the same position doesn't make them the same thing. In fact the example in the book even uses extra variables D1 and D2 (D for "Delay") to distinguish them from the actual LP and BP output.

Post

Urs wrote:Here's my point: As soon as you modulate coefficients in a biquad filter, you break it. Then the change of coefficients propagates through the "state" with unit delays. A ZDF filter doesn't suffer form that problem. Because any state variabale at any time is calculated with a set of coefficients that's corresponds to that point of time. Sorry I can't express this in any more useful terms.
This is a biqaud filter: http://en.wikipedia.org/wiki/Electronic ... uad_filter

In this context I am assuming you mean a direct form digital biquad. If that is the case then yes I agree that these structures only work for the linear time invariant case, so you should not move the cutoff or even change the resonance without first clearing the state and starting from a well known zero "power on" state.

Since a direct form digital biqaud is a ZDF filter I am assuming you are talking about an implicitly integrated filter that preserves the original circuit topology, so basically the kinds of algorithms used in circuit simulators like spice. If this is the case then yes I agree that these model very well how analog filters sound when they are modulated.

What is your point? What has this got to do with "zero delay feedback"?

For example you can have a passive RC filter that has no feedback, but you can form a digital model of this system that sounds identical to the model formed by an active circuit that does have feedback. For one filter you can use the term "zero delay feedback" for the other you can't, but they both sound identical. Doesn't that ring alarm bells?

I have a worked example showing the equivalence of the passive RC vs the active one pole low pass here:

www.cytomic.com/files/dsp/OnePoleLinearLowPass.pdf

Why should one be blessed with the term "zero delay feedback filter" and the other not when they both sound bit for bit identical?
The Glue, The Drop, The Scream - www.cytomic.com

Post

Urs wrote:
andy-cytomic wrote:PS: calling something "topology preserving" is useful, but please remember that the chamberlin svf is topology preserving, and it is an explicit method.
By Vadim's definition, the Chamberlin SVF isn't topology preserving.

Only because state and "feedback state" fall into the same position doesn't make them the same thing. In fact the example in the book even uses extra variables D1 and D2 (D for "Delay") to distinguish them from the actual LP and BP output.
The chamberlin SVF certainly preserves the topology of the original circuit. The voltages of the two capacitors of the SVF are numerically integrated using explicit methods. Those voltages are propagated through the digital model in the same paths as the original circuit, so the topology is indeed preserved. Just because the method is explicit doesn't disqualify it from being topology preserving. For low cutoff frequencies the Chamberlin SVF is a very accurate topology preserving analog modelled filter. It is also numerically unstable with high cutoff and low resonance.
The Glue, The Drop, The Scream - www.cytomic.com

Post

andy-cytomic wrote:
Why should one be blessed with the term "zero delay feedback filter" and the other not when they both sound bit for bit identical?
Isn't that the point of it all? Some digital filters can have a feedback path solved with or without a unit delay, others can't. Quite funnily - or maybe coincidentally - former ones lend themselves to add non-linearities, latter ones don't. As we moved past linear filters for modeling analogue filters long time ago, it's common sense to assume that any word about implementation of analogue filter behaviour refers to former ones. I have nothing else to contribute here.

Post

Urs wrote:
andy-cytomic wrote:
Why should one be blessed with the term "zero delay feedback filter" and the other not when they both sound bit for bit identical?
Isn't that the point of it all? Some digital filters can have a feedback path solved with or without a unit delay, others can't. Quite funnily - or maybe coincidentally - former ones lend themselves to add non-linearities, latter ones don't. As we moved past linear filters for modeling analogue filters long time ago, it's common sense to assume that any word about implementation of analogue filter behaviour refers to former ones. I have nothing else to contribute here.
Urs the problem here is "feedback". Some non-linear filters don't have it, they are just as "hard" to solve as ones that do. I posted an example of the linear case, but equally I could take a single non linear one pole section from the MS-20 mk1 filter core and do the same thing. Why should one non-linear filter be blessed with the term "zero delay feedback filter" and the other not, they are both just as hard to solve since they both form non-linear implicit equations.
The Glue, The Drop, The Scream - www.cytomic.com

Post

if someone said that a beverage was fit for a king and it turns out that the beverage in question was a chocolate milk then people will start asking questions like "so is chocolate milk fit for a king, or is this chocolate milk somehow different from the rest"

those are the two discussions that need to be discussed one at a time but you developers are somehow cluster f**king that simple equation of 1+1
miedex

Post

http://en.wikipedia.org/wiki/Chocolate#Etymology

It is fit for kings, only you'd probably want to leave out those bizarre milk and sugar bits and replace them maybe with some chilli peppers, vanilla and achiote.

Although I suppose milking is the law:
Free plug-ins for Windows, MacOS and Linux. Xhip Synthesizer v8.0 and Xhip Effects Bundle v6.7.
The coder's credo: We believe our work is neither clever nor difficult; it is done because we thought it would be easy.
Work less; get more done.

Post

aciddose wrote: Although I suppose milking is the law:
I can't unsee that now.

Post

Instead of arguing, why don't a few of you smartish guys figure out a Zero-Delay Feedback Allpass Delay for me? I'll call it 0dffad™. kthxbi.

(in all seriousness, I have used normalized allpass lattice delays before, in order to preserve energy while modulating things)

Sean Costello

Post

[DELETED]

Post

andy-cytomic wrote:Urs the problem here is "feedback". Some non-linear filters don't have it, they are just as "hard" to solve as ones that do.
I'm not sure if "level of difficulty to solve" would be a winning replacement for "ZDF", "TPT", "II". I've actually never seen this whole thing as a competition because clearly there's nothing to invent, there's only things to be discovered.

Now... in our case - and you never commented on this - we still have the very nice and simple feature that the addition of a unit delay in a feedback path (naturally for filters that sport such) makes for a great optimisation, while the actual algorithm is identical. So we have a practical case where unit delay yes/no can be observed in isolation.

Hence there's at least one case where the term itself matters. This falsifies the statement that using the term zero delay feedback for a property of a filter algorithm is pure marketing.

Post

Here is my take :

Let's do analog filter modelling. These filters can be a combination of linear electric components only, or include any other component used with its nonlinear behaviour. According to what you are trying to model, you will get a digital linear implementation, or a digital nonlinear implementation.

Let's consider only the linear implementation. Using equation generation stuff (MNA, Kirchhoff laws etc.), any electric circuit made of linear components (R, C, L, opamps used in active filters modelled ideally) can be represented by a set of differential equations, for example with a continuous state-space representation.

To simulate this, several implementations can be used, with various properties about stability, accuracy, behaviour when the components values are changing etc. The most known here is the bilinear transform + frequency prewarping, giving a Z transfer function, simulated with a TDF2 topology for example. You have also the TPT stuff, based on the bilinear transform too, but preserving the time-changing behaviour of the original filter. You can also add oversampling there, so the frequency response in the whole audible bandwidth will be closer to the analog one.

Other simulation techniques include the Wave Digital Filter, or the direct discretization of the state-space representation, using any integration method. You have a whole scientific domain studying these integration methods, separating them into explicit (Forward Euler, Runge-Kutta) vs implicit methods (Backward Euler, Bilinear, Gear aka BDF2), fixed step vs variable step, one step vs multi-steps etc. When you go there, you can see that the bilinear transform is in fact equivalent to the bilinear integration method, which is implicit.

The state-space representation can be written this way :

Code: Select all

dX/dt = A.X + B.U
    Y = C.X + D.U
with U the input, Y the output, X the linear dynamic state, and A,B,C,D being matrices.

To simulate this using the explicit Forward Euler integration method, you can do that (at sample n+1, and with a fixed sampling period Ts) :

Code: Select all

X[n+1] = X[n] + Ts*(A.X[n] + B.U[n])
This way, you have a direct explicit expression of X[n+1] using only previously recorded state values. The same can be done using the implicit Bilinear integration method :

Code: Select all

X[n+1] = X[n] + Ts/2*(A.X[n] + B.U[n]) + Ts/2*(A.X[n+1] + B.U[n+1])
As we can see here, you have X[n+1] in both sides. If some nonlinear terms using X[n+1] were in the right side, it wouldn't be possible to always write an explicit expression for the X[n+1] on the left side, for example with transcendantal equations (like x + e-x + b = 0). That's why this is called an implicit integration scheme. But here, everything is linear, so we can do an inversion and we can get an explicit expression :

Code: Select all

X[n+1] = (Id - Ts/2.A)^-1 * (X[n] + Ts/2*(A.X[n] + B.U[n]) + Ts/2.B.U[n+1])
If you do a block scheme from all this stuff in the continuous domain, it's having gain blocks, integrators, and wires. And you can go from it to any representation of the differential equations. Using block schemes, you will have very soon when doing analog modeling some "feedback" wires. One way to understand that is that any electric component put between a node and the ground in the signal way is like a local feedback, the electrons going from any node to the ground all the time. To know what is happening at the output, if you consider the integrators like in the TPT stuff, you will have to solve something which looks like the stuff I have written previously for the bilinear integration method (see figures 2.2, 3.4 and 3.12 in Vadim's book). But if you put a "Z-1" on the feedback, everything will be easier to write and may be explicit at the first try.

So, in short, any first order filter modelled from the continuous domain to the digital domain can be made with or without this Z^-1 on the feedback. Using the bilinear transform, or the TPT techniques are like doing the inversion using an implicit integration method, and so without using an additional Z^-1 in the feedback loop to simplify the equation. So we can say that any biquad from the RBJ book can be seen as a "zero delay feedback filter", even if you need obviously Z^-1 in the digital implementation, which are not there to simplify the delay-free loops, but to write the discretization scheme.

Then, doing that stuff with an additional Z^-1 in the feedback would be so dumb for accuracy it is not worth mentioning... So, it makes more sense for me to talk about that when nonlinear blocks are used.

And talking about "zero delay filters" is just nonsense (follow my look :hihi: )

PS. if you want an additional headache : have a look to the figure 3.16 in Vadim's book. You have a bilinear transform used in the integrator, and an additional delay in one of the feedback loops :hihi:

Tell me if I said too much stupid things :wink:

Post

Oh and on a final note : for the nonlinear stuff, having "zero-delay feedback filters" instead of filters with delayed feedback is an interesting property if you can compare the sound of both. But it is just one aspect of what is making the algorithm interesting or not, close to the original analog circuit or not, and I won't say that it will make it sound better or not...

Post

TheoM wrote: ...
To everyone else, I can only say that intent matters, and Andy may have come across harsh but he doesn't INTEND to do so, i.e he is a really good guy at heart. My 2c. We all say the wrong thing sometimes, or something that offends someone, it's human nature, it's impossible not to.

:)

Peace

PS FWIW i have no idea if the drop is ZDF nor do i look for that as a buzzword when making any purchase. I demo, and if it sounds good, i don't care what tech it uses :)
Hi Theo, thanks for your post. Yes I find it hard to be my usual patient and polite self when I get frustrated with not being able to explain things properly and being mis-understood, so I apologize to everyone for being harsh. I think we're on the up and up now, people are understanding the concepts.

The Drop solves topology preserving stiff non-linear circuit equations using implicit integration methods and a highly optimised iterative solver. This does indeed solve any feedback loops that happen to be present without adding extra unit delays, but there are also plenty of implicit non-linearities (eg pn-junctions of diodes and transistors) without feedback loops that are solved as well, there is no need to make a distinction since the solution methods are pretty much identical in either case. No such distinctions are made in circuit simulators, there are just components connected by wires, there are no special feedback wires that need special treatment to simulate the circuit properly.

The previous paragraph is way too technical to even bother mentioning to anyone else by other developers if they ask, I usually just say something along the lines of: "uses the same methods as circuit simulators but optimised for real-time use", because that's basically what I'm doing. Why should I bother the customers with what kind of numerical solver I'm using as longs as it simulates the circuit well for the task at hand? In the end the specific implementation is completely dependent on the circuit being modelled and what is appropriate for it, so I avoid blanket statements about the modelling methods I use. I prefer the quality of the audio to speak for itself. No acronyms, no catch phrases, just the best signal processing I can deliver.
The Glue, The Drop, The Scream - www.cytomic.com

Post

Wolfen666 wrote:Oh and on a final note : for the nonlinear stuff, having "zero-delay feedback filters" instead of filters with delayed feedback is an interesting property if you can compare the sound of both. But it is just one aspect of what is making the algorithm interesting or not, close to the original analog circuit or not, and I won't say that it will make it sound better or not...
You can also solve an entire filter block in one go using Newton iteration, or you can process them one by one as Antti did back then in his well known paper about the Moog filter. I don't see any reason to limit the analysis to the feedback case, if you use Newton it doesn't even matter whether there's feedback or not.

Richard
Synapse Audio Software - www.synapse-audio.com

Post Reply

Return to “DSP and Plugin Development”