# FLOOD Feedback Laboratory

36 original, playable feedback instruments, FB01–FB36. These are evolving histories, not exact repeating loops. Each has six mechanism controls, shared gain/decay/memory/seed controls, two display colors, a separate Input 1 injection amount, manual recovery controls, and three named arrangements that change the recurrence rather than only recolor it. The reference setting is 1280 × 720 at 30 updates per second.

## Primary research and the design choices it informed

- [Skip Sweeney, Video Feedback, Exploratorium](https://annex.exploratorium.edu/turbulent/exhibit/feedback.html). The exhibit describes a camera viewing its monitor, with rotation, zoom, objects in the loop and a movable mirror. Its observation that small adjustments cause large visual changes informed the narrow gain/rotation ranges, generated perturbations and readily available Freeze/Clear controls. FB01–FB06 translate those operations into original texture transforms; they do not reconstruct a particular recorded Sweeney work.
- [James P. Crutchfield, Space-time Dynamics in Video Feedback, author’s abstract](https://csc.ucdavis.edu/~cmg/compmech/pubs/sptmdvfb.htm), Physica 10D (1984), 229–245; [full paper in the Vasulka archive](https://www.vasulka.org/archive/Artists1/Crutchfield,Jim/Space-TimeDynamic.pdf). The paper models the spatial return as a discrete-time image transformation and also discusses reaction–diffusion formulations. The optical controls, spatial blur and separate signal channels informed the overall state representation. FLOOD adds bounded storage, a separate exponential memory and performer controls; it is not a numerical replication of the paper’s experimental apparatus or a proof of the same attractors.
- [Rutt/Etra material and original technical brochure, Vasulka archive](https://www.vasulka.org/archive/Artists2/Etra,Bill/general.pdf), particularly PDF pages 1–3. The material distinguishes scan position, size, intensity, waveform controls and audio interfacing. FB07–FB12 separate those controls inside the returning image; FB33 uses source luminance to deflect a raster. These are original digital interpretations. They do not claim NTSC electrical fidelity, an actual cathode-ray deflection system, or reproduction of the original hardware.
- [John E. Pearson, Complex Patterns in a Simple System](https://www.staff.science.uu.nl/~frank011/Classes/complexity/Literature/Pearson.pdf), Science 261 (1993), 189–192. Its two-field reaction–diffusion equations, feed/kill parameters and finite initial perturbations informed FB19. The FLOOD version uses a four-neighbor stencil, limited precision, continuous optional seeds, advection and an extra memory return. Those changes make it a visual instrument rather than a calibrated reproduction of Pearson’s phase diagram. A look name such as “Wormlike Feed” describes artistic intent, not a guaranteed scientific classification.
- [UC San Diego, BENG 122A lecture 1](https://isn.ucsd.edu/courses/beng122a/lectures/beng122a-lecture1.pdf). Its discussion of feedback, delay and instability informed the independent return gain, energy loss and memory controls. These controls expose experimentation; no universal stability certificate is implied. Clamping storage values prevents arithmetic output from exceeding the framebuffer range, but a clamped field can still saturate, go dark, oscillate or behave irregularly.

The remaining wave, relay, prediction, logistic, phase and transport constructions are original discrete image recurrences built from those broad ideas. In particular, FB24 is gradient-driven dye advection, not a Navier–Stokes solver; FB35 measures source-versus-memory difference, not optical flow or tracked movement. No archival image, recording, source code or scanned page is embedded in the collection. The original patch code is MIT-licensed; cited research retains its own rights.

## Playing and preserving an experiment

Begin at the original arrangement. Move one experiment control while watching the image accumulate. Loop gain multiplies deviation from the resting state once per frame; Per-frame energy loss attenuates that deviation. Delayed memory retention slows a separate stored image, and Delayed memory return mixes that image back into the recurrence. These are different operations. Neither memory control promises a specified number of delayed frames.

Generated seed injection supplies a continuing perturbation. Set it to zero after reseeding to examine unforced persistence or decay. Seed footprint and motion control the stimulus, independently of the six experiment controls. Some thresholds only have a visible effect when the evolving image reaches them; compare both endpoints, or clear/reseed and allow an equal number of updates, when auditing them.

Freeze holds the two laboratory buffers while leaving display colors and display gain editable. Clear and Panic are held toggles that erase both buffers and black out the laboratory image; switch them off to resume continuous input. Reseed changes the initial perturbation and works while frozen. Its integer range 0–254 provides 255 distinguishable reset epochs in the 8-bit alpha channel. These three recovery operations are deliberately excluded from microphone automation. Freeze remains eligible.

Panic controls the laboratory layer. The standard independent video overlays and later output processing belong to the common engine and retain their own settings. Use the engine’s output stop/blackout when the entire composed output must go black.

Input 1 must be explicitly connected through the existing media controls. Raising “Input 1 into feedback” then feeds the source into the recurrence independently of the usual Input 1 overlay alpha. Without a connected source its effective injection is zero. The spatial/camera family uses the generated stimulus as a test source until a real input is enabled. No factory or look asks for camera/microphone permission, creates a microphone connection, or starts audio playback.

The third arrangements of FB01, FB07, FB13, FB19, FB25 and FB31 include a small optional route to their first experiment control. They remain silent and unconnected until the performer enables an audio source. All other eligible numeric/color/switch controls can use the parent engine’s typed audio mapper; recovery commands remain manual. Integer controls advance in discrete steps.

Store settings and the selected arrangement with the normal FLOOD bank/workspace flow. The settings describe how to evolve a field; they do not serialize its GPU pixels. Reloading, changing resolution or reinitializing the renderer starts new history. A snapshot or clip is the appropriate way to preserve one exact visual state or performance.

## Runtime and integration contract

`require('./feedback-laboratory.cjs')({N,C,B})` returns 36 patch definitions. The factory attaches an `experiments` array for audit tooling. Each definition supplies a closure-free `build`, JSON-serialized `MPU_PATCH_DATA` in `extraCode`, schema fields, three looks, categories/tags, defaults and capture hints. No additional runtime installer or external asset is required.

The builder defines three WebGL 1 source functions. `o2` stores the current RGB field and reset epoch in alpha. `o1` stores the separately retained field and its epoch. A display function converts the field into an opaque colored image and passes it to `MPU_FINISH`; `o0` and `o3` remain under the common output/datamosh pipeline. Explicit `historyTexture` sampler arguments are essential: in the bundled Hydra draw order, directly sampling its `prevBuffer` uniform caused a read/write framebuffer conflict. Self-inputs passed through Hydra’s `getTexture()` select the safe opposite ping-pong texture.

Signed models center stored zero at 128/255, which the 8-bit buffers can represent, rather than at 0.5. Phase and domain-wall instruments display their stored spatial differences; the logistic display shows activity-weighted deviation. Those mappings reveal the evolving signal instead of turning a large uniform state into an almost-white frame. They are display choices, not additional physical claims.

Each pass is a small neighborhood or coordinate transform, with no ray marcher, history array or dynamically allocated per-frame resource. There are two state passes plus the common output pass. GPU workload still scales with resolution and selected common effects. 720p30 is a starting point, not a measured guarantee for every laptop or concurrent application.

Time controls seed travel and selected scanning terms; the recurrence itself advances once per rendered frame. Freeze is therefore different from merely setting animation speed to zero. Frame skipping, changing frame rate or changing sample resolution changes the evolution. Reproducible recording requires chronological warmup, fixed frame timing and retained buffers. Do not seek directly to a timestamp and expect the same state. The capture hints explicitly mark feedback as nonperiodic and request inspection of the actual end/start boundary rather than asserting a seamless loop.

## Verification boundary

`node --test MPU_Revision_Studio/feedback-laboratory.test.cjs` covers stable IDs, six families of six, unique state kernels, closure-free builds, output ownership, field binding and legal preset ranges, camera injection gating, command priority, the 255 reset epochs, explicit safe history samplers, and device-free construction.

The focused real-GPU check of FB01 and FB19 passed all three arrangements, animation and applicable numeric controls with no shader or GL errors. Disconnected Input 1 injection correctly had no visual effect. That focused check identified and confirmed the history sampler fix. The parent’s full collection audit is the authoritative evidence for all 36 instruments and source hashes. Source-level tests alone do not certify visual quality, dynamics at every parameter combination, or cross-GPU equivalence.

The subsequent quality pass inspected and corrected FB12/15/20/21/22/25/26/27/28/29/30, then verified their three arrangements, motion and applicable controls on the local Intel/ANGLE renderer at 640 × 360 with 90 chronological warmup updates. It removed unintended constant offsets from feedback contrast, corrected an excitable resting state, supplied a spatial test signal to the relay cells, and tuned nonlinear arrangements that had become flat. The final amplifier arrangement also received its own fresh GPU check. These diagnostic previews are not a promise of the same field at another resolution or elapsed history.

## Instrument inventory

The table below is generated from the authored definitions so control and arrangement names match the deliverable.

| Instrument | Family | Six mechanism controls | Three arrangements |
|---|---|---|---|
| FB01 · Concentric Light Well | Optical recursion | Return magnification; Return rotation; Focus radius; Iris radius; Optical center X; Lens stretch | Still Iris Observatory; Contracting Lantern; Wide Turning Aperture |
| FB02 · Mirrored Rosette | Optical recursion | Mirror sectors; Radial return scale; Mirror axis angle; Mirror participation; Sector separation; Rosette aperture | Sevenfold Glass; Three Open Reflections; Twelve Tight Facets |
| FB03 · Off Axis Spiral | Optical recursion | Spiral magnification; Spiral turn; Drift X; Drift Y; Horizontal compression; Chromatic handoff | Offset Spiral Arm; Elliptical Counterturn; Fast Chromatic Corkscrew |
| FB04 · Prismatic Channel Orbit | Optical recursion | Channel angle split; Orbital scale; Channel radial offset; Color cross-coupling; Shared orbital turn; Halo focus | Small Spectral Orbits; Separated Three Returns; Coupled Prism Storm |
| FB05 · Folded Room Return | Optical recursion | Horizontal mirror period; Vertical mirror period; Room turn; Room magnification; Reflection displacement; Edge attenuation | Folded Chamber; Wide Horizontal Cloister; Dense Oblique Rooms |
| FB06 · Focus Aberration Bench | Optical recursion | Focus sample distance; Focus ellipticity; Lens magnification; Aperture falloff; Coma displacement; Unsharp contribution | Soft Astigmatic Lens; Sharp Comatic Return; Diffuse Vertical Bloom |
| FB07 · Line Slip Memory | Scan and phase | Scan row count; Horizontal line slip; Slip beat rate; Raster shear; Delayed color phase; Row gate duty | Locked Scan Drift; Slow Broad Line Rolls; Fine Torn Raster |
| FB08 · Interlace Phase Lattice | Scan and phase | Line groups; Opposed line offset; Field alternation rate; Field coupling; Weave inclination; Field phase offset | Interwoven Field Hold; Slow Alternating Bands; Canted Field Exchange |
| FB09 · Traveling Read Head | Scan and phase | Tape travel per frame; Read head width; Read head sweep rate; Head source offset; Write participation; Unwritten erase rate | Single Read Window; Wide Slow Tape Head; Narrow Fast Overwrite |
| FB10 · Quadrature Scan Oscillator | Scan and phase | Horizontal deflection; Vertical deflection; Horizontal scan frequency; Vertical scan frequency; Quadrature phase; Cross-channel exchange | Quadrature Raster; Wide Low Frequency Fold; Dense Phase Crossings |
| FB11 · Chroma Carrier Heterodyne | Scan and phase | Carrier periods; Beat offset; Chroma modulation; Carrier displacement; Carrier orientation; Delayed carrier share | Slow Chroma Beat; Broad Beat Islands; Fine Carrier Interference |
| FB12 · Raster Foldback | Scan and phase | Foldback row count; Horizontal fold count; Row stagger; Alignment hold; Field roll rate; Return contrast | Threefold Raster Hold; Broad Twofold Roll; Dense Stepped Foldback |
| FB13 · Leaky Two Chamber | Delayed and coupled memory | Chamber divider X; Interchamber transfer; Chamber transport; Reflection participation; Divider softness; Chromatic transfer | Balanced Chambers; Narrow Reflecting Annex; Rapid Unequal Exchange |
| FB14 · Ping Pong Relay | Delayed and coupled memory | Relay displacement; Bounce angle; Partner return strength; Color inversion share; Diagonal seam slope; Outer damping | Diagonal Relay; Long Gentle Rebound; Tight Inverting Volley |
| FB15 · Ring Delay Chain | Delayed and coupled memory | Relay sector count; Neighbor phase bias; Neighbor handoff; Channel permutation; Radial relay shift; Relay nonlinear slope | Nine Relay Stations; Four Long Arcs; Dense Circular Handoff |
| FB16 · Predictor Corrector Field | Delayed and coupled memory | Prediction gain; Correction gain; Neighbor smoothing; Neighbor reach; Spatial prediction skew; Correction channel exchange | Measured Extrapolation; Damped Local Forecast; Overshooting Color Predictor |
| FB17 · Difference Memory Laboratory | Delayed and coupled memory | Difference amplification; Difference threshold; Delayed sample offset; Difference return share; Residual floor; Channel comparison rotation | Soft Temporal Edges; Long Low Contrast Residue; Hard Chromatic Difference |
| FB18 · Bidirectional Transport | Delayed and coupled memory | Horizontal transport; Vertical transport; Counterflow exchange; Diffusion reach; Diffusion share; Return axis turn | Opposed Dye Streams; Slow Diffuse Confluence; Fast Oblique Counterflow |
| FB19 · Gray Scott Seed Field | Reaction and wave fields | Diffusion sample reach; Inhibitor diffusion ratio; Feed rate; Kill rate; Reaction step; Advection drift | Seeded Chemical Islands; Slow Wormlike Feed; Fast Dividing Field |
| FB20 · Excitable Recovery Sheet | Reaction and wave fields | Excitation diffusion reach; Excitation threshold bias; Recovery speed; Recovery coupling; Integration step; Neighbor diffusion | Slow Recovery Sparks; Broad Refractory Waves; Fast Excitation Fronts |
| FB21 · Damped Drum Memory | Reaction and wave fields | Wave propagation coefficient; Velocity damping; Membrane radius; Boundary lobes; Horizontal wave stretch; Edge absorption | Five Lobe Membrane; Small Absorbent Drum; Wide Resonant Sheet |
| FB22 · Counterpropagating Wave Guide | Reaction and wave fields | Wave transport; Channel exchange; Dispersion strength; Dispersion reach; Wave attenuation; Standing wave drive | Opposed Wave Traffic; Soft Standing Guide; Fast Dispersive Exchange |
| FB23 · Catalytic Front Garden | Reaction and wave fields | Front diffusion reach; Front reaction strength; Ignition threshold; Inhibitor recovery; Front drift; Inhibitor strength | Seeded Growth Wake; Slow Broad Inhibition; Sharp Advancing Front |
| FB24 · Curl Transport Basin | Reaction and wave fields | Velocity sample reach; Basin rotation; Gradient advection; Dye diffusion; Channel vorticity coupling; Flow ellipticity | Quiet Curl Basin; Wide Diffuse Vortex; Fine Counterturn Dye |
| FB25 · Logistic Image Lattice | Nonlinear stability | Logistic growth parameter; Neighbor coupling; Neighbor reach; Delayed map share; Cell growth bias; Forcing phase rate | Coupled Island Map; Ordered Low Gain Tiles; Driven Chaotic Lattice |
| FB26 · Schmitt Memory Cells | Nonlinear stability | Lower relay threshold; Upper relay threshold; Neighbor pressure; Cell grid density; Grid staggering; Temporal comparison | Hysteretic Cell Memory; Wide Persistent Relays; Fine Switching Chess |
| FB27 · Saturating Amplifier | Nonlinear stability | Nonlinear slope; Seed-weighted amplifier bias; Saturation knee; Feedback blur radius; Negative feedback; Local contrast mix | Soft Amplifier Balance; Low Bias Broad Saturation; Sharp Driven Knee |
| FB28 · Phase Lock Frontier | Nonlinear stability | Phase coupling; Frequency detuning; Coupling neighborhood; Cross-channel phase lag; Locking harmonic; Coupling anisotropy | Near Locked Domains; Slow Broad Synchrony; Detuned Harmonic Islands |
| FB29 · Bistable Well Array | Nonlinear stability | Well relaxation step; Well selection bias; Domain diffusion; Delayed well pressure; Domain sample reach; Striped potential bias | Balanced Domain Walls; Wide Biased Wells; Fine Restless Boundaries |
| FB30 · Folded Threshold Escape | Nonlinear stability | Map stretch; Fold threshold; Fold depth; Seed-weighted map offset; Spatial exchange; Leak threshold | Threshold Fold Balance; Soft Folded Plateau; Sharp Escape Stripes |
| FB31 · Camera Afterimage Conveyor | Spatial and camera feedback | Conveyor horizontal drift; Conveyor vertical drift; Luminance push; Change residue gain; Source threshold; Source deflection skew | Gentle Source Conveyor; Wide Slow Change Trail; Fast Slanted Residue |
| FB32 · Silhouette Growth Lens | Spatial and camera feedback | Contour neighborhood reach; Growth versus erosion; Silhouette threshold; Contour edge contribution; Lens bulge; Contour update share | Soft Growing Outline; Contracting Silhouette Shell; Expanding Edge Bloom |
| FB33 · Luma Topographic Return | Spatial and camera feedback | Topographic scan rows; Luminance elevation; Depth magnification; Raster plane tilt; Scan-band contrast; Neighbor contour offset | Raised Raster Memory; Wide Low Relief Plane; Fine Inclined Scan Terrain |
| FB34 · Slit Scan Time Weave | Spatial and camera feedback | Capture slit width; Slit sweep rate; Slit inclination; History transport; Cross-slit memory; Source write strength | Crosswoven Source Slits; Broad Slow Exposure; Fine Fast Time Fabric |
| FB35 · Gradient Motion Echo | Spatial and camera feedback | Gradient sample reach; Gradient displacement; Temporal difference weight; Rotational drift; Motion threshold; Echo diffusion | Gentle Gradient Echo; Diffuse Slow Motion Wake; Sharp Curling Residue |
| FB36 · Bilateral Source Recirculator | Spatial and camera feedback | Mirror axis X; Lens recirculation scale; Source lens deflection; Mirror return share; Split transition width; Partner chroma exchange | Balanced Mirror Source; Wide Soft One-Sided Lens; Tight Chromatic Reflection |
