Today’s music is mostly made using computer software to master tracks, add instrumentals, mix songs, manipulate sounds and much more— but how do they use to make music?

Music used to be done entirely with REAL instruments such as guitars and pianos but synthetic sounds have made their mark on the musical scene, as well. A great band to look at for an example is Kraftwerk, which in the 1970s used synthesizers to create all their sounds from the aggressive sawtooths to the gentle beep and boop of a computer.

These synthesizers (unlike most ones you will find today) were all analogue which means that, instead of relying on software and processors, the sound generation was done by manipulating electrical signals against time.

How does an old fashion synthesizer work? This series of projects will show how all the different parts in a synthesizer work and how to build your own modules.

In this project, we will be building the heart of the synthesizer, the VCO (voltage-controlled oscillator), which takes in analogue voltages and generates the raw sounds ready to be further processed by filters, modulators, ADSR modules, and step sequences.

*A Minimoog Model D synthesizer (the kind used by Kraftwerk from the 70s to 1981). Image courtesy of Moog. *

### Synthesizer Type and Music Theory

The synthesizer that we will be designing was extremely common back in the day. It's known as a 1V/Octave synthesizer. This means that for every 1V increase on the input, the output frequency will go up by one octave (i.e., by a factor of 2).

Now for this module to work correctly, it needs an exponential converter on the input. This converter will take a linear voltage in and produce an exponential voltage which is fed into the VCO. Why do we need an exponential converter? The answer is in the nature of human hearing and music theory!

If you take a piano and play the middle A note (A4), it makes a specific tone which has a frequency of 440Hz. If you now play the A note to the right of this one (12 notes up, A5) the note sounds the same except higher pitch and has a frequency of 880Hz. (The lower note is a harmonic of the upper note which is why they sound OK when played together). Now, if you play the next A note to the right (A6), the note sounds higher pitched than the previous A note; it has a frequency of 1760Hz.

Any two same notes that are separated by 12 keys is called an octave. For any two keys that are an octave apart, the upper key will have a frequency twice that of the first. The reason for this is because by nature human hearing is logarithmic. This means that for something to sound twice as loud, its amplitude (or frequency in the pitch realm) needs to go up by a factor of two.

If, for example, we increase the frequency of a waveform from 1Hz to 2Hz, that would be considered an octave apart according to the human ear. But increasing a waveform frequency from 440Hz to 441Hz does not result in an octave change. In fact, the human ear would not be able to distinguish between these two frequencies because the human ear is good at relative changes as opposed to absolute changes.

So with all that complicated theory out of the way, we need to find a method to take in a linear voltage source (1V Octave Keyboard) and convert it into a voltage source that produces exponential voltages. To do this we will use a component that has inherent exponential qualities, the bipolar junction transistor or BJT.

### The Exponential Converter

So we need a circuit to take in a linear voltage from the keyboard/controllers and produce an exponential voltage which doubles in value for every octave.

Since our VCO is operating on a single supply 5V rail, the output of the converter needs to be between 0V and 5V. With a 5V input range, that gives the possibility of a 5-octave keyboard with a total of 60 keys.

The table below shows the input voltage from the keyboard and the required output voltage from the converter.

Key |
Key # |
1v Octave V |
Expo Output |
Frequency |

C0 | 1 | 0.0833 | 0.1655 | 65.4078 |

C#0 | 2 | 0.1667 | 0.1754 | 69.2971 |

D0 | 3 | 0.2500 | 0.1858 | 73.4177 |

D#0 | 4 | 0.3333 | 0.1969 | 77.7834 |

E0 | 5 | 0.4167 | 0.2086 | 82.4086 |

F0 | 6 | 0.5000 | 0.2210 | 87.3089 |

F#0 | 7 | 0.5833 | 0.2341 | 92.5005 |

G0 | 8 | 0.6667 | 0.2480 | 98.0009 |

G#0 | 9 | 0.7500 | 0.2628 | 103.8284 |

A0 | 10 | 0.8333 | 0.2784 | 110.0023 |

A#0 | 11 | 0.9167 | 0.2950 | 116.5434 |

B0 | 12 | 1.0000 | 0.3125 | 123.4734 |

C1 | 13 | 1.0833 | 0.3311 | 130.8155 |

C#1 | 14 | 1.1667 | 0.3508 | 138.5942 |

D1 | 15 | 1.2500 | 0.3716 | 146.8355 |

D#1 | 16 | 1.3333 | 0.3937 | 155.5668 |

E1 | 17 | 1.4167 | 0.4171 | 164.8172 |

F1 | 18 | 1.5000 | 0.4419 | 174.6178 |

F#1 | 19 | 1.5833 | 0.4682 | 185.0011 |

G1 | 20 | 1.6667 | 0.4961 | 196.0018 |

G#1 | 21 | 1.7500 | 0.5256 | 207.6567 |

A1 | 22 | 1.8333 | 0.5568 | 220.0046 |

A#1 | 23 | 1.9167 | 0.5899 | 233.0868 |

B1 | 24 | 2.0000 | 0.6250 | 246.9468 |

C2 | 25 | 2.0833 | 0.6622 | 261.6311 |

C#2 | 26 | 2.1667 | 0.7015 | 277.1885 |

D2 | 27 | 2.2500 | 0.7433 | 293.6709 |

D#2 | 28 | 2.3333 | 0.7875 | 311.1335 |

E2 | 29 | 2.4167 | 0.8343 | 329.6345 |

F2 | 30 | 2.5000 | 0.8839 | 349.2356 |

F#2 | 31 | 2.5833 | 0.9364 | 370.0022 |

G2 | 32 | 2.6667 | 0.9921 | 392.0037 |

G#2 | 33 | 2.7500 | 1.0511 | 415.3134 |

A2 | 34 | 2.8333 | 1.1136 | 440.0092 |

A#2 | 35 | 2.9167 | 1.1798 | 466.1736 |

B2 | 36 | 3.0000 | 1.2500 | 493.8937 |

C3 | 37 | 3.0833 | 1.3243 | 523.2621 |

C#3 | 38 | 3.1667 | 1.4031 | 554.3769 |

D3 | 39 | 3.2500 | 1.4865 | 587.3419 |

D#3 | 40 | 3.3333 | 1.5749 | 622.2670 |

E3 | 41 | 3.4167 | 1.6685 | 659.2690 |

F3 | 42 | 3.5000 | 1.7678 | 698.4711 |

F#3 | 43 | 3.5833 | 1.8729 | 740.0044 |

G3 | 44 | 3.6667 | 1.9843 | 784.0073 |

G#3 | 45 | 3.7500 | 2.1022 | 830.6268 |

A3 | 46 | 3.8333 | 2.2272 | 880.0185 |

A#3 | 47 | 3.9167 | 2.3597 | 932.3471 |

B3 | 48 | 4.0000 | 2.5000 | 987.7874 |

C4 | 49 | 4.0833 | 2.6487 | 1046.5242 |

C#4 | 50 | 4.1667 | 2.8062 | 1108.7538 |

D4 | 51 | 4.2500 | 2.9730 | 1174.6838 |

D#4 | 52 | 4.3333 | 3.1498 | 1244.5341 |

E4 | 53 | 4.4167 | 3.3371 | 1318.5379 |

F4 | 54 | 4.5000 | 3.5355 | 1396.9423 |

F#4 | 55 | 4.5833 | 3.7458 | 1480.0088 |

G4 | 56 | 4.6667 | 3.9685 | 1568.0147 |

G#4 | 57 | 4.7500 | 4.2045 | 1661.2537 |

A4 | 58 | 4.8333 | 4.4545 | 1760.0370 |

A#4 | 59 | 4.9167 | 4.7194 | 1864.6942 |

B4 | 60 | 5.0000 | 5.0000 | 1975.5747 |

The component that will be used for its exponential properties is the BJT. Most will be familiar with the equation that relates the base current to the collector current but this relationship is linear.

The equation that relates the base-emitter voltage to the collector current is exponential:

Where

**Ic**- Collector current**Is**- Saturation current**q**- Electron charge**Vbe**- Base-emitter voltage**k**- Boltzmann Constant**T**- Temperature (in kelvin)

Luckily for us, there are clever people who have already done the hard mathematics (see here for the math) and the circuit design.

Below is the complete exponential converter that will be used in our VCO engine to convert the input linear voltage into an exponential voltage (where the voltage output doubles for every 1V increase in the input).

*Click to enlarge.*

In the schematic, shown above, there are three different inputs feeding into U1B. You can add additional 100K resistors for more inputs but typically three should be enough.

- KEY - This is the input from the 1V Octave Keyboard
- TUNE - This is connected to a trimmer which can be used to make small adjustments to the output frequency (by adding a small amount of voltage)
- LFO - Low-Frequency Oscillator - This can be used to add effects such as UFOs, police sirens or even arpeggios

Here is a simple explanation of how this circuit works:

- U1B is used to both sum the individual inputs (KEY, TUNE and LFO) and scale the input voltage such that 1V in produces -18mV on the output (note that it’s an inverting configuration).
- Q1 and Q2 form a differential pair.
- U2B is used to maintain constant current through Q1. Changes in Q1’s base voltage lead to corresponding changes in Q2’s base-to-emitter voltage and, consequently, exponential changes in Q2’s collector current.
- Q1 and Q2 MUST HAVE VERY SIMILAR HFE!
- U1A is a current-to-voltage converter (R1 and RV1 are chosen so that when the input voltage is 5V, the output voltage is also 5V).

### The VCO

Now it’s time to actually create an oscillator that is controlled via a voltage source.

To do this, we will use a very common layout shown below:

*Click to enlarge.*

This oscillator has four sections:

- Integrator (U3A)
- Inverting Schmitt trigger (U3B)
- Reset circuit (Q3)
- Buffers (U4A and U4B)

#### Integrator (U3A)

The integrator's output will do two things depending on the state of Q3 (and the presence of an input voltage at VEXPO) :

- If Q3 is off then C2 will charge and therefore the integrator output will fall gradually.
- If Q3 is on then C2 will discharge and therefore the integrator output will rise gradually.
- The rate at which the output falls or rises is determined by C2, R7, R9, R10, R11 and the input voltage VEXPO.
- The larger VEXPO is, the quicker C2 charges.

#### Schmitt Trigger (U3B)

The Schmitt trigger will do two things depending on the output of the integrator:

- If the integrator output crosses the upper threshold, the Schmitt trigger output will be 0V.
- If the integrator output crosses the lower threshold, the Schmitt trigger output will be 5V.

#### Reset Circuit (Q3)

The reset circuit Q3 will do two things depending on the output of the Schmitt trigger:

- If the trigger's output is high (5V) then Q3 will be on.
- If the trigger's output is low (0V) then Q3 will be off.

#### How It Oscillates

The circuit oscillates in the pattern listed below:

- Q3 is on and so the integrator's output rises.
- The integrator's output eventually crosses the Schmitt trigger's upper threshold.
- The Schmitt trigger's output now switches to 0V.
- Q3 is now off and so the integrator's output begins to fall.
- The integrator's output eventually falls below the Schmitt trigger's lower threshold.
- The Schmitt trigger's output now switches to 5V.
- Q3 now turns on (so go back to step 1).

### Bill Of Materials

Component |
Quantity |
Reference |

LM358 | 4 | U1, U2, U3, U4 |

1M Resistor | 1 | R2 |

100K Resistor | 8 | R3, R4, R5, R8, R12, R14, R15 |

56K Resistor | 4 | R9, R10, R11, R13 |

22K Resistor | 1 | R1 |

10K Linear Potentiometer | 2 | RV1, RV2 |

1K Resistor | 1 | R6 |

1nF Capacitor | 1 | C1 |

4nF Capacitor (value is approximate; adjust as needed) | 1 | C2 |

BC548 (with matched hFE) | 2 | Q1, Q2 |

BC548 | 1 | Q3 |

100nF Capacitor | 6 | This is for decoupling power lines so use near each IC |

100K Potentiometer | 1 | Only for testing with the synth KEY input |

### Construction

It is advised that you first construct the synth module on a solderless breadboard just in case the circuit does not work. Once you are confident that it functions, you can either build it onto stripboard or fabricate a PCB.

Try to construct one section and get it functioning before building the next stage. This is so that you can be sure that this portion of the circuit works!

When constructing, there are two things to keep in mind:

- Make sure that Q1 and Q2 have close hFE values (within 10 of each other). The best method is to buy a cheap bag of 100 transistors for a few dollars and use a multimeter that can measure hFE.
- Q1 and Q2 must be thermally bonded with each other. You can do this by hot gluing the two together so that the thermal change in one mirrors the thermal change in the other.

*My stripboard setup.*

### Using the VCO

You may have noticed that the circuit has both a positive and a negative supply voltage. This circuit requires a dual power supply to function correctly (it requires 5V, 0V, and at least -5V on the negative rail). Luckily for us, this circuit works very well using the negative voltage generator project, so make sure to build that first! You can also use two batteries in series to get a split supply and use the middle connection as ground.

Here is a possible circuit that you can use to power the VCO:

Note that only the VCC rail needs regulating to 5V because this will determine the saturation points for the VCO as well as influence the output frequency. The negative rail is used only in the exponential converter circuit, and during normal use the opamp outputs in that circuit will not be driven to the supply rails.

#### Testing the VCO

To test the VCO, you will need to provide input voltages to the summing stage U1B. You can either use a potentiometer to supply a variable voltage between 0V and 5V or you could use the output of an oscillator or a 1V octave keyboard if you have one. The video shown in this project uses a potentiometer connected across VCC and 0V with the varying output voltage connected to the summing stage.

In the video shown below, you will see that the VCO is connected to a potentiometer and a second VCO. The second VCO produces low-frequency oscillations (LFO) that can be used to wobble the pitch for many interesting effects. You will also notice that placing a finger on either Q1 or Q2 will result in a change of output frequency and can be exploited to make even more interesting effects! Also, note that I used a DC-blocking capacitor to remove the DC offset in the signal sent to the speaker.

### Project Files

All the project files are included here and you are completely free to do as you see fit with them!

In the .zip file below, you'll find:

- Excel table of the voltages
- KiCad project files
- LTSpice simulation
- PDF version of the VCO core

*Give this project a try for yourself! Get the BOM.*

28 CommentsLoginAEKron2016-08-15I built a PAIA road synth kit when I was a kid. It had two VCOs among other things.

Ackleberry2016-09-29Can someone explain to me how the exponential output column in the table was calculated?

Thanks!

Ackleberry2016-09-29I mainly just need this equation explained… Vexpo=(5/32)*2^(C3)*395.1149425

Robin Mitchell2016-10-13Once I remember what I had done I will let you know!

I remember calculating the required voltage and needed a formula that would double the frequency for an increase of 1V into the input.

pfeuh2017-09-20I suppose it is root 12th of 2 (racine douzième de 2, I’m not so good in english…) used in guitar neck calculation. Approximated value is 1.059463 Take a frequency, the next half tone will be frequency * 1.059463. Do this 12 times and your frequency frequency will be first frequency * 2

cesar2016-10-11Awesome tutorial!

Will this exponential conversion circuit be enough for a complete synthesizer with multiple VCOs, envelope generators, VCF and VCA? Does each VCO require an exponential converter circuit? Does the VCF and VCA each require its own exponential converter?

Robin Mitchell2016-10-13This circuit will produce the square and triangular waveform needed for a basic synth. On its own it could be connected to a 1V Octave keyboard and produce music.

This circuit does not contain any other form of control as it would need to be attached to such modules like a VCA or VCF. Each VCO unit requires its own exponential converter as each exponential converter can only take one input from a keyboard.

johey2016-12-29Can you change the pulse with of the square wave?

Robyn2016-12-30Hi, thank you for this wonderful tutorial. Just what I’ve been looking for!

I have a question regarding the power supply though. In the case that one uses two 9V batteries the positive supply will be regulated at 5V and the negative at -9V. I understand that this doesn’t influence the oscillator itself but isn’t the assymmetry going to shift down the output frequency range? Also, I have always heard that analog circuits didn’t mix well with switching supplies but the negative rail generator project you provide a link to is one of those. Does it not affect the performance of the Expo/VCO too much?

Thank you for your time and knowledge.

Robyn2016-12-30Edit: I mean shift down the output CV range*

Alex Smith 22017-01-07Fantastic Article, thanks! Any ETA on Series2? Can’t wait

JohanEricson2017-08-31This is really nice! Looking forward to building this and to part two! Awesome job!

CrazyKeks2017-09-12Hello!

I’ve built this VCO, but have a problem at VEXPO:

Even if RV1 open, I have about 3,76V at the out, when KEY in range between 3,76 and 5V.

What should I do? Thanks anyway!

Eduardo da Silva Pino 12017-11-14Ok,I’m confused. when Q3 is off where the capacitor discharges exactly? (Since there is no current going into U3B and no current flows through R11)

echo-e2018-07-14I find that it helps to imagine the circuit behaviour from time t = 0, with a couple of assumptions: Q3 is initially off, C2 is initially discharged so the voltage across it Vc(0) = 0V, and U3A is always in linear negative feedback, so Vin- = Vin+ (virtual null) and the current into U3A, Iin- = Iin+ ~= 0.

The positive “reference” input to U3A is a simple divider formed by R9 and R10 with Vin+ = Vexpo/2. So in the first instant of time, given the assumptions above, Vin- = Vin+ = Vexpo/2, and since Vc = 0, Vout = Vin- = Vexpo/2. However, this creates a voltage difference across R7 of Vr7 = Vexpo - Vexpo/2 and therefore a current through resistor R7 of Ir7 = (Vexpo - Vexpo/2) / 100k = (Vexpo/2) / 100k.

Where is this current going? Since Q3 is off and U3A is in negative feedback, there is no current going through Q3 or into U3A. The current must be going into the capacitor. This current charges C2, with positive charge collecting on the left hand side of the cap. This creates a voltage differential across the capacitor. Since we are still assuming the op-amp is in negative feedback, Vin- stays fixed at Vin- = Vin+ = Vexpo/2 and the voltage difference building across the capacitor is compensated by the op-amp by driving its output voltage lower.

At some point the output voltage falls below a threshold that causes Q3 to switch on. This essentially connects R11 to ground, creating a new current path from the Vin- node. We maintain our assumption that U3A is in feedback, so despite the sudden addition of a new current path, the current into U3A is still 0 and Vin- is still Vin- = Vin+ = Vexpo/2. This allows us to directly calculate the current through R11 as Vr11 = (Vexpo/2) / 56k. All of the currents in and out of the Vin- node sum to 0 (Kirchhoff’s current law), and we can see that the current into the node through R7, Ir7 = (Vexpo/2) / 100k is less than the current leaving the node through R11.

Where is the additional current coming from? It is coming out of the capacitor, C2. The charge stored on the left hand side of C2 while Q3 was off is now driven out of the capacitor as current flowing into the Vin- node. This current is Ir11 - Ir7 = [(Vexpo/2) / 56k] - [(Vexpo/2) /100k] = Vexpo/2 * ( 1/56k - 1/100k ) ~= Vexpo/2 * 7.86uA. As the capacitor discharges, the voltage differential across it decreases. Since the op-amp maintains the negative feedback condition, its output must rise to compensate for the decreasing voltage across C2.

Ultimately we reach another threshold where Q3 is switched off and the cycle repeats.

Jack Tranckle2018-01-05How did get the exponential voltages from the linear? Im guessing that Im missing something, thanks!

RK372018-01-08The linear-to-exponential conversion is accomplished by taking advantage of the inherent properties of a bipolar junction transistor: the collector current has an exponential dependence on the base-to-emitter voltage, so linear changes in base-to-emitter voltage lead to exponential changes in the collector current. Collector current is then converted to a voltage by the U1A circuit.

Jack Tranckle2018-03-08Sorry I meant how were the exponential voltage values calculated that can seen in the table ?? The landlord near voltage is easy to obtain and the frequency but What is the equation for the exponential voltage ??

Jack Tranckle2018-03-08Sorry I meant how were the exponential voltage values calculated that can seen in the table ?? The landlord near voltage is easy to obtain and the frequency but What is the equation for the exponential voltage ??

Jack Tranckle2018-03-08Could someone please do an explanation of how the 1st, 2nd, 3rd expo voltages are obtained through calculation? given that the input linear voltage and frequency is given

Sidney Bruneder2018-03-28When is part two coming? I’m loving this.

diskogoth2018-04-10Hello Robin. I’m kindly grateful you for this article. It became my entry point for my interest in modular.

I built this scheme on breadboard but i encountered some blockers that stops me. Can you please help me resolve this.

First problem, that exponential converter outputs ~3.4 volts max. I can adjust RV1 so 0 to 5v input range are fully converted to 0 to 3.4v exponential range and 3.4v on the output is when 5v on the input, but this seems to be not right and input change in 1v not being 1 octave change. The difference in circuit i build is first of all i’m using LM7905 to generate negative voltage and second, i’m using two 324 quad op amp ic instead of four 358, that what i had and seems to be the same.

Second question is not this circuit specific, but more 1v/oct connectivity. I have arturia beat step pro, that have 1v/oct cv on the output. Connecting it to oscilloscope showed that difference from lowest to highest note is 800mv despite the fact that this needs to be 10v in manual. So what do i’m doing wrong and whats the proper way to connect arturia’s cv out and this circuit?

Sorry if my questions may be silly, i’m started electronics as a hobby only two month ago. But i really interested to resolve this problems and open my way to modular synth.

Thank you in advance.

Thiago Ennes2018-04-22i got the same problem. and someone else in the comments as well. i got 3.71 no matter what i do. i guess there is something missing in the schematic.

Alex F 12018-05-21Do you have suggestions for fine-tuning the 1v/octave tracking? (Are there logical places for additional trim pots?)

Dio “Mers” Cane2018-06-07Hi, I have build two VCO one on breadboard and one on PCB but they doesn’t work. I have checked the alimentation and it was ok either the voltage reference. I also have try to add a negative supply rail but it still doesn’t work. In my circuit I have put a 1.2nF capacitor. Can someone give me some tips?

RK372018-06-14I recommend that you post this question in the AAC forum so that our knowledgeable members can help you to resolve the issue.

https://forum.allaboutcircuits.com/

reece2018-07-11How would you add a saw wave (Ramp wave)function to this so you could have square, triangle, and saw?

RK372018-08-06The author may not be available to help you with this. I recommend that you post this question in the AAC forum.

https://forum.allaboutcircuits.com/