THIS IS A PREVIEW VERSION, ACT ACCORDINGLY
Play GIFs to the beat: load them onto pads, trigger them with the keyboard, stack them on four layers, switch scenes with transitions and throw effects over it all. Everything runs in this browser tab — nothing is uploaded.
.vjif file. Every key and mouse move is listed under ?.Versions follow major.minor.patch. 1.0 comes once VJif has been played live on real hardware (GPU, MIDI controller, recording uploaded to the platforms). Until then, minor versions add features and patch versions fix things. The version shows in the About panel (click the logo). What still needs testing by hand is in TESTS.md.
media.site.com: blocked).common/ are back under the MIT License; VJif and Logo Lab stay under PolyForm Shield.render() explicitly.SNAP_STEPS, persist.js); sets now save as step 5.STEPS, undo.js).Prefs (guarded localStorage) and saveFile in common/util.js, now used by VJif, Logo Lab and Bad MOPHO; onSeg (button rows), isDel (Ctrl/⌘+click), beatTime, stillOf, one toast function.src/types.js: notes on the main objects (media, instance, clip, layer, scene, effect and transition settings) and the short names used for them.tools/vjif/src/ (core, lettering, pool, colour, clock-midi, playback, scenes, render, effects, output, keyboard, the UI panels, main-loop, persist, record, undo, and the stylesheet). build.js stitches them back into the same single vjif.html: the built file was byte-identical before and after the split.Last of the small code-review items; the bigger ones are on the test bench (Backlog, tagged "review").
Fixes from a code review, plus three of your test-bench notes.
First numbered version. Everything before it was built between 2026-10-05 and 2026-10-06; the full history is in git.
.vjif files. The GIF pool keeps every GIF of the set; pads in any scene draw from it.?.Design and UX by XC3N · code by Claude (Anthropic). Free to use; source on GitHub under the PolyForm Shield licence (no resale, no competing products).
: fonts, the MP4 writer, palettes and borrowed ideas.
If this tool is useful to you, consider supporting the music at xc3n.bandcamp.com.
UX & features design by XC3N · implementation & coding by Claude.
The code is written for these tools rather than copied from other projects, apart from the vendored library below. What they borrow is listed here, and the list is updated in the same commit as whatever adds to it.
common/vendor/: VJif writes its MP4 recordings with it.Launchpad Pro MK3 in Programmer mode. The X and the Mini MK3 only have the top row and the right-hand column of buttons. Hover a pad for its full name; Settings › MIDI control › Launchpad layout fills it, Learn changes any of it.
Nothing matches.
Sets are kept in this browser; GIF files are stored once and shared between sets. A .vjif file holds a set plus its GIFs (it's a ZIP) — use it to back up or move a set. Drop a .vjif anywhere on VJif to import it. Loading keeps the current set playing until the new one is decoded, then swaps on the next beat (the next bar with Snap › Bar).