→ open VISR

VISR

music, made visible — a guide to what this thing can do

VISR turns sound into moving images, live. Scenes are little GPU programs that listen: bass makes things swell, highs make them shimmer, the beat makes them hit. You can jam with it, compose full music videos on a timeline, render them to MP4, or hand someone a link that plays a finished show.

SIXTY SECONDS

  1. Give it sound. Drop an audio file anywhere on the page — or press AUDIO ▾ → DEMO for the built-in groove, MIC for an instrument or voice, TAB to listen to another browser tab (Spotify, YouTube…), URL… to fetch a hosted track.
  2. Flip through scenes. Press keys 1–9 or click the scene tabs. FACTORY ▾ holds the shipped scenes, grouped (tunnels & space, fluid & smoke, geometry, nature, party, signal) — type in the find box to narrow, click to add one to your bank, and star the ones you keep reaching for so they sit at the top.
  3. Shape it. The left sidebar is live: every slider changes the picture now. Each scene brings its own controls; AUDIO / OUTPUT / MEDIA FX are always there.
  4. Ask for anything. The ✦ AI button (bottom right) is the fastest path to everything below: “make a scene like rain on neon streets”, “build a music video for this track”, “make it hit harder on the kick”.

IF SOMEONE SENT YOU A LINK

You probably saw a title and one big ▶ PLAY. That was a complete show — a song plus a scripted timeline of scenes. Press play, it runs fullscreen (Esc leaves fullscreen; the show keeps going). Everything on this page is what you can do after that: the whole studio is sitting behind the show, yours to poke at.

THE BIG PICTURE

Sound flows left to right: source → analysis → everything that moves.

AUDIO — the ears Any source (file, mic, tab, URL, demo) feeds a spectrum analyser. Three tuned pickups — bass, mid, high — feed every scene, plus a beat detector and a level meter. Open EQ to see the spectrum and drag the pickup bells onto your instruments: aim BASS at the kick, HIGH at the hats. Three more pickups (B4–B6) exist purely as modulation sources. SENSITIVITY / SMOOTHING / RELEASE in the sidebar tame jitter — RELEASE is the “VU-meter fall” knob.
SCENES — the pictures A scene is a GLSL shader plus its slider settings. Your bank lives in the tabs (keys 1–9 cue the first nine; drag tabs to reorder). SHADER opens the code — edit it live, or paste a Shadertoy shader and it usually just runs. A comment like // @var GLOW 0 1 0.5 halo strength becomes a sidebar slider. CROSSFADE sets how scenes blend into each other.
MEDIA — your pixels in the scene The MEDIA ▾ menu puts a photo, video, webcam, or text card underneath a scene (the SCENE ↔ MEDIA slider mixes them) — and scenes can sample it as material. MEDIA FX is a full effect chain — on the media alone, or flip FX TARGET to STAGE and the whole composed picture (scene, media, layers) runs through it before FEEDBACK: kaleido on any scene. The chain: seven draggable geometry chips (DRIFT · SPIN · SWIRL · KALEIDO · PUNCH · WARP · RIPPLE · BLOCKS — order matters, drag to reorder) plus color tools (RAINBOW map, CONTOUR lines, POSTERIZE) and a CRT stage (scanlines, tube curve, phosphor glow, DOTS — a halftone screen that redraws the picture as dots, newsprint at the low end and an LED panel at the top — and STATIC — analog snow, from a sparkle of interference up to a dead channel; modulate it with the beat and the signal drops out on every kick). Camera + RAINBOW + KALEIDO is a classic.
MODULATION — set it and it moves Right-click (long-press) any slider to route a source into it: bass, mid, high, level, beat, cut (pulses on every scene change), the extra pickups, channel taps, or a modulator. MODS (top bar) edits the modulators — LFO waveforms (including DRIFT, a slow organic wander), Hz or beat-synced divisions of the BPM, envelope followers with attack/release, and TRIGs: envelopes fired every N beats (or on the detected beat) — a pluck for any slider. The feedback DELAY readout names the musical division at the current BPM, so dub echoes land on the grid. This is how a scene stays alive without you touching anything: beat → PUNCH, bass → WARP, slow DRIFT → HUE, TRIG 1 bar → ZOOM.
LAYERS — a scene per instrument LAYERS (scene bar) stacks up to four bank scenes over the stage: a floating circle for the piano, blue waves when the bass comes in, streaks for the drums. Each layer renders at its saved look (the sliders keep driving the main scene) and composites SCREEN / ADD / MIX. The trick is DRIVE: bind a modulation source — a band, an EQ pickup parked on the instrument, a channel tap, or a MIDI channel (any channel that plays notes becomes source midi1..midi16, gate-at-velocity — the piano's MIDI literally drives the piano's layer) — and it gates the layer's opacity, so a quiet instrument is an invisible layer. A scene can also carry the whole stack: set LAYERS: SET in the shader dock when saving, and cueing that scene recalls its layer combination — the chorus cue brings in the chorus's layers, live or in a render. Layers share the video/cam channel, or carry their own photo/text card. They ride into the feedback echo and render frame-exact in videos.
TIMELINE — the score TIMELINE opens a plain-text cue sheet: 0:32 cue WAVE TUNNEL · 1:07 set vv0 0.9 · 0:55 ramp vv0 -> 0.9 over 12. Press ● while playing and your live scene cuts and slider moves are recorded onto it. TL makes playback follow the sheet. This is the difference between jamming and composing.
AUTO-DJ & THE AI VJ — hands off AUTO ▾ cuts scenes every N bars and/or on detected drops — the bank runs itself. The ✦ AI goes much further: it can listen to the whole track first (BPM, energy curve, drops, where the drums come in) and write a timeline to match. Its VJ mode performs live: it watches the music every few bars and drives scenes, sliders and modulation in real time.
OUTPUT — keep it OUT ▾ → CAPTURE records the canvas and sound live, as a quick take. RENDER… is the composed path: timeline + track → frame-exact MP4 (1080p/720/square/vertical, 24–60fps), rendered offline so it never drops a frame. FULLSCREEN is what it says.

THE ✦ AI, PROPERLY

The drawer at bottom right speaks the whole app. Things people actually say to it:

It has ears (full-track analysis), hands (every slider, scene, and timeline verb), and taste. Give it verbs.

SHARING — LINKS THAT PLAY

linkwhat the recipient gets
?scene=NAMEthe app with that factory scene already running
?audio=URLa track pre-loaded (any CORS-open host)
?load=URLa scene, project, or set file fetched and opened — a project with its own song becomes a full show: splash, progress, one big PLAY, fullscreen
?load=nameshorthand — bare names resolve to this site's show bucket
?p=CODEa cloud save — a project, scene, or shader saved from FILE ▾, opened on any device

The easy way: your library. FILE ▾ (top left) works like any app's File menu: OPEN… browses everything you've saved — projects, scenes and shaders, filterable, newest first — and one click loads it. SAVE updates the project you're working on; SAVE AS… names a new one. Sign in with Google (also in FILE ▾) makes that library follow you to every device; without an account, saves still work with the site passphrase and live in this browser's list. Anything you saved before signing in claims into your library automatically.

Sharing is what links are for: the ⧉ beside any item copies a ?p= link, and the OPEN dialog takes a pasted link at the bottom, so a friend's scene drops straight into your session.

FILE ▾ → EXPORT… downloads files instead: a scene (.scene.json), the whole session (.project.json — bank + timeline + settings, and it remembers a URL-loaded track), or a set (.set.json — a playlist of song+project pairs that plays through like an album). Host the files anywhere CORS allows and link with ?load=.

JAMMING HARDWARE

KEYS

1–9cue scenes
Spaceplay / pause the track
Escleave fullscreen
right-click a slidermodulation menu

GOOD TO KNOW

→ open VISR and make something loud