Clips and transport
Every clip carries its own playback identity. This page covers what a clip does once it exists.
Trigger styles
Set per clip in Clip → Transport → Trigger. The performance bar's Clip transport button opens that inspector; the footer has no trigger-style picker.
| Style | Behaviour |
|---|---|
| Normal | Each press connects the clip. Whether it restarts or continues depends on its retrigger policy |
| Piano | Press connects and holds; release disconnects. Keyboard and mouse holds both apply |
| Toggle | First press connects; pressing again while the clip is running disconnects it |
Default for every new clip: Normal.
Two details matter in practice:
- A discrete trigger command sent to a Piano clip gets a synthetic 150 ms pulse. Learned MIDI clip notes instead use real Note On/Off press-and-release ownership. Learned MIDI column notes send a discrete column trigger. OSC/REST clients can choose discrete triggers or explicit press/release commands.
- Toggle-off does not count as a recent trigger, so it will not appear under the Recent filter.
Empty slots never trigger. Column triggers honour each eligible clip's trigger style; see Column triggers for the per-clip exclusion control.
Playback modes
| Mode | At the far edge, it… |
|---|---|
| Loop | Wraps to the start. Playing backwards, it wraps to the end |
| Bounce | Reverses direction and plays the return leg |
| Once & clear | Stops and releases its slot, so the tile no longer looks active |
| Once & hold | Stops at the edge but stays connected — usable with Resume |
Default for every new clip: Loop. All modes operate strictly inside the clip's in/out range.
Changing mode while playing works: leaving Bounce resets direction per the clip's reverse flag; toggling reverse flips direction in place without restarting.
Known quirk. A Once & clear clip whose retrigger policy is Resume saves a resume point at its out point when it self-disconnects. Triggering it again resumes at the out point and stops immediately. Set the policy to Restart — or use the explicit Restart command — to replay such a clip. This is derived from reading the transport code, not from an executed test.
Speed and direction
- Speed is stored as a magnitude plus a reverse flag; the signed value you edit is derived.
- The numeric field accepts −16…16; the slider spans −4…4. Composition speed is capped at 0.01…16 and multiplies with clip speed.
- Setting speed to 0 pauses the clip without storing an invalid zero; the previous magnitude and direction are kept.
- A set containing a clip with non-finite or non-positive speed will not load — the value is rejected before it can be saved.
- Reversed clips start from their out point.
Timebase: seconds or beats
Each clip runs on either a seconds duration or a beats duration. In beats mode the musical length stays constant, so changing tempo changes the wall-clock speed.
The BPM sync toggle computes a beat length for you: it sets mediaDuration × detected BPM ÷ 60
for audio files, and 4 beats for everything else. The beats field accepts 0.25…128, or 0.25…65536 for
audio clips.
In/out points and trim
Both are normalized fractions of the full media timeline (0…1), never seconds, never beats.
- Defaults are in = 0, out = 1.
- Rules: both finite,
0 ≤ in < out ≤ 1, minimum span 0.000001. - Enter values as percent, then press Apply in/out or Return to commit both endpoints together. Reset in/out writes 0/1.
- Invalid edits are rejected wholesale and the previous range is retained, with the status reading "In must be below Out, both between 0% and 100%, with a nonzero range. The previous range is retained."
- Trimming a clip that is already playing keeps it playing and re-clamps its position; nothing restarts.
Cue points
- Up to 16 per clip, listed as
Cue points · n/16. - Add cue here records the current position and auto-names it to the lowest unused
Cue N. - Positions are normalized against the whole timeline and are allowed to sit outside the in/out range — jumping clamps into it. Help text says so: "Jump respects in/out points."
- Cue names must be 1–80 characters; a clip with invalid cue data cannot be loaded.
- Pressing Jump seeks to that cue; Remove deletes by ID. Cue jumps are immediate — they are not quantized.
Each cue row also offers Learn key and Learn MIDI note. The first input learns; subsequent presses jump immediately to that captured cue without activating an idle clip. These are composition-wide mappings. See Cue keys and MIDI notes.
Pause, jog, restart and resume
Retrigger policy ( labelled On trigger ) controls what a fresh trigger does:
- Restart from in/out (default) — always begins at the start point.
- Resume position — continues from where it stopped, when the clip was running when it disconnected.
Per-clip controls, with their exact labels:
| Control | Shown when | Effect |
|---|---|---|
| Play clip / Pause clip / Resume clip | idle / running / paused | Transport of that one clip |
| Restart clip | context menu → Transport | Forces a restart, and connects or unpauses if needed |
| Stop clip | context menu → Transport | Disconnects; disabled while idle |
| Jog −1 frame / Jog +1 frame | Transport tab | Step one frame of the app frame rate |
The jog step is one frame of your chosen render frame rate (default 30 fps) — not the file's own frame rate — and for beats-timebase clips it is scaled by the clip's media duration.
Global pause (Space, or Performance → Pause / resume) freezes every playing clip. It pauses all runtime advancement while letting driver clocks, transition starts and seconds-unit autopilot deadlines shift so they survive the pause. A finish-editing pass preserves unchanged runtimes' positions.
Slider reset
Supported speed/playhead sliders have named right-click zero/reset actions. Zero speed pauses while retaining the remembered speed. Playhead reset respects the trimmed in-point rather than seeking outside the active range. Independent Preview has its own guarded reset.
Seeking
Drag the playhead slider to seek. Seeking clamps into the in/out range, discards queued file audio for that slot, and does not change direction or state: a running clip keeps running, an idle clip stays idle.
Two behaviours to be aware of:
- Frame accuracy is not guaranteed. Large real-time gaps — anything beyond a quarter of a second in a single tick — are discarded rather than accumulated, so playback cannot "catch up" in slow motion.
- On a loop wrap or an abrupt seek, the last successfully decoded frame stays visible while the decoder repositions. With interframe codecs this means a brief held frame is normal, not a bug. The retained frame is dropped when the clip's ownership changes.
Column triggers
The numbered column buttons trigger that column, honouring each eligible clip's trigger style, quantization rules and identity. Before switching clips, the column checks source admission for all eligible clips that need to connect; rejection leaves the whole column unchanged.
Enable Clip → Transport → Ignore column trigger to exclude that clip from column triggers. The performance bar's Clip transport button opens this inspector. The toggle starts off, including in older sets that have no saved flag. Its value saves with the set and supports Undo/Redo.
An ignored clip and its layer stay unchanged when you trigger its column. Direct clip triggers still work. This also applies to learned MIDI column notes and column triggers from connected controls. If every clip in a column is ignored, triggering it does nothing.
A queued column captures its eligible clips when queued. If that membership differs when it executes, the entire queued column trigger is canceled before any clip switches. Changing the flag and restoring it before execution does not by itself cancel the queued trigger.
The separate “clip fires next clip at clip end” policy is not supported.
What persists
Saved with the set: source, trigger style, ignore-column flag, playback mode, timebase, speed and reverse, playback settings (in/out, retrigger policy, cues), and all per-clip appearance — effects, transform, opacity, audio settings, favourite flag, file-tempo estimate, recent-trigger stamp.
Runtime only: playhead position, current state, direction, resume progress, held-pointer state, pending toggles, activation counts, selection, playback meters and queued or held control commands.
The live playhead is deliberately not written back into the set, so reopening always starts clips cleanly rather than mid-frame.