Right click on the spectrum analyser and set the range of the analysis to show down to -120dB, you’re only showing half that range, down to -60dB.
Changing the bass boost seems to make a big difference on the spectrum even at zero resonance - strange.
Ah, I hadn’t caught you changed the range in yours.
I still have some noise, but it’s not the all encompassing pit of noise the E440 is giving in your screenshots - plus I did mean for mine to be more of a distortion than a filter, hence the wave folding you can see in the scope. If I crank my resonance it starts to resemble the E440, but still nothing quite that broad-spectrum/white in noise.
I’m honestly shocked the E440 looks that bad. I mean, it doesn’t sound as good as yours to my ears, but it doesn’t sound like it should look that bad. It is down far enough I’d think it wouldn’t be hugely audible, but still, it’s weird to me that it’s doing that.
Alright, to avoid picking on the E440 too much, I thought I’d compare against a few others that I see as in the same use case: Filters with grit, but that can be smooth.
Alright, just bought yours. I’m testing against the other modules I know add some dirt for filtering. The Wasp and Ferox are both “CMOS Inverter” filters, Monsuta (My disaster) is a folder-in-a-filter with a lot of other stupidity, and then yours.
It seems to me yours (Yellow) is the cleanest, but also the least likely to clip, hitting 15Vpp on the output. I don’t know if the real hardware would let you do that, going above the rails? Not impossible, but certainly not expected.
Mine (Green) is definitely the worst noise floor, but also the most distorted/harmonically rich, which is sort of obvious given the topology. I also have the weakest signal, actually going smaller peak-to-peak than the input. That’s a side effect of the input being a sine though, as I can assure you it sometimes likes to slam the output depending on the switches at the bottom and input signal. I’ll drop it from the comparison from here.
The two Wasp clones are more interesting to compare to the CF100 I think. They both clip much harder, and both have a lot more going on in the high end. I have the A-124 set to +12dB of boost in the menu.
Switching to a linear plot and dropping Monsuta from the mix,
Yellow = CF100, Red = Ferox, Blue = A-124
It looks to me like the A-124 is aliasing a far amount, albeit it looks like that is low enough to likely not be audible, and indeed testing it quickly it seems to be ever so slightly audible, but only at the extremes and in a way that doesn’t have the stereotypical wosh-wosh-woosh of aliasing as the cutoff is adjusted.
I can’t get any of that out of Ferox, but I think more interestingly the signal does get though a bit even with the cutoff all the way down if bite is high enough. I’ve kept “bite” at 0 though as I think it’s just a pre-filter gain + distortion. Ferox lists it’s frequency from 0 to 1, not in Hz, but with it at 1 has almost exactly the same phase shift as CF100 at 12000. Intriguingly, the A-124 is getting enough phase shift to almost be entirely out of phase. The same is true of the CF100’s behavior though if there’s a good amount of resonance and you do a frequency sweep. Not that this is unexpected or bad.
I think it’s interesting to see here how Ferox actually distorts less on the bottom, but more on the top half. This got me curious about how they respond to DC bias, and suffice it to say the results are wildly different per filter, with the A-124 seemingly being the only of the 3 with AC coupling. I actually think the CF100 wins here too, being the most pleasant sounding when abusing this. Changing the resonance on the CF100 also makes the bottom distort less. With the CF100’s resonance at 4.5ish and drive ~8.8 I can get it to more-or-less match the Ferox’s bottom half, but the Ferox is still clipping a lot more aggressively on the top side. (Ferox set to max drive, 0-resonance, max cutoff - changing resonance doesn’t do much like this)
What was a bit unexpected was the CF100’s self oscillation stopping at ~5kHz. I don’t think this is a big problem, but notable. I also noticed just playing around with it that modulating the CF100’s FM with a strong square was a bit clickier than the others, in a bad way? The obvious answer to this is “duh, it’s a square” but I suspect the others are slewing/LP’ing their CV’s at least a bit.
Overall, I think the CF100 might be the best filter I’ve heard in VCV for “general use”. The Wasp’s are both good for when you need a LOT more grit and that thick but buzzy wall of anger.
I’ll probably put it up against some of Vults other models another time. I’d be particularly interested to see it against the Polivoks emulations.
If you’re pushing the filter into hard clip, then you’ll need to oversample the filter, which is what the Vult ones are doing. Oversampling the filter means you can’t do single sample feedback “tricks” to join the output back to the input like you can in analog, which is why I don’t do that. So if you want a cleaner sound from my DSP, and stronger resonance at high cutoff frequencies, head on up to the Engine menu and select a higher sample rate.
Also I did calibrate the A-124 and the CF100 to clip exactly like the analog devices, as much as possible, I’m pretty sure the outputs go through an op-amp that clips, but I’ll double check since they should not output > +=- 15Volts, so thanks for pointing that out.
Your filter looks like regular aliasing, but note the spectrum still falls off towards the top end. Have you set the cutoff to 12khz? The E440 spectrum looks like a bug in the DSP.
I’m surprised you’re not over sampling for how clean yours are! I’m also quite impressed with the low CPU usage.
I’m not oversampling in Monsuta and I do know I alias a bit (or a lot, at times), but due to other effects in it it’s not actually all that audible over everything else going on and sometimes is actually out right intentional. I have some noodling going on in the feedback path to get the top in roll off to avoid some of the more aggressive aliasing artifacts. I wanted it to be used and abused for harsh, digital distortion sounds, and I think it does do that well. I think the demo videos I’ve made for it are relatively clear in stating their intent is for this and not what you’d typically use a filter for. ¯_(ツ)_/¯
Yes, I checked it out and it definitely doesn’t operate as a regular filter, but does make all kinds of interesting noises.
I may well add an oversampling option, probably a minimum phase two path polyphase one to keep the latency down. I’ve got the code sitting there, but I think it’s a better idea to oversample the entire project for a better sound when pushing things hard as everything gets the benefit of the oversampling, and you get no added latency between devices - it’s more like real eurorack to do this.
my ancient “Stairway” has a wavefolder option, so it can generate a lot of harmonics. Here’s a setting where you can see some grunge that looks like aliasing at maybe -70 db? I think that thing uses 4X oversampling. It’s a bit of a CPU pig, also. btw, sometimes you need to change the sin freq a little bit to see the distinctive aliasing lines.
Hi Rodney,
I tried it with bass boost off and yes, that fixes it. This is what I was expecting, since the E440 oversamples internally and the CF100 doesn’t, so the E440 should be slightly cleaner at 44.1khz for this test, and it is if you switch off bass boost:
Would people find a x2 oversampling option useful for the CF100? This would be a “dumb” control that, not matter the project sample rate, just doubles it for processing. I think this would be useful in patches where you basically driving it a lot like a distortion unit, and don’t want to do single sample feedback stuff by connected outputs directly to inputs.
You are going to need an awfully steep filter to make 2X do anything useful, but if you can do it, sounds cool. I usually used 4X, except in cases where there was also a 16X option. 4, 8, 16 are all pretty common values I’ve seen around…
x2 is plenty if the underlying algorithm is already pretty clean. And yes, the polyphase two path IIR is bloody steep and low cpu.
edit: I support up to x16 for my plugins, and up to x64 on render, but I think x2 is enough for VCV Rack
2X should reduce aliasing 12db, yes?
Yeah, roughly, depending on the distance between aliased harmonic generation and audible frequencies.
One thing I’ve noticed when sending more harmonically rich signals into the FM of the CF100 is that some of the higher frequencies of the modulating signal will actually leak through even with no audio going into the filter input. I don’t know if this is a bug or just an accurate representation of how the real circuit behaves. The E440 also lets through some signal, but it has a distinctly different character. The CF100 lets through something that sounds like a highpassed version of the FM signal, while the E440 lets through a much quieter signal that is less harmonically related to the input.
On the E440, the noise is more pronounced as resonance is increased and disappears entirely below a certain resonance level, but on the CF100, the FM signal leaks through clean (though still highpassed) when resonance is zero.
I don’t think it should be default, but if you have the code and make it a right click option, sure. Even at 44.1 it sounds fine with it pushed to distort pretty hard. I’d rather have single sample feedback stuff work and have the lower CPU usage.
Welcome to accurate analog modelling. The control signal bleed will happen on the SSM2040, the SSI2140, and is part of the characteristic “thump” you get when modulating fast, and is an important part of the tone. Urs from U-He checked out the CF100 and this was the first thing he checked to see if I “got it right”.
Yeah, it would be optional for sure, and not on by default.
Love this thread for the discussion of how amazing filters can be. It’s also why I have more filters than any other module in hardware.