Waving at your filter: CamMod, on camera
May 28, 2026
The video comes first on this one, because a modulation tool is either convincing in a performance or it is a diagram. Watch the take, then read this if you want to know what is happening underneath and where it breaks.
The setup: a laptop webcam, CamMod running in the standalone build, a filter cutoff and a delay mix on two CC lanes, and one continuous take with no edits. Right hand height drives cutoff, left hand distance from the camera drives the delay send.
What it actually does
CamMod is deliberately unclever. It takes a camera feed via getUserMedia, runs hand and head tracking, and maps a handful of derived scalars — position, distance, tilt — onto MIDI CC lanes. That is the whole tool. It does not classify gestures, it does not recognize poses, and it does not have a machine-learning story. It is a continuous controller whose input happens to be your body instead of a knob.
The camera feed never leaves your device. Tracking runs in the browser, or in the standalone app; there is no upload and no server-side inference. That is not a privacy feature we bolted on, it is that sending video to a server to produce a CC value would add latency to a real-time controller for no benefit.
In the browser it modulates any tool on the site. In the standalone build it registers a virtual MIDI port, which is how it drives the DAW in the video — CamMod is just another controller as far as the host is concerned, and the CC lanes record and edit like any other automation.
Smoothing, and the honest tradeoff
Raw tracker output is jittery in a way that sounds like a bad LFO. Every gesture controller smooths, and every smoothing choice is a trade between jitter and lag.
CamMod exposes that trade instead of picking for you. There is a smoothing control, and turning it up makes slow filter sweeps feel silky and makes fast stabs feel late. In the video it sits fairly high for the sweeping section and drops for the last thirty seconds, which is why the movement at the end reads as more percussive and also slightly noisier. Both settings are correct for what they are doing.
The part where the tracking loses a hand
At around the two-thirds mark my left hand goes out of frame for most of a bar. I left it in.
Here is what happens when tracking is lost: nothing. The CC lane holds its last value. It does not jump to zero, it does not snap to center, it does not interpolate toward some default. Holding is the least musical-damaging failure — a parameter frozen mid-sweep is a sound you can play through, whereas a filter slamming shut because your hand left the frame is a take you throw away.
When tracking re-acquires, the value ramps back to the tracked position over a short glide rather than jumping. You can hear it in the take as a quick recovery slide, which sounds like a deliberate move if you do not know it was a mistake. It is still a mistake. The tool's job is to make your mistakes survivable, not invisible.
The remaining rough edge is re-acquisition latency in poor light. It is noticeably worse with a single lamp behind you, and the fix is lighting rather than code, which is an unsatisfying thing to tell someone whose room is dark.
Why bother
Because a mod wheel has one dimension and your hand has several, and because the cheapest expressive controller most people already own is the camera above their screen. This is not a replacement for a control surface. It is a way to play a filter with your arm at midnight without buying anything, and the recording that comes out is ordinary MIDI CC automation you can quantize, trim, and redraw like everything else.