About this zero-delay feedback again (sorry)

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

cheppner wrote: Yes, but this is kind of do-it-wrong-first and then repair the integrator. The question really should be, in my opinion, how did we get to the formular of the wrong integrator at first and how can we avoid that?

My proposal is: Via analog circuit transformation WITHOUT assuming that the control-signal was time-independent at all!
I'm not proposing to use a "wrong integrator" but simply pointing out that there is nothing mystical about any of it. If you manage to store the right state (or a constant multiple of the same) you'll get the right behavior up to whatever problems your s-to-z model might introduce.

As far as "blind transformation" goes, I think it's also kinda useful to be able to predict the time-varying behavior of filters that have no practical analog-equivalent (well, I guess you can usually design one, but that's kinda backwardish). I also find it rather useful to be able to shuffle things around depending on implementation constraints, without having to worry about changing the behavior.

Post

cheppner wrote: What I found interesting is that varying the resistance does not give the smooth solution - which posts the question if there are some VCF circuits with that non-smooth behaviour ;)
Wait a minute, how did you arrive at this conclusion?

For an RC-lowpass you normally have a voltage source as input signal, and you take output as the capacitor voltage (and generally assume you can measure it with an impedance large enough that the output can be treated as an open-circuit). For constant capacitance if the voltage over the capacitor is different from the input voltage then there will be current through the resistor (ie (Vin-Vout)/R) which charges/discharges the capacitor. When R changes, the charge Q stays the same and since V=Q/C so does the voltage.. the rate of change of the charge (and voltage) does change ofcourse, so we have:

dQ/dt = (Vin - Vcap)/R

or alternatively (since capacitance is constant) in terms of voltage

dVcap/dt = (Vin - Vcap)/(R*C)

As far as I can see this is exactly the "smooth" behavior.

Post

if anything he said were true, the temperature balance between your skin and the air would have "non-smooth" behavior.

perhaps he's referring to the fact the control change is discrete? that normally isn't an issue, but if it is you can estimate the intergrator's charge during the inter-sample period using an interpolated control signal by eating up over nine-thousand times as much cpu power.
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:if anything he said were true, the temperature balance between your skin and the air would have "non-smooth" behavior.

perhaps he's referring to the fact the control change is discrete? that normally isn't an issue, but if it is you can estimate the intergrator's charge during the inter-sample period using an interpolated control signal by eating up over nine-thousand times as much cpu power.
Nah,

I simply made a mistake in my calculations which I just double-checked. Sorry for that!
I *thought* there were be some sort of voltage division going on but that of course only applies to the part of the input signal, not the cap-voltage. And I only thought that because I made that mistake in the first place. Sorry!

Post

No worries, I just spent like 4 hours trying to figure out why my fancy new delay-free filter was misbehaving (and I had some REALLY good theories, trust me), only to eventually fire up an analog and find out that it was misbehaving in more or less exactly the same way.

Shit happens. ;)

Post

Z1202 wrote:However, a 1-pole TPT lowpass (using a transposed DF2 integrator) seems to be fully equivalent (toplogiically!) to a 1-pole transposed DF2 lowpass.
Did some mistake there. It's actually a nontransposed DF2 lowpass with some manual "fixing".
Edit: seems to be a thread full of mistakes :)

Post

Out of curiosity, has anyone investigated the possibilities of combining this TPT stuff with alternative s-to-z scheme (eg pole-mapping with optimized zeroes or something)?

Post

mystran wrote:Out of curiosity, has anyone investigated the possibilities of combining this TPT stuff with alternative s-to-z scheme (eg pole-mapping with optimized zeroes or something)?
What's pole mapping with optimized zeros? Any links?

Post

Z1202 wrote:
mystran wrote:Out of curiosity, has anyone investigated the possibilities of combining this TPT stuff with alternative s-to-z scheme (eg pole-mapping with optimized zeroes or something)?
What's pole mapping with optimized zeros? Any links?
Or are you talking about trying to adjust zero positions after a BLT in order to try to get a "better" amplitude response at Nyquist? I was never a big fan of this approach, since it destroys the relationship between the amplitude and phase (which BTW is preserved by the BLT!), and you never know when it can get critical. I like the kind-of uniform decaying behavior of analog phase responses of typical filters. Don't have a proof for that feeling, although :)

Anyway, TPT works by applying an s- to z- plane transform in a topologically invariant way. This means that it can only be used for transformations which are expressible as complex plane mapping by rational functions. Anything else, if possible, is not straightforward.

I guess that in many practical cases you can find a way to manually adjust the coefficients of the analog prototype to reach the desired response in the digital form. E.g. for an SVF you can obviously apply an arbitrary set of modal mixing coefficients.

Post

Z1202 wrote:
Z1202 wrote:
mystran wrote:Out of curiosity, has anyone investigated the possibilities of combining this TPT stuff with alternative s-to-z scheme (eg pole-mapping with optimized zeroes or something)?
What's pole mapping with optimized zeros? Any links?
Or are you talking about trying to adjust zero positions after a BLT in order to try to get a "better" amplitude response at Nyquist?
No, not really at Nyquist. I don't care about Nyquist, but the tan(w) frequency warping is annoying at other frequencies too, if you ever want to do anything without tons of oversampling. Also adjusting zeroes after BLT is not a good plan; it's likely to make things worse. What I'm talking about is completely ignoring BLT, mapping the poles directly, then placing zeroes to get "good enough" response.

Now, the above works well enough with transfer functions of complete filters, I'm just curious if you could choose an s-to-z mapping depending on design parameters, then do a topology-preserving transform and end up with something useable.
I was never a big fan of this approach, since it destroys the relationship between the amplitude and phase (which BTW is preserved by the BLT!), and you never know when it can get critical.
Sure you can figure out where the phase is important. I'm fully aware that such an approach would probably require at least two-zeroes per integrator if you want to constrain DC gain and the gain and phase at some critical frequency.
I like the kind-of uniform decaying behavior of analog phase responses of typical filters. Don't have a proof for that feeling, although :)
Unfortunately there isn't anything uniform about BLT transformed filters because of the tan(w) warping (except at low frequencies), which is exactly WHY I'm wondering about this in the first place.
Anyway, TPT works by applying an s- to z- plane transform in a topologically invariant way. This means that it can only be used for transformations which are expressible as complex plane mapping by rational functions. Anything else, if possible, is not straightforward.
Sure, but you could use a family of such s-to-z transforms and choose the particular one depending on design parameters (like critical frequency)?
I guess that in many practical cases you can find a way to manually adjust the coefficients of the analog prototype to reach the desired response in the digital form. E.g. for an SVF you can obviously apply an arbitrary set of modal mixing coefficients.
Yes, this works perfectly well ofcourse, but that's not topology-preserving anymore, since you now need to do some mixing which isn't present in the original topology, right?

Post

mystran wrote:
I like the kind-of uniform decaying behavior of analog phase responses of typical filters. Don't have a proof for that feeling, although :)
Unfortunately there isn't anything uniform about BLT transformed filters because of the tan(w) warping (except at low frequencies), which is exactly WHY I'm wondering about this in the first place.
I said kind-of uniform (monotonic, also with not too many inflection points). If you play manual tricks with adjusting the amplitude response you can e.g. get a nonmonotonic phase response. There is also certain smoothness in the tan(w) warping :) Besides, at 88kHz (which is for me the least reasonable minimum anyway because of nonlinearities and the tan(w) warping :) ), the tan(w) warping is not that noticeable anymore.
Anyway, TPT works by applying an s- to z- plane transform in a topologically invariant way. This means that it can only be used for transformations which are expressible as complex plane mapping by rational functions. Anything else, if possible, is not straightforward.
Sure, but you could use a family of such s-to-z transforms and choose the particular one depending on design parameters (like critical frequency)?
Definitely :)
I guess that in many practical cases you can find a way to manually adjust the coefficients of the analog prototype to reach the desired response in the digital form. E.g. for an SVF you can obviously apply an arbitrary set of modal mixing coefficients.
Yes, this works perfectly well ofcourse, but that's not topology-preserving anymore, since you now need to do some mixing which isn't present in the original topology, right?
Sure, I mentioned this as one possibility of manual fixing.

Post

mystran wrote:Sure, but you could use a family of such s-to-z transforms and choose the particular one depending on design parameters (like critical frequency)?
Actually the critical frequency can be arbitrarily chosen for the bilinear transform. Also, I personally would rather stick with transforms which map the imaginary axis to the unit circle (thereby preserving the amplitude-phase relationship). And there are some stability-related restrictions on the transform functions. Therefore I wonder, if there's anything "better" than the BLT :)

Post

Z1202 wrote: There is also certain smoothness in the tan(w) warping :) Besides, at 88kHz (which is for me the least reasonable minimum anyway because of nonlinearities and the tan(w) warping :) ), the tan(w) warping is not that noticeable anymore.
Actually that's the starting point from which I want to improve; BLT at 44.1kHz is more or less unusable in my book.

Post

mystran wrote:Actually that's the starting point from which I want to improve; BLT at 44.1kHz is more or less unusable in my book.
Personally, I feel this idea is probably futile. We need some real breakthrough in DSP in order to address this. Although of course I might be missing some points. Here are some ideas off the top of my head.

If we want to preserve the amplitude-phase relationship during the transform, the mapping necessarily needs to be between the imaginary axis and the unit circle. The ideal mapping is obviously s=log z (T=1). However, we need to approximate log z by a rational function in order to obtain rational digital transfer functions as a result of the transform. This approximation still needs to preserve the amplitude-phase relationship, therefore such rational transform function necessarily needs to have identical orders of numerator and denominator. We can express this rational function in terms of 2(z-1)/(z+1) rather than in terms of z. This is done by the substitution u=2(z-1)/(z+1). Then, for |z|=1 we have Im u/2=tan arg z/2, Re u=0. Since s is a rational function of u (in this transform), and since Re u=0 (for |z|=1), we have s (on the imaginary axis) as a rational function of Im u. Now remember that the transform also needs to preserve stability. Therefore this latter rational function also has to be monotone. Which will mean that you need a heavy compression of the imaginary axis close to Nyquist, if being able to build such function at all. I guess this is a good as it gets.

Now considering that you'll get a filter of an increased order this way, it'll take more CPU. Considering the nonlinearities which you might want to have as well, why simply not oversample instead?

Post

Z1202 wrote:This approximation still needs to preserve the amplitude-phase relationship, therefore such rational transform function necessarily needs to have identical orders of numerator and denominator.
I don't see why it would be necessarily to this exactly, except at resonant frequencies. Errors in such approximation will obviously distort the response, but if the end result is closer to the ideal than what you get after the frequency warping, does it matter?

Post Reply

Return to “DSP and Plugin Development”