Output Settings
Control exactly how and where the visualizer renders. Open the Output panel with the monitor icon in the
control bar, or press O. Settings are saved and restored automatically on every load.
Default settings (out of the box)
- Resolution — Match window. Canvas always fills whatever size the app window is.
- Aspect Ratio — Free. No constraint; proportions follow the window.
- Fill Mode — Letterbox. If a resolution is locked, black bars appear rather than stretching or cropping.
- Virtual Camera — Off. No stream is started until you turn it on.
Nothing to configure for normal use — defaults give you a clean full-window visualizer. Only open Output Settings when you need a specific projector resolution or want to feed the canvas into OBS.
Render Resolution
Pin the canvas to a fixed pixel size regardless of the app window. Choose from the dropdown or enter
a custom width × height and click Apply.
- Match window (default) — canvas always fills the window at its natural size.
- 1280×720 — HD. Good for older projectors or lower-spec machines.
- 1920×1080 — Full HD. Most common projector native resolution.
- 2560×1440 — QHD. High-end displays and LED walls.
- 3840×2160 — 4K. GPU-intensive; test performance before a live show.
- Custom… — type any width and height and press Apply. Useful for
non-standard LED panel dimensions or portrait columns.
When a resolution is locked, the canvas renders at that size regardless of how
large or small the window is. The Fill Mode setting below controls how it fits inside the window.
Aspect Ratio
Constrain the canvas proportions without fixing the pixel count. Useful when the window size changes but
you always want a specific shape.
- Free — no constraint; canvas matches the window exactly.
- 16:9 — standard widescreen. Most projectors and TVs.
- 4:3 — classic square-ish format. Older projectors.
- 21:9 — ultra-wide / cinema. LED banners and wide screens.
- 1:1 — perfect square. Club screens, Instagram-format content.
- 9:16 — portrait. Vertical LED columns, phone-format screens.
Fill Mode
How the locked canvas is positioned inside the window when its ratio doesn’t match:
- Letterbox (default) — canvas is centered with black bars filling the gaps.
Nothing is cropped or distorted. Best for projectors where accurate proportions matter.
- Stretch — canvas fills the window completely, ignoring proportions. Use when
the output device matches the render resolution exactly.
- Crop — canvas fills the window and any overflow is hidden. No black bars, no
distortion, but the edges are cut.
Virtual Camera
Toggle the Virtual Camera switch to stream the visualizer canvas as a live video
source. Once active, open OBS, Zoom, Teams, or any video software and select the app window
as a camera input — the visualizer appears as a live feed.
- Status hint — turns LIVE — select this window in OBS / Zoom
while active; the monitor button dot turns green.
- macOS app note — the stream is available in the WKWebView, but routing it to
a system-level virtual camera requires the OBS Virtual Camera driver to be installed separately.
The virtual camera stream runs at 60 fps and matches the current render
resolution. Stopping it releases all tracks automatically.
Projector workflow tip
For a live show: set Resolution to 1920×1080, Aspect to
16:9, Fill Mode to Letterbox, then press H to hide the UI and
F for fullscreen. The canvas renders at the exact projector native resolution regardless of
what your laptop screen does.
🎨 Preset Studio
From the main screen, click Preset Studio under Creative Tools. You'll land on the Studio's own source screen — choose Live Audio (mic or audio interface), Load Track (MP3, WAV, or FLAC), or No Audio to jump straight in. Loading audio is recommended: it activates all the audio-reactive features. Once you're in, a live canvas runs on the left with a tabbed control panel on the right. Every change updates instantly.
Overview Creative
The Preset Studio is a complete visual preset builder with 4 tabbed sections, undo/redo, A/B comparison, and a library of 1,144 bundled presets to use as starting points.
- Palette — Color grading, palettes, the 🎨 Color Studio (harmony roll, tone, Base Hue, Color Roll), the 🌈 Color Field (moving multi-colour background), glow bloom, and scene effects
- Motion — Motion engine (living motion), the Flow warp-field library, Quick Looks, and audio reactivity
- Wave — Custom Shapes + the global audio waveform overlay
- Layers — Add images, GIFs, video, and text on top
Color & Palette
- Palette — 12 one-click palettes with hover-to-preview (mouse over a chip to see the colors live on the canvas without committing), plus three independent color swatches (Wave / Glow / Accent) with per-channel 🔓/🔒 locks so a palette only writes the unlocked channels. "+ Save current mix" pins your active Wave/Glow/Accent triplet as a 13th "My Mix" chip. Glow Strength and Accent Strength ✨ now add a colored bloom — a soft halo around the visuals tinted by your Glow / Accent colour, so all three palette colours show on the visualisation itself (not the old edge-border ring; the Outer/Inner Border sliders still give you true borders if you want them). Plus Saturation, Hue Rotate, and scene-level toggles (Brighten, Solarize, Invert, etc.). The Opacity slider at the top fades the MilkDrop background itself — drag it to zero and only your layers show over a black canvas.
🎨 Color Studio ✨ (beside Quick Palettes) — 🎲 Colors rolls a full harmony-aware random scheme; under it you can steer the roll: harmony-rule chips (Monochrome / Analogous / Complementary / Split-complement / Triadic), tone chips (Vivid / Neon / Pastel / Deep), and a Base Hue slider. Pick any to steer, leave them clear for pure random, or click an active chip again to clear it — and 🎲 lights up whatever it landed on. A Color Roll slider gently cycles the whole scheme's hue over time. Everything honours your per-channel 🔒 locks, so lock a colour you love and reroll the rest.
🌈 Color Field ✨ (in the Shift panel) — turns the background into a living, moving multi-colour field instead of a flat slab. It takes Shift's signature A→B colour blend (your dance/VJ pulse) and spreads it across the screen: pick from 22 styles — Flat (the classic flat Shift) plus 21 moving fields (Linear, Stripes, Weave, Radial, Diamond, Moiré, Conic, Spiral, Rays, Vortex, Mandala, Plasma, Clouds, Marble, Ripples, Checker, Hex, Chevron, Dots, Grid, Caustics) — and shape each with Scale (pattern size), Motion (drift speed), Spin, Sharpness (hard bands), Warp (an organic ripple that wobbles any pattern), an optional 3-colour blend, and a beat-reactive amount that makes the field breathe to the music. It still pulses to the audio. A separate Background swatch gives the field its own colour, distinct from the wave/shapes/flow on top — so the 🎲 roll lands three contrasting-but-harmonious colours (background field vs. foreground content) and nothing melts into one colour.
🎚 Color adjustments ✨ — Brightness, Contrast, Gamma, and Temperature faders (beside Saturation / Hue Rotate / Color Roll) that adjust the final output of any loaded preset — including the 1,144 bundled MilkDrop presets. Load a preset, then warm or cool it, punch the contrast, or lift the mids to re-mood it live and make it yours. Underneath, a Color Reactivity ✨ panel makes those adjustments pulse to the beat: pick a Source (Bass / Mid / Treble / Volume / Flux) + Curve, then dial how hard Brightness / Contrast / Gamma / Temperature breathe with the music — on any of the 1,144 presets. Below that, a 🎛 Scene FX ✨ rack — Bloom (a soft glow from the blurred image that softens/fills any preset incl. the 1,144 bundled), Posterize, Vignette, Scan lines, and Film grain — finishes the final image of any loaded preset (Posterize & Vignette read strongest on bright, full-screen presets; Bloom / Scan lines / Grain show on anything). Finally, a 🌙 Club / Dark Room ✨ New knob — the go-to one-knob dark-room tune for any preset. It detects blown-out white (the kind that lights up a room) and crushes that specifically while pushing the remaining colour deeper, not dimmer — so whites collapse toward dark but the reds, blues, and greens get richer. A one-tap Club it button snaps it on; works on all 1,144 bundled presets too.
- Motion — a Motion Engine ✨ at the top: pick Breathe (pulsing zoom), Sway (drifting centre), or Spin (rocking rotation) and dial two knobs — Speed and Depth — to give a from-scratch preset living, evolving motion instead of a frozen snapshot (it plays in the player & timeline too). Below it, a Flow ✨ warp-field library — sharp fields (Tunnel / Spiral / Ripple / Swirl / Plasma / Liquid / Kaleido) plus soft blur-sampled fields (Bloom / Smoke / Melt) that fill as broad glow instead of thin threads — each with Speed / Depth / Density knobs; this is the per-pixel motion field that gives most bundled presets their signature flowing look, now no-code, and it stacks on top of a Motion engine. Then Quick Looks (one-tap motion combos) with a ↺ Reset, and below them every control (zoom, rotation, warp strength, echo/decay, drift, warp center, beat sensitivity, and a full Reactivity panel — Source + Curve + amount sliders) laid out in the open, so the audio-reactivity controls stay visible rather than hidden behind a drawer.
- Custom Shapes ✨ (Wave tab) — place up to 4 geometric shapes from scratch. Each shape is a card: drag the XY-pad to position it, then set Size, Sides (triangle → circle), Angle, Opacity, Fill colour, Border (on/off + colour), and Glow. A per-shape Motion block adds Spin & Orbit, and a full Reactivity panel (Source + Curve + Size / Opacity / Spin / Shake / Sides, each with its own source pill) wires the shape to the beat. A Trail slider sets how long shapes smear — all the way left is crisp (no trail), up gives long echoes. Shapes sit over the feedback presets and over a flat Solid/Shift background.
- Wave — the global audio waveform overlay. 8 Shape modes (Center, Lines, Sides, Pulse, Star, Dots, Radial, Ripple) with a ↺ Reset button that hides the wave entirely — when the wave is hidden, no shape button looks "selected" until you actively pick one. Style sliders include a new Thickness slider (0–8) that smoothly scales the wave line from hairline to bold (replaces the old binary toggle), a new Fill slider (0–1) that fills the wave into a broad shape — a pulsing disc on the round modes, a solid wedge on the line modes — so it reads as a solid form rather than a thin thread (the value also sets the fill's opacity), and a Rotation slider (±180°) that spins the wave shape around its own anchor — all apply to every shape mode including Ripple. Plus a Reactivity panel: Source + Curve + four sliders (Size / Opacity / Shape / Orbit), with a small src pill next to each slider that lets you override the audio source per-slider (click cycles · → B → M → T → V → F). Unlocks combos like "bass pumps wave size while treble morphs shape."
- Layers — add up to 5 layers (images, GIFs, video, text) on top of any preset. Always works on every preset, no exceptions. Full motion, transforms, 12-control color grading, VJ effects, and per-layer audio reactivity. Over a bundled MilkDrop preset a layer now sits still by default (it won't pick up the preset's motion — turn on the layer's own audio sliders when you want it to react), and your layers persist when you press 🎲 Random, so you can drop in a logo or clip and browse presets underneath it. The most powerful tab in the Studio.
The icon footer (5 big buttons with instant tooltips): + New (blank baseline), 🎲 Random (one-click loads a random preset from the 1,144 bundled library as your editing base — turns the Studio into 1,144 starting points instead of one; click again to reroll. Lock it ✨ — open the 🔒 Locks panel just above the footer and hit Lock preset, and Random stops loading new presets: instead it re-moods the preset you're on — fresh colour grade, grade reactivity, Scene FX, and Club finish each press, all pulsing to the music, while the preset's motion stays exactly the same. Endless variations of a preset you love; unlock to browse fresh presets again), 🎲 Remix ✨ (rolls a complete new preset in one press — a moving colour field + three contrasting colours + a motion + a flow + a wave, all pulsing to the audio; in the same 🔒 Locks panel, the Remix · pin what to keep chips let you pin the parts you love — Colours / Field / Motion / Flow / Reactivity — and re-roll only the rest), 💾 Save, ↺ Reset. Two universal shortcuts: double-click any slider label to reset it to its default value, and pair 🎲 Random (load a bundled preset) with the Color adjustments + Color Reactivity to re-mood any of the 1,144 presets.
Workflow
- Undo / Redo — 50-deep stack. ⌘Z / ⌘⇧Z.
- A/B compare — hold the button to preview the saved state; release to restore.
- Save — saved locally on your computer. Saved presets
appear in the My Presets tab of the main app.
- Reset a slider — double-click its label to snap it back to the default
value instantly. Works on every slider in every layer card.
- Preview mode — click the expand icon in the top-right corner of the topbar
(or press \) to hide the panel and see the full canvas. Click anywhere on the canvas
to restore the panel.
- First-use tips — a tips modal appears when you open the editor. Dismiss it
freely or click "Never show again" to stop it appearing. Reset with
localStorage.removeItem('discocast_onboarding_never') in the developer console.
- Dev HUD — press ` (backtick) to overlay frame time, estimated VRAM,
active layer count, and last shader rebuild time.
🖼️ Layers
Add up to 5 image, GIF, video, or text layers on top of any preset — always, no exceptions. Each layer has a full motion, transform, 12-control colour-grading, and VJ-effects pipeline, all wired to the music independently. And with Meld ✨, a layer can be fed into the preset itself.
Image & Video Layers Pro
Add up to 5 image, GIF, or video layers in a collapsible smart-accordion stack. Drag any card to reorder. Each
layer has:
- Solo / Mute — audition one layer in isolation or hide it without deleting.
- Animation — Tile, Spin, Angle, Skew X/Y, Orbit (Circle or Lissajous path), Tunnel zoom, Bounce
(beat-lift), Sway, Wander, Pan, Chromatic Aberration,
Tile Width & Height, and a draggable XY anchor point. VJ Effects:
Luma Key, Wave Distort, Invert, Threshold, Pixelate, Scan Lines, Film Grain.
- Aspect (Lock / Fluid) — keeps a layer's true shape no matter the canvas. Lock (default) means resizing the window or going full screen reveals more of the scene instead of stretching the layer; Fluid lets it adapt to the canvas (the older behaviour). Works on single, tiled, and grid layers (grid uses Fill / Fit for its in-cell shape).
- Per-Cell (tiled layers) — Offset staggers alternating rows or columns (classic brick / half-drop), Cell Rotate gives each tile its own random rotation with an optional 90° snap (Truchet mosaic), and Popcorn drives a per-cell audio pulse so individual tiles dance on different beat phases. The Variance sliders add procedural per-cell variety — Size Var (each tile a different size), Jitter X/Y (each tile drifts freely past its cell and overlaps its neighbours), and Opacity Var (each tile a different opacity); the Seed control reshuffles the random pattern, and Lock freezes one you like. All work alongside the existing Spin / Group / Angle.
- Grid mode (tiled layers) — switch a tiled layer from Density (the Size slider drives the tile count) to an explicit Grid of Cols × Rows cells that fill the canvas. Fill stretches each image to its cell; Fit preserves the image's aspect with transparent padding. The Scale slider zooms the whole grid — below 1 it sits smaller with a margin, above 1 it zooms in past the canvas edge. Every per-cell effect and audio reaction works in Grid mode.
- Recursive grids (Grid mode) — Subdivide splits each grid cell into an S×S inner sub-grid, and Outer Gap opens space between the outer cells so the sub-grids read as separate clusters with wide channels between them. Pairs with Spacing (the gap within a cluster) for two independent gap scales. Every per-cell effect varies across every inner cell automatically.
- Beat Shake — omnidirectional random UV jolt on every beat. Pairs with Bounce for chaotic, energetic motion.
- Beat Fade / Pulse / Strobe — audio drives opacity (smooth fade or hard strobe cut)
and size on every beat.
- Tilt / Hop / Hue Pulse / Blur Pulse / Squash ✨ — five more beat-driven effects in
the Audio Reactivity panel: snap-rotate (Tilt), a directional left/right kick (Hop), a hue jump (Hue
Pulse), a focus pull (Blur Pulse), and cartoon squash-and-stretch (Squash). All ride the same Source +
Curve as the rest.
- Mirror — Off, Horizontal, Vertical, Quad, or Kaleido (6-slice polar fold). Apply
per tile or across the whole field.
- Canvas Mirror — folds the entire rendered scene horizontally, vertically, or both.
- Tint & Color Grading — a full 12-control grading toolkit in the Tint section of every layer card (works on images, GIFs, video, and text): Brightness, Contrast, Gamma, Fade (lift black point for a film look), Color Temperature (warm/cool shift), Sepia, Blur (5-tap soft blur), Shadows, Highlights, Lift, Gain, and Tint M/G (magenta/green balance). Plus Hue Spin to animate through a spinning hue cycle.
- Audio Reactivity — per layer, choose which audio band drives reactive controls:
Bass, Mid, Treble, or Volume. Shape the response with Linear, Squared, Cubed, or Gate curves.
- HD uploads — toggle before uploading to resize at 2048 px (default is 1024 px).
Meld — melt an image INTO the preset ✨ New
Every image, GIF, and video layer has a Meld button in its header. Flip it and
that layer is fed straight into the preset's own warp engine — instead of compositing on top, the
picture gets melted, tunneled, kaleidoscoped, smeared, and pulsed to the audio by
the preset itself. A logo dissolves into plasma; a face melts through a tunnel on the beat; a photo
becomes liquid. The card swaps to the Meld controls:
- Flow — the melt motion: Tunnel, Spiral, Ripple, Swirl, Plasma, Liquid, Kaleido, Bloom, Smoke, Melt. Click to explore.
- Size & Position — scale the image and place it (drag the pad); below full size it dissolves into the melt at its edges instead of tiling.
- Mirror — H / V / Quad / Kaleido fold of the melted image, with a Kaleido spin speed.
- Speed & Depth — Speed is true slow-motion (drag it down for a hypnotic, gooey slow melt that stays just as rich); Depth sets how hard it warps.
- Spin / Zoom Pulse / Flow Pulse ✨ — beat-reactive melt motion, hardwired to the kick.
- Luma Key — key the dark parts of the image out so the melt/feedback shows through cleanly.
- Mask ✨ New — use the image's bright shape as a crisp stencil: the image shows inside its silhouette while the preset's own melt keeps swirling outside. Turn it up for a sharper edge — perfect for filling a logo or text with the visual.
- Displace ✨ New — the image's brightness physically warps the melt: bright areas push out, dark pull in, so the picture's shape ripples and embosses the plasma.
- Blend mode — how the image fuses with the melt: Mix, Add (glow), Screen, Multiply (stamp), Difference (psychedelic), Overlay (contrast).
- Colour — grade the image before it melts in: Brightness, Contrast, Saturation, Hue, and Invert.
- Presence + Audio — how present the image stays in the loop, pulsing in on the beat (Bass / Mid / Treble / Volume).
Only one layer melds at a time, its overlay hides while it drives, and 🎲 Remix
rolls the whole melt look for you — lock Flow in the Remix locks to keep a melt
you love and re-roll everything around it. Works with still images, GIFs, and live video.
Layer Animation ✨ New
Every layer card now has a ✦ Animate button in its header that opens a focused modal — a creative planning tool for how each layer arrives, leaves, and breathes on screen. The modal is a draggable floating panel so the canvas stays visible and live while you tune. Three tabs:
- Entrance — how the layer arrives. Pick a chip: Fade, Scale Up, Scale Down, Slide Left / Right / Up / Down, Pop (overshoot), or Blur (focus-in). Each preset reveals one contextual parameter underneath — Slide has Distance, Scale has Start size, Pop has Pop from, Blur has Start blur. Auto-fires whenever a preset loads so it plays for real, not just in preview.
- Exit — how the layer leaves. Mirror chip set (Fade, Scale, Slide, Pop, Blur) with their own end-state params. Plays when you delete the layer — the layer holds on screen for the full tween before it actually goes.
- Idle — continuous motion while the layer is visible. Float (vertical bob), Pulse (scale breathing), Sway (gentle rotation), Spin, Drift (two-axis wander), or Breathe (opacity in/out). A single Speed multiplier scales the loop period.
- Enter at / Exit at — schedule exactly when each layer enters and exits within the preset's lifetime (0:00–3:00). Drag the Enter at scrubber on the Entrance tab to hold the layer invisible until that moment, then fire the entrance tween. Drag Exit at on the Exit tab to trigger the exit tween at a chosen time. Default 0:00 / no exit = the original always-on behaviour. These are timing controls — separate from the entrance / exit Duration.
Plays live — not just in the editor. Entrance, idle, and timed Enter at / Exit at schedules all run in the player and in the timeline, not just while editing. Cross-fading between presets also respects the animation state.
Modern controls everywhere. Duration is a visual scrubber (drag the handle along a tick-marked track, with a live readout that updates as you drag, plus keyboard arrows for fine control). Ease is a chip row with a live SVG curve preview — pick Smooth / Snappy / Spring / Bounce / Linear for entrance, or Smooth / Snappy / Linger / Wobble / Linear for exit, and the curve redraws to show exactly what the motion will do, overshoot and all. A ▶ Preview button replays the entrance or exit tween on the live canvas so you can tune without committing.
Composes with audio reactivity. Animation is "when" — entrance / exit / idle. Reactivity is "how it behaves moment-to-moment." Both run independently on the same layer: a layer can fade in (animation) while already pulsing to the kick (reactivity). The accent dot on the ✦ button lights up whenever any animation is active so you can see at a glance which layers are animated.
Animated GIFs
Drop a .gif file into any image-layer slot and it animates inside the visualizer — not
as an overlay, but as a real texture, so every layer effect (tile, mirror, spin, orbit, beat-pulse, hue
spin, blend mode, etc.) applies to the GIF on every frame.
- Speed slider — top of every GIF layer card. Range 0.25× to 4×; default 1.2× (most
GIFs feel a touch slow at native speed). Drag live, no reload.
- Native frame timing — each GIF's per-frame delays are honoured at 1×, then divided
by the speed multiplier. Long-delay GIFs (10 fps memes) and short-delay ones (smooth animation) both
behave naturally.
- Stack with effects — try a GIF with Tile + Mirror Kaleido + Hue Spin for
psychedelic results, or pair Beat Fade with a low speed for a strobe-feel.
- Saved with the preset — speed is persisted, so loading a saved preset restores the
exact playback rate you set.
- File size — GIFs are stored uncompressed once decoded; very large or long GIFs can
use significant memory. Trim or downsize beforehand if you hit limits.
Video Layers New
Drop MP4 or WebM video files directly into presets — videos render as
real-time GPU textures with full playback controls and effects. Auto-transcoding: 1080p and 4K videos are automatically optimized to 720p on upload.
- File support — MP4 (H.264) and WebM (VP9). 720p output for smooth performance.
Drop any resolution — 1080p and 4K videos auto-transcode to 720p with progress feedback.
- Playback controls — Play/pause button, loop toggle, speed slider (0.25×–4×),
and scrub bar for seeking within the video.
- Tiling — Videos tile like image layers. Turn on Tile for Density or Grid mode with the full per-cell toolkit — Offset, Cell Rotate, Popcorn, Size/Jitter/Opacity Var + Seed, Spacing, Group spin, per-tile Mirror, and Tunnel. With Tile on, the Scale slider becomes the tile Size (density); with Tile off, Scale (0.1–2.0) sets single-instance coverage. Tiling works for transparent videos too.
- Width & Height — Independent non-uniform scaling sliders (0.25×–4× each). Stretch or squash the video on one axis without affecting the other. The video’s position never drifts when adjusting these.
- Border — Colored ring drawn just outside the video edge. Set Width, Color (color picker), and Feather (soft glow vs hard line). Found in its own Border section below Tint.
- All effects work — Spin, Orbit, Bounce, Chromatic Aberration, Luma Key, Wave Distort,
Invert, Threshold, Pixelate, Scan Lines, Film Grain, audio reactivity,
and the full color grading suite (Brightness, Contrast, Gamma, Fade, Color Temperature, Sepia, Blur, Shadows, Highlights, Lift, Gain, Tint M/G) apply to every video frame.
- Transparency support — Drop a WebM with an alpha channel and the video composites over the visualizer with full transparency. See Transparent Video Layers below for the full workflow.
- Limits — 2 video layers recommended for best performance. Videos stream from disk so length is flexible; 1–2 minute clips work smoothly, longer videos may show memory pressure on low-end devices.
Transparent Video Layers ✨ Pro
Drop a transparent WebM (a video with a built-in alpha channel) onto any preset and the subject floats over the MilkDrop visualizer with full transparency — no green screen, no black box, no compositing chops required. This unlocks rotoscoped cutouts, animated logos, talking-head loops, particle accents, and AI-isolated subjects as first-class VJ elements.
- Sammie Roto workflow — Sammie Roto is an AI rotoscoping tool: point and click to cut out any subject (a dancer, a logo, an object, an animal) and export as transparent WebM. Drop that WebM into DiscoCast and it renders with perfect alpha over your visuals.
- Works on every platform — Web, Windows, and macOS all support transparent WebM. On macOS the app automatically converts incoming transparent WebMs to a format Apple’s WebKit can decode (one-time, per-clip, with a live progress toast).
- All effects still apply — including Tiling — Spin, Orbit, Wave Distort, Luma Key, Pulse, Mirror, Chromatic Aberration, audio-reactive opacity, and full Tile / Grid with the per-cell stack — every effect that works on a regular video layer works on the transparent one. The alpha channel survives the full pipeline, so each tile keeps its cutout.
- Use Alpha Mode = Preserve for a clean cutout look (default for transparent imports), or set it to Fade to dissolve the cutout into the background by audio reactivity.
- No other VJ tool does this end-to-end — point-and-click AI cutout → transparent video → live audio-reactive VJ effects, all in one workflow.
Transparent Background ✨
Make the whole preset transparent — not just one layer. Instead of your layers sitting on a black canvas, the background becomes truly see-through, so your image, transparent-video, GIF, and text layers float on nothing. This is the foundation for stacking presets in the Timeline: a transparent-background preset placed on a zone reveals whatever zone is beneath it.
- Two switches, in the Layers tab — turn on Show layers only (hides the MilkDrop visualizer so only your layers render), then turn on Transparent background (clears the canvas to transparent instead of black). A checkerboard appears behind the canvas in the Studio so you can see the transparency — it's an editor-only indicator and never shows in a show.
- Works with any layer — images, transparent videos, GIFs, and text all float on the transparent canvas. (Verified across web, macOS, and Windows with both image and transparent-video layers.)
- The Timeline payoff — save a transparent-background preset, drop it on a Timeline zone stacked over another zone, and the lower zone shows through the empty areas. Stack a rotoscoped subject or a logo over a full-screen MilkDrop preset and they composite as real layers.
- MilkDrop presets are untouched — this only applies when Show layers only + Transparent background are both on. Every normal preset renders exactly as before.
Text Layers New
Add a live text layer using the ✏️ Text button in the Layers tab. Text renders as a real GPU texture — every layer effect applies to it.
- Typography — 20 bundled fonts across 5 groups (Standard, Display, Tech/Sci-Fi, Retro/Pixel, Handwritten), weight, size (24–200px), letter spacing, line height, alignment, and color.
- Effects — drop shadow (blur, X/Y offset, color), outline (width, color), and background box (color, padding, opacity).
- Blend mode — controls how text composites over the visualizer. Normal (default) draws text exactly as typed — precise, predictable color. Overlay brightens light areas and deepens dark ones — text feels embedded in the visual. Screen only adds light (soft glow). Multiply only darkens (stamp/burn effect). Add creates bright flares. Difference inverts colors dynamically for psychedelic results.
- All transforms work — Tile, Spin, Mirror, Orbit, Bounce, audio reactivity — same as image layers.
- Two size controls — Typography Size changes how big the glyphs are; Blend Size controls how many tiles fill the screen. Use both together.
- Saved with the preset — text content and all settings are persisted and restore on load.
Chromatic Aberration
RGB channel split with animated offset — creates a glitchy color-fringe effect. Found in the Visual
Effects section (between Tint and Audio Reactivity) on each image layer.
- Chromatic slider (0–1) — amount of red/blue offset. Uses a squared curve for
responsive control at low values; you’ll see the effect within the first quarter of the slider.
- Speed slider (0–4) — animation rate of the offset. Appears automatically when
Chromatic is greater than 0. Red and blue channels animate in opposite directions while green stays
anchored.
- Works in all modes — tiled, non-tiled, and tunnel. The effect respects image bounds
in non-tiled mode (no bleeding outside the image).
- Saved with the preset — both amount and speed persist in the preset JSON.
Pan — Left/Right & Up/Down Translation
Each image layer has a Pan section (below Wander) for deliberate whole-group
translation. When a layer is tiled, Pan always moves the entire grid as one — the pattern scrolls
seamlessly at the wrap edge, never individual tiles.
- Drift — continuous linear travel. Set X and/or Y speed (−2 to +2 UV/sec, signed so
negative reverses direction). With Tile ON this creates an endless scroll — logo parade, star-field
drift, ticker. With Tile OFF the image slides off-canvas.
- Bounce — ping-pong between extremes. X and Y speeds set the oscillation rate
independently; Range sets the half-amplitude. Effectively a 2D Sway with full axis control.
- Composes freely — Pan stacks additively on top of Sway, Wander, and Orbit. Try
Drift X + Orbit for a spiraling scroll, or Bounce Y + Sway for a figure-eight wobble.
- Saved with the preset — mode, speeds, and range all persist in the preset JSON.
Angle (Static Tilt)
An Angle slider (directly below Spin on each layer card) sets a fixed rotation offset
from −180° to +180° without any continuous spinning.
- Pure tilt — set Spin to 0 and drag Angle to lock the image at any diagonal. Great
for logos at a jaunty angle or diagonal tile grids.
- Spin offset — when Spin is also non-zero, Angle acts as the starting angle of the
rotation, so the spin begins from your chosen tilt rather than 0°.
- Works in all modes — tiled (rotates per tile), non-tiled (rotates the whole
image), and tunnel.
- Saved with the preset — persists in the preset JSON. Presets without an Angle
field default to 0° (no change).
Skew X / Y
Two sliders directly below Angle that apply a 2D shear transform — sliding opposite edges in
opposite directions to make tiles and images parallelogram-shaped.
- Skew X (−1 to +1) — slides the top edge left or right relative to the bottom.
Positive values lean the image to the right; negative lean it to the left.
- Skew Y (−1 to +1) — slides the right edge up or down relative to the left.
Combine both axes for diamond or rhombus-shaped tile grids.
- Pairs with Angle and Width/Height — together these four controls give you a
complete 2D affine toolkit: rotate, scale, and shear any image independently.
- Works in all modes — tiled, non-tiled, and tunnel. Applied after rotation,
before sizing, in every pipeline path.
- Saved with the preset — both values persist. Older presets default to 0 (no
skew).
Perspective Tilt
Two sliders — Persp X and Persp Y — directly below Skew in each
layer card. Unlike Skew (which keeps parallel lines parallel), Perspective makes lines converge
to a vanishing point, simulating depth.
- Persp X (−1 to +1) — left and right edges converge. Positive tilts the image
away from you on the right side; negative on the left. Great for billboard lean or forced-perspective
text.
- Persp Y (−1 to +1) — top and bottom edges converge. Positive creates a classic
floor-tile vanishing point receding upward; negative fans it toward you.
- Combine with Skew + Angle — together these give you a full 2D projective
toolkit. Persp Y + Tile is the go-to for infinite floor or ceiling grids.
- Works in all modes — tiled, non-tiled, and tunnel. Applied after Skew in every
pipeline path. Singularity is clamped so extreme values stay safe.
- Zero cost at 0 — no shader code emitted unless a non-zero value is set.
Depth Stack
A Depth slider below the Tunnel slider (visible when Tile is ON) that offsets
a layer's zoom phase in the tunnel, making it appear to fly through space at a different Z depth
than other layers.
- The classic move — two layers, same image, Tunnel speed identical, Depth = 0
on Layer 1 and Depth = 0.5 on Layer 2. The tiles zoom past each other in true parallax —
no other setting achieves this.
- Range 0–1 — 0.5 = exactly 180° phase offset (maximum parallax). Other values
give subtler staggered rhythms.
- Tunnel-only — the slider is hidden when Tile is OFF. Zero cost at 0.
- Combine freely — each layer can have its own Depth, Spin, Tint, and Size
for a full multi-plane 3D look.
Edge / Sobel
An Edge On/Off toggle in the Visual Effects section that replaces the image with
its edge-detected outline — turning any photo into animated neon line art.
- How it works — a 3×3 Sobel kernel samples 8 neighbouring pixels, computes
the luminance gradient, and uses the magnitude as brightness. High-contrast edges glow white;
flat areas go black.
- Best combo — Edge ON + Tint color + Hue Spin. The monochrome edges take
the Tint color perfectly, and Hue Spin cycles the outline through the full spectrum.
- Layer it — one layer with Edge ON (neon outlines) blended over a second layer
with the original image creates a mixed illustration style.
- Works in all modes — tiled, non-tiled, and tunnel. Posterize stacks on top
for an extra-crunchy look.
- Zero cost when Off — no extra samples taken unless enabled.
Beat Shake
A Shake slider in the Audio Reactivity section (below Bounce) that jolts the image
in a random direction on every beat.
- Omnidirectional — unlike Bounce (always up), Shake fires in a new random
direction each beat for a chaotic, glitchy energy.
- Scales with audio — uses the same shaped audio signal as Pulse and Bounce, so
Reactivity Source and Curve both apply.
- Combine freely — stack with Bounce for upward-biased chaos, or with Sway for
an organic tremor feel.
- Cubic curve — the slider gives fine control at low values; big jolts live at
the top end.
Posterize
A segmented button row in the Visual Effects section (Off / 2 / 4 / 8 / 16) that
buckets each color channel into discrete steps — turning any photo into flat graphic art.
- 2 steps — hard 2-tone silhouette. Graphic and bold.
- 4 steps — classic pop-art look. Great with a bright Tint color.
- 8 / 16 steps — subtle banding, still photographic but stylized.
- Pairs with Hue Spin — the limited palette cycles through hues for an animated
retro palette effect.
- Off = zero cost — no shader code emitted when set to Off.
Tile Width & Height
Two sliders in each image layer card (visible only when Tile is ON, sitting below
Spacing) that let you independently control the shape of each tile cell.
- Width (0.25–4.0) — stretches or squashes tile cells horizontally. 1.0 = native
image aspect ratio (the default). Push below 1.0 for narrow portrait-style cells, above 1.0 for
wide panoramic ones.
- Height (0.25–4.0) — same control on the vertical axis. Combine with Width to
make square cells from a landscape image, or tall slivers from a square one.
- Squared curve — both sliders use a squared response so the 1.0 default lands at
roughly mid-travel. Fine adjustments in the lower half, big stretches at the top.
- Composes with Spacing — changing cell shape doesn't affect gap size. Spacing
still controls the gap between tiles as a fraction of each cell.
- Saved with the preset — both values persist in the preset JSON. Presets saved
before this control existed default to 1.0 and render identically.
Luma Key
Two sliders under a Luma Key sub-header in the Visual Effects section that make pixels
transparent based on brightness — great for cutting out backgrounds.
- Key Lo (0–1) — pixels darker than this luminance become transparent. Use to remove
dark/black backgrounds.
- Key Hi (0–1) — pixels brighter than this luminance become transparent. Use to remove
white/light backgrounds.
- Soft falloff — uses smooth blend near the threshold for clean edges, not hard cut.
- Works on all layers — image, video, and text. Combine both sliders to isolate only
mid-tones.
Screen Overlay
Each layer has an Overlay section (below Film Grain, above Audio Reactivity) that draws a colored shape anywhere on the full screen — perfect for darkening areas, creating spotlight zones, or masking parts of the canvas.
- Enable toggle — off by default. Turn on to reveal the overlay controls.
- XY Pad — drag the dot to position the overlay center anywhere on screen.
- Width / Height — size of the shape. At 1.0 both axes cover the full screen.
- Corner — morphs between a sharp rectangle (0) and a fully rounded ellipse (1).
- Strength — opacity of the overlay. 0 = invisible, 1 = fully solid.
- Feather — edge softness. 0 = hard cut, 1 = very soft glow-like fade.
- Color — any hex color. Black darkens the area (vignette), white lightens it, any color tints it.
Layer ordering: the overlay composites immediately after its own layer — so any layer higher in the stack sits on top of it. Use this to frame content: put a dark overlay on Layer 1, then place a logo or video on Layer 2 and it will render cleanly over the darkened area.
Wave Distort
Two sliders under a Wave Distort sub-header that apply sinusoidal UV warping — makes
images ripple and melt.
- Wave (0–1) — amplitude of the displacement. How far pixels shift.
- Freq (1–20) — number of sine cycles. Low = gentle sway, high = tight ripples.
Appears when Wave > 0.
- Audio-reactive — amplitude is boosted by the audio signal (bass hits make waves bigger).
- Works on all layers — image, video, and text.
Color FX — Invert & Threshold
Two sliders under a Color FX sub-header for dramatic color manipulation.
- Invert (0–1) — blends between normal and color-negative. 0.5 = 50/50 mix for a washed look.
- Threshold (0–1) — converts the image to binary black & white at the given luminance
cutoff. Audio-reactive: bass shifts the cutoff for pulsing silhouettes.
- Stack freely — Invert + Threshold together creates striking high-contrast pulsing negatives.
- Works on all layers — image, video, and text.
Texture — Pixelate, Scan Lines & Film Grain
Three sliders under a Texture sub-header for retro and analog looks.
- Pixelate (0–1) — reduces resolution into chunky mosaic blocks. Low values = subtle,
high = extreme 8-bit look. Affects UV before texture sampling.
- Scan Lines (0–1) — CRT-style horizontal dark bands across the image. Great for retro
monitor or VHS aesthetics.
- Film Grain (0–1) — animated noise overlay for cinematic/analog film texture. The noise
pattern changes every frame for a living feel.
- Works on all layers — image, video, and text. Combine with Posterize or Threshold
for maximum retro impact.
🎬 Timeline Editor
A dedicated page for scripting a full live show. Arrange presets into timed blocks on a horizontal strip,
then hit Play — the visualizer runs your sequence automatically. Launch it from the start screen.
Overview Pro
The Timeline Editor is a complete show sequencer for scripted performances. Create timed blocks, arrange them on a horizontal strip, add transitions, and play back your show with VJ Mode — where stopping only pauses the timeline, not the visuals.
- Blocks — preset containers with duration and transitions
- VJ Mode — stop pauses timeline, visuals keep playing
- Multi-Zone — split canvas into multiple regions
- Multi-Track — stack presets as layers
- Markers — cue points and loop regions
🎛️ VJ Mode — The Show Never Stops
Stop pauses the timeline, but visuals keep playing. The last preset stays visible —
no black screens, no awkward silences. Press Play to resume timeline progression. Drag the ruler to
scrub through time while keeping visuals alive. Perfect for live VJ sets where the show must go on.
Timelines & Blocks
A timeline is a playlist of preset blocks, each with a fixed start time, duration, and transition
style. Blocks sit on a scrollable strip — drag them to any position, drag the right edge to resize to
any length (the strip auto-scrolls as you drag, so you never run out of room), or drop them into any
gap. Multiple timelines can be saved and switched between.
Transport
- Space — play / pause
- Home — jump to start
- ← / → — previous / next block
- ↑ / ↓ — nudge playhead ±1s (hold Shift for ±5s)
- Drag the ruler to scrub to any point while playing
Editing while playing
You can drag, resize, edit, duplicate, or delete blocks while the timeline is running. The playhead position is preserved and playback continues from where it is.
Block gestures
- Single-click a block body — selects it; hold and drag to move
- Double-click a block body — crossfades into that preset and seeks the playhead to its start time
- Drag the right edge of a block — resize it to any length; the strip auto-scrolls as you drag, so you can stretch a block far past the visible window in one motion
- Click the ☰ icon (left of block) — opens that block's menu: a Transition picker, a colour picker, Duplicate, and Delete; click again to close
Block transitions
Each block's ☰ menu has a Transition picker that sets how the block enters:
Fade (crossfade from the previous preset), Black or
White (dip through that colour), or Cut (instant switch). It's a
per-block creative choice — pick Black for a deliberate beat of darkness between two presets.
Multi-Zone Output
Split the canvas into up to four simultaneous regions, each running its own preset independently.
Define rectangular zones and assign timelines to each. The canvas splits to show all active
zones — perfect for multi-projector venues. Launch from Output Settings → Zones.
Multi-Track Stacking ✨ New
Stack multiple presets inside a single zone — a layer compositor on the Timeline. In
Full Screen the transport row has a + Add Track button. In
Left/Right, Quadrants, and the other multi-zone layouts, each zone has
its own inline + Track button on its front-layer row. Up to 4 tracks per zone (each
track is a real engine).
- Top row = front layer — the strip reads like the composite, Photoshop-style. New
tracks land on top, and the + Track button moves up with them so you can keep stacking.
- Transparent gaps reveal beneath — added tracks default to transparent compositing,
so empty space on an upper track shows the track below (no black fill). Pair with the
Transparent Background Studio preset and the upper preset's own transparent pixels
reveal beneath too — real per-pixel layer compositing.
- One output route per zone — the ▸ chip on each zone's foundational
row picks the display for that whole zone (every track in the zone rides the same output). Stacked
zones expose per-track blend mode + opacity in the Outputs panel for fine-grained compositing.
- Remove a track with the × on its row. A zone's foundational track
(the original layout zone) stays — that's where the zone's rectangle and output assignment live.
Markers & Loop Regions
Markers live in their own lane just below the ruler. Press M to drop one at the
playhead, or click anywhere in the marker lane to drop one there. Click a flag to edit its
label, colour, and action. Jump to markers instantly with 1–9.
(The ruler itself is playhead-only — click it to seek.)
Set a marker's action to Auto-Stop and the playhead parks there when it
arrives — visuals keep running, great for talk breaks. Set it to Loop and the
marker becomes a loop region: a band appears with a draggable end handle.
Drag the handle to size the loop, the flag to move its start, the band to slide the whole
region — playback loops that span, easing across the wrap with a 1-second crossfade.
Saving & Managing Timelines
New timelines are held in memory until you click Save. Once saved, the button dims to
Saved and shows a dot whenever you have unsaved changes. Use + New to start
fresh, or the dropdown to switch between saved timelines. Copy / Paste JSON buttons let you back up
or share a timeline as text.
Controls & Auto-hide
All overlays (topbar, transport, timeline strip) fade after 3.5 s of inactivity — the same pattern as
the main app. The ≡ button in the top-right corner pins them permanently; click again
to unpin. Press T to toggle the strip panel on and off without touching the mouse.
Pro Tips
- Overlap presets for smooth crossfades — no black gaps
- Double-click any block during playback to cue it instantly — great for live improvisation
- Edit block durations and positions while playing — the timeline adjusts in real time
- Press M on the beat to drop markers live, then set one to Loop and drag its handles to loop a section
- Scrub the ruler to audition any moment before going live
- Multi-zone setups let you run different visuals on different screens
Reactivity & Audio Controls
Every image layer has a Reactivity panel at the bottom of its card. The two settings
there — Source and Curve — are the dial behind the dial. They shape the single audio
signal that drives every reactive control on that layer: Pulse, Bounce, Shake, Beat
Fade, Strobe, and the beat-driven effects Tilt, Hop, Hue
Pulse, Blur Pulse, and Squash.
Step 1 — Pick a Source
Which frequency band feeds this layer's reactivity:
- Bass (default) — sub and kick frequencies. The most punch-per-beat; most presets
start here.
- Mid — snare, vocals, guitars. Reacts on melodic and rhythmic hits mid-song.
- Treble — hi-hats, cymbals, air. Fast and bright; great for sparkle layers.
- Volume — total loudness across all bands. Tracks the overall energy of the mix.
- Flux — spectral flux onset detection. Fires on transients: snare hits, claps,
plucks, percussive attacks. Stays near-zero during sustained notes or held chords. Use it when Bass
smears across the beat and you want only the sharp edge of each hit.
Step 2 — Shape the Curve
The curve transforms the raw signal before it reaches any control. A gentle signal becomes more
dramatic — or more surgical:
- Linear — signal passed as-is. Controls scale directly and evenly with audio level.
- Squared — quiet moments are suppressed; loud peaks hit harder. The most musical
curve for most layers.
- Cubed — extreme contrast. Only the very loudest peaks drive any visible reaction.
- Gate — binary on/off at 30%. Below the threshold: zero. Above it: full signal.
Controls either stay still or snap to maximum.
What Each Control Does With the Signal
- Pulse — grows the layer size on every peak. The curve determines whether small
beats cause any growth at all — Squared suppresses gentle hits, Cubed reserves the swell for the
loudest moments only.
- Bounce — lifts the layer upward on beat. With a Gate curve it snaps up hard on
kicks and drops instantly between them. With Linear it floats up and down with the groove.
- Beat Fade — adds opacity on beat. The layer appears or brightens with the audio,
then fades back when the signal drops. Combines beautifully with low base Opacity so the layer is
normally invisible and only materialises on hits.
- Strobe — unlike the others, Strobe reads the raw audio signal directly
(before the Curve is applied) and compares it to its own Threshold slider. When the audio crosses the
threshold, the layer's opacity hard-cuts to black — instantly. When the beat fades, it returns. This
is a true strobe: no smooth ramp, just a sharp on/off flash driven by real beats.
- Tilt ✨ — snap-rotates the layer on every beat, up to ±15°. A
←/→ chip sets which way it kicks; it eases back toward upright between hits. Gate
curve makes it a sharp jerk; Linear makes it rock with the groove.
- Hop ✨ — the sideways cousin of Bounce. Kicks the layer left or right on beat —
pick the direction with the ←/→ chip. Pair Hop with Bounce for a diagonal beat
shove.
- Hue Pulse ✨ — shifts the layer's hue on every beat (a full colour-wheel sweep at
maximum). Rides on top of any Hue Spin you've set, so the colour jumps with the music.
- Blur Pulse ✨ — pulls focus on the beat: the layer blurs on each hit and snaps
sharp between them. A cinematic emphasis that breathes with the track.
- Squash ✨ — cartoon scale on beat. Wide stretches the layer
horizontally and crushes it vertically on the hit; Tall does the inverse. Reads as
classic squash-and-stretch animation locked to the music.
Example Combos
- Kick-lock flash — Source: Bass · Curve: Gate · Strobe: 1.0 · Threshold: 0.4 · Base
Opacity: 0. The layer is invisible except on every hard kick, where it flashes at full opacity. Zero
ambient light between beats.
- Melodic drift — Source: Mid · Curve: Squared · Bounce: medium. The layer lifts on
snare or vocal hits, barely moves between them. Feels tied to the melody rather than the kick.
- Ambient breathing — Source: Volume · Curve: Linear · Beat Fade: 0.6 · Base Opacity:
0.2. The layer's opacity tracks the mix energy — bright during builds, dim during breakdowns. Feels
alive without being distracting.
- Treble sparkle — Source: Treble · Curve: Cubed · Pulse: high. The layer explodes in
size on hi-hat and cymbal peaks only. Everything below that frequency is invisible to it.
- Multi-layer stack — put two layers side by side: one on Bass/Squared driving
Bounce, one on Treble/Cubed driving Pulse. They react to completely different parts of the music and
never compete.
- Cartoon bop ✨ — Source: Bass · Curve: Gate · Squash: medium (Wide) + a touch of
Tilt. The layer flattens and rocks on every kick like a bouncing logo — squash-and-stretch synced to
the beat.
- Colour strobe ✨ — Source: Treble · Curve: Cubed · Hue Pulse: high. The layer's
colour jumps on hi-hats and cymbals only, leaving its hue still through the rest of the bar.
Tip: a layer with Strobe on and Beat Fade off feels like a strobe
light. Flip it — Beat Fade on and Strobe off — and it feels like a soft glow that pulses
with the music. Both use the same Reactivity panel; only the control you turn up changes the personality.