Moog Filter Ugens

Hello All,
SC Help lists four Moog filter-style Ugens (BMoog, MoogFF, MoogLadder, and MoogVCF). Is there any substantial difference in sound or performance between them? Is any particular one preferred?

I’m pretty sure these are all different implementations of the Moog Ladder filter. Preference is really in the ear of the beholder on this. They all sound slightly different, as they all have a different take on how to implement this analog circuit in digital. Here is a paper describing what is going on:

https://www.researchgate.net/publication/261193653_An_improved_virtual_analog_model_of_the_Moog_ladder_filter

1 Like

To throw a different one in, a while ago I ported the filter from Tal-Noisemaker, which is an implementation of an algorithm by Antti Houvilainen that also aims to replicate the Moog ladder. I’ve been using it since and find it better sounding and also the cutoff frequency can be modulated at audio rate so you can get some cool FM stuff from it. GitHub - esluyter/houvilainenfilter: Port of filter described by Antti Houvilainen in text "Non linear digital implementation of the moog ladder filter"

1 Like

Awesome. I need to check this out. I compiled Julius Smiths moog_vcf_2b for SC here:

The faust code is literally just his filter, but it is nice to have this in SC. I made a little help file.

I’m going to compare the sound of the two. Fun stuff.

Sam

Thanks, Sam and Eric. I look forward to experimenting.

The HouvilainenFilter sounds great. The resonance is nice and rich, and I also love the BPF mode in there.

Like analog filters, you can always have too many…

Sam

I think the BMoog Ugen stands out a especially good sounding. I believe it has some nice sound examples in the help file also.

There are also some quality MCP-Plugins LADSPA plugins
https://kokkinizita.linuxaudio.org/linuxaudio/ladspa/index.html

Been looking back at these Moog filters. The HouvilainenFilter is really special. I recommend you try it. If you know the history of this, the Houvilainen Filter design is from 2004. It sounds awesome. The more recent model is the Zavalishin, which is described in THE ART OF VA FILTER DESIGN. The VALadder from ported plugins uses the Zavalishin design, but there are errors in the original Pirkle implementation which make it not so usable.

Thus, I took the VA model from faust (which according to the faust source corrects the Pirkle errors) and implemented it in C++ here:

VAMoogFilterOS

Mac universal and windows builds are here:

release builds

Some nice features that I added to Dario San Filipo’s faust code:

  1. Oversampling allows the filter to ring better and sound smoother
  2. I added an internal tanh function where the filter blows up which stops if from blowing up and allows it to self oscillate.

Anyhow, check it out. Let me know if there are any bugs.

Sam

5 Likes

This sounds really good!

very casually comparing an extreme FM example with the one I ported from tal… they behave pretty similarly with yours set to 16x oversampling, but I think yours sounds better (i.e. smoother, less digital) and also uses about 3-4x more CPU… I do wonder why the resonance is way less pronounced at lower oversampling rates.

{ Limiter.ar(VAMoogLadderOS.ar(PinkNoise.ar(1!2), SinOsc.ar(MouseX.kr(1, 10000, \exponential)).exprange(100, 5000), MouseY.kr(0.8, 1.1), 4), 0.9) }.scope



{ Limiter.ar(HouvilainenFilter.ar(PinkNoise.ar(1!2), SinOsc.ar(MouseX.kr(1, 10000, \exponential)).exprange(100, 5000), MouseY.kr(0.8, 1.1)), 0.9) }.scope

I miss the ability to set different filter modes (LP, HP, BP) and slopes (6db, 12db, 18db, 24db) – wish I were better with c++ and DSP …

Well, we are lucky that our racks have infinite hp. We can have as many filters as we want.

CPU-wise, the HouvilainenFilter has 4x oversampling on at all times, so it should be similar to VAMoogLadderOS with an oversampling index of 2. I am upsampling the frequency value as well as the quality, so that might help with extreme modulation.

But when I listen to this comparison, each filter sounds better with certain parameters, so having both is the best solution! HouvilainenFilter is clipping the feedback in a different way and this seems to create a smoother sound with in full resonance mode. Also, the res and q_val values don’t really mean the same thing, so it is a bit apples to oranges.

Yeah…I need to spend some time with chapter 2 of the Zavalishin to get a state variable version.

Sam

1 Like