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.