Invoking the gods of DSP! (Yes, another Moog Filter thread)


#1

Hi everyone,

I recently joined the Axoloti Core community (being from a PureData background) and started working on a Moog Taurus Bass Pedal clone. I did a few iterations on Raspberry PIs in the past, worked great but the Axoloti Core is a much more elegant solution to me.

Now, I've got a nice patch emulating the Moog Taurus engine, it sounds pretty good. I've been using the "Ladder1" object from Jaffa. The filter is rather good but it is on the "conservative" side I would say. I totally understand why as the Axoloti Core doesn't have tons of CPU to spare. Ladder1 is based on the Karlsen ladder algorithm (from MusicDSP.org) and is very CPU friendly.

My Taurus patch consumes only 12-15% of the CPU so far, I'd be willing to "sacrifice" some CPU cycles to obtain a better Moog Ladder Filter implementation. Back in my PureData days, I used a port of Antti Huovilainen's implementation (called ~muug) which sounded really close to the original. PDF documentation here: https://pdfs.semanticscholar.org/c490/4c04a7be1d675e360409178da71a1253f6d8.pdf MusicDSP.org examples here: https://www.musicdsp.org/en/latest/Filters/196-moog-filter.html

Researching further more on this topic, I found that there's a recent document on the subject, from Mister Dangelo (worked with Arturia and such) https://aaltodoc.aalto.fi/bitstream/handle/123456789/14420/article6.pdf

Nowdays, I regret not listening in math classes! :smile: I'm a software developer, mostly a Python programmer and I know bits and pieces of C/C++. Used to do 6502 Assembler back in the Commodore 64 days, I can "decode" and hack my way around. But this is something else! I'd love to do this myself but it's a little over my head.

Copied Jaffa's object and tried to modify it, got no luck so far. Is there any one around who's willing to take a look at this and help a poor soul making his patch better? The community could also benefit from this... Say for a "Minimoog" clone? :slight_smile:

Thanks in advance guys,

Best regards from Montreal,

Marc aka Khorus


#2

Yes I agree. The resonance is limited, for example. But if I set the limit for the resonance a little bit higher it didn't sound good and explodes. You can try tweaking the limit and multiplications inside the object a bit, but I think I got pretty close to the limit.

And yes It's based on that filter from musicdsp.org. I tried a few of the others too but didn't manage to get them working. I did make most of the Moog filter from musicdsp for VCV and they worked fine, but had some issues with getting them woring with Axoloti. but this one worked :slight_smile:

I think implementing same filter on different platforms will give you different results. I am not 100% happy with Ladder1, but I think it has a good and different sound, compard to other types of filters for Axo.

Maybe oversampling it a couple of times would do it some good, resonance wouldn't explode at as low settings as it does now. But for oversampling on Axoloti I am a bit lost. I bet you would be able to get a better sounding and more resonant filter :slight_smile: When you oversample for example bob~ filter in PD it does that raises the level of when the resonance blows so. So it will probably acts the same for Axoloti :slight_smile:

That said, I don't think Axoloti is the best choice for bass sounds. It shines on so many areas but bass is in my opinion not the strong side of Axoloti.

About the muug~ for pd. As far as i remember that filter is pretty heavy, even in PD. So you might get it working for Axoloti, but I think it will be very heavy on Axoloti.


#3

Well, first, let me take the time to thank you for your work! Having Ladder1 is better than having none I must say! I did "tweak" your filter by feeding it a blend of oscillators going through your "tanh" overdrive object, it helped quite a bit! (Emulating that "too hot/pushed" Moog filter drive). For sure implementing different algos on different platforms yields to different results, agreed.

My friend, you'd be surprised on how much low end I can get out of this thing! I cheated a bit by adding an additional parallel path with an high-pass filter around 50-60hz and blending it back to the original signal, it can shake some serious booty! :smile: I can post WAVs/MP3s (if you are interested) of an original Taurus and a sample of my patch, it's damn close.

The muug object might be a little heavy but It ran fine on my headless Raspberry PIs (v1, v2 and v3). What I like most about this object is its rather agressive mids that Moog filters are renowned for. I'll try to hack away, with your blessings, Ladder1 and try to port some other algos, I'll keep you informed.

Thanks for answering so fast and best regards from Montreal!

Marc aka Khorus


#4

Yeah making some combinations surely helps a lot no doubt :wink: Saturation is always good. Would love an oversamped version of the tanh object too, hehe :slight_smile: But yeah, no idea how to do that.

Yeah I also do that, the parallel filter thing, it helps a bit, no doubt :slight_smile:

Yeah surely 1 or 2 filters in a patch is plausible :slight_smile:

If you come up with something, I am always interested. Filters is a hot topic for Axoloti :wink:


#5

have you tried all filters in the library?

i.e. jt/filter/vcf4pole2x

tiar/filter/MgExp


#6

Note that The tiar/filter/MgExp filter has no internal non linearities but its resonance is nice on high cutoff and you can open it above 13kHz.
You can add some saturation objects on its inputs and outputs if you want some.


#7

Believe it or not, I was trying to write my own Moog filter based on the Raph Levien python algorithm when I realized that SmashedTransistors already done the job! Thanks man!!! The MgExp looks good, tried it real fast with my headphones yesterday, this might do the trick!

I'll have a look at vcf4pole2x too, I saw this object in a few example around here.

I did add some saturation on the input, but I never tried on the output, will try this too!

Thanks for the answers guys, It's appreciated. Next beer's on me! :wink:

Marc aka Khorus


#8

Update: I loaded up my old PD patch to see which Moog filter I was using, it turns out that it was Guenter Geiger's (GGEE) Moog~ object.

Looked at the source, couldn't find any mention of his research (which algo it's based on), I wonder if GGEE did implement it himself. Anyway, if you guys wanna have a look at it, here's the link: https://github.com/agraef/purr-data/blob/master/externals/ggee/filters/moog~.c

This one sounded nice if I remember! :smiley:

Cheers!


#9

Just wanted to say thanks for the heads-up. I did overlook the "vcf4pole2x" thinking it was just a basic emulation of a Moog filter. It turns out it is the one I prefer over the 3 offerings that the Axoloti platform offers so far. It's more CPU intensive but I can live with it.

Cheers from Montreal!

Marc aka Khorus


#10

Would love to see some of the Lindenberg Research filters in Axoloti. I like them they are good quality emulations.