Interfaces 2026

Version: loading…

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.
🧰
Clean, export, and hand off motion data
Use the Post-Process sink to clean jitter/noise, then export BVH motion for Blender (and other DCC tools) directly from the Playground sink panel.
📚
In-app guides when you need them
Open the Docs tab any time for onboarding guides, feature docs, and changelogs without leaving the app.

Ready? Head to the to explore what's stored, or jump straight into the to start creating. Need guidance first? has a 15-minute onboarding path.

Docs Viewer

Browse project guides and changelogs directly in the app. Documents are loaded from the repository docs/ folder via /api/v1/docs.

Loading documentation index…

Tip: use date order to spot outdated docs quickly.

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.

Transfer / Backup

Export your full database as one JSON backup file and import it on another Interfaces instance. Import replaces existing records in this database.

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.

          Dock Presets

          A DockPreset stores a named Playground widget arrangement as JSON using canonical widget names like data_source and data_sink.

            Playground

            Current Status

            Data Source Database · empty
            Output Stream p5.js · sketch idle
            Data Sink None · idle

            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

            Data Source

            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.

            Data Sink

            Sink: