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:
VCO vs. DCO: a non-debate
Much discussion can be found online of the differences between what are simply often labelled VCOs or DCOs (Voltage/Digitally Controlled Oscillators) but as with many things, the truth is less simple. Often the argument boils down to things like phase and stability. I do not want here to get into any kind of debate or pointless pontification about whether one oscillator is better than another, or to try to delineate boundaries between oscillator types in such a black-and-white way.
The reason, in this instance at least, is partly that the Juno 6 oscillators contain features that straddle what some may see as stricly analogue and strictly digitally-controlled. I offer below an explanation, as best I can give it, of the functioning of the Juno 6 oscillators.
The job of key assignment and voice allocation is something I am not going to cover here. The Juno 6 has a CPU that scans the keyboard and generates data, and this process is beyond the scope of my analysis. I pick up the process at the point at which note data is output from the CPU.
How does the Juno’s oscillator work?
Many (if not most) analogue synthesizer VCOs employ a ramp generator core; that is, a voltage representing pitch is fed (via a convertor that scales the control signal correctly) to a circuit that charges a capacitor, the charge across it generating a ramp. When the ramp reaches a pre-defined level, a comparator in the circuit quickly triggers the discharge of the capacitor, at which point the ramp starts its cycle again. The result is what is often called a sawtooth waveform. In the analogue domain, the stability of this process is subject to factors like temperature fluctuations. Digital control helps combat instability.
Though the Juno 6’s oscillator core is based on this analogue capacitor-charging approach, the ramp reset pulse relies not on an analogue comparator but a digital counter. Effectively, the CPU is programmed with the relative frequencies of each note, and provides a counter (one for each voice) with a value representing how long it should wait before resetting the ramp for any given pitch. The CPU also sends note data (via a DAC) as an analogue voltage to the ramp generator control input. Perhaps counterintuitively, this is not to determine its pitch – after all, pitch is frequency, and the frequency is determined by the resetting of the ramp – instead, it is to maintain an even ramp waveform across all frequencies.
Imagine a low frequency. The clock waits longer to reset the ramp. If the voltage fed to the ramp generator were constant for all frequencies, it would ramp at the same rate no matter which note was played. At low frequencies the ramp would reach its limit and stay there before being reset, and at high frequencies, the counter would reset much sooner, cutting the ramp off before it had achieved optimum level. In this scenario, the low pitches would be severely distorted, and the high pitches would be extremely quiet. Thus, in accordance with the frequency data provided by the CPU, an analogue voltage is generated which will charge the capacitor in the analogue oscillator core at a rate optimised for that pitch, while the resetting process (and therefore the oscillator frequency) is controlled digitally. The result is more stable than a purely analogue circuit.
The matter is slightly more involved, however. Firstly, the counters that provide the reset pulse have to know how fast to count. They are clocked not by the CPU, but by an analogue voltage-controlled clock, which is governed in turn by a sum of the pitch bend, fine tune, and LFO voltages as collected on the bender board. This ensures there is no stepping in the pitch during modulation – as the master clock is in the analogue domain, it is thereby continuously variable. The sum of analogue modulation voltages is also mixed with the CPU-generated ramp feed voltage, so that there is no distortion of the ramp during modulation.
To summarise, the basic process is as follows: note data is sent as a binary number from the CPU to a high-speed counter. An analogue voltage is also generated by the CPU via a DAC, and fed to an analogue ramp generator. When the counter completes its cycle, it resets the ramp circuit capacitor, and charging begins again. Thus, an analogue ramp – the sawtooth wave – is frequency-controlled by a digital device.
It may help to study the schematic for the oscillator core and its logic control. Below is the appropriate page of the service manual. The complete manual contains further technical information.
The counters, DAC, exponential converter, and ramp generator are highlighted in red.
PDF version: Juno 6 main board
Our top octave needs to be turned into a note for each key, and one that only sounds when that key is played. This is a multi-stage process consisting of dividing, keying and mixing.
The first step is to divide down those 12 frequencies. Put simply, the constantly-running top octave is transformed into a set of keyed (that is, keypress-activated) outputs, each output here containing all the played notes of one octave.
The top octave waves are fed into a set of Divider/Keyer ICs. The IC used is the S10430. This, in a nutshell, takes these top octave waves and divides them down to cover the full keyboard. It also takes an input from each key on the keyboard that governs the level of the output of its own note. It then mixes the signals together and has outputs for each of the 2′, 4′, 8′, and 16′ pitches.
Study of the S10430 datasheet shows that the Lambda uses most but not all of the S10430’s capability: it can handle six frequencies per IC, whereas the Lambda employs it to handle four. There are nine S10430s in the Lambda – three for each oscillator, each handling four notes of the 12 from that oscillator’s TOG.
As has been mentioned in my Lambda overview, divide-down technology is a basic way of obtaining a full keyboard of notes. Once a waveform has been generated for each of the 12 notes of a scale, it is a simple matter to electronically halve that frequency to generate the same note one octave below, and then to halve that, and then halve that, and so forth. Various methods can be employed (for example, flip-flops or counters), but the result remains the same: after dividing down, there exists a square wave of the appropriate frequency for each note on the keyboard. In the Lambda, this operation happens within the S10430 divider/keyer IC. The S10430’s N-inputs take the TOG outputs, four to each module.
Below is a rough sketch of what a divided pulse wave looks like. Apologies for the roughness, I have no mastery of drawing software…
Left at only this, we would be faced with a constant blare of square waves at every pitch. What is needed is a way to pass those waves into the audio chain only when the appropriate keys on the keyboard are played. This is where the S10430’s keyer circuits come in.
The S10430 has a number of K-inputs. Each of these inputs takes a varying voltage from one key on the keyboard. The voltage present on that input governs the signal level of that frequency that is passed through to the outputs. Thus, if a hard on/off sound is required, the K-inputs should take a straightforward low/high voltage; if a steadily varying volume of sound is required (such as the slow fade-in and fade-out of a string ensemble) then the signal present on the K-input should be a slowly moving voltage. The S10430 requires a voltage that is high for ‘off’ and low for ‘on’, or anywhere between.
The Lambda sports several controls for its individual note articulation: the Percussive section has a fixed attack but variable decay, as well as a Sustain switch that when active employs the Decay control as a release also (by default the Percussive envelope has an abrupt release); the Ensemble section uses a preset attack and release as standard but also has a Variable switch that activates a pair of user-adjustable Attack and Release controls.
These envelopes are provided on a per-key basis by discrete circuitry. For every key on the keyboard, the Lambda contains a compact but effective set of diodes, resistors and capacitors that, when the associated key-switch is activated, charges and discharges a capacitor according to the attack/decay/release control voltages present. Each key’s envelope voltage is then fed to the K-input for that key to govern its note’s audio volume.
The S10430 has outputs for four octaves: 2′, 4′, 8′, and 16′. This is standard nomenclature. At each of these outputs is present the sum of all the played notes handled by that particular S10430 in that octave and for its designated oscillator. For example, Module 1 (as designated on the schematic) provides C#, D, D#, and E for Oscillator 1. These outputs, on a per-oscillator basis, are mixed with summing op-amps to give buffered 2′, 4′, 8′, and 16′ signals; thus, at this point in the circuit, the Lambda provides Oscillator 1 at 2′-16′, Osc 2 at 2′-16′ and Osc 3 at 2′-16′ on dedicated audio paths.
It can be seen that in this way, the Lambda gives individual articulation to each note played, and that there is plenty of circuitry on the boards inside…
There are several points to note about the Lambda’s divder/keyer arrangement:
1) The three oscs each use three divider/keyer ICs. Each S10430 handles four TOG notes. Modules 1-3 provide the total output for Osc 1, Modules 4-6 give Osc 2, and Modules 7-9 Osc 3.
2) The envelopes work differently depending on the switching of preset sounds. If no Percussive sounds are selected, the Ensemble sounds utilise the full range of oscillators as governed by their keying and mixing. However, if both Ensemble and Percussive sounds are selected, the Ensemble sounds lose the first oscillator from their mix – the first oscillator is given over to the Percussive sounds. The exception to this is the Brass preset, in which Osc 1 is retained while a Percussive sound is selected, but using the Percussive envelope instead of the Ensemble envelope (the other Brass oscillator retains the Ensemble envelope). A good way to hear this is to wildly detune the oscillators and minimise the Percussive volume while playing simultaneous Percussive and Ensemble sounds. Note also that some of the circuitry for this is employed after the mixing stage and will therefore be covered in another blog post.
3) The outputs at this point are still only square waves. However…
4) … each keypress generates not just one square wave but four. If, say, C3 is played, the Keyer/Divider IC in each oscillator that deals with the C notes will output a square wave pitched to be 16′ at C3. This will appear on the appropriate output for each oscillator. But there will also be an 8′ C3, a 4′ C3, and a 2′ C3. Why? Because, as we shall see in the post dedicated to wave layering and filtering, one square wave is not enough to make a large array of varied sounds. These extra octaved squares provide the potential for extra harmonic content, much as the drawbars on old organs combine simple waves at different frequencies to give a broad range of tonal colour.
The above detail refers to the following page of the Lambda schematics: