JH's VCO, wavetable source
Grant Richter
grichter at execpc.com
Tue Jul 6 23:55:48 CEST 1999
>
> >I'm assuming the "elegant solution" means that a ramp will drive an ADC
> >which will index into a ROM table whose output will go to a DAC and you
get
> >a ROM defined waveform with the same frequency as the original ramp.
> > Right?
> >
> >If my assumption is right then I have a question...
> >
> >I have yet to see *the perfect* ramp and I can't see that you can
> >practically get one. Every one I've seen (and that isn't a lot) has
little
> >imperfections at the peaks and you have to deal with that finite switch
> >time too. How do you deal with these problems?
It turns out it simply doesn't matter. Let's take the case of a sine wave
playback.
Any imperfection in the sawtooth appears as added harmonic distortion in
the
sine wave. I would say the sine wave generated by this method (at 1 kHz)
has about 1% THD. If you have worked with sine converters,
you'll recognize that figure is better than many analog sine converter NLFG
used for electronic music oscillators.
> >
> The next question is how to ensure that no stored samples are skipped.
> I mean the adc could perhaps output one sample twice and then jump to two
> adresses above that. (Nonlinearity of the ADC.) Ok at low freq a minor
> problem (just a little THD).
That also does not seem to happen. At eight bits resolution, you can
see the individual voltage levels. Skipping samples would appear as
a "glitch" in the waveform. Which does not occur in the ten units I have
built so far.
> Then the next thing would be higher frequencies. I has been stated that
the
> ADC0820 can be *clocked* at 400k but how many clock cycles does a
> conversion take? At least 8 or might even take 16. Assuming the
conversion
> takes 8 cycles you'd have a sample rate of 50kHz. At 5kHz the cycle would
> consist of only 10 samples. You don't have the same time resolution as
the
> output frequencies aproach the sample rate. Here the HSVCO would be
better.
>
The ADC 0820 is a "half flash" design. It does a full conversion at 400
kHz.
400 kHz divided by 256 equals 1562 hertz. So sample skipping does not
begin until the fundamental is in the second octave above middle C.
Quit usable. Even if sample skipping occurs, the pitch period remains
accurate so the change is in the harmonic content, which becomes more
distorted, or "brighter" as the frequency goes up.
It turns out 256 is a "magic" number. This corresponds to a sampling
frequency of 44.1 kHz for the purpose of building wavetables.
44.1 KHz divided by 256 equals 172 hertz or twenty cents
below F below middle C so any waveform recorded at that frequency
(with a sampling rate of 44.1 kHz) can be "pulled" directly into the
wavetable. It also has to do with pitch transposing. Since sampling
forms replicas of the sample spectrum at intervals of the sample frequency,
transposing down an octave, could bring the next higher replica into the
audible range. If you bandwidth limit the sample to a maximum
content of 10 kHz, you can transpose down two octaves before
the replicas enter the audible range. With 128 or 64 samples the
range of transposition before the replicas become audible is much
more limited.
A point of interest is the evolution of the wavetable based oscillators.
The original Digisound VCDO used a 64 sample waveform.
The PPG series used a 128 sample waveform (stored as a 64 sample
half wave). The current Waldorf series appears to use a 256
sample waveform (stored as 128 sample half waves).
More information about the Synth-diy
mailing list