Repository navigation
Releases: filliformes/palinopsia
Release list
Palinopsia v1.3.1 : paint, hands and steps
Palinopsia v1.3.1 : paint, hands and steps.
A release for playing with your hands. Marbling floats paint on water, and you play it by
clicking the preview or by pinching in front of the camera. The Body camera now reads
your fingers : ten hand shapes fire rules, and a rule can play almost anything in the
instrument. A new step sequencer brings conditional steps and swing to the modulators.
The points of Lattice, Ash and Particle Drift can turn into ink drops, seeds and torn
paper. Depth AI finally runs, offline, from inside the app, and Body, the Sequencer and
Sonify each open in a window of their own.
New
-
Marbling. A new source : drops of paint floating on water, flat colors with crisp
edges, like marbled paper. Each new drop pushes the paint already there into rings and
lobes, and the fuller the water, the smaller each new drop spreads. Evolve carries it
all on slow currents, with a comb raked across now and then and a swirl drifting over
it, so it moves like a film (at 0 the picture holds still). Drops can land by
themselves, on the beat, or on the sound. Past a points budget the oldest, most
stretched drops dissolve into the water, so it can run all night. Twelve presets, four
new master chains (Marbled paper) and two Generate themes (Marbled Paper, Night Bath).
It holds 60 fps at 1080p and 4K with 500 drops on the water. -
Click the preview to play on it. With Marbling on the picture, a click on the
preview drops paint right where you clicked, holding keeps pouring it, dragging leaves
a trail of drops; switch the click tool to drag a stylus or a comb through the paint,
or to swirl it. It works on the big preview, at any UI zoom, through the keystone and
even on the dome. Each gesture is one undo step and is kept in the session, so the
picture comes back the way you left it. An OSC message can drop paint at a place too. -
Pinch to paint. On the Body page, Pinch = click turns each hand's pinch into a
pointer : pinch to drop paint, hold the pinch to pour, move while pinching to trail or
comb, open your fingers to let go. Both hands at once, mirrored with Mirror, with a ring
on the preview showing where each hand points. -
A step sequencer. A new modulator, steps, in the rhythms family : sixteen bars
you draw with the mouse, played one after the other on the clock (free, or on a BPM
division that keeps to Ableton Link's beat). A click turns a step into a rest.
Right-click a step to choose when it plays : always, by chance (10 to 90 %), on some
passes only (1:2 plays every other time through, 2:4 the second of every four...), only
in a fill or only outside one, only the first time through or every time but the first.
Hold FILL for a fill (Shift-click keeps it on, and a Body rule or a MIDI pad can
switch it). SWG pushes every second step late for a looser groove, GLIDE slides
from one value to the next, LEN sets how many of the sixteen steps play, and a step
that does not play can hold its value or drop to 0. Little marks under the steps show
their conditions. Recall a scene with another pattern and its passes count again from
its next step 1. The dice and the stepped Generate themes use it too. -
Points that are not pills. Lattice, Ash and Particle Drift have a new
irregular control : at 0 the points are the round dots they always were, and as
it rises each point becomes a shape of its own, no two alike : a soft wobble first,
then ink drops, seeds and pollen with rounded lobes, scraps of torn paper with ragged
edges and thin slivers, each turned its own way. evolve lets the shapes morph and
tumble slowly (0 keeps them still). It works on every Lattice form; in Particle Drift
the head takes the shape and its trail thins to a wisp behind it; Ash's flecks stay
soft. Nine new presets show it (Seed
floor, Pollen globe, Spore galaxy, Pollen, Ink in water, Paper scraps, Torn confetti,
Ink drops, Seed fall), and the Orbit and Murmuration themes sometimes use it. -
Every source and effect has at least ten presets. Silhouette gets its first
(cutout, matte, shadow and hole, some leaving echoes), and Shatter, Crawl, Store Zoom,
Cloud Study and 14 older pieces are filled up : Grown, Veins, Slime Mold, Fluid,
Audio, Metamorph, Differential, Aperture, the Finalizer and the five recipe nodes
(Remap, Luma Blur, Gooey, Matte, Lookup). Picking one Slime Mold, Veins or Fluid
preset after another no longer keeps the last one's zoom or ground. -
A body plays the whole instrument. A Body rule can now fire some 250
actions, found in a searchable list : a layer's mute, solo, source, A↔B, blend, freeze
and punch, the triggers of the effects you loaded (a Field Store's grab), the chains,
scenes, Worlds and Generate themes, the Meta knobs, the modulators, the Feel, the tempo
and the key, the Audio Layer and the output. A MIDI pad can learn any of them too (the
MIDI section's learn list). -
Hand shapes. The Body camera now reads each hand's fingers : a curl per finger,
the thumb's pinch to each fingertip, the hand's roll as you see it, which way the
palm faces and how big the hand looks (how near the camera it is), 24 new features
in the monitor's HAND SHAPE group, for modulators and over OSC. And ten shapes to
fire rules, each hand on its own : fist, open, point, peace, thumb up, thumb down,
ok, horns, call and gun. A shape fires once when you make it and hold it a moment,
and again only after you let it go. The camera preview names the shape each hand
holds. -
Body, the Sequencer and Sonify can each open in a window of their own, like the
Output page : right-click their button, Body in a window, Sequencer in a
window or Sonify in a window. Keep the camera and its rules, the auto-pilot, or
the sound on another screen while you play. Closing the window closes the page, ⇲
puts it back in the app,B,QandSbring the window forward, and the next time
the page opens in the app as usual. -
Your own master chains. Right-click the Master FX strip and choose Save chain as
preset… : give it a name, and the chain as it plays now is kept, every effect with
its settings, plus the Vibe and Context. Your chains come first in the chain presets
menu (my chains), in Ctrl+K and in the next / previous chain actions, and the menu
shows the name while one plays. The same right-click renames or deletes them. -
Add a session as scenes. 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 scenes : what it opens on becomes a scene named after it, and when it
has scenes of its own, a question asks whether to add them too, as Name_Scene1,
Name_Scene2 and so on. The session you are in stays as it is (its sound, its pins, its
dome, its settings), one undo takes it all back, and Save keeps it. A set built from
the pieces you already have.
Changed
-
Marbling's comb and swirl use far less of the computer. At 1080p the water now
carries about half the points for the same picture (a 4K picture is unchanged), slivers
combed thinner than half a pixel dissolve into the water, and the points budget really
holds : at evolve 1 with comb and swirl the water used to run away (up to three times
the budget) and move only a few times a second; now it stays near the budget and moves
smoothly at 60 fps. With comb and swirl at full the work per frame is halved at 1080p. -
A lone hand is on its own side. With one hand in view, a right hand is now R
(it used to always be L), and it keeps its side while it stays in view. With two
hands, nothing changes.
Fixed
-
The euclid card no longer shows a scrollbar when its clock is on a BPM division.
-
Depth AI works, and works offline. The header's depth: AI now runs a depth
model that ships inside the app (the download grows by about 66 MB) : no internet
needed, nothing downloaded, ever. It never started before (the app refused to fetch it
from the internet). It reads the picture on the graphics card, on a thread of its own,
so the picture keeps its 60 fps (measured with it on, on the RTX 4070 laptop). A new
AI detail in the same menu sets how finely it reads the picture (252, 392 or 518
px), and the depth map holds steady instead of brightening and darkening each time
something enters the frame. Building from source : runnpm run fetch:depthonce. -
Right-click menus open right against their button. The Output button's menu
opened well above the button; it now opens just over it, lined up with it, and every
right-click menu fits its window from its real size, at any UI zoom. -
The A and B letters of a layer are centered in their buttons (and the
background's BG, and the Audio Layer's A and B). -
Small dropdowns in the Inspector show their whole choice. Luma Blur's Quality
("smooth"), Gooey's Key ("brightest channel"), Matte's, Corrode's, Toile's,
Faultline's and Decimate's were cut; they are now as wide as their longest choice. -
The Sequencer's resize edges follow the pointer at any UI zoom (the inspector
column and the live monitor ran ahead of the hand at 125 %). -
The Assemblage source's Inspector has proper margins. Its rows no longer touch
the panel's edges. -
The chain menu names the chain that plays. After a Body rule, a MIDI pad, a scene,
a Generate or the dice changes the master chain, the Master FX menu shows that chain
(or nothing, when the effects match no chain) instead of the last one picked by hand.
Opening an older session
Everything opens as before : irregular is 0, so Lattice, Ash and Particle Drift look
...
Palinopsia v1.3.0 : the audio update
Palinopsia v1.3.0 : the audio update.
Palinopsia listens to more than a microphone now, and plays along with others. A new
Audio Layer plays sound files, live inputs and NDI® sources beside Sonify, a film's own soundtrack or
any sound file can drive the picture, Ableton Link keeps the picture on the music's
beat, and a new Assemblage voice sings your edits. Persistent controls, effects, sources
and modulators hold through every scene change, the Mixer becomes the home of A and B,
the layer strip is a third shorter, modulations can be shaped, Ctrl+K finds anything,
and you can write your own shaders, or let an AI agent play along. Two clouds painted in
oil, four new Lattice forms, a real codec datamosh and four effects that keep the
picture in a store join the sources and effects. From this version Palinopsia is free
software, under the GPL.
Fixed before release
Everything new in this version went through two full audits before release. Among the
fixes you may notice :
- Coupling behaves. A cut on a held note no longer parks the layer on B, the gate's
tightness hardens its edge as it says (and no longer flickers between A and B when the
sound hovers on its threshold), the band feature listens to the band you pick, and a
recalled scene no longer snaps a drifting layer's mix back. With a harmony set, B no
longer flickers when its hue sits opposite the target. - The dome's alignment grid no longer comes back on its own. It starts off each time
the app opens, opening a session never turns it on, and turning the dome off puts it
away, so it can't end up burned into a show. - A session never turns a microphone on. A live input saved in a session comes back
closed, with an open button; picking an input opens it, an installation opens its
inputs at boot. An unplugged input says lost and comes back with its device, and one
that fails to open while its device is there tries again by itself. Sonify's Filter
line-in is the same : a session, a scene, a preset or an undo never opens it, and
one saved on waits for one click on its button (a dim ring until then). - The BPM box changes the tempo when you press Enter or leave the box, and Escape puts
the old one back : the tempo no longer dips to 20 while you type, and Live and the
others never hear a half-typed one. A typed tempo is one undo step, undo works while
linked (even while a linked app ramps the tempo), and peers coming and going no longer
ask "Save changes?". Escape in any number box now cancels the edit, and so does
leaving a box you emptied. - Ableton Link holds. With other apps linked, the modulators, the grain sync and Sonify
stay on the shared tempo while the scene pad blends scenes saved at other tempos, and
the MIDI clock out follows Link's beat, its Start waiting for the next Link bar, so
your gear's bars line up with every linked app's. The Sonify sequencers no longer stall
when a linked app re-counts its bars as it starts playing. - The Audio Layer : a film dropped on a slot plays its soundtrack, a file with loop
off stops at its out point, New and Generate fade the layer out over the Morph time
(an undo during the fade brings it back), undo covers it (never opening an input), and
a file slot's volume goes to 200 %. Switching Sonify off while it plays no longer clicks. - Persistent holds against everything : the Meta dice, an effect's own dice, the
Finishing dice and reset, Init background, the World amount and the World page leave a
persistent control alone, and the rack dice and Randomize keep persistent effects in
place and deal the others around them. The pos X/Y sliders, the small toggles and the
Vibe palette's color stops can be made persistent too. Swapping a source by hand
unpins that slot's controls. - The World amount fades only what the World changed : below 1 your sliders and
modulators keep working, and 0 goes back to the mood you had. Switching Worlds no longer
fades the layers out and back in. A broken World can no longer crash the app. - Morphs keep the sound. A layer playing the same sound in both scenes plays on
through the morph, and other sounds fade with their pictures instead of being cut. A
FLOW or STEP binding keeps its place through a scene change. - New and Vary on an Assemblage keep its effects, framing, speed and modulation, and
an edit cut from the Inspector can be saved and exported. - The Source Editor no longer saves over the shader you were on when you open another
one, and Ctrl+Z no longer brings that one's code back; deleting a shader that plays
keeps it playing. Saving code with errors keeps the last good version playing, the
preview survives a GPU reset, the editor tells you when your shader was changed
elsewhere (reload / keep mine), and every version written over or deleted is kept in the
Shaders folder's.history. A whole-number control with a wide range is a slider (a long
menu could freeze the app). On a Mac it opens with Cmd+Option+E, so Option+E types
accents again. - The agent changes only what it is asked (an effect's other controls stay where
they are), its undo takes back only its own changes, never yours, it never writes over
one of your shaders unless told to replace it, and turning it off closes every
connection. - The Output. Right-click the Output button : Watch the Output in a window (it was
"Open Output in a window") no longer pulls a fullscreen or spanned output off the
projector; it says why instead. The Output page in its own window keeps Esc, Enter, the
arrows and Delete to itself, stays live while the instrument is minimized, and its edits
count as changes (leaving asks to save). - Clearer panels. Right-click menus are fully opaque and on top, even on a grayed-out
control; a knob dragged to zero no longer sticks to the mouse; grabbing a modulated
slider no longer makes it jump. Number boxes always fit their numbers, the layer's OUT
tabs size to their words (normal · no mask · fb 0.85, the feedback amount never cut),
and the Mixer's coupling takes two lines, the mode then the feature, so "transient" and
"centroid" read in full. - Session media relinks only what is missing and never confuses two files of the same
name or size; copies made on another computer can be made again. - The fulldome panorama's seam stays behind the audience whatever the rotation, and
Space follows the fill offset exactly. The offset sliders have no dead travel, and a
film covers the dome in the Inspector too (Reset clears its fit). - Dropping files : a file dropped on the output window no longer replaces the
show, and a session file opens wherever it is dropped. - Oil Cloud and Cloud Study are picked by hand : Randomize and the Background dice no
longer deal them. On the dome, Oil Cloud is traced at full height again (a wide frame was
cut to about half, soft vertically), and both cost less for the same picture. Lattice's
tunnel shows its far end again, and its galaxy and swell no longer jump after a long run.
The Oil on Canvas, Warm and Cool, Codec Rot and Keyframe Hunger chains keep the scene's
palette mix. - The gate hair is gone (the Finalizer's hair stuck on an edge of the frame) : its
slider and the hair itself. Dust, scratches, the gauge, dirt and burst are as they were. - Codec Mosh no longer restarts, freezes or flashes an old frame; the Assemblage voice
follows key glides and its cut accents ring on the new note; the Ring bank's top
octave no longer whistles; a sound analysis cut short is made again at the next launch.
New
-
Search everything. Press Ctrl+K (Cmd+K on a Mac) and type : a palette finds any
effect, source, preset, master chain, Generate theme, page or command, and every
parameter of what is loaded. Enter picks : a source goes in the selected slot, an
effect in the selected rack, a preset onto the unit playing its shader, and a
parameter is shown in the Inspector and flashed so you can find it. Every pick is one
Ctrl+Z, Esc closes it, several words narrow the search (mosh l2), and with the
field empty your recent picks come first. -
Field Store, a new node : a coarse copy of the picture that never fades, written
only where a key lets it through (the bright parts, the edges, what moves, another
layer, or the layer's own shape). A moving figure leaves hard stamps of itself instead
of a soft trail. Eight modes : trail, color trail, ghost, catch-up, mosaic, reveal
(the picture painted in by what moves), protect (a figure vanishes into what was
there before) and acquire (the first arrivals kept). It captures every frame,
every few frames, in bursts, on the beat or by hand, from 64 to 512 cells across and 2
to 8 bits deep; its stamps can slide away in lattices, and it can hand its store to the
next scene. Ten presets, three master chains (Hard Memory, Sixteen Levels, Strobe
Ghost) and two Generate themes (Field Store, Revealed). -
Shatter, Crawl and Store Zoom, three new effects. Shatter shows motion as
texture : a still is grabbed again and again (at a rate, on the beat or on grab ▸) and
a pattern (checker, lines, bricks, dither, cells, the picture's own darks…) switches
between it and the live picture, so still areas look untouched and anything that
moves breaks into the pattern, without ever flashing as a whole. Crawl colours
each place by how long ago it last changed : motion leaves bands of colour behind it,
and the palette turns slowly through them so the contours crawl. Store Zoom is a
hardware frame store's zoom : one zoom that enlarges and cuts into uneven blocks at
once (or only mosaics in place), tall or wide pixels, a scr...
v1.2.10
Palinopsia v1.2.10 : the key moves on its own time.
A release about the key sequencer and Sonify's controls. The key no longer changes
like a metronome : its free-time Every can be modulated and varied at random. Picture
can choose only among the keys you write. Sonify's modulation now works like the rest
of the app, with numbers that move with it, and the sequencers fold away.
Highlights
- The key sequencer stops keeping time like a metronome. In free time, every
can be bound to a modulator or a Meta knob (its M), and its number moves with it;
vary draws each wait at random around it, from half to twice Every, or a quarter
to four times at full. The wait running shows beside the key. - Picture on your own keys. Picture can choose from the pool, as before, or from a
list of up to 8 keys you write : the picture's color and light pick the nearest
one. Its wheel shows your keys as dots. - Sonify's modulation works like the rest of the app. Its M chips show which
modulators are bound, open the same binding row as the Inspector right under the
parameter (not at the top of the column any more), and clear with a right-click. A
modulated slider's number now moves with the modulation. - The sequencers fold to their headers, and keep playing.
- The Modulation strip's count of bindings sits under its name.
Opening an older session
Everything opens as before : vary is off, Picture chooses from the pool, and the
sequencers are open. A binding made in Sonify swings around the value, as it always did.
Install
| Platform | File |
|---|---|
| Windows | Palinopsia-1.2.10-win-x64.exe (installer) or Palinopsia-1.2.10-portable.exe |
| macOS (Apple Silicon) | Palinopsia-1.2.10-mac-arm64.dmg |
| Linux | Palinopsia-1.2.10-linux-x86_64.AppImage or Palinopsia-1.2.10-linux-amd64.deb |
Builds are unsigned :
- Windows : SmartScreen may warn, click More info → Run anyway.
- macOS (Apple Silicon) : not notarized. Drag Palinopsia into Applications first
(run from the disk image or Downloads, macOS runs a hidden temporary copy), then run
xattr -cr /Applications/Palinopsia.apponce in Terminal, or open it and click Open
Anyway in System Settings → Privacy & Security. The first launch asks for the local
network, and for the camera and the microphone when you use them : accept, or OSC, NDI
and light output stay silent. Screen capture is the one permission macOS never prompts
for : switch Palinopsia on under Privacy & Security → Screen & System Audio Recording,
then start it again. - Linux :
chmod +xthe AppImage, then run it.
Intel Macs (x64) : this release ships Apple Silicon only. On an Intel Mac, build from
source (npm install, then npm run build:mac).
For developers
- A Sonify readout that follows modulation :
LiveNum(sonifyUi.tsx) on the shared
live loop; a live-overlay subscriber can now take anidlecallback, run on the frames
nothing modulates it, to put the stored value back. - Sonify's M chip and binding row are the Inspector's (
useBound,AssignRow); a
chip in a row of its own opens its row through the page'sassignBox(...params). keyEveryis a Sonify mod target whose base comes from the key sequencer
(registerKeyEveryBase), on its slider's log map (everyToPos/posToEvery).Shellfolds withcollapsed/onCollapse.
Palinopsia v1.2.9 : clean sound, sharp projector
Palinopsia v1.2.9 : clean sound, sharp projector.
A release for long installations. Sonify no longer clicks : not the Chord, not the
Collage's films starting, stopping and changing, not a change made to the room while
it plays. The projector can enlarge a picture rendered below its size through a
sharper filter, so a lighter render scale keeps its edges and grain crisp on the wall,
and an empty layer no longer costs anything.
Highlights
- Sharp enlargement (Output → Render scale) : below render scale 1 the projector
shows the picture enlarged, and the plain enlargement softened every edge and grain
speck. Turned on, the projector window enlarges it through a sharper filter : edges,
grain and dust stay crisp, without halos at hard edges. Only the projector's
enlargement changes, never the picture itself or a recording, and it costs next to
nothing. Off by default. - A ¾ render scale preset.
- Empty layers cost nothing : a layer with no source and no effect no longer draws
anything, and the picture stays the same to the last bit. An installation with two
empty layers runs about 4 % faster at render scale ¾.
Fixed
- Sonify no longer clicks. The Chord's notes now move smoothly when its picture
changes, when its number of voices changes or is modulated, and when it is switched
on and off. The Collage voice's films fade in and out whenever they start, stop,
change film, are hidden or come back, and no longer click under a busy, churning wall.
A voice whose mixer filter is engaged no longer clicks when it is switched off. - Nothing clicks when you change the room either. Moving, switching or bypassing an
output EQ band, turning Space or the headphones preview on and off, changing the
output device and switching Sonify off all fade cleanly. Voices moving on a speaker
dome glide from speaker to speaker instead of buzzing. - The Collage voice is smoother and lighter : a modulated film speed, pieces that
appear or disappear and films that switch no longer click, and silent films no longer
cost a decoder. - The Collage voice no longer stumbles : v1.2.8 could refuse a film's fade a few
times an hour (a "setTargetAtTime overlaps setValueCurveAtTime" error in the log),
which skipped that moment's update of the voice. - A recalled scene keeps your output EQ and glue, like a preset does.
- Tempo sync is lighter, and turning it off brings back the rate you had set.
- The Collage voice glides with the key sequencer even when the scale changes size.
- The key sequencer's Picture mode no longer narrows onto a picture nobody is
looking at. - An imported speaker setup with a wide gap no longer silences a voice that falls in it.
- The output EQ editor is light and steady : it no longer slows the picture while
open, a click on a point no longer nudges it, the wheel changes Q only over a point,
the app's one-key shortcuts wait while it is open, and it is no longer see-through
while the sound is off. - Sonify's sliders : a Shift-drag no longer undoes what the key sequencer, a Meta
knob or MIDI changed meanwhile, and arrow keys move every slider. - Space : clicking a voice on the room map no longer moves it, the number boxes
behave under Shift, and a mistyped renderer address keeps the one before and tells you. - The Collage wall : pieces added all at once show a film right away instead of
black while their own films load. - The warp feather only softens the projector's edges when the warp is on.
- Performance has a Frame capture row (recording, NDI, Spout, the projector).
- Everything measured at a steady 60 fps with a full Collage wall, every Sonify voice
and Space on a dome.
Opening an older session
Everything opens as before. Sharp enlargement starts off, and a session with empty
layers draws the same picture to the last bit.
Install
| Platform | File |
|---|---|
| Windows | Palinopsia-1.2.9-win-x64.exe (installer) or Palinopsia-1.2.9-portable.exe |
| macOS (Apple Silicon) | Palinopsia-1.2.9-mac-arm64.dmg |
| Linux | Palinopsia-1.2.9-linux-x86_64.AppImage or Palinopsia-1.2.9-linux-amd64.deb |
Builds are unsigned :
- Windows : SmartScreen may warn, click More info → Run anyway.
- macOS (Apple Silicon) : not notarized. Drag Palinopsia into Applications first
(run from the disk image or Downloads, macOS runs a hidden temporary copy), then run
xattr -cr /Applications/Palinopsia.apponce in Terminal, or open it and click Open
Anyway in System Settings → Privacy & Security. The first launch asks for the local
network, and for the camera and the microphone when you use them : accept, or OSC, NDI
and light output stay silent. Screen capture is the one permission macOS never prompts
for : switch Palinopsia on under Privacy & Security → Screen & System Audio Recording,
then start it again. - Linux :
chmod +xthe AppImage, then run it.
Intel Macs (x64) : this release ships Apple Silicon only. On an Intel Mac, build from
source (npm install, then npm run build:mac).
For developers
-
Frame-pacing measurements :
OPSIA_UNTHROTTLED=1 bash tools/test-build.shbuilds
a test copy Chromium never slows down when its window is covered (otherwise a covered
window draws one frame a second and every measurement is meaningless). -
A Sonify drawing loop checks
sonifyCovered()(sonifyUi.tsx) and rests while
another page covers the page; theme colors for a canvas come fromthemeVar(), read
once per theme. -
Fading an AudioParam : schedule it a little ahead and use
setTargetAtTime.
param.valueread on the main thread lags the audio thread (a curve started from it
jumps), and alinearRampToValueAtTimeon a param with no automation event yet ramps
from time 0 (an instant jump).collageVoice.tsfade()does it right. -
A media element's "ready" is not "sounding" : its sound reaches the graph tens of
milliseconds afterplay();CollageVoice.sounding()waits until its position has
moved on. -
Never nudge
playbackRatefor sync : every change restarts the element's
pitch-keeping time-stretch, a click; re-sync with a crossfaded splice instead.
Palinopsia v1.2.8 : sound in the dome
Palinopsia v1.2.8 : sound in the dome.
A release about where the sound is. Sonify's voices can now leave the stereo pair and
take their places in the room, the way the picture takes its place on the dome : each
voice sounds where it plays in the picture, on your own speakers or through SpatGRIS,
the renderer of the SAT Satosphère's 93 speakers. Their places can be played by hand,
by modulators, Meta knobs and OSC, heard on headphones anywhere, and the Collage can
sound piece by piece. Sonify's sound gets finished like a mix (an output EQ to tune
the room, one compressor that holds every film of a Collage at one level, a glue on the
whole), 18 scales, and a key sequencer whose Picture really follows the picture. The
projection warp gets a feather, and the Collage and Toile draw in about half the time.
Highlights
-
Sound in the dome. Sonify's voices can now be placed in the room the way the
picture is placed on the dome (Sonify → ◎ space). Each voice sounds where it plays in
the picture, carried through the fulldome mapping : a voice at the zenith of the
picture comes from above, and turns with the dome when it spins. Or put a voice at a
fixed place, widen it, spread it, set it spinning. Two ways out : Palinopsia pans the
voices onto your speakers itself (rings and domes built in, or a SpatGRIS speaker
setup, up to 32 channels), or it sends each voice on its own channels, with its
position over OSC, to SpatGRIS, the renderer the SAT Satosphère runs for its 93
speakers and 5 subwoofers (ADM-OSC too). The SAT button sets it up for the
Satosphère; recordings keep the stereo mix, which is also the stereo backup the
venue asks for. -
Play the space. Every voice's place in the room can be moved by a modulator, a
Meta knob or OSC : click a voice in the space view for its sliders and their M. A
modulator on the azimuth spins a voice round and round the dome. -
Hear the dome on headphones. 🎧 renders the speaker layout (or SpatGRIS's objects)
around your head in stereo, so a dome piece can be prepared anywhere. -
The Collage, piece by piece. The Collage voice's pieces can each be a sound of
their own, coming from where the piece is on the dome : a wall of films becomes a
room of films. -
Satosphère in one click (Output → Fulldome) : a 210° domemaster at 4096 × 4096,
the whole picture over the whole dome, NDI at 60 fps, and the voices as objects for
the venue's SpatGRIS, exactly as its guide asks. -
An output EQ for Sonify, to tune the room (Sonify → mixer, under the FX tail) :
twelve bands after everything Sonify plays (low cut, low shelf, eight bells, high
shelf, high cut), each with its own Q and a slope of 6, 12, 24 or 36 dB per octave.
A small curve and two meters on the card; ⤢ edit opens a large editor with the
live spectrum behind the curve and every point to drag. Input and output gain with
meters, a soft ceiling under 0 dB. It plays to the speakers only (recordings stay
as the piece), and presets and the sequencer leave it alone. -
A windy film, tamed (Sonify → Collage) : films in turns the films down before
the resonators, hp and lp filter every film (the wind's rumble, the crackle),
and ring in sets how hard they drive the Ring bank, so a hot recording rings
without distorting. -
12 or 24 dB/oct for the Collage voice's filters (the chip beside hp and lp), and
the Prism reverb's crossover and the Collage Ring bank's cutoff read in Hz. -
One level for every film (Sonify → Collage → comp) : one compressor on all the
films together, never one per film, so it costs next to nothing. A loud film comes
down, a quiet one comes up a little; at full, two films 26 dB apart sit 6 dB apart. -
Glue for the whole mix (Sonify → mixer, under the EQ) : one knob, five voicings
(clean, warm, punch, bite, slow), after the EQ and before its ceiling, with the
reduction shown live. -
The Chord's number of voices can be modulated : an LFO or a Meta knob walks the
chord from 2 notes to 16, re-spreading it at each new count. -
18 scales for Sonify and its key sequencer, the full set of Berklee's scale
reference : harmonic minor, mixolydian, locrian, the major pentatonic, the two blues
and the two diminished join the others. Pivot now walks all seven modes of a key. -
Dial a Sonify slider finely : Shift-drag moves any of them ten times slower, and
the Collage's filters and levels can be typed (4250,4.2k). The Ring bank's
controls grey out while its wet is 0, so it is clear they wait for it. The cheat-sheet
(?) lists Sonify's gestures. -
Feather for the projection warp (Output → Mapping) : the warped frame's edges can
fade into the black over up to 200 projector pixels, rounded at the corners.
Fixed
-
The key sequencer's Picture really follows the picture. A frame's overall color
is mostly its footage's cast and barely moves, so a piece used to sit on one or two
roots (a warm one on C, G and D). Picture now reads the picture against the piece's
own colors and light over the last 40 seconds or so, spreading them over every key
and mood : the root walks the circle as the colors shift. The new range sets how
far (0 = the plain color wheel, as before). -
The Chord's spread opens both ways. Raising it used to pull the chord to the left
(a bright sky up to 19 dB); its notes now fan out in mirrored pairs and stay centred
on whichever notes are loud. -
Switching Sonify off really stops it. Each off and on used to leave the previous
engine running unheard in the audio thread, the whole last patch, until the app was
closed. It now ends. -
Space on headphones no longer distorts. The binaural mix ran almost 8 dB hotter
than the stereo one and the sound card clipped it (worst on dense films, like wind).
It now plays at the stereo mix's level, with a limiter after it. -
The output EQ's points drag again, at any UI zoom : a point dragged across sets
its frequency, up and down its gain, the wheel its Q. (Only the wheel
worked when the interface was zoomed.) -
Space, easier to play : drag any number up or down, drag a voice's dot on the
room map, see every Collage piece playing as a small pink dot, hear it on
headphones from a choice right under the output, and find each voice's M under a ▸. -
A keystoned projector edge no longer steps. A nearly vertical side of a warped
frame came out as a staircase of very long one-pixel steps, read on the wall as long
lines down the sides. Every warped edge is now anti-aliased, crisp at feather 0. -
The iPhone feed costs a third as much : a portrait phone now arrives at the
height of the picture it is drawn into (1080) instead of 1920. -
Sonify's two taps are read in one pass, which on a Mac halves the time the
window spends waiting on them. -
The piled Collage walls draw in about half the GPU time (torn, shaped, a
stacked mosaic or cut-up, FX before the shapes), bit for bit the same picture :
shaped 10.2 to 5.9 ms a frame at 1080p, torn 14.0 to 7.6. -
Toile costs 60 % less at PAINT 0, bit for bit the same picture : its
painterly pass no longer runs when it is mixed in at zero (7.9 to 3.1 ms a frame at
1080p when Toile draws its line work alone). -
A Collage loads only the films a piece can show.
filmscan be 30 or 55 for
variety at no cost : every deal draws from the whole folder anyway, and a wall of
10 pieces loads about 11 films. Pieces wait far less for a fresh film (0.25 s
instead of 1.1 on an installation's wall, 0.5 instead of 10 at 55 films). -
Sonify's Collage voice reads a hundredth of the data : each film's sound now
plays from a small audio-only copy of the original, identical sample for sample,
instead of the whole iPhone video file. -
The Performance tab no longer blames Sonify for a full GPU. Waiting for the GPU
to hand a picture back now has its own row, GPU wait; Sonify's own work on an
installation's session is 0.3 to 0.6 ms a frame, not the 8 to 30 it showed. -
The Collage voice reuses its players : a film looping or re-cueing takes over
its own spare player instead of opening and decoding its file again. -
The media keys and the Now Playing panel leave the instrument alone (the app no
longer announces every Collage film to the system, and a play / pause key can no
longer pause its sound).
Opening an older session
Everything opens as before : Space starts in stereo (the mix as always), the output EQ
is flat, the glue is off, the Collage's comp is at 0, the warp's feather is 0, and the
Collage and Toile draw the same picture bit for bit. A session saved now carries where
each voice sits in the room (spaceVoices); an older one starts the voices where they
begin. Three things sound different on purpose :
- The key sequencer's Picture reads the picture against the piece's own colors and
light (range 100 %), so it walks more keys than before. Set range to 0 for the old
plain color wheel. - The Chord's spread stays centred : a chord that used to lean left now opens both
ways (same width). - "pentatonic" shows as the minor pentatonic it always was (the same notes). Over
OSC,/opsia/sonify/scalekeeps its first eight indices; a FLOAT sent there now
spreads over the 18 scales.
Install
| Platform | File |
|---|---|
| Windows | Palinopsia-1.2.8-win-x64.exe (installer) or Palinopsia-1.2.8-portable.exe |
| macOS (Apple Silicon) | Palinopsia-1.2.8-mac-arm64.dmg |
| Linux | Palinopsia-1.2.8-linux-x86_64.AppImage or Palinopsia-1.2.8-linux-amd64.deb |
Builds are unsigned :
- Windows : SmartScreen may warn, click More info → Run anyway.
- macOS (Apple Silicon) : n...
Palinopsia v1.2.7 : the whole frame
Palinopsia v1.2.7 : the whole frame.
A release about the frame itself. The finished picture can now be played as one : slid,
scaled, turned, spun, softened at its edges and flipped, on the projector and every
output, from a modulator, a Meta knob, OSC or the dataflou mesh. A camera's picture gets
real framing (fit, a crop that cuts, feather, a mirror) and can find the people in it.
An iPhone by USB becomes a camera on a Mac. The Collage piles its films up in torn and
rounded cut-outs. And the Inspector, tidied panel by panel, takes the least room in the
most useful order, with every control explaining itself on hover.
Highlights
-
Play the whole frame. A new Output transform (Output page) moves the finished
picture as one : slide it, scale it, turn it, keep it spinning, soften its edges, flip
it, and choose what fills the space it leaves (black, the picture repeated, or
mirrored). It reaches the projector, NDI, Spout and recordings, takes modulators and
Meta knobs, and answers OSC and dataflou. It is saved with the session. -
An iPhone or iPad by USB as a live input (macOS). Plug it in, trust the computer,
open its Camera app : the Live Input picker lists it with a 📱, and what its screen
shows plays in the layer, by cable, with nothing to install on the phone and no
network in between. An old phone becomes a camera on a stand. Crop the Camera app's
buttons away with the slot's framing. It is built for installations : a phone that
is unplugged, rebooted, or still charging when the computer starts is looked for
every two seconds and joins by itself, and the Inspector says what it receives or
what it waits for. macOS lends the phone to one app at a time : quit and reopen the
app quickly and it may take a minute to show up again (unplugging and replugging it
clears that at once). -
Framing that frames. A camera or a film can now keep its own shape in the layer
(fit : cover or contain, beside the old stretch), crop really cuts its edges
away instead of stretching what is left, and feather softens the edge that
remains. -
Mirror a camera. Every webcam, live input and video slot's framing has a
mirror, on the fit row : left-right for the selfie view (you move right, you move
right on the screen), upside down for a camera hung from the ceiling, or both. -
People. A video or capture source can find the people in its own picture and
keep only them, blur the room around them, take them out of it, or draw them as a
white matte to key another layer. Up to four people, beside the picture, never
holding it up. -
A Collage that piles up. A new stack slider lifts the pieces off the flat
sheet : each one grows past its cut and lies at its own height, so they overlap like
cut-outs laid one over another, the higher ones casting soft shadows on the lower.
Two new shapes : torn (ragged scraps of torn paper, tilted and piled) and
shaped (rounded abstract cut-outs). And warp bends the pieces, each shape its
own way and every piece a little differently. Ten new presets to start from, and a
Paste-Up theme in Generate. -
Collage holds up to 100 films (was 50) : a bigger pool to deal and churn from.
Up to 64 play at once, one per piece. -
A circle that stays a circle on the projector. The Finalizer's output shape
gets post warp : it is measured on the projector, after the keystone warp that
fits the picture to the wall, so a circle stays perfectly round there instead of
turning into an oval. And z tilt / z turn lean the shape into depth, like a
disc seen at an angle, for a round screen that the projector meets sideways. -
A keystone per piece. The projector warp can now be saved with the session
(Output → Mapping → save with session) and comes back when you open it, so each
piece or each venue keeps its own. The computer's own warp is never overwritten :
it returns with a session that has none, with New, or when the option is off. -
More of Palinopsia on the dataflou mesh : layer mute, background opacity, every
randomize, and the output transform. Every randomize also gets its own OSC address,
and a randomize fired over OSC or the mesh now plays at the Transport's intensity,
like the dice. -
Vary from anywhere. The global Vary and each layer's Vary are now OSC triggers
(/opsia/vary,/opsia/layer1/varytolayer4) and dataflou destinations, so a
controller, Pandore or any node on the mesh can fire them. -
Room to modulate. A session now holds 32 modulator bindings (it was 12).
Randomize and Generate still use at most 12, so the rest is yours. -
The Inspector, tidied. The Collage's controls sit in four columns : films,
pieces, edges, deal. So do twenty more of the busiest sources, nodes and effects
(Lattice, Lowercase, Feedback, Datamosh, Perspective, the organic family and more),
with the controls that do nothing in the current setting greyed out : a keyer that is
off, the light angle of a flat relief, a palette's unused stops. Some labels say what
they do now (Granular's grain control was backwards; Palette's colors read stop 1
to 5), and Slime Mould is spelled Slime Mold. XY pads stand at the right instead of
stretching a row, the columns are balanced so every panel is as short as it can be,
and the number boxes show only the decimals they need. -
Every control explains itself on hover. The last fourteen shaders that had no
hover help (Slime Mold, Fluid, Reaction, Colony, Veins, Erosion, Membrane, Swell, Dye
Field, Ground, Scan, Mycelium, Grown, Posterize) now say what each control does, which
way it goes, and when it starts the growth over. -
Ctrl+F(Cmd+Fon a Mac) turns the fulldome output on and off. -
The right column fits all its tabs on one line, exactly as wide as they need on
your computer. Drag its edge to make it wider; double-click the edge to fit it again. -
The top bar stays on one line in a smaller window : it tucks its labels away and
tightens up as the window narrows instead of breaking onto two lines.
Fixed
- An iPhone by USB shows up. On a Mac mini with an iPhone, the Live Input picker
could say there was no video input while QuickTime showed the phone. It is now heard
as it arrives, asked first, and held by one process for the whole session, so a
window reload no longer loses it. - The light output and MARK no longer slow the picture. On a computer whose
graphics share its memory, every light frame and every MARK strip held the whole
picture up for about 12 ms. They are now read without waiting, and send exactly
the same colors and values, a few milliseconds later. - Two NDI layers no longer go black. A session opening two NDI (or USB-input)
layers at once could leave all of them black until the app was restarted, and
even then. - People lets go when its layer stops showing a camera or a film, and keeps up
with layers that move, clips that change and the grain mode. - A post-warp circle on a square composition stays round on the projector.
- Framing works on Assemble and HIVE sources too.
- Modulation never goes quiet on a click. With the modulation bindings all
taken (there were 12 for a whole session; now 32, Randomize and Generate keeping
to 12 of them), binding a new one used to do nothing at all. Bindings left pointing at
removed effects are now cleared to make room, and when the matrix is really full
the buttons say so and how to free one. - Imported videos show in their layer again. A clip loaded as a video source
could stay black (the graphics refused its frames); it plays as it should. - A camera that is not there at launch is looked for until it appears. A camera
that powered up after the computer used to fail once and leave its layer black; it
now gets the same reconnection as one that drops out later. - Lowercase's accent and ground colors explain themselves on hover.
Opening an older session
Everything opens and plays as before, with one look that changes on purpose : a source
that was cropped now shows its picture cut where the crop is, instead of the rest
stretched over the whole layer. Raise its zoom to fill the layer again. The new
controls start where they change nothing : fit stretch, mirror off, the output
transform at rest.
A randomize sent over OSC or dataflou now plays at the Transport's intensity, like the
dice and MIDI Learn : set the intensity to 100 % for the full re-roll it always was.
Install
| Platform | File |
|---|---|
| Windows | Palinopsia-1.2.7-win-x64.exe (installer) or Palinopsia-1.2.7-portable.exe |
| macOS (Apple Silicon) | Palinopsia-1.2.7-mac-arm64.dmg |
| Linux | Palinopsia-1.2.7-linux-x86_64.AppImage or Palinopsia-1.2.7-linux-amd64.deb |
Builds are unsigned :
- Windows : SmartScreen may warn, click More info → Run anyway.
- macOS (Apple Silicon) : not notarized. Drag Palinopsia into Applications first
(run from the disk image or Downloads, macOS runs a hidden temporary copy), then run
xattr -cr /Applications/Palinopsia.apponce in Terminal, or open it and click Open
Anyway in System Settings → Privacy & Security. The first launch asks for the local
network, and for the camera and the microphone when you use them : accept, or OSC, NDI
and light output stay silent. Screen capture is the one permission macOS never prompts
for : switch Palinopsia on under Privacy & Security → Screen & System Audio Recording,
then start it again. - Linux :
chmod +xthe AppImage, then run it.
Intel Macs (x64) : this release ships Apple Silicon only. On an Intel Mac, build from
source (npm install, then npm run build:mac).
Notes
- The iPhone input is macOS only : an iPhone shows its screen as a camera only to a
Mac. For a phone left alone in an installati...
Palinopsia v1.2.6 : points and planes
Palinopsia v1.2.6 : points and planes.
A release about space. Lattice puts points in three dimensions in front of a moving
camera, Perspective lays any layer on a plane that runs off to the horizon, and
Lowercase learns to lean its bars into crossing slants. A new Space family in Generate
and a Space group of master chains reach all of it in one click. The fulldome output
becomes something you can play : every mapping slider takes a modulator or a Meta knob,
spin reaches a full turn a second, and feather softens the picture's own edges. And the
console, which Chromium had been filling with a readback warning thirteen times a second
since launch, is quiet.
Highlights
-
Lattice, a new source : a lattice of points in space seen through a moving camera.
A floor of dots that sinks into a gravity well and rings with ripples, heaves like a
sea or rises with the sound or with another layer's picture; or a room full of points
the camera flies through forever, streaking them into a warp. Overlapping dots never
pile up into a glow, and the ground can be transparent so the layers below show
between the points. Ten presets, from Gravity well and Calm sea to Crystal room and
Warp. -
Perspective, a new effect. It lays a layer on a plane in space and looks at it
through a lens : lean it back into a floor running to the horizon, swing it into a
wall that runs off to the side, curl it like a curved screen or ripple it into a
travelling ribbon. lens goes from a flat telephoto to a wide angle, fog lets the
far side melt into the layers below, travel slides the picture along the plane. Put
it after Lowercase, Op-Art or Interference and flat line fields become architecture. -
Lowercase : slant, a ninth figure. Full-height bars that each lean their own way and
cross into X shapes and fans, thin ones and fat ones, dealt on the step and held like
every other figure. split is how far they lean, density how many stand. Three
presets : Crossing, Leaning comb, Fallen bars. -
A Space family in Generate : eight themes built around the new pieces (Gravity Well,
Starfield, Crystal Room, Dot Sea, Spectral Floor, Line Wall, Data Floor, Crossing), and
a Space group of nine master chains that lay the whole picture on a floor, a wall,
a ribbon or a horizon (Floor, Corridor, Ribbon, Horizon, Curved Screen, Data Wall,
Halftone Floor, Scan Relief, Starlight). Generate now counts 108 themes, the chain menu
109 chains. -
Fulldome you can play : every mapping slider (rotate, spin, feather, turns, top,
bottom, azimuth, elevation, width, roll, surround, scale, offset) takes a modulator or
a Meta knob, and turns the modulated color while it moves : a screen drifting around
the room, a panorama breathing toward the zenith, a full-dome frame swelling on the
beat. spin reaches 360°/s either way, a full turn a second, and never jumps when it
changes. feather starts at 0, every edge crisp.
Fixed
-
Fulldome : feather now softens the picture's own edges in every mode (the
screen's border, the panorama's top and bottom, a contained frame), not only the rim
below the horizon; the projector window no longer shows the Mapping grid over a
domemaster; in Screen mode the surround's top and bottom sit under their own heading
(behind the screen); and changing spin no longer makes the dome jump. -
A console flood, and a hidden cost, gone. Reading the picture back (for the vision
features, Sonify, the depth input and every output capture) made Chromium copy each
read-back buffer into shared memory, a copy that was never used and that printed a
performance warning each time, about thirteen times a second from the moment the app
started. Besides the noise, it used up the browser's budget of console messages, so a
real graphics error would have gone unreported. Now no copy is made : no warnings, and a
projector or Spout capture costs about a third of what it did. -
Generate never sweeps a whole-frame flip. A theme's motion could bind Lowercase's
flip, which inverts the whole frame on every swing : a strobe. It now joins the seed
in the inputs no theme modulates.
Opening an older session
Everything opens and plays as before. Two looks change on purpose :
- a dome mapped in Screen mode has a crisper border at feather 0 (it kept a hidden
1.5 % softness), and a fresh dome starts at feather 0 instead of 0.01. A dome you saved
keeps its own feather : double-click the slider to set it to 0; - a dome that was spinning keeps its speed, and now turns smoothly when the speed changes.
Install
| Platform | File |
|---|---|
| Windows | Palinopsia-1.2.6-win-x64.exe (installer) or Palinopsia-1.2.6-portable.exe |
| macOS (Apple Silicon) | Palinopsia-1.2.6-mac-arm64.dmg |
| Linux | Palinopsia-1.2.6-linux-x86_64.AppImage or Palinopsia-1.2.6-linux-amd64.deb |
Builds are unsigned :
- Windows : SmartScreen may warn, click More info → Run anyway.
- macOS (Apple Silicon) : not notarized. Drag Palinopsia into Applications first
(run from the disk image or Downloads, macOS runs a hidden temporary copy), then run
xattr -cr /Applications/Palinopsia.apponce in Terminal, or open it and click Open
Anyway in System Settings → Privacy & Security. The first launch asks for the local
network, and for the camera and the microphone when you use them : accept, or OSC, NDI
and light output stay silent. Screen capture is the one permission macOS never prompts
for : switch Palinopsia on under Privacy & Security → Screen & System Audio Recording,
then start it again. - Linux :
chmod +xthe AppImage, then run it.
Intel Macs (x64) : this release ships Apple Silicon only. On an Intel Mac, build from
source (npm install, then npm run build:mac).
For developers
- Native generators can read the sound and another layer.
NativeGeneratorgains an
optionalfeed(audio, side), called by the Compositor just beforerender: the shared
128×2 audio texture and the slot's sidechain layer (the Background feeds the sound
only). Lattice is the first to use it; the Inspector's sidechain row is a per-source
entry with its own hint. - Generate recipes gain
stackFx(per-layer effects that close that layer's rack : the
effect a theme cannot do without),bgOpacity(lower it when the layers carry their
own dark ground : in group mode the Background shows through every dark part) and a
motion recipe'sskip(a RegExp of inputs that family never binds). - A new modulation target,
{ kind: 'dome', field }, overDOME_MOD_RANGEin
shared/dome.ts: a final override on the dome stage through
Compositor.setDomeParam/domeParam, the base back from the dome settings every
frame. - Read-back buffers use
STREAM_COPY, never a*_READusage : with a read usage
Chromium makes a shadow copy at every fence, which these reads never used. - A GLSL lesson from Lowercase slant : a texture read inside one branch of a figure
switch made the compiler run every figure for every pixel (1.9 → 12.5 ms at 4K). ISF
shaders are GLSL ES 1.00, with no gradient-free texture read in a fragment shader : read
textures outside the branches.
Palinopsia v1.2.5 : data and rhythm
Palinopsia v1.2.5 : data and rhythm.
A release about marks, steps and the picture read as data. Lowercase is a new source
of machine-cut marks that land on a step and hold, and Signal is a new Sonify voice
that walks the picture with read heads and fires a micro-grain at every bright cell it
crosses : point the one at the other and the marks play themselves. Every layer gains a
Vary of its own that a modulator can fire, a layer's racks can be re-dealt one at a
time, and everything you fire now blinks so you can see it act.
Underneath, the instrument stopped paying for something it should never have paid for.
It reads its own picture back every frame (for the vision features, Sonify's taps and
the depth input), and on a computer whose graphics chip shares memory with the processor
each of those reads stopped the whole pipeline for about 17 ms. Opening the Performance
tab turned one of them on, and the show then spent up to two thirds of every second
waiting inside the graphics driver, with nothing in the app to show it. The reads are queued now
and collected a frame or two later, and the picture never waits for them. The picture itself is
untouched : the same passes, the same formats, the same resolution. (The light output and the
/opsia/av/mark-signal strip still read synchronously : both are off unless you use them.)
Highlights
- Lowercase, a new source. Eight figures of machine-cut marks : a data matrix whose
cells subdivide into one to three narrow bars, blocks, bars, ticks, a scan rule, a
lattice, sprocket ladders down the edges, and one white slab with bars cut out of it.
Everything lands on a step and holds; nothing sweeps. Every deal is a fresh draw, or,
with scroll, the same one slid a cell along : the field read as a stream of data. It pulses on its own, up to 120
steps a second, or plays any rhythm you bind to its gate (a Euclid, a Spastic, an
audio transient). cells runs to 512 : the grids turn to crisp 1-bit static and the
slab becomes a barcode. A sidechain reads another layer one sample per cell, so a
film arrives as a 1-bit halftone of cells on this clock. One accent color marks a
regular lattice of cells, and the previous step trails behind as a filmed projection
does. - Signal, a new Sonify voice, before Chord. Read heads walk the picture on a clock and
every cell they cross that is brighter than a threshold fires one micro-grain : pip,
ping, damped, noise, click, fm, square, tri or pink, from a 0.2 ms tick to a 500 ms
ring. Nothing here is a stored rhythm; the picture is the pattern. One to four heads
each read their own band, and spread pulls their sweeps out of step into a
polymeter that drifts back. Pitch comes from the place along the bar, with a snap
from free frequency to the scale whose middle is microtonal. Every grain lands on its
exact sample rather than on the audio block, a fixed moment after its step, which is
what keeps a fast grid a grid; synced, it runs on the beat clock the Sonify sequencers
share. - A Vary for each layer, under its Speed : the global Vary aimed at one layer alone,
with its own amount. Its button is a modulation target that fires as the modulator
crosses its middle, so a pattern can re-vary a layer; an auto-fire stays out of undo.
Each fire is a variant around where the layer stood, so a modulator can fire it all
night without the layer wandering off. - Re-deal one rack from a layer's right-click menu : the effects of source A, of
source B, or the layer's own, leaving the sources and the other racks alone. Dealt
racks also reach four effects now (they stopped at two, and a source rack came out
empty about half the time). - You see what fires. Every Vary, the Randomize button and the return-to-default
buttons blink when they act, whether by a click, a modulator, a MIDI pad or a key, each
in the color of its kind of action. - The picture readout is free. Measured on an 8 GB Apple-silicon Mac Mini, a blank
1920x1080 session, a 50 Hz display, the Performance tab open, three runs each : 41.9
to 50.0 fps before, a steady 50.0 after. The app's own meter reads 1.4 ms of
processor time per frame instead of 14.2, and the worst single frame 5.5 ms instead
of 42.8. Blocking readback time fell from 560 ms per second to 0.1. - The frame rate reads against your display :
50 fps / 50 Hzin the Performance
tab and in the corner of the preview. The render is locked to the display's refresh
rate, so that rate is the ceiling, not 60, and 24 fps on a display set to 24 Hz is
every frame drawn. The red warning and the frame budget follow the display too, frames
the GPU backlog guard drops are counted asskips, and the GPU and VRAM meters
work on a Mac. - Esc closes a fullscreen output. A plain fullscreen output on one display could
only be left with the window shortcut (Cmd+W, Ctrl+W); a tap of Esc now closes it. On
a projector the control window is not behind, Esc hands focus back to the controls
instead and the show goes on, and an installation keeps its 1.5 s hold, so a brushed
key never ends a show. And on a Mac, screen capture says how to
grant its permission instead of showing a grid of black thumbnails.
Install
| Platform | File |
|---|---|
| Windows | Palinopsia-1.2.5-win-x64.exe (installer) or Palinopsia-1.2.5-portable.exe |
| macOS (Apple Silicon) | Palinopsia-1.2.5-mac-arm64.dmg |
| Linux | Palinopsia-1.2.5-linux-x86_64.AppImage or Palinopsia-1.2.5-linux-amd64.deb |
Builds are unsigned :
- Windows : SmartScreen may warn, click More info → Run anyway.
- macOS (Apple Silicon) : not notarized. Drag Palinopsia into Applications first
(run from the disk image or Downloads, macOS runs a hidden temporary copy), then run
xattr -cr /Applications/Palinopsia.apponce in Terminal, or open it and click Open
Anyway in System Settings → Privacy & Security. The first launch asks for the local
network, and for the camera and the microphone when you use them : accept, or OSC, NDI
and light output stay silent. Screen capture is the one permission macOS never prompts
for : switch Palinopsia on under Privacy & Security → Screen & System Audio Recording,
then start it again. - Linux :
chmod +xthe AppImage, then run it.
Sessions saved with v1.2.0 open and play unchanged : a layer without a Vary amount reads
the default, and a Sonify patch without Signal reads it as off.
Intel Macs (x64) : this release ships Apple Silicon only. On an Intel Mac, build from
source (npm install, then npm run build:mac).
For developers
- Sonify voices are stored by index. A session saves each voice's mixer channel, DJ
filter and sequencer mask by position, and a MIDI on/off binding is
sonify:voice:i. Signal is therefore APPENDED as voice 9 (NVOICE10, a ten-entry
mixFilter, older nine-entry arrays padded on load), andVOICE_ORDERin
SonifyPage.tsxonly shows it before Chord. A new voice goes at the end, always. - Adding a Sonify voice : the two steps that are easy to miss. Claim its tap in the
tick'sneed[]: a voice missing there runs only while ANOTHER voice reads the same
tap, which a test hides whenever Spectra is on (it is by default, on tap 0). And
nothing insetSonify: it now merges every voice block with its default, so a
session saved before a voice existed loads with that voice off instead of crashing
the Sonify page on a missing block. - Signal's scan runs on the main thread, so it reads
sonifyModValuesitself : the
simple-mod overlay ships modulated values to the worklet only, and a scan reading its
base config would ignore every modulator. Onsets carry a per-grain sample delay into
their render block (wait) instead of firing at the block's start. pushSideTex(Compositor) is the counterpart ofpushAudioTex: any ISF source
that declaressideTexreceives its slot's sidechain, keyed on the declaration, so a
new source that reads a layer needs no registration. No layer picked unfeeds the
input, which then reads the bridge's transparent texel : weigh a sidechain by its
alpha and "none" means none.- A modulatable trigger : the layer
varytarget is an EVENT, not a value. The
modulation path folds every driver of a layer into one value a frame (the highest),
andflushVaryEdgestests it once : one fire per upward crossing of the middle,
re-armed below 0.4, never twice inside 60 ms, and none on the first frame a binding
is seen. It hands the fire out throughsetVaryTrigger, which App runs inside
runSilently;runSilentlycommits a pending user edit first. <Blink>(components/Blink.tsx) shows a fired action : given a count it blinks
when the count changes (actions a modulator, a pad or a key can fire :varyPulse,
randPulse, transient store state outside the composition) and only for a change since
it mounted, and without one it blinks on its own button's click, drawn over the page
so it outlives a button that disables or hides itself.- The three rack-size distributions are one constant each in
randomize.ts
(SOURCE_A_RACK,SOURCE_B_RACK,LAYER_RACK) : they used to be nine copies across
every randomizer. src/renderer/src/engine/gridReadback.tsis the small-grid counterpart to
frameCapture.ts: pixel-pack buffers,fenceSyncplus a zero-timeout
clientWaitSync, the newest finished grid wins, andkick()skips rather than waits
when every slot is in flight. It flushes only when the window is NOT painting : a
painting window submits the work itself, and a submit into a full command queue blocks.
A ring hands each landed grid out ONCE : two consumers of one source share a read
(readSonifyGridkeeps each source's grid for the frame), anddropInFlight()is for a
consumer back from ...
Palinopsia v1.2.0 : the dome and the grain
Palinopsia v1.2.0 : the dome and the grain.
Palinopsia goes under the dome and out to the rest of the video world : a real fulldome output
(210°, up to 4K), NDI and Syphon built in, and real-time DXV3 recording at dome size. Down at
the grain, surfaces grow, crack and rust (Grown, Colony, Ground, Scan), film gets damaged the
way real film does, and CRT / VHS faults look like the real thing. The camera learns how a body
moves and can cut it out of the room, Generate builds scenes that move, and a video plays at
any speed from 1/64× to 64×. A Collage of films becomes something you play live, and hear :
its pieces grow and shrink under a modulator, its films take effects while the cut shapes stay
crisp, and Sonify sings it through a tuned Ring bank, while a new key sequencer composes
the key of the whole sound over time. An installation now looks after itself for days :
it starts with the computer, heals a crashed picture, sound card or camera, and keeps its
projector. And every source, effect, node and finishing stage went through a deep audit :
what was broken is fixed, and what gave the instrument its character is kept, as the
default look, with the clean version as an option.
Highlights
- Fulldome output. A square domemaster (front at the bottom), 2K or 4K, aperture
180 to 230°, feeding everything : preview, projector, NDI, Spout, Syphon, recording and
stills. Fit a flat picture as full dome, panorama or screen, and check it in a 3D
dome simulator, from the seat or from outside. - NDI in and out, built in. Any NDI source on the network (a camera, a phone, OBS,
another Palinopsia) plays in a layer like a webcam : NDI Input… in the source menu.
Always the newest frame, so it never drifts behind (a 1080p source arrives in ~45 ms).
And Palinopsia is its own NDI source : 4096×4096 at 30 fps, even with the
window minimized. No NDI on the computer? One click installs NDI's official runtime. - Syphon on macOS, the twin of Spout.
- DXV3 recording in real time : the GPU compresses each frame and the file is written as
it goes, so the 4096² dome master records at full size, with nothing to convert after,
with the Sonify sound when it plays. - Living surfaces. Four new Organic generators : Grown (a texture that grows itself
and heals when you damage it), Colony (lichen, mold, burning paper, rust), Ground
(drying mud, migrating sand ripples, strata, wood, bark) and Scan (30 real
photographed materials). The rest of the Organic family is now lit as a relief. - Film damage, rebuilt from real film : dust, fibers, scratches and a hair in the gate,
per film gauge, plus a dirt burst you can fire on a beat. - The camera reads movement : a motion field (which way things move, whether they
spread out or close in, turn, move as one), six movement qualities of a body (energy,
expansion, fluidity, suddenness, directness, symmetry, plus impulse and freeze gestures),
and a Silhouette source that cuts the body out of the room, no green screen. - Generate builds scenes that move, using the whole instrument, with three new
families (Dome, Film Wall, Node Workshop) and 25 new master chains. - Video, any speed, and a real transport : 1/64× to 64× on ordinary footage, stop, scrub
the timeline, and step through the other clips in the folder. - A folder of sessions links into the Session dropdown in one right-click.
- An OSC monitor : the OSC section now reads in two halves, what comes in and what goes
out, each with its own traffic light, and monitor shows every message both ways, live. - Installations look after themselves : start with the computer, reload a crashed,
hung or frozen picture, reopen a closed output, follow the projector, reconnect the
camera and the sound card, play the session's sound, never wait on a dialog, and keep a
log. A Mac runs one as well as a PC. - A key sequencer composes the root and scale of the whole Sonify instrument over
time : a list of keys, a walk on the circle of fifths, a pick by shared notes, a pivot
to another mode, or a key read off the picture, on beats and bars, with a glide that
slides every voice to the new key. - The camera no longer slows the picture : hand, pose and face tracking run on their
own thread (about 0.1 ms of the picture's time a frame instead of 3 to 5). - Hear the Collage. Sonify's new Collage voice plays the wall's films all at once,
each piece placed in the stereo field by where it sits and rung at a note of your key, and a
new deal crossfades instead of cutting. A Ring bank inspired by the S-4 then rings the
whole voice through 48 resonant bands tuned to your scale : decay, cutoff, slope, tone,
tilt, travelling waves and random noise (free or locked to the tempo), detune, and
five filter voicings. The Chord voice gets the same waves. - Collage, played live. Modulate
cutsand the wall grows and shrinks a piece at a time
instead of reshuffling; FX before shapes runs the source's effects on the films while
the seams, contours and torn paper stay crisp; torn paper tears like a real torn-magazine
collage (in the Autocutter too); and the wall is lighter on the machine. - Effects travel between racks : copy or drag an effect between the layers and the
Master FX (right-click → Copy to…, or drag its chip; Ctrl copies). - Everything morphs : scenes, Randomize, sessions, New and Generate move into the next
composition over the Morph time, live and layer by layer, with no flick. - Context's light moves : draw a path on the light pad and play it.
- Resolume OSC mapper (key
K) : open a Resolume composition and wire Palinopsia's
signals to its layers, clips and effects in a matrix. - A dataflou node : Palinopsia joins the dataflou mesh, shows every node and connection
on it, and wires its senses and controls to the other instruments, both ways. - The big audit : all 23 generators, the native sources, 52 effects, the finishing
chain and all 25 native nodes. Knobs never jump the picture anymore, long shows stay
alive, and transparency, 4K and the dome are handled everywhere.
Your sessions are safe
- A session file only changes when you save it. Loading another session, Open,
New, Generate and quitting used to save the session you were leaving into its file
without asking; after a crash restore it could even land in ANOTHER session's file
that shared its name. Now they ask Save changes? (Save · Don't save · Cancel),
and only when something changed. Don't save keeps a recovery copy. - Every overwrite keeps the previous version : right-click Load → Earlier
versions brings one back. The crash autosave keeps the last hour, and Restore
reconnects to the session's file.
Opening an older session : what may look different
Most sessions open exactly as before. These changes are deliberate, and each one either
fixes something that did not work or can be set back :
- Finalizer "A" is now "opacity", a real fade to black. It used to do nothing, so a
session saved with it below 1 now looks darker : set it back to 1. - Context's material relief finally shows. Picking a material (bricks, bark, paper…)
now relieves the picture with that material; before, it read a random image instead.
The same bug made Vibe and Context skip frames, even with no material : that is gone. - Light Trails and Wide Time fade all the way to black instead of leaving a permanent
fog. Wide Time's blown-out look is kept as its newburnmode. - Wavefold and Colorizer no longer turn dark grounds white by default; the old
negative look is the newinvertswitch. - Melt creeps visibly now, and Corrode eats the frame over minutes (one minute to an
hour) instead of seconds. - Pixel Sort's length works past 96 pixels.
- The heart shape (Transform and the output shape) stands upright with a clean edge. It
used to be upside down : rotate by 180° for the old one. - Weave, lumakey and consume now do something as layer blend modes (they acted as
normal before). - Flash safety is on (mild, 0.35) unless you set it yourself : a bug left it off on
installs that had never touched it. It now really catches strobes, and on a very bright
scene it can soften film flutter too. - Randomize leaves deliberate settings alone : anaglyph 3D, film hold, the output shape,
Vibe's chord mode and all the film damage are never rolled. - Sessions saved before the film-damage rebuild with Film Hold off open with dust and
scratch at zero, once (they were invisible before, so nothing you saw changes). - A dome master saved at 8K opens at 4K : the live dome now stops at 4K (see Fixed).
- Seven surface materials keep their real proportions : bricks, concrete, corrugated
steel, painted plaster, rock face, wood grain and paper crumpled used to be stretched to
about twice their height, in Context's surface material and in the Scan source. They now
look like the real thing, so their features are wider and flatter than before.
Rock rough is renamed stacked stone (what it is); sessions keep it. - Video grain plays the right way up : grain voices were upside down.
- The Finalizer's output shape comes last : film dust and scratches now stay inside the
shape, and the fill around it stays clean. - The output shape's edge is crisp : it used to be slightly soft, more so at 4K and on
the dome. Its new feather brings softness back on purpose (0.05 is the old edge). - A Collage deals differently : the same deal now draws another cut and another order of
films (the price of a wall you can modulate piece by piece), and the mosaic's shards are
spread mo...
Palinopsia v1.1.0
Palinopsia v1.1.0 — the "played by the room" release.
Embodied control, sound in both directions, and the instrument reaching out into the space around it (projectors, DMX, MIDI clock).
Highlights
- Body: embodied control (new full-page mode, key
B). Opt-in webcam → MediaPipe Hands + Pose + Face + Silhouette into a live body bus. Route any tracked feature into a modulator, or author gesture rules (single gesture or a two-gesture combo, with per-gesture sensitivity) that fire actions and a/body/<name>OSC bang. Includes silhouette zone occlusion (cover a screen region with your shadow) and presence enter/leave triggers for installations. - Colour ↔ sound. An audio noisiness feature and vision hue + saturation features, so sound can tint the picture and the picture's colour can drive any Sonify parameter. The Sequencer's Climat tag takes a "from picture" suggestion off the live palette.
- Installation / kiosk mode — boot a session fullscreen with crash self-heal and an exit hatch; custom composition size and multi-projector span.
- Light output — ArtNet/DMX + WLED: push the picture's colour into the room.
- MIDI output — 24-PPQN clock + transport and a thru/merge path (drive an Ableton Move over USB); the Randomize dice, master-FX chain and session buttons are MIDI-learnable.
- Audio input monitoring / passthrough with separate Sonify and monitor levels, and an adaptive USB-noise denoiser.
- Performance sub-tab: per-section GPU / CPU / RAM load.
Full notes in CHANGELOG.md. Cut after a code + security audit (camera-lifecycle, mirror-mode and race fixes; opsia-media:// hardening).
Downloads
| Platform | File |
|---|---|
| Windows | Palinopsia-1.1.0-win-x64.exe (installer) or Palinopsia-1.1.0-portable.exe |
| macOS (Apple Silicon) | Palinopsia-1.1.0-mac-arm64.dmg |
| Linux | Palinopsia-1.1.0-linux-x86_64.AppImage or Palinopsia-1.1.0-linux-amd64.deb |
Builds are unsigned:
- Windows — SmartScreen may warn: More info → Run anyway.
- macOS — un-notarized: right-click the app → Open, or run
xattr -cron it once. - Linux —
chmod +xthe AppImage, then run it.
Intel Macs (x64): this release ships Apple-Silicon only. On an Intel Mac, build from source (npm install → npm run build:mac).