Interfaces 2026

Welcome to Interfaces

Interfaces is the bridge between dance and computer art. We capture the dynamics and expression of movement and transport them into the world of code-generated art — connecting choreographers, dancers, visual artists, and computer nerds on the same platform.

🎥
Capture motion from any source
Scan a video file entirely in your browser using ffmpeg.wasm + MediaPipe Pose — no upload needed. Or stream live from your webcam, a WebSocket feed, or load pre-recorded data from the database.
🗄️
Relational motion database
Every scan is a RawData record. Wrap it in a Choreo (with an author, name, and type) to give it context and make it discoverable. Use the Database tab to explore, organise, and remix what's stored.
🎨
Generative art playground
Write p5.js sketches that consume live pose data via a unified dataSource.getFrame() interface — the same code works whether the data comes from a video scan, a live webcam, or a stored choreo. Save and reload your sketches as JsScripts at any time.
🤝
Open & shareable
Interfaces is about sharing and remixing. Tag the creators of the content you use and share the results — fame, coins, or just the fun of it.

Ready? Head to the to explore what's stored, or jump straight into the to start creating.

Database

This is the relational heart of Interfaces. Every scan, choreography, and generative script lives here as a structured record that can be linked, re-used, and remixed. Use the forms below to add records, the buttons to remove them, and ▶ Playground to load a Choreo straight into the editor.

ChoreoTypes

A ChoreoType is a named category for a movement style or session context — e.g. "Contemporary", "Video Scan", or "Improvisation". Choreos reference a ChoreoType so you can filter and group related recordings.

    RawData

    A RawData record holds the raw JSON payload of a motion scan — typically an array of per-frame landmark objects produced by MediaPipe. RawData is the factual backbone: a Choreo links to it to add metadata such as a name, author, and type. Large payloads are stored but not rendered here to keep the UI fast.

      Choreos

      A Choreo is the publishable unit of a motion recording. It wraps a RawData payload with human-readable metadata (name, author, modification time) and an optional ChoreoType tag. Think of it as the "track" record in a music library — the raw scan is the audio file, the Choreo is the labelled, shareable entry. Click ▶ Playground to load any Choreo directly into the editor for playback or generative art.

        JS Scripts

        A JsScript is a saved Playground sketch — a p5.js snippet that you can reload into the editor at any time. Use Import JS File to upload an existing script from disk, or save the current editor contents directly from the Playground's Save Script button.

          Playground

          JavaScript Editor

          Saved scripts live in the database and work with any output engine. Use the Built-in sketches selector in the Output panel to load a ready-made p5.js template.

          Output

          Source:

          Data Source

          Select a choreo and click Load to prepare playback.

          30
          0 / 0
          Frame Inspector
          Curve View
          Position
          Velocity (Δpos / frame)
          Acceleration (Δvel / frame)

          Load a choreo to enable curve view.


          Sink: