Dual-core VCO

This is my first VCO design. I’ve started out with the Triangular/Square-Wave VCO example in the LM13700 datasheet (https://www.ti.com/lit/ds/symlink/lm13700.pdf), thinking about making a simple triangle/square LFO. But the project kept creeping all over my breadboard, turning into a full-fledged VCO, dual-core at that.

I’ve tried to keep things as simple as possible, cutting as many corners as I could while maintaining good waveforms. In the end it’s not as simple as I’d like it to be, but I did manage to keep it down to 2 OTAs, 2 comparators, 6 opamps, 2 FETs and 4 BJTs. For that you get triangle, variable pulse and rising and falling ramps (because I’ll be using it as a LFO, too, and there’s no way to get deep space proximity alert alarms right without both). Also there’s hard sync on all waveforms. The frequency range is about 0.1Hz to 38kHz, good enough for my old ears.

Triangle core

The triangle core is classic, with the LM311 comparator as the polarity switcher. I didn’t want the slew rate of an opamp here, and I especially didn’t want to fiddle with a discrete BJT Schmitt-trigger. LM311 is pretty mediocre as comparators go, but it has an open emitter output which proved to be very useful.

Saw core

Tri core up and running, I tried out a couple of tri-to-saw conversion methods and was not satisfied with results. There’s always a connection glitch in the middle, and the slope of the jump from one to the other polarity is so-so. So I added a saw core which is slaved to the tri core. It’s just a cap charged by an OTA and discharged by a FET on every tri cycle.

Since the discharge has a more-or-less constant duration, there is some drop in saw peak-to-peak voltage at high frequencies, >10kHz. The same thing causes “normal” saw cores to go flat at high freq. But since the master core is triangle, this VCO has very good tracking – with some saw amplitude loss as a tradeoff.


The tri-to-pulse circuit also uses the LM311 which despite mediocrity does better switching than an open-loop opamp. The pulses are 0V to +8V, IMO better for LFO triggering and sync than zero-centered pulses. The open emitter output allows it to go down to absolute zero, would not be possible with collector output.


I took me a long time to get the sync part right. For some convoluted reasons I’ll not go into here it’s not enough to sync only the tri core – the saw also has to get some. But the result is great fat hard saw sync. The synced pulse also sounds great, but it can be hard on the triangle. Tri would benefit from some type of soft sync.

Expo converter

The expo converter is lifted from Tom Henry’s VCO-555 (https://electro-music.com/forum/topic-54623.html), with some minor resistor value mods to account for the +/-12V supply and the fact that it was feeding two OTAs in parallel, so I needed more juice. Also, I’m using a 1.87k +3300ppm tempco resistor instead of 2k +3500 in VCO-555. This is a great circuit that worked perfectly right off the bat, all due credit and respect goes to the author.

Here are 1kHz waveforms on my ancient Hameg:

The waveforms hold up pretty well at higher frequencies, especially triangle. These are 4kHz and 10kHz waveforms. Saw is starting to show the cap discharge time, pulse down-slope starts to bend, but triangle stays true:

Power consumption is 26mA/+12V and 25mA/-12V. Pretty green as VCOs go.

Here’s the finished module – The Red Menace!

There’s some discussion about the project and test audio files at Electro-music.com: https://electro-music.com/forum/viewtopic.php?p=448422#448422

Here’s the schematic PDF:


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s