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.
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.
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.
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.
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.
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.
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.
Raw API: /api/v1/choreos/ | /api/v1/choreotypes/ | /api/v1/rawdata/ | /api/v1/jsscripts/ | /api/v1/dockpresets/
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
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 ○
Select a choreo and click Load to prepare playback.
Frame Inspector
Curve View
Load a choreo to enable curve view.