← vighneshganti.com PROGRAMME · AN INDEPENDENT PIECE

Nocturne for pond and piano · ChucK + ChuGL

Resonant Garden

A still pond at dawn that awakens through music.

♪ TAP ANYWHERE FOR SOUND

Plate I — running live in your browser · it plays itself, waking from night to dawn

Resonant Garden is a quiet, painterly pond that listens. Play a piano — into a microphone, from a MIDI keyboard, or a MIDI file — and the garden wakes: notes scatter ripples across the water, the sky warms from night toward dawn, the sun rises, and a small boat drifts and is mirrored in the surface while reeds sway at the near shore.

It is a single program written in ChucK with the ChuGL graphics engine — audio analysis and real-time rendering living in one file, so sound and image are never out of step.

The awakening

With no sound the pond stays in pre-dawn twilight. As you play, cumulative musical energy advances a “dawn” — the palette warms, stars fade, and the sun climbs.

The pond at night
I · night
First light
II · first light
Warming
III · warming
Full dawn
IV · full dawn

How it listens

One shared “feature bus” turns what it hears into what you see — identical whether the notes come from a live microphone, a MIDI keyboard, or a file:

Run the real thing

What you see above plays itself in your browser (a WebGPU rendering of the piece). The full work is interactive — a desktop app (macOS / Linux / Windows) that reacts in real time to a live piano, a MIDI keyboard, or a microphone.

1. Install ChucK (the recent releases include the ChuGL graphics engine) from chuck.stanford.edu, or on macOS: brew install chuck.

2. Get the project and play — download the zip below, unzip it, then:

# in the unzipped folder
cd resonant-garden

# play the bundled piece — no mic needed, you'll hear it too
./run.sh midi

# or wake it yourself
./run.sh          # live microphone (play a piano)
./run.sh keys     # a MIDI keyboard, in real time
./run.sh preview  # just watch the scene, no input

Needs an unlocked screen (it opens a graphics window). See the included README for tuning a live mic to your room. ChuGL renders natively, so the live piece runs on the desktop, not in a browser.