Play chords and melodies with your hands through your webcam — no MIDI controller, no install. Record and export to MIDI.
Two modes, switchable from the bottom controls:
Two-hand Chord (default)
- Left hand picks the chord root from a circular wheel
- Right hand picks the quality (
maj,maj7,7,sus4,m,m7,dim,aug) - Move the index fingertip into the wheel's center to silence the chord
Melody + Chord
- Right hand plays melody on a piano-style keyboard at the bottom-right
- X = pitch, Y = volume
- Pinch thumb + index to gate sound on
- Left hand plays accompaniment chords on the wheel
- Pinch = Minor, open = Major
MIDI Recording
- Press REC to arm — recording starts when you play the first note
- Press REC again to stop and auto-export a
.midfile - Dynamic start: the gap between pressing REC and your first note is automatically discarded
- Adjustable BPM, metronome click (visual + audio)
- EXP button re-exports the last recording from memory
- The index fingertip is your cursor — a large dot with a white ring shows where you're pointing
- Both wheels have an inner OFF zone so you can rest without sound
- The "Simple (ABCDEFG)" toggle reduces the chord wheel to 7 diatonic roots
- The bottom controls bar can be collapsed with the
⌄/⌃toggle
- MediaPipe Hands — on-device hand tracking, no video uploaded
- Tone.js — Web Audio synthesis
- Plain HTML/CSS/JS, no build step
- MIDI writer inline (Standard MIDI File format 0, 480 PPQN)
getUserMedia requires HTTPS or localhost, so just opening the file won't work.
python3 -m http.server 8765
open http://localhost:8765The webcam stream stays in your browser. No frames are uploaded anywhere.
MIT