Prism Catch · Creative coding

Catch the light between your hands

Prism Catch is an interactive p5.js sketch played with your hands. Light falls through the frame as trails of prism-colored balls, and a rope strung between your index finger and thumb catches them. Open your hand and the rope stretches wide; pinch and it gathers into a cradle. There are no instructions, no score, and no goal beyond the pleasure of catching something.

The sketch running live. Press play for sound, or open it and catch a few yourself.Run it in the p5.js editor: editor.p5js.org

Overview

A study in motion, collision, and delight

This started as a personal creative-coding exercise: I wanted to build an interaction that needed no explanation. Anyone who holds up a hand understands the rule within a second, because the feedback is immediate and physical. It became a study in how far a single gesture can carry an experience when the response is generous enough.


Role

Solo: concept, code & visual design

Type

Interactive sketch, self-directed

Built with

p5.js · MediaPipe · JavaScript

Concept

Light, split and falling

The starting image was a prism: white light entering, a spectrum leaving. Instead of drawing the prism itself, I drew what comes out of it. Each falling streak is a band of the spectrum, tapering as it descends, so the screen reads as light rather than as objects. The palette stays saturated against pure black so the color does the work with no interface around it.

Prism-colored light streaks falling against black
Falling light: each streak is a tapering band of the spectrum.

How it works

Your hand becomes the rope

There is no cursor and no controller. A webcam feed is read for hand position, and the line you catch with is strung between two points on your own hand, so the thing you control is the shape of your grip.

01 · Hand tracking

MediaPipe, running through p5.js, detects the hand landmarks every frame. Two of them drive the whole piece: the tip of the index finger and the tip of the thumb.

02 · The rope

A continuous rope is strung between those two points. It is built from a chain of segments held by distance constraints, so it sags, swings, and bends under what it carries instead of snapping to a rigid line.

03 · Collision

Falling balls are tested against the rope each frame. A hit settles onto the line and rides it, so widening or closing your hand tips the catch, gathers it, or spills it back into the dark.

The catch is deliberately forgiving. The rope carries more thickness than it appears to, so near-misses still register, and a ball settles onto it rather than glancing off. Both choices are dishonest to physics and correct for feel: they make the player look better than their aim. The flexible segments do the rest, because a rope that visibly bends under weight reads as real without needing to be accurate.

A pinched rope cradling a bright cluster of caught balls
Pinched: finger and thumb close, and the rope gathers into a cradle.
A wide rope sagging under many caught balls at once
Opened: the rope stretches into a net, sagging under everything it holds.

Decisions

What I tuned, and why

Trails over frames

Drawing a translucent black rectangle instead of clearing the canvas leaves a soft trail, so motion reads as light rather than as moving dots.

Fall speed

Fast enough to feel alive, slow enough that a person can plan an intercept. Too fast and it stops being catchable.

A rope, not a paddle

A rope that bends lets people invent their own shapes, a bowl to collect, a taut line to sweep, and gives the piece more range than a rigid object would.

No score

Adding points would turn play into performance. The reward is the burst itself, which keeps the piece calm.

Outcome

What it produced

The sketch is published and runs live in the p5.js editor, so anyone can open it and play without installing anything. Watching people use it, the result I cared about held up: nobody asked what to do. They held up a hand, saw the rope bend under the first catch, and kept going. That is the same principle behind my thesis work, that a system can teach its own rule through feedback instead of instruction, tested here at a much smaller scale.

It also fed directly into SomaSpace. The particle behavior, the trail technique, and the habit of tuning response until it feels generous rather than accurate all carried over into the installation's visual system.

Reflection

What I would build next

The obvious next step is to give the rope more to do: a second hand, so two ropes can pass a catch between them, or fixed anchors so it can be strung across the frame and left hanging. Driving a visual system from body input is exactly the bridge into the body-tracked work I did later in SomaSpace. I would also like to give the light a reason to fall, tying emission to sound or time of day, so the piece has a rhythm of its own instead of a constant rain.