If I would have to state just one single universal principle which life as a whole rests upon then I would probably refer to the principle of feedback. But don’t worry, I don’t want to indulge in rather esoteric directions here but just move on a little bit towards basic system theory and how this relates to audio processing.
According to classical control theory, such systems are taking its output information and feeding it back in to the process input and that way closing the loop – hence the name closed loop system. In DSP audio land, the information is the audio signal itself and the audio (feedback) path constitutes the closed loop system. Audio signal processors such as feedback compressors or guitar amp effects are good examples for specific applications. While the control theory provides a lot of guidance for closed loop systems e.g. on handling differential equations and stability criteria, this can get pretty much nasty in practise because of the potential manifold of feedback loops in the circuit and not just only the main audio path.
Just as an example, in a feedback compressor the actual audio output (or even a number of different source points somewhere in the loop) could be taken to control a whole variety of parameter targets such as attack and release timings or special filtering behaviour. That’s an essential technique if a sophisticated program dependent dynamic response is the desired goal of an implementation. It gets even worse if a time lag and/or a non-linearity is in the feedback path. All in all, it makes an actual compressor implementation a rather empirical process where placing the control loop sensor and controller not only has to be laid out very carefully (stability criteria) but more important the desired overall interaction and sound must be targeted which has to be judged manually by audio listening tests since no math formula can get you around that.
Meanwhile, my continuous work towards a stateful saturation approach has left the prototyping status for a very first incarnation and a beta test ist already running. Though, this might going to have way more test cycles then usual due to the complexity of this exciting and new DSP implementation.
Related links:
Hey man.. just wanna say something like… you ROCK!
Bootsy,
You TRULY are a Genius! Love the work you do!
Thank God for Geeks like you! Awesome! You rock.
Variety of Sound Forever!
I also believe in feedback!
Your plugins are brilliant!
Great article! Thanks again!
And btw how long was your test cycles period on previous plugins? In days… 😛
A couple of ebooks on feedback control:
Feedback Control Theory (by John Doyle, Bruce Francis, Allen Tannenbaum)
Feedback Systems: An Introduction for Scientists and Engineers (by Karl Åström, Richard Murray)
thanks for sharing, Rod!
Good and most of all intresting reading material as usual with further links to dig deeper. Nice one to you kind sirs 🙂
Very interesting !!
The history of your plugs development and “stateful saturation” let us know better what you are doing and what WE are doing.
The resulting softwares are excellent and I wonder if you are also into “components modeling” (modelisation of every single electronic components)
I often use “component modeled” plugins from a non-commercial university project which were released in the early 2000’s and sound great. These plugs are “univibe” pedal and “JCM900” amplifier and can be found here http://www.kvraudio.com/get/465.html
any news on the beta developing? also, will you implement the new algo in ferric?
I hope I can give an update very soon – stay tuned …
(yuhu!)
What a coincidence, I just re-read about control loop theory via wikipedia and now stumbled across your article!
Check out the Wikipedia article about control systems, it’s a great read (and definitely inspiring for the audio dsp designer, thermostats are pretty cool I told you ;))!
The German version is much, much better than the english one:
http://en.wikipedia.org/wiki/Control_system
http://de.wikipedia.org/wiki/Regelkreis
Interestingly, and back to the Krauts again: The German language has different terms each different control types (!):
“Steuern” – a feed-forward control
“Regeln” – a feed-back control
Cool! This Wiki entry has become pretty much comprehensive over the years. Kaskadenregelung looks tempting btw …