Repository navigation
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 installation : Auto-Lock Never, the phone locked
to the Camera app (Apple Configurator's Single App Mode survives a reboot, Guided
Access does not) and no passcode (after a restart iOS keeps a passcode-locked phone's
USB closed until it is unlocked once).
For developers
- A new modulation target,
{ kind: 'outx', field }, overOUTX_MOD_RANGEin
shared/outXform.ts: the output transform's sliders, through
Compositor.setOutXformParam/outXformParam(null while the dome is on). The stage
(engine/outXform.ts) runs after the flash limiter and before the dome and the
keystone, skipped at identity;lastPresentstays the unmoved frame, so the
crossfade, freeze, vision, depth and Sonify never see the transform. - The dataflou DECLARE is terse : a field whose value is what every decoder on the
mesh reads for a missing key is left out (modeandlabelare always sent). 119
entries fit in 7,119 bytes, under the 8 KB a Teensy node takes. - Source framing gains
mirror('off' | 'x' | 'y' | 'xy') on the slot, one
uniform in the framing blit : the picture is turned where it is read, so fit, zoom,
pan, crop and feather stay in screen terms and the People mask turns with it. - The macOS USB input runs in a utility process (
src/main/avcaptureWorker.ts,
started byavcaptureHost.ts), shared by the windows for the whole session; the
preload keeps the sameavf*API. - Inspector layout (
components/GroupedControls.tsx) :CONTROL_GROUPSsorts a
panel into titled columns,DIMSgreys out a control with the reason in its tooltip.