Rhythm mapped by

BeatScope

Every stroke lands on a measured beat.

BeatScope turns a song into a beat-synchronised film — or gives its timing to a coding agent. Runs locally. MIT.

Download for Windows View on GitHub →

Shattered Heartbeat

A film by chornic · 2026

73.5 s · 132.5 BPM · 161 beats · 751 onsets

Room II

How the film was made

Drop in a song.

Step I · WAV FLAC MP3 OGG M4A

Analysed on your machine. Your audio is never uploaded.

Every hit, mapped.

Step II · Beats · Bars · Onsets · Low/Mid/High

Review the rhythm map, song structure and film preview; edit stage boundaries and cue markers.

A film that hears it.

Step III · 1080×1080 · 30 FPS MP4

Render the full song with Voxel Interference or Prismatic Echo.

Hand the timing to your agent.

Step IV · .beatscope package · MIDI · CSV

Export the package and give it to a coding agent with your own media.

Shattered Heartbeat itself was built this way: BeatScope measured the track, a coding agent painted to the timing.

Room III

Two ways out

Exhibit AFilm

A film you can watch

Two templates: Voxel Interference (procedural glitch visuals) and Prismatic Echo (grey, blue and red footage, mirrors, kaleidoscopes, contour trails and sparse moving negatives).

Both render the full song to MP4 at 1080×1080, 30 fps; live preview at 540×540.

Edit stage boundaries and add, move or mute cue markers on the rhythm graph, with undo/redo and optional snapping.

Prismatic Echo uses GPU composition, hardware encoding and reusable caches; devices without the required GPU fall back to a Canvas renderer.

Template guide →

Exhibit BAgent

Timing a coding agent can use

Export the .beatscope package and give it to an agent with your footage, images or references. It holds measured timing, not a fixed visual style.

Flow

  1. Your song
  2. BeatScope measures the timing
  3. .beatscope package + your media + your idea
  4. Coding agent creates the visual

In the package

  • rhythm-map.json
  • MIDI and CSV views
  • A deterministic JavaScript runtime
  • A self-checking probe
  • Member hashes
  • Short agent instructions
  • A reference comparison helper

It does not include your audio or a visual template.

Agent handoff guide →

Object list

What BeatScope measures

  1. Whole-song structure and eight-bar rhythm detail
  2. Beats, bars and tempo changes
  3. Original onset timestampsThe sound is never moved onto a prettier grid.
  4. LOW / MID / HIGH spectral activity
  5. Neutral repeated sections (A / B / A′)
  6. Response ordering for dense songsOptional.
“BeatScope does not pretend to know whether a sound is a kick, snare or 808. It reports evidence and lets the renderer decide.”

Plan your visit

Visitor information

Admission

Free.

Open source, MIT licensed.

Windows

Download Beathi Studio v0.15.0, extract the whole ZIP, double-click Beathi Studio.exe.

Includes the analyser, Node.js, Playwright, FFmpeg and the material pack. Rendering uses Microsoft Edge on Windows 10/11.

Download for Windows

Python 3.10+

Download the wheel from the v0.15.0 release, then run:

pip install beatscope-0.15.0-py3-none-any.whl
beatscope serve --open

For Prismatic Echo, extract the material pack into your working directory (keep its materials/ folder) or set BEATSCOPE_MATERIAL_ROOT.

Python rendering also needs Node.js, FFmpeg, Playwright and a supported browser.

Local rendering →

For developers

MCP server

A local stdio MCP server for analysis and bounded timing queries.

WebMCP tools

Seven browser WebMCP tools inside Beathi Studio.

Code

git clone https://github.com/chosuicide/beatscope.git
cd beatscope
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -e ".[dev,mcp]"
beatscope serve --open

Contributions welcome — new visual templates and timing consumers are a great place to start.

GitHub issues →

Rhythm mapped by

BeatScope

github.com/chosuicide/beatscope

a film by chornic

Your film next.

Download for Windows Star on GitHub

Shattered Heartbeat · chornic · 73 s