Skip to content

Palinopsia v1.2.7 : the whole frame

Choose a tag to compare

@github-actions github-actions released this 14 Oct 03:52
· 272 commits to master since this release

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/vary to layer4) 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+F on 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.app once 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 +x the 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 }, over OUTX_MOD_RANGE in
    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; lastPresent stays 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 (mode and label are 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 by avcaptureHost.ts), shared by the windows for the whole session; the
    preload keeps the same avf* API.
  • Inspector layout (components/GroupedControls.tsx) : CONTROL_GROUPS sorts a
    panel into titled columns, DIMS greys out a control with the reason in its tooltip.