Drop in a song.
Step I · WAV FLAC MP3 OGG M4A
Analysed on your machine. Your audio is never uploaded.
Rhythm mapped by
BeatScope
BeatScope turns a song into a beat-synchronised film — or gives its timing to a coding agent. Runs locally. MIT.
Shattered Heartbeat
A film by chornic · 2026
73.5 s · 132.5 BPM · 161 beats · 751 onsets
Room I
Sixteen paintings, repainted on the beat. No AI images — every stroke is procedural, every cut is measured.
The Great Wave off Kanagawa
Katsushika Hokusai · 1831
Woodblock · Beat 34 · Bar 9
Fine Wind, Clear Morning
Katsushika Hokusai · 1831
Woodblock · Beat 42 · Bar 11
The Scream
Edvard Munch · 1893
Impasto oil · Beat 24 · Bar 6
Starry Night Over the Rhône
Vincent van Gogh · 1888
Impasto oil · Beat 56 · Bar 14
Girl with a Pearl Earring
Johannes Vermeer · 1665
Watercolour · Beat 73 · Bar 19
Takiyasha the Witch and the Skeleton Spectre
Utagawa Kuniyoshi · 1844
Sumi ink · Beat 90 · Bar 23
Room II
Step I · WAV FLAC MP3 OGG M4A
Analysed on your machine. Your audio is never uploaded.
Step II · Beats · Bars · Onsets · Low/Mid/High
Review the rhythm map, song structure and film preview; edit stage boundaries and cue markers.
Step III · 1080×1080 · 30 FPS MP4
Render the full song with Voxel Interference or Prismatic Echo.
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
Exhibit AFilm
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
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
In the package
It does not include your audio or a visual template.
Agent handoff guide →Object list
“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
Free.
Open source, MIT licensed.
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 WindowsDownload 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 →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.