Should I be interested in something else than TPT/ZDF filters at this point of time?

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

mystran wrote: Mon Jan 15, 2024 11:02 am
soundmodel wrote: Mon Jan 15, 2024 10:29 am I have to say that I am still lost as what the historical progression is in filter designs. I used to think that they advance "linearly", but after studying SVFs I come to think that maybe they're more about solution methods while the filter is sort of the same. And that some people have simply studied the wrong forms.
Whether or not they are "the same" depends on whether you think in terms of LTI theory (transfer functions) or in terms of a more general framework.
In musical filters the only criteria should be sound.

And therefore I meant that whether they sound the same. My experience is that DF is more analogue and SVF is clean.

Possibly supported by the following paper where direct forms have much more errors:

https://cytomic.com/files/dsp/SVF-vs-DF1.pdf (referred to as Cytomic plots below)

Then they would not in fact realize the same filters.
Last edited by soundmodel on Tue Jan 16, 2024 9:52 am, edited 1 time in total.

Post

soundmodel wrote: Mon Jan 15, 2024 6:49 pm And therefore I meant that whether they sound the same. My experience is that DF is more analogue and SVF is clean.
So DF sounds "more analogue" because it suffers from distinctly digital malfunctions the moment you try to modulate it? Seriously? If my analog filters started behaving like digital DFs I'd definitely unplug them before the magic smoke escapes. :)

In the LTI case they "sound" the same except as far as the response of DF can be less accurate due to poor numerical performance. In very low precision the different noise might also be audible, but that's usually not really a concern in floating point. Noise-floor at -80dB or whatever is less than ideal, sure, but not usually directly audible in musical context. In the non-LTI case SVF works while DF fails (not necessarily permanently, it might recover, but for all intents and purposes calling the behaviour "failure" is reasonable), so comparison is kinda pointless.

Note that because the usual normalized ladder uses [cos,sin] rotations for scattering junctions, those are somewhat numerically unstable... but the unnormalized ladder (which is cheaper too) is sadly not free of transients under modulation the same way as the normalized variant. It might be possible to improve the standard normalized ladder numerically by using better rotation formulas at the cost of an extra multiply-add (or so) per junction though.

The one feature that makes ladders worth learning about (after the SVF) is that they are pretty stable to higher orders, which is rather convenient if you're stuck with a high-order transfer function and would prefer not to root-find for biquad decomposition. Converting from direct to ladder form is numerically less than ideal, but still potentially much better than root-finding and the stability condition is trivial (all reflection coefficients less than unit magnitude).

Post

soundmodel wrote: Mon Jan 15, 2024 6:49 pm And therefore I meant that whether they sound the same. My experience is that DF is more analogue and SVF is clean.
DFx generally has precision issues with low frequencies and has problems under fast modulation. I wouldn't call either of those issues anything like analog.

Apart from those issues, if you used doubles for DF you can get them to null.

Post

JustinJ wrote: Mon Jan 15, 2024 7:50 pm
soundmodel wrote: Mon Jan 15, 2024 6:49 pm And therefore I meant that whether they sound the same. My experience is that DF is more analogue and SVF is clean.
DFx generally has precision issues with low frequencies and has problems under fast modulation. I wouldn't call either of those issues anything like analog.

Apart from those issues, if you used doubles for DF you can get them to null.
Then why do I think most "analog" filters in synths and fx are direct form realizations, since they're not SVF, because SVF is usually marked as such. This made me think that when you see a "Low-pass 12dB", "Moog Filter" or something, then it's a DF implementation.

But the analogueness is not about the implementation method? Is it just about the transfer function?

Based on the Cytomic plots above I sort of also started to believe that the implementation difference would be audible in the 20-300Hz or something range, and in fact low-mids are quite significant for e.g. acid basses.

I also interpreted that the time error in the plots meant phase differences in practice, and if it's so, then the audible difference could be very significant based on the plots, because the filter would attenuate some frequencies the SVF does not. And in particular, it attenuates frequencies non-linearly.

Post

soundmodel wrote: Tue Jan 16, 2024 9:45 am Then why do I think most "analog" filters in synths and fx are direct form realizations, since they're not SVF, because SVF is usually marked as such. This made me think that when you see a "Low-pass 12dB", "Moog Filter" or something, then it's a DF implementation.
Well, Moog ladder filters are generally implemented as four one-pole (6dB) filters with feedback for resonance.

The popular direct form filters were the RBJ filters (12dB, lp, bp, hp, peak, shelves etc). I think early soft synths used them but I don't think they're in vogue anymore because of the issues raised elsewhere here. And because there are good, solid alternatives...

When you want those general purpose 12dB filters then just use the Cytomic derivation or TPT.

For what makes an analog sounding filter, the focus is on how the non-linearities, resonance and other architectural characteristics are handled. Especially non-linearities IMHO.

Post

soundmodel wrote: Tue Jan 16, 2024 9:45 am
JustinJ wrote: Mon Jan 15, 2024 7:50 pm
soundmodel wrote: Mon Jan 15, 2024 6:49 pm And therefore I meant that whether they sound the same. My experience is that DF is more analogue and SVF is clean.
DFx generally has precision issues with low frequencies and has problems under fast modulation. I wouldn't call either of those issues anything like analog.

Apart from those issues, if you used doubles for DF you can get them to null.
Then why do I think most "analog" filters in synths and fx are direct form realizations, since they're not SVF, because SVF is usually marked as such. This made me think that when you see a "Low-pass 12dB", "Moog Filter" or something, then it's a DF implementation.
The assumption that an SVF (or any other topology) is usually marked as such is very naive. There are several reasons you might not advertise the specific topology, but also if you mark your filters as "SVF" then users are probably going to expect something similar to SEM-1A (which requires specific non-linearities) rather than a generic clean SVF. "Moog filter" is usually some variation of a 4-pole cascade, which is a specific topology for this particular filter type.
But the analogueness is not about the implementation method? Is it just about the transfer function?
"Analogueness" in my opinion is about modelling analog artifacts (eg. non-linear behaviour) while avoiding digital artifacts. IMHO you're basically wasting your time if you're trying to find "analogueness" in transfer functions, because the relevant stuff is outside the scope of LTI theory.

Post

mystran wrote: Tue Jan 16, 2024 11:24 am IMHO you're basically wasting your time if you're trying to find "analogueness" in transfer functions, because the relevant stuff is outside the scope of LTI theory.
That, assuming you get your transfer functions "sufficiently right" to begin with. This is one thing that DFs do. But that just gets you sounding "more analog" than certain other digital designs, which do not get their transfer functions "right". The next step is getting your time-varying behavior right, while not compromising your transfer functions (this is what ZDF does, it also has better numerical properties). Given you covered the basics: the transfer function, the time-varying behavior and the numerical properties, there is now a wide area of getting "even more analog", by emulating "analog artifacts" (most of which can be seen as stateless and state-dependent nonlinearities).

So DFs get LTI right, ZDF gets linear time-varying right (and improves numerical properties) and provides the basis for non-linear time-varying implementations.

Post

I thought DFs can implement any transfer function based on the maths.

Having weak experience with ZDF, SVF and the sorts, I was initially speculating that it only works if the functions are easily integrable.

But yes, perhaps this falls in pieces in the time-varying case.
mystran wrote: Tue Jan 16, 2024 11:24 am "Analogueness" in my opinion is about modelling analog artifacts (eg. non-linear behaviour) while avoiding digital artifacts. IMHO you're basically wasting your time if you're trying to find "analogueness" in transfer functions, because the relevant stuff is outside the scope of LTI theory.
But shouldn't this be encoded in the transfer function, since it describes the output? On the other hand, I haven't understood how one can get such transfer function by integrating abstract models like in the SVF examples (like is there something analog in: http://www.cytomic.com/files/dsp/OnePol ... owPass.pdf ?). Rather, I always thought one ought to start with the response, like they do with convolution in Acustica's Nebula. Or well, maybe one can if one can somehow create variables or range for the non-linearities in components. Still not sure whether they will be cleanly integrable functions though.

Or possibly, convolution is the "gold standard" for analog emulation.
Last edited by soundmodel on Tue Jan 16, 2024 2:27 pm, edited 10 times in total.

Post

mystran wrote: Tue Jan 16, 2024 11:24 am "Analogueness" in my opinion is about modelling analog artifacts (eg. non-linear behaviour) while avoiding digital artifacts. IMHO you're basically wasting your time if you're trying to find "analogueness" in transfer functions, because the relevant stuff is outside the scope of LTI theory.
Well, apart from the part that BLT squeezes the frequency response, which makes the use of 2x oversampling almost mandatory for actual "analog" frequency response, especially at high frequency and resonance.

Post

soundmodel wrote: Tue Jan 16, 2024 2:11 pm I thought DFs can implement any transfer function based on the maths.
Yes, as long as the transfer function is linear and time-invariant. That's also the only case where a transfer function describes a system completely. In all other cases there can be behavior not described by a transfer function. Very strictly speaking, a transfer function only really exists in the LTI case.

Post

As others already mentioned, transfer function is a property of an LTI (linear time-invariant) system. Analog systems are typically essentially non-linear and often not time-invariant either. There goes your transfer function. On top of that, add that DFs often exhibit numerical problems.

Similarly, convolution is an LTI process, can't do much more than a transfer function does. Mathematically both are interchangeable, transfer function effectively is simply a z- (or s-) domain representation of convolution.

One could in principle make more complicated versions of convolution, making them time-varying or maybe even "nonlinear". How successful those attempts can be in circumventing the approach of direct emulation of the analog circuitry (by numerically solving differential equations by a method which also doesn't exhibit strong frequency-domain artifacts etc.) IMHO remains to be seen.

Post

Z1202 wrote: Tue Jan 16, 2024 2:30 pm As others already mentioned, transfer function is a property of an LTI (linear time-invariant) system. Analog systems are typically essentially non-linear and often not time-invariant either. There goes your transfer function. On top of that, add that DFs often exhibit numerical problems.

Similarly, convolution is an LTI process, can't do much more than a transfer function does. Mathematically both are interchangeable, transfer function effectively is simply a z- (or s-) domain representation of convolution.
I think the Nebula just has the captured response at each frequency point, and the time-varying case is simply about mixing the output between the convoluted outputs. I sort of thought the LTI transfer functions would behave similarly, but maybe not because they're equations are not necessarily nicely interpolable.
Last edited by soundmodel on Tue Jan 16, 2024 2:39 pm, edited 1 time in total.

Post

soundmodel wrote: Tue Jan 16, 2024 2:35 pm and the time-varying case is simply about mixing the output between the convoluted outputs.
I'd like to see a mathematical demonstration of that statement. For all I know it can hold only very approximately, losing quite a bit of "analog vibe".

Post

Z1202 wrote: Tue Jan 16, 2024 2:38 pm
soundmodel wrote: Tue Jan 16, 2024 2:35 pm and the time-varying case is simply about mixing the output between the convoluted outputs.
I'd like to see a mathematical demonstration of that statement. For all I know it can hold only very approximately, losing quite a bit of "analog vibe".
But you get the output for each frequency for which you have the impulse response (captured from real hardware)? Then a time-varying filter is just about mixing the output of each of such?
Last edited by soundmodel on Tue Jan 16, 2024 2:44 pm, edited 1 time in total.

Post

soundmodel wrote: Tue Jan 16, 2024 2:42 pm But you get the output for each frequency for which you have the impulse response? Then a time-varying filter is just about mixing the output of each of such?
Not exactly, because a static system and dynamic system behaviors are generally different. E.g. imagine a delay. If you vary the delay time, you'll hear a changing pitch. Now try to achieve the same effect by merely crossfading between different delays instead. Smth tells me you won't be very successul. And we're still in the linear case, not even talking about nonlinearities (compare the sound of mixing pre- and post-distortion).

Post Reply

Return to “DSP and Plugin Development”