0:00
SIGNAL CHAIN INPUT FEEDBACK CRT OUT
BYPASS · CLEAN SIGNAL
DROP VIDEO / PRESET
ABBUS 1CDPROGRAMME
SPD --:-- / --:--
THE LAYER STACK IS DRIVING THE PICTURE. These faders are not in the path.

WAVEFORM

VECTORSCOPE

PROBE — PUT AN INTERNAL SIGNAL ON THE OUTPUT

MOD MATRIX — PATCH SOURCES INTO ANY PARAMETER

MIDI CONTROL — WHAT IS MAPPED

THE BUS TREE IS DRIVING THE PICTURE.
Nothing on this tab is in the signal path.

        
Paste the image pass of a single-pass shader. iResolution iTime iTimeDelta iFrame iMouse iDate iChannel0-3 iChannelResolution iChannelTime iFrameRate iSampleRate are all provided, texture2D and iGlobalTime are accepted as aliases, and a leading #version line is ignored. Multi-pass shaders (the ones with buffer tabs) will compile but only the image pass runs, so they will not look right. The shader runs on your GPU, at the processing resolution, and is saved with the patch.

SHAPES

Feeds this channel like any other source — glitch it, feed it back, mix it.

BENDR

An analogue-style, circuit-bent video processor. Feed it video, then abuse the signal path the way a bent mixer or a dying VHS deck would: sync corruption, chroma smear, rainbow fringing, tracking errors, tape dropout, and video feedback.

FOUR CHANNELS, THREE BUSES

BENDR is a four-channel mixer. A, B, C and D each have their own input and their own complete set of effects — four sources, four glitch chains, four decks, running at once. The big A / B / C / D buttons at the top of the panel choose which channel you're editing; everything below them, and the bend pads, apply to that channel. LINK edits all four at once; the small selector next to it picks a target, and COPY writes this channel's effects onto it while SWAP exchanges the two outright, sources included. Any channel can reach any other, so D can be copied onto A as easily as A onto B, and shift-clicking COPY sends it to all three at once.

Each mixer is three independent stages, the way a vision mixer actually works. TRANSITION decides how the fader reveals the second input \u2014 a dissolve, one of twelve wipes, a slide in from an edge, or a stretch. MIX TYPE decides how the two combine where both are visible: dissolve, additive, non-additive (whichever is brighter, so neither picture dims the other), difference, multiply or screen. KEY is a separate compositing stage on top: luma white, luma black, chroma, or picture-in-picture with position, size and border. Because they are separate, a circle wipe and a luma key can run at the same time.

MELT is the fourth stage, and it is the one that stops a mix looking digital. The mixer works out where the boundary between the two pictures actually is and which way it faces, then does two things inside a narrow band along it: it drags the incoming picture out along that direction, and it dissolves the mixer's own last frame back in. Because the band feeds itself, the smear stays put and creeps a little further every frame, so the seam trails and bleeds instead of cutting. The amount sits next to each fader; WIDTH, HOLD, SWIRL, CHROMA and CREEP are on the MIX tab. Wind CREEP up and the melt only happens on the outgoing side, so a keyed or wiped shape bleeds into the background and the background never eats into the shape. At zero the whole stage is switched off and costs nothing.

Under the melt sits the DIRTY MIXER, which is the desk failing rather than the picture degrading. It runs on an event clock: DIRT decides how often it fires and RATE how fast the clock runs, then four controls decide what a firing does. DROPOUT drops bands of lines through to the other side of the crossbar or to nothing; CUT throws the whole mix to one input regardless of where the fader is; KNOCK shoves the timebase sideways so the picture shears and crawls back; NOISE sprays the switching transient across the frame. Between firings it is completely clean, which is what makes it read as a fault and not as an effect.

The KEYER has a full set of levels: THRESH and SOFT set where the matte turns over, GAIN how hard, DENSITY how opaque it is ever allowed to get. KEY BORDER grows the matte outward and fills the growth with one of the eight standard back colours, and KEY SHADOW offsets a darkened copy underneath - the outline and drop-shadow treatments a bench mixer offers for titles. Wipes get the same treatment: BORDER WIPE lays a coloured rule along the join, and WIPE MULTI tiles the whole pattern four or sixteen times. There are twenty-four mix types, from the usual dissolve, additive and non-additive through the photographic blends to wrap-add and bitwise XOR, which are not photographic at all.

The channels meet in three mixers, laid out as a strip directly under the picture: bus 1, bus 2, and a master crossfade between them. Each strip has its own two input selectors, so the pairings are not fixed \u2014 bus 1 can mix A against C, bus 2 can mix D against B. To get all four in at once, set both bus faders part-way and put the master on ADD, SCREEN or LIGHTEN rather than FADE, so the buses sum instead of crossfading. The strip sits just under the transport bar, and folds away with MIX on its left when you want the height back.

The faders live under the picture rather than in the sidebar because a crossfader wants to be horizontal and should never be hidden behind a tab \u2014 it is the one control you ride while looking at something else. The detail behind each transition (softness, wipe geometry, key threshold) lives on the MIX tab of the dock, where it is setup rather than performance. INV only greys in when the transition is a wipe, since a fade, a key and a blend have no direction to reverse.

THE LAYER STACK

The three buses are a tree, and a tree is the wrong shape for building one picture out of four, because every source past the second has to arrive through a fader that is already carrying something else. So there is a second topology. The LAYERS tab on the dock has a TOPOLOGY selector and a four-by-four crosspoint matrix: four channels down the side, four layers across, and a cell where they meet. Switch it to LAYERS and the picture is built bottom to top instead, each layer landing on everything below it with its own blend mode, its own level and its own key. The same twenty-four blends the mixer uses are available on every layer, so a look you found on the strip transfers straight up. The same channel can feed more than one layer, which is how you put a picture over a treated copy of itself.

Each layer's key works on that layer's own picture rather than on the transition, which is the point of a stack: the thing on top can sit in front of what is under it instead of dissolving into it. KEY WHITE drops its bright parts, KEY BLACK its dark parts, KEY CHROMA one colour, and the threshold, softness and hue appear in that layer's row as soon as a key is chosen, and stay out of the way when it is off. A layer at zero level costs nothing at all — the channel behind it stops rendering. The three transitions stay where they are and keep their settings while the stack is running; the strip dims to say so. The master melt still runs on the finished stack, so it can still feed back into itself.

MULTIVIEW

MULTI (or V) shows all four channel outputs, bus 1 and the programme at once, like a vision mixer's preview monitors. The channel you are editing carries the hot border; channels that are not currently rendering are dimmed. It forces everything to render, so it costs more than the normal view \u2014 it is for setting up, not for performing.

PATTERN SYNTH

SYNTH under SOURCE turns a channel into a pattern generator rather than a player. It is built like a video synthesiser: coordinates go through a shape (scan, radial, spiral, plasma, lissajous, rings, starburst, grid, tunnel, cells, interference, polygon), then an oscillator with a selectable waveform, then cross-modulation between the axes, a wavefolder, a comparator, and finally a colouriser \u2014 mono, RGB phase, HSV sweep, duotone or hard bands. Every control is a modulation destination, so patching an LFO into CROSS MOD or FREQ X makes it a moving source. It runs entirely on the GPU, so it costs one pass and no file.

SNAPSHOTS AND THE PERFORMANCE RECORDER

Eight slots on the PERFORM tab of the dock hold the whole rig \u2014 all four channels, every bus, every mode. Arm STORE and click a slot to save; click a slot to recall (or shift and a number). GLIDE decides how long the recall takes to travel: at zero it is a hard cut like a preset, wound up it becomes a slow transformation of everything at once, which is the most musical control in the application.

The performance recorder writes down every control you move, twenty-four times a second, storing only what changed. It is recording gestures rather than pixels, which means a take built slowly over an hour can be played back in real time \u2014 and played back against completely different footage. Takes are saved inside the patch file. Touching a control while a take plays fights the playback, which is a perfectly good way to perform over your own recording.

TEXT / SHAPES

TEXT turns the selected channel into a text and shape generator — type anything, pick a font, position/scroll/repeat it, add outline, and layer a shape underneath (circle, ring, rect, triangle, cross, bars, grid, concentric, starburst) with count, spin and pulse. It feeds the channel like any other source, so you can glitch it, feed it back, and mix it against video on the other channel.

INPUT

All four channels take their own source. FILE loads any video or still image your browser can open into the selected channel (drag & drop works too — clips stream from disk, so size doesn't matter). A still goes in the same slot as a clip: jpg, png, webp, avif, and a GIF keeps animating. It has no transport, because there is nothing to shuttle through, but everything downstream still works on it — which is the condition under which a feedback patch develops best, since the picture underneath it never moves. CAM uses your webcam. PATTERN is a built-in test signal — pick BARS, TESTCARD, OSCILLATOR (video-synth colour waves), GRID, RAMP or STATIC from the dropdown.

MASTER OUTPUT

The final stage is a display, not just a filter. DISPLAY cycles the model — flat, aperture grille, slot mask, shadow mask, LCD stripe, mono monitor, green screen — each with its own mask geometry. BEAM WIDTH and BEAM SHAPE set the scanline beam profile (the beam widens with brightness, like a real tube). Then persistence, HV sag (the picture breathes wider as it gets brighter), bloom, halation, defocus, grain, and a full output transform: gamma, black level, white clip, contrast, saturation, warmth. OUTPUT OVERLAY adds letterbox and pillarbox mattes, bezel, glass glare, dust, scratches, screen moiré, rolling shutter and safe-area guides.

FEEDBACK

The loop is the instrument. EDGE decides the whole family — CLAMP gives tunnels and plumes, REPEAT gives lattices, MIRROR gives mandalas. CURVE is the non-linearity (clamp / soft / wrap / fold) and is where structure lives; without it the loop just decays or blows out. INJECT sets how the live picture enters (mix, add, screen, max, min, difference). BLUR plus SHARPEN inside the loop is an activator–inhibitor pair, which is what grows Turing labyrinths and cellular patterns. LOOP NOISE is load-bearing rather than decorative: at zero the loop settles into a dead attractor. VAL / PASS is the loop gain and the most sensitive control in the app. Thirty feedback presets prefixed FB are named after the looks they produce.

SIGNAL LAB

Techniques adapted from the open-source glitch canon: sparse line jitter (only lines past the gate displace, and they displace hard), NTSC crosstalk with separate artifact and fringing controls, shaped snow with clumping, FM wobble, slitscan, row smear, 1-bit crush with ordered dither, moiré, and a multi-band sequential keyer that splits brightness into bands and colours each. FIELD MOD is video-rate modulation: the field varies across the frame, so it modulates hue and warp per-pixel rather than per-frame.

SIGNAL CHAIN

The rail above the picture is the live signal path. Drag the pills to reorder the four processing stages, and click a pill to switch it off. Order changes the result completely: melting before the tape stage smears clean video and then damages it; melting after smears the damage itself.

SIGNAL PATH

Feedback → composite/NTSC encode-decode → sync & tape damage → bent enhancer → colour stage → CRT. The BENT ENHANCER section is the circuit-bent video enhancer core: RAINBOW MAP replaces luma with hot posterized rainbows, EDGE RING is the sharpness circuit driven into oscillation (repeating ghost edges), RGB SPLIT tears the channels apart, LUMA HUE makes colour chase brightness, INV FLICKER strobes inversions.

CONTOUR / PALETTE

The bent-enhancer signature: CONTOUR draws the isolines between brightness bands, giving those repeated outlines that trace the shape of a face or a body. BANDS sets how many, LINE WIDTH how heavy, LINE HUE colours them by band, KEEP FILL decides how much of the picture survives between the lines (drop it to zero for lines on black). FLATTEN quantises brightness into hard LEVELS for solid poster-like colour fields, and DITHER breaks the steps into speckle.

MOD LINES is a one-bit modulator run along the scanline. The picture drives a comparator, the error the comparator makes is fed back into its own input, and the sweep carries on across the line, so where the picture is bright the comparator fires more often and the density and width of the lines is the only thing carrying the image. It is the same circuit as a delta-sigma converter and the same idea as the line-modulator boxes that sat in front of a scan processor, and it reads as an engraving rather than as a dither because the error is diffused rather than compared against a fixed pattern. LINE PITCH coarsens the lines, MOD DRIVE and MOD BIAS decide whether the picture is drawn in its shadows or its highlights, ERROR FEED is how much the modulator remembers its own mistakes — at the top it is textbook error diffusion and the lines organise into long even runs, at the bottom there is no diffusion left and it is a bare comparator. RGB SEPARATE runs three modulators instead of one and mixes them optically, which is how you get colour out of a one-bit process. SERPENTINE sweeps alternate rows the other way, without which every row lays the same diagonal and the picture grows a corduroy that is not in it.

THE MIXER EFFECT FAMILY

In the colour stage: NEGATIVE with three modes (invert brightness, colour, or both), MONOCOLOR to put the whole picture through one colour, COLORPASS to keep a single hue and drop everything else to monochrome, SILHOUETTE to threshold the picture into a flat shape, FIND EDGE for coloured outlines on a dark ground, and EMBOSS to light it from one side as relief.

In frame and position: FLIP turns the picture over, MIRROR reflects one half onto the other, and MULTI tiles it into a grid with alternate cells mirrored so the tiles meet. All three act on the picture before the framing, and all three are modulation destinations \u2014 an LFO into FLIP is a switch, an LFO into MULTI is a grid that grows.

In the time base: STILL freezes the source outright while the effects carry on running over the held frame, STROBE does the same on a regular beat, and SHAKE knocks the picture off its position.

KALEIDO

In FRAME / POSITION, KALEIDO folds the picture into radial symmetry. FOLD N = 3 gives triangles; modulate FOLD SPIN with a slow LFO and the whole composition rotates.

CRT REPHOTO

The CRT section models a photograph of a screen rather than a clean render: BLOOM for light spilling out of bright areas, HALATION to warm that spill the way film does, DEFOCUS for glass softness and FILM GRAIN on top.

GLITCH LAB & FLOW / MOSH

GLITCH LAB is the digital-corruption stage: PIXEL SORT stretches bright runs into vertical streaks (set SORT THRESH to pick what smears), BLOCK TRASH jumps and corrupts macroblocks like a broken codec, HALFTONE drops everything to brightness-sized dots, DRIFT WARP pushes pixels using their own colour values, FM WARP ripples contours by brightness.

FLOW / MOSH is the temporal-smear stage, and it holds its own frame store. FIELD picks the vector field everything is advected along: MOTION estimates real optical flow from the picture (frame to frame, per pixel), CONTOUR runs along brightness edges, CURL NOISE churns, RADIAL and SPIRAL push out and around, CHROMA steers by colour, WEAVE crosshatches. P-FRAME PUSH drags the held frame along that field, which on MOTION is what proper datamosh actually is: the picture stops updating while the movement keeps pulling it apart. MOSH HOLD sets how much of the held frame survives each pass and MOSH GATE restricts the holding to the moving parts of the frame (positive) or the still parts (negative). CURL / ROTATE turns the whole field sideways, so drift becomes orbit. Then MELT with its own direction and brightness gate, SWIRL with scale and speed, VECTOR TRASH with block size and rate, STRETCH, EDGE REPEL, FLOW NOISE, per-pass HUE and DECAY, RE-SHARP to claw back the detail resampling eats, TIME SHEAR on either axis, and an EDGE mode (clamp / repeat / mirror) for what happens off the edge of the frame.

TAPE TRANSPORT

A whole deck, per channel. The transport row drives that channel's source: STILL parks the noise bar a paused deck lays across the field, the shuttle and jog buttons scrub with head-crossing bands marching through the picture. TAPE SPEED runs SP to EP — the slower the tape, the less bandwidth survives, so chroma widens and detail goes. GENERATIONS compounds GEN LOSS as if the tape had been dubbed that many times. TRACK PHASE places the mistracking band and SERVO HUNT sets the auto-tracking circuit searching for it. On top: tape crease, head clog, azimuth error, scrape flutter, wow with its own rate, tape stretch, edge damage, print-through, chroma loss, tape hiss, and dropout with adjustable streak length.

RE-ENTRY

FEED under SOURCE takes another channel, either bus, or the finished programme as this channel's source. Process it and mix it back in and you have a feedback loop that travels through the entire rig rather than round one stage \u2014 which is what patching a mixer's output back into a spare input does. Whatever it reads is one frame old, and that single frame of delay is what keeps it stable instead of an infinite regress.

This is the answer to making two mixed pictures interact. Key or wipe one over another on bus 1, set channel C to re-enter PROGRAMME with feedback zoom, and bring it in on the master with ADD or LIGHTEN: the shape on top now bleeds out into what is behind it, and keeps bleeding, because its own output is going back round. Chain a channel to another channel instead of the programme and you can put a whole different effect chain in the return path.

MOVEMENT

Nothing sits still. The MOD tab holds every modulator, and you can add as many as you want \u2014 there is no fixed number of them. Three kinds:

LFOs run continuously: ten shapes, free-running or locked to tempo across twenty divisions from eight bars down to a thirty-second, including dotted and triplet. ENVELOPES do the opposite \u2014 they fire once and decay, triggered by a bend pad, an audio hit (onset, so it fires on the attack rather than while the sound stays loud), a scene cut, the tempo, or by hand. That is how you get punctuation rather than constant motion. MACROS are one knob driving as many parameters as you point it at, each with its own depth and direction, so you can build a single control that means something specific to the patch you are playing.

On top of those: chaos, drift and random spikes; three audio bands with adjustable frequency ranges; and video-reactive sources computed from the picture itself \u2014 motion, brightness and scene-cut detection. Patch CUT into TEAR and every edit knocks the sync loose.

Each route has its own invert and response curve, so one modulator can drive several parameters quite differently \u2014 one hard, one gently, one inverted, one in four steps. That is often worth more than adding another modulator.

Right-click any parameter to patch something onto it, or choose ANIMATE there to give it a new LFO of its own in one click. Each route in the matrix has a \u25ce that jumps to its modulator, and each modulator lists what it drives as links that jump back.

PERFORMANCE

The dock under the picture has tabs across it: MATRIX, MOD, TEXT, SHADER, MIX, LAYERS, SCOPE, OUT, AUDIO and PERFORM. MIX holds the detail behind each transition — wipe softness and geometry, the key levels, the melt — while the faders themselves stay on the strip. LAYERS is the crosspoint matrix and the four layer strips, one to a row so the levels get the width. AUDIO is where the audio-reactive modulators listen: the input, an audio file with its own transport, the three band ranges and the response. PERFORM holds the snapshot bank, the performance recorder and preset morph. The six bend pads are not on a tab at all: they have their own strip beside the faders, because you should never have to go looking for them. Each tab gets the full width, and the dock resizes by dragging the bar above it.

The six BEND pads are momentary — mash and hold them (Q W E R T Y). MIDI: click MIDI, click a parameter name, move a hardware knob to map it.

SOURCES

Each channel takes a video file or a still image (clips stream from disk, so file size does not matter), a camera, a screen, a generated pattern, the pattern synth, a text page, or re-entry from elsewhere in the rig. Stills load through FILE like clips do and read STILL on the timecode; the transport greys out and everything else behaves normally. CAM opens whatever is chosen in the device list above it: a built-in webcam, a USB one, an HDMI capture stick, or a virtual camera from streaming software. Device names only appear once camera access has been granted, so the list reads DEVICE 1, DEVICE 2 until the first time you press CAM. SCREEN captures a screen, a window or a browser tab, which is the general way to bring in anything that is not a camera.

The audio-reactive modulators listen on the AUDIO tab of the dock: the soundtrack of the video in channel A, a live input (with device and channel selection for interfaces), or an audio file you load there and play. Loading a file is how you build a piece against the track it will actually be shown with. LOAD, PLAY, STOP and LOOP sit together: PLAY is a pause toggle and leaves the track where it stopped, STOP returns it to the top so the next take starts from the beginning. The three band ranges, their gains and the response speed are on the same tab, and the tempo used by synced modulators is the TAP button in the header, whose readout can also be typed into directly.

CHANNEL TAPS are how you use an interface properly. One analyser on whatever the input summed down to is fine for a laptop microphone and useless for a desk. A tap is a listener on one input channel narrowed to one band, and it becomes a modulation source of its own — patchable to any parameter on any channel, with its own gain and response, and usable as an envelope trigger. Send the kick to input 1 and the hats to input 3 and they drive different things. Nothing stops two taps sharing an input either, so one channel can push feedback zoom from its low end and dropout from its transients. Add them from the MOD page or the AUDIO tab; each tap's controls live on its own card on the MOD page, and the AUDIO tab shows the whole rack as meters. Taps are saved with the patch.

MIXER, MORPH, KEYER & TIME BASE

Each of the three MIXERS gets the same twenty modes: a plain fade, twelve wipe patterns (H, V, diagonal, box, circle, splits, blinds, clock, bars, blocks) with soft edges and a movable origin, luma and chroma key transitions, and add / difference / multiply / screen / lighten blends. Run the fader like a T-bar. PRESET MORPH is different: STORE A and STORE B snapshot the whole control panel, then MORPH A>B blends every slider between the two snapshots (LFO it for auto-evolution; moving any slider takes that control back). The KEYER selects part of the image by brightness (or hue) — turn on VIEW MATTE to see the selection in white, then KEY>FX applies the glitch chain only inside it, KEY>FB grows feedback only inside it. TIME BASE is a bent frame store: ECHO blends in frames from the past (modulate DELAY for time-scrub), STUTTER freezes and repeats. RESCAN: FULL feeds the CRT output (scanlines, curvature and all) back through the whole chain like a camera pointed at a monitor.

VIDEO-REACTIVE

MOTION, BRIGHT and CUT are mod sources computed from the picture itself — patch CUT into TEAR and every edit knocks the sync loose like a real deck.

MODULATION

Right-click any parameter to patch a modulator straight onto it, adjust the amount, or remove it. The sources are grouped by family — the modulators you have made, then the audio taps, the three audio bands, the picture-derived ones and the internal signals — so you can see at a glance what is on offer and what is already spoken for. The MOD button (or D) opens the modulation page: every source drawn live, LFO rate/shape/sync editable in place, and each card lists what it's driving. Every number on those cards is a field you can type into, which matters most at the slow end: the rate goes down to a ten-thousandth of a hertz, about one cycle every three hours, and the card says the period beside it because nobody pictures a ten-thousandth of a hertz but everybody pictures three hours. A drift that slow is the difference between a patch that loops and an installation that never quite repeats.

Going the other way — picking a destination from the route row, or PATCH TO on a modulator card — opens a search field rather than a dropdown, because there are over four hundred parameters and a list that long is not a control. Type a few letters of the name, or the name of a section, and it narrows: "wobb" finds every wobble, "tape transport" gives you that whole section. Arrows move, Enter takes the highlighted one, Escape backs out. The full list is still there to scroll if you would rather browse, grouped by section, with anything already patched marked as such, and the help for whatever is highlighted along the bottom.

STEMS

Under LISTEN TO on the AUDIO tab, STEMS takes several audio files at once — the separated parts of one track — and plays them as a set. Each becomes a modulation source of its own, so the kick can drive one parameter, the bass another and the vocal a third, all from the same song. Load them with the button or drop the files straight onto the panel, up to eight.

They start together and stay together. Every stem is decoded into memory and all of them are scheduled at one instant on the audio clock, rather than told to play at roughly the same moment and corrected afterwards, which is what drifts. Two identical stems with one of them inverted cancel to silence, which is the only proof worth having. The cost is memory, about a megabyte a second for a stereo stem, and the panel says what it is holding.

A stem has a level and nothing else. There is no band control because a band control exists to find the kick inside a finished mix, and a kick stem is already the kick. The level is only about what you hear: a part pulled all the way down still drives whatever it is patched to across its full range, which is how you use a stem nobody is meant to listen to — a click track, or a part that only exists to move something. RESPONSE is shared by the set, because stems out of one session want one answer. The audio itself cannot travel in a saved patch, but the shape of the set does: reopen one and the stems are there by name with their routes still wired, waiting for the files to be dropped back on.

TEMPO & MIDI

TAP sets the tempo, or click the number beside it and type one — Enter commits, Escape reverts, and the arrow keys nudge by one beat, or a tenth with shift. LFOs with a SYNC division lock to it. MIDI clock (enable MIDI first) overrides tempo automatically; MIDI notes C1–F1 trigger the six bend pads; CC learn: click MIDI, click a parameter, move a knob.

REC OR RENDER

They make the same kind of file and are not the same thing. REC is a tape machine: it captures what is actually happening, at the speed it actually happens, for as long as you hold it. Every hand movement, every bend pad, every wrong turn is in the take, because it is a recording of a performance. If the machine drops frames under load, the take has dropped frames in it, because that is what happened. It works on anything, including a generated patch with no clip at all, and it is the only one that can capture a live camera or a live audio input.

RENDER is not realtime and is not a performance. It steps a clip through frame by frame, waiting for each one to be processed properly however long that takes, and writes the result. Nothing is dropped and nothing is rushed, so a patch too heavy to run at speed still comes out clean, and the same patch renders identically every time. What it cannot do is capture you playing it: the controls are wherever you left them for the whole render, and anything live has nothing to step through. It needs a clip on one of the channels to give it a timeline and a length.

So: playing the thing is REC, and finishing the thing is RENDER. Both carry audio.

FRAME SHAPE

The raster is not fixed at 16:9 and has nothing to do with your window. FRAME SHAPE under ENGINE offers 16:9, 4:3, 1:1, 3:4, 9:16, 21:9 and 2.39:1, and everything follows it: the CRT geometry, the scan processor, the overlay, the generated patterns and the channel thumbnails. Sources are fitted into whatever shape you pick exactly as any other mismatch is fitted, so a 16:9 clip in a 9:16 frame behaves the way you would expect. The resolution below it picks the height on a wide or square frame and the width on a tall one, so 9:16 at 1080 is 1080 across and 1920 down. The shape is saved with the patch, because a piece built for a phone screen is not the same piece at 16:9.

STARTING A TRACK WITH THE PICTURE

On the AUDIO tab, SYNC cues the audio file and every channel holding a clip back to zero and releases them together, so the track and the picture line up from the first frame and do so identically on every take. Shift-click cues everything to the top and leaves it stopped, ready to release by hand. STOP does the same rewind for the track alone; PLAY is a pause toggle and leaves it where it stopped.

THE WHEEL STEPS A MENU

Rest the pointer on any dropdown and roll the wheel: it steps through the options one at a time without opening, so you can run through twenty-four blend modes against a moving picture and watch each one, rather than opening a menu, choosing, watching, and opening it again. It stops at the ends instead of wrapping round. Scrolling a panel that happens to have menus in it does not disturb them, because a menu only answers the wheel once the pointer has been resting on it for a moment, and while a panel scrolls the menus are sliding under a pointer that has not moved.

TYPING A VALUE

Every number beside a slider is a field. Click it and type. Enter commits, Esc puts back what was there, and the up and down arrows nudge by a fortieth of the range, or a four-hundredth with shift held, which is one step of the slider. A typed value goes in exactly as typed rather than snapped to the slider's step, because the parameter underneath is continuous and the slider is only the usual way to reach it. The audio band edges take hertz the way you would write them down, so 1.2k is understood as well as 1200.

FINDING YOUR WAY AROUND

What the transport can do depends on what the channel is looking at. A file has a timeline, so it plays, loops, seeks, mutes and shuttles. A generated source — pattern, text, synth or a feed from another channel — has a clock but nothing to scrub, so SPD and the deck transport drive that clock and the file controls are greyed out. A camera or a screen capture has neither, so it can be held or let run and nothing else. The panel follows the same rule: PATTERN SYNTH only appears on a channel that is actually a synth, because everywhere else it is a page of controls that do nothing.

Three levels of undoing yourself: any single control resets with a double-click, each section has its own RESET, and RESET FX at the top of the channel column returns every effect on the channel you are editing to default in one press without touching what the channel is looking at — the file stays loaded and the pattern synth keeps its patch. INIT · RESET ALL in the PATCH menu does the whole rig. All of them are undoable with Z.

The eye beside each section switches that section out of the signal path and nothing else. Its controls keep their values and stop having any effect, so shutting the eye and opening it again puts you back exactly where you were. The pills on the rail above the picture are the coarser version: each one switches out a whole stage, which is several sections at once.

BYPASS is a momentary: hold the button, or hold B, to see the source with the whole chain switched out. While it is held the picture carries an amber border and a BYPASS badge, so there is never any doubt about which of the two you are looking at.

SHADER turns a channel into a fragment shader. Paste the image pass of a single-pass shader into the SHADER tab and press COMPILE, or cmd/ctrl-Enter. The uniforms the convention promises are all provided — iResolution iTime iTimeDelta iFrame iMouse iDate iChannel0-3 iChannelResolution iChannelTime iFrameRate iSampleRate — with texture2D and iGlobalTime accepted as aliases and a leading #version line ignored. iChannel0 and iChannel2 can be pointed at another channel, either bus or the finished programme, which makes a shader a processing stage rather than only a generator; iChannel1 is always the shader's own previous frame, so it can feed back on itself. Compile errors appear under the box with their line numbers and the last working shader keeps running, so nothing you type can take the picture down. Multi-pass shaders, the ones with buffer tabs, will compile but only their image pass runs. The code is saved with the patch.

ENGINE RATE decides how many times a second the processing runs, which is not how often your monitor refreshes. It matters because a feedback loop iterates once per rendered frame: on a 120Hz display a patch evolves twice as fast as it does on a 60Hz one, and so do the strobe, the field parity, the flow store and the phosphor trail. Pinning it makes a patch look the same everywhere and match the offline render. CAPTURE RATE sets the frame rate REC and RENDER work at.

Where the picture does not reach, the raster is blanking, and blanking is black. Move the framing or turn up SHAKE and part of the frame has no source in it; every stage after that point works on the whole raster and has no idea where the picture ends, so a colouriser would paint the empty strip a flat colour and it would read as a light leak at the edge. The coverage now travels with the picture in the alpha channel, from the framing pass through every stage to the display, which cuts it back to black. The feedback loop can still carry picture out into the blanking, because a real one does.

VIEW shows or hides any part of the interface — the sidebar, the chain rail, the transport bar, the mixer strip, the bend pads and the dock — with PICTURE ONLY stripping the lot in one press and the same button putting it back. What you choose is remembered. Every fold control on the layout is the same control now: a caret on the left of the thing it folds, which rotates when it is closed.

The top bar holds five menus \u2014 PATCH, SOURCE, ENGINE, OUTPUT \u2014 and everything you touch mid-performance stays out in the open: the preset list, RANDOMIZE and MUTATE, BEND and MOD to fold those panes in and out, and MULTI, BYPASS and REC on the right. POP OUT and FULL live in the OUTPUT menu with the stills and the render, since they are all the same question: where the picture goes. The logo opens the live build in a new tab and the version number opens the source.

RANDOMIZE has a small caret beside it that decides what a roll is allowed to touch. THIS CHANNEL rolls only the channel you are editing and leaves the other three alone, which is how you build a mix one channel at a time; ALL FOUR rolls each of them separately so they come out different from each other; FOLLOW LINK is the old behaviour, where LINK decides. Under KEEP: SOURCE holds the pattern synth and the framing still, so whatever you have loaded or built survives and only the processing is rolled; MODULATION holds the routes and the LFOs; OUTPUT + CHAIN holds the mixer, the display, the overlay and the stage order. MUTATE obeys the same settings, and the choices are remembered between sessions.

The panel is in two zones, with the mixers themselves on the strip under the picture rather than in the sidebar. CHANNEL · SIGNAL PATH holds everything belonging to the selected channel, in the order the signal actually travels — source, framing, frame store, feedback, then the reorderable stages, then the keyer — and it is the only zone you can rearrange, by dragging the handle on the left of a section. FOLLOW CHAIN in that zone's header re-sorts it to match whatever order you have dragged the stages into on the rail above the picture, and RESET puts it back. MASTER OUT is pinned at the bottom. Above all of it is the filter: press / and type, and the panel narrows to whatever matches — the parameter name, its section, or the body of its help text, so “roll” finds V ROLL and a phrase from a description finds the control it describes. Two chips beside it answer the other two questions you have while playing: MOVING shows only what something is currently driving, CHANGED shows only what you have moved off its default.

Hover any parameter name and you get a description of what it does and enough of the mechanism to know why it behaves the way it does. The same works on section headers, mode buttons, the bend pads and the menus. To reset one control, double-click its slider or press the that appears when you hover the row; shift-clicking that takes it to the bottom of its range instead. RESET at the top of a section does the whole section, INIT does everything. Sections in the channel zone drag by the handle on the left to reorder, and the order is remembered.

IF SOMETHING GETS STUCK

Four buffers feed themselves: the feedback store, the flow stage's frame store, the phosphor persistence and the thirty-frame ring behind ECHO. If a bad frame lands in one it circulates indefinitely and will sit there until you reload. FLUSH BUFFERS under ENGINE empties all four and restarts the sync model, without touching a single parameter.

KEYS

/ filter the panel   Space randomize   M mutate   Z undo   shift+Z redo   19 presets   shift+18 snapshots   0 flush buffers   B bypass (hold, or hold the BYPASS button)   F fullscreen   S still   shift+R record   P play/pause   V multiview   D mod page   H this help

Hold Q W E R T Y for the six bend pads. 0 is the panic key: it empties every buffer that feeds itself — the feedback store, the flow stage, the phosphor and the frame ring — without touching a single control, which is the way out when a bad frame gets caught circulating.

Your patch, your snapshots and your take are saved to this browser every few seconds, so a reload or a crash picks up where you left off. Press Z straight after opening if you would rather start clean.

OUTPUT

STORE under PATCH saves everything you have set up as a named preset, kept on this machine and listed under SAVED alongside the built-in ones; DELETE removes one. SAVE FILE and OPEN FILE move a patch between machines. REC is the realtime one: it captures the performance as it happens, on any patch including a generated one, with whatever the audio-reactive modulators are listening to, so a piece built against a track records with that track on it: the clip's soundtrack, a loaded audio file, or a live input all go in. With AUDIO set to OFF the recording is silent, and the message when it saves says which you got. MP4 where the browser supports it, WebM otherwise. RENDER is the offline one: it steps a clip on any channel through frame by frame to MP4 (the longest clip sets the length) — every frame processed at full quality, no drops. It carries audio too: the soundtrack of the clip, or the audio file if AUDIO REACT is set to FILE, since that is then the piece's soundtrack. A live input cannot be rendered offline, because there is nothing to re-play; use REC for that. The message when it finishes says which it used. SNAP saves a PNG still at the processing resolution rather than at the size of the pane, so a patch running at 1080p gives a 1920x1080 file however narrow the window is. FULL gives a clean fullscreen feed. POP OUT opens a clean output window with no UI — point OBS at it, or drag it to a second display (double-click it for fullscreen).

Escape, the cross, or a click outside this panel closes it.