A Funky VJ Toolbox

DiscoCast Visualizer is a live visual performance studio for macOS and Windows. Featuring 1,144 reactive and editable MilkDrop presets, a no-code visual builder where you can mix custom visualizations, images, video, transparent video layers, animated GIFs, and text - all with audio reactivity - plus a scripted show sequencer, all in one app.

What's in the app

Over 1,100 reactive editable visuals, a full preset studio with deep per-layer animation controls, a timeline editor for planning shows, and live performance tools - all in one app.

1,144 MilkDrop Presets

The full Butterchurn library plus the community-curated Baron pack - all bundled locally, no network calls needed.

Lock & remix any preset

Found a bundled preset you love? Lock it and the Random button stops jumping to a new one - instead it re-moods the preset you're on (fresh colour, grade reactivity, Scene FX, Club) every press while its motion stays the same. Endless variations of any of the 1,144, beating to the music.

Preset Browser

Searchable drawer across all 1,144 presets. Heart your favorites, hide the ones you don't want, and cycle only through the good stuff. Export and import of presets is supported.

Live Audio Input

Mic, USB DJ controller, external sound card - pick your device from a native dropdown and the visuals follow whatever you're playing.

Meld (image-as-texture)

Feed any image, GIF, or video into the preset's feedback engine instead of overlaying it - it melts, tunnels, kaleidoscopes, and pulses to the beat. Flow, size, position, mirror, true slow-motion speed, luma key, blend mode, colour grade, Mask (fill a logo with the visual), Displace (the image's shape ripples the melt), beat-reactive spin/zoom, and one-click Remix.

Club / Dark Mode

One knob to tune any preset for a club or dark room - it detects blown-out white and crushes that specifically while pushing the remaining colour deeper, so whites go dark but the colour gets richer (not dimmer). A one-tap Club it button, works on all 1,144 bundled presets.

Image Layers

Up to 5 per preset. Upload photos, textures, or artwork with a full motion, transform, and VJ effects pipeline per layer - all wired to the music independently. Over a bundled preset a layer sits still by default and persists when you press Random, so you can browse presets under a fixed logo or clip.

Video Layers

Drop MP4 or WebM files into any preset. Independent Width & Height scaling, colored Border ring, full playback controls, color grading, and the entire VJ effects suite apply to every frame at 60 fps.

Transparent Video Layers

Drop a WebM with an alpha channel - AI-rotoscoped subjects from Sammie Roto, animated logos, particle overlays - and the cutout floats over the visualizer with full transparency. Web, Windows, and macOS. No green screen, no compositing chops.

Transparent Backgrounds

Make a whole preset see-through, not just one layer. Show layers only + Transparent background drop the canvas to transparent so your layers float on nothing - then stack transparent presets in the Timeline and each one reveals the zone beneath it. Web, Windows, and macOS.

Animated GIF Layers

Drop any animated GIF into a preset layer. Perceptual speed control (0.25×–8×), Alpha Mode for silhouette cutouts, and a GIF Optimizer for large files.

Layer Animation

Every layer gets a Animate button: nine entrance presets (Fade, Scale, Slide, Pop, Blur), mirrored exits, and six idle loops (Float, Pulse, Sway, Spin, Drift, Breathe). Per-layer Enter at / Exit at timing (0:00–3:00) staggers layers like a director's cut. Plays live in the player & timeline. Tuned with a custom visual scrubber and a live SVG bezier curve preview.

Color Studio

Roll a harmony-aware random colour scheme with Colors, or steer it with harmony-rule, tone (Vivid / Neon / Pastel / Deep), and Base Hue controls. A Color Roll slider cycles the hue over time, and Glow / Accent paint a soft coloured bloom around the visuals. Honours per-channel locks.

Color Field

Turns the background into a living, moving multi-colour field - Shift's A→B colour blend spread across the screen as any of 22 styles (Linear, Radial, Conic, Spiral, Plasma, Diamond, Checker, Clouds, Stripes, Weave, Moiré, Rays, Vortex, Mandala, Marble, Ripples, Hex, Chevron, Dots, Grid, Caustics - plus Flat), each with Spin / Sharpness / Warp / 3-colour / beat-reactive options, still pulsing to the audio. A separate Background colour keeps the field distinct from the wave, shapes, and Flow Style motion (Tunnel / Spiral / Kaleido…) on top - so blank-canvas presets have real depth and colour, not one flat tone.

Remix + audio-reactive colour

One Remix press rolls a whole preset - colour field, three contrasting colours, motion, flow, and wave, all beat-reactive. Remix locks pin what you love and re-roll the rest. Color adjustments (Brightness / Contrast / Gamma / Temperature) then re-mood any loaded preset - including all 1,144 bundled - and a Color Reactivity panel makes them pulse to the beat, so you load a look and it breathes with the music. A Scene FX rack (Posterize / Vignette / Scan lines / Film grain) adds the final graphic/retro/cinematic finish.

Text Layers

Add live text to any preset. Choose font, size, weight, shadow, outline, and color - then apply every image layer transform and audio reactivity to it.

Screen Overlay

Draw a colored shape over any layer - darken areas, create spotlight zones, or mask the canvas. Position, size, feather, and color are all independent per layer, and layers above always sit on top.

Auto-Gain & Kick-Lock

AGC keeps visuals consistently punchy regardless of volume. Kick-Lock isolates the low end so everything locks to the kick drum.

Live Performance Keys

One-key strobe, blackout, and color inversion. Hold Shift for a 2× intensity boost. Fast enough for live DJ sets.

Projector Ready

Screen Wake Lock, auto-hiding cursor, and Zen Mode (H key) for zero-UI projection. Built for live events and installations.

Virtual Camera Output

Stream the visualizer canvas directly into OBS, Zoom, or any app that accepts a webcam. No extra drivers - one toggle in the app.

Output Resolution Control

Lock the render canvas to HD / Full HD / QHD / 4K or a custom size. Set aspect ratio and fill mode (Letterbox / Stretch / Crop) independently.


Preset Studio editor showing custom visual controls and image layers Preset Studio - custom visual example Preset Studio - custom visual example

Make your own visuals

Build custom presets from scratch with a live canvas and a tabbed inspector. Pick a palette, shape the motion, then add your own images and wire every layer to the music independently.

  • Palette Opacity - fade the MilkDrop background to black so only your layers show; designed for multi-zone compositing in the Timeline Editor
  • Transparent Background - Show layers only + Transparent background make the whole canvas truly see-through (not black) so layers float on nothing - the foundation for stacking presets over each other in the Timeline
  • 12 one-click palettes · 3 independent color swatches (Wave / Glow / Accent) · per-preset Saturation, Hue Rotate, and brightness toggles
  • Up to 5 layers per preset - images, video (MP4/WebM), animated GIFs, or text - each with independent motion, effects, and audio reactivity
  • Motion Audio Reactivity - add Pulse, Bounce, Shake, Beat Fade, Strobe, Tilt, Hop, Hue Pulse, Blur Pulse, or Squash to any layer via Source + Curve controls
  • From-scratch creation tools - a Motion Engine (Breathe / Sway / Spin with Speed + Depth) for living motion, Custom Shapes (up to 4 placement-first polygons/rings with their own motion + audio reactivity + trail), and a Colors harmony-aware random palette roll
  • Video layers - play/pause, loop, speed (0.25×–4×), scrub bar, 12-control color grading (Brightness, Contrast, Gamma, Fade, Temp, Sepia, Blur, Shadows, Highlights, Lift, Gain, Tint M/G); the entire VJ effects suite applies to every frame
  • 50-deep undo/redo · A/B comparison · Focus mode (\ key)
  • Export presets as portable files - images and all layer data included, no data lost

Layer Types - up to 5 per preset

Every layer type - image, video, GIF, or text - runs through the same full effects pipeline. Motion, transforms, audio reactivity, color grading, and blending are independent per layer, so you can stack and mix anything exactly how you want.

Video
MP4 & WebM - rendered as real-time GPU textures at up to 720p
Transparent WebM - drop a video with an alpha channel (Sammie Roto cutouts, animated logos) and the subject floats over the visualizer; macOS auto-converts on first import
Playback - play/pause, loop toggle, speed (0.25×–4×), scrub bar
Color grading - 12 controls: Brightness, Contrast, Gamma, Fade, Color Temperature, Sepia, Blur, Shadows, Highlights, Lift, Gain, Tint M/G
Scale 10%–200% coverage · Mirror (H / V / Quad / Kaleidoscope)
Tile & Grid - Density or explicit Cols×Rows, full per-cell stack (Offset, Cell Rotate, Popcorn, variance, Seed); works on transparent video
Width & Height - independent non-uniform scaling (0.25×–4×) per axis
Border - colored ring outside video edge (width, color, feather)
All VJ effects - Spin, Orbit, Wave Distort, Chromatic Aberration, Pixelate, Scan Lines, Film Grain, Luma Key, Invert, Threshold
Audio-reactive - Bass/Mid/Treble-driven Pulse, Bounce, Beat Fade, Shake, Strobe
Motion
Spin - per-tile or whole-image rotation speed
Orbit - circular or Lissajous path (figure-8, clover)
Bounce - bass-driven upward displacement on every beat
Beat Shake - random UV impulse on kick, scales with audio
Sway - sinusoidal horizontal pendulum
Wander - organic dual-sine drift that never repeats
Pan - Drift (endless scroll) or Bounce (ping-pong)
Tunnel - seamless zoom-through with per-layer depth offset
Transform
Size with audio-reactive pulse
Angle - static rotation offset
Skew X / Y - 2D shear transform
Perspective X / Y - projective warp to vanishing point
Tile Width / Height - independent cell shape
Aspect: Lock / Fluid - Lock (default) holds the layer's true shape on any canvas; resizing or going full screen reveals more of the scene instead of stretching. Fluid = legacy canvas-adaptive. Portrait, square & landscape tile without distortion
Radius - SDF rounded-corner blend on tile edges
Per-Cell Offset - stagger alternating rows or columns (classic brick / half-drop pattern)
Cell Rotate - random rotation per tile, with optional 90° snap for a Truchet-style mosaic
Popcorn - per-cell audio pulse; individual tiles dance on different beat phases
Size Var - procedural per-cell size variance; every tile a slightly different scale
Jitter X / Y - per-cell position scatter; tiles break free of the grid, drifting past their cells and overlapping each other
Opacity Var - per-cell opacity variance; each tile fades to its own level
Seed - reshuffle or lock the procedural per-cell random pattern
Grid mode - explicit Cols×Rows grid as an alternative to density-driven tiling
Fill / Fit - stretch the image to each grid cell, or preserve its aspect with transparent padding
Grid Scale - zoom the whole grid: smaller with a margin, or larger than the canvas for a zoom-in
Subdivide - split every grid cell into an inner sub-grid for a recursive grid-within-a-grid
Outer Gap - open wide channels between the outer cells so the sub-grids read as separate clusters
Visual Effects
Chromatic aberration - animated RGB channel split
Tint + Hue Spin - color wheel animation
Saturation - 0 = greyscale → 1 = original → 2 = hyper-vivid
Hue Rotate - shift image hue independently of the palette (0–360°)
Brightness / Contrast / Gamma - exposure, punch, midtone curve
Fade - lift black point for a faded film look
Color Temperature - warm/cool shift (−15% per channel)
Sepia - blend toward classic warm sepia tone
Blur - 5-tap soft blur (pairs with Additive blend for glow)
Shadows / Highlights - luma-weighted dark & bright area control
Lift / Gain - shadow bias & highlight boost (professional grading)
Tint M/G - magenta/green color balance axis
Mirror - H / V / Quad / Kaleidoscope (per-tile or whole)
Canvas Mirror - folds the entire scene
Posterize - 2 / 4 / 8 / 16 color quantize steps
Edge / Sobel - luminance gradient outline effect
Luma Key - cut out darks or lights by brightness threshold
Wave Distort - sinusoidal UV warp, audio-reactive amplitude
Invert - color negative blend (0 = normal, 1 = fully inverted)
Threshold - binary B&W with audio-reactive cutoff
Pixelate - retro mosaic blocks, adjustable resolution
Scan Lines - CRT-style horizontal dark bands
Film Grain - animated noise overlay for analog texture
Strobe - hard binary opacity cut on beat threshold
Blend mode - Overlay / Additive / Multiply
Screen Overlay - per-layer colored shape (rectangle → ellipse) drawn over the canvas with position, size, feather, strength, and color. Composites in layer order so layers above always sit on top
Audio Reactivity
Source - Bass, Mid, Treble, Volume, or Flux per layer
Curve - Linear, Squared, Cubed, or Gate shaping
Opacity Pulse - audio-reactive fade independent of base opacity
Pulse / Bounce / Shake / Beat Fade / Strobe - size, lift, jolt, fade, and hard strobe-cut on the beat
Tilt - snap-rotate ±15° on beat, with a ←/→ direction chip
Hop - directional left/right kick on beat; the sideways cousin of Bounce
Hue Pulse - the layer's hue jumps on every beat, on top of any Hue Spin
Blur Pulse - cinematic focus pull; blurs on the hit, sharpens between
Squash - cartoon squash-and-stretch on beat (Wide flattens, Tall stretches)
All motion + effects driven by same audio signal
Text Layers
Fonts - Inter (variable), Roboto, Oswald (400 & 700 weight)
Typography - size (24–200px), weight, letter spacing, line height, alignment, color
Effects - drop shadow (blur, X/Y, color) and outline (width, color)
All transforms - tile, spin, mirror, orbit, bounce, hue spin, audio reactivity
Two size controls - Typography Size (glyph scale) and Blend Size (tile density)
Saved with preset - text content and all settings persist on export/import
Animated GIF
Perceptual speed - 0.25×–8× log-curve control; consistent feel across fast and slow GIFs
Alpha Mode - Fade (blend) or Preserve Silhouette (cutout)
Timing Stability - 0–1 variance smoothing for choppy source files
GIF Optimizer - frame reduction, resize, and GPU savings preview before adding to preset
Layer Animation
Animate button on every layer card opens a focused, draggable floating modal - the canvas stays live behind it while you tune
Entrance - Fade, Scale Up, Scale Down, Slide L/R/U/D, Pop, Blur; auto-fires whenever a preset loads
Exit - same chip set with mirrored end-states; plays when the layer is removed (the delete waits for the tween)
Idle - continuous loop while the layer is visible: Float (vertical bob), Pulse (scale breathing), Sway, Spin, Drift, Breathe (opacity)
Contextual params - each preset reveals one tunable: Slide = Distance, Scale = Start size, Pop = Pop from, Blur = Start blur
Visual duration scrubber - custom drag handle, tick marks, live readout, keyboard-arrow nudging (0.1–10s for entrance / exit; 0.25×–4× for idle speed)
Ease bezier preview - chip row + live SVG curve that samples the actual ease, so elastic / bounce / back overshoots draw correctly. Entrance: Smooth / Snappy / Spring / Bounce / Linear. Exit: Smooth / Snappy / Linger / Wobble / Linear
▶ Preview button replays the tween on the live canvas without committing - tune duration, ease, or chip and re-preview cleanly
Enter at - m:ss scrubber (0:00–3:00) on the Entrance tab; layer holds invisible until its scheduled time, then the entrance tween fires
Exit at - m:ss scrubber on the Exit tab; exit tween fires at the chosen moment; stagger five layers for a cinematic timed reveal sequence
Plays live in the player & timeline - entrance, idle, and timed schedules all run during real playback; cross-fades between presets respect the animation state
Composes with audio reactivity - animation is "when"; reactivity is "how it behaves moment-to-moment." Both run independently on the same layer
Accent dot on the button when any animation is active - see at a glance which layers are animated
Motion Presets
Six one-click motion looks at the top of the Motion tab: Vortex, Calm Drift, Earthquake, Tunnel In, Spin Lock, Hyperspace
↺ Reset button snaps all motion parameters back to defaults in one click
Wave Audio Reactivity
Source + Curve + Size / Opacity / Shape / Orbit sliders drive the wave overlay from any audio band
Per-slider source pill - e.g. bass pumps wave size while treble morphs shape, independently
Palette Workflow
Hover any of the 12 chips to preview colors live on the canvas before committing
Lock individual channels (Wave / Glow / Accent) to protect them from palette changes
"+ Save current mix" pins your active triplet as a 13th "My Mix" chip
Random & Remix
Redesigned icon footer - five big buttons: + New, Random, Remix, Save, ↺ Reset
Random loads any of the 1,144-preset library straight into the Studio as your editing base
Remix (formerly Surprise) rolls a coherent random variation + palette + motion + wave in one click
Double-click any slider label to reset it to its default value
Wave Thickness, Fill & Rotation
Thickness - continuous 0–8 slider replaces the old on/off toggle; scales the wave from hairline to bold
Fill - 0–1 slider fills the wave into a broad shape (a pulsing disc on round modes, a solid wedge on line modes); the value also sets fill opacity
Rotation - ±180° slider spins the wave shape around its own anchor
All apply to every shape mode including Ripple, and compose cleanly with the Wave Reactivity panel
Shipped via a vendored fork of the Butterchurn engine
Motion Engine
Living, time-driven motion at the top of the Motion tab - a from-scratch preset evolves instead of sitting on a frozen snapshot
Breathe - hypnotic pulsing zoom in and out
Sway - the warp centre drifts in a slow Lissajous, so the scene stops radiating dead-centre
Spin - gentle rocking rotation
Two knobs - Speed + Depth - shape any engine; sits alongside the six static Motion Presets
Plays live in the player & timeline, and layers on top of any bundled preset's own motion
Custom Shapes
Place up to 4 geometric shapes from scratch - polygons and rings, each on its own card in the Wave tab
Drag an XY-pad to position; set Size, Sides (triangle → circle), Angle, Opacity
Fill colour, Border on/off + colour, and Glow (additive blend)
Motion - per-shape Spin & Orbit (time-driven)
Reactivity - Source + Curve + Size / Opacity / Spin / Shake / Sides, each with its own per-slider source pill
Trail - from crisp (no trail) to long echoes
Render over the feedback presets and over a flat Solid/Shift background; play identically in the player & timeline
Colour Roll
One click rolls a harmony-aware random scheme - never just three random RGBs
Colour-theory rules - complementary, analogous, triadic, split-complementary, monochrome - so every roll looks intentional
Respects your per-channel locks: lock a colour you love and reroll the rest
The foundation of a growing Colour Studio (rule picker, hue control, gradients, mood presets to come)

Timeline editor showing preset sequencing and zone compositor Timeline editor showing block transitions and loop regions Timeline editor showing zone compositor and multi-track layout

Plan a whole show

Arrange presets on a multi-track strip, size each block by dragging, then hit play. The Zone Compositor lets you run multiple presets in different screen regions simultaneously - each with its own opacity and blend mode.

  • Real-time live editing - drag, resize, edit, duplicate, or delete blocks while the timeline is playing; changes take effect instantly with no flash
  • Double-click to cue - double-click any block to crossfade into it and seek the playhead to its start; instant live VJ control
  • Per-block menu - a hamburger icon opens a compact action menu: a Transition picker, a 16-colour block colour picker, Duplicate, and Delete
  • Block transitions - set how each block enters: Fade (crossfade), dip through Black or White, or a hard Cut - a creative choice per block
  • Markers & loop regions - press M or click the dedicated marker lane to drop a marker; set one to Loop and it becomes a draggable loop region that wraps playback with a 1-second crossfade
  • Multi-track strip - resize any block to any length (the strip auto-scrolls as you drag), drag-to-reorder, snap-to-grid, BPM grid overlay
  • Stack tracks inside any zone - Full Screen gets a transport-row + Add Track; Left/Right, Quadrants, Center+Frame, and Top Banner each get an inline + Track button on the zone's front-layer row. Up to 4 tracks per zone, each a real engine
  • Top row = front layer - Photoshop convention; strip reads like the composite. New tracks land on top with transparent gaps by default, so empty space on an upper track reveals the track beneath instead of painting black
  • Zone Compositor - quadrant, banner, center square, custom rectangle
  • Per-zone controls - opacity, blend mode (Screen / Overlay / Multiply / Add), and gap behavior
  • Per-zone output routing - one chip on each zone's foundational row picks the display for every track in that zone; stacked zones expose per-track blend mode + opacity in the Outputs panel for fine-grained compositing on the output window
  • Stack transparent presets - a transparent-background preset on a zone reveals the zone beneath it (true per-pixel alpha), so a cutout or logo composites over a full-screen visual
  • Fullscreen mode - F key hides all controls for clean projection
  • Export as .dcshow.json bundle - custom presets and images travel with the file

Your work travels with you

Every preset you build - including image layers - can be exported to a single file and imported on any machine running DiscoCast. No cloud, no sync, no lost work.

Preset Export / Import

Export a single preset or your entire library as a .json file. Images are embedded as base64 - open the file on another Mac and everything is exactly as you built it.

Show Bundle Export

Export a timeline as a .dcshow.json bundle. All custom presets and their images are embedded - hand the file to another DJ and they can run your exact show.

Import Result Feedback

After any import, a modal lists exactly what was restored by name - and flags anything that didn't make it, with the reason why.


Keyboard controls reference showing all shortcut keys

Keyboard Controls

The whole UI is designed to stay out of your way - glassmorphic controls auto-hide after 3 seconds, and every action has a keyboard shortcut. No menus to dig through.

  • Live hype keys - strobe, blackout, invert, and Shift for 2× boost
  • Audio tuning - AGC and Kick-Lock toggle with one key
  • Preset nav - arrows, random, favorites, hide unwanted presets
  • Zen Mode - press H to hide all UI for clean projection
  • Quick launch - E for Preset Studio, L for Timeline Editor

Download

Free download of early beta for macOS and Windows. Mac users: open the .dmg, drag the app to Applications. Windows users: run the .exe installer.

macOS 10.15+ · Tauri · Butterchurn WebGL 2
Windows 10/11 · Run the .exe to install