LFO
An LFO that outputs a value changing periodically in sync with the tempo. The output is waveform(0-1) × Amp + Offset. In other words, the bottom is Offset and the top is Offset + Amp (with Amp at 1 and Offset at 0, that is 0-1).
Clock source (chosen from a dropdown)
- GlobalTempo — syncs to the application’s global tempo (BPM). Phase drift is corrected automatically at beat boundaries, and Resync returns the phase to 0
- AbletonLink — uses Ableton Link’s continuous beat directly
- Free — not tempo-synced.
FreeRateis the number of cycles per second (equivalent to Hz; negative values are treated as 0)
Beat division (GlobalTempo / AbletonLink only)
The length of one cycle is chosen from a dropdown, with seven steps: 1/4 beat, 1/2 beat, 1 beat (default), 2 beats, 1 bar, 2 bars, 4 bars. In Free mode the division is not used.
Waveforms (five)
All of them output 0-1.
- Sine — the start of the beat is the trough. It rises from the bottom, crests, and comes back (inverted cos)
- Saw — a straight line from 0 at the start of the beat up to 1
- Square — 1 while the phase is below
PulseWidth, 0 after that (PulseWidth only affects Square; clamped to 0-1) - Triangle — a 0→1→0 triangle
- SampleHold — a new random value each cycle, held for one cycle
Notes on the ports
- PhaseOffset — the unit is “cycles”. 1.0 shifts by exactly one cycle, so you can do things like offsetting several LFOs in 0.25 steps
- Cycle Trigger — a trigger output that fires the moment the phase completes a cycle (the same timing as SampleHold’s random value update)
The node UI shows a scope indicating the current waveform and phase. For managing the overall tempo, see GlobalTempo.
Video
Input ports
| Port ID | Type |
|---|---|
Amp | float |
Offset | float |
PhaseOffset | float |
PulseWidth | float |
FreeRate | float |
Output ports
| Port ID | Type |
|---|---|
Value | float |
Cycle Trigger | trigger |
Scriptable members
| Path | Type |
|---|---|
ampInput | float |
offsetInput | float |
phaseOffsetInput | float |
pulseWidthInput | float |
freeRateInput | float |
divisionIndex | int |
Synapse Apps (scripting)
await synapse.modules.create({ type: "LFO" }) 

















