Moog "zero delay feedback" ladder filters + Korg & friends
  • Hey everyone,

    Here is a Moog ladder filter for you. It's a zero delay feedback filter, meaning that the topology and transfer function of the analog filter are preserved. Credits for the design go to V. Zavalishin ( ) and W. Pirkle ( ).

    Attached some sound examples, recorded on iOS with audulus (with some delay from the module library)

    Moog ladder 'ZDF' LP filter.audulus
  • sounds nice when using alone and without modulation... i tried to include your ladder filter design into my duofilter in replacing it with the filter node... and it worked and sounded cool but as soon as i started to modulate it with an lfo it created a NaN in your filter modul which doesnt happen with the filter node :D

    looks like certain Hz - Q combinations create this NaN.. i will recreate it and show you a screenshot that you can see where it happen in your modul... i forgot to do that
    1022 x 764 - 133K
    1018 x 764 - 147K
  • Ah OK thanks for the heads up, I'm going to look at it.
  • here the inside of your modul which i forgot to do a screenshot from..
    1920 x 1080 - 220K
  • I see it's on Mac or PC. What is the sampling frequency? Is there any lfo rate/depth that is problematic or it crashes as soon as you modulate? At first glance, I can't reproduce the problem on iOS (44.1 k Hz).
  • its on win7 ... it crashes at certain hz knobs - Q postions but if i dont modulate it throu an lfo it works just fine... maybe it is not your modul... as i happen to create NaNs alot hahaha

    i attached my duofilterx modul which includes your ladder filter.. when modulated (with LFO) cv a and cv b or only 1 of them and you play around with the freq knobs of the filters while Q (Res) knob is in mid to max position it happens... with the included audulus filter node wont happen..
    DuoFilterX v4.1 12db ladder.audulus
  • @Phal_anx The sum of the modulated values going into the knob of the filter module was exceeding 1 and creating the NaN. If you clamp the signal the same way as the Q knob input is clamped your filter sounds hella wet!

    @sansnom I love the sound of the filter! Please explain what the different parts do, like why are there four low pass filters inside?
    DuoFilterX v4.1 12db ladderCLAMPED.audulus
  • @RobertSyrett - just checked.... i had a clamp function in it in the original duofilter... but deleted it by accident when including the ladder... :D its really too funny that i always end up making such silly mistakes :D
  • yea now that improved my filter x10 :D thanks - @SansNom for this filter modul! my problem is solved
  • Wow great!
  • @RobertSyrett - It's a ladder filter, 4 cascaded 1-pole filters that produce a 4-pole filter (24 dB/oct). This one is the one featured in the minimoog I think.

    The zero delay feedback term means that no additionnal z-1 delay is required in the feedback paths. That keeps the transfer function of the filter intact and the sound is just closer to the original.
  • And all the trigonometry over on the left is to shape the over-driven resonance?
  • No the resonance is created by the feedback and the cascaded filters. The tanh functions are here to add some soft saturation and mimic the behavior of the analog components. On the left, the trigonometry is here because some of the variables are expressed in radians I think. The knob has an exponential travel, similar to the real gear.
  • I thought i upload a small sample.. this is how it sounds with a melody
    my duofilterx with the working ladder filter and modulated via 2 LFOs
  • @SansNom Thank you for taking the time to explain. How would you add resonance to the 1 pole filter I have attached (which is just copy pasta from your moog filter). :)
  • Really cool. Don't know how it sounded before, but this sounds great.
  • @ RobertSyrett - no resonance on a 1-pole filter. It's not just feedback and gain, but phase. The filter changes the phase of the harmonics and with 1 filter the cutoff frequency is 45° out of phase. With 4 cascaded filters it's 180°, meaning it's back in phase and can produce resonance. Well this is my understanding.
  • @phal_anx I agree, the filter sounds very squelchy. I definitely think the SansNom Moog filter deserves the phat filter bounty.
  • @RobertSyrett - most certainly!
  • Thanks guys!
  • very cool, well done!
  • Nice, good to see someone make some Audulus sense out of the Zavelishin book.. can't test this right now but audio demos show good bass response..

    Does the filter self oscillate? I struggled with that aspect
  • @afta8 If you send a transient into the filter it will ring for a very long time but it doesn't self-oscillate from silence and the ringing gets quieter over time.
  • @afta8 - True, it doesn't self oscillate strictly speaking, with absolutely no incoming signal. However if you feed the filter with a very small amount of noise, as can be expected on an analog device (like a level of 10-4) it will resonate. Unplug the noise source and it still rings.
  • - 1.1 update: now the filter self-oscillates + some minor gain adjustments.
    Moog ladder 'ZDF' LP filter v1.1.audulus
  • @SansNom - nice addition! will instantly insert it into my duofilter :D
  • @Phal_anx - More to come! If anything goes wrong, please comment!
  • @SansNom - good to know, the more the better haha...
    of course i will comment if something doesnt work or not as intended.. ;) i included the latest version already in my duofilter... works perfect. now i m able to create e.g. kickdrum with the filter and envelopes :D
  • Having fun with the Moog LPF 4 poles but feeling that's not enough? What about 5 more filters for the price of one ;)? Here is the Moog ladder multimode filter, featuring lowpass 2 and 4 poles, bandpass 2 and 4 poles and highpass 2 and 4 poles. The different modes are taken from the Oberheim Xpander version of the filter.

    2048 x 1536 - 193K
    Moog ladder 'ZDF' multimode filter.audulus
  • Wow, this is great, thanks for sharing
  • Moog multimode v1.1 update:

    - poly frequency display error fixed
    - notch 2 pole mode added! So a total of 7 ZDF filters available.
    2048 x 1536 - 182K
    Moog ladder 'ZDF' multimode filter v1.1.audulus
  • If you feed the hz knob a value of more than 1, it whites out, so needs clamping...
    Moog ladder 'ZDF' multimode filter v1.1.audulus
  • Thanks, it's better with some safety.

    Update v1.2: I messed around with the soft clipping parameters and design a lot, and this version seems the better. Sligtht changes compared to the previous versions. Small changes in the resonance section. Added clamps and a clipping led.

    It is recommended to set the sampling rate to 96 kHz or above for best results at extreme settings. Unfortunately on iOS the SR seems caped to 44.1 kHz. The authors of the design recommend a 4x oversampling in this case, but I don't think this is user option in Audulus.
    Moog ladder 'ZDF' LP filter v1.2.audulus
    Moog ladder 'ZDF' multimode filter v1.2.audulus
  • once again stunned, absolutely gob-smacked by the talent of this community -

    - the v1.2 versions of these filters are "boneriffic" in the best way!! - thanks team!
    cheers ..!
  • Thanks for the kind words. More is coming...
  • Any hope of a SEM style Filter or a Filter where you can change the number of poles/bass boost?
  • WOW! Amazing stuff!
  • @RobertSyrett - It's on the list. This is the kind of stuff I like the most too but I can't promise anything yet.
    @plurgid - thanks!
  • So amazing!!!
  • @biminiroad -thanks, I believe that all the hard work done on the z-1 node really pays off here.
  • Well, this one is really a tough one. Consider this as version 1.0, it will be updated for sure.

    So today we have the Korg35 lowpass filter, the one used in the MS-20 Mk1 and the recent monotron/monotribe, etc. It's a 2-pole lowpass filter with some very specific features: no incoming signal gain drop when increasing resonance (in opposition to the Moog ladder) and strong diode clipping at high resonance / input gain (nonlinear behavior). Distorsion can be really extreme, here is a sound example (recorded in Audulus, iOS, first without resonance, then resonance pushed to maximum):

    The gain of the incoming signal being kept constant when the resonance is increased, the filter will react very differently with varying input levels. To obtain this kind of distorsion, give some headroom to the resonance and keep the input level low.

    The linear model is again a ZDF filter (credits to W. Pirkle). I modeled the nonlinerarities, featuring diode like clipping and assymetrical resonance response just like the original (see the image, the resonance is stronger for the negative part of the signal than for the positive one).

    All these non-linearities do introduce a lot of aliasing however at extreme settings (not so extreme for the cutoff...). I minimized this effect by lowering the non-linearities at high cutoff frequencies. But oversampling is needed for better results and I'm a bit stuck here. See these links:
    oversampling built in reaktor:
    and this discussion in the NI forums on exactly the same issue (featuring Vadim, the guy behind these ZDF filters and cited in the OP)

    Again comments and input appreciated!
    2048 x 1536 - 330K
    Korg35 Lowpass filter.audulus
  • Wow, @SansNom That Korg filter sounds incredible. I did not know I loved asymmetrical resonance. This is definitely one for the collection.
  • @RobertSyrett- It does have an influence on the sound. I didn't know that before either.
  • @Taylor- if you read this topic, any advice about oversampling?
  • By popular demand, the HP version of the Korg35. Still a 2-pole filter, but strangely with a 6 dB/oct roll-off. Featuring distorsion at high Q too.
    Korg35 Highpass filter.audulus
  • @SansNom - oversampling is something that we'll probably implement in the future. Ideally, you could set the sample rate of every single connection individually and super-optimize your patches. For example - buttons don't need to be sampled at 44.1k - at most maybe 100Hz to feel snappy. Taylor was going to do this before, but nixed it for some complication. But it definitely needs to happen for some more higher-level analog modelling stuff to go down, so it's on his radar.
  • Sorry cool patch btw! Forgot to mention that haha.
  • @biminiroad- that's good to know, thanks for the details. Yes it's needed for high level VA modeling.
  • Maestro! The filter, she is beautiful :)

    Did you guys see that new Novation Peak has internal oversampling on the order of megahertz on the oscillators? That is bonkers.
  • No, I didn't know. They are probably aliasing free then ;) .
  • I'm *extremely pleased* to see we now have these filters :). It took me a long time to get z-1 to be efficient, and it's finally paying off!