A matrix approach to the Moog ladder filter

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

Post

More on-topic, as far as I can see there is no limit to the matrix method which would require it to apply to exactly four poles. In fact is it not possible for this same method to apply without modification to any number of poles by changing the dimensions of the matrix and the coefficient computation?

Could this method not be applied in exactly the same way to a single pole, two pole with positive feedback, three pole, four pole with negative feedback or any other number of poles? Much like the "TPT" method?


In addition to that I feel that the statement "only when the state changes" is disingenuous at best. Has any profiling been done? How do the methods compare? Is this matrix method only applicable in terms of efficiency for static filters?

I've been led to believe that this method is more efficient when processing a static state. If this is true it may be applicable to heavy oversampling, although I don't see how non-linear processes (which require update of the state/matrix per-sample) would benefit.

So, if that is true is this method limited to efficient processing of LTI systems?

(If this is the case, I would suggest the title "efficient processing of LTI systems utilizing matrix exponentiation a la ______". I'm not aware of the proper nomenclature.)
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

That was what my post was about :-P

I did it for the Kerwin-Huelsman-Newcomb-Biquad-Filter.
It is stable, even with audio rate modulations, high cutoff and q.
It gives very nice results for the BP and LP outputs (no frequency warping).
The HP output is not perfect (that's a drawback of the step invariant method).

Here is some jsfx code and discussion (if some people here use Reaper http://forum.cockos.com/showthread.php?t=166480).

I'm working on adding some non-linearities by audio rate modulation of the integrators.
http://forum.cockos.com/showpost.php?p= ... stcount=26
Maybe it's a way to go beyond the linear invariant limitation with limited aliasing...
See you here and there... Youtube, Google Play, SoundCloud...

Post

By the way, if you search for papers containing "efficient processing of LTI systems utilizing matrix exponentiation" you'll find many, many papers on the subject.

This appears to be widely applied in many different fields to solve LTI systems with parallelized processing.
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

Smashed Transistors wrote: I did it for the Kerwin-Huelsman-Newcomb-Biquad-Filter.
It is stable, even with audio rate modulations, high cutoff and q.
It gives very nice results for the BP and LP outputs (no frequency warping).
The HP output is not perfect (that's a drawback of the step invariant method).
Have you attempted to write this in optimized c code utilizing some SSE intrinsics? It would be interesting to see exactly how much more efficient LTI variants of well known filter types can be processed using this method.

I can see it applying to systems such as vocoders, spectrum analysis, frequency splitters, EQ and so on if the efficiency even approximates 2x that of other techniques.
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

As long as you don't use tables or branching instructions you can go SSE.

Instead of using SSE to calculate one filter with complicated shuffle and headache, I use SSE the lazy way: I use it to calculate 4 filters. I've done it eons ago with the RBJ biquad filters and DPW oscillators http://www.vst4free.com/free_vst.php?pl ... ng&id=2219. So maybe someday i'll go back to that business, but even the lazy way it is time consuming.
Last edited by Smashed Transistors on Mon Oct 05, 2015 9:05 pm, edited 1 time in total.
See you here and there... Youtube, Google Play, SoundCloud...

Post

Well, from my perspective although I can see potential applications for this technique, I'm left with the question of exactly what sort of improvement in efficiency is possible?

I can see the potential for custom hardware designed to compute products and exponentiation of large matrices to be applied to solve large LTI systems, yet I have this intuition that this technique just doesn't have any practical application to the common DSP applied in audio plug-ins.

It may very well be possible to compute a linear variant of a cascaded lossy integrator (or otherwise) using this method, although the problem is that such a filter really has no practical application in many modern plug-ins.

In other words I can't clearly see the benefit of this method.

Other techniques need to be taken into account as well. The "TPT" method has already been mentioned although efficient methods of frequency-domain convolution and the like also need to be taken into account. Some of these methods are very parallelizable and are also the most efficient known techniques to handle LTI systems such as convolution reverb and EQ/filters.

This is part of the reason I made such an apparently fussy objection to the nomenclature in use in our field. First, it severely limits progress in our own field due to confusion resulting from non-technical subjective terminology. Secondly, it prevents interdisciplinary exchange due to contrasting jargon. I believe that these techniques are very well developed in numerous other fields where "moog" is an unknown. Due to that we need to adopt the common nomenclature to allow us to identify existing papers on these subjects.

Not all of the papers pertaining to these subjects are available online without a very expensive subscription. Very few could be identified as relevant without knowledge of the existing nomenclature and expertise in the field to which the paper pertains.
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

The bilinear transform is a convenient approximation of exp(M).

There is some papers about the k-method applied to virtual instruments, but i didn't read them seriously yet.
https://chess.eecs.berkeley.edu/pubs/40 ... 080311.pdf
https://ccrma.stanford.edu/~dtyeh/paper ... esided.pdf
As far as i understood, geometrical transformations (rotation and variable change) are applied to matrixes in order to separate non linearities from the linear part.
The bilinear transform is generally used as a solution for the linear part. The non linear part is processed with iterative methods (Newton & Co).
See you here and there... Youtube, Google Play, SoundCloud...

Post

Both of these papers are missing out on so much of the detail of the circuits in question that it makes me wonder what the papers are even about... They're lacking any real results.

As far as I can understand there is a whole lot of page-filling here where the papers can be summed up as "measure twice, cut once" as opposed to the method of "just guess". :) I never considered "just guess" to be a method at all. :dog:

They're also both very narrowly focused like most other papers related to attempts at software emulation of electronic circuits... Very little if any electrical engineering expertise is demonstrated which makes the whole effort a lot less worthwhile. What is the point of attempting to develop a method or process to attempt to emulate a device you do not understand?
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

Same first impression for me... at first glance it looks like they are re-inventing Spice.
But it's only a first impression

That's why i will take time to read that seriously (ie by testing what they tell with some code).
See you here and there... Youtube, Google Play, SoundCloud...

Post

It looks to me like they're regurgitating already well published knowledge without actually filling in any of the holes in this knowledge and without making any real references. Rather than reference "the technique presented in the paper ... by ...", it is simply repeated wholesale.

I'd expect such a paper to start with an analysis of a single circuit... even the fender amp they start out with could fill a paper twice the size alone if it was actually analyzed in any detail.

For some reason they skip entirely any effort to discuss or reference the effect of individual circuit elements and focus far more on a very poor model... tanh, atan and so on, which is typical. This is where they misstep.

Then they overlook completely the fact that in their measured results there are components and effects which are vastly different! This is of course because the model was poor to start with.

It reminds me of a science fair soda and vinegar "volcano". It is exactly the same sort of thing I'm complaining about. We can do better than this.
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

Both of these papers are missing out on so much of the detail of the circuits in question that it makes me wonder what the papers are even about... They're lacking any real results.
Are you really saying that the whole thesis report is failing in his mission to say what it is about and to give any result ?

Post

Not really. The thesis appears to be a presentation of existing knowledge.

It uses the phrase "can be used in a simplified digital implementation."

The whole thing is very unfocused and presents very little original progress. It is also severely lacking in electrical engineering knowledge and as I described immediately jumps to poor models and approximations, seemingly taking for granted the fact that the results differ significantly from the original devices.

My point is that most of the content here isn't applicable. It isn't appropriate to utilize these approximations and poor models while making the claim your software is a model of "the BOSS DS-1" or similar.

It's more "here is a method to very roughly approximate a circuit by making assumptions, building simplified functional models in isolation rather than modelling discrete components or whole circuits and their interactions."

For example "diode clipper" is assumed when the circuit in question is actually a diode clamp. The largest difference in the measured vs. modeled result is the lack of any even harmonic content in the model. This is due partially to the assumption that the circuit is a clipper rather than a clamp, as well as ignorance of the details of other circuit elements such as opamps and buffers.

The bias point is determined via interaction between the high-pass filter at the input with the feedback amplifier including the diode. The current through the diodes is not matched in polarity, it would be quite a jump to assume that the diodes themselves are matched.

This complete circuit in isolation (not taking into account further stages) demonstrates quite clearly that the diode clipper "model" is very poor. It does not model critical interaction between these circuit elements which will result in even-harmonic content.

This missing content is clearly audible and will make the original circuit "sound analog" while the model will "sound digital".

These sort of oversights are what we need to avoid by adopting proper nomenclature and existing knowledge in fields such as electrical engineering.

Someone more familiar with electrical engineering (very basic introductory courses) should immediately see that this model is poor and know why it doesn't accurately reflect the circuit in question.
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

On topic: why do I care?

I don't really, this sort of thing is absolutely typical. I'm only pointing it out because it is in the same vein as calling a method for efficient processing of LTI systems "an approach to the moog ladder filter".

No it isn't, it's "a method for efficient (?) processing of LTI systems", although as it is now it is limited to a particular LTI system with a fudge for non-linearity.

We need to call it like it is.
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

You're certainly right, we have quite a few stomp boxes here, and those models don't cut it if the goal is to do a 1:1 emulation. Having said this, the academic literature is typically not written by DSP professionals, but rather students, so we cannot expect any models that sound identical to real hardware. Yeh mainly pointed out the memory effect, which is maybe insignificant compared to other effects, but it's certainly there.

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

Post

I'm not objecting to the fact the model is poor in of itself. The part that really bothers me is that the "memory effect" as it appears to be labelled is inherent to a "diode clamp", while instead the circuit is referred to as a "diode clipper".

People with electrical engineering experience should intuitively understand this "memory effect" (hysteresis) and that it occurs on multiple levels, even internally to the individual diodes which have their own reactance and temperature dependence and all the way down to the level of the physics of the semiconductor junction itself.

So the problem is simply an issue of nomenclature. All this information is included in the term "diode clamp".

The whole thing could be summed up by: "the circuit is a diode clamp, although in our simplified model we will approximate it as a diode clipper."

No need to mention "memory effect" or "memory-less" since that stuff is intuitive.
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 Reply

Return to “DSP and Plugin Development”