DIY Synth Series Part 1 — The Exponential VCO
Build a 1V octave voltage-controlled oscillator (VCO) module and create your own analogue synth sounds.
Learn how to make your own old-school 1V/octave synthesizer.
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|
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:
- 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).
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).
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:
This oscillator has four sections:
- Integrator (U3A)
- Inverting Schmitt trigger (U3B)
- Reset circuit (Q3)
- Buffers (U4A and U4B)
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
|LM358||4||U1, U2, U3, U4|
|100K Resistor||8||R3, R4, R5, R8, R12, R14, R15|
|56K Resistor||4||R9, R10, R11, R13|
|10K Linear Potentiometer||2||RV1, RV2|
|4nF Capacitor (value is approximate; adjust as needed)||1||C2|
|BC548 (with matched hFE)||2||Q1, Q2|
|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|
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.
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.