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.
Try a session → The capture layer
MediaPipe PoseLandmarker and FaceLandmarker run on the camera
stream at ~30 frames per second. A Web Audio worklet runs on the
microphone stream and computes onset and dynamic features. No
frames, no raw audio samples are retained — only derived features.
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, and dynamic-event
amplitude. Pure derivations from the raw streams.
The tension layer
Features compose into a single calibrated tension signal. Baselines
are personal — established during the first 30 seconds of each
session, so a violinist's natural head-tilt does not register as
tension. Tension patterns are currently tuned for drumming;
other instruments use generic baselines until a tuned profile is
added.
What persists
The per-second feature vector and the derived tension signal,
stored in your browser's IndexedDB. No video. No raw audio. No
images. Sessions can be exported as JSON for the teacher loop.
Why a browser
No install, no permission grants beyond camera and microphone.
The PWA installs to the home screen for one-tap launch, but
continues to run locally even when offline.