OuterPractice runs three observation layers in the browser: MediaPipe PoseLandmarker extracts joint positions, FaceLandmarker derives facial-tension markers, and a Web Audio worklet computes ambient-audio onset and dynamic features. No frames or raw audio leave the device.
How OuterPractice observes.
The technical layer: MediaPipe pose tracking, FaceLandmarker for facial-tension markers, and ambient audio analysis for onset and dynamics. Everything in your browser.
Three layers, one direction.
Capture feeds extract; extract feeds tension. The raw streams never move past the first box — only derived numbers travel onward.
The capture layer
MediaPipe PoseLandmarker and FaceLandmarker run on the camera stream at ~30 fps; a Web Audio worklet runs on the mic. No frames, no raw audio samples are retained.
The extract layer
Per second the extractors emit a feature vector: shoulder-rise delta, head-tilt angle, jaw-distance ratio, blink count, brow-tension proxy, onset-interval variance, dynamic amplitude.
The tension layer
Features compose into one calibrated tension signal. Baselines are personal — established in the first 30 seconds — so a violinist's natural head-tilt doesn't read as tension.
What persists
The per-second feature vector and derived tension signal, in your browser's IndexedDB. No video, no raw audio, no images. Exportable as JSON for the teacher loop.
Calibration
Tension patterns are currently tuned for drumming; other instruments use generic baselines until a tuned profile is added. The first 30 seconds set your personal zero.
Why a browser
No install, no permissions beyond camera and microphone. The PWA installs to the home screen for one-tap launch and keeps running locally, even offline.