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
Noise & Samples

Chapter 03: Noise Generators & Sampler

12 noise types, Karplus-Strong physical modeling, sample player, Slicing editor, and Slice Beat drum-loop slicing onto the steps.

3.1 The Role of Noise, Textures & Sampling in the Groovebox

Noise, physical resonators, and audio samples are fundamental sound design elements in TOMiC — not just for snares, claps, and cymbals, but for physical string models (Karplus-Strong), retro 8-bit chiptune soundscapes, clocked sample-and-hold textures, sweeping resonant filter banks, and multi-variant sample playback (vocal chops, acoustic breaks, melodic one-shots). In TOMiC, the noise & sampler section is a full-featured dual sound engine equipped with dedicated envelopes, an 8-slot filter chain, and granular processors. Each layer (A/B) includes two independent generators: NOISE 1 and NOISE 2.

Noise & Sample Processor Interface
Zoom HD

Noise & Sample Processor Interface

Figure 3.1: Noise generators interface (NOISE 1 & NOISE 2).

3.2 Generated Noise Types (NoiseType)

For NOISE 1 and NOISE 2, you can select one of 15 noise algorithms:

Noise TypeDescription
WhiteFlat spectral density across all audible frequencies. Classic crisp noise for hi-hats and 808-style snares.
Pink3 dB per octave energy drop. Warmer and more natural timbre matching human auditory perception.
Brown6 dB per octave drop (Brownian motion). Warm, dense, and deep — ideal for sub-rumble and dark ambient textures.
MetallicDense metallic resonance generator (tune/feedback/damp controls) engineered specifically for hi-hats, cymbals, and metallic percussion.
VelvetImpulsive noise with smooth perceptual characteristics — randomly spaced pulses producing smooth velvet texture.
SampleAudio file playback (WAV/FLAC). Allows loading any user sample as a noise layer.
KarplusStrongPhysical modeling string module (karplus.rs). A noise burst feeds a feedback delay line with a one-pole low-pass in the loop, giving a pitched, naturally-decaying tone. Controls: Karplus Freq, Karplus Decay, Karplus Damp.
ClockedDigital sample & hold noise: a held random value is re-sampled at a controllable Clock Rate (1Hz–20kHz), with selectable interpolation (Clocked Mode: Step/Linear/Smooth), Clock Jitter, and optional Clock Key Track.
ClusterBank of up to 8 inharmonic partials (Cluster Density, 1–8) with 5 excitation algorithms (ClusterNoiseMode): SawCluster, PulseCluster, FmCluster, Fibonacci, and Phasing (a square stack with a shared slow wobble LFO). Ratio tables are irrational (square roots of primes) or Fibonacci-derived so partials never lock to simple harmonics.
ChiptuneLfsrRetro 8-bit noise powered by a clocked linear feedback shift register (LfsrPoly), with selectable register widths: Nes15Bit (default), Atari7Bit, GameBoy9Bit, Custom16Bit.
GrainGlitchA band-limited square/saw oscillator written into a small ring buffer and read back through one windowed grain, fed back into the oscillator as FM. Controls: Grain Freq, Grain FM (feedback index), Grain Size, and Grain Mode (SquareXor / SquareGrain / SawGrain).
FilterBankA Sample & Hold or Pulse source (Fbank Source) split across 4 parallel bandpass filters at fixed centre frequencies (300/900/2200/5000Hz, Q=3), each swept by its own independent triangle LFO at a slightly different rate, then summed. Controls: Fbank Rate, Fbank Sweep.
StochasticDynamic stochastic synthesis in the spirit of Iannis Xenakis's GENDYN: one waveform cycle is a ring of 3–16 breakpoints (Stoch Points), and every time a segment starts, its length and its end point's level take a random-walk step that bounces off its limits. Stoch Amp sets how far the levels wander (low: a living, wavering tone; high: torn-apart organic noise), Stoch Dur how far the segment lengths wander (0 locks the pitch; higher values drift and then smear it), Stoch Freq the cycle rate. Stoch Dist picks the shape of each step: Uniform (steady wander), Cauchy (calm with sudden tears), Logistic (in between), Arcsine (restless, jittery). The walk carries on from hit to hit, so no two hits are identical.
BytebeatAn integer time counter clocked at Bb Rate (8 kHz is the classic rate; it is also the pitch) runs through a short bitwise formula, and the low 8 bits of the result are the output. The formulas carry their own rhythm and melody, so the sound is patterned digital noise — chirping arpeggios, modem chatter, broken-cartridge loops. Bb Formula: Sierpinski, Crowd, Melody, Bitshift, Xor, Modem, Arp, Fractal. Bb A / Bb B (1–16) are the shift amounts inside the formula; every whole step is a different pattern, so a slow LFO on them walks through patterns. Every hit restarts the formula at the same point, so hits repeat exactly.
ChaosDeterministic chaotic systems run at audio rate — no random generator involved. Chaos Map: Logistic (the period-doubling cascade: tone, sub-octaves, hiss, with a calm period-3 window near the top), Crackle (sparking, frying-electric), Henon (buzzier, more vocal), CrossFm (two sines phase-modulating each other: bell-like at low settings, screaming feedback noise at high ones). Chaos Rate is the iteration rate (CrossFm: the first oscillator's frequency) and therefore the pitch; Chaos Amt walks the system from a clean tone into chaos; Chaos Color is Edge for the maps (0 = smooth glide between iterations, dark; 1 = hard steps, bright and gritty) and Ratio for CrossFm (frequency ratio of the second oscillator).

Both Cluster and GrainGlitch/FilterBank are original, cleanroom DSP designs conceptually inspired by Eurorack noise-module algorithm families (e.g. Noise Plethora's oscillator-bank and granular-feedback noise types), not ports of any specific module's firmware.

Stochastic, Bytebeat, and Chaos all track the step pitch lock, run a decorrelated second instance on the right channel when the layer's Stereo switch is on (Chaos uses a tiny initial-condition offset, so the sides stay locked while the system is periodic and drift apart once it turns chaotic), and expose all three knobs as modulation targets (LFOs, envelopes, step lanes). They are clean-room implementations of published techniques (GENDYN-style synthesis, bytebeat, and textbook chaotic maps), not ports of any existing code.

Chaos "Character" Layer

White, Pink, Brown, and Velvet noise each expose an additional Character knob (0–100%) that blends in a distinct chaos-driven texture on top of the base algorithm:

White — "Chaos Fold + Shimmer": chaos-timed sample-and-hold stutter blended with an inharmonic bell/glass-like modal resonator bank.
Pink — "Fractal Density + Breath": power-law burst/hold gating blended with a slowly morphing whisper-formant bank.
Brown — "Turbulence + Rumble": a chaotic map destabilizes the integrator, blended with a deep 20–90Hz sub resonance.
Velvet — "Impulse Chaos + Strike": grid hits can spawn extra impulse rolls, each exciting a small resonator bank so it rings like a struck bell/glass shard.

Every noise type also carries a shared, always-on Wander layer — a slow Hénon-attractor meta-chaos that continuously nudges the Character knob's effective depth/rate over time, so a fixed dial position never repeats exactly the same way twice.

Noise Envelope

Independent of noise type, each noise generator has its own Noise Attack (0.01–500ms) / Noise Decay (5–10000ms) envelope, with a selectable curve shape (Env Mode: Exp default, Linear, or Mod). Both stages are modulation targets (NoiseAttack / NoiseDecay, Noise2Attack / Noise2Decay for NOISE 2).

3.3 Sample Slicing Editor & Sample Engine

When selecting the Sample noise type, the Sample Slice Editor module becomes available:

Sample Slice Editor
Zoom HD

Sample Slice Editor

Figure 3.2: Waveform display and sample slice editor.

Sample Editor Controls:

Sample Load & Active Variant Drag & Drop: Drag & Drop audio samples directly from your OS file manager or built-in browser. Dropping a sample on the pad automatically detects the active variant tab (A, B, C, or D) selected in the Sample Manager, updating that exact variant without overwriting Slot A.
Start / Length: playback trim points, shown in the waveform view as start/end markers — internally a percentage-based Start and Length pair (0–100%, modulatable via SampleStart / SampleLength), not fixed sample-frame offsets.
Sample Pitch: Sample pitch transpose (modulatable via SamplePitch).
Reverse: Reverse sample playback (controllable per-step in the sequencer).
Slice Index: Slice selector — sequence different slices per step (slice_index / sample_start_override / sample_end_override).
Send Slice To (right-click a region): Right-click any sliced region for a context menu to send just that cut elsewhere — Send to (any other channel), Send to this channel (another Round Robin variant of the same channel, turning one break into a bank of hits), or Lands in (choose the destination's NOISE 1/2 slot and A-D variant). The slice is trimmed to its own Start/Length playback window and saved as a real audio file, so it survives every sample-storage mode (Embedded, Reference-Only, Project Folder), not just Embedded.
Trash (🗑): A small bin button next to Create — enabled only while the active variant holds audio — empties that slot completely: thumbnail, path, embedded copy, the engine's buffer and the variant's slice markers, as one undo entry.
Entering Sample mode asks about the FX: switching a layer's noise type to Sample, dropping a file onto the Noise panel, or sending a slice to a channel raises a centred question — Clear FX / Keep FX (Enter / Esc) — whenever the layer's FX section is not already at its defaults. A sample blended through the patch's delay or distortion is a legitimate design, so nothing is cleared without asking; loading another variant into a channel already in Sample mode never asks. Slice Beat clears unconditionally (a loop must play dry).
Groove: Analyses the variant's loop for a user groove template without touching the channel — see 6.8.1.

Slice Beat — A Drum Loop onto the Channel's Steps

The Sample Manager's 🥁 Slice Beat button turns a drum loop into a sequence the way hardware slicers do: the variant's audio is analysed as a beat, the loop is cut at its hits, and the channel is rewritten so the step sequencer plays the loop back — one slice per hit, on the hit's step, with the original micro-timing carried in the NUDGE lane — ready to be varied, re-ordered, ratcheted or randomized like any other pattern.

Analysis: SuperFlux-style log-filtered per-band spectral flux onset detection; every hit is classified as Kick / Snare / Hat / Perc from its band energies, centroid, flatness and decay; tempo comes from the onset autocorrelation snapped to whole bars, a BPM tag in the file name if there is one, and a backbeat cue; swing is measured from the off-beat hits.
What gets written: slice markers only for hits that got a step, a clean lane set at the loop's length, TRIG + SLICE + per-step start/end overrides + NUDGE, the step pinned to the variant, Osc/Noise mix to the sample, a 10 s linear decay (an exponential one would fade every slice), attack ≤ 2 ms, sample pitch 0, and — in Standalone or without Host Sync — the project tempo and swing. The voice's FX section is reset to defaults so the loop plays dry, Auto-Randomize is switched off and Hat Mode / choke settings that would punch holes in a loop are cleared. One undo entry covers the whole gesture.
Grid & window: the grid is always 16ths and a channel never exceeds 64 steps (four bars); a longer loop is sliced one Start/Stop window at a time — a fresh loop auto-fits its first four bars, and the report row's Window: bars a–b of N ◀ ▶ pages through the rest. Windows snap to the loop's own 16th grid. A short loop is never truncated; an octave-high tempo estimate is corrected against the loop length.
Report row under the toolbar: detected BPM, bars, class counts, a Bars override (fixes an octave error and recomputes the exact BPM from the loop length), a BPM field, Quantize %, Set tempo / Swing toggles and Re-slice. Slice regions in the waveform are tinted by class.
Manual re-classification: right-click a classified region → Drum: Kick / Snare / Hat / Perc; overrides survive a re-slice.
Split to kit: kicks, snares, hats and percussion each get their own channel (named after the drum), each playing only its slices from the same loop, so a break becomes a four-piece kit you can mix, effect and re-sequence per instrument. Two classes never share a step on one channel, and the loop's timing is kept.
Shift + drop a loop from the sample browser onto a NOISE panel = Load & Slice Beat in one gesture.
Every hit fires within 3 ms of its position in the original loop; the SLICE lane's dial cell (6.3) makes the 30–64 resulting slices readable and draggable.

Round Robin (Variants A/B/C/D)

The Round Robin engine (round_robin.rs) holds a bank of up to 4 interchangeable sample variants (A, B, C, D) per noise layer, each with its own independent Start/Length window. A per-layer RR Mode (RoundRobinMode) selects how the next hit picks a variant:

Off (default) — always plays variant A, identical to pre-round-robin single-sample behavior.
Sequential — cycles through the loaded variants in order.
Random — picks at random, never repeating the same variant twice in a row.
VelocityLayer — splits velocity range evenly across the loaded variants, with A as the softest layer.

Selection happens once per trigger and is latched for the whole hit, so plain playback, the granular scan window, and the UI playhead all read the same buffer. This eliminates machine-gun repetition artifacts for organic acoustic drum realism.

Embedded Sample Store

Loaded samples can be embedded directly inside the DAW session file (SampleStoreHandle), making session projects self-contained without requiring external file paths.

Hosted Instrument Plugins on the NOISE Section

The NOISE 1/2 stack can also be replaced by an external CLAP or Omniplugin instrument, via the same +CLAP / +Omni buttons found in the NOISE tile's header — see 2.10 Hosted Instrument Plugins for the full feature (host knobs, modulation, Always On, and how it combines with a plugin hosted on the OSC side of the same layer). Loading a plugin here hides Snare Wire and the Noise Filter Chain, since neither sits in the signal path once a plugin stands in for NOISE 1/2.

3.4 Noise Filter Chain (Up to 8 Slots)

Each noise layer features a dedicated chain of up to 8 filters (slot 1 is the historically-shipped flat filter_freq/filter_q pair; slots 2–8 are added FilterParams instances). The first filter is active by default; add more with the "+ Add" button.

Per-Slot Noise Filter Controls:

Noise Filter (Freq/Cutoff): filter cutoff frequency, 20Hz–20kHz (modulation target: NoiseFilter / NoiseFilter2…NoiseFilter8, Noise2Filter for NOISE 2's own chain)
Noise Filter Q/Res: filter resonance, 0–1 (modulation target: NoiseFilterQ / NoiseFilter2Res…NoiseFilter8Res)
Noise Drive: input drive saturation, 0–24dB, adds aggression and harmonic warmth (modulation target: NoiseFilterDrive / NoiseFilter2Drive…)
Noise Character: rounds off resonant feedback saturation toward a softer, MS-20-like character — currently only audible on the Korg35 filter model (modulation target: NoiseFilterCharacter / NoiseFilter2Character…)
Filter Mode (FilterMode, 9 options): LowPass, HighPass, BandPass, Peaking, LowShelf, HighShelf, Notch, AllPass, Peak
Filter Model (FilterModel, 12 circuit emulations): Clean SVF, Diode (ThreeOhThree), Moog (LittleFatty), Vintage (Grandad), Korg 35 (Japan), Formant (ChildGenius), Comb, Ladder, OB-Xd, Cutoff Warp, Res Warp, S&H — each slot 2-8's Model is itself a modulation target (NoiseFilter2Model…NoiseFilter8Model)
Noise Routing (slots 2-8): Serial (cascades into the running chain) or Parallel (re-reads the chain's pre-slot-1 input and sums its own output — lets e.g. a low-boosting and a high-boosting Peak filter act simultaneously). Slot 1 always processes the original signal and seeds the chain.

NOISE 2 provides an identical, completely independent chain of up to 8 noise filters. (The Attack/Decay envelope described in 3.2 is a single per-noise-generator envelope, not a per-filter-slot control.)

3.5 Noise Granular Processor

The noise layers feature their own CloudsProcessor instances (noise_granular / noise_granular2, see also 2.6). Unlike the oscillator granular instances:

Reads the loaded sample's start/end window directly (process_static mode, no live-recording ring buffer overhead)
Has no 1.5-second record-buffer limit — grains are taken from wherever the Start/Length window points
Activated via NoiseParams::granulate, using the same Grain Size/Pitch/Position/Freeze/Width/Density/Texture/Blend/Feedback controls as the oscillator granular layer

This allows transforming static drum samples into evolving, lush stereo particle clouds.

3.6 Snare Wire Physical Model

Each noise layer also carries an independent Snare Wire physical model — a resonant-spring simulation layered specifically for snare-style noise content, with its own complete parameter set (NOISE 2 has a fully independent copy):

Wire Mix / Tune / Tension / Damping: core resonating-spring parameters
Wire Width: stereo width of the simulated spring array
Wire Body / Body Freq: adds a resonant body/shell component to the wire's tone

3.7 Integrated Sample Browser & File Navigator

Integrated Sample Browser
Zoom HD

Integrated Sample Browser

Figure 3.3: Sample Browser interface view.

TOMiC features a built-in Sample Browser panel (SampleBrowser) accessible directly from the top tools bar:

Folder Tree Navigation: Browse local disks and external drives directly within the plugin GUI.
Live Waveform Audio Preview: Audition WAV/FLAC audio samples with real-time waveform display before loading.
Favorite Folders: Bookmark frequently used sample directories for 1-click access.
Drag & Drop Loading: Drag any sample from the browser directly into NOISE 1, NOISE 2, or Round-Robin variant slots (A/B/C/D). Hold Shift while dropping a drum loop onto a NOISE panel to load it and run Slice Beat (3.3) in one gesture.
Grooves from files: Drop a loop — or a .mid file — onto the GROOVE tile in the transport bar to extract a user groove (6.8.1). MIDI files are listed as drag sources only; they cannot be auditioned or loaded as samples.
In-Folder Cycling: Step through other samples in the same folder directly from the Noise sample view, without reopening the browser.
Previous chapter02. Synthesis Engine & Layer Morphing
Next chapter04. Modulation Matrix