Palinopsia · Control Surface
Every knob, slab and macro in the instrument answers to an OSC address.
This is the full /opsia/… namespace : how Pandore, TouchDesigner, or any OSC
source plays Palinopsia, and how Palinopsia answers back : mirroring its state, streaming the analyzed
picture over /opsia/vision, and firing embodied gestures over /body.
Opsia is just Palinopsia's short name : it is why every address starts with /opsia, and it is the name you will meet across this page.
Nothing matches. Esc clears the filter.
Continuous controls take a single normalized float, rescaled to the target's declared range on arrival, so a controller never needs to know a parameter's real min/max. A handful of address shapes cover everything else.
0..1, scaled into the declared range of the target.0), a float 0..1 across the members, or the member's name string. The OSC type tag decides : a float 2.0 is the top of the range, not index 2.≥ 0.5 (mute · solo · feedback · isolate).1, then 0 to re-arm.r g b [a], or a single value read as grayscale./hue, /saturation, /brightness or /alpha takes one float 0..1 : that part, in the color picker's own space, the rest of the color held.1, like the UI. Enum indices count from 0./opsia/bpm is sent in BPM, clamped 20..800. The few other raw values (seconds, gains, a pan, a count) say so in their row./opsia/… address). While the Resolume mapper learns, Resolume's own /composition/… messages become its columns.A layer is addressed /opsia/layer1/… to /opsia/layer4/…, the form
OSCQuery advertises and the feedback sends back. The older /opsia/layer/1/… is still read.
/opsia/layer {n}/opacity f 0..1Layer opacity.
/opsia/layer {n}/speed f 0..1Layer time multiplier : 0..1 maps to 0 to 20×.
/opsia/layer {n}/mix f 0..1A/B source crossfade (0 = A, 1 = B).
/opsia/layer {n}/trail f 0..1Feedback trail persistence.
/opsia/layer {n}/blend i · f 0..1 · sLayer blend mode : an index, 0..1 across the 20 modes, or the name : normal · 50add · add · subtract · multiply · screen · overlay · softlight · hardlight · darken · lighten · difference · exclusion · dodge · burn · wrap · weave · lumakey · consume · lightercolor (index 0 to 19; 50add, the additive crossfade, came in at 1 in v1.3.0, so later indices moved up one).
/opsia/layer {n}/sourceblend i · f 0..1 · sHow B combines with A before the crossfade : the same 20 modes, by index, 0..1 or name.
/opsia/layer {n}/mute ≥ 0.5Silence the layer.
/opsia/layer {n}/solo ≥ 0.5Solo the layer.
/opsia/layer {n}/feedback ≥ 0.5Layer samples its own previous frame.
/opsia/layer {n}/vary triggerVary this layer : a variant at its own amount, like its Vary button.
/opsia/layer {n}/video/{A|B}/play · loop · grain ≥ 0.5A video slot's transport : play, loop, granular playback. Without {A|B} : the layer's first video slot. An Import audio slot answers to the same addresses (no direction, no grain).
/opsia/layer {n}/video/{A|B}/volume f 0..1The film's own sound (0 = silent, the default), or an audio slot's volume. Heard on Sonify's output device.
/opsia/layer {n}/video/{A|B}/direction i · f · sForward · reverse · pendulum (index, 0..1 across, or the name).
/opsia/layer {n}/video/{A|B}/ignoreglobal ≥ 0.5The clip plays at its own speed (× its layer's), whatever the global speed.
/opsia/layer {n}/video/{A|B}/speed f 0..1Playback speed, log across 1/64× to 128× (a sound file plays 1/16× to 16×).
/opsia/layer {n}/video/{A|B}/position f 0..1A one-shot seek within the trim (never echoed back : the playhead moves every frame).
/opsia/layer {n}/video/{A|B}/in · out f 0..1The trim points.
/opsia/layer {n}/video/{A|B}/grainsize · grainspray · grainrev · grainjit f 0..1The granular player's grain size, spray, reverse odds and jitter.
/opsia/layer {n}/video/{A|B}/grainsync i · f · sGrains on free time or the tempo : free · 1/16 · 1/8 · 1/4 · 1/2.
/opsia/audiolayer/ volume f 0..2The Audio Layer's volume, a gain (1 = as it comes).
/opsia/audiolayer/ mix f 0..1A to B : 0.5 plays both whole, toward an end the other one fades out.
/opsia/audiolayer/ mute ≥ 0.5Mute the Audio Layer.
/opsia/audiolayer/ play ≥ 0.5Both files from their in points together (≥ 0.5), or both paused. Advertised, but never sent back by the feedback, so a destination that echoes its state can't restart the files mid-show (the per-slot play is sent).
/opsia/audiolayer/ {A|B}/volume · pan · mute fA slot's volume (a gain, 0..2), pan (-1 left .. 1 right), mute (≥ 0.5). A file, a live input or an NDI® source.
/opsia/audiolayer/ {A|B}/play · loop · ignoreglobal · keeppitch ≥ 0.5A file slot's transport; keep the pitch when its speed changes.
/opsia/audiolayer/ {A|B}/speed · position · in · out f 0..1A file slot's speed (log, like a video's; a sound plays 1/16× to 16×), a one-shot seek, the trim points.
Each layer has two source slots and three FX racks : one per source, plus the mixed layer rack. Any shader input is addressable by its declared name; the value auto-scales to that input's type and range (including color and point2D multi-arg forms).
…/layer {n}/source/{slot} sSwap the source generator : a shaderId (a shader of your own from the Source Editor goes by its user-… id), a built-in's display name, or none. The one already there keeps its settings. none empties the slot; a name it does not know leaves the slot as it is.
…/ source/{slot}/{input} f 0..1 →A source shader input, scaled to its range.
…/ source/{slot}/{input}/{part} f 0..1One part of a color : hue · saturation · brightness · alpha, the rest held. The same /{part} follows every color input address (its effects, the layer's, the master's, the Background's).
…/ source/{slot}/fx/{i}/{input} f 0..1 →An input on the per-source FX unit i.
…/ source/{slot}/drop f f [f]Marbling : a drop at x y (0..1 of the frame, y up), its size × the drop size (default 1). Live : never in the undo or the session. One number is the plain drop ▸ trigger.
…/layer {n}/fx/{i}/{input} f 0..1 →An input on the per-layer FX unit i.
How a layer's B answers its A : in color (the harmony) and to the sound (the coupling, driven by the audio tab's input). Both sit in the Mixer's columns.
…/layer {n}/harmony f 0..1The A/B harmony, B's colors relative to A's (the Mixer's HUE, -1..1 there) : 0 pulls B onto A's colors, 0.5 leaves B as it is, 1 puts B on A's complement.
/opsia/ coupling ≥ 0.5The master switch for every layer's coupling (the Mixer header's ≈ coupling). On at launch, not saved.
…/layer {n}/coupling/mode i · f · sBond character : off · lean · hocket · cut · gate · drift.
…/layer {n}/coupling/amount f 0..1Coupling depth.
…/layer {n}/coupling/tightness f 0..1Vestigial (0) ↔ obvious (1).
…/layer {n}/coupling/feature i 0..6 · f · sThe audio feature that drives it : level · flux · transient · centroid · band · pitch · noisiness. An index (0 to 6) or a name reaches all seven; a float 0..1 spreads over the first six, level to pitch, as it always did, so noisiness takes index 6 or its name. Advertised and mirrored as a whole number 0..6.
…/layer {n}/coupling/band i 0..5 · f 0..1Which of the six bands the band feature listens to : a whole number, 0 the lowest to 5 the highest, or a fraction 0..1 across the six. A whole number counts as the band whatever its type tag (a float 1.0 is band 1, the second). Advertised and mirrored as a whole number 0..5, so a fader built from the advertisement reaches every band.
…/layer {n}/coupling/auto ≥ 0.5Level-matching (the Mixer's auto chip) : the feature heard against its own recent range, so a quiet track moves the mix as far as a loud one and silence stays still. On by default; below 0.5 the raw feature (a quarter-second crossfade). Advertised in OSCQuery and mirrored in feedback (1 on, 0 off).
Three locked finalizers close every composition : Vibe (palette / colour mastering), Context (atmosphere, depth, PBR relight) and the Finalizer (levels, grain, output shape). Address any of their inputs by name; freely-added master FX use the numbered rack.
/opsia/master/ vibe/{input} f 0..1 →A Vibe palette input (colour inputs take 3–4 args).
/opsia/master/ {stage}/{color}/{part} f 0..1A finishing color's part (vibe · context · finalizer) : hue · saturation · brightness (no alpha : these stages read RGB). Advertised in OSCQuery and sent back as feedback, like the Background source's color parts.
/opsia/master/ context/{input} f 0..1 →A Context input : haze, depth, light (point2D), PBR.
/opsia/master/ finalizer/{input} f 0..1 →A Finalizer input : levels, gain, grain, output shape.
/opsia/master/ fx/{i}/{input} f 0..1 →An input on a user-added master FX unit i.
/opsia/ bg/opacity f 0..1Background opacity (0 = off).
/opsia/ bg/speed f 0..1Its own clock, 0 to 4× (0.0625 = the default 0.25×) : its source, effects and a Collage's films.
/opsia/ bg/depth · bg/shadow f 0..1The shadow the layers cast onto it (0 = flat).
/opsia/ bg/blend ≥ 0.5How the layers sit on it : 0 = blend in (Layer 1 blends onto it in its own mode) · 1 = group (the layers composite as if alone, and the Background shows through their dark and transparent parts).
/opsia/ bg/randomize triggerThe Background's own dice : a new ground and rack, keeping opacity, speed, shadow and mode.
/opsia/ bg/source sSwap the ground (a ground's id or name, or none; anything else is ignored).
/opsia/ bg/source/{input} f 0..1 →A background source input, scaled to range.
/opsia/ bg/source/drop f f [f]Marbling on the Background : a drop at x y [size].
/opsia/ bg/fx/{i}/{input} f 0..1 →An input on background FX unit i.
Five single-float macros sweep the whole field at once. Each rests at 0.5 :
pushing either way pulls the composition along one expressive axis. The temperament dials rest at
0 (off).
/opsia/ density f 0..1Sparse ⇄ dense.
/opsia/ gesture f 0..1Gesture ⇄ Texture.
/opsia/ coalesce f 0..1Dispersal ⇄ Coalescence.
/opsia/ proximity f 0..1Near ⇄ far : pushes the scene into depth.
/opsia/ flow f 0..1Flow ⇄ Interruption.
/opsia/ tonicity · shutter · drift · superflicker f 0..1The temperament dials (0 = off) : tonicity, the shutter, the analog drift, the superimposition flicker (held under the flash-safety limit).
/opsia/ world s · iSelect the active World : id / name string, or a 1-based index into the bank.
/opsia/ world/amount f 0..1The World amount : how much of the active World's own change is on (1 all of it, the default; 0 the mood it found). Your edits, modulators and macros keep working under it. Remembered on this computer.
/opsia/ seq/run ≥ 0.5Run (≥ 0.5) or stop the macro-form sequencer.
/opsia/ seq/skip triggerAdvance to the next scene now (respects transition + variation).
/opsia/ seq/play ≥ 0.5The Seq page's transport : play every lane marked with transport (the scenes, the Sonify keys, the Body rule timeline; the beat lanes together on bar 1, or on Ableton Link's next bar), or below 0.5 stop them all.
/opsia/ seq/rules ≥ 0.5Run (≥ 0.5) or stop the Body rule timeline : while it runs, each rule with blocks is on inside them and off outside them, in bars of the tempo; stopped, the rules stay as they are.
/opsia/macro/ {k} f 0..1Drive Macro knob k, a smoothed macro that fans out to whatever you've mapped to it. Its old name /opsia/meta/{k} (before v1.3.2, when they were the Meta knobs) still works, in and in the feedback out.
/opsia/ bpm f 20..800Master tempo, raw, in BPM. With Ableton Link on, a tempo sent here counts as your own edit : it goes to every linked app (Link has no address of its own).
The audio brain pushes analysis features straight to the bus, where audio modulators and the A/B coupling read them per frame. They bypass the parameter store : sensor inputs, not controls, never echoed back on the feedback stream. They count while the audio tab's source is OSC, or Both (OSC wins while it is fresher than half a second, else the local input plays).
/opsia/audio/ level f 0..1Overall loudness.
/opsia/audio/ flux f 0..1Spectral flux (rate of change).
/opsia/audio/ transient f 0..1Onset / attack energy.
/opsia/audio/ centroid f 0..1Spectral brightness.
/opsia/audio/ pitch f 0..1Estimated pitch.
/opsia/audio/ noisiness f 0..1Noisiness (spectral flatness) : a clear tone at 0, noise at 1.
/opsia/audio/ band/{1-6} f 0..1Energy in one of six frequency bands.
A control or a layer made Persistent (right-click → Persistent) keeps playing through
a scene recall, a vary, or /opsia/randomize and its Transport scopes, fired from here as from
the page. Pins have no address of their own; a message sent straight to a persistent control still moves it.
/opsia/scene/ {n} triggerRecall scene n (1-based) : full-instrument state.
/opsia/ scene n i · fRecall the scene whose number (1-based, rounded) is the argument. Not edge-tracked : every message recalls, so send it once (the dataflou mesh's scene destination plays this one).
/opsia/ randomize triggerRe-roll everything within curated ranges, at the Transport's intensity.
/opsia/ randomize/{scope} triggerRe-roll one scope, at the Transport's intensity : sources · sourceparams · sourcefx · sourcefxonly · layerfxonly · layer · master · finishing · modulators.
/opsia/ panic triggerPanic flush : drop every self-feeding buffer (feedback · trails · frame rings · accumulators) at once. Same as key 0 / the ⚡ Flush button; advertised over OSCQuery.
/opsia/ vary triggerVary : a variant of the whole scene at the Transport's spread, like its Vary button.
/opsia/ randomize/masterparams · macro · inspector · sonify · resolume · background triggerThe other randomizes, as MIDI Learn fires them : master FX parameters in place, the Sonify patch, the selected Inspector unit, the Resolume pins, the Background's dice, and macro, new Macro knob values with their destinations kept (not the Transport's Macro Knobs scope, which also re-rolls the destinations; that one has no address). meta, its old name, still works.
/opsia/ output/x · y · scale · rotate · spin · feather f 0..1The output transform : the whole finished frame moved as one picture, 0..1 over each range : x and y -1..1 (frame widths and heights), scale 0..2, rotate -180..180°, spin -360..360° a second, feather 0..0.2. 0.5 = none for x, y, scale, rotate and spin. Skipped while the dome is on (the dome has its own turn, spin and offset).
/opsia/ output/flipx · flipy ≥ 0.5Flip the output frame.
/opsia/ output/edge i · f · sWhat shows past the frame : black · repeat · mirror.
/opsia/ output/reset triggerBack to the frame as it is.
/opsia/ space/mode i · f · sSpace : Sonify in the room, stereo · speakers · objects.
/opsia/ space/turn · glide f 0..1Turn the sound scene (0.5 = none) · how softly a following voice moves (0..2 s).
/opsia/ space/mirror · headphones ≥ 0.5Swap left and right · hear the room on headphones (binaural).
/opsia/ space/pieces i · fThe Collage pieces as sources of their own : an integer count, or 0..1 of 30.
/opsia/ space/{voice}/az · el · width · span · spin f 0..1Where a Sonify voice sits, 0..1 over each range : az -180..180° (0.5 = straight ahead; an offset while the voice follows), el -15..90°, width 0..180°, span 0..1, spin -360..360° a second. Voices : spectra orbit flow events raster sstv filter chord collage signal assemblage.
/opsia/ space/{voice}/follow ≥ 0.5The voice follows the picture, else it stays at its fixed place.
/opsia/ surface x y f fMetasurface cursor : two 0..1 floats on the scene plane; the output becomes a live blend of the nearest scenes. Sending it turns the surface ON (Pandore's Trill Square plays it).
/opsia/ surface/active boolEnable / disable the Metasurface (≥ 0.5).
/opsia/ surface/play boolDraw sequencer : auto-trace the drawn path across the plane (≥ 0.5).
/opsia/ surface/time fDraw-path loop time : seconds (or milliseconds if > 120).
/opsia/ surface/jump fDraw-path jump jitter : 0..1 maps to 0–100 %. Random teleports of the playhead to other spots on the path.
/opsia/ surface/way fDraw-path direction : 0 forward · 1 backward · 2 ping-pong.
/opsia/ surface/wiggle fDraw-path smooth wobble : 0..1 maps to 0–100 %. A sinusoidal vibrato around the traced position (distinct from jump's teleports).
/opsia/ surface/loop boolClose the draw path into a loop (end→start), so forward play flows around instead of teleporting.
The image-to-sound engine speaks its own sub-namespace. The eleven voices are
spectra · orbit · flow · events · raster · sstv · filter · signal · chord · collage · assemblage
(sstv is the Transmission voice); each takes
the same shape of address, so a controller can play any voice's probes, pitch and timbre. The
patch also travels with sessions and scenes. Index addresses (the root octave, a reading
path, the orbit shape, the chord's voice count, a mode, an octave, a tap, a sync mode, the voicing)
are advertised and sent as integers and read raw; a float sent there is read as 0..1 across
the range. A NaN is read as 0.
/opsia/sonify/ on boolMaster on/off for the sound engine.
/opsia/sonify/ master f 0..1Output gain.
/opsia/sonify/ root · rootoct · scale i · sThe global quantizer (key root, root octave and scale) : a name (harmonic minor, dimwh, Diminished W-H…) or an index : 0 chromatic · 1 major · 2 minor · 3 minor pentatonic · 4 whole tone · 5 dorian · 6 phrygian · 7 lydian · 8 harmonic minor · 9 ionian · 10 mixolydian · 11 aeolian · 12 locrian · 13 major pentatonic · 14 major blues · 15 minor blues · 16 diminished W-H · 17 diminished H-W.
/opsia/sonify/ keyseq/on · next bool · triggerRun the key sequencer (≥ 0.5) or stop it; next changes the key now (each message at 0.5 or more, not edge-tracked).
/opsia/sonify/ keyseq/mode s · iHow the next key is chosen : list · circle · affinity · pivot · picture.
/opsia/sonify/ keyseq/glide · chance f 0..1The glide to a new key (0 to 4 s) and the chance a change falls when the clock allows one.
/opsia/sonify/ keyseq/every · vary f s · f 0..1Free time : every how often a change may fall (0.25 to 300 s); vary draws each wait around it, between Every ÷ 4vary and Every × 4vary (0 = always Every).
/opsia/sonify/ keyseq/keys s · iPicture chooses from pool (0 : the roots and scales ticked) or list (1 : only the keys written for it).
/opsia/sonify/ keyseq/range · hold f 0..1 · f sPicture : range 0 reads the color wheel and the light as they are, 1 the piece's own range of them spread over every key and mood; hold the shortest a key stays (0 to 60 s).
/opsia/sonify/ {v}/on · gain · pan bool · fPer-voice enable, level and pan.
/opsia/sonify/ {v}/{probe·pitch·param} f 0..1A voice's probes (scan column, orbit centre/radius, raster rect…), pitch, and timbre / motion params, with the same names as the on-screen strip.
/opsia/sonify/ eq/preset s · iRecall a saved output EQ : its name, or its number in the menu (0 or flat : flat). The bypass switch and the glue stay.
/opsia/sonify/ filter/linein · linefrom bool · s | iThe Filter voice plays a line-in (≥ 0.5) instead of its noise; linefrom says which : input (an audio input) or layer (the Audio Layer, its slots mixed before its own volume and mute).
/opsia/sonify/ tap/a · tap/b i 0..4What each image tap reads : 0 the master output, 1-4 a layer.
/opsia/sonify/ {v}/tap i 0..1Which tap a voice listens to (A or B). Every voice but collage and assemblage (they hear films, not the picture).
/opsia/sonify/ {v}/looct · hioct iA voice's octave range (spectra, flow, events, signal, chord, collage, assemblage, filter, synth) : an integer octave, or a float 0..1 across the voice's span (collage and assemblage reach octave 9); the low end always stays below the high end.
/opsia/sonify/ spectra/sync · orbit/shape · filter/loop bool · i 0..4 · fSpectra's sweep locked to the tempo (one sweep a bar; off, the rate you had set comes back); the Orbit's shape (circle, 1:2, 2:3, 3:4, 1:3); the Filter's noise loop (0 free noise, up a frozen stretch replayed : a flutter, then a buzz).
/opsia/sonify/ collage/on · gain · pan · resonance · ring · harmonics · width · input · hp · lp · comp · ringin bool · f 0..1The Collage voice : the films of a Collage source heard all at once, each piece panned by its place and rung at a note of the key. comp is one compressor on all the films (0 = off), so they hold one level.
/opsia/sonify/ collage/hpslope · lpslope i 12 | 24 · fThe films' filters' slope : 12 or 24 dB per octave (an int as it is; a float, 0.5 and up = 24).
/opsia/sonify/ glue/on · amount · voice bool · f 0..1 · s | i 0..4The glue : one compressor on everything that leaves (Sonify and the Audio Layer), after the output EQ (both cards are in the audio tab). amount takes the threshold to -12 dB and the ratio to 4:1; voice clean · warm · punch · bite · slow.
/opsia/sonify/ collage/bank · decay · cutoff · peak · slope · tone · tilt · waves · wavesrate · noise · noiserate · detune f 0..1Its Ring bank (48 tuned resonant bands) : bank is the wet (0 the plain voice); tone and tilt are bipolar (0.5 = centre).
/opsia/sonify/ collage/send · choke · wavessync · noisesync · voicing bool · iThe bank added on top (send) or crossfaded (mix); choke or sustain; sync modes 0 free · 1 straight · 2 triplet · 3 dotted; voicing 0 Clean · 1 SEM · 2 MS-20 · 3 Steiner · 4 K35.
/opsia/sonify/ assemblage/{collage control} · accent · tape bool · f 0..1 · iThe Assemblage voice : an Assemblage edit's own sound, cut with the picture, each clip placed by its unit on the Assemble map. It takes every collage/… control above (its ring bank and octave range too), plus accent (a strike of the resonators at every cut) and tape (≥ 0.5 : the speed changes the pitch; below, the pitch is kept).
/opsia/sonify/ chord/waves · wavesrate · wavessync f · i 0..3The Chord's waves : a travelling level across its notes.
/opsia/sonify/ signal/wave · heads · path · steps i · f 0..1The Signal voice : read heads that play the picture as data. wave the grain (0 pip · 1 damped · 2 noise · 3 click · 4 fm · 5 square · 6 tri · 7 pink · 8 ping), heads 1 to 4, path 0 horizontal · 1 vertical · 2 radial · 3 spiral, steps per sweep 0..7 (8 · 12 · 16 · 24 · 32 · 48 · 64 · 96). An integer is the index; a float is 0..1 across the choices.
/opsia/sonify/ signal/decay · tone · fm · rate · spread · thresh · density · snap f 0..1Its grain length (0.2 ms to 500 ms), the noise grains' tone, the fm depth, the step rate (per second, or per beat when synced), the heads' polymeter spread, how bright a cell must be to fire, marks per head per step, and pitch from free frequency (0) to the scale (1).
/opsia/sonify/ signal/sync boolLock Signal's steps to the beat clock both Sonify sequencers share : rate then counts steps per beat, and switching carries the pace over as the page's button does.
/opsia/sonify/ synth/on · gain · pan · tap · looct · hioct bool · f 0..1 · iThe Synth voice : the moving things in the picture play it, each thing a voice (in poly the 8 strongest), its place the note on the key, its looks the sound. Its gain, its balance (0.5 the middle), its tap and its octave range (0 to 8).
/opsia/sonify/ synth/engine · voices · filter · chorus s · iIts engine (0 dco · 1 ms · 2 swarm · 3 fm · 4 modal · 5 voice · 6 fold · 7 pluck), voices (0 poly · 1 unison · 2 mono), filter (0 ladder · 1 ms · 2 morph), chorus (0 off · 1 I · 2 II) : a name or an index (a float 0..1 across the choices).
/opsia/sonify/ synth/timbre · harmonics · morph · cutoff · resonance · drive · hpf · fmode · envamt · attack · decay · sustain · release · glide · drift · level f 0..1Its sound : the engine's three macros, the filter (fmode the morph filter's low-pass to band-pass to high-pass), the envelope on the cutoff (envamt : 0.5 none), the envelope, glide, drift and its own level.
/opsia/sonify/ synth/mode · grid · bars · slide · sens · picture s · i · bool · f 0..1How the picture is read : mode 0 height · 1 keyboard · 2 radial (the dome : zenith to rim) · 3 score (a playhead on the beat, bars 0 one · 1 two · 2 four); grid 0 free · 1 on the 1/8 · 2 the 1/16 · 3 the 1/8 triplet; slide (≥ 0.5) or steps; sens how much movement counts; picture every patchbay depth scaled (0 : the picture only picks the notes).
/opsia/sonify/ synth/patch/{dest}/source · depth s · i · f 0..1The picture patchbay, one row per {dest} : vel · timbre · harmonics · morph · cutoff · reso · drive · env · pan · bend. source a name or an index : 0 none · 1 speed · 2 size · 3 brightness · 4 hue · 5 saturation · 6 texture · 7 x · 8 y · 9 direction · 10 age · 11 motion · 12 light · 13 warmth · 14 busyness · 15 cut (11 and up : the whole picture); depth 0..1 for -1..+1 (0.5 : none).
/opsia/sonify/ synth/preset s · iA factory sound by its name or its number (1-based) : the sound only (the read, the patchbay and the levels stay). Inbound only.
/opsia/sonify/ fx/{input} f 0..1The shared reverb / delay tail : send · delaytime · feedback · size · decay · damp · reverbmode · freeze · reverbmix …
The composited output is analysed back into features and streamed out (when OSC-out is on),
so the image itself can play a sound brain, the inward half of the loop. Each is a single
0..1 float; bind them on the far side as you would any control. The Performance tab's
picture section shows them all live, with what 0 and 1 mean.
/opsia/vision/ {feature} f 0..1 →One picture feature : brightness · contrast · motion · edges · entropy · centroidX · centroidY · warmth · saturation · hue · depth · depthSpread · flowX · flowY · divergence · curl · coherence (the last five are the picture's motion field : which way it flows, whether it spreads out or closes in, whether it turns, and whether it moves as one).
/opsia/body/ {feature} f 0..1 →One body feature, streamed while the Body camera runs : hands, each hand's shape handLeft… · handRight… + CurlThumb · CurlIndex · CurlMiddle · CurlRing · CurlPinky · PinchIndex · PinchMiddle · PinchRing · PinchPinky · Angle · Facing · Span (curls 1 = curled, pinches 1 = touching, angle 0.5 = upright, facing 1 = palm toward the camera, span 1 = close), pose, face, the nine silhouette zones, presence, the camera's motion field flowEnergy · flowX · flowY · flowDivergence · flowCurl · flowCoherence · flowCenterX · flowCenterY · flowArea, and the movement qualities moveEnergy · moveExpansion · moveFluidity · moveSuddenness · moveDirectness · moveSymmetry.
The Body page's gesture rules can fire their own OSC. When a rule fires and its
OSC out is on, Opsia sends a bang to the OSC-out target, so a body gesture (a pinch, a hand shape
such as a fist, a peace sign or horns, a pose, a shadow covering a screen zone, someone walking
into frame) can play the sound side. These live
under /body/…, outside the /opsia namespace, with the name you gave the rule.
Coming in, each rule can be turned on or off while you play, under /opsia/body/rule.
/body/ {name} i 1A gesture rule fired : the custom OSC name, or a truncated default like /body/HandsUpRndMod.
/opsia/body/rule/ {n}/active · toggle ≥ 0.5 · triggerA rule on or off, n its place in the Body page's list (1-based) : active ≥ 0.5 turns it on, below off (float, int or bool; fed back when it changes, camera on or not); toggle turns it on, or off when it is on. An inactive rule's gesture still shows in the monitor and fires nothing.
Opsia doesn't just receive : it describes itself and mirrors its live state, so a controller's surface can auto-bind and stay in lock-step as modulators sweep, scenes recall, or a hand moves a slider. Three routes, one shared address space.
The fixed controls, self-describing (type · range · value · description) : index addresses typed
i, the picture's features read-only. Shader inputs on sources and FX racks are not listed
(address them by name); the three finishing units' and the Background ground's float inputs are.
On this computer only (it listens on 127.0.0.1; on port-1 when the OSC port is 65535).
The tree follows what is loaded : while OSC in listens, it is published again (at most twice a second)
whenever the rows change, a source or an effect loaded, a slot's film or sound, the Audio Layer's slots,
the ground's inputs, the Body camera and its features.
http://127.0.0.1:port+1/ · ?HOST_INFO
A live value-stream on the same port for web / no-UDP clients, every 100 ms while one is attached.
With no LISTEN a client gets every path; LISTEN narrows it to the paths named,
IGNORE drops one. Triggers, seeks, the audio sensors and /opsia/audiolayer/play are never streamed.
→ {COMMAND:"LISTEN", DATA:"/opsia/…"}
← {FULL_PATH, VALUE:[v]}
A throttled diff-and-send loop (every 100 ms) pushes only changed controls back to a configured
host:port : the same /opsia/… addresses and values as OSCQuery advertises, indices as ints.
It follows what is loaded live. Triggers, seeks, the audio sensors and /opsia/audiolayer/play are never echoed. Pandore's UI tracks Opsia's.
Opsia → UDP → host:port
A scanline of the output, drawn like an optical soundtrack : /opsia/av/mark-signal
(32 floats) with mark-level · mark-centroid · mark-flux, to the same host:port.
MARK on, in the OSC section's ↗ out
The OSC monitor (the OSC section's monitor button) shows every message in and out, live, with its address, values and destination.
The same addresses are played by two other routes : the dataflou mesh (each of its
destinations is an /opsia/… address, played once per change) and the Agent (MCP)'s
osc tool (/opsia/… only; a trigger it sends fires every time). The agent's numbers go as
0..1 floats, as on the wire, so 1 is the top of a menu; an int goes only to an index address, or as
{"int": n}.
One port, two doors. Every message arrives on the same OSC input port : /opsia/… goes to the
map above, exactly as before and also while Learn is on; any other address is a controller's own, learned in
MIDI Learn's mode and played through what it was learned on. A learned address never replaces or hides a
built-in one, and both may drive the same control : the last message wins.
MIDI Learn on, click a control, send from the controller : the first message, MIDI or OSC, binds. Every
learnable control learns OSC (Macro knobs, transport, layers, Feel, scenes, rule boxes, the learn list's
actions); one address can play several. One number : that value. Several (/accxyz x y z) : the one
moved most over 300 ms. Strings are passed over; no value is a press. A stream already flowing at the click
waits 1.5 s for anything fresher. Bundles unpacked, no wildcards.
/1/fader3 → Layer 1 opacity
Found from the values : inside 0..1 (and true / false) → 0..1, inside -1..1 with some
below 0 → -1..1, whole numbers to 127 → 0..127, else the span seen. It widens for 5 s after
learning, then is typed per row in the Connect tab's mappings list. Continuous controls get it scaled into
their own range; triggers fire going up past the middle (1 then 0 is one press), a
rule's box toggles on each press.
i 64 of 0..127 → 0.504
Give the controller a reply port in the list : its learned controls answer in its own address and range (ints when it sends ints), at the IP it sent from, on change only, at most 30 a second, never the value that just came in (0.3 s after it last moved). The value playing : a modulator's, a scene recall's, Generate's. Off until a port is set; on / off per controller.
Opsia → UDP → controller IP : reply port
Learn into computer (every session, as before) or session (saved in its file : a piece's own
setup; New clears it, Generate keeps it, scenes never touch it). On an address and value the session uses, its
mapping stands in for the computer's, there only. Learned addresses are never advertised : OSCQuery and
dataflou keep /opsia only.
session > computer, per input