A top-down piano video seeds a shaded Game of Life. The GoL's column density becomes a live spectral filter on the piano's own audio. how it works ↓
github ↗ · MIT · No dependencies — vanilla JS, Canvas 2D, Web Audio.
Drop a piano video here
Top-down camera on the piano action (hammers visible below keys) works best. MP4/WebM/MOV. Any length. Local file — nothing uploaded.
or
Or (Joseph's upright, 20 s, ~5 MB).
Click ON to initialize Web Audio. Video will unmute; audio flows through the graph.
The pipeline is four stages, each one line of thinking:
MediaElementAudioSource. When the Game of Life develops structure in a particular column region, the corresponding frequency band opens up on the audio — you hear those partials of the piano bloom.
The loop closes: piano strike → detection → substrate → filter over that same strike's decay → back to your ears. Stable GoL attractors give the piano a fixed color; chaotic GoL states morph its timbre in flight.
Drop a top-down piano video at the top. If the detection is off, adjust:
For non-piano sources — anything with a well-defined bright-vs-dark interface that moves — this same detector will probably work: keys typed on a keyboard, hands over a xylophone, drumsticks on a snare, feet on a treadmill. The Game of Life and the filter bank don't care about the source.