What is an LFO?
LFO stands for Low Frequency Oscillator. It’s a general purpose modulation source that outputs a slowly cycling waveform. They are commonly used for effects such as vibrato, tremolo, PWM, and filter sweeps.
An LFO’s frequency is usually sub-audio, but in practice many LFOs venture into the low audio range (above 20Hz) or even higher. At the slow end, cycle time is a few seconds, sometimes a lot more – there’s no standard range for an LFO. Sometimes they’re just called ‘modulation oscillator’, which I guess is more accurate.
The output of an LFO will often be a sine or triangle wave, as they give good results for most purposes, but other waveforms are also common – square waves, ramps, and a ‘random’ or ‘sample and hold’ output are also popular (these are good for the ‘burbling’ effect often associated with synth sounds). Technically, a sample and hold circuit is another device, so I won’t cover that here.
Many older synths come with just one LFO, which means all your basic cyclic modulations (as opposed to one-shot modulations like envelopes, or stepped modulations like sequences) have to come from the same source. It would be better to have at least two LFOs, so that pitch modulation and PWM, for example, could use different waveforms at different speeds.
Happily, many new synths have multiple LFOs, and luckily for DIYers, making an LFO is a simple job. The parts are cheap and plentiful, the basic circuit is compact and easy to build, and one or two extra LFOs can enliven a basic synth patch considerably.
There are several ways to make such a circuit but I’ll limit myself here to two basic methods:
- the Relaxation LFO
- the Integration LFO
I’ll be adding links to designs on this page as I write up a few details, so bear with me!
This circuit gets is name from the way it charges, then discharges, a capacitor. Think of it like breathing: inhale, exhale. The charge on the capacitor is the rhythm of the breath.
Watch this in action here: Relaxation LFO simulator
Download a PDF of the schematic here: Relaxation LFO schematic
This example uses two op-amp stages, run from dual supply rails. Let’s consider just the first op-amp for now.
It has something in common with a comparator – the output will flip high or low depending on which input is higher. Here we’re using feedback to control this operation.
Imagine the output of the op-amp is high. From this, feedback charges the capacitor. The capacitor takes time to charge up through the feedback resistor, with the charging being faster with less resistance (actually here we’re using one fixed resistor and one variable resistor so the user can change the charging rate). When the voltage present at the inverting input (-) goes higher than the voltage at the non-inverting input (+), the output flips low.
Now, the capacitor slowly ramps down because of the negative feedback from the low output. When the voltage at (-) drops below the voltage at (+), the output flips high and the cycle repeats.
With the values shown, the LFO ranges from about 0.3Hz to 30Hz, or 30 milliseconds to 3 seconds per cycle. This is a good starting point for experimentation.
Some Technical Detail
Looking at the simulation, we can see a square wave at the output of the first op-amp, and a triangle wave at the top of the capacitor. Ignore the second op-amp for now.
The output voltage of the op-amp will vary depending on your supply rails and which device you use. The popular TL07x devices, for example, will not swing fully to either rail.
If you take your ‘square’ LFO wave from this point, it will likely be hotter than you need. Using a TL07x on 15V rails, your LFO output would be in the region of 27V peak-to-peak, which is silly. We could add a few more parts to drop it down to something more practical.
The two resistors connecting the output of the op-amp to its (+) input act as a divider to determine the level at which the signal flips direction. If they are equal, the flip point will be half the op-amp’s output voltage, etc. You should adjust these values to get the right output level for your needs. A typical modular LFO might be +5V to -5V, for example. Useful resistor values might be in the range 10k to 100k or thereabouts, but absolute values are not critical. It’s the ratio that counts. For example, if your rails are +/-12V, and your op-amp thereby swings to +/-11V, you could use a 12k resistor from output to (+), and a 10k resistor from (+) to ground, which would give you a +/-5V LFO output (11V*10k/10k+12k = 11*10/22 = 5).
We can take the square LFO output from the junction of these two resistors, instead of directly from the op-amp output, and it will be the same peak voltage as the triangle. We just need to buffer it to prevent problems arising from connecting it to some other input somewhere.
The ‘triangle’ wave available at the capacitor is not really a true triangle, as the rise and fall are both slightly curved. This will be more pronounced the closer to the rails your flip point is. It probably won’t matter, and you might not even notice, if you’ve got something like a 5V flip point on 12V or 15V rails.
We can’t take the triangle wave directly from the cap; we need to use a buffer so as not to load it. This is the second op-amp.
We can use one buffer for both waveforms, and just add a switch to select them. You can then use the output of this buffer to feed multiple destinations without trouble. Doing it this way means we can have a useful LFO with just one dual op-amp chip and a handful of extra parts. It’s a small circuit that is cheap to build, and with only one knob, one switch, and one socket required, you can fit them into a small panel space. Of course, you could omit the switch and use separate buffers for each waveform, or just tap off one waveform if you don’t need the other. You should be easily able to adapt this circuit to your own needs.
Finally, how do we change the speed range of the LFO? Once we know the peak voltage level, we can change the values of the capacitor and the negative feedback resistor/s. We can use a variable resistor here, though we’ll still need a small fixed resistor at one end to give a limit to the maximum speed. A higher resistance means a slower LFO. A 10k resistor and a 1M pot give a 1:100 range; if you keep the 1M pot but make the fixed resistor only 1k, for example, your range will be 1:1000, with the slow time more or less the same – the smaller fixed resistor sets the fast limit. When you’ve decided on your speed range, pick a suitable capacitor to determine the absolute speeds. A higher capacitance means a slower rate. With the aforementioned resistor values, something in the low microfarad range is a good starting point.
The capacitor should be non-polarised, as it will be charged above and below 0V. You can get non-polarised electrolytics easily enough, and the little polyester film caps are fine too, though they are less common in the >1µF range. Make sure the voltage rating of the cap is more than the voltage swing you’ll be giving it.
Next time I’ll talk about integrating LFOs.
The Korg MS-04 accessory was contemporary with the MS-series analogue monosynths in the late ’70s and early ’80s. It looks like a standard volume pedal, and weighs in around 1kg owing to its sturdy metal construction. Essentially it’s a bender pedal that provides a variable voltage to control your synthesizer. It also provides an LFO with triangle and positive-only square waveforms, and a random output that is sampled at the LFO rate. The range of the LFO goes from around 1s/cycle at the slow end to 70ms/cycle at the fast end (around 1Hz to 14Hz). It adds a glissando feature, which puts the bender pedal through the sample-and-hold instead. It has two outputs, which can be switched on and off, and which can output either the LFO alone, the pedal voltage alone, or a mix of both. One output runs at ±1.2V peak, the other at about ±5V. An LED indicates the LFO rate. It is powered by two 9V PP3-style batteries.
Inside, there is a small PCB with a few dozen components on, and a whole lot of wiring connecting the panel-mounted pots, switches, and jacks. Some components are soldered directly to the panel parts, and there are multiple wires of the same colour that don’t always run to the same points, so trouble-shooting is slightly messy. Luckily, it’s a simple enough circuit, and the spaghetti wiring is the only thing that need cause any headaches here.
The only schematic I could find online was blurry and hard to read, and lacks component numbering. I did my best to clear it up, and added the missing information. Unfortunately, half way through, my software crashed and my only saved file was of lower quality than I would have liked – hence the soft text over about half the image. I’d already put plenty of time in by this point, so it’ll have to do!
My additions are self-explanatory, I think. Parts that are not numbered are soldered directly onto panel hardware. The only missing values are the diodes – D2 to D5 are plain old signal diodes, D1 is a zener that I failed to make note of during repair. Sorry.
There seems to have been a change in some component values during production. These are labelled with ‘1’ and ‘2’ in black squares. The unit I took my details from had the lower value resistors and larger capacitor at points ‘2’.
There is no protection against only one battery being installed. The unit is switched on by the insertion of a cable into either output jack, so it is advised to remove the connections before fitting/replacing the batteries.
Here’s the Korg MS-04 schematic as PDF download.
And here’s a quick video of it working:
There are three ways to get audio from your Werkstatt: the VCO direct out, the VCF direct out (both on the pin header), and the main audio out (the 1/4″ jack on the rear panel).
The VCO Out signal is a sawtooth or pulse, depending which wave the VCO is switched to, at 0-5V. This is pure, dry VCO with no further processing, though of course it will be pitch- and/or pulse-width-modulated, depending on your modulation routings. The VCF Out is taken directly from the output of the filter, bypassing the VCA, and is nominally -2V to +2V. The main audio out is at typical line level (a couple of volts peak to peak), and comes through the filter and VCA.
If you want to use the Werkstatt as an extra oscillator for a modular, for example, you’ll probably want to use the VCO direct out. If you’re running the filtered sound into an external VCA for more varied amplitude modulation or to use with a high-pass filter maybe, you will probably want to take the Werkstatt’s audio directly from the VCF out. If you’re using the Werkstatt as a standalone expander, the main audio out will do just fine.
If signal levels were the same all the way along, none of this would be a problem. However, as with other aspects of the Werkstatt’s design, it needs some tweaking to integrate perfectly. Here’s how.
VCO direct out
Let’s say you’re using the VCO direct out. Eurorack has typical VCO signals of 10 volts peak-to-peak (see Doepfer’s Signals in the A-100 section, for example), centred around 0V (that is, -5V to +5V). To get the closest match sonically we want the Werkstatt’s output to match the other oscillators you’re using. Not all modules with mixers on board will boost as well as cut their inputs, so we can add a small circuit to give a true -5V to +5V VCO Out on the Werkstatt. The schematic below shows both the VCO and VCF mods. More on the VCF shortly.
How It Works
The VCO out mod is a basic non-inverting amplifier with an offset to make the positive-only signal bipolar. The gain is set by the two 20k resistors (1+20k/20k = 1+1 = 2) and the unity-gain reference point is at 5V. That is, 5V in gives 5V out. 0V in would be a difference of -5V from this reference point, so this is multiplied by the gain of 2 to give a difference of -10V, which taken from the +5V reference gives -5V out. In this way, the 0-5V input becomes -5V to +5V out. You can see it in action at this link. Below is a screenshot of the simulation.
Likewise, if you want to run the Werkstatt’s VCF output into an external module, boosting the signal to match requires just a small circuit, almost identical to the first. The signal level drops as resonance is increased, but to keep our circuit simple we won’t worry about that. The schematic is on the same sheet as the VCO output, posted earlier on this page.
How It Works
This is also a non-inverting amplifier, but this time with no offset as the VCF signal is already bipolar – all the amplification happens around a 0V centre point. Positive signals get more positive, negative signals get more negative. The VCF direct out is normally about 5V peak to peak at maximum, so we just double that to get the more useful 10V range. The gain is set the same way as the previous circuit, and we get an output of -5 to +5V maximum.
Installing the mod
I built both these circuits onto a small piece of stripboard mounted onto the panel with one of the minijacks. There’s just enough room, as can be seen in the photos. This allows the use of both halves of a dual op-amp so nothing goes to waste. There’s also plenty of room on the experiment pads at the top of the Werkstatt’s PCB, though you may find it a bit cramped if you’ve already got a couple of mods in there like I have…
The photos show the locations on the PCB of the various supply rails you’ll be wiring up to: -9V and +9V to power the op-amp, +5V for the VCO amplifier reference, and GND. These are all labelled on the top side of the PCB anyway so it’s easy to find them. I shared the ground that my existing mods were already using, which is connected to the nearby screw post via a solder tag. See my CV mod for details.
U1: TL072 or equivalent
R1, R5: 10k (1/4W 1% Metal Film used here, but it’s not critical)
R2, 3, 6, 7: 20k
R4, 8: 1k
jacks, wire, stripboard: as per your own choice
I’ve already blogged about the reasons you might want to mod your Werkstatt, and have posted a list of mods here, so to complete the VCO/VCF/VCA trio, here’s the VCA input at last!
How it Works
This is a very simple mod, and just replicates the existing patch header input. All you need is a 10k resistor, some wire, and a jack socket.
The easiest point to solder to on the board is JMP62. This is located just above the Decay pot. This point is where incoming VCA CV signals are passively mixed. It’s probably best to solder the new parts to this jumper on the underside of the PCB, which you can see on the photos of the wiring:
As the Werkstatt already has a pin for VCA modulation on its patch header, you might think this mod seems less immediately useful than the VCO or VCF CV inputs. The main issue is that there is no way to simply switch off the Werkstatt’s own VCA – you can select EG shaping, or ‘on’ for drones, but you can’t bypass it for use with an external envelope. What does this mean in practice, and why bother adding a CV input for it?
If you’re using the Werkstsatt with a modular, you’ll have more interesting envelopes than the attack-decay type on the Werkstatt. You might well also have something that will give an offset. It should be possible to use a negative offset to counteract the Werkstatt’s ‘on’ VCA CV, and mix in a more interesting envelope signal; setting the Werkstatt’s VCA to ‘on’ and feeding this CV input with that mix will then allow you to contour the Werkstatt’s VCA as you like.
It would also allow you to use the Werkstatt’s own patchbay to feed the VCA with its LFO, and simultaneously blend another LFO in with this CV mod. Mixing different LFOs gives a lot of movement to a sound, and can be very enjoyable to play with. You can also sequence the VCA level this way, while retaining other modulation via the pin header.
As always, my mods are not definitive – the best thing to do is experiment, and adapt, and find out what works for you and this excellent little synthesizer. Enjoy!
As a companion to my simple op-amp AR envelope circuit, here’s a discrete version. It has the same basic functionality – gated input, variable attack and release times – but is made with transistors instead of integrated circuits. Power consumption is very low (just a handful of mA), and it runs from a positive supply of your own choosing. Like its op-amp cousin, it could be powered with a battery, or in a Eurorack system, or you could add it into an existing synth like the Moog Werkstatt as a mod.
The main difference between this and the op-amp circuit, aside from it being discrete, is that I have included a very simple way to set the level of the envelope output (see below for details).
RV1 is Release, RV2 is Attack. The Gate input can be anything over a couple of volts. Negative-going inputs (eg., from a bipolar LFO) will be removed by D1. The output goes to nominally 0V when fully off (closer than the op-amp version, in fact).
R1, R2, R6, R7, R10: 100k
R3, R4: 47k
R5, R8: 560 Ohm
RV1, RV2: 1M linear pot
C1: 1µ non-polarized
D1, D2, D3: 1N4148 or equivalent
Q1, Q4, Q5: BC549C or equivalent
Q2, Q3: BC559C or equivalent
How it works
Compare the first pair of transistors with my discrete gate buffer circuit. A positive voltage on the input turns on Q1, taking the base of Q2 low. This turns on Q2, taking its collector high. This is how we drive our envelope.
Now compare the diode and potentiometer arrangement with my op-amp AR. Once you’re past the transistors, it works in basically the same way.
Q3 inverts the output of Q2, so when Q2 is on, Q3 is off, and vice versa. When the collector of Q2 is high, the capacitor charges through diode D3 and pot RV2 (Attack). When the gate input goes low, the transistors Q1-3 switch off, off, and on, respectively. In this state, the capacitor discharges through RV1 (Release) and D2.
Note the two 560 ohm resistors: one on the emitter of Q2, the other on the collector of Q3. When the gate input is high and the capacitor is charging, current flows through Q2’s emitter resistor; when the gate is off and the capacitor is discharging, current flows through Q3’s collector resistor. These two resistors put a lid on the current flow and limit the fastest times for Attack and Release. The value is a trade-off between current and snappiness. With the values shown, maximum current through these resistors is around 16mA and the fastest rise and fall times of the envelope are around 2ms.
The final two transistors in the circuit after the capacitor are the output buffer; notice the two resistors between them, forming a potential divider. With the values shown, if you run this circuit on 12V, the envelope output will be around 8V max.
There are better ways to set the peak level of an envelope, but my aim here is to keep things simple as a base for experiment.
The most obvious things to tweak are the envelope times and the output level.
The values of the two potentiometers affect the attack and release times, but the envelope can be substantially stretched by using a larger capacitor. It would be easy to add a switch that connected, say, a 4.7µF or 10µF capacitor in parallel with the existing one, which would multiply the envelope’s times substantially (use perhaps a 25V electrolytic, with its -ve terminal to ground).
The two resistors between the output buffer transistors can be adjusted to suit your requirements. If you want full-scale output (ie., envelope peak closer to the supply voltage), remove R9 and R10, and connect the emitter of Q4 directly to the base of Q5. In fact, this circuit will also work with just a single NPN as a buffer (miss out Q4 and the divider resistors, connect the cap to the base of Q5), but amongst other things the ‘zero’ value is less close to actual zero; if you want to experiment with a single transistor here, setting the level of the output can be done by replacing the 10k resistor on its emitter with a pair of resistors as a potential divider, or even a 10k trimmer with the output taken from the wiper.
Feel free to experiment with the circuit in Falstad’s handy online simulator.