More ramblings about VCDO...

Harry Bissell harrybissell at prodigy.net
Wed Jul 7 07:37:34 CEST 1999


Any Comment???

These are some "generic" thoughts on the VCDO in general...

1) Point made before... A lot of the sampled waveforms have similar harmonic
content, they just don't sound different from each other.

2) You will get some "jitter" in your clock which may or may not be
objectionable.

3) You probably need two counters so that one can be reset while the other
counts. I don't think you can make do with one. This is like the "finite"
reset time of an analog sawtooth. Two counters fixes this problem.

4) Ther solution does not track "realtime". It is always one cycle behind.
My guess is that without very clever code, you will need to divide the
incoming wave by 2 to assure symmetry (which I know you say you don't
need... ) and a consistant edge to work with.
you will have the "tracking delays" common to a Guitar Synth. Which I can
assure you are VERY substantial and annoying. The lower the input frequency,
the worse off you are. Count up the milliseconds and see how far off you'll
be by being one cycle behind.

5) The high speed VCO, or frequency multiplication techniques work in the
very same cycle.

6) Of course none of this may matter if you are fronting this with MIDI and
you can compensate for the time problems.

It is an interesting thread, ain't it.... :^) Harry

jbv wrote:

> I take the opportunity of the cuurent wavetable discussion to post an
> idea I had some time
> ago about an alternate way of designing a VCDO (I haven't got time to
> brainstorm beyond
> block diagram, though).
>
> First we need a regular analog VCO, working in the audio range. The only
> thing required
> is a bipolar output (a +-5V square for instance).
>
> Then we have a digital counter (24 or 32 bits) clocked at a very high
> freq (50, 75 or 100 MHz).
> Then we also have a fast comparator. And here is the trick : every time
> the rising edge of the
> square crosses zero, the comparator latches the current counter value,
> and the counter is reset.
> This allows to latch the number of clk pulses that occured between two
> periods of the audio
> signal.
>
> And now purists will start to shout... Enters a (fast) uC (one of the
> new Scenix for instance, or
> a DSP, although I'm sure the firmware is a hundred times faster & easier
> to write on a uC).
> This uC can read sampled waveforms in a ROM and outputs data through a
> DAC.
> The uC firmware reads the latched value and, through some conversion
> table, computes the
> necessary increment for reading the next sampled value.
> Actually, the firmware runs the classic "Matthews algorithm" (as
> implemented in Music V) for
> generating waveforms, based on the 2 following formulas :
>
>     F (in Hz) = (sampling rate * increment) / function length
>
>     Increment (in samples) = (function length * freq in Hz) / sampling
> rate
>
> If the firmware is carefully designed, the uC can read the latched value
> at the required sampling
> rate (44.1 or 48 KHz or...) and output the samples of the desired
> waveform. A digital SP/DIF
> output shouldn't be too difficult to add...
> If the uC is fast enough, interpolation can be achieved as well.
>
> Furthermore, as the latest generations of uC feature onchip comp and
> ROM, very few extra
> hardware will be needed... Even the counter can be handled by software,
> if the uC can run
> at such a high freq... And on 32 bits, high precision can be achieved.
> And as we all know : less hardware = cheaper solution...
>
> And last but not least, with only a few extra DACs, several different
> waveforms can be output
> simultaneously (if all functions have the same length, interpolation has
> to be done only once).
>
> Some advantages I see in this technique :
>
> - no need for a perfect ramp in the whole freq range; any bipolar signal
> will do (and cycle ratio
> doesn't matter, since only the positive edge is used),
>
> - interpolated function output,
>
> - any freq variation of the VCO will be tracked in realtime,
>
> - the system can be used as a kind of pitch tracking with more complex
> signals as input...
>
> Any comment ?
>
> jbv




More information about the Synth-diy mailing list