
I’ve been exploring the idea of visualizing contra dances for the purpose of aiding callers in assembling their programs.
This post is an exploration of the idea and a collection of dances from a recent program I worked on.
The goal is to find a way to help callers, especially newer ones like me, understand the “feeling” of dances visually.
This work will later be included in a programming tool and dance simulator to help me program dances as well as educate people about what contra dancing is, and how it looks and feels.
AI Disclaimer: All code, visuals, and the remainder of this post were created using Claude code and Fable 5.1.
The dances
Each dance four ways: pen plot, march, seismograph, figure strip with the figure names, and the figures listed by phrase beside the pen plot. Colours are figure families; the method section at the end explains the views.

The Baby Rose (no-chain var), David Kaynor

Thursday Night Special #1, Larry Jennings

Another Equal Turn, Jerome Grisanti
The wave figures at the start and end are stand-ins. This is the one that doesn’t close.

Butter, Gene Hubert

Spring Break, Nils Fredland

Flying Flamingos, Cary Ravitz

Heartbeat Contra, Don Flaherty

Airpants, Lisa Greenleaf

Simplicity Swing, Becky Hill

The Nice Combination, Gene Hubert

As a program
The same ten on one 64-beat axis, figure strip over seismograph. Seven open with a neighbour swing. Spring Break and Heartbeat Contra begin with the same two petronellas.

Playground
Every view above, plus a play button that draws all ten dances at once. Space plays and pauses; the arrow keys step a beat.
open the playground in its own page ↗
Method
The figure shapes are hand-written approximations, not a simulation, so details are wrong. This section says how.
The canvas is one minor set with the band at the top. Ones start at the top facing down, twos at the bottom facing up. Each dancer is a pen: larks blue, robins pink, ones darker.
The pens are moved by sixteen small functions, one per figure, each drawing a plausible path for a role over the figure’s beats. A dance is the figures from its card with their beat counts. The only check is closure: after 64 beats, is everyone standing where the next round starts? Nine of the ten dances close exactly. Another Equal Turn, which starts in a wave, does not, because the playground has no wave figures and uses stand-ins.
Other approximations: the hey is a figure-eight track with a shoulder offset, the courtesy turn is a quarter arc, and Becket dances recentre the square after the slide, so the ink breaks there. The top and bottom of the set do not exist.
The four views of each dance:
- Pen plot: the whole dance on the set.
- March: the set moves right as the beats pass. Loops are turns, flat stretches are standing still.
- Seismograph: each dancer’s position across the set, then along it, against time.
- Figure strip: one small plot per figure, cell width equal to its beats, the figure’s name underneath.
The playground is a single HTML file with no dependencies, written by the agent in one evening from the question “could a dance be drawn by pens on the four roles, and how would a program be laid out”. I ruled on the canvas, the pens, the dances, and the layout; the agent decided how each figure is drawn.