A WebGL audio visualizer powered by Butterchurn (Milkdrop for the web). Supports 100+ built-in presets and can load custom .milk preset files.
- Butterchurn Engine - WebGL implementation of Milkdrop 2
- 100+ Built-in Presets - Classic Milkdrop visualizations ready to go
- Custom Preset Loading - Drag & drop or browse for
.milkfiles - Real-time Conversion - Converts Milkdrop presets (HLSL) to WebGL (GLSL) in the browser
- Audio Sources - Microphone input or audio file playback
- Searchable Preset List - Filter through presets quickly
npm install
npm run devOpen http://localhost:5173 in your browser.
| Key | Action |
|---|---|
← → or Space |
Navigate presets |
R |
Random preset |
H |
Toggle UI |
Esc |
Hide UI |
Drag & Drop:
.milkfiles - Adds custom presets- Audio files - Plays and visualizes
- Click "Load .milk Presets" button
- Select one or more
.milkfiles - Presets are converted and added to the list (marked with cyan indicator)
Or simply drag & drop .milk files onto the window.
- Vite - Build tooling
- TypeScript - Type safety
- Butterchurn - Milkdrop WebGL renderer
- milkdrop-preset-converter-aws - HLSL to GLSL preset conversion
viz/
├── src/
│ ├── main.ts # Application entry point
│ ├── milk-loader.ts # .milk file loading & conversion
│ ├── butterchurn.d.ts # Type declarations
│ └── ...
├── index.html # UI and styles
├── package.json
└── vite.config.ts
- Butterchurn by Jordan Berg
- Milkdrop by Ryan Geiss
- Preset authors from the Milkdrop community