s3g Tracker

s3g Tracker is a MIDI-generating CLAP instrument for REAPER. It follows the host transport and tempo, sequences as many as 32 polymetric tracks, and publishes sample-offset notes on MIDI channels 1–16 through one CLAP note-output port. Sound is produced by downstream s3g-dsp drums, samplers, or other instrument plug-ins.

The complete Tracker workspace with expanded sequencing columns and a populated volume envelope keeps transport, patterns, per-lane routing, polymetric editing, and Live Code visible in one resizable editor.

The tracker is a MIDI-only companion to the drum and sampler instruments in the collection.

Workflow

  1. Insert s3g Tracker before a receiving instrument in a REAPER FX chain, or place it on a track whose MIDI output is routed to other tracks.
  2. Route its MIDI output to a downstream instrument and monitor that instrument's audio through REAPER.
  3. For each tracker lane, choose a CH01CH16 MIDI channel in the lane header.
  4. Enter notes and sequencing actions, then start REAPER's transport. The pattern is saved automatically with the REAPER project.

Host Transport and Timing

REAPER owns the audio device, tempo, transport, rendering, instruments, effects, and final mix. HOST BPM is read-only. RATE scales the tracker clock by a musical ratio: 1/4×, 1/2×, 2/3×, , 3/2×, , or .

The play button requests host play or continue. SYNC ALL forces every lane column to row 1 without stopping or seeking REAPER; it ignores the columns' phase offsets for that launch. Click it while stopped to queue a synchronized start, or while playing to realign the tracker at the next processing boundary. The loop button applies the displayed row range across every track column. PANIC releases all notes tracked as active and sends MIDI CC 123 on channels 1–16.

Normal host starts, seeks, and loop discontinuities remain host-timeline aligned and honor each column's phase. Pattern-boundary changes are prepared outside the audio callback and swapped at a safe musical boundary.

MIDI Routing

Tracker exposes one CLAP note-output port because REAPER does not currently provide usable routing for its former multiple note-port layout. It also exposes one MIDI input dedicated to step recording. Every tracker lane owns a one-based output channel selected with its CHxx control. There is no tracker-global channel assignment and no direct CoreMIDI device selection: REAPER decides which inputs reach Tracker and which downstream track or plug-in receives its output.

Several downstream instrument instances may share one REAPER track and listen on different channels. For clearer mixing and plug-in chains, create MIDI sends from the Tracker track and filter channels at the receiving tracks or instruments. Use another Tracker instance when a project needs more than 16 independently addressed destinations.

MIDI 1.0 cannot independently identify overlapping copies of the same pitch on the same channel. Tracker therefore uses a deterministic latest-note-wins policy: a replacement onset sends Note Off immediately before the new Note On, and the older note's scheduled gate cannot stop the replacement. Use different channels when overlapping unisons must sustain independently.

MIDI Step Recording

Route a REAPER MIDI input to Tracker, place the tracker cursor on the destination lane, and choose STEP, LIVE Q, or LIVE MT. Armed MIDI is passed through immediately on the selected lane's output channel. The input channel is reported in Console but does not override the selected lane or its output channel.

ModeRecorded result
OFFDisarms input capture.
STEPWrites note and velocity exactly on the cursor row, removes MT there, and advances one row. Note-off is not recorded.
LIVE QWrites onset and physical note-off at their nearest viable playback rows, filling crossed rows with HLD and ending on KIL.
LIVE MTUses the same NOTE duration cells and also writes the measured onset and release offsets as MicroTime in an existing MT cell or the first empty SEQ pair.

Microtiming is bounded by the project's MicroTime range and reports when an extreme offset is clamped. If both SEQ cells on an onset or release row already contain other actions, that boundary is rejected transactionally instead of overwriting them. Live modes require running REAPER transport and target one selected pattern; MIDI-file import is not part of this version.

Tracker Grid

Every track offers six editable columns. The default compact view keeps NOTE and VOL at their full widths; EXPAND SEQ reveals both sequencing pairs, and COLLAPSE SEQ hides them again.

ColumnPurposeEntry
NOTEMIDI note, rest, retrigger, hold, or kill.60, C-4, ---, RPT, HLD, or KIL
VOLNormalized velocity sent as MIDI 0–127.0.0001.000, DEF, or PRV
SEQ1First sequencing behavior.Action code, full name, PRV, or ---
V1Value for SEQ1; its header selects STP or LIN.0.0001.000, MIDI 0127 for CC, or PRV
SEQ2Second sequencing behavior.Action code, full name, PRV, or ---
V2Value for SEQ2; its header selects STP or LIN.0.0001.000, MIDI 0127 for CC, or PRV

NOTE: NAME displays pitches as names such as C-4. NOTE: MIDI displays the same stored pitch as its decimal MIDI value, such as 60. This is a view-only option: files and playback do not change, and either form remains valid when editing a note.

Each column advances independently and owns its length, stride, phase, direction, mute state, and playhead. One track can therefore combine a 16-row note pattern, a 7-row volume pattern, and a 5-row probability pattern.

The header gives every column four separate rows: label, length/stride, direction, and mute. Double-click the L row to type a length. Click DIR to cycle forward >, reverse <, palindrome <>, and random RND. The bottom MUTE row has an isolated click target. Double-click a track name to rename it.

Sequencing Actions

Right-click a SEQ1 or SEQ2 cell to choose an action with its abbreviation and value meaning. Direct text entry accepts the code, full name, or stable command name.

CodeActionValue behavior
RRRatchet2–8 onsets within one tracker tick.
MTMicrotimeEarly at 0, centered at 0.5, late at 1.
DLDelay0–1 complete tracker tick.
FLFlam6–60 ms quieter secondary onset.
STStutter2–8 onsets extending across following ticks.
ACAccent0.5×–1.5× onset velocity.
GLGhostHalf-tick secondary onset at reduced velocity.
PRProbabilityDeterministic 0–100% note gate.
SKSkipPlay once per 2–8 visits to the row.
OFNote OffsetRead NOTE from four rows back to four ahead.
RPRepeat PreviousChance of filling an empty source with the last emitted note.
EUEuclidean GateOne through NOTE-length Euclidean hits.
CC0CC127MIDI Control ChangeSend a 7-bit controller value on the lane's MIDI channel, including on NOTE rest rows.

Each V lane has its own interpolation mode. Click its V1 STP/LIN or V2 STP/LIN header, or use interp <target> <v1|v2> <step|linear>. STEP sends only the authored value at each visited CC row. LINEAR sends intermediate integer CC values toward the next visited row when it contains the same controller. Direction, stride, phase, and polymetric lane traversal determine which row is “next”; empty rows, another controller, or another action end the ramp. Interpolation is capped at 200 messages per second and 128 generated events per tracker tick across the project, while every authored endpoint is preserved.

When both pairs resolve the same kind of source transform, SEQ2 wins. Probability, skip, offset, repeat-previous, and Euclidean gating resolve the note source before ratchet, microtime, delay, flam, stutter, accent, and ghost expand its timing.

The Console command eu <target> <pulses> <steps> also accepts overfull rhythms up to eight pulses per step. For example, eu @kick 20 16 fills the 16 NOTE steps, distributes the four extra pulses across the cycle, and writes correctly valued RR cells into an available SEQ pair. The generated SEQ action and value columns are length-, stride-, phase-, and direction-aligned with NOTE so each burst remains on its intended step. Forward, reverse, and palindrome are supported; overfull random traversal is rejected because independently randomized NOTE and SEQ heads cannot stay aligned. Running eu again replaces RR cells in its generated row span, and unrelated SEQ actions are never overwritten.

Compact symbol reference

The compact grammar uses one meaning per standalone symbol. Removed legacy spellings are rejected instead of being interpreted differently by context.

ContextSymbolsMeaning
VOL / FX level! + * .1.00, 0.85, 0.70, and 0.55.
Empty / rest / default-No authored event: NOTE rest, VOL default, or empty FX action. When attached to a number it remains a minus sign.
Previous / hold=Recall or hold the previously resolved VOL or FX state. Alias assignment uses the alias command instead.
NOTE maskx X / -x or X writes a hit; - writes a rest.
Direction> < <> randomForward, reverse, palindrome, and random. ? is reserved for Help.

For example, vol @kick !+*. writes four levels, while fx1 @kick pr !.=- writes probability 1.00, probability 0.55, previous, and empty. Numeric VOL entries are always MIDI integers or normalized decimals; numeric FX entries are always normalized decimals. Grid cell text also accepts ---, RPT, HLD, and KIL in NOTE; DEF and PRV appear in value columns.

Editing and Shortcuts

Double-click a cell to type an exact value. Drag VOL, V1, or V2 vertically for continuous editing; Option-drag is fine and Shift-drag is coarse. Clicking blank workspace releases an active text field. Drag the row-number gutter to set a global loop region.

KeysAction
Arrow keysMove among columns and rows.
Shift-Left / Shift-RightMove between tracks.
Home / EndMove to the first or last row.
Page Up / Page DownMove by one visible page.
F9–F12Jump to 0%, 25%, 50%, or 75% of the pattern.
Control-A / C / X / VSelect all, copy, cut, or paste tracker cells.
Control-Z / Control-Shift-ZUndo or redo a persistent Tracker edit. Command-Z remains available to REAPER.
Control-= / − / 0Zoom in, zoom out, or reset tracker zoom.
Delete / BackspaceClear the selected cell.
X / R / H / K in NOTEToggle an anchored hit, write retrigger-previous, continue the active note, or write kill; each advances to the next row.
[ / ] in VOL, V1, or V2Decrease or increase the selected normalized value.
MToggle mute for the selected column.
: / backtickFocus Live Code.
EscapeLeave an editor or return focus to the grid.
Space / Shift-SpaceRequest host play or toggle tracker looping.

Tracker editing deliberately uses Control-key combinations so REAPER retains its Command-key shortcuts.

Patterns and Song

The pattern bank stores multiple named patterns in plug-in state. Create, duplicate, rename, delete, and select patterns from the top strip. Pattern edits are stored automatically and mark the REAPER project dirty; there is no separate Save Pattern command.

Song mode running a six-row arrangement assembled from multiple pattern-bank entries, with varied lane mutes and the active row highlighted by the host-synchronized transport.

Song mode arranges stable pattern references into a longer form. Each pattern menu shows both parts as A01 · Pattern Name: the ID is saved in the Song row, while the renameable pattern name is there for recognition. Pattern-bank editing is locked while Song playback is active so a playing arrangement cannot acquire unresolved references.

Turn on SONG TRANSPORT before starting REAPER. Playback begins at Song row 1. TICKS is the length of one pattern cycle for that Song row, and REP is the number of cycles before natural advance; repeats continue the current pattern phase, while entry into another Song row relaunches that row's pattern at its start. The WARP column selects OFF or a named composition saved on the Warps page. Warp is global timing, so it belongs to the Song row rather than an individual tracker lane.

To jump during playback, select a target row, choose its launch boundary, and press QUEUE SELECTED. NEXT TICK waits at least one tracker tick; NEXT BEAT uses the Song beat grid (four tracker ticks by default); NEXT CYCLE waits for the end of the current TICKS cycle; and NEXT SONG ROW waits for the natural end of the current row, including its repeats. The target row is filled and outlined in yellow, and the queue readout states both the row and boundary. Queueing again replaces the earlier pending target. At the chosen boundary, pattern, WARP, swing, and lane mutes switch as one row launch; OFF restores identity timing instead of inheriting the previous row's warp.

Live Code

Press : or backtick to focus Live Code. Return runs a command, Up and Down recall history, Tab completes command names, and Escape returns to the grid. The Help page lists every command accepted by the current build.

help
actions
alias kick 1
mask @kick x---x---x---x---
eu @kick 5 16
vol @kick 1.0 .8 .9 .7
randomize @kick vel .55 1.0
fx @kick 1 1 RR 0.50
fx @kick 2 5 PR 0.75
fx @kick 1 3 CC74 64
interp @kick v1 linear
len @kick note 16
stride @kick v1 2
phase @kick fx2 -1
dir @kick note palindrome
mute @kick fx1 toggle
warp exp 2.0 mix .5

actions lists the sequencing behaviors accepted by the two SEQ columns, including CC0CC127. Audio-parameter effects and internal-instrument commands from earlier standalone designs are not part of this MIDI product.

Tool Pages

Geometry during host playback: each colored polygon follows one polymetric note lane while the live read heads mark emitted hits.
A three-stage timing-warp stack in action: exponential, stepped, and Euclidean transforms combine into the displayed phase map.

Geometry, Warps, Console, and Help can remain embedded pages or detach into independent windows while viewing the same live tracker state. The one-line Live Code editor remains in Tracker view, while the repeated editor travels with a detached Console. The lower value-envelope editor distinguishes large saturated-cyan note-hit breakpoints from smaller dark-gray points without notes.

Current Boundaries