Skip to content

Releases: filliformes/palinopsia

Palinopsia v1.3.1 : paint, hands and steps

Choose a tag to compare

@github-actions github-actions released this 29 Oct 17:33

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, Q and S bring 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 : run npm run fetch:depth once.

  • 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
...

Read more

Palinopsia v1.3.0 : the audio update

Choose a tag to compare

@github-actions github-actions released this 21 Oct 23:01

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...

Read more

v1.2.10

Choose a tag to compare

@github-actions github-actions released this 15 Oct 23:06

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.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).

For developers

  • A Sonify readout that follows modulation : LiveNum (sonifyUi.tsx) on the shared
    live loop; a live-overlay subscriber can now take an idle callback, 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's assignBox(...params).
  • keyEvery is a Sonify mod target whose base comes from the key sequencer
    (registerKeyEveryBase), on its slider's log map (everyToPos / posToEvery).
  • Shell folds with collapsed / onCollapse.

Palinopsia v1.2.9 : clean sound, sharp projector

Choose a tag to compare

@github-actions github-actions released this 15 Oct 17:08

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.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).

For developers

  • Frame-pacing measurements : OPSIA_UNTHROTTLED=1 bash tools/test-build.sh builds
    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 from themeVar(), read
    once per theme.

  • Fading an AudioParam : schedule it a little ahead and use setTargetAtTime.
    param.value read on the main thread lags the audio thread (a curve started from it
    jumps), and a linearRampToValueAtTime on a param with no automation event yet ramps
    from time 0 (an instant jump). collageVoice.ts fade() does it right.

  • A media element's "ready" is not "sounding" : its sound reaches the graph tens of
    milliseconds after play(); CollageVoice.sounding() waits until its position has
    moved on.

  • Never nudge playbackRate for 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

Choose a tag to compare

@github-actions github-actions released this 15 Oct 04:41

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. films can 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/scale keeps 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...
Read more

Palinopsia v1.2.7 : the whole frame

Choose a tag to compare

@github-actions github-actions released this 14 Oct 03:52

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 installati...
Read more

Palinopsia v1.2.6 : points and planes

Choose a tag to compare

@github-actions github-actions released this 12 Oct 19:08

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.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).

For developers

  • Native generators can read the sound and another layer. NativeGenerator gains an
    optional feed(audio, side), called by the Compositor just before render : 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's skip (a RegExp of inputs that family never binds).
  • A new modulation target, { kind: 'dome', field }, over DOME_MOD_RANGE in
    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 *_READ usage : 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

Choose a tag to compare

@github-actions github-actions released this 10 Oct 07:16

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 Hz in 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 as skips, 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.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.

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 (NVOICE 10, a ten-entry
    mixFilter, older nine-entry arrays padded on load), and VOICE_ORDER in
    SonifyPage.tsx only 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's need[] : 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 in setSonify : 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 sonifyModValues itself : 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 of pushAudioTex : any ISF source
    that declares sideTex receives 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 vary target is an EVENT, not a value. The
    modulation path folds every driver of a layer into one value a frame (the highest),
    and flushVaryEdges tests 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 through setVaryTrigger, which App runs inside
    runSilently; runSilently commits 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.ts is the small-grid counterpart to
    frameCapture.ts : pixel-pack buffers, fenceSync plus a zero-timeout
    clientWaitSync, the newest finished grid wins, and kick() 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
    (readSonifyGrid keeps each source's grid for the frame), and dropInFlight() is for a
    consumer back from ...
Read more

Palinopsia v1.2.0 : the dome and the grain

Choose a tag to compare

@github-actions github-actions released this 08 Oct 22:28

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 cuts and 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 new burn mode.
  • Wavefold and Colorizer no longer turn dark grounds white by default; the old
    negative look is the new invert switch.
  • 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...
Read more

Palinopsia v1.1.0

Choose a tag to compare

@filliformes filliformes released this 18 Sep 14:46

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 -cr on it once.
  • 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 → npm run build:mac).