Releases: stoatworks-labs/flyback
Release list
v0.1.0
High-voltage discharges for Resolume Arena and Avenue, as two FFGL plugins in one download: SW Flyback, a source with five machines (a Jacob's ladder, a Tesla coil, a Van de Graaff generator, a plasma globe and a Lichtenberg figure), and SW Flyback Over, an effect that makes the clip the ground, so bolts strike its bright parts, arcs bridge its highlights and the flash lights it.
Air is an insulator until the field tears it, and where it tears is a Laplace problem. Every discharge grows by the dielectric breakdown model (Niemeyer, Pietronero & Wiesmann, 1984): the electrodes and the channel grown so far are held at their potentials, Laplace's equation is solved on a lattice sized in metres (PCG with a multigrid preconditioner, not point-charge superposition), and the channel extends with probability ∝ |∇φ|^η. One exponent sets the look, from a Lichtenberg figure at η = 1 through lightning to a nearly straight arc. Around it sit each machine's circuit — Ayrton's arc on a supply with a source resistance, an interrupter and hot-channel memory, a belt charging a sphere to Peek's field, a globe's wandering filaments — deciding when the air breaks and how much energy it carries. Current splits through each tree by Kirchhoff, and a frame's light is exactly the event's energy × a luminous efficiency, so a bang split into ten branches is not ten times brighter.
What is verified
By tools/verify.sh on an M4 Max, macOS, on 2026-09-24 (42 steps, all green):
- The Laplace solver holds a coaxial closed form at every free site within its one-lattice-step bound (worst 0.65 of it).
- Clusters grown at η = 1 measure a fractal dimension of 1.744, where the same estimator reads true DLA as 1.742.
- Every Jacob's-ladder arc goes out at Ayrton's extinction length L* = 0.1338 m to one lattice step; the climb takes the closed-form 0.371 s.
- The Tesla coil fires exactly 7200 bangs a minute at 120 BPS, and its streamers lengthen with BPS once the interrupter outruns their cooling.
- Every polished Van de Graaff spark comes C·V_b/I = 0.3519 s after the last, to 1.3e-11 s; in the corona window every interval is the charging ODE's closed form; a rough sphere never sparks and holds at V_c + I/G.
- Current balances at every node of every tree to 1.1e-7; each frame's light equals energy × efficiency within a derived bound (worst 1.9e-5, and 2.4e-5 at 320×180).
- Over a bright disc in a black clip, 600 of 600 strikes land in the disc.
- Every pixel check and its negative control passes again at 320×180, CI's raster. Fourteen deliberately wrong models are all detected; nine one-character mutants of the engine and the shipped GLSL are all caught; every control changes the picture where it applies.
oxbowloadsSW Flyback/HV01/ source andSW Flyback Over/HV02/ effect and renders through each. - CI runs the no-GL half (
hvtest --offline: the solver, the dimension, the three machines' circuits, Kirchhoff, defaults and names, with their negative controls), compiles every shader withglslc, and builds Windows. - Windows, in Resolume Arena 7.27.1 (win-lab, Mesa llvmpipe, no GPU, 2026-09-24): a CI build of this source loads from Extra Effects, both plugins register with the right id and type, all 54 and 55 host controls match the declaration, both render and Arena's log stays clean: 15 of 15 of the fleet gate's checks, with the audio controls skipped (no sound device). 33 of the source's controls and 43 of the effect's moved the picture; eight of the source's (Belt Current, Gap, Sphere Finish, Origin, Rise Speed, Wind, Target X/Y) were inconclusive, because they act through discharges that come and go between the gate's single-frame grabs — the effect shows the same controls live. Software rendering says nothing about a GPU or about speed.
What is not
- Never loaded into Resolume on macOS. The engine runs on a worker thread one frame late (the first frame shows the apparatus with no light); that has never run inside a host on macOS.
- Some constants are models, not measurements: the low-current Ayrton constants, the streamer field, the globe's glass coupling, a toroid treated as a sphere, the line weights behind each gas's colour (AGENTS.md says which were carried from memory).
- The Lichtenberg figure grows over seconds and stays lit, which is staging; there are no racing sparks down the Tesla coil's secondary.
- No real audio has reached it in a host, so Resolume's 64-bin FFT mapping remains an assumption.
- No OpenFX port. There is a user guide at https://stoatworks-labs.com/software/flyback/guide/ and a browser demo at https://flyback-demo.stoatworks-labs.com (a port of the engine, checked only by a reader).
The macOS build is signed and notarised; the Windows build is unsigned, so SmartScreen warns once. The bundle filenames are Flyback.bundle / Flyback Over.bundle (.dll on Windows); drop both into Extra Effects.