The WebGL port of the legendary MilkDrop music visualizer. Butterchurn powers all of IKANDY's MilkDrop preset renders — hundreds of them — 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. The MIT notice applies to this repository; it does not automatically clear unrelated MilkDrop archives or every individual preset for commercial redistribution.
MilkDrop was created by Ryan Geiss in 2001. Historic community presets identify authors such as Flexi, Martin, Geiss, Aderrasi, Rovastar, Unchained, Eo.S., shifter, and Zylot in their metadata. Author attribution is preserved where it is available.
Some historic community archives do not provide a standardized license for every individual preset. Public availability and attribution alone are not treated as permission to redistribute. A documented license or permission is required before a community preset is included in a retail IKANDY release.
The source archives reviewed for this release include collections whose image notices contain restrictions on redistribution with commercial or paid products. Any preset or texture without documented commercial clearance will be excluded from the retail build unless its rights are separately confirmed.
If you are a preset author and would like your attribution corrected or wish to discuss use of your work, 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.
The listed image FX shaders were written for IKANDY using common graphics techniques. If you believe a credit or source attribution is missing, contact support@ikandy.app.
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. Spotify authorization data is stored locally using operating-system-protected storage; L&R Entertainment LLC's servers do not receive it. Use is subject to Spotify's Developer Terms of Service.
IKANDY connects to MusicBee through the user-installed MBXHub plugin for now-playing metadata, artwork, playback control, playlists, and search. MBXHub is not bundled or redistributed with IKANDY and remains subject to its developer's license and release-candidate terms.
IKANDY uses Supabase for optional telemetry, deletion requests, and historical beta administration. 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.
SHADER ARTISTS
Imported & featured shader artists
Shaders brought into IKANDY stay credited to the people who made them. Artists whose work ships with or is featured in IKANDY are listed here, each with a link back to where you can find them. If your work appears in IKANDY and you’re not listed — or you want your link changed — reach out below.
TEXTURES
Moon texture
The moon in IKANDY's erosion sky uses a Solar System Scope texture (modified: downscaled and resampled).
IKANDY and the ikandy.app website use the following typefaces under the SIL Open Font License. The website self-hosts all font files — no visitor data is sent to a font CDN:
Webamp
The arcade's IKAMP music player is built on Webamp, a browser re-implementation of a classic skinnable audio player. IKANDY ships the pinned library locally with its own original skin. The full MIT notice is retained alongside the bundle.
skifree.js
The arcade's Powder ski game is a patched port of skifree.js. The bundle includes Hammer.JS (© 2011–2017 Jorik Tangelder, MIT license) and Mousetrap (Craig Campbell, Apache License 2.0). The full skifree.js, Hammer.js, and Mousetrap license texts ship alongside the game.
IKAMP Synthwave Playlist
“Synth Type” by G_P; “Space Adventure” by MintoDog; “Space City” by MintoDog; “DJ Synth Wave / Funk” by Pro Sensory / Alex McCulloch; and “Calm Ambient 2 (Synthwave 15k)” by The Cynic Project. Each source is published under CC0; these credits are included with appreciation. The verification record includes verified source and shipped-file SHA-256 hashes.