The modulation system in TOMiC is one of the most comprehensive ever built into a drum synthesizer. Each layer (A and B) of every channel features up to 4 instances of each of the 3 base modulator types (LFO, ModEnv, Marbles), plus 4 instances each of 7 advanced modulator types (Markov, Lorenz, Cellular, Tidal, Orbital, Chladni, CvGranular) — 40 modulator instances per layer in total. Additionally, at the channel level (shared across A/B, not duplicated per layer), 4 HandMade/Record instances and 2 XY Pad instances are available. Only the first instance of each type is enabled by default; the rest are pre-allocated slots revealed with the "+ Add" button in the UI.
Each modulator features 15 routing destination slots (m1_dest..m15_dest with matching m1_amt..m15_amt), allowing a single LFO — or any other modulator — to drive up to 15 parameters simultaneously, each at its own depth. The XY Pad is a special case: its X and Y axes each get their own independent bank of 15 slots (mx1..mx15 / my1..my15), for 30 destinations per instance.
All modulators share one master destination list — the LfoTarget enum — which currently spans roughly 450 possible targets, covering virtually every sound-shaping and FX parameter in the synth, from oscillator pitch and filter cutoff to reverb send and even other modulators' own parameters (see 4.9).
Every modulator panel has a small output jack. Dragging from it produces an animated "patch cable" — release it over any modulatable knob to wire that modulator into the knob's first free routing slot at a default amount of 50%. Every eligible knob highlights with a colored ring while a cable is in flight, and dropping outside a valid target retracts the cable. This is in addition to (not a replacement for) manually picking a destination from the m1_dest..m15_dest dropdowns in the modulator's own panel.
4.2 LFO (Low Frequency Oscillator) — Up to 4 per Layer
LFO Parameters:
Waveform — 5 shapes:
Sine: Smooth sinusoidal modulation
Triangle: Linear ramp up and down
Saw: Sawtooth ramp
Square: Instant step switching between two values (duty cycle set by Pulse Width)
Random: Random value jumps (Sample & Hold)
Rate: LFO frequency speed (0.1 Hz – 50 Hz)
Polarity: Bipolar (±), UniPlus (0 to +), UniMinus (0 to −)
Retrig Mode:
Retrig: Reset LFO phase on every trigger note
Free Run: Free-running LFO without trigger resets
Free Run + Reset: Free running with optional phase reset
Sync Enabled / Sync Division: DAW tempo synchronization, from 1/32 note up to 8 bars, including triplet and dotted variants (1/32, 1/16, 1/8T, 1/8, 1/4T, 1/4, 1/2T, 1/2, 1/1, 2/1, 4/1, 8/1, plus dotted 1/32.–8/1.)
Depth: Master modulation amount for this LFO instance (0–100%), scaling all 15 of its routed destinations at once
Phase Offset: Rotates the waveform's starting point within its cycle (0–100%)
Pulse Width: Duty cycle for the Square waveform (10%–90%)
Free Run behind the scenes: an LFO set to Free Run (or Free Run + Reset) keeps ticking even while the voice engine is idle between hits, as long as it is actually routed to something — so its output can keep evolving during silence rather than freezing at the last value. A modulator that isn't routed to any destination is skipped by the engine entirely (no CPU cost), whether or not it is "enabled."
Routing Slots:
Each LFO features 15 modulation routing slots. Each slot consists of:
Destination (m1_dest..m15_dest): Modulation target selected from the complete LfoTarget list
Amount (m1_amt..m15_amt): Modulation depth (−100% to +100%)
4.3 Mod Envelope (ModEnv) — Up to 4 per Layer
Modulation envelopes are single-shot ADSR generators designed for dynamic parameter shaping — separate from the oscillator/noise amplitude envelopes, which are dedicated volume-only controls.
4.5 Advanced Modulator Types (Up to 4 Instances per Layer Each)
In addition to the classic LFO/ModEnv/Marbles, TOMiC offers 7 advanced modulator algorithms, each with its own dedicated parameter set, Depth/Polarity output stage, a Seed for reproducible randomness, and the full 15-slot routing matrix.
Walks a chain of nodes with controllable randomness, from a strict step sequence to fully unpredictable jumps.
Parameter
Range
Description
Rate
0.1–50 Hz
Step clock speed
Sync Enabled / Div
—
Optional tempo sync
Entropy
0–100%
0 = sequential walk (node 0→1→2→…), 100% = fully random jumps between nodes
Loop Lock
on/off
Freezes the last Loop Length generated steps into a repeating pattern
Loop Length
1–8 steps
Length of the frozen loop when Loop Lock is engaged
Mutation
0–100%
Per-step probability of a random sign flip or one-node offset, keeping a locked loop from feeling perfectly static
Glide
0–100%
0 = quantised steps between nodes, 100% = smooth glide
Depth / Polarity / Seed
—
Standard output stage
4.5.2 Lorenz — Chaotic Attractor Modulator
A numerically-integrated Lorenz attractor, the classic 3D chaotic system, generating complex, never-exactly-repeating trajectories.
Parameter
Range
Description
Rate
0.01–50
Integration speed (not a musical clock — no tempo-sync concept)
Chaos (Rho)
10–50
Drives the system from stable/near-periodic toward full turbulence
Damping (Beta)
0.5–5.0
Energy decay rate of the system
Scale
0–100%
Output amplitude scaling
Smoothing
0–100%
Post-integration smoothing
Output
X / Y / Z
Which of the attractor's three axes is used as the modulation signal
Depth / Polarity / Seed
—
Standard output stage
4.5.3 Cellular — Cellular Automaton Modulator
Evolves a 1D row of cells generation by generation using a Wolfram elementary cellular-automaton rule, converting the pattern into a control signal.
Parameter
Range
Description
Rule
0–255
Wolfram rule number governing how each cell's next state is computed (e.g. Rule 30 = chaotic, Rule 90 = Sierpiński-like)
Rate
0.1–50 Hz
Generation-advance speed
Sync Enabled / Div
—
Optional tempo sync
Width
4–32 cells
Number of cells in the row
Mutation
0–100%
Probability of a random cell flip each generation, preventing the automaton from settling into total silence/stasis
Output Mode
Density / Center of Mass / Weighted Sum
Density = fraction of live cells; Center of Mass = mean live-cell position regardless of count; Weighted Sum = position-biased sum (later cells count more)
Reset Pattern
on/off
Re-seed the row on trigger
Depth / Polarity / Seed
—
Standard output stage
4.5.4 Tidal — Layered Tidal/Wave Modulator
Combines a slow, tempo-locked "tide" with a faster, free-running fractal "wave" riding on top of it — two motion layers in one modulator.
Parameter
Range
Description
Tide Period
1/4/8/16/32/64 bars
Macro tide cycle length — always tempo-relative
Roughness
0.1–0.9
Hurst exponent of the wave layer: low = jagged, high = smooth elastic drift
Octaves
1–4
Number of fractal noise octaves layered into the wave
Wave Rate
0.05–4 Hz
Base speed of the wave layer — free-running, no tempo relationship
Tide Depth
0–100%
Contribution of the slow tide layer to the output
Wave Depth
0–100%
Contribution of the fast wave layer to the output
Depth / Polarity / Seed
—
Standard output stage
4.5.5 Orbital — Orbital-Mechanics Modulator
Simulates a body in a gravitational orbit, kicked by each note trigger; gravity, friction and the kick shape determine how the orbit evolves and decays.
Parameter
Range
Description
Gravity
1–200
Central pull strength
Friction
0–2
Orbital viscosity: 0 = eternal orbit, 2 = decays fast to center
Which orbital quantity is used as the modulation signal
Depth / Polarity / Seed
—
Standard output stage
4.5.6 Chladni — Chladni-Plate Modulator
Models the interference pattern of a vibrating plate at a listening point, in the spirit of Chladni figures — two independent listening frequencies and a source count shape the resulting field.
Parameter
Range
Description
Freq A / Freq B
0.02–2 Hz
Listening-point frequencies on the plate's X and Y axes
Sources
2–6
Number of vibration sources contributing to the interference field
Damping
0–3
Radial damping: 0 = signal spans the full plate, 3 = concentrated at the center
Phase Offset
0–100%
Lissajous-style Y-phase offset, reshaping the traced curve
Output
Field / X / Y
Field = the interference amplitude at the listening point; X/Y = the raw listening-point coordinates
Depth / Polarity / Seed
—
Standard output stage (Seed jitters the source angles)
4.5.7 CvGranular — CV Granulator
A granular engine applied to control voltage instead of audio: it spawns short randomized "grains" of modulation rather than a continuous wave.
Parameter
Range
Description
Rate
0.5–40 Hz
Grain spawn rate
Sync Enabled / Div
—
Optional tempo sync
Grain Length
5–500 ms
Duration of each grain
Duration Jitter
0–100%
Randomizes grain length around the base Grain Length
Amplitude Jitter
0–100%
Randomizes each grain's peak level
Shape
0–100%
Attack/release balance of the grain envelope: 0 = percussive, 100% = slow
Depth / Polarity / Seed
—
Standard output stage
4.6 HandMade / Record — 4 Instances per Channel
The HandMade modulator (HandMadeParams) lets you either record a knob gesture in real time or hand-draw a custom modulation curve, then loop it back as a modulation source. It is defined at the channel level, shared across the A/B layers (not duplicated per layer).
Rate: Playback speed along the recorded/drawn curve, free-running (0.1–50 Hz)
Sync Enabled / Sync Division: Optional tempo sync, same division list as the LFO
The curve itself is a 512-point buffer captured either by recording a knob's real-time movement (up to 20 seconds of "Free" recording, auto-stopping about 0.6 s after you release the knob) or by drawing directly in the curve editor popup; only the portion you actually drew/recorded is looped, so short gestures loop tightly instead of playing through a long stretch of untouched silence
15 Routing Slots, identical in structure to the LFO
4.7 XY Pad — 2 Instances per Channel
The XY Pad modulator (XyPadParams) is a 2-dimensional touch/draw controller generating two independent modulation signals (X and Y) from one recorded or hand-drawn trajectory. It is also defined at the channel level, shared across A/B layers. It is capped at 2 instances rather than 4 because its editor widget is significantly larger on screen than a knob.
Rate / Sync Enabled / Sync Division: Same playback-speed controls as HandMade
Retrig: Resets the trajectory's phase to the start on every note trigger; without it, the trajectory free-runs continuously and each hit lands at an arbitrary point in the loop
Each axis has its own independent bank of 15 routing slots — mx1_dest..mx15_dest / mx1_amt..mx15_amt for X, my1_dest..my15_dest / my1_amt..my15_amt for Y — so one XY Pad instance can drive up to 30 destinations total
4.8 Macro Knobs
Per-Channel Macros — 7 per Channel
Seven Macro knobs (MacroParams) per channel give quick access to a curated combination of parameters under a single knob. Each Macro's raw value (0–100%) fans out through its own 15-slot routing matrix, and — unlike the plain modulators above — each of those 15 slots carries an extra per-slot Mode setting (Bipolar / UniPlus / UniMinus), so the same knob can push some destinations up and others down, or in both directions, simultaneously. Macro names are user-editable. A Macro's own value can itself be modulated by any other modulator (via the Macro1Value..Macro7Value targets — see 4.9), letting an LFO, envelope, or step lane drive the "super-knob" automatically.
Global Macros — 4 Global
Four Global Macro knobs (GlobalMacroParams) live at the plugin level, not per channel, and are shown on the transport bar next to the Limiter section. Their 15 routing slots work like the per-channel Macros (destination, amount, Bi/Uni+/Uni- mode) but each slot additionally carries its own target channel selector — so a single Global Macro slot can be aimed at any one of the 16 drum channels independently of the others, letting one knob sculpt a coordinated move across the whole kit. Global Macros are also the only modulation source that can reach the small set of master-bus-only targets (master compressor threshold/makeup gain, master limiter ceiling), since those live outside any per-channel patch.
4.9 The Complete Modulation Destination List (LfoTarget)
Every modulator — LFO, ModEnv, Marbles, all 7 advanced types, HandMade, XY Pad, and both Macro types — draws its destinations from one shared list, LfoTarget, which currently contains roughly 450 targets. The categories below (as they appear in the destination dropdown) group them by section:
Filter/FilterRes/FilterDrive/FilterModel/FilterCharacter, repeated across 8 independent filter slots (Filter…Filter8) for the oscillator path, and again across 8 slots each for the Noise 1 and Noise 2 filter paths
Beyond synthesis and FX parameters, a dedicated block of targets — grouped under "MOD: LFO", "MOD: ENV", "MOD: MARBLES", "MOD: REC", "MOD: MKV", "MOD: LOR", "MOD: CEL", "MOD: TID", "MOD: ORB", "MOD: CHL", "MOD: GRA" and "MOD: MACRO" in the destination dropdown — points at another modulator's own parameter instead of a sound/FX field: an LFO can sweep Lorenz 2's Chaos amount, a Markov sequence can bend an LFO's Rate, or a modulator can even bend its own Rate (self-modulation is explicitly allowed and safe). Each family exposes its two most musically useful parameters this way (typically Rate/Speed plus one character knob, e.g. Lor1Rate/Lor1Rho, Mkv1Rate/Mkv1Entropy, Cel1Rate/Cel1Mut), plus every Macro's raw knob value (Macro1Value..Macro7Value).
These cross-modulation targets are resolved in a dedicated pass at the very start of each audio block, using the previous block's source values — this one-block delay is what makes feedback loops and self-modulation safe instead of causing runaway or undefined behavior.