After my first attempt to build a polyphonic synth, I realise I’ll have to upgrade my technique to something more reliable. Having always been a big JUNO-60 fan, I thought I would try to build DCO oscillators instead. This is a bit the opposite of the VCDO, where a Digital Oscillator is CV-controlled, here it’s an Analogic Oscillator that is driven by a Digital source.
Fortunately there some very good sources on the subject:
https://electricdruid.net/roland-juno-dcos/
https://github.com/polykit/dco?tab=readme-ov-file
https://blog.thea.codes/the-design-of-the-juno-dco/#fnref:schmitt
If you ever tried to tune an AS3340 oscillator, you’ll understand that the most difficult part is keeping the 4 or 6 VCOs in tune..Hence the need for a centralised digital control spread across all oscillators of the synth.
The basic oscillator block here is an op-amp in integrator mode and it looks like this:
In this configuration, the frequency is driven by a digital square oscillator, but one caveats is that some compensation voltage must be introduced, otherwise the amplitude of the signal will decrease as the frequency increases.
So the trick would be to generate a DC voltage through a MCP4822 DAC that corresponds a frequency on one of the Arduino Digital Pin on a certain scale. Let’s hope an Arduino Nano will be fit for the job…
I opened my first GitHub repository to host my attempts to get some working code. So I tried to drive one DCO for the beginning. It’s far from perfect as the Ramp wave is not ideal, but it kinda works. I guess I will have to work on the scale of the ‘compensation voltage’.
So here’s the code and a short video.
https://github.com/cmosorchestra/ARDUINO-DCO
The next step to drive 2 DCOs simultaneously, but I’ll have to build them first!