Palinopsia · Opsia · a visual instrument
Palinopsia is a WebGL2 compositor you perform, not a tool you wire. It stacks layers of generated and treated video, plus a layer of sound, masters the whole picture through a fixed set of stages, and lets you steer every parameter live: by hand, by an internal modulation brain, over OSC and MIDI, from the other instruments of a dataflou mesh, from an AI agent on the same computer, or with your own body. With Ableton Link, it keeps time with your music.
Free and open source, for Windows, macOS and Linux. The name is the persistence of a visual image after the stimulus is gone.
The latest release for every platform. Built by CI, unsigned for now.
Windows
Installer (.exe) or a portable single file. x64.
Get the latest ↗SmartScreen may warn on an unsigned build: More info → Run anyway.
macOS
A .dmg for Apple Silicon (arm64). On an Intel Mac, build it from source.
Get the latest ↗Not notarized: drag Palinopsia into Applications first, then run xattr -cr /Applications/Palinopsia.app once in Terminal (or open it, then System Settings → Privacy & Security → Open Anyway).
Every frame below was built by the app alone, no external footage. Pick a recipe from Generate and it composes the whole session for you.















Palinopsia is one instrument with several rooms, each reached by a single key.
The image itself synthesizes audio in real time, inside the app, no external software. Eleven voices (a scanning spectrogram, the frame as an oscillator, grain clouds off motion, struck edges, raster audification, SSTV, resonant filters, read heads that play the picture as data, a chord bank, a Collage's own films heard as a tuned sound collage through a Ring bank inspired by the S-4, and an Assemblage's own sound, cut with the picture) with a shared reverb/delay tail, an output EQ with presets, an effects sequencer, and a key sequencer that composes the key of the whole instrument over time. And every voice can take its place in the room : around a speaker dome, or as objects for SpatGRIS. Right-click the Sonify button to open the page in a window of its own.
An auto-pilot over your scene bank. Tag each scene, then let it wander: weighted or climate-shaped selection, morph or cut transitions, and slow durational long-forms (Burial, Long-Take, Frame-Weave) that reshape the whole run over minutes. Right-click the Seq button to keep it in a window of its own, on another screen.
Eight modulators (LFOs, envelopes, chaos, a step sequencer with conditional steps and swing, Euclidean and Turing patterns, audio and vision followers, a body follower) and sixteen macro knobs (their row shows with the MACRO button, and they play hidden too) write on top of your values every frame. Dial a value by hand, then let a shape move it. Shape a binding with ⌇ : combine it with other modulators, keep only the real hits with a threshold, or integrate it so each beat pushes the value a notch and leaves it there. An audio modulator can even listen to a film's own soundtrack, where its playhead is. Everything answers to MIDI Learn and OSC too.
The home of A and B. Each layer's column shows how its two sources meet : the mode and a crossfader from A to B, a white line where the sound pushes it, the hue harmony (B takes A's colors, or their opposite) with swatches, and the coupling to the sound with a live meter, above opacity, speed and blend. Each column says whether its layer is active, and why not; one ≈ coupling switch pauses every layer's coupling at once.
Fullscreen to any display, projection-map with a keystone editor, and record the take in real time, DXV3 included (it keeps rolling when you leave the page). Send over NDI, Spout, Syphon or HIVE (and play any NDI source on the network as a layer), go under a fulldome with a 3D simulator, span a custom composition across several projectors, run it as a self-healing installation, and push the picture's color into the room over DMX / WLED, all behind a built-in flash-safety limiter. The page opens inside the app; right-click the Output button to open the output, or the whole page, in a window beside the controls.
Write your own generators and effects in ISF. Start from a template, from a copy of any built-in shader, or from an ISF file found anywhere. It compiles as you type into a live preview, the shader's controls right there to try it; the last version that worked keeps playing, and a mistake is marked on its line. Save it and it joins the source and effect menus under my shaders, like any built-in; save again while it plays and it changes live. Sessions carry the shaders they play, so they open the same on another computer.
Open a Resolume composition and its layers, clips, effects and dashboard become columns of a pin board whose rows are Palinopsia's signals: modulators, Macro knobs, the audio, picture and body features, any OSC address. Click to connect, set an amount, smooth it, and recall scenes as Resolume columns. 8 snapshots, a lock, and a dice for happy accidents.
Turn on the dataflou section of the Connect tab and Palinopsia becomes a node of the mesh its sibling instruments speak. Nodes on the network find each other on their own, show what they publish and what they take, and wire any source to any destination, both ways. Palinopsia shares what it senses (sound, picture, body, modulators) and takes Macro knobs, layers, the feel macros, scenes and tempo.
Enable Ableton Link in the Connect tab and Palinopsia joins Live, DJ software and every Link app on your network : one tempo that anyone can change and everyone follows, and one bar. Modulators synced to the BPM and Sonify's sequencers land on the same downbeat as the music, a LINK badge beside the BPM counts the apps linked, and a latency setting keeps the picture on the beat through a slow projector. With start / stop sync, Live's play starts Palinopsia's MIDI clock and sequencers on the bar, and Palinopsia's play starts everyone.
Turn on Agent (MCP) in the Connect tab and an AI agent on the same computer can read what is playing, look at the output, set sources, controls, effects and scenes, drive anything that has an OSC address, and write new shaders, seeing each one run before handing it to you. Every change it makes is one Ctrl+Z, your Inspector stays where you left it, it cannot touch the Flash safety, and only your own computer can connect. Off until you turn it on.
Under Layer 4, the Audio Layer plays sound : two slots of sound files, live inputs or NDI® sources, each with its own volume, pan and mute and a mix between them, through Sonify's output, Sonify on or off. World W sets the mood of the whole instrument (its atmosphere, its film character, how the layers couple to the sound), says what it will change before you apply it, and fades in and out with its World amount. Body B reads the room: turn a webcam on (opt-in) and MediaPipe reads your hands (down to each finger), pose, face and silhouette into the instrument. Route any tracked feature, any movement quality or the motion field into a modulator, or author gesture rules that fire actions and OSC: hold up a fist or a peace sign, cover a screen zone with your shadow, or trigger on presence when someone walks into frame. A rule can fire some 250 actions, from a layer's mute to the next master chain, a Generate theme or the key, and with Pinch = click each hand's pinch paints on the picture like the mouse. Assemble E is a concatenative video editor: point it at a folder of films and it edits a matching sequence live, as a layer source. And Collage is a source: a wall of films cut up like torn paper, every piece its own film, that you can modulate, run through effects and hear in Sonify.
A few ideas that make everything else click into place.
That is the instrument. The long list of sources, effects and nodes is vocabulary you learn over time. The shape of the thing does not change.
Get sound out of it?
Press S for Sonify. The image itself synthesizes audio in real time, inside the app, no external software. The probes you see drawn on the picture are the instrument.
Play a sound file or a live input under the layers?
In the layers tab, under Layer 4, sits the Audio Layer (AU). Each of its two slots, A and B, takes a sound file (drop one on it from your desktop), a live input (a microphone, or your interface's inputs, one channel or a stereo pair) or the sound of an NDI® source on the network. Each has its own volume, pan and mute, with a mix between them; the ▶ between A and B starts both files together. It plays through Sonify's output, Sonify on or off, so the output EQ, the recordings and Space have it. Pick Audio Layer as the Connect tab's input and everything that reacts to sound reacts to what it plays. A session never turns a microphone on by itself: a saved live input comes back with an open button.
Make a collage of my films?
Pick Collage as a layer source and open a folder in the Inspector: every piece plays its own film. Bind a modulator to cuts and the wall grows and shrinks a piece at a time; turn on FX before shapes to run the source's effects on the films while the seams and torn paper stay crisp; and turn on Sonify's Collage voice to hear them, tuned to your key.
Paint on the picture with the mouse?
Put Marbling on a layer and click the preview: a click drops paint right where you clicked, holding pours, dragging leaves a trail of drops, and the Inspector's click tool switches to a comb or a swirl. It lands where you click on the big preview too, through the keystone and on the dome. Each gesture is one undo and is kept with the session. On the Body page, Pinch = click lets each hand's pinch do the same, two hands at once.
Move an effect from a layer to the master?
Drag its chip onto the other rack (hold Ctrl to copy instead), or right-click it for Copy to Master FX / Copy to Layer N FX. Its modulation follows a move. A rack that can't host an effect says why.
Keep a master chain I like?
Right-click the Master FX strip, choose Save chain as preset… and give it a name. The chain as it plays is kept on this computer: every effect with its settings, which ones are on and how wet, and the Vibe and Context. It comes first in the chain presets… menu under my chains, in Ctrl+K and in the next / previous chain actions; the same right-click renames or deletes it.
Write my own shader?
Press Alt+E (or { } in the bottom bar) for the Source Editor. Start from a template (a generator, an effect, a feedback), from a copy of any built-in shader, or from an ISF file. It compiles as you type into a live preview with the shader's controls beside it; a mistake is marked on its line while the last version that worked keeps playing. Save with Ctrl+S and it joins the source and effect menus under my shaders, kept in a Shaders folder; save again while it plays and it changes live. A session carries the shaders it plays, so it opens the same on another computer.
Change scenes or sessions during a show without a jump?
Set the Morph time in the transport. Scene recalls, Randomize, the sequencer, loading a session, New and Generate all move into the next composition over that time, live: the same sources ease their every value, anything else crossfades layer by layer, and a new layer only fades in once it is ready. At Morph 0 a session holds the picture still while it compiles, then dissolves.
Build a set from sessions I already have?
Open ▾ → Add a session as scenes… (or right-click Load for the session picked in the list) brings another session into the one you are playing, as a scene named after it. If it has scenes of its own, Palinopsia asks whether to add them too, as Name_Scene1, Name_Scene2 and on. Your session keeps its own sound, pins, dome and settings; one undo takes it all back, and Save keeps it.
Find an effect, a preset or a control fast?
Press Ctrl+K (Cmd+K on a Mac) and type. One palette searches the effects, sources, presets, master chains, Generate themes, pages and commands, and every parameter of what is loaded; several words narrow it (mosh l2). Enter puts a source in the selected slot, an effect in the selected rack, a preset onto the unit playing its shader, or shows a parameter in the Inspector and flashes it. Each pick is one undo, Esc closes it, and your recent picks come first.
Keep a control the same in every scene?
Right-click it and choose Persistent. From then on no scene, Randomize, Variation, Generate, World or preset changes it, while everything around it moves, and its modulation stays with it. A thin gold bar marks it, and the scene bank lists everything persistent. Right-click a whole layer to make all of it persistent (a gold border marks it), an effect's chip to keep that effect at its place, a source card to keep its slot's source and effects, or a modulator card to keep its settings. To write what plays now into every scene instead, choose Set in every scene from the same menu; one undo brings the scenes back.
Use a MIDI controller?
Press L to arm MIDI Learn from anywhere, click a control (it pulses), then move a knob or hit a pad. It stays armed, so you can map the next control right away. For an action with no control on screen (a layer's mute, the next master chain, a Generate theme, a step sequencer's fill), pick it in the MIDI section's learn list, then hit the pad.
Sync it with Ableton Live?
Press A for the Connect tab and enable Ableton Link. Palinopsia joins every Link app on your network, Live and DJ software among them: the tempo is shared (anyone changes it, everyone follows), and so is the bar, so modulators synced to the BPM and the Sonify sequencers land on the same downbeat as the music. A LINK badge beside the BPM counts the apps linked. If a slow projector puts the picture behind the beat, raise the latency setting. To start and stop together, turn on start / stop sync here and Start Stop Sync in Live's Link/Tempo/MIDI preferences: Live's play then starts Palinopsia's MIDI clock and sequencers on the bar.
Play it with my body?
Press B for Body. Turn a webcam on (opt-in, off by default) and MediaPipe reads your hands, pose, face and silhouette: route any tracked feature into a modulator (each finger's curl and pinch, the hand's roll, how near it is), or author gesture rules that fire actions and OSC. Ten hand shapes fire rules, each hand on its own (fist, open, point, peace, thumb up, thumb down, ok, horns, call, gun); cover a screen zone with your shadow to trigger it, or fire on presence (someone walking into or out of frame) for an installation. A rule picks what it fires from some 250 actions in a searchable list. To keep the camera and the rules on another screen, right-click the Body button for Body in a window.
Drive it from another app?
Every parameter is an OSC endpoint (advertised over OSCQuery), so a companion brain like dataFLOU or hardware like Pandore can play the whole instrument. The picture also streams back out over OSC, so the image can answer the sound. The OSC monitor shows every message both ways, live.
Let an AI agent drive it?
Turn on Agent (MCP) in the Connect tab (A) and give your agent the address it shows (http://127.0.0.1:9311/mcp by default). An agent on the same computer can then read what is playing, look at the output, set sources, controls, effects and scenes, drive anything that has an OSC address, and write shaders, seeing each one run before handing it to you. Every change it makes is one Ctrl+Z, it cannot touch the Flash safety, and only your own computer can connect. It stays off until you turn it on, and the top bar's AGENT light shows when it is.
Wire it to my other instruments on the network?
Turn on the dataflou section in the Connect tab (pick a name and a universe). Every dataflou node on the network appears there with its parameters: wire one of theirs to Palinopsia, or Palinopsia's sound, picture or body features to one of theirs, and watch every connection on the mesh. Wires come back on their own when a node reappears.
Drive Resolume with it?
Press K for the Resolume mapper, open your composition (.avc), and pin Palinopsia's signals to Resolume's controls. Turn on OSC input in Resolume's preferences; the Resolume section of the Connect tab says when it is sending.
Project in a dome?
On the Output page, turn on Fulldome: Palinopsia renders a square domemaster (front at the bottom), fits a flat picture as full dome, panorama or screen, and shows it in a 3D dome simulator. Everything downstream (projector, NDI, Spout, Syphon, recording) gets the dome. Under full-dome fill, rotations turn around the zenith and falling things fall down the walls, and the Flash safety tightens while the dome is on.
Go fullscreen or record a take?
Press O for the Output page: pick a display, set the resolution, and record (DXV3 records in real time, even the 4096² dome master). The take keeps rolling if you leave the page, so you can tweak parameters mid-recording, and it carries the Sonify sound when it plays. The page opens inside the app; to keep it beside the instrument or on another screen, right-click the Output button and choose Output page in a window (its ⇲ puts it back). The same menu opens the output itself in a window beside the controls.
Open a session on another computer?
When a session opens and some of its films or sounds are gone, a banner names them: Relink… finds them by name in a folder you pick. Before you travel, Open ▾ → Session media… lists every file the session uses, and Collect into the session's folder copies them all beside it, so the session moves in one piece; save to keep. Your own shaders travel inside the session.
Undo a mistake, or calm a runaway feedback?
Ctrl+Z / Ctrl+Shift+Z undo up to 100 steps. Press 0 to flush every self-feeding buffer at once, or H to freeze the output on the current frame while you sort things out.
When you want the full vocabulary (47 sources, 56 effects, 28 native nodes, 125 Generate recipes, the modulation matrix, the sequencers, the 11 Sonify voices, the Audio Layer, Ableton Link, the Agent and the dataflou mesh), read the complete README, and the 1.3.1 release notes for what changed. To drive Palinopsia from any OSC brain, see the OSC reference. The whole instrument is reachable over OSC, MIDI or the interface, through one write path.
Paint, hands and steps. A release for playing with your hands : paint floated on water that you drop with a click or a pinch, a camera that reads your fingers, and a step sequencer with conditions and swing.
The full list is in the release notes.
The audio update. Sound gets a layer of its own under the four layers of picture, the tempo is shared with Live and every Ableton Link app, and the instrument opens up : write your own shaders, or let an AI agent on your computer play along.
The full list is in the release notes.
The key moves on its own time. A small release for the key sequencer and Sonify's controls.
The full list is in the release notes.
Clean sound, sharp projector. A release for long installations : nothing clicks, the wall stays crisp, and the picture holds a steady frame rate.
The full list is in the release notes.
Sound in the dome. The voices leave the stereo pair and take their places in the room, the way the picture takes its place on the dome.
The full list is in the release notes.
The whole frame. The finished picture played as one, a camera framed and mirrored, an iPhone by cable, a Collage that piles its films up, and an Inspector that explains every control.
The full list is in the release notes.
Points and planes. Points in three dimensions in front of a moving camera, any layer laid on a plane that runs to the horizon, bars that lean and cross, and a fulldome you can play.
The full list is in the release notes.
Data and rhythm. A source of machine-cut marks, a sound voice that reads the picture as data, a Vary for every layer, and the readout that used to stall the frame rate made free.
The full list is in the release notes.
The dome and the grain. The biggest release yet: the picture goes under a dome and over the network, the camera reads movement, the sound gets a key of its own, and every change now morphs.
The full list is in the release notes.