Inputs are optional. Click 🎤 / 📷 to toggle live capture on or off; the ⚙ beside each opens its settings (input device — plus resolution & framerate for the webcam). Until enabled, Mic & Webcam nodes with demo: true synthesize input so every patch still runs. A Video node plays a file or URL with loop / stop / ping-pong playback and fit modes zoom / fit / letterbox / stretch / absolute plus an audio output so its soundtrack can feed any analyser chain; an Audio node plays a music file and exposes the same level/bass/mid/treble/beat analysis as the mic, plus progress (browsers need one click before sound can start). Audio & Video nodes carry a seekable progress bar (click to skip), the Audio node estimates BPM (shown on the node, exposed as a 60–200→0..1 signal), and an EQ Bands node splits any audio into 8 log-spaced band signals. The File Playlist pane (far left, collapsible) holds your media files — add via +/📁 or drag-and-drop, reorder by dragging, ⏮/⏭ or double-click to choose — and a Playlist source node plays its selection with pause, seeking, and both video and audio outputs. Sound only reaches the speakers when a node's audio output is wired into the Output node's audio input — combine streams first with an Audio Mix node (blend/max, balance, plus its own level/bass/beat analysis of the mix). Texture chains combine with Video Mix (formerly "Mix" — old scripts still load). Dedicated VideoPlaylist / AudioPlaylist nodes hold an ordered list of clips — each with its own mode and repeat count (0 = forever) — and drive a Video/Audio source through the purple ctl cable, auto-advancing and wrapping. Add clips by URL, file picker, or drag-and-drop straight onto the node; drag rows to reorder — no playlist file needed.
Chains. Drag from an output dot to a compatible input dot. One output can feed many inputs (split); a Mix node merges two texture chains (combine). Port colors: audio · texture · signal · boolean · playlist control. Right-click the editor background to add a node right there; the ⇥ sort button auto-arranges all nodes into tidy left-to-right columns, and the − / + zoom controller scales the whole editor (click the percentage to reset).
Pins. Drop any cyan signal (level, bass, beat, motion, LFO, video/audio progress…) onto any numeric parameter of another node — that parameter is then driven live across its full range. Shape signals with Gain (scale/offset/smooth) or Range (input & output min/max windows with a choice of interpolation curves and a live mapping graph), and fan one signal out tidily with Clone (1 → 4 outputs). A Threshold node turns any signal into an on/off boolean (trigger level, hysteresis, invert) — and every checkbox parameter is itself a pink boolean input port, so you can beat-gate a mirror, wireframe, invert, demo switch… A Formula node applies math functions (sin, sqrt, quantize…) or evaluates a freetext expression over inputs x, y and time t with all of Math in scope.
Parameters. Drag the sliders, or click a value label to type an exact number. Hue parameters show a color swatch — click it for a visual picker; color parameters (e.g. on Solid) use a full picker. Click a node's id badge to rename it (wires and script follow along). Many texture nodes offer a transparent checkbox — the background stays see-through (trails use alpha-fade) so layers composite cleanly through Video Mix. Range can drop its limits entirely via its clamp checkbox; Model3D offers origin (base rotation), position, and an applyHue switch that leaves textures untinted.
Fractals (their own "Fractal Generators" group in the add menus). Julia & Mandelbrot escape-time sets (pin bass/mid to cx/cy for audio-morphing), Newton root basins of zᵖ−1 (power, spin, convergence shading), Sierpinski gasket / carpet (recursive depth, spin), FractalNoise (domain-warped FBM), a Tesla generator (branching lightning bolts — pin the beat to energy for strikes on the beat), and IFS chaos-game attractors (sierpinski, fern, dragon, tree, maple, spiral) with auto-fitted bounds and pinnable jitter/spin.
Camera effects. BgRemove cuts you out of the background: step out of frame, click 📸 capture background on the node, step back in — the subject composites over any chain via Mix. ChromaKey keys out green/blue/magenta screens; Edges draws glowing Sobel outlines.
3D (three.js). Tunnel3D wraps any texture chain around an endless perspective fly-through tunnel (speed, twist, wobble, sides all pinnable). Model3D has a shape / gltf source toggle: shape mode offers knot, cube, sphere, torus, icosa, pyramid, prism, star, geodesic dome, heart and a strut-built tesseract (with a sides option where it applies); gltf mode shows the URL field and 📁 loader. Spin, scale, origin, position and distance are audio-pinnable, optionally texture-mapped by its input chain. three.js is bundled locally in lib/ (works offline) with CDN fallback.
Templates. 💾 saves the current patch under a name — it appears in the preset dropdown as ★ and persists in this browser. 🗑 deletes the selected template.
Script. The bottom-right panel is the patch as code, regenerated live from the editor. Edit it and press apply (Ctrl+Enter) — the same language works in both directions, and you can copy/paste whole patches.
Settings. ⚙ settings holds app-wide options: output resolution (Auto = fit the window, or fixed 360p–1440p — the display and pop-out render at exactly this size, letterboxed), a frame cap, editor-hint visibility, and pop-out on top (uses Chromium's always-on-top Document Picture-in-Picture window when available). Everything persists in this browser.
Layout. Drag the splitters to resize the panes; the buttons on them collapse the editors / the script panel. ⧉ pops the visualisation out into its own window — the main output collapses (editors expand) while popped out, double-click the pop-out to toggle fullscreen (its mirror runs on the pop-out's own frame loop, so fullscreen keeps rendering even when this window is hidden), and closing it brings the output back here. Custom node types can be added in js/extensions.js.
Cables: click to select, Delete to remove. Feedback cycles are allowed (evaluated with a 1-frame delay).