← All labs

AIRWAVES

DJ a track with your hands
Webcam · MediaPipe · Web Audio

Labs / 07

Try it live →

(Overview)

No decks, no controller. Just your hands, a webcam and a track.

Airwaves turns the webcam into a DJ controller. Raise or lower one hand to sweep a filter, pinch to throw a loop, spread your fingers to open the reverb, and make a fist with the other hand to drop the track on the next bar. Everything lands in time, because every change is scheduled against the music, not the frame.

It's built on Split's stem engine, with a master effects chain on top, and it runs entirely in the browser. The camera never leaves your device: hand tracking happens locally, and the page's security policy blocks any connection out, so nothing is recorded, uploaded or reported.

Type
Browser experiment, no install
Tracking
MediaPipe Hand Landmarker, on-device
Audio
Split's stem engine plus a filter, reverb and loop FX chain
Privacy
Camera stays on the device; outbound connections blocked
Status
Gestures and audio working, onboarding next
Live lab
Open Airwaves ↗

(The gestures)

  1. ↕Raise or lower your control hand to sweep the filter
  2. ✦Pinch, or pinch and hold, to pick a 1, 2 or 4 bar loop
  3. ✋Spread your fingers to open the reverb
  4. ✊Make a fist with your other hand to drop on the next bar
01

Track the hands

MediaPipe's Hand Landmarker finds 21 points on each hand, around 30 times a second, on your own GPU. Distances are corrected for the camera's aspect ratio, smoothed, and turned into a small set of gestures, with the left and right hands each given their own job.

02

Map them to music

Hand height becomes filter frequency and finger spread becomes reverb, gliding rather than jumping so there are no clicks. Loops and drops never fire straight away: they're queued for the next bar line, so even a clumsy gesture sounds deliberate.

03

Keep it private

The tracking library normally reports usage back every minute, with no way to switch it off. Airwaves blocks it with the page's own security policy, so the privacy promise is enforced by the browser, not just written in a footer.

Try Airwaves All labs