Skip to content

Assess pyeyesweb and Laban for #373 - #379

Merged
alexarje merged 1 commit into
masterfrom
pyeyesweb-assessment
Aug 24, 2026
Merged

alexarje merged 1 commit into
masterfrom
pyeyesweb-assessment

Conversation

@alexarje

Copy link
Copy Markdown
Contributor

Background for #373, written from the source rather than from the README, after ARJ asked whether the gesture-recognition work should build on Camurri's EyesWeb line, whether Laban can be part of it, and whether Labanotation can come from video.

Adds one document: plans/2026-08-23-pyeyesweb-and-laban.md. No code.

pyeyesweb is real and well-sourced — MIT, InfoMus / Casa Paganini, a MOCO '26 paper at doi:10.1145/3802842.3802904 — and does no pose extraction, so it sits on the boundary MGT and micromotion already occupy. Checked against all 125 micromotion exports, the overlap is one function: jerk. No SPARC, no phase-locking, no symmetry, no convex hull, no mass-weighted kinetic energy.

Measured, because it changes how it should be used. Its Smoothness is correct on the canonical case (minimum jerk vs 2 and 3 submovements gives SPARC −1.45, −2.22, −2.59), but over 15 repeats per noise level, jerk RMS rises 8.6× at 10% tracker noise while SPARC does not move — and real roughness also reads 9.0× on jerk. So jerk cannot distinguish tracker noise from tripling the submovements. A smoothness claim computed from MediaPipe landmarks with jerk is largely a claim about MediaPipe.

Laban: no module names it. lightness is Weight, suddenness is Time; Space and Flow have only substrates. An Effort layer would be our own operationalisation and should be named and cited as one.

Labanotation from video is the wrong target on one camera — the only substantial implementation is Kinect-based and unmaintained for 20 months, and the notation encodes direction and level per limb, both 3-D. Worth it only with two views, where #355's fusion supplies a cross-view residual that states what the symbols cannot.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Xg1f739wddu5M4s3UwdNkn

ARJ asked whether the gesture-recognition work should build on Camurri's
EyesWeb line through pyeyesweb, whether Laban can be part of it, and whether
Labanotation can come from video. Three answers, written from the source rather
than from the README.

pyeyesweb is real and well-sourced --- MIT, InfoMus/Casa Paganini, a MOCO '26
paper at doi:10.1145/3802842.3802904 --- and it does NO pose extraction, so it
sits on the boundary MGT and micromotion already occupy. Checked against all 125
micromotion exports, the overlap is one function: jerk. No SPARC, no
phase-locking, no symmetry, no convex hull, no mass-weighted kinetic energy. So
adopting it is mostly addition, and the four-toolbox rule argues for depending on
it rather than reimplementing it.

MEASURED, BECAUSE IT CHANGES HOW IT SHOULD BE USED. Its Smoothness is correct on
the canonical case --- minimum jerk against 2 and 3 submovements gives SPARC
-1.45, -2.22, -2.59 --- but the two measures it returns behave completely
differently under tracker noise. Over 15 repeats per level, jerk RMS rises 8.6x
at 10 per cent noise while SPARC does not move at all, and real roughness (3
submovements, no noise) also reads 9.0x on jerk. So jerk cannot distinguish
tracker noise from tripling the submovements; SPARC separates them. That is not a
defect, it is why SPARC exists --- but it means a smoothness claim about a
performer computed from MediaPipe landmarks with jerk is largely a claim about
MediaPipe.

Laban: no module names it, and the mapping is mine, read from the source.
Lightness is Weight and Suddenness is Time; Space and Flow have nothing, only
substrates. So an Effort layer is our own operationalisation and should be named
and cited as one rather than offered as "Laban Effort".

Labanotation from video is thinner than it sounds and is the wrong target. The
only substantial implementation is Kinect-based and unmaintained for 20 months.
The notation encodes direction and level per limb, both three-dimensional, and a
single static camera gives neither reliably --- so it would quantise a noisy 3-D
estimate onto a symbol grid that cannot express its own uncertainty. Worth doing
only with two views, where #355's fusion supplies a cross-view residual that
states what the symbols cannot.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Xg1f739wddu5M4s3UwdNkn
@alexarje
alexarje merged commit ad40b2b into master Aug 24, 2026
11 checks passed
@alexarje
alexarje deleted the pyeyesweb-assessment branch August 24, 2026 05:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant