Many people here have probably seen this site before, but I have a second repo that used to contain a walk-through for how to make a VCO that uses very little CPU and has no audible aliasing.
I also have a paper on tips for writing plugins that don’t waste a lot of CPU that many people are familiar with.
While I was at it, I finished a short paper on the evils of DC on the output of audio modules (and how to get rid of it), and a paper on the effect of delays in the VCV-HOST module, and how to avoid getting into problems with that.
As has always been the case, the section on the demo VCOs has lots of general information on how to measure aliasing using a spectrum analyzer.
Hopefully these articles will be interesting to some people. I have tried to keep any obvious “Squinky Labs propaganda” out of there.
Oh, nice! I’m hoping a lot of people will make this simple improvement to their pulse waves. It’s much smaller, but of course even always had the DC on the saw, too. In fact I think someone logged that as a bug years ago. Admittedly my hack will add DC if VCV SDK ever fixes that bug in the minBlep.
Seeing c / 4 makes me think that the new EvenVCO will by poly, using SIMD, which is great. iirc when I made EV3 from EvenVCO I was able to hugely reduce the CPU usage (although EvenVCO was always pretty good with the CPU anyway). One thing I remember was not running minBLEP when it wasn’t needed (in you case output not patched). And maybe the original Even used std::sin instead of a faster approximation?
Anyway - thanks for taking out the DC on the pulse!
EvenVCO, as is currently in the library, is now already poly, but I have a task on my backlog to overhaul to improve the performance exactly as you say (including implementing sync). I don’t know if that’ll make into the next release but it’s planned.
Please don’t use my sync implementation from EV-3. I’m not very proud of that (but at least it works!). I think the one in Fundamental VCO-1 would be a much better model.
Cool. I’m interested in techniques(proper!) about FX type modules where algorithm require internally more than one sample and up to 1024 samples to work.
RNnoise for example requires 480 samples frame size.
In vcv it would need to save up enough samples to start. So it would introduce that much delay. Since vcv has no delay comp (and shouldn’t) that means your effect will introduce that much delay. Unless I’m missing something, that does not sound very “modular friendly” to me.