Hand gesture
music synthesizer

Play chords in the air with your webcam. Every performance is captured as portable data — not a video file — so it can be replayed, remixed, and traded. How that works ↓

💡 How It Works

1

Allow Camera

Grant camera permission. Your video never leaves your device — nothing is uploaded.

2

Left Hand → Harmony

Pick a key, then raise 1–5 fingers to choose the chord. Wrist tilt swings it major or minor.

3

Right Hand → Expression

Fingers set the chord's richness, height sets volume, tilt sets tone. Both hands must be visible.

4

Capture & Own

Record up to 60 seconds. The take is saved as data you can replay, list, and sell.

🪙 The performance is the asset

Most "music NFTs" mint a video file: heavy, unverifiable, impossible to remix. A gesture performance isn't pixels — it's a stream of hand positions and chord events. Captured as data, it stays tiny, replays exactly, and anyone who owns it can re-render it in their own skin.

Every capture splits into two tracks:

Score track 0.5–10 KB

Chord events, timing, and settings. This is the music — replay it and you get the identical performance back. Size follows how much you move: held chords cost almost nothing, constant expression costs the most. Cheap as calldata or on an L2; storing it on Ethereum L1 would not be.

Motion track 37 KB

The hand landmarks, quantized and delta-encoded. This is the visual — the skeleton that danced. Flat cost, since it is one sample per frame. Sized for IPFS, not for a block.

Why this beats minting a video

Replayable — a listing plays the actual performance in your browser, not a preview clip.
Remixable — buy a score, re-skin it, change the key, keep the phrasing.
Provable — the data carries how it was played, so a performance can be checked rather than trusted.

STATUS — capture and replay are built — record a take and the app plays it back from the data alone, no camera. The marketplace is a local demo shell: connecting a wallet and minting are simulated and never touch a chain, listings are generated on your machine, and prices are decoration. Nothing here is a token, an offer, or an investment. Sizes are measured from 15s captures at 30fps (motion is 4x smaller than raw float32 landmarks).

🖐 Gesture Guide

Every gesture combination in Gesture mode. Both hands required — left sets harmony, right controls expression. Quick start ↑

LEFT Harmony — Scale Degree

Your left hand picks the chord — each finger count is a different scale degree:

FingersChordGestureExample (A Major)
1IAny 1 finger raisedA
2iiAny 2 fingers (not VI combo)Bm
3iiiAny 3 fingers (not VII combo)C#m
4IVAny 4 fingers raisedD
5VAll 5 fingers raisedE
VIviIndex + Pinky ONLY (middle/ring/thumb down)F#m
VIIvii°Index + Pinky + Thumb ONLY (middle/ring down)G#dim
0 (Fist)All fingers curled inMute (notes held, resume when fingers return)

LEFT Wrist Tilt — Major / Minor

Default is Scale notes only (Major locked) — wrist tilt is off until you switch to Scale+Tilt in Settings.

Wrist ActionResultNotes
Tilt Left (tilt < 0)MinorAll chords become minor (I→i, IV→iv, V→v, etc.)
Tilt Right (tilt ≥ 0)MajorAll chords become major (I, IV, V, etc.)
Scale notes only (lock mode)FixedMode locked (default: Major) — ignores wrist tilt

RIGHT Expression — Chord Type

Your right hand shapes the sound — chord type, volume, tone, and octave:

FingersMajor Chord TypeMinor Chord Type
1Major TriadMinor Triad
2Major 1st InversionMinor 1st Inversion
3Major 7thMinor 7th
4Major 9thMinor 9th
0 (Fist)Default chord type — the tucked thumb also brings the octave back to normal; sound continues

Finger count → chord type requires Right Hand Mode = Finger Layout in Settings — the default is Fixed Chord Style (Major Triad), where the right hand controls volume + tone instead. The 8 fixed styles: Major Triad, Major 1st Inv, Minor Triad, Diminished, Sus2, Sus4, Major 7th, Dominant 7th.

RIGHT Position — Volume & Tone

Height controls volume; wrist tilt sweeps the tone filter:

MovementControlsHow It Works
Hand Height (Y-axis)VolumeHand higher = louder. Hand lower = quieter.
Wrist Tilt (left/right)Filter Sweep / ToneTilt right = brighter (filter opens). Tilt left = darker (filter closes).

RIGHT Thumb — Octave Shift

Thumb out drops the octave for low bass lines:

Thumb PositionResultStatus Display
Thumb curled in (default)Normal octavee.g. A
Thumb extended outDown one octave (-8ve)e.g. A (-8ve)

STOP Mute & Stop Conditions

ConditionBehavior
Left fist (0 fingers)Music mutes — notes held, resume when fingers return
Right fist (0 fingers)Thumb tucks in → back to normal octave — sound continues, chord keeps updating
One hand leaves frameMusic stops after 80ms grace period
Both hands leave frameMusic stops after 80ms grace period

PIANO Single-Note Melodies

Both hands required — the left hand picks a single note (interval + key), the right hand triggers it and controls volume. Left fist = silence.

Left FingersIntervalExample (Key A)
1Root noteA4
2Major 3rdC#5
3Perfect 5thE5
4OctaveA5
59th (octave + 2nd)B5

THEREMIN Pitch & Volume

Both hands required — right hand height = pitch (C3 → C6, logarithmic), left hand height = volume. Raise your right hand for higher notes; raise your left for a louder sound.

⚙ Settings, Metronome & Shortcuts

ControlOptionsNotes
Key12 keys (C – B)Toolbar dropdown — transposes every chord
Left Hand ModeScale+Tilt · Scale notes onlyScale+Tilt: wrist tilt flips major ↔ minor (default: Scale only, Major locked)
Right Hand ModeFinger Layout · Fixed Chord StyleFinger Layout: 1–4 fingers = triad / 1st inv / 7th / 9th (default: Fixed, Major Triad)
Fixed Chord Style8 typesMajor Triad · Major 1st Inv · Minor Triad · Diminished · Sus2 · Sus4 · Major 7th · Dominant 7th
TimbreGesture (sawtooth) · Theremin (sine)Follows the selected mode
ArpeggiatorOff · Slow · Normal · Fast⟿ toggle — sweeps chord notes sequentially like a harp
Auto BassOff · On (volume slider)∿ toggle — root note two octaves below, independent volume
MetronomeBPM 40–240 · 3/4·4/4·5/4·6/8·7/8 · 1–16 bars · Click/Wood/Beep/Hi-hat · TAP · volume♪ toggle in Settings. Note: the metronome is audible in recordings when it's on
ShortcutsSpace = stop all notes · Esc = resetWork at any time (browser focus)

⚙ Defaults

SettingDefaultDescription
KeyAAll chords transposed to A major scale (change via toolbar dropdown)
Left Hand ModeScale Only (Major locked)Fingers pick scale degree, mode locked to Major
Right Hand ModeFixed Chord Style (Major Triad)Chord type locked, right hand controls volume + tone
ArpeggiatorOffToggle ⟿ to sweep chord notes sequentially
Auto BassOffToggle ∿ for automatic low-end root note

🔧 Camera not working?

Permission was denied

Click the lock (or camera) icon in your browser's address bar → set Camera to Allow → reload. On iPhone: Settings → Safari → Camera → Allow. On Android Chrome: ⋮ → Settings → Site settings → Camera.

No camera found

Close any other app holding the camera (Zoom, Meet, Teams, Photo Booth), then reload. On a desktop, check the camera isn't disabled in your OS privacy settings.

It won't start at all

Camera access requires a secure context — the page must be on HTTPS, or on localhost for local development. Plain http:// on a remote host is blocked by the browser, not by us.

Model loading is slow or stuck

First start downloads about 19 MB of hand-tracking runtime. It's cached for a year afterward. If it stalls, reload — the download resumes from cache.

Hand tracking feels laggy

Use Chrome or Edge with hardware acceleration on. Improve your lighting and keep both hands fully inside the frame — tracking runs at 30fps and needs to see your whole hand.

No sound

Both hands must be visible — one hand alone produces silence by design. Also check that your left hand isn't a fist (that mutes), and that system volume isn't muted.

ErrorMeaningFix
NotAllowedErrorYou denied camera permissionAllow it in the address bar, then reload
NotFoundErrorNo camera detectedConnect a webcam or check OS privacy settings
NotReadableErrorAnother app is using the cameraQuit that app and reload
NotSupportedErrorInsecure contextOpen the site over HTTPS (or localhost)