Skip to content

MOD Tab

The MOD tab is Grainulator's modulation matrix โ€” five independent lanes that each pick a source, a destination, and a set of per-lane shaping controls. Because the MOD tab is always visible (including in the compact AU layout, where SYNTH / FX / MOD live in a tab strip at the top), every modulation assignment is reachable from any other view without losing your place on the GRAIN, TEXTURE, or FX tabs.

Each lane carries its own LFO, ADSR envelope, Euclidean generator and 8-step sequencer, so you don't have to reserve a global slot to get movement on a single parameter. Sources cover LFOs, envelopes and two rhythmic generators added on 2026-04-05 โ€” a clock-divided Euclidean LFO and a tempo-synced step sequencer. Destinations reach 38 per-layer and global targets covering the grain core, window, filter, resonator, spectral block, master filter, global effects and the compressor.

Mod lanes always respect the layer model. Each lane has a Target that picks which layer(s) it applies to, and the UI uses the Layer 1 / Layer 2 naming throughout even though the underlying parameters are stored as Voice 1 / Voice 2.

Overview

Every lane exposes the same set of core controls:

Control Description
Source What drives the modulation. Per-lane LFO, envelope, Euclidean LFO, or step sequencer.
Dest Which parameter is modulated. One of 38 targets grouped by category.
Amount Bipolar scale from โˆ’1 to +1. Negative values invert the source.
Curve Response shaping applied to the source before it hits the destination.
Target Which layer(s) the modulation applies to: both, Layer 1 only, or Layer 2 only.
Enable Lane on/off without having to reset Source or Dest.

The Curve menu offers nine shapes โ€” Linear, Exponential, Logarithmic, S-Curve, Stepped, RandomSmooth, Threshold, Inverted and Bipolar. Threshold is particularly handy with the Spectral Freeze destination: it converts any bipolar source into a clean gate (1 above zero, 0 below).

Sources

The Source dropdown on each lane lists every available modulation source. The previous Macro / Velocity / Pressure entries are retained in the underlying parameter enum for preset compatibility but are hidden from the UI and produce zero output at runtime โ€” the four live sources are described below.

Per-lane LFO

Classic free-running or tempo-synced LFO. Each lane has its own, so you never run out.

Control Range Description
LFO Shape enum Sine, Triangle, Saw, Square, Random, S&H.
LFO Rate 0.01โ€“50 Hz Free-running rate when the lane's Sync toggle is off.
LFO Depth 0โ€“1 Output scale applied before Amount.
LFO Retrig toggle When on, the LFO resets to phase 0 on every MIDI note-on (Instrument mode). When off, the LFO runs free.

When the lane's shared Sync toggle is on the LFO is driven by the rhythmic clock described below and LFO Rate is ignored.

Per-lane envelope

A full ADSR envelope, one per lane. In Instrument mode it is triggered by MIDI note-on and released on note-off; in Free mode it triggers alongside the global play transport.

Control Range Description
Env A 0.001โ€“10 s Attack time from 0 to peak.
Env D 0.001โ€“10 s Decay time from peak to sustain.
Env S 0โ€“1 Sustain level held while the note is active.
Env R 0.001โ€“10 s Release time after note-off.

Rhythmic sources (added 2026-04-05)

Two phase-driven generators share a single clock with the LFO. The clock can free-run at a Hz rate, or lock to host tempo at a musical division (1/32 through 1/1, straight / dotted / triplet), so all three time-based source types line up with the rest of your project.

Euclidean LFO distributes Euc Hits evenly across Euc Steps using Bjorklund's algorithm, rotates the pattern by Euc Rot, and renders each hit according to Euc Shape: at 0 each hit is a gate (square pulse), at 1 it's a ramp that decays linearly to zero over the step, and 0.5 sits between the two.

Step Sequencer plays back an 8-step pattern of bipolar slider values at the lane's clock rate. Seq Len truncates the sequence to anywhere from 1 to 8 active steps, and Glide slews between adjacent steps over a fraction of the step duration (0 = instant, 1 = full step slew). When the lane's Dest is Pitch the sliders snap to integer semitones and the hybrid pitch path emits a full ยฑ12 semitone range, bypassing the usual Curve and Amount.

Every rhythmic source shares the same 18 per-lane parameters:

Control Range Description
Sync toggle Lock this lane's clock to host tempo. Off = use Free Rate.
SyncDiv 0โ€“15 Division index (1/32 โ†’ 1/1, including dotted and triplet variants). Used when Sync is on.
Free Rate 0.01โ€“50 Hz Free-running clock rate. Used when Sync is off.
Euc Hits 0โ€“16 Number of active hits in the Euclidean pattern.
Euc Steps 1โ€“16 Pattern length for the Euclidean LFO.
Euc Rot 0โ€“15 Pattern rotation. Shifts which step the pattern starts on.
Euc Shape 0โ€“1 Hit rendering: 0 = gate, 0.5 = pulse, 1 = ramp.
Step 0โ€ฆStep 7 โˆ’1โ€ฆ+1 Eight bipolar step values for the sequencer. On pitch destinations they snap to integer semitones.
Seq Len 1โ€“8 Active step count. Steps beyond the length are skipped and dimmed in the UI.
Glide 0โ€“1 Fraction of step duration spent slewing between step values.
Reserved โ€” Reserved for future use; has no effect.

One clock "cycle" is one full pass through the source's period โ€” the Euclidean pattern's step count, or the step sequencer's length. A lane synced to 1/4 at 120 BPM therefore produces one full pass every two beats.

Destinations

Each lane's Dest dropdown lists 38 modulation targets grouped by category. Per-layer destinations are routed through Target; global destinations (master filter and effects) ignore Target.

Group Destinations
Grain Position, Speed, Pitch, Size, Density
Window Tilt, Curve, Morph Amt, Morph Rate
Filter Cutoff, Resonance
Resonator Chord, Brightness, Damping, Scatter, Mix, Note
Amplitude Level, Pan, Spread
Master M.Cutoff, M.Reso
Effects Delay Mix, Reverb Mix, Reverb Size, Rev Freeze
Spectral Formant, Tilt, FrzBlend, Charcter, Focus, Freeze
Compressor Comp Thresh, Comp Ratio, Comp Attack, Comp Release, Comp Makeup, Comp Mix

Layer targeting

Each lane's Target picks which layer(s) the lane applies to:

Value Behaviour
Both Apply to both layers.
Voice 1 Apply only to Layer 1.
Voice 2 Apply only to Layer 2.

The underlying enum labels still read Voice 1 / Voice 2, but the layer they address is Layer 1 / Layer 2 as named everywhere else in the UI. Global destinations (master filter, delay, reverb, compressor) ignore this setting.

See also