A sound that never changes is furniture. An LFO is a slow invisible hand on a knob — and in Volta it's a signal you can point at any parameter.
lfoSine @ 1/4c is a sine wave cycling once per quarter of a pattern cycle — tempo-synced, so the wobble stays in time at any bpm. @ 5Hz clocks it absolutely instead.
Point it at the filter: cutoff = const 600Hz + (lfoSine @ 1/4c |> scale [0, 1800]) * 1Hz. The scale [lo, hi] maps the LFO's swing onto a range; multiplying by 1Hz gives the number its unit.
Point a tiny one at pitch and you get vibrato: pitchMod = (lfoSine @ 6Hz |> scale [0, 8]) * 1Cents.
lfoSH is the odd sibling — sample-and-hold. It doesn't wave, it jumps to a new random value each step: the burbling robot filter of a thousand sci-fi scores.
The starting point#
The lesson opens with this song in the editor. Every edit recompiles and plays.
-- LFOs: this pad holds one frozen color forever. Put a hand on the knob.
pad = patch {
source = saw (freq pitch) + saw (freq pitch + 8Cents),
ampEnv = adsr 250ms 0ms 1 500ms,
cutoff = 1200Hz,
gain = vel * 0.35
}
drone = play pad !"c3 ~ ab2 ~"
What to watch#
The LFO is the slow shape UNDER the fast one: the spectrum's bright edge sweeps up and down on its own clock while the notes keep their own time.
Goals#
The workbench checks these as you work; the solution is there when you want it.
- Put an LFO on the cutoff
- Sync it to the cycle with @
- Stretch: sample-and-hold randomness
Make it yours#
One pad, three LFOs: slow on cutoff, fast-and-tiny on pitch, medium on gain. Balance them until the pad feels alive but not seasick.
Further reading#
Macros and automation in the reference.