[sdiy] [synth-diy] numerically controlled superoscillator without hard sync

rburnett at richieburnett.co.uk rburnett at richieburnett.co.uk
Mon Feb 10 00:18:45 CET 2014


The main problems with this scheme are the wide range of frequencies 
that the clocking oscillator must cover to be musically useful, and the 
performance demands made of the variable-sample-rate DAC used to output 
the audio.  (eg. glitch energy at the analogue output every time one of 
the digital input lines change state.)

DDS chips are cheaply available now that will let you generate 
frequencies from DC to well into the hundreds of MHz, to a resolution 
measured in the milli-hertz!  These are digitally programmed devices 
though, not VCOs. Analogue VCOs capable of operating up into the high 
MHz range exist, but usually have poor V/Hz tracking linearity by 
musical standards, because that is tamed by making them part of a PLL 
control-loop in frequency synthesiser applications.

We also need to be careful with terminology here:  "Aliasing frequency 
components vs Imaging frequency components."  When you play back a 
digital stream through a DAC the output consists of the baseband signal 
plus a series of *images* due to the discrete-time sampling process.  
(The infinitely repeating images in the spectrum are then usually 
removed with an "anti-imaging filter" or often just called a 
"reconstruction filter".)  Aliasing is a problem that occurs either when 
you sample a broadband continuous-time signal (or function) at a finite 
sampling rate, or when you perform sample rate conversion.  It does not 
happen during "variable-sample-rate playback", unless you start 
dropping, skipping or duplicating samples.

-Richie,




On 2014-02-09 21:55, Tom Wiltshire wrote:
> Hi Brian,
> 
>> The problem with PWM is that it's even worse than a square wave.
> 
> For the purposes of what Damian is talking about, it doesn't make any
> difference. He's got a waveform look-up table into which you can put
> an arbitrary waveform.
> 
>> When you generate a square wave as a wave table by just plugging in 
>> values, the discontinuity when it jumps from the bottom to the top, 
>> and from the top to the bottom, creates an infinite series of 
>> harmonics. But the harmonics above Nyquist can't really be reproduced 
>> at their actual frequency, so they are reproduced as aliased 
>> frequencies that aren't part of the real square wave. That's why a 
>> (poorly implemented) digital square wave sample sounds "digital" 
>> compared to an actual analog square wave circuit. But this can be 
>> fixed in the digital version by summing sines instead of naively 
>> filling in the sample values with discontinuities.
>> 
>> PWM has the same problem with discontinuities in the digital domain, 
>> but it's worse because the aliased frequencies are shifting all 
>> around. I don't know of a simple way to create a PWM waveform by sum 
>> of sines, because of the changing pulse width, so I don't know how to 
>> avoid the aliases. Does the David Jaffe article on band-limited 
>> waveform generation cover this topic?
> 
> I don't remember if the Jaffe article is the one with "BLEPs" and
> "MinBLEPs", but they're the way to do band-limited PWM in the digital
> domain at a fixed sample rate. Essentially you correct a naive ramp
> with a band-limited step function to generate a band-limited ramp. The
> difference of two band-limited ramps is a band-limited pulse wave of
> some width, depending on the phase difference between the two ramps.
> 
>> The problem I describe assumes you're generating samples and sending 
>> them to a DAC at some sample rate (it doesn't really matter whether 
>> the sample rate is fixed or variable).
> 
> Not true. It matters a good deal.
> 
> If the sample rate is a multiple of the output frequency, then any
> aliasing *has to* be harmonically related to the output frequency. To
> alter the output frequency, you alter the sample rate, not the number
> of samples you read out - your waveform starts of with  (say) 256
> samples, and it still has 256 samples when it's up at 10KHz, not the
> dozen samples (if we're lucky) we usually get if we've got a fixed
> sample rate.
> 
> Obviously it is possible to put non-bandlimited data into the waveform
> table (a simple incrementing count as a ramp wave will do it..) and
> this *will* produce aliasing - but that aliasing will all be
> harmonically related, so the effect is of waveform distortion rather
> than "aliasing" as usually understood. It's simply as if you put a
> slightly different set of data into the table from what's really
> there. Te important bit is you *don't* get the "unrelated frequencies
> coming down as pitch slides up" effect which is so obvious with
> digital aliasing.
> 
> Regards,
> Tom
> 
> _______________________________________________
> Synth-diy mailing list
> Synth-diy at dropmix.xs4all.nl
> http://dropmix.xs4all.nl/mailman/listinfo/synth-diy



More information about the Synth-diy mailing list