The Dance Sage Lab how the app sees dancing

Every screen below is real: a salsa couple dancing a side basic, seen as the skeletons Dance Sage works with. Cameras are imperfect — they jitter, and they lose limbs whenever bodies overlap. Dance Sage refines what the camera sees. Four screens per experiment: the dancer’s true movement, what a camera typically delivers, our refinement model, and the same model tuned specifically for dancing. The faint white skeleton everywhere is the true movement — the closer, the better. Drag any screen to spin it. Every number is a real measurement, not an illustration.

1 · One dancer

A single dancer, the way Dance Sage sees solo practice. The camera’s version shakes; the refined versions don’t.

Camera error
Refined
Tuned for dance
frame 0 / 78
The dancer’s movement 0.0 cm
What the camera sees cm
Refined — standard model cm
Refined — tuned for dance cm

Error per frame (cm)

camerarefinedtuned for danceplayhead

2 · A couple

Two dancers in open hold, exactly where they really stood. Partner dancing is harder for cameras — and where refinement matters most.

Camera error
Refined
Tuned for dance
frame 0 / 78
The dancer’s movement 0.0 cm
What the camera sees cm
Refined — standard model cm
Refined — tuned for dance cm

Error per frame, both dancers (cm)

camerarefinedtuned for danceplayhead

3 · A lost arm, restored

Here the camera never sees the leader’s left arm at all — as happens whenever a partner blocks the view. Dance Sage restores the whole arm, shown in gold. The dance-tuned model places it noticeably closer to the truth.

Camera inputleft arm never seen
Restored within
Tuned: within
frame 0 / 78
The dancer’s movement 0.0 cm
Camera view — arm missing input
Refined — standard model cm
Refined — tuned for dance cm

Restored-arm error per frame (cm)

refinedtuned for danceplayhead

4 · The hold, restored

The hardest case in partner dancing: both arms of the hold vanish between the two bodies. Dance Sage restores both dancers’ hidden arms (gold) and keeps the couple whole.

Camera inputboth hold arms never seen
Restored within
Tuned: within
frame 0 / 78
The dancer’s movement 0.0 cm
Camera view — hold missing input
Refined — standard model cm
Refined — tuned for dance cm

Restored-arms error per frame (cm)

refinedtuned for danceplayhead

5 · An arm that flickers out

The most realistic case: the arm is visible, disappears for a second (the gold band on the chart), then returns. Watch the gold arm carry the movement across the gap — and how much tighter the dance-tuned model tracks it.

Camera inputarm gone for 1 second
During the gap
Tuned: during the gap
frame 0 / 78
The dancer’s movement 0.0 cm
Camera view — arm flickers visible
Refined — standard model cm
Refined — tuned for dance cm

Arm error per frame (cm) — gold band = arm invisible

refinedtuned for danceplayhead

5 · On real footage

Everything above is measured against a dancer’s true movement, which is how we know the numbers. This is the same analysis on ordinary phone video: our skeleton drawn back onto the clip it came from, and beside it the same seconds in three dimensions. Press play on the video; drag the figure to turn it.

Two dancers in a close hold

A couple is the hard case, because each dancer keeps hiding the other. Both are held in every frame here, and neither skeleton ever jumps to the wrong body.

Drawn back onto the footage. sits 13 px from the body · 0.7% of the frame
The same four seconds in three dimensions. drag to turn · scroll to zoom · slow it down with the dial

One dancer, styling

A single dancer is the easy case, and this is what the app does on the phone itself, for nothing, while you dance.

Drawn back onto the footage. sits 13 px from the body · 0.7% of the frame
Seventy joints, hands and feet included. drag to turn · scroll to zoom · slow it down with the dial

The couple as full surfaces

Behind every skeleton is a whole body. This is the same close hold as the first pair, as two watertight surfaces of 18,439 points each — switch either dancer off to look inside the hold, or turn on the wireframe to see the surface itself.

Four seconds of surface, 36,874 triangles a body. 5.1 MB for the pair · 1.1 mm precision · the raw export is 25.7 MB