[sdiy] Synthex Oscillator

Gordonjcp gordonjcp at gjcp.net
Sat Jul 8 12:18:08 CEST 2017


On Sat, Jul 08, 2017 at 02:49:40AM -0700, rsdio at audiobanshee.com wrote:
> 
> The fact that the rate is variable does not remove aliasing. A variable sample rate simply has a variable Nyquist frequency, such that aliasing moves around as the rate varies.
> 
> The fact that there is an analog clock does not remove aliasing. Any kind of sampling is susceptible to aliasing if filtering isn't handled correctly. An analog clock merely means that the rate is continuously variable, rather than varied by steps, but that is completely independent of aliasing concerns.

Right; but you'll never hear it aliasing.

Let's consider a 1kHz naive sawtooth wave generated at a 10kHz sample rate.  It's got to have significant partials above 5kHz, right?  You've got harmonics every 1kHz.  You'll have 1/5 amplitude at 5kHz bang on Nyquist, 1/6 amplitude (still pretty loud) reflected back down to 4kHz, 1/7 amplitude reflected back down to 3kHz and so on.

Those aliased partials are going to be harmonic with the other partials,
and you will not hear them.

Now let's generate a 1.01khz naive sawtooth.  Oh, bugger, that's a mess.
That fifth harmonic is trying to be 5050Hz but is aliasing down to
4950Hz, that 6th harmonic is down at 3940Hz, it's all over the shop!
What a horrible racket it's making!

If you want to think of it another way, you can see that the sawtooth
"step" occurs "between samples" so an error builds up until it "wraps
around" - if we made a 1010Hz sawtooth it would have all sorts of
horrible buzzing, if we made it 1001Hz then you'd get a distinct "tap
tap tap tap" as the error builds and resets.  If you don't quite see
what I mean, fire up Audacity, set it to an 8kHz project rate, and
generate a 1001Hz sawtooth and zoom in.  Any sawtooth with a period that
divides *exactly* into 8kHz would be more-or-less alias-free.

Let's try a couple - Middle A is 261.63Hz.  Generate that at 8kHz sample
rate, sounds rough as rats.  Now 8000/261.63 is 30.576, round it up, we
get 8000/31.0 = 258.0645 and if you generate *that* slightly flattened
pitch you won't get any aliasing at all.

Now this is interesting because you could generate a bunch of naive
sawtooths or squarewaves at slightly off-temper and your instrument
would never alias, but any sort of pitch bend or vibrato applied to
anything other than the master oscillator would sound hellish.

In the Synthex's case, that's exactly what we're doing - we're
generating a sawtooth that fits exactly into 256 cycles of the sample
rate and bringing the sample rate down to suit where we want the final
note pitch.  The oscillator cannot alias, or rather it can but the
aliases land exactly on partials that we already have below Nyquist.

-- 
Gordonjcp MM0YEQ




More information about the Synth-diy mailing list