The WebGL port of Winamp's legendary MilkDrop music visualizer. Butterchurn powers all 745+ MilkDrop preset renders in IKANDY, converting the legacy per-frame and per-pixel math equations into real-time WebGL shaders.
The bundled preset collections used by Butterchurn, including the base library, extra packs, and image-texture presets.
MilkDrop was created by Ryan Geiss in 2001 as a Winamp plugin. The 745+ presets bundled with IKANDY were contributed over more than two decades by Flexi, Martin, Geiss, and hundreds of community authors. These presets are redistributed in good faith consistent with their long-standing public availability across Winamp, foobar2000, MilkDrop2, projectM, Webamp, and Kodi.
If you are a preset author and wish your work removed from IKANDY, please contact support@ikandy.app.
Five 3D raymarched scenes adapted from shaders by mrange and dedicated to the public domain under Creative Commons CC0 1.0 Universal.
One 3D scene adapted from a shader by Blackle Mori, dedicated to the public domain under Creative Commons CC0 1.0 Universal.
Two scenes in IKANDY are adapted from works by Sabo Sugi and included with the author's express permission. These works are not released under CC0 or any open-source license. Forks, derivatives, or redistributions of IKANDY that include these scenes require separate permission from the original author.
Ferrofluid shader · x.com/sabosugi
Trails scene · codepen.io/sabosugi/full/bNBVWpN
The following scenes were designed and written from scratch by IKANDY using real-time FFT audio analysis. No external shader source was used.
Native WebGPU scenes written in WGSL, designed and authored entirely by IKANDY.
All 12 image FX shaders are original IKANDY GLSL implementations. Common techniques (fbm, domain warping, Voronoi) are standard mathematical methods not subject to copyright. No Shadertoy or third-party shader source was used.
IKANDY is built on Electron, which provides the desktop application shell, native API access, and the Chromium rendering engine. Electron bundles Chromium and Node.js.
Chromium provides the WebGL, WebGPU, Web Audio, and rendering surfaces IKANDY uses. Chromium is licensed under a BSD-style license and includes many third-party components. The complete license list is included with the IKANDY installer as LICENSES.chromium.html.
Node.js powers IKANDY's main process, IPC layer, and native module loading.
Three.js powers the Trails scene — a Three.js-based bending light trails scene bundled as a self-contained ESM module.
IKANDY's per-process audio capture uses the Windows Audio Session API (WASAPI) from the Microsoft Windows SDK to enumerate audio sessions and capture per-application audio streams. No Microsoft source code is redistributed. The native module wrapping WASAPI is original to IKANDY.
IKANDY fetches time-synced lyrics via the LRCLIB public API. LRCLIB is a community-maintained lyrics database offering a free, open API with no authentication required.
IKANDY integrates with the Spotify Web API for track metadata, album art, playback control, and playlist browsing. IKANDY uses a BYOK (Bring Your Own Key) model — users supply their own Spotify Client ID, and no Spotify credentials are stored by IKANDY or L&R Entertainment LLC. Use is subject to Spotify's Developer Terms of Service.
IKANDY uses Supabase as its backend for beta user management. Supabase is SOC 2 Type II-certified. Data handling is described in the Privacy Policy.
The following npm packages are used in IKANDY's main process or are bundled with the application. All are used under their respective open-source licenses.
| Package | Version | License | Author / Repo |
|---|---|---|---|
| electron-log | 5.4.3 | MIT | megahertz/electron-log |
| electron-updater | 6.8.3 | MIT | electron-userland/electron-builder |
| three | 0.184.0 | MIT | mrdoob/three.js |
| argparse | 2.0.1 | Python-2.0 | nodeca/argparse |
| builder-util-runtime | 9.5.1 | MIT | electron-userland/electron-builder |
| debug | 4.4.3 | MIT | debug-js/debug |
| fs-extra | 10.1.0 | MIT | jprichardson/node-fs-extra |
| graceful-fs | 4.2.11 | ISC | isaacs/node-graceful-fs |
| js-yaml | 4.1.1 | MIT | nodeca/js-yaml |
| lodash.escaperegexp | 4.1.2 | MIT | lodash/lodash |
| lodash.isequal | 4.5.0 | MIT | lodash/lodash |
| semver | 7.7.4 | ISC | npm/node-semver |
| tiny-typed-emitter | 2.1.0 | MIT | binier/tiny-typed-emitter |
| sax | 1.6.0 | BlueOak-1.0.0 | isaacs/sax-js |
A complete machine-readable license file (THIRD_PARTY_LICENSES.txt) is included in the IKANDY installation directory.
Primary beta tester. Responsible for surfacing mirror mode issues, 5.1/7.1 audio edge cases, and numerous UX regressions before they reached release.
NATIVE OUTPUT
Spout2 / SpoutDX
Spout is a Windows GPU texture sharing framework used by OBS, TouchDesigner, Resolume, MadMapper, and vMix. IKANDY uses SpoutDX to publish its primary window as a real-time Spout sender. The Spout2 SDK is vendored and statically linked — no runtime DLL required.
BUILD TOOLING
cmake-js
cmake-js builds IKANDY’s native C++ addons (audio loopback capture and Spout output) against the correct Electron ABI using CMake and node-addon-api.
IKANDY uses the following typefaces, served via Google Fonts under the SIL Open Font License: