GupArt is a small, self-contained audiovisual toy — a picture-and-sound readout of a synthetic system with two coupled layers. It's part of exploratory modeling of how a fast, reactive process and a slow, consolidating one balance each other. The simulation runs entirely in your browser and keeps no user data. (The page loads web fonts from Google's CDN, so your browser does make a request there; nothing about your interaction is recorded or sent.)
The math. Two coupled oscillator populations — a fast, reactive layer and a slow, consolidating one — are fields of complex Stuart–Landau (Ginzburg–Landau) oscillators with Kuramoto–Sakaguchi coupling, advanced by an exact Strang-split step with Euler–Maruyama noise; their synchrony is read as a Kuramoto order parameter and their phase-locking as the dyad's beat. On top of that, each layer runs an active-inference loop: it infers its state by minimizing variational free energy, then acts by minimizing expected free energy — an information-seeking (epistemic) term plus a preference-seeking (pragmatic) one — while the two weigh each other's beliefs through a precision-weighted linear opinion pool. Everything you see and hear is a function of those logged quantities.
It's a meter, not a mind. "Fires / kept / excited" describe the dynamics, not experience, agency, or emergence — anything that looks or sounds "alive" is pattern-reading on your side.
Created by Grant H Brenner.
Two coupled layers plus a regulator. A Fast layer flares moment-to-moment (quick reactivity) — a population of fast rhythms that moves nimbly and changes shape fast. A Slow layer hums with its own much slower rhythms, watches which pattern holds and, when one is stable enough, keeps it (slow consolidation / memory). The two pull on each other's rhythms through the Coupling, and a regulator steadies the pair so the system neither goes silent nor runs unchecked.
The cool form is the fast layer; the warm form is the slow layer. Each swells and morphs with its own activity — and the dance between them is itself measured, not staged: how fast the fast form circles the slow one is the layers' measured beat rate (locking slows the orbit toward a halt), and their distance is 1 − the measured dyad lock; the orbit carries the fast form in front of and behind its partner. A measured rhythm-order number (shown under the top bar, 0–1) reads how aligned the fast layer's own pulses are, and a soft glow bridging the two forms brightens with it. Tap a form to nudge that layer — with Coupling turned up you can watch the dyad lock dip and re-settle into tighter alignment (at low Coupling the dip disappears into the system's own fluctuations). The pebbles below are memory — they light up as patterns get kept. The top bar is a calm ↔ excited needle.
The fast layer plays light acoustic-guitar plucks — a strum on a consonant scale that gets faster and brighter as Excitement rises. When the slow layer keeps a pattern, a deep bowed-cello note sounds (longer as the Commit threshold rises). (Press 🔊 sound — browsers need a click first.)
The five sliders change how excitable, connected, selective, fast, and stirred-up the system is — tap or hover any slider for details. Try setting Coupling to 0 and raising Excitement: the fast layer's activity runs high and unchecked and the rhythm-order number drops; restore Coupling and it settles back (order climbs).