Aliasing in Fundamental VCO Saw output

Ever notice that Fundamental VCO-1 has more aliasing on the sawtooth output than one would expect? I didn’t notice this until VCV 2.0 test builds, but it seems it’s been there all along. I’ve always thought that Fundamental was an extremely clean VCO, and the VCOs I’ve made by copying it are all very clean. And I should mention I can’t hear this small amount of aliasing. I don’t know if anyone can, but it’s “wrong”.

Today I finally compared the code for Fundamental against my “Demo 3” VCO, which I had thought were identical. I quickly saw that the only obvious difference in the code is the way the output waveform is calculated, in VoltageControllerOscillator::saw(). And they are only different in analog mode (which I didn’t implement). Well, it turns out the aliasing in Fundamental VCO-1’s sawtooth output is in analog mode, but not in digital mode.

I can’t tell by looking at it why this happens, or how to fix it. Here is a comparison of analog vs digital. Note that the vertical scale is expanded to 120 db, so these are both pretty clean. But you can clearly see that digital mode is extremely clean, whereas analog mode is quite clearly less clean.

The only difference in the code seems to be the use of the expcurve approximation rather than a linear ramp. Does this also happen for triangle in analog mode? That’s the only other waveform using expcurve.

My memory is that triangle doen’t have any anti-aliasing, and arguably doesn’t need it. Let me check…

Yeah, Fundamental (version 1) doesn’t have any anti-alias on the triangle, so the digital and analog versions look very similar on the analyzer. Good-old EvenVCO generates a triangle by integrating in MinBLEP square, so it have very, very low aliasing.

Oh, now I see what you are getting at. Does the alias come from that exp shape or from something else? I assumed (for no good reason) that the aliasing on the analog saw is because somehow the level seems slightly wrong so that when you add in the minBLEP it doesn’t fully cancel the aliasing. But for sure I don’t know.

Yup, I always saw that and can definately hear it a lot.

Yeah, I think it’s just a simple bug. I was hoping maybe if I posted here I wouldn’t have to go write up a bug. @LarsBjerregaard I did find a really bad bug in WT VCO that was probably causing the horrendous aliasing we were discussing. I logged it here: WT VCO does something horrible if you change wave points after loading · Issue #133 · VCVRack/Fundamental · GitHub

It also seems like something that’s simple and easy to fix.

1 Like

Thanks Bruce, fingers crossed.

1 Like

Aren’t github issues no longer? Should this not go to support at vcvrack dot com for v2?

Github issues are still there for the Fundamental modules. You are correct that bugs on VCV itself are supposed to be reported via email. Since it’s still there I’m assuming github is still the “correct” place to log issues.

I have found that logging bugs with VCV does not usually result in them being fixed. But we will see.

I’ve had quite good results in that regard recently - 4 reported, all acknowledged, at least 2 fixed so far, with the 3rd planned in if not already done and the 4th, reported just yesterday being worked on!

Edit - make that 5 reported with at least 4 fixed so far

1 Like

You have better luck than I do. I think I’ve logged a bunch about fundamental, but I don’t think any have been fixed. after years.

I reported 3 bugs in core and fundamental v2. All three have been fixed.

I logged these ones, admittedly all in the last two months:

And I logged the original of this ancient one: