[sdiy] Digital accumulator VCO core?

Brian Willoughby brianw at audiobanshee.com
Fri Feb 12 22:38:29 CET 2021

On Feb 12, 2021, at 11:33, Tom Wiltshire wrote:
> On 12 Feb 2021, at 19:02, Gordonjcp wrote:
>> On Fri, Feb 12, 2021 at 11:12:34AM +0000, Mike Bryant wrote:
>>>> p.s. While you're experimenting with this digital accumulator (I can't wait to hear what results you get), I'm toying  around with ways to get continuous frequency control out of digital oscillators. I want to do this without using software BLEP and other > tricks that consume a lot of processing power. That's because I want to get frequency out of the discrete realm and into the continuous realm. I don't know that it will *sound* better, but that doesn't stop me from wanting to try...
>>> Surely once you get to a 32 bit accumulator then its way beyond any discrete step your ear can determine.  Any perceived difference would thus be in the realm of those people who claim to be able to hear the difference between decent op-amps or low-noise transistors.
>>> I'm also not sure why people use BLEP or other techniques - just use the accumulators to create a perfect sawtooth, square, triangle or indeed noise, and then put it through a simple digital filter before the DAC to get rid of anything that could alias.   If you run at 96kHz sampling this becomes pretty trivial in computational terms - a few shift rights or multiplies and some adds.
>> That doesn't actually work.
>> If you generate a step, you generate aliasing and it's already down in your desired audio spectrum.  You'd need to run at some small number of MHz sampling rate, filter, and then decimate to 96kHz.  If you generate a naive sawtooth at 96kHz it'll alias like crazy in the low hundreds of Hz.
> The amazing thing for me is that if you generate that naive ramp with all that aliasing that folds down into the audio spectrum that you’ll hear, and then apply BLEP adjustments on the edges, it all miraculously disappears (well, nearly all - adjust to taste). That’s just remarkable!

Others have already pointed out the distinction, but I thought I would try wording it a different way.

The BLEP method does not start by generating discontinuities and then adjusting them. BLEP actually avoids the discontinuities in the first place, and uses those integrated minimum-phase band-limited step functions *instead* of the discontinuity.

It's the discontinuity (1st order and/or 2nd order) that creates the aliasing, and BLEP avoids aliasing by avoiding discontinuities. The only aspect of the discontinuity that's uses is its amplitude, which is used to scale the integrated minimum-phase band-limited step function.

As the rules says, when synthesizing in the digital domain, once you create harmonics that will alias, you cannot filter them out. As far as I understand, BLEP cannot remove aliased harmonics that already exist in the digital audio stream - all BLEP does is save you from generating those aliased harmonics while synthesizing new digital audio.

Brian Willoughby

More information about the Synth-diy mailing list