|XILS 4, Oxium :
|"... I'm very drawn to it's warm old school sound. It reminds me of the BBC Radiophonic Workshop ..."
Xils-lab zero-delay filter: an other story !
If you are reading this, it is probably because you want more in depth technical information about zero delay feedback filters (0df)
What does that means ? Are Xils-lab filters using them ?
So Let's begin with : What is a "delay" in a digital filter ?
We must first define what is a digital filter which implies to define what is a digital audio signal.
A computer, a digital signal processor (DSP), can handle only numbers. This means that at some point the real audio signal must be converted into numbers : 0 and 1. We call this Analog to Digital conversion, which "samples" the real life at a rate given by the "sample frequency" (the smalest cycle). Obvioulsy a Digital to Analog conversion allows to reverse this process, in order to be able to listen to the results of all these computations :Our ears remain "analog".
Provided the sample frequency is high enough these convertions are unnoticeable : half this sample frequency must but over the human ear limit (around 20 kHz). We call this the Shannon iimit (or Nyquist frequency).
Now things are a little more complicated as we don't want only to convert the signal then back to Analog. We also want to do something with these numbers, filtering or synthesis for instance. This is not a real problem if there is no feedback during the calculations, by this we mean no loop between the output and the input of a module. So, as an example, applying a gain to an audio signal, meaning multiplying it, is exactly the same than applying a gain in the real word (we are not speaking of distortion, which is an other story, just multiplying)
Unfortunately, in a filter (analog or digital), there is a least one feedback, and very often ... several ones !
As a concequence, in the real (analog) world, to calculate the output of this module, we are calculating
output = function (output + input),
while in the digital world,
output = function (previous_output + input) !
You certainly did notice that we wrote "previous_output" for the digital world. This means that the analog filter output is calculated simultaneously while the feedback occurs, while, in the digital world, the output is calculated with the delayed by one sample frequency clock output (hence the name given by Vadim Zavalishin from NI, back 2008 )
So : There we have THIS delay and THERE we have this problem with the DIRECT translation of analog filters equations to the digital world.
Why is it so important that a lot of guys want to work hard to remove it ?
As we have seen above, This minimal delay is 1 sample frequency clock, around 20 microseconds at 44.1kHz. So this won't be heard DIRECTLY, and it's especially important to notice that this won't be involved in the modulation response or the envelope sharpness (an analogical envelope doesn't go below 0.1 ms or something like that which corresponds to around 4/5 sample at 44.1 kHz ).
This delay has the "simple" effect to "strech" the infinite analog space where what we are calling "poles" and "zeros" are located, into a limited circular plane. Poles and Zeros are the "parameters" of the filter which gives the filter responce: The cutof frequency and its resonnance. One of the direct concequence of this strech for instance, is to link the cutoff frequency and the resonnance, but there are a lot of other ones.
That means for instance, that during a frequency sweep, the resonance is varying a lot. Additionally modifying the resonance will change the cutoff frequency.
Opposite to this digital behavior, real analog filters keep resonance and frequency almost independent. Just look at the following video, this will explain better than words, in the case of the well knwon Moog ladder structure (this is a simplified implementation) :
XILS-lab Zero delay filters :
Finding a solution : Since the problem has been identified, several possible solutions have been proposed, some of them having reached the production level, some remaining theoretical ones : Solving the mathematical equations as reported Vadim some ears ago, Oversampling a lot to reduce the delay to a ridiculous time, predictive algorithms, or going a other way, which might seen as preferable for multiple reasons, the most important one being the very heavy CPU cost involved by most of the other solutions.
For now three years, and since our first synthesizer, Xils-lab took the other way to emulate analog filters and proposes its own version to address the digital delay problem, algoritm always updated and improved by a constant work. Obviously emulating an analog filter IS emulating a zero delay filter, all the problem is to find a way without a to high CPU cost, to manage the strech of the infinite plane into a small circle .....
An other test : The purpose is to show how a self-oscillating filter handles the harmonics of a swept oscillator.
You will heard the differences between three filters, a real analog filter and two zero-delay digital algorithms, including the one we created for our Synthix synthesizer. Please note that the real analog filter don't "stop" when the frequency is reaching an harmonic.
Some will say, "Hmm, this is a scientific experience, nothing related with Music". Yes, that's true, but this experiment can show the differences between different algorithms and the behavior of a real analogical filter. This is also a very simple and very easy test that every body can do because it only involves one oscillator and one filter, things can be tweak in a almost identical way in the diferent units to make the results comparable.
Finally, another insteresting test is the standard self-oscillating filter sweep. As for the previous test, two different algorithms were tested, bringing two different sounds, but with almost the same theoretical results, excepted the CPU involed and how the filter manages to go through the hamonics.
First at Xils-lab, we do admit that we don't think that the job completely done. We don't state or claim that our emulations are 100% identical with their true analog conterparts, because we know it is simply not the truth for multiple reasons. We have always kept ourself humble behind our models.
"We are getting close BUT ...". is the way we see it.
That's why each time we are working on a new synthesizer, we are improving our algorithms. The last one, used for the Synthix, shows where we are at the moment, but we are keeping working on it as we keep working on non-linearities (an other part of the analog filters which is sometime confused with the zero-delay filters problem).
So let's work more on this side, making our filters more and more accurate and musical .....
Then we hope that all these informations regarding the zero-delay filters will help you to know a little more about this confusing notion.
More than that, we decided to give you the needed tools and informations to test your synthesizers behavior and so that you don't rely anymore on advertizings to make your opinion and that you will be able to share true informations.