Stoatworks Labs

Orrery

Animated shapes for masks and pixel maps

Releasedv0.1.0Plugin & ModuleC++ / GLSL
Orrery — Animated shapes for masks and pixel maps
Four configurations rendered by the plugin's own offline harness, which drives the real plugin class through a headless GL context — not a Resolume screen capture. Clockwise from top left: a pulsing grid with hue spread across the set, an orbit chase in white, outlined squares on a bounce, and stars on a Lissajous.

What it does

Circles, squares, triangles, hexagons, stars, crosses, rings and bars, moving around the frame on a path you choose, for Resolume Arena and Avenue. It ships as two plugins rather than one, because FFGL resolves a single entry point per binary. Orrery is a source that draws shapes over its own background on its own layer; Orrery Mask is an effect that draws the same shapes over the clip it sits on, or cuts them into it — reveal the clip only inside the shapes, hide it only inside them, or tint it through them.

It was built for two jobs that pull in the same direction. The first is a quick animated mask: shapes over black, used as a luma mask or layered with a blend mode, without opening an animation package to make one. The second is pixel mapping — point Resolume's pixel mapper at a composition running Orrery and the shapes stop being graphics and become the lights. Grid lays them out on a fixture layout, Hue Spread gives every one its own colour, and Spread turns a clump into a chase that arrives in order.

Every shape's position is a closed-form function of its index and a single phase number. There is no simulation anywhere — a bounce is a triangle wave rather than a collision test, and a drift is a wrap rather than an accumulation. That is the feature rather than an implementation detail. A chase that integrates a velocity one frame at a time runs at whatever frame rate the host is managing, and Resolume's frame rate drops when the show gets heavy; a lighting chase that slows down when the projection load goes up is not a cosmetic problem. This one runs at the speed you asked for whether the host is holding 60fps or 20, looks identical at 720p and at 4K, and can be scrubbed to any point without playing what came before.

Because phase is just a number, locking to music costs nothing extra: Sync swaps the host clock for the host's own bar position and the shapes lock to the track with no separate code path. Set it to Manual and the Phase control becomes the only driver, so Resolume's BPM-synced animation, a keyframe or a MIDI fader can drive it directly.

  • Two plugins from one core — a source with its own background, and an effect that masks the clip
  • Eight primitives — circle, square, triangle, hexagon, star, cross, ring and bar — with roundness, outline, stretch and edge softness
  • Five paths — orbit, Lissajous, drift with wrap, bounce off the frame edges, and a static grid that pulses
  • Spread and Scatter take the set from a clump to an evenly-ordered chase to a swarm
  • Free-running, beat-locked, bar-locked or driven entirely by an external Phase control
  • Pulse the size and the brightness of each shape independently, with an adjustable duty
  • White, solid, hue spread across the set, or a hue that cycles — and a hard edge when the output is feeding fixtures rather than a screen
  • Four mask modes on the effect — shapes over the clip, reveal, hide, or colourise through them
  • Universal macOS bundle (Apple Silicon and Intel) and a Windows DLL

Where it stands

Released at v0.1.0. Verified entirely by its own offline harness, which renders real frames and measures where every shape landed against an independent prediction across five paths and four aspect ratios — it has never been loaded into Resolume, so check it in your own rig before trusting it in a show.

Watch it running

Orrery video thumbnail

Nothing loads from YouTube until you press play.Watch it there instead