TOMiCUser Manual v0.6
Back to TOMiC
Get TOMiC
0%
Table of Contents
00User Manual v0.6
01Introduction & Architecture
02Synthesis Engine & Layer Morphing
03Noise Generators & Sampler
04Modulation Matrix
05Per-Channel FX Chain
06Step Sequencer & Song Mode
07Mixer, Master, AI & Artchemy
08Specifications & MIDI Chart
TOMiC Groovebox v0.6 • Rust & egui
FX & Filters

Chapter 05: Per-Channel FX Chain

16 dedicated FX processors (inc. Dual Resonant Delay, Clouds Granular, Rings), 12 filter models, up to 8 filter slots, in-process CLAP FX hosting.

5.1 DSP FX Chain Overview

Every channel in TOMiC includes a dedicated stereo DSP effects processing chain. Signal originating from oscillators and noise generators flows sequentially through filters, distortion, dynamics, EQ, modulation FX, granular processing, and spatial effects.

Internally the chain runs as two stages: the main serial insert path — Ring Mod → Freq Shifter → Bitcrusher → Distortion (post-filter portion) → Wavefolder → 3-Band EQ → Phaser → Chorus → Stereo Widener → Compressor → Transient Shaper → Grain Cloud (pre-delay, default) → Delay → Reverb (TinCan) → Grain Cloud (post-delay, if Cld Post is enabled) → Stutter/Beat Repeat (always last) — followed by a second pass that adds Hall Reverb (replacing TinCan when selected), the Spectral Gate, and the Rings Resonator (Res FX).

An identical FX chain is available on the Master Bus (master_fx inside TomicParams), processing the summed stereo output before the master glue compressor and limiter. Two exceptions: the Click/Impulse Generator (5.4) is a per-voice trigger transient with no DSP behind it on the master bus (its tab is hidden in the Mixer's master inspector for this reason), and Sidechain Source is a per-channel-only routing concept — the master bus is the sum of all channels, so it has nothing external to key off. The master bus additionally carries its own glue compressor and digital limiter, described in 5.13, which have no per-channel equivalent.

Every unit of the chain can also be switched off per step from the sequencer's ⚡ FX lane (6.15): a step decides which effects skip the hits fired while it is current, while delay and reverb tails from the previous hit keep ringing.

Stereo FX Processing Chain
Zoom HD

Stereo FX Processing Chain

Figure 5.1: Per-channel FX processing chain.

5.2 Filter Chain (Up to 8 Slots)

TOMiC features a chain of up to 8 independent filters per layer (filter1..filter8). Slot 1 is enabled by default; click "+ Add" to activate additional slots. Filters can operate in Serial (output feeds the next input) or Parallel mode (filter reads original signal and adds its output to the bus).

Voice Filter and EQ
Zoom HD

Voice Filter and EQ

Figure 5.2: Filter model selection, routing mode, and 3-band parametric EQ.

Filter Models (FilterModel) — 12 Types:

ModelDescription
Clean SVF (Standard)Clean biquad State-Variable Filter — neutral, precise
Diode (ThreeOhThree)Diode ladder filter — famous Roland TB-303 character
Moog (LittleFatty)Legendary Moog transistor ladder filter — deep low end and fat resonance
Vintage (Grandad)Vintage-style lowpass filter — warm and musical
Korg 35 (Japan)Sallen-Key filter inspired by Korg MS-20 — raw with aggressive saturation
Formant (ChildGenius)Formant filter shaping vowel resonances — vocal synthesis
CombComb filter (Feedback Delay Network) — string resonances and phase cancellation effects
LadderAlternative ladder filter implementation
OB-XdVintage Oberheim synth inspired filter
Cutoff WarpSVF with non-linear cutoff frequency warping
Res Warp (ResonanceWarp)SVF with non-linear resonance warping
S&H (Sample & Hold)Sample & Hold stepped filter — lo-fi and stepping effects

Filter Modes (FilterMode) — 9 Modes:

LP (Low Pass), HP (High Pass), BP (Band Pass), Notch
EQ Peak (Peaking), Peak
Low Shelf, High Shelf
All Pass

Parameters per Filter Slot:

Cutoff / Freq: Cutoff frequency (modulation targets: Filter, Filter2..Filter8)
Resonance: Filter resonance (modulation targets: FilterRes, Filter2Res..Filter8Res)
Drive: Filter input saturation (modulation target: FilterDrive)
Character: Model specific character control, 0..1, 0 = classic/unchanged behavior (modulation target: FilterCharacter)
Filter Routing (Slots 2-8): Serial or Parallel

Drive Type (Filter Input Saturation):

Filter drive incorporates 3 saturation algorithms:

Tanh: Soft saturation
Fold: Wavefolder
Asym: Asymmetric clipping

5.3 Distortion & Wavefolding Section

Distortion — 8 Algorithms (DistortionAlgorithm):

AlgorithmDescription
ArcTanDefault soft clipping — gentle harmonic saturation
TapeTape saturation emulation — compression and smooth high frequency roll-off
TubeWarm tube amp saturation — asymmetric even harmonics
FuzzAggressive hard clipping with rich, dense harmonics
RectifyFull-wave rectification — harsh, synthetic distortion
HalfRectHalf-wave rectification — asymmetric with integrated DC blocker
DiodeDiode clipping emulation — warm and musical distortion
FoldBackFoldback distortion — signals exceeding threshold fold back recursively

Distortion features integrated 2× oversampling (HalfBand2x) to eliminate anti-aliasing artifacts. A per-channel Saturation Topology switch (PreFilter / PostFilter / DualStage / Parallel) decides where in the chain the Distort knob's saturation is applied relative to the filter chain — PreFilter shapes the raw osc/noise mix before filtering, PostFilter (the default) shapes the filtered signal here in the FX chain, DualStage splits the drive amount across both points, and Parallel blends a fully-driven wet copy under the Distort knob instead of overdriving the whole signal.

Wavefolder

Independent wavefolder module (wavefolder.rs), sine-based folding with its own internal 2× oversampling. Parameter: WavefoldAmt (modulation target: LfoTarget::WavefoldAmt).

Bitcrusher

Two-stage digital audio degradation — zero-order-hold sample-rate reduction (1×–50× decimation) followed by a mid-tread quantiser with optional TPDF dither — with three parameters:

BitCrush: Bit depth / sample-rate reduction amount (modulation target: LfoTarget::BitCrush)
BitCrush Mix: Wet/dry mix (modulation target: LfoTarget::BitCrushMix)
BitCrush Dither: TPDF dither noise level, converts correlated quantisation distortion into flat white noise (modulation target: LfoTarget::BitCrushDither)

5.4 Click / Impulse Generator

A dedicated ultra-short transient module (click_gen.rs) that layers a 0.5–10 ms burst on top of the main voice to add attack "snap" independently of the oscillator body — useful for reinforcing a kick or snare beater/stick attack. It is a per-voice trigger effect, not a continuous insert: it fires once per note-on and has no DSP presence on the Master Bus (see 5.1).

Click Type (ClickMode): Off (default) / Impulse (Dirac-like spike + tonal sine tail) / NoiseBurst (filtered white noise, stick-on-skin) / FmBurst (short FM chirp, metallic/digital attack) / Digital (square-wave burst, aggressive lo-fi)
Click Level: Burst amplitude, scaled by note velocity (modulation target: LfoTarget::ClickLevel)
Click Tune: Tonal/spectral center of the burst, 1000–10000 Hz (modulation target: LfoTarget::ClickTune)
Click Duration: Burst length, 0.5–10 ms (modulation target: LfoTarget::ClickDuration)

5.5 Transient Shaper

Dedicated dynamics shaper for quick transient adjustment without setting up a full compressor. It runs after the compressor in the signal chain, so the shaped attack/sustain isn't squashed back down by gain reduction:

Trans Attack: Boost or soften initial transient punch (-1.0 to +1.0).
Trans Sustain: Lengthen or shorten sustain tail (-1.0 to +1.0).

5.6 Per-Channel Compressor (with Sidechain)

Each channel features a full dynamics compressor:

Comp Threshold: Compression threshold (-60 dB to 0 dB)
Comp Ratio: Compression ratio (1:1 to 20:1)
Comp Attack: Attack time (0.1ms - 500ms)
Comp Release: Release time (1ms - 2000ms)
Comp Makeup: Makeup gain (0 - 24 dB)

A fixed, always-on safety stage (tanh soft-clip at ≈ -0.3 dBFS) follows the compressor whenever it is active, catching residual fast-attack overshoot the envelope follower can't fully suppress — there is no separate user control for it.

Sidechain Source

The compressor can use audio signal from another channel as a sidechain key (SidechainSource):

Disabled: Standard self-detection (default)
Ch1 - Ch8: Compressor reacts to the selected channel's audio (e.g., ducking hi-hat when kick triggers)

Note: even though TOMiC supports up to 16 drum channels (Chapter 1), the sidechain source list is capped at Ch1–Ch8 in the current parameter enum (SidechainSource in src/models/mod_basics.rs) — channels 9–16 cannot currently be selected as a sidechain key.

5.7 3-Band EQ (Shelf / Peak / Shelf)

Not a fully parametric 3-band EQ — it's a fixed-topology Low Shelf + Mid Peaking + High Shelf chain (each band a biquad with a fixed Q of 0.707), each band with independent frequency and gain:

EQ Low: Low Shelf, Freq 20 Hz–800 Hz, Gain ±24 dB (modulation targets: EqLowGain, EqLowFreq)
EQ Mid: Peaking (bell), Freq 30 Hz–5 kHz, Gain ±24 dB (modulation targets: EqMidGain, EqMidFreq)
EQ High: High Shelf, Freq 2 kHz–20 kHz, Gain ±24 dB (modulation targets: EqHighGain, EqHighFreq)

Each band bypasses itself automatically when its gain is within ±0.05 dB of 0, for zero added CPU cost when unused.

5.8 Modulation Effects

Ring Modulator

Amplitude-modulates the signal against an internal carrier oscillator with 5 selectable waveforms:

Ring Wave (RingModWave): Sine (default, classic telephony ring mod) / Triangle / Square (max harmonic content, metallic) / Saw (asymmetric, formant-like) / Pulse (narrow 25% duty cycle, sparse/stutter-like)
Ring Mod Freq: Carrier frequency, 20 Hz–8 kHz (modulation target: RingModFreq)
Ring Mod Mix: Wet/dry blend (modulation target: RingModMix)
Ring Mod Stereo: Stereo phase spread, 0 = mono-identical, 1 = 180° L/R split (modulation target: RingModStereo)

Frequency Shifter

Single-sideband frequency shifter operating in Hertz (Hz) — shifts frequencies linearly without preserving harmonic ratios:

Freq Shift: Shift offset, -1000 Hz to +1000 Hz (modulation target: FreqShift)
Freq Shift Mix: Wet/dry blend (modulation target: FreqShiftMix)

Phaser

Twelve-stage phaser (12 cascaded first-order allpass filters) with an exponential (log-domain) LFO sweep across a 100 Hz–8 kHz band, for rich, complex notch patterns:

Rate: 0.01–10 Hz, Depth, Feedback (0–0.9), Mix (modulation targets: PhaserRate, PhaserDepth, PhaserFeedback, PhaserMix)
Phaser Position: Centers the sweep within the allpass band (modulation target: PhaserPosition)

Chorus

2-4 voices (Chorus Voices) with selectable LFO shape (ChorusLfoShape: Sine / Triangle / Sample & Hold) and a Bass Mode toggle that restricts the chorus effect to the high-frequency band only, keeping low end mono/solid:

Rate (0.1–10 Hz) / Depth / Send / Feedback (0–0.95) / Mix / Width (modulation targets: ChorusRate, ChorusDepth, ChorusSend, ChorusFeedback, ChorusMix, ChorusWidth)
Chorus Voices: 2–4 ensemble voices, each with a slightly detuned rate for natural inter-voice beating
Chorus Bass Mode: On/off — splits the signal at a fixed crossover and applies chorus to the HF band only

5.9 Spectral Processor (16-Band Gate / Tilt / Morph)

A 16-band resonant bandpass gate/blur processor (spectral.rs) — not FFT-based. The signal is split into 16 log-spaced resonant bandpass filters from 80 Hz to 16 kHz, each individually gated by its own envelope follower, then recombined:

Spectral Send: Wet amount routed into the processor (modulation target: SpectralSend)
Spectral Gate: Gate open threshold — 0 = always open, 1 = always closed (modulation target: SpectralGate)
Spectral Tilt: Spectral tilt, -1..+1 — negative darkens (attenuates highs), positive brightens (boosts highs) (modulation target: SpectralTilt)
Spectral Morph: 0 = hard per-band gate, 1 = spectral blur (gate smeared across neighbouring bands, granular-like texture) (modulation target: SpectralMorph)
Spectral Smooth: Gate opening transition time, 0–200 ms (modulation target: SpectralSmooth)
Spectral Decay: Gate closing transition time — the spectral tail length, 0–4000 ms; high bands ring out faster than low bands for a natural, acoustically-damped tail (modulation target: SpectralDecay)
Spectral Resonance: 0..1, raises per-band filter Q (≈4–14) so the tail rings rather than just fading (modulation target: SpectralResonance)
Spectral Freeze: Holds the current band envelopes so the gate locks in place

The L/R channels use a tiny fixed centre-frequency offset so decorrelated stereo tails result, instead of both channels gating in lockstep.

Processed after the delay/reverb stage, alongside the Rings Resonator (see 5.1's signal-flow note).

5.10 Rings Resonator FX (Res FX)

A modal resonator FX (rings_resonator.rs) inspired by Mutable Instruments Rings, used here in its "external audio excites a resonant mode bank" role — the channel's own dry signal (or an internally generated exciter) drives a bank of tuned resonant modes. It is an independent implementation built from the codebase's own Simper SVF bandpass bank and Hermite-interpolated delay line, not a port of Mutable's firmware.

Res Mode (RingsMode): Modal (default, harmonic → inharmonic/stretched mode ratios) / Sympathetic (unison → chord-like spread, string-sympathetic-resonance character) / String (dispersion-based, plucked/bowed string character)
Res Exciter (RingsExciter): Audio In (default — untouched passthrough of the channel's own dry signal) / Blow (Elements-style breath noise exciter) / Bow (Elements-style bowed-friction exciter); Blow/Bow replace the dry passthrough with internally generated, enveloped noise
Res Send: Wet/dry mix, 0..1 (modulation target: ResSend)
Res Freq: Resonator fundamental frequency, 20 Hz–2 kHz (modulation target: ResFreq)
Res Structure: Mode-ratio shaping — harmonic/inharmonic stretch (Modal), unison/chord spread (Sympathetic), or dispersion amount (String) (modulation target: ResStructure)
Res Brightness: Tone — how quickly high modes/frequencies decay (modulation target: ResBrightness)
Res Damping: Overall ring length / feedback amount (modulation target: ResDamping)
Res Position: Excitation "pick point" comb filtering (Modal/Sympathetic) or secondary read-tap comb (String) (modulation target: ResPosition)

All three engines share the same 6 controls, so the knob layout never changes shape when the model is switched. Processed after the delay/reverb stage (see 5.1's signal-flow note), same as the Spectral Processor.

5.11 Spatial Effects

Delay — 4 Modes (DelayMode):

ModeDescription
DigitalClean delay with tempo sync and Ping-Pong routing
TapeVintage tape echo with magnetic saturation and Wow/Flutter drift (Delay Wobble)
MultiMulti-tap rhythmic echo, 2–4 taps (Delay Taps) with tap spread control (Delay Tap Spread)
DualAlternating series delay lines with global feedback routing odd echoes through resonant Filter A and even echoes through resonant Filter B (LP/BP/HP, Cutoff, Res) with stereo ping-pong width and amber visualizer

Shared controls: Time (1–5000 ms, or tempo-synced via Dly Sync + division), Feedback (0–0.95), Send, Tone, Drive, Width, Ping-Pong (Digital mode), Freeze (infinite repeats), and Duck — automatically ducks the delay's wet signal while the dry voice is playing (modulation target: DelayDuck).

#### Dual Delay Architecture & Dedicated Parameters:

In Dual mode, the delay engine routes repeats through two alternating resonant filter stages in series:

Alternating Filter Taps: Odd-numbered echoes pass through Filter A, while even-numbered echoes pass through Filter B.
Independent Filter Sculpting: Filter A and Filter B each offer selectable LP (Low-Pass), BP (Band-Pass), and HP (High-Pass) topologies with independent Cutoff and Resonance controls. Because each echo passes through a filter tap once per cycle, high resonance generates singing acoustic overtones without spiraling into runaway self-oscillation screeching.
Stereo Width & Ping-Pong: The Width control pans Filter A to the left and Filter B to the right. At 100% width, it delivers an expansive alternating stereo ping-pong motion.
Amber DUAL A/B Visualizer: Real-time visualizer displaying alternating even-echo energy bars.
Modulation Integration: Fully modulatable via 4 dedicated LfoTarget destinations: DelayDualACut, DelayDualARes, DelayDualBCut, DelayDualBRes.

Reverb — 2 Modes (ReverbMode):

ModeDescription
TinCanFDN algorithmic reverb (8 delay lines, Hadamard mixing matrix) inspired by BFD/Tremor TinCanVerb — metallic, tight acoustic spaces designed specifically for drums
HallLush, expansive hall reverb algorithm

Shared controls: Size, Decay (RT60 feedback), Damp (frequency-calibrated feedback-loop lowpass), Pinch (mode clustering: 0% = prime/dispersed metallic character, 100% = harmonic/tonal), Squeeze (diffusion density: low = spacious, high = dense gated cloud), Send, Pre-Delay (up to 150 ms), and Freeze (infinite sustain with input cutoff).

Stereo Widener

Haas-effect stereo widener (delays one channel by a small amount, up to ~50 ms buffer) applied after Chorus and before the Compressor in the signal chain:

Widener Amount: 0..1 mix of the delayed channel (modulation target: WidenerAmt)

5.12 Granular Grain Cloud Processor (CloudsProcessor clouds_fx)

A fifth instance of the CloudsProcessor operating as an insert effect in the channel FX chain (the other four are the OSC1/OSC2/NOISE1/NOISE2 granular oscillator sources). It granulates the full stereo audio stream — by default positioned just after the Transient Shaper and before Delay/Reverb, so the delay/reverb smear the grain cloud; enabling Cld Post instead runs it after Delay/Reverb, granulating the wet tail. Grains sustain beyond the note trigger for a granular-tail effect. Records mono (L+R sum) as the grain source while keeping the dry stereo pair intact for the Blend control.

Key parameters (all with LfoTarget::Clouds* modulation targets): Position, Grain Size (1–2000 ms), Pitch (0.25×–4×), Density, Texture, Blend (0 = fully dry — the gate that keeps a fresh channel silent until raised), Stereo Spread, Feedback, Reverb (internal grain reverb send), Freeze, and Density Sync (tempo-synced density via Cld Div).

Granular Grain Cloud Processor
Zoom HD

Granular Grain Cloud Processor

Figure 5.3: Granular Grain Cloud Processor interface in the TOMiC FX chain.

5.13 Oversampling (HalfBand2x)

Integrated polyphase 2× IIR oversampling module (HalfBand2x). Automatically engaged inside the Distortion and Wavefolder modules — both of which generate high-order harmonics that would otherwise alias aggressively at the base sample rate.

Master-Bus-Only: Glue Compressor & Limiter

Beyond the Master FX chain described above (which mirrors the per-channel chain), the Master Bus carries two additional stages with no per-channel equivalent, applied after master_fx:

Glue Compressor: Comp Enable, Threshold (-60–0 dB), Ratio (1:1–20:1), Attack (0.1–500 ms), Release (1–2000 ms), Makeup (0–24 dB) — same engine as the per-channel compressor, bussing the whole mix together.
Digital Limiter: Limit Enable (on by default), Ceiling (-20–0 dB, default -0.1 dB), Release (10–1000 ms) — the final brick-wall safety stage before output.

5.14 Stutter & Beat Repeat Glitch FX

Stutter & Beat Repeat Glitch FX
Zoom HD

Stutter & Beat Repeat Glitch FX

Figure 5.4: Stutter & Beat Repeat processor interface in the FX chain.

A dedicated real-time audio buffer slicer and beat repeater module (beat_repeat.rs), styled after Ableton's Beat Repeat with two extensions (per-slice reverse and a gate ratchet), available in per-channel FX chains and on the Master Bus. It always runs last in the signal chain, glitching the fully-processed insert signal.

Stut On: Master enable (the sole gate — all other knobs are free to default to musical values).
Interval / Offset / Chance: Tempo-synced re-arm point for a new repeat episode (Interval division), a 0–1 fractional shift of that point within its cycle (Offset), and the 0–100% probability that an armed point actually starts an episode (Chance).
Gate: Total episode length, expressed in sixteenth notes, 1–64 (i.e. up to 4 bars) — mirrors Ableton's Gate control.
Repeat (latch): Bypasses Interval/Offset/Chance entirely, capturing and looping for as long as it's held on. While the sequencer plays, the latch is quantized to the next Grid line so it lands on the beat.
Locked to the sequencer clock: Interval, Offset and Grid count from the sequence's step 0 — not from whenever the effect was switched on — so the repeat phase is identical after every Play, every on/off toggle and every host loop wrap. Only with the transport stopped (pad play) does the scheduler free-run.
Capture (Ahead / Behind): Ahead (default) records from the trigger onward and loops the slice that played on the beat, so the first line after enabling already fires and no pre-fill is needed. Behind is the classic retro-capture of what played just before the trigger.
Click-free off: Switching Stutter off no longer cuts — the wet signal slews out while the dry crossfades back in, and the FX chain stays alive until the tail settles. The captured material is forgotten on disable, so re-enabling never loops stale audio.
Grid: Tempo-synced slice length — the full LfoSyncDiv range from 1/32 note up to 8 bars, including straight, triplet, and dotted values. No Triplets snaps any triplet grid to its nearest straight neighbour (mirrors Ableton's "No Triplets" button).
Pitch & Pitch Decay: Pitch transposes repeats down only, 0 to -48 semitones; Pitch Decay (-1..+1) further tapers pitch on each successive repeat.
Filter Sweep: Optional bandpass-style filter (Freq 40 Hz–16 kHz, Width) applied across repetitions.
Mix Modes (BeatRepeatMixMode):
Mix: Repetitions are blended on top of the original signal.
Insert: Mutes original signal while a repeat episode plays, passes original otherwise.
Gate: Mutes original signal completely — only repetitions ever pass through, even between episodes.
Volume / Decay: Output trim for repeats (-24 to +12 dB) and an amplitude fade-out across successive repeats (0–100%).
Reverse Chance: 0–100% probability each repeated slice plays back reversed.
Ratchet Amount: 0–100% probability a slice ratchets (retriggers 2-4× faster) instead of looping at its normal Grid length.
Variation Modes (BeatRepeatVariationMode), paired with Variation Amount (how far the Grid length wanders when it rerolls):
Trigger: Rerolls grid division once every time a new repeat starts.
Div4 / Div8 / Div16: Rerolls grid division every quarter, eighth, or sixteenth note.
Auto: Rerolls grid division every single loop cycle for the busiest, most chaotic glitch variation.

5.15 In-Process CLAP FX Hosting (Standalone Only)

In Standalone mode, TOMiC includes a built-in in-process CLAP effect host, allowing you to load third-party CLAP effect plugins on any of the 16 drum voices as well as on the Master bus.

8 FX Slots Per Channel & Master: Accessible via the dedicated green "FX" tab in the channel inspector. Click "+" to browse installed CLAP plugins or pick directly from the background-scanned library.
8 Dedicated Modulation Lanes (ClapMod 1–8): Route any TOMiC internal LFO, ModEnv envelope, Marbles generator, or Macro control directly into host plugin parameters in real time.
Phase A/B/C Modulation Injection: Uses intelligent parameter injection with automatic base-value restoration to prevent parameter drift when modulations cease.
Real-Time Safety & Planar 64-Sample DSP: Audio processing is strictly lock-free and allocation-free on the high-priority real-time audio thread.
Soft Circuit Breaker: Any third-party plugin hanging or stalling for longer than 100ms is automatically silenced and bypassed without freezing the audio thread.
Process-Isolated Scanner: Plugins are scanned and cached in disposable child processes (--clap-scan), protecting the main application from unstable third-party code.
Full Preset & Session Persistence: All loaded CLAP effect states, parameter snapshots, and modulation maps save directly inside .tomic session files and cleanly reset when loading new songs.
Offline Render & Bounce Integration: Master WAV exports, channel bounces, and MIDI renders fully instantiate and process loaded CLAP racks offline (load_clap_racks_offline).
Previous chapter04. Modulation Matrix
Next chapter06. Step Sequencer & Song Mode