Site Logo

eurorackDIY

Why Make a DCO Module?

An initial look at why making a Digitally Controlled Oscillator as a Eurorack module might be an interesting project.

A while back in a discussion group I belong to (that isn't specifically about synthesizers) the topic of DCOs (digitally controlled oscillators) came up. Prior to this particular discussion I hadn't been too interested in them since I was working on module concepts that were either fully digital or fully analog. What would the sense be of doing a hybrid?

One part of the discussion was a link to this blog post describing how the Roland Juno DCOs function. It was so well written and described the concepts necessary to marry a digital core for an oscillator and turn the resulting square wave into a highly frequency-accurate sawtooth waveform.

Around that same time I was also studying some of the analog circuitry used to convert a sawtooth waveform into the other classic basic waveforms of a synthesizer: a triangle wave, a sine wave from that triangle wave and a variable pulse width square wave. With an accurate sawtooth waveform it would be interesting to get analog versions of all these.

Finally, part of that discussion included some of the programming difficulties one of the group's members was having around getting the basic digital square wave software working on their MCU of choice. It seemed to me that it shouldn't be too hard to achieve a good square wave output with an STM32 and its timer's PWM capabilities.

After just a bit of mucking around with the STM32CubeMX configuration tool it was apparent that the needed square wave would be pretty easy to program and changing frequency based on inputs to the program also involved only updating two registers while the oscillator was running. The change resulted in a relatively glitch-free frequency change.

The STM32 Nucleo development boards are a personal favorite in that they're both inexpensive and well supported with an integrated flash programmer and support in the STM32CubeMX tool. So I grabbed my Nucleo-L432KC board, a breadboard and som TL074 op-amps and set out to create the basic program and the first of the derived waveforms, the sawtooth.

Early results were very positive and matched what has become a favorite circuit simulator tool, Falstad's circuitjs (more on some of the simulations later). Anyway, I was hooked and set off to thinking about how I could use as much of the STM32Lv32KC chip and create a useful Eurorack module from it.

Recent Posts

MODULE DESIGN

DCO Sawtooth: Keeping the Amplitude Constant as Frequency Changes

How to keep the amplitude of a sawtooth wave constant by controlling the input voltage of the ramp circuit.

MODULE DESIGN

DCO Sawtooth: Clocked Ramp Reset

Using a clock to reset the sawtooth's ramp

MODULE DESIGN

DCO Sawtooth: Ramp Reset

How to reset the sawtooth's ramp back to zero volts

MODULE DESIGN

Creating a Ramp Voltage for the Sawtooth Waveform of a DCO

The first step in making a sawtooth waveform is to create a ramp voltage.

MODULE DESIGN

Programming an STM32 Timer for a Synthesizer DCO

How to easily program an STM32 timer to produce a frequency-accurate square wave to use for the core of a digitally controlled oscillator.

MODULE DESIGN

Why Make a DCO Module?

An initial look at why making a Digitally Controlled Oscillator as a Eurorack module might be an interesting project.