TT-303PATGEN — User Manual

JSFX MIDI plug-in for REAPER // Version 1.2.0 // TimTechlor

A pattern generator that thinks in acid: accents, slides, ties, octave pops and a tense b2 - created by seeded algorithms, sculpted by density, scale and range, mutated instead of re-rolled, stored in eight slots and played as sample-accurate MIDI. Built for the TT-303 in HOST mode, happy with any mono synth.

01The concept

TT-303PATGEN is a MIDI effect. It contains no sound generator: it writes patterns and plays them as MIDI notes, locked to the host transport. A pattern has 1 to 32 steps; every step carries a note, an octave shift, a gate state (off, on or tie), an accent flag, a slide flag and a probability. That is exactly the vocabulary of a TB-303 sequencer, which makes the output a perfect match for the TT-303 in HOST mode (velocity at or above the accent threshold = accent, overlapping notes = slide) — and it plays just as well on any other mono bass synth.

The generator is deterministic. Every pattern comes from a 24-bit SEED; the same seed with the same settings always produces the same pattern, and the seed is always visible, so a good result can be found again. Instead of re-rolling a pattern you like, you mutate it: change a few steps, only in the range you choose.

What it is not: no synth (it makes no sound), no phrase library player, no arranger — and it needs REAPER’s transport. It is the free-standing pattern brain in front of your favourite 303-style synth; paired with the TT-303 it forms a complete, free acid rig.

02Quick start

  1. Insert TT-303PATGEN before the synth in the track’s FX chain (MIDI effects work top to bottom). For the TT-303 leave its Mode on HOST.
  2. Press play. The demo pattern in slot A starts immediately — the RUN toggle (top right) enables output.
  3. Press GENERATE. A new pattern appears in the active slot, the seed box shows its seed.
  4. Shape the result with the GENERATOR knobs and the scale / root / algorithm boxes, generate again, or press MUTATE to vary the current pattern.
  5. Click in the piano roll to set notes, in the ACCENT / SLIDE / GATE rows to edit the steps. Select steps by clicking or dragging the step numbers, then use the SELECTION buttons. Play a MIDI key (C2 = original pitch) to transpose live.
  6. Open the GALLERY tab and press ROLL 8 to see eight candidates at once; TRY puts one into the slot. Or start from a curated scene: the FACTORY list of the preset bar holds S01–S40, each a whole musical starting point (generator, scale, tempo suggestion, matching TT-303 sound).
  7. Happy? Turn on SEQ LINK and run the ReaScript TT-303PATGEN Print to MIDI Item to turn the pattern into a real MIDI item.

03The front panel

Current suite front at 125% UI size, version 1.2.0
Current front in v1.2.0, at the default UI size of 125%.
HEADER
Wordmark, the preset bar (see Preset bar & user bank), the OPTIONS button, the RUN toggle and PANIC.
OPTIONS
The OPTIONS button in the header, right of the preset bar, opens a small box with the COLOR choice: ten colour schemes (see below), the font and colour settings and the TOOLTIPS ON / OFF switch. Every control, including the preset bar and the OPTIONS button, has a tooltip that appears after a short hover (about 0.35 s) and stays away while you drag; the switch turns all tooltips off for this plug-in instance and is saved with the project.
TOOL ROW
Slots A–H, UNDO / REDO with the undo depth (e.g. 3/16), the pattern length (− value +, 1–32), VIEW (FIT / 1-16 / 17-32) and SNAP. At the right end sits the MIDI monitor: last note sent, current step, ACC and SLIDE LEDs. It turns into WAITING FOR AUDIO when commands are not being executed (see Troubleshooting) and into BUSY for a moment when the command queue is full.
PIANO ROLL
The whole pattern across the full width: with VIEW FIT every step of the pattern is visible at once (up to 32 columns), 1-16 / 17-32 show one page with wider columns. The roll shows 25 semitone rows above ROOT; the mouse wheel over the keyboard moves this window (Shift = one octave), the arrow buttons below it move it by an octave, and a note outside the window is marked with a small arrow at the edge. Click = set note, drag = move it, click a note or right-click = remove it. Accented notes are white, ties extend to the next step, slides are drawn as a connecting line, an orange dot marks a probability below 100 %. The green column is the step that is playing. The number row above the roll selects steps (see MUTATE & edit operations).
STEP ROWS
ACCENT, SLIDE, GATE (off / on / tie), OCT (-1, 0, +1, +2) and PROB (0–100 %). Click a cell or drag across cells to paint; right-click resets the cell.
SELECTION
Bottom left: copy / cut / paste / clear, rotate, reverse, invert, scale-degree and octave transpose, duplicate, double, copy to another slot, and the step locks. Every button acts on the selected steps; without a selection it acts on the whole pattern.
DECK
Bottom right, with five tabs: GENERATE (the nine generator knobs, algorithm, root, scale, seed, MUT %, MUTATE properties and range), OUTPUT (rate, channel, swing, gate length, velocities, humanize, threshold, octave, FOLLOW IN, SEQ LINK, LINK ID), SONG (chain, chain editing, timeline, slot overview), GALLERY and LIBRARY. The big GENERATE and MUTATE buttons are always visible next to the tabs. The arrow at the right edge collapses the deck: the roll then uses the whole height and shows the full range (-12 to +35 semitones without scrolling) - the FOCUS view. Click a tab to open the deck again.
WidgetGestureBehaviour
Knobdrag verticallyset value; Shift = fine
mouse wheelone step per detent (1 unit; HUM TIME 0.1 ms)
right-click, double-click, Ctrl+clickreset to default
Slider (AMOUNT / FROM / TO)drag horizontally / wheelset value; one step per detent
Combo boxarrows / click / wheelprevious / next / step through the list
Step rowsclick, dragpaint the value the first click chose
Step numbersclick, drag, Shift+click, double-click, right-clickselect one step, a range, extend, all, clear the selection
Piano rollCtrl+dragselect the steps under the frame (no note is set)
Piano rollAlt while setting or dragging a noteinverts SNAP for this edit
Keyboard (left of the roll)mouse wheel, right-clickscroll the visible pitch window, back to ROOT..ROOT+24
Any controlhovera tooltip explains it (OPTIONS > TOOLTIPS ON / OFF)
TT-303PATGEN with the OPTIONS box open: ten colour swatches, the factory scheme ACID is marked
OPTIONSOptions / Color. Click OPTIONS in the header, then a swatch. A click outside the box closes it.

Options / Color. The OPTIONS button opens the box; COLOR offers ten schemes: ACID, CYAN, ORANGE, MAGENTA, YELLOW, RED, BLUE, VIOLET, MINT and ICE. A scheme changes the accent colour (knob rings, active steps, LEDs), the second colour and, for RED to ICE, the slightly tinted panel background of the whole front at once. The choice applies per plug-in instance, is saved with the project and with FX-chain copies, and is not touched by the generator. The factory colour is ACID (the classic acid green). The colour is stored in the hidden parameter 64 (UI Color, 0–9).

Style: font size and custom colours. Below the swatches the box carries the style controls: FONT SIZE scales the two font slots in steps of about 8 % (range -4–+8) — FONT 1 is the large title font, FONT 2 is all other text; the current step is shown between the - and + buttons. The colour picker assigns a custom colour to FONT 1, FONT 2 or the background BG: pick the target, then drag in the hue strip and the saturation/value field — every change applies live while you drag, and BG derives the panel, border and knob colours from the spacing of the active scheme. RESET restores the scheme value of the selected target, RESET ALL restores everything. If a custom text colour drops below a contrast of 3:1 against the background, the box shows a small warning. All style settings apply per instance, are stored with the project, the FX chain and REAPER presets — and are not part of the factory or user presets of the preset bar.

04The pattern model

FieldValuesMeaning
Notesemitones above ROOTthe piano-roll row; final MIDI note = 36 (C2) + ROOT + 12 x OCTAVE + note + input transpose
Octave-1 / 0 / +1 / +2shifts the step by whole octaves
Gateoff / on / tietie: the previous note keeps sounding into this step, no new note-on
Accent0 / 1note is sent with ACC VEL instead of NORM VEL
Slide0 / 1links this step to the next one: the next note-on is sent before this note-off
Probability0–100 %chance that the step plays; decided by a hash of seed, step and position, so playback is reproducible

05The generator

GENERATE fills the active slot. Order of work: gate mask, ties, notes, accents, slides, octave jumps. (Since v0.8.0 the rhythm is drawn so that neighbouring notes exist for slides, DENS VAR can vary the note count and SLIDE counts notes, see below.)

ControlRangeFunction
DENSITY0–100 %share of steps that play (gate on or tie), e.g. 50 % of 16 = 8 steps. With DENS VAR at 0 the count is exact; DENS VAR spreads it around that number
DENS VAR0–100 %(v0.8.0) spreads the number of playing steps symmetrically around DENSITY, at most half the pattern length at 100 (the average stays); default 25, 0 = exact count. CLASSIC MUT ignores it
ACCENT0–100 %chance that a normal gate step is accented
SLIDE0–100 %(v0.8.0) share of the playing steps that slide into the next normal gate step: 20 % of 8 notes = 2 slides (never more than there are neighbouring pairs). The rhythm is drawn so that such pairs exist (EUCLID joins onsets into pairs). Before v0.8.0 it was a 20 % chance per pair, 0.65 slides per pattern on average
OCT JUMP0–100 %chance of +1 octave (rarely +2); only if the note stays inside RANGE
REPEAT0–100 %tendency to repeat the previous note
RANGE5–24 stambitus above ROOT; the base line lives in the first octave (up to 11 semitones), octave jumps add to it. No note leaves 0..RANGE
TENSION0–100 %share of dissonant tones: the minor second (b2) and the tritone. Only scales that contain them are affected (Phrygian, Blues, Phrygian Dominant, Chromatic, Whole Tone); the minor pentatonic has neither
SYNCOPATION0–100 %moves the weight of the rhythm from the downbeats to the offbeats
TIES0–100 %chance that a step right after a playing step becomes a tie

Algorithms (ALGO):

AlgorithmRhythmMelody
RANDOM WALKweighted choice of DENSITY x length steps (downbeat-heavy, shifted by SYNCOPATION; DENS VAR varies the count, neighbours of a chosen step get more weight the higher SLIDE is)small scale-degree steps preferred (weights 36 / 26 / 14 / 8 / 4 for 1–5 degrees), pulled to the root on strong steps
MARKOVas abovetransition table over the 12 pitch classes, counted from the plug-in’s own 32 library patterns (+ smoothing), weighted by closeness
EUCLID+WALKEuclidean rhythm E(k, n), first onset on step 1 (v0.8.0; before it ended each group), rotated by SYNCOPATION; with SLIDE > 0 onsets are joined into pairs so slides can happenrandom walk
MOTIF+VARas random walkthe first four steps form a motif, repeated in every bar with 25 % variation per note (70 % on the last step)
CLASSIC MUTfrom a library patterna random library pattern, snapped to the chosen scale and RANGE, then every step is mutated with MUTATE % probability. Gate, accent and slide come from the library (DENSITY etc. are not used)

Scales: Minor Pentatonic, Natural Minor, Phrygian, Harmonic Minor, Dorian, Chromatic, Blues, Phrygian Dominant, Whole Tone and Custom (the 12 keys under the scale box). Every generated note lies inside the chosen scale — verified over 10 000 patterns per scale.

06SEED & LOCK

LOCKGENERATE does
ONuses the shown seed: the same pattern every time (recall)
OFFdraws a new random seed, shows it, and generates from it: lock it to keep or re-create the result

The seed is 24 bit (shown as 0xF4B2A7). Mouse wheel over the box steps ±1 (Shift = 16), right-click sets 0, NEW draws a fresh seed without generating. The generator uses an XorShift PRNG; per-step probability and humanize use a stateless hash of (seed, step, position), so they repeat exactly on every play.

07MUTATE & edit operations

MUTATE changes AMOUNT distinct steps inside the reroll range FROM..TO (e.g. FROM 9 to only vary the second half). Each chosen step gets one of the enabled properties (NOTE moves the note along the scale, ACC flips the accent, SLIDE flips the slide, GATE switches the step on or off). The mutation sequence is reproducible from seed and press count; every GENERATE starts it again.

ButtonOperation
<ROT / ROT>rotate the pattern one step (wraps around the length; slide flags travel with their step)
REVreverse; slides are links between two steps, so they are moved to the mirrored link; ties stay attached to their note (twice = original)
INVmirror the pitches around ROOT, snap to the scale, lift the whole pattern by octaves until nothing is below ROOT
DBLdouble the length (16 becomes 32, second half = copy). Only for lengths up to 16
CLRclear the slot

These buttons (and their SELECTION versions below) are undoable with UNDO; REDO repeats an undone step.

Selection and range operations (v0.7.0)

Click a step number to select that step, drag across the numbers for a range, Shift+click extends the selection, double-click selects all steps, right-click on the numbers clears it; Ctrl+drag in the roll selects the steps under the frame. A green band marks the selection over the roll and the step rows. The buttons of the SELECTION panel act on it; without a selection they act on the whole pattern (and use exactly the whole-pattern commands described above).

ButtonOn the selection
COPY / CUT / PASTEcopy the selected steps, cut them, paste at the start of the selection (step 1 without a selection), clipped at the pattern end. Without a selection COPY / PASTE move the whole slot (length included) as before. The clipboard is shared by all slots, so this also copies steps between slots.
CLRgate off; the pitches stay as ghost notes (ties that would hang on a cleared note are cleared with it)
<ROT / ROT>rotate inside the selection (wraps within it)
REV / INVreverse (slides move to the mirrored link, the link after the last selected step stays, ties stay attached) / mirror around ROOT and snap to the scale
ST- / ST+one scale degree down / up (a tone that would leave -12..+35 stays)
OCT- / OCT+octave field -1 / +1 (limits -1 and +2)
DUPcopy the selection directly behind itself (clipped at the pattern end)
TO SLOT + COPY>copy the selected steps into another slot at the same positions (a shorter target is extended; undoable)

MUTATE inside the selection. With a selection, MUTATE only touches the selected steps; the FROM / TO sliders are left alone and apply when nothing is selected. The line MUTATE RANGE in the GENERATE tab shows which range is active.

SNAP puts notes you set or drag onto the scale (ROOT + SCALE); hold Alt to invert it for one edit. It is off by default.

Step locks (v0.7.0)

LOCK in the SELECTION panel locks the selected steps (the whole pattern without a selection); a locked step is marked in orange above the number row. GENERATE, MUTATE and the REROLL buttons of the GALLERY leave locked steps unchanged, so you can keep the four notes you like and let the generator find the rest. UNLK unlocks, CLEAR LOCKS clears them for the active slot. Direct edits and the selection operations still change locked steps (they are your own hand), and rotating or reversing does not move the locks. Locks are saved with the project (they sit behind the preset bank; older versions of the plug-in simply ignore them). Loading a preset, scene or INIT clears them.

The GALLERY tab draws eight candidates from the current generator settings for the length of the active slot (ROLL 8; with AUTO on, a new set appears by itself when a generator setting, the slot or the length changes). Every candidate is exactly what GENERATE would give with the seed shown on its card: TRY puts it into the active slot (SEED is set to its seed; with LOCK on, GENERATE then repeats it), KEEP copies it into the slot chosen in the KEEP TO box without touching the active slot. Both are undoable. The REROLL buttons change only a part of the pattern, each press a new random draw (since v0.8.0 they are real partial modes built from the generator): NOTES a new tone sequence over the existing rhythm (algorithm, TENSION, REPEAT, OCT JUMP, RANGE and scale as in GENERATE), RHYTHM a new rhythm (algorithm, DENSITY, DENS VAR, SYNCOPATION, TIES) with the pitch of every step kept - accents stay where the step still plays, slides are redrawn - ACC+SLD new accents (ACCENT %) and slides (SLIDE %) over the notes that play, ALL every unlocked step. The seed history (< > and the seed button) lists the last 16 seeds used; pressing the seed button generates the active slot with that seed.

Keyboard (v0.7.0)

While the pointer is over the roll or the step rows (and no overlay such as the preset list or OPTIONS is open): A accent, S slide, G gate on / off, T tie, O octave field, P probability (100 / 75 / 50 / 25) for the step under the pointer; L toggles its lock; C X V copy / cut / paste, R reverse, I invert, [ ] rotate, Z undo, Shift+Z redo, Del clear, ← → move the selection, ↑ ↓ transpose it by a scale degree. REAPER decides which keys reach a plug-in window; Space stays with the transport, and other keys depend on your keyboard shortcut setup. Every function is also available with the mouse.

08Slots, undo & song chain

Eight slots A–H hold independent patterns (each with its own length). COPY and PASTE (in the SELECTION panel) move a pattern or a selection between slots. In normal mode the active slot plays. The slot overview in the SONG tab shows all eight patterns as small piano rolls; a click selects the slot.

Undo ring. UNDO goes back through the last 16 edits across all slots, REDO forward again; the counter (e.g. 3/16) shows how many steps are available and the tooltip names the slot the next step changes. A new edit discards the redo steps. Loading a preset, a scene or INIT, and a REAPER undo, clear the ring.

SONG plays a chain of up to 16 entries instead: click a chain cell to step through empty, A..H; right-click sets the repeats 1–8 (A3 = slot A three times). The chain ends at the first empty cell and loops. The position is computed from the transport position, so jumps and loops always land in the right place. The default chain is A A A B.

Chain editing and timeline (SONG tab). The underlined cell is the one the buttons act on (a click on a cell, or on its block in the timeline, selects it): INSERT puts a cell with the active slot behind it (the following cells move right, the last one drops out), DELETE removes it, << / >> move it. Under the cells a timeline draws one block per cell, as wide as pattern length times repeats, and the line next to the buttons gives the chain length in steps and 4/4 bars at the current RATE. While the chain plays (v0.8.1), a bright playhead line runs along the timeline, a second line grows underneath it, and the cell that is playing is lit.

TT-303PATGEN with slot C active after COPY and PASTE, the SONG tab open with the chain A3 B A, its timeline and the slot overview
SLOTSSlots and song chain. Slot C holds a pasted copy; the SONG tab shows the chain A3 B A, its timeline and the eight slots.
TT-303PATGEN showing all 32 steps of a doubled pattern at once in the piano roll (VIEW FIT)
32 STEPSLong patterns. With VIEW FIT all 32 steps are visible at once; 1-16 / 17-32 give wider columns for one half.
TT-303PATGEN with the GALLERY tab open: eight candidate patterns with their seeds, TRY and KEEP buttons and the REROLL buttons
GALLERYEight candidates at once. Each card is exactly what GENERATE gives with its seed.

Slots, lengths and the chain are saved with the project and with FX presets (step locks only with the project). Loading a preset with an unknown format version keeps the defaults.

REAPER undo. Every pattern edit on the front panel (notes, step rows, GENERATE, MUTATE, the edit buttons, length, song chain, loading a preset) also creates a REAPER undo point (Edit FX) once you release the mouse button, and marks the project as changed — Ctrl+Z takes it back. The plug-in’s own undo ring stays independent of it (and is cleared by a REAPER undo).

09The library

Library tab (v0.7.0). The LIBRARY tab of the deck shows all 32 style patterns as small piano rolls with their names; a click loads the pattern into the active slot (undoable). The factory scenes are still loaded from the FACTORY list of the preset bar.

32 built-in patterns of 16 steps, original style studies written for this plug-in, not copies of any recording: Roll 1–8 (rolling 16ths, root pedal with octave pops, Voyager-like), Sparse 1–8 (few notes, slides, offbeat accents, Acid-Tracks-like), Drive 1–8 (driving 16ths with the phrygian b2, Higher-State-like) and Squelch 1–8 (dirty root and b7 basslines, Phuture-like). Since 0.5.0 they are the FACTORY section of the preset bar: choosing one writes the pattern into the active slot as written (undoable); the CLASSIC MUT algorithm snaps a random one to your scale.

Factory scenes (v0.6.0)

Below the 32 library patterns the FACTORY list holds 40 scenes (S01 … to S40 …). A scene sets a whole musical starting point: generator, scale / root, mutate range, rate / swing / gate / humanize, seed, slots A–D with their lengths and the song chain. In S01–S24 slots E–H stay as they are; S25–S40 load all eight slots. The velocities and threshold (your synth calibration), FOLLOW, the MIDI channel, RUN and SEQ LINK are left alone. Press GENERATE or MUTATE after loading a scene and the results stay in its style. The number in the name is the suggested tempo (the tempo itself is set in the host); the table lists a matching TT-303 sound preset. A scene is one undo step.

SceneKey / scaleRateBPMTT-303 sound
S01 ACID TECHNO 140A phrygian1/16140SQUELCH
S02 HARD ACID 150F# custom (R b2 b3 b5 5 b7)1/16150SCREAM
S03 ACID HOUSE 124G blues1/16124DEEP
S04 PSY ACID 142E phrygian dominant1/16142SQUELCH
S05 MINIMAL ACID 128D phrygian1/16128DEEP
S06 ELECTRO ACID 130C dorian1/16130DEEP
S07 UK ACID 145F minor pentatonic1/16145SCREAM
S08 DUB ACID 118D natural minor1/8118DUB
S09 TRIPLET ACID 126G harmonic minor1/16T126SQUELCH
S10 MELODIC ACID 122F# natural minor1/16122DEEP
S11 HALFTIME ACID 140C# blues1/16140DUB
S12 RAVE HOOVER 136B harmonic minor1/16136HOOVER
S13 BODY ACID 125C custom (R b2 b5 5 b7)1/16125SCREAM
S14 LOFI ACID JAZZ 96A# dorian1/1696DEEP
S15 POLY ACID 3:4E minor pentatonic1/16132INIT
S16 EVOLVING PROB 132F natural minor1/16132SQUELCH
S17 PEAKTIME OFFBEAT 132D phrygian1/16132INIT
S18 PEAKTIME DRIVE 134E phrygian1/16134SQUELCH
S19 ROLLING TRAIN 140F phrygian1/16140SQUELCH
S20 ROLLING OCTAVE 142C custom (R b2 2 b3 3 4 5 6 b7)1/16142SQUELCH
S21 MELODIC ARP 126E dorian1/16126DEEP
S22 TWO-BAR HOOKS 125C# custom (R 2 3 4 b5 5 6 7)1/16125DEEP
S23 EVOLUTION ROLL 143D phrygian1/16143SQUELCH
S24 PEDAL POINT 124D custom (R b2 b3 4 5 b6 b7)1/16124DEEP
S25 RUBBER BOUNCECustom phrase scale1/16125DEEP
S26 WALKING GROOVECustom phrase scale1/16124DEEP
S27 GARAGE SHUFFLECustom phrase scale1/16126DEEP
S28 FUNKY OCTAVESCustom phrase scale1/16125DEEP
S29 MINIMAL STABCustom phrase scale1/16127DEEP
S30 TRIBAL 3-3-2Custom phrase scale1/16124DEEP
S31 DISCO OCTAVESCustom phrase scale1/16124DEEP
S32 CHORD ROOT MOVERCustom phrase scale1/16125DEEP
S33 HYPNOTIC 3Custom phrase scale1/16132DEEP
S34 ROLL CALL ANSWERCustom phrase scale1/16138DEEP
S35 BERLIN TIEDCustom phrase scale1/16130DEEP
S36 DETROIT RIFFCustom phrase scale1/16128DEEP
S37 OFFBEAT STUTTERCustom phrase scale1/16134DEEP
S38 PEAK HOOKCustom phrase scale1/16135DEEP
S39 POLYMETER 5Custom phrase scale1/16136DEEP
S40 DRIVING FIFTHSCustom phrase scale1/16133DEEP

S15 runs two slots of 12 and 10 steps against each other, so the loop only comes back to the start after several bars. That is intended.

Techno bass scenes S17–S24 (v1.1.0). Each slot holds one classic techno bassline: offbeat and 8-bass patterns, the rolling “train” (the two 16ths after each kick left out), octave rolls with slides, minor arps, two-bar hooks that resolve at the end of bar two (32-step slots), S23 as a four-stage roll that builds over its chain and S24 as a pedal point that only reveals the chord roots later. Where a pattern goes below its root, the scene root sits lower and the scale is a custom mask, so the notes stay where they belong. Ghost notes play as normal notes.

10Preset bar & user bank

Header of TT-303PATGEN with the preset bar: previous, preset name with drop-down, next, SAVE and a menu button, left of the OPTIONS button, and the open preset list with FACTORY and USER sections
PRESETSThe preset bar sits in the header, directly left of OPTIONS: < name > SAVE .... The name opens the list with the FACTORY and USER sections.

The bar loads and saves the whole musical state of the instance in one step: all generator, mutate and output settings, scale / root / custom mask, SEED and LOCK, the active slot, all eight patterns (with their lengths) and the song chain. Not part of a preset: the colour scheme (OPTIONS), the MIDI channel, RUN, SEQ LINK and LINK ID (per-instance routing), the library list position and the hidden test parameters. Since v1.0.4 a preset also records which generator generation wrote it; a preset saved by an older one shows SEED SAVED BY GEN v1 at the seed box — its stored patterns still play as saved, but its seed re-draws a different pattern (the generator changed in v0.8.0).

ControlFunction
< / >Previous / next preset: first the 32 factory patterns and the 40 factory scenes, then the used user slots; wraps around and loads immediately.
Name fieldOpens the list: FACTORY (the 32 library patterns, then the 40 scenes) and USER (32 slots, empty ones show - empty -). Mouse wheel scrolls, click loads. A * behind the name means the state differs from the loaded preset (the active slot alone does not count).
SAVESaves the current state into the selected user slot; with a factory preset (or none) selected, into the first free slot. A name box opens (up to 24 characters, default User 07): type, Enter or OK saves, CANCEL or a click outside cancels.
...RENAME, COPY (into the next free slot), DELETE (a second click confirms) for the selected user preset, and INIT (factory settings of all preset parameters; slots A–D get library patterns 1–4, the chain is A A A B).

A factory pattern is one library pattern: it is written into the active slot (exactly what the old LOAD did) and leaves every setting and all other slots alone. A factory scene sets a whole starting point, see the scenes in the library chapter. A user preset restores everything, including which slot is active, all eight patterns and the chain. Loading is applied inside the plug-in’s audio callback, like every other pattern edit, so a running pattern never changes mid-step in a half-written state. Loading a preset resets the undo memory and the MUTATE counter (the next MUTATE with the same seed repeats the same variation).

Where the user bank lives. Plug-ins cannot write files, so the 32 user slots are part of the plug-in state: they are saved with the project, with FX-chain and track-template copies, and in every REAPER preset of this plug-in (the + button in the FX window toolbar). To take your bank to another project or computer, save a REAPER preset once (+ → Save preset) and load it there: the whole bank comes with it. Each used user slot adds about 2 kB to the project (a full bank of 32 roughly 65 kB). Projects saved with earlier versions load unchanged with an empty bank.

Typing names. REAPER keeps Space for the transport, so type Shift+Space for a blank. Depending on your REAPER settings Esc closes the whole FX window; use CANCEL instead. (The + menu of the FX window also has Send all keyboard input to plug-in.)

11Output & sync

ControlRangeFunction
RATE1/16, 1/8, 1/16T, 1/32step length
SWING50–75 %delays every second step by (2 x SWING - 1) x step length
GATE LEN5–100 %note length as a share of a step (50 = half a step); a slide overlaps by half of it (at least one sample)
MIDI CH1–16output channel; changing it releases held notes
ACC VEL / NORM VEL1–127velocity of accented / normal steps (defaults 127 / 64; 127 / 90 before v0.5.7)
THRESH1–127the accent threshold of your synth (default 65 = TT-303 v1.5.0; 100 before). INIT uses the same defaults since v0.6.0. Keeps humanized velocities on the right side and drives the warning line
HUM TIME / HUM VEL0–20 ms / 0–30deterministic timing (±) and velocity jitter; the plug-in looks ahead, so pulling notes early costs no latency. A step never starts before the previous one (at 1/32 or 1/16T with heavy swing a large HUM TIME is limited by this)
OCTAVE-2…+2transposes the output by octaves
SLOT QUANTINSTANT, 1 BEAT, 1 / 2 / 4 BARS(v0.8.0) a slot change from the slot buttons, the keys 1–8 or NOTE TRIG waits for the next beat / bar (counted from the project start in the current time signature); a blinking frame marks the waiting slot, clicking the playing slot again cancels. INSTANT, a stopped transport and SONG mode switch at once; automating SLOT is always immediate. The new slot continues at step counter mod its length, so it starts on its first step only if its length divides the bar
NOTE TRIG / TRIG BASEOFF / ON, C0–G0 / C1–G1 / C3–G3 / C4–G4(v0.8.0) eight consecutive incoming MIDI notes from the base switch the slots A–H (with SLOT QUANT). These notes neither transpose nor pass through; all other notes still transpose with FOLLOW IN. C0 = MIDI 12, C1 = 24, C3 = 48, C4 = 60; the default range C0–G0 lies below the FOLLOW reference C2

Timing is sample-accurate: the plug-in schedules every note-on and note-off at its own sample offset from the host tempo and beat position; transport jumps, loops and tempo changes are followed. Measured against the exact grid at 120, 140 and 174 bpm, with swing 50 and 62, the note-on positions are identical to the sample.

12MIDI input, transpose & panic

13Using it with the TT-303

  1. Put TT-303PATGEN above the TT-303 on the same track. In the TT-303 keep Mode = HOST.
  2. The TT-303 reads velocity ≥ its Accent from velocity value (default 65 since v1.5.0, 100 before) as accent. The defaults ACC VEL 127 and NORM VEL 64 are on the correct sides of 65; if you change the threshold in the TT-303, set THRESH here to the same value. Projects saved with an older TT-303 keep their threshold of 100, and a PATGEN saved before v0.5.7 keeps NORM VEL 90 / THRESH 100 — the warning line tells you when the two no longer match.
  3. Overlapping notes are a slide in the TT-303; its Slide time sets the glide.
  4. Do not use the TT-303’s own SEQ mode at the same time.

The plug-in’s test suite renders PATGEN → TT-303 offline and measures the result: accented notes are clearly louder, a slide keeps the note running and glides the pitch, a retriggered octave jump does not.

Other synths. The same MIDI works on any mono bass line. Two things to check in your synth’s manual: which velocity reads as accent (set THRESH to it and keep NORM VEL below / ACC VEL at or above it — the output tab warns if the three do not line up), and whether overlapping notes glide (legato/mono-glide on). Examples: the TT-303 in HOST mode (threshold 65 since v1.5.0) is the reference; 303-style clones with velocity accent and overlap glide (e.g. D16 Phoscyon in its host/velocity modes, Behringer TD-3 via MIDI accent) respond the same way; on a plain synth without accent/slide handling the pattern still plays, just without accents and glides.

With SEQ LINK on, the active pattern is published in the gmem namespace tt303pg so another JSFX or script can read it. This is a sender only; nothing in the TT-303 reads it yet.

Several instances (v1.0.4). Every instance owns one block, picked with the LINK ID box next to SEQ LINK: ID 1 is the block below (unchanged since v0.2.0), ID n writes the same layout starting at gmem[(n-1) x 3000] — all addresses in the table are relative to that base. Give every instance you want to read (e.g. by the print actions) its own ID. Each instance also writes two presence cells — even with SEQ LINK off: [base+198] holds the plug-in version x 100 and [base+199] a heartbeat that changes every audio block, so a reader can tell a running instance from stale data, and “SEQ LINK off” from “no plug-in”. Plug-ins older than v1.0.4 write no presence cells; their block at ID 1 is read as before.

Index (relative to base)Content
gmem[0]30301 (magic)
gmem[1]1 (protocol version)
gmem[2]pattern length 1–32
gmem[3]write counter (+1 after every complete write)
gmem[4 + 4 s + k]step s (0..31), field k: 0 MIDI note (absolute, without input transpose), 1 gate (tie = 1), 2 accent, 3 slide
gmem[132..138]extension: step length in beats, swing, gate length, ACC VEL, NORM VEL, channel, 1 = valid
gmem[139], gmem[140 + s]1 = tie flags valid; 1 when step s is a tie
gmem[200..202]chain block (v0.7.0): 1 = valid, write counter, number of cells (up to the first empty one)
gmem[203 + 2 j], [204 + 2 j]chain cell j (0..15): slot 0..7, repeats 1..8
gmem[240 + 164 k + ...]slot k (0..7): +0 length, +1 + 4 s note, gate, accent, slide as in the pattern block, +129 + s tie flag
gmem[198], gmem[199](v1.0.4) presence: plug-in version x 100, heartbeat counter (always written, even with SEQ LINK off)

A tie is exported as a slide of the previous step into the same pitch. Write the header last, read the counter twice to detect a torn read. The TT-303 stores 16 steps in the range C1–C3; longer or higher patterns must be clipped by the reader.

15Print to MIDI Item

The ReaScript TT-303PATGEN Print to MIDI Item.lua (installed with the plug-in) turns the live generator into a real track. Turn on SEQ LINK, select the target track, put the edit cursor where the item should start, run the script and enter the number of bars. It writes the pattern as it plays: swing, gate length, slides as overlapping notes, ties as longer notes, accent and normal velocity, the MIDI channel.

Several instances (v1.0.4). The dialog’s second field takes a SEQ LINK ID (the box next to SEQ LINK in the OUTPUT tab); 0 = auto picks the first running instance that publishes a block. The script finds running instances by their heartbeat, so its messages distinguish “no plug-in”, “SEQ LINK off” and “stale data” instead of failing silently.

What is not printed. PROB (per-step probability), HUMANIZE and the FOLLOW input transposition are live playback features: the item contains the pattern as written, at the pattern’s own pitch — fixed MIDI has no dice and no keyboard input. The printed item carries a note saying exactly that. The result is compared note by note against the live output in the test suite.

The second action TT-303PATGEN Print Song Chain.lua (v0.7.0) prints the whole song chain — all cells with their repeats — as one MIDI item: turn on SEQ LINK, select the track, place the edit cursor, run it and enter how many passes of the chain to print (1 = once). Slides and ties across the cell borders behave exactly as in SONG mode. It needs TT-303PATGEN Print to MIDI Item.lua next to it (both are installed together); the SEQ LINK ID field and the same “not printed” note apply.

16Automation & parameters

All controls are hidden JSFX sliders that stay automatable. Parameters 1–36 are the musical controls (slot, seed, lock, algorithm, scale, root, custom mask, the nine generator settings, mutate settings, rate, swing, gate length, channel, velocities, threshold, follow, run, humanize, song, SEQ LINK, octave, library index). Parameter 69 is the hidden SEQ LINK ID (1–8, see SEQ LINK). The preset bar stores all of them except MIDI channel, run, SEQ LINK, LINK ID and library index. Parameter 64 is the hidden UI colour (scheme 0–9, see Options / Color). Parameters 37–63 are a command / diagnostic bus used by the automated tests (command, arguments, acknowledge, memory query, event log, statistics, block timing) — ignore them; commands and the event log only act while a test script has unlocked them, so automation on them does nothing. Patterns themselves are not parameters: they are saved with the project and with FX presets (and, in the user bank, with every preset you save).

17Limits & honest notes

18Troubleshooting

Changelog

1.1.0 — Techno bass scenes

1.0.6 — Second review round

1.0.5 — Review fixes

1.0.4 — SEQ LINK instances & seed generations

1.0.3 — SEQ LINK hardened

1.0.2 — Safer PRINT

1.0.1 — Robustness fixes

1.0.0 — First public release

0.9.0 — Fixes from a code review

0.8.2 — Internal: UI kit update

0.8.1 — Playhead in the song timeline

0.8.0 — Generator and slot switching

0.7.0 — Workbench front

0.6.2 — Review fixes, round 2

0.6.1 — Review fixes

0.6.0 — Factory scenes

0.5.5 — UI size and saved options

1.2.0 — Bass patterns

TECHNO BASS selects offbeat, 8-bass, double-hit, train, tumbling, 3-3-2, polymeter and speed-bump rhythms. DENSITY and SYNCOPATION weight the families; REPEAT sets the root pedal, TENSION adds b2 where the scale allows it. Slot roles repeat A call, B variation, C answer, D fill. Generate in each slot with a locked seed to keep the common core. Ghost candidates play at normal velocity without accent. New scenes S25-S40 contain complete phrases and alternate answers; these scenes own slots A-H, while S01-S24 still preserve E-H. 72 factory entries in total.

UI Size & Saved Options

Updated in v1.2.0. New instances open at 125% UI size for clearer text. The controls and text are redrawn at the selected size; the colour scheme and background retain their appearance.

Current front at the new default UI size
Current front at the default UI size of 125%.

Open OPTIONS and choose UI SIZE: 100% / 125% / 150% / 200% / 300%, or click the percentage field and enter a whole number from 25 to 400. Enter or a click outside the field applies it; Escape cancels the edit. Values outside the range are limited to the nearest supported value.

OPTIONS with UI size buttons and the custom percentage field
The shared OPTIONS box, including the UI size controls.

AUTO FIT. When you drag the edge of the FX window, the front rescales to the new window size (the largest whole percentage that shows the whole front, 25 to 400 %) and the scrollbars disappear. The UI SIZE buttons and the percentage field still set a fixed size, which stays until you change the window again. AUTO FIT ON / OFF in the UI SIZE row of OPTIONS switches the rescaling off for this instance; the setting is saved with the project. Switching it on fits the front to the current window at once.

If the enlarged front exceeds the host window, use the horizontal and vertical scrollbars to reach every control. The mouse wheel over a scrollbar moves that view. OPTIONS stays visible at the upper right. You can also enlarge the REAPER FX window to show more of the front.

All OPTIONS settings are saved per instance: UI size, colour scheme, title and text font sizes, custom title/text/background colours, colour-picker target, and TOOLTIPS ON / OFF. Closing and reopening the FX window keeps them; saving and reopening the project restores them. They also travel with FX chains and native REAPER FX presets. Save the project to keep changes between sessions.

The sound presets in the plugin's own preset bar retain the instance's appearance settings. Older projects and style blocks remain readable; projects that predate UI SIZE use the new 125% default.

Large font steps (v0.5.6). Labels that sit in tight places (knob names and values, tabs, field labels, short help lines, the wordmark) only grow while they still fit their place; where a larger step would not fit, that label stays at the normal size, so nothing overlaps.