[sdiy] NCO Jitter (was Large Numbers)
Tim Ressel
timr at circuitabbey.com
Thu Jul 19 08:46:10 CEST 2018
The BLITs and BLEPs deal with the aliasing you get from sharp edges. I
am more concerned with the jitter you get from the mathematical residue
of the ratio of F/Fs. In my experience it is an issue mostly with
sawtooth waveforms. Triangles and sines seem to have much less trouble.
Someone mentioned oversampling the NCOs and decimating. It seems to me
the act of decimation just brings the problem back. Why not just filter
the NCO straight and skip the oversampling/decimation?
--tr
On 7/15/2018 4:12 AM, Andrew Simper wrote:
> On Sun, 15 Jul 2018 at 00:45, Richie Burnett
> <rburnett at richieburnett.co.uk <mailto: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
>
>
--
--Tim Ressel
Circuit Abbey
timr at circuitabbey.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://synth-diy.org/pipermail/synth-diy/attachments/20180718/20ec09df/attachment.htm>
More information about the Synth-diy
mailing list