# [sdiy] NCO Jitter (was Large Numbers)

Andrew Simper andy at cytomic.com
Sun Jul 15 13:12:39 CEST 2018

```On Sun, 15 Jul 2018 at 00:45, Richie Burnett <rburnett at richieburnett.co.uk>
wrote:

> ...-Richie,
>
> Ps, I would encourage you to read up about BLIT, MinBLEP, polyBLEP, etc,
> if your're interested in digital synthesis of classic analog waveforms with
> reduced aliasing. These algorithms solve the problem of aliasing a more
> elegantly than just increasing the sample rate. They are a lot more
> efficient than simply burning CPU cycles by oversampling, which turns out
> to be a relatively poor method of achieving the end result. Papers by Tim
> Stilton and Eli Brandt are a good place to start.
>
> Sent from my Xperia SP on O2
>
>
If you want to use BLEP then stick with Linear Phase BLEP, it's easy to
handle DC offset accumulation with frequency changes. There is another
method which is probably better in this case: DPW. The basic idea is you
integrate the desired waveform and generate this directly using a trivial
non-bandlimited method, you then use numerical differentiation to recover
the desired waveform. For example for a sawtooth you need a parabolic
waveform, which you can easily generate by squaring your phase accumulator
as follows...

init:
phase = 0
prb = 0
inc = freq/samplerate
incinv = 1.0/inc

tick:
phase += inc
if (phase >= 0.5) phase -= 1.0
prbz = prb
prb = phase*phase
saw = (prb - prbz)*incinv

This can also be applied reduce aliasing in waveshapers, but it does
introduce low pass filtering of 1/2 + 1/2 z^-1, which delays the input by
half a sample. Thanks to Antti Huovilainen for putting me onto this method
:)

Cheers,

Andy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://synth-diy.org/pipermail/synth-diy/attachments/20180715/9ddb1f95/attachment.htm>
```