Fractional-order difference equation?

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

Post

Fractional-order differential equations have been known for some time, and their applications to continuous-time filters have been theoretically studied (e.g. https://www.aimsciences.org/article/doi ... co.2022029). Does anyone have any (useful!) links to the use of fractional-order difference equations, applied to DSP filtering? I'd think having a truly variable-order filter would be incredibly useful.

I fear that, under the details, a fractional order filter might look like an infinite order filter whose higher orders theoretically perfectly cancel in the case of integer order, otherwise leaving some sort of fractional order equivalent...

Post

I don't think there is any way to actually implement these other than by series expansion or fitting. Note that if it is variable slope that you are after, then something like 2-3 one-poles per octave will get you very close to 3dB/oct worst-case (even a one-pole per octave might be audibly good enough for almost everything) and with such a setup modulating the slope is fairly straight-forward (within the 0 to 6 dB/oct range at least).

Post

With shelving EQs there is a practical possibility of smooth variation of the slope in a more or less arbitrarily wide range, provided the shelving amount is not too excessive. I don't remember the exact figure, but I think "excessive" is smth about 40dB. Assuming it's the first 20-30dB of the rolloff which might define the main perception of the filter's steepness, I'd consider combining such EQ with a fixed-rolloff Low/High-pass to filter the rest of the signal. Not sure how well this can work in practice though.

Post

Z1202 wrote: Fri Oct 07, 2022 11:47 am With shelving EQs there is a practical possibility of smooth variation of the slope in a more or less arbitrarily wide range, provided the shelving amount is not too excessive.
Since the worst-case is at 3dB/octave and since you can easily design a slope-adjustable pinking filter by throwing enough poles at the problem (eg. distribute one-pole shelves evenly on the log-freq scale and adjusting gain of the shelves will adjust the slope), I'd say the main practical design consideration is not with the slope, but rather how to control the shape around cutoff for higher slopes, especially if one would like the cutoff to get shaper when the slope increases.

To get something close to Butterworth, one could probably let the lowest frequency (for lowpass proto) merge and then transition onto the Laplace unit-circle, approximating Butterworth pole-distribution (evenly on half circle) for the lowest poles with remaining "free" poles adding extra variable steepness for the main decay. Since the zeroes would approach infinity while the poles would approach cutoff, one would have to take this temporary excess slope which isn't constant over the decay into account somehow to adjust the remaining free shelves, but ... I feel like there might be a way to do this in a way where all the pole and zero trajectories remain continuous over a wide range of slopes?

That said, I'm not convinced frational differentiation as such is going to be very usefor for any of this.

Post

Mystran's approach sounds like the IIR equivalent of designing an equiripple FIR filter - intelligently place poles and zeros to make it do what you want. The limit of this is the frequency-sampling filter design method which best-fits a desired frequency-domain specification to a given number of poles and zeros. Like mystran says, those methods are more appropriate for audio processing than using fractional-order difference equations, since one has a lot of well-developed tools and theory to support it and the other doesn't. It's just that the idea of using nonlinear (for non-integer order) transfer functions that might give better performance is at least as intriguing as having a continuous dB/octave filter cutoff knob (what would modulating that knob sound like? Not the same as modulating the cutoff frequency, which is the closest my ear can imagine...)

Post

AnalogGuy1 wrote: Fri Oct 07, 2022 2:38 pm Mystran's approach sounds like the IIR equivalent of designing an equiripple FIR filter - intelligently place poles and zeros to make it do what you want. The limit of this is the frequency-sampling filter design method which best-fits a desired frequency-domain specification to a given number of poles and zeros.
I wasn't really thinking about fitting though, because for a constant slope situation that's not necessary: place one-pole shelves evenly on log-frequency scale and a single shared gain coefficient for all of them will let you adjust the slope.
Like mystran says, those methods are more appropriate for audio processing than using fractional-order difference equations, since one has a lot of well-developed tools and theory to support it and the other doesn't. It's just that the idea of using nonlinear (for non-integer order) transfer functions that might give better performance is at least as intriguing as having a continuous dB/octave filter cutoff knob (what would modulating that knob sound like? Not the same as modulating the cutoff frequency, which is the closest my ear can imagine...)
I don't see a way to win anything in terms of performance, because fundamentally you will have to work with integer-order filters, even if you use those to approximate fractional orders. It's the same situation as fractional delays: we can't really implement those in the strict sense either, but we can approximate them by interpolators built with unit-sample delays.

As for modulation of slope... I think it's mostly a technical curiosity. It's one of those things that seems like it could be something interesting, but from what I've tried the end result tends to be something similar to adjusting the gain of a wide shelf. Feel free to try yourself, but don't be surprised if the result is a bit disappointing in terms of the effort required. I'd say such things are more useful for something like overall tilt-EQ where you want to avoid obvious shelf cutoffs .. or for changing the color of noise where you want to avoid introducing any obvious spectral features.

Post

mystran wrote: Fri Oct 07, 2022 1:54 pm Since the worst-case is at 3dB/octave and since you can easily design a slope-adjustable pinking filter by throwing enough poles at the problem (eg. distribute one-pole shelves evenly on the log-freq scale and adjusting gain of the shelves will adjust the slope), I'd say the main practical design consideration is not with the slope, but rather how to control the shape around cutoff for higher slopes, especially if one would like the cutoff to get shaper when the slope increases.
That's why I was referring to the wide-range adjustable slope EQs, they already give you nice sharp cutoff corner for steeper slope out of the box, which you won't reach with 1-poles. EQs also give you analytic expressions for pole positions.

Post

mystran wrote: Fri Oct 07, 2022 4:05 pm I don't see a way to win anything in terms of performance, because fundamentally you will have to work with integer-order filters, even if you use those to approximate fractional orders. It's the same situation as fractional delays: we can't really implement those in the strict sense either, but we can approximate them by interpolators built with unit-sample delays.
I hear what you're saying: Since we have to implement everything using integer-order difference equations, it is no different than getting an ever-better approximation of a perfect delay by expanding the MacLaurin series around a point and choosing how many coefficients you want until you're arbitrarily close (your delay example), or finding the time-domain transform of your desired frequency domain model and truncating the impulse response to an order that's close enough (to make, say, an approximation to a brick wall LP filter), etc.

But the mental model for this is different. All of the above are LTI implementations. The paper I quoted uses non-linear transfer functions that collapse to linear ones at integer order numbers. So it's not that we're approximating fractional order filters with a high-order integer filters and then implementing them with a bunch of multiply-accumulate constant-coefficient operations - it uses a different mental model involving non-linear transforms for which our existing linear transform language like Fourier doesn't exist.

Your end argument might still be completely valid - that it's not computationally efficient. But if so, it's not necessarily inefficient because you need a big, high integer order filter to approximate, say, a 2.5th order filter. It might be inefficient because the non-linear equations required to implement a 2.5th order filter in the time-domain requires fast computation of Gamma and Bessel functions, that, unlike a bunch of multiply-accumulates, are very slow. (We could then linearize those operations, and end up with a conventional LTI integer order approximation implementable in a Type I-IV canonical LTI filter, but that's not what I'm wondering about). The work done in fractional-order systems is pretty cutting edge, unlike the linear theory that was developed over 1-2 centuries ago, so there's definitely the potential for real advancements here.
Last edited by AnalogGuy1 on Fri Oct 07, 2022 7:46 pm, edited 1 time in total.

Post

Z1202 wrote: Fri Oct 07, 2022 4:30 pmThat's why I was referring to the wide-range adjustable slope EQs, they already give you nice sharp cutoff corner for steeper slope out of the box, which you won't reach with 1-poles. EQs also give you analytic expressions for pole positions.
For standard shelves there's symmetry for poles and zeroes though, which means you'll have two corner frequencies. You could break the symmetry and use different prototype designs for poles and zeroes, but then I believe the nice analytic math breaks down at least to a certain extent. Perhaps it can be worked out, no idea.

Either way, I don't have a full solution, I'm just speculating. In the scheme I was describing, once you hit 6dB/oct all the poles and zeroes except one cancel out, so theoretically they can be rearranged. Assuming low-pass, the non-canceling pole is then at cutoff and the zero at some high frequency and these could be transitioned to a regular low-pass while the remaining (in cancellation) poles and zeroes would continue to provide a variable slope. So it seems like a potentially workable approach.

Post

AnalogGuy1 wrote: Fri Oct 07, 2022 6:08 pm Your end argument might still be completely valid - that it's not computationally efficient. But if so, it's not necessarily inefficient because you need a big, high integer order filter to approximate, say, a 2.5th order filter.
Keep in mind that with software pipelining and 4-way SIMD, computing an arbitrary (not necessarily real poles) IIR of order 16 is basically as expensive as two biquads (eg. TPT-SVF). Two digit filter orders might seems scary, but they really aren't that expensive in practice and I'm not entirely convinced you can compute a single Gamma or Bessel function accurately in the time you compute a decent linear IIR approximation. :)

disclaimer: I'm no expert in the matter, so perhaps I'm completely missing the point here.. but it still seems like it'd be hard to beat an LTI approximation if the goal is a translinear filter (ie. something without externally observable non-linear behavior).

Post

mystran wrote: Fri Oct 07, 2022 6:14 pm For standard shelves there's symmetry for poles and zeroes though, which means you'll have two corner frequencies. You could break the symmetry and use different prototype designs for poles and zeroes, but then I believe the nice analytic math breaks down at least to a certain extent. Perhaps it can be worked out, no idea.
What I was referring to is that over a certain damping range a 2-pole shelf response varies between one of a 1-pole shelf response and a 2-pole Butterworth shelf. But the latter is a Butterworth transformation of the former and thus one can further vary the damping of the Butterworth transformation's original to smoothly get to a 4-pole Butterworth shelf. And to 8-pole etc. And once one has reached the maximum order, one could also go into the elliptic range as long as the ripple amplitude is tolerable. See 10.5 of you know what and 35:30 of the ADC video ;)

The shelving EQs in Reaktor Core stock library have this feature (just the Butterworth part, no elliptic)

Post

Z1202 wrote: Fri Oct 07, 2022 7:23 pm
mystran wrote: Fri Oct 07, 2022 6:14 pm For standard shelves there's symmetry for poles and zeroes though, which means you'll have two corner frequencies. You could break the symmetry and use different prototype designs for poles and zeroes, but then I believe the nice analytic math breaks down at least to a certain extent. Perhaps it can be worked out, no idea.
What I was referring to is that over a certain damping range a 2-pole shelf response varies between one of a 1-pole shelf response and a 2-pole Butterworth shelf. But the latter is a Butterworth transformation of the former and thus one can further vary the damping of the Butterworth transformation's original to smoothly get to a 4-pole Butterworth shelf. And to 8-pole etc. And once one has reached the maximum order, one could also go into the elliptic range as long as the ripple amplitude is tolerable. See 10.5 of you know what and 35:30 of the ADC video ;)

The shelving EQs in Reaktor Core stock library have this feature (just the Butterworth part, no elliptic)
Right... but a Butterworth shelf has a half-circle of poles and a half-circle of zeroes, just at different frequencies. The latter (as far as I can see) is something one would like to avoid if the goal is to try to build a variable slope low-pass prototype.

Post

mystran wrote: Fri Oct 07, 2022 8:40 pm Right... but a Butterworth shelf has a half-circle of poles and a half-circle of zeroes, just at different frequencies. The latter (as far as I can see) is something one would like to avoid if the goal is to try to build a variable slope low-pass prototype.
As far as the idea to combine a variable shelf with a fixed lowpass goes, I'm not sure why one would avoid the circles. With the shelf the trick is that you can transparently jump to the double order at this point and then grow the slope further again. IIRC at this point you "redistribute" the poles between different parts of the filters, although I have to admit I forgot lots of details.

Post Reply

Return to “DSP and Plugin Development”