[sdiy] Simple DSP as VCO substitute (was Re: CEM3340 reissue)

Eric Brombaugh ebrombaugh1 at cox.net
Tue Jun 14 22:29:08 CEST 2016


On 06/14/2016 12:26 PM, Tom Wiltshire wrote:
>
> On 14 Jun 2016, at 18:47, Tim Ressel <timr at circuitabbey.com> wrote:
>
>> I don't see 12 bit ADCs as much of a limitation. It should do V/Oct out to 10 octaves.
>
> That'd be 120 notes. Let's call that 7 bits. That leaves you five bits of resolution between semitones. That's only 32 steps, which is roughly 3 cents. It's enough, but only just, and that's assuming that the ADC has less than 1 LSB noise, which I've certainly never seen in reality.
>
> For Pitch CVs, I'd want 14-bit or better. YMMV.

I've had a lot of experience using 12-bit ADCs for 1V/Oct CV inputs both 
on dsPIC and STM32. It works better than you might initially think, and 
evidence from the marketplace suggests it's fine as many of the digital 
oscillators being sold commercially today are dsPIC and STM32-based 
without external ADCs.

A few things to remember:

1) Most of the commonly available MCUs you'll find which have on-chip 
ADCs have fairly noisy performance, primarily due to switching noise 
from other on-chip sources. The STM32F3 parts seem to be an exception as 
the noise variance seems well controlled and you get almost a full 
12-bits from them. The STM32F373 has on-chip sigma-delta ADCs with 
better than 14-bit performance. The STM32F4 series are abysmal though - 
the on-chip flash cache mechanism is so noisy that ST has an appnote 
about it. In general you'll need lots of filtering and hysteresis to get 
stable readings from on-chip ADCs.

2) For frequency control CVs it's important to recall that the NCO acts 
as an integrator. This means that noise on the CV input gets immediately 
low-pass filtered by the fundamental operation of the oscillator. A 
noisy ADC will result in phase noise, or what we synth fans call 
"fatness". Due to the integration behavior that noise will
dither such that the average frequency can actually have higher 
resolution than the 3-cents Tom computed above, but the instantaneous 
wander will be over a wider range. A bit of DSP pre-filtering can help 
narrow that down a bit, but be careful not to slow the FM responsiveness.

I've seen a lot of people pooh-pooh the idea of using the on-chip ADCs 
for oscillator CVs without actually having tried it for themselves. It's 
worth a shot though and many have found it acceptable. You can calculate 
all you want, but the ear is the final judge.

Eric






More information about the Synth-diy mailing list