Procedural cinematic combat visualizer that generates music-synchronized particle fights, dynamic weapons, supermoves, ultramoves, and cinematic camera sequences in real time.
TypeScript
0
8 commits
updated Sep 27, 2026
Anime fights, choreographed to your music.
Version 1.0 · by Subhradeep Sarkar
Put on a song and two fighters made of light will settle their differences to it.
Cineviz listens to the track while it plays. Kick drums turn into punches, the bass shakes the floor, and when the drop lands somebody opens the sky and throws a thousand swords at their rival. Nothing is pre-animated: the choreography, the camera work and every particle are worked out from your song in real time, so no two shows are the same.
It runs in the browser, on a desktop or a phone, with no install and no account.
You need Node.js 18 or newer.
npm install
npm run dev # http://localhost:3000
Open the page, load a song (or pick one of the samples) and press play.
npm run build # type-check and build to dist/
npm run preview # serve the production build
| Key | Action |
|---|---|
Space | Play / pause |
W | Watch mode: full screen, no UI (Esc or W to leave) |
F | Free cam: fly the camera yourself |
C | The cast |
D | Developer overlays |
Esc | Close a panel, leave watch mode or free cam |
Free cam: drag to rotate, right-drag to pan, scroll to zoom. On a phone, one finger rotates, two pan and zoom. The camera glides along with the fight.
On a phone (landscape), the controls live in the rail on the right. The show goes full screen on the first touch.
The sliders along the bottom (Fight, Epic, Chaos, Slow-mo, Aura, Drama, Sadness) steer the mood of the show. FX sets the effect quality.
Handy for testing a specific moment. Combine them freely, for example ?phrase=ultra&tech=godOfWeapons&lock.
| Parameter | Effect |
|---|---|
seed=N | Fix the seed |
lock | Keep the same choreography on every play |
arch=a,b | Force the fighters (saiyan, shinobi, reaper, rubber, tarnished, dancer, hunter, sovereign) |
weapon=a,b | Force weapon sets (for example halberd,flail) |
phrase=kind | Force a phrase (exchange, rush, super, ultra, hybrid, speed_blitz, …) |
tech=id | Force a supermove or ultramove (with phrase=super or phrase=ultra) |
flavor=id | Force the kind of fight (blitz, brawl, duel, sky, arcana, rampage) |
speed=teleport | Speedsters teleport instead of moving at extreme speed |
fx=LEVEL | Effect quality (LOW, MEDIUM, HIGH, ULTRA) |
gpu=integrated | Use the integrated-graphics profile |
reference | Open the motion reference viewer instead of the app |
A short tour. The details are in docs/architecture.md and docs/combat-system.md.
audio ──► BeatTracker ──► MusicState (beats, energy, kick, drops)
│
▼
CombatEngine (choreography on the beat grid)
phrases · moves · weapons · supers · ultras · ruin
│ events
┌──────────────┼──────────────┐
▼ ▼ ▼
Director ParticleSystem FightScene / RuinScene
(shots, slow-mo) (bodies, weapons, (WebGL points, shaders,
effects) post-processing)
src/
app/ layout, full screen helpers
audio/ playback and beat tracking
components/ui/ top bar, timeline, panels (cast, about, director), overlay
content/ the cast: stories, stats, weapon histories
engine/
director/ the virtual camera operator
rendering/ scene, ruin layer, shaders, adaptive performance
simulation/
combat/ choreography, moves, weapons, powers, ruin
particles/ particle bodies, weapons, effects, dragons, lightning
utils/ maths, seeded random, quality tiers
docs/ architecture, combat system, motion reference
scripts/ asset builders (human mesh, mocap analysis, favicon)
Cineviz picks a quality profile from your GPU and then adapts while it plays.
See ASSET_LICENSES.md for sources and terms.
The source code is released under the MIT License.
Third-party assets keep their own licences (see ASSET_LICENSES.md). The two sample tracks in assets/sample-music/ are not covered by the MIT License and their licences are not documented, so replace them with music you have the rights to before distributing the app.
Ideas, bug reports and pull requests are welcome. Read CONTRIBUTING.md first, and please follow the Code of Conduct.
Made with late nights and loud music by Subhradeep Sarkar.
8 commits
TypeScript
97.1%
JavaScript
2.6%
Procedural cinematic combat visualizer that generates music-synchronized particle fights, dynamic weapons, supermoves, ultramoves, and cinematic camera sequences in real time.
TypeScript
0
8 commits
updated Sep 27, 2026
Anime fights, choreographed to your music.
Version 1.0 · by Subhradeep Sarkar
Put on a song and two fighters made of light will settle their differences to it.
Cineviz listens to the track while it plays. Kick drums turn into punches, the bass shakes the floor, and when the drop lands somebody opens the sky and throws a thousand swords at their rival. Nothing is pre-animated: the choreography, the camera work and every particle are worked out from your song in real time, so no two shows are the same.
It runs in the browser, on a desktop or a phone, with no install and no account.
You need Node.js 18 or newer.
npm install
npm run dev # http://localhost:3000
Open the page, load a song (or pick one of the samples) and press play.
npm run build # type-check and build to dist/
npm run preview # serve the production build
| Key | Action |
|---|---|
Space | Play / pause |
W | Watch mode: full screen, no UI (Esc or W to leave) |
F | Free cam: fly the camera yourself |
C | The cast |
D | Developer overlays |
Esc | Close a panel, leave watch mode or free cam |
Free cam: drag to rotate, right-drag to pan, scroll to zoom. On a phone, one finger rotates, two pan and zoom. The camera glides along with the fight.
On a phone (landscape), the controls live in the rail on the right. The show goes full screen on the first touch.
The sliders along the bottom (Fight, Epic, Chaos, Slow-mo, Aura, Drama, Sadness) steer the mood of the show. FX sets the effect quality.
Handy for testing a specific moment. Combine them freely, for example ?phrase=ultra&tech=godOfWeapons&lock.
| Parameter | Effect |
|---|---|
seed=N | Fix the seed |
lock | Keep the same choreography on every play |
arch=a,b | Force the fighters (saiyan, shinobi, reaper, rubber, tarnished, dancer, hunter, sovereign) |
weapon=a,b | Force weapon sets (for example halberd,flail) |
phrase=kind | Force a phrase (exchange, rush, super, ultra, hybrid, speed_blitz, …) |
tech=id | Force a supermove or ultramove (with phrase=super or phrase=ultra) |
flavor=id | Force the kind of fight (blitz, brawl, duel, sky, arcana, rampage) |
speed=teleport | Speedsters teleport instead of moving at extreme speed |
fx=LEVEL | Effect quality (LOW, MEDIUM, HIGH, ULTRA) |
gpu=integrated | Use the integrated-graphics profile |
reference | Open the motion reference viewer instead of the app |
A short tour. The details are in docs/architecture.md and docs/combat-system.md.
audio ──► BeatTracker ──► MusicState (beats, energy, kick, drops)
│
▼
CombatEngine (choreography on the beat grid)
phrases · moves · weapons · supers · ultras · ruin
│ events
┌──────────────┼──────────────┐
▼ ▼ ▼
Director ParticleSystem FightScene / RuinScene
(shots, slow-mo) (bodies, weapons, (WebGL points, shaders,
effects) post-processing)
src/
app/ layout, full screen helpers
audio/ playback and beat tracking
components/ui/ top bar, timeline, panels (cast, about, director), overlay
content/ the cast: stories, stats, weapon histories
engine/
director/ the virtual camera operator
rendering/ scene, ruin layer, shaders, adaptive performance
simulation/
combat/ choreography, moves, weapons, powers, ruin
particles/ particle bodies, weapons, effects, dragons, lightning
utils/ maths, seeded random, quality tiers
docs/ architecture, combat system, motion reference
scripts/ asset builders (human mesh, mocap analysis, favicon)
Cineviz picks a quality profile from your GPU and then adapts while it plays.
See ASSET_LICENSES.md for sources and terms.
The source code is released under the MIT License.
Third-party assets keep their own licences (see ASSET_LICENSES.md). The two sample tracks in assets/sample-music/ are not covered by the MIT License and their licences are not documented, so replace them with music you have the rights to before distributing the app.
Ideas, bug reports and pull requests are welcome. Read CONTRIBUTING.md first, and please follow the Code of Conduct.
Made with late nights and loud music by Subhradeep Sarkar.
8 commits
TypeScript
97.1%
JavaScript
2.6%