Pendulum
2026Performance
Live visual system for two-person experimental music performances. Generative scenes react to MIDI, audio analysis, and pose tracking via MediaPipe.
Live visuals for a two-person improvised music set — no timeline, no cue list, nothing scripted. The visuals run autonomously and listen.
How it works
- Every input writes to one flat signal bus: MIDI CCs from a controller, Web Audio analysis of the synth line-in (RMS, spectral centroid, onsets), MediaPipe pose and face tracking from two cameras, and a phone sending OSC. Scenes read smoothed signals through the bus, so a page reload never freezes the picture.
- Hydra, Three.js, and p5 scenes coexist behind one renderer interface. Switching scenes swaps in a fresh canvas, so each engine gets a clean WebGL context and no orphaned render loops.
- Landmarks and audio envelopes pass through a one-euro filter (Casiez et al., CHI 2012) rather than a fixed low-pass — smooth without the lag.
- A CodeMirror panel livecodes Hydra mid-performance; saved sketches register into the scene rotation and persist across sessions.
- The phone's panic button blacks everything out in ~250 ms using a CSS overlay on the body — renderer-agnostic, so the kill switch works identically whichever engine is on screen.
Setup
A two-machine rig on a dedicated travel router: a Node bridge takes OSC over UDP and fans it out to the browser over WebSocket; the visuals machine runs the scenes. Built as a performance instrument, tuned in rehearsal.
TypeScriptHydraMediaPipeViteNode.js
live-visualshydramediapipeperformance