iArt.ai
AI 모션 그래픽 소프트웨어, 누구나 사용할 수 있는 After Effects 대안, 텍스트 프롬프트로 몇 분 안에 애니메이션·설명 영상 제작
브라우저에서 Winamp MilkDrop을 사용해 원본 .milk 프리셋을 재생하고, 음악 재생 중 방정식 실시간 편집·오디오 반응·공유
Winamp's MilkDrop, in your browser. Play the original .milk presets, live-edit the equations while music plays, react to any audio — a tab, your mic, a YouTube link — and share the exact view as a lin
미디어TypeScript · HTMLGitHub @zz-plant온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Browser-native MilkDrop-inspired WebGL music visualizer with curated presets, live editing, and demo audio
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Winamp's MilkDrop, in your browser.
Play and live-edit the original .milk presets, point them at any audio, and share what you see as a link.
Any WebGL2 browser. No account, no install. Every clip below opens that preset, playing.
Geiss — Casino
Eo.S. — Glowsticks v2
Martin — Neon Space PS3
Krash & Rovastar — Cerebral Demons
Zylot — Crosshair Dimension
Eo.S. — Starburst 05 Phasing
Aderrasi — Potion of Spirits
Orb — Radiation
Recorded from the WebGL2 build with scripts/generate-readme-clips.ts . GIF encoding reduces the colors; the live renderer is smoother and higher-contrast.README 전문 보기 ↗Play and live-edit MilkDrop presets in your browser.
The original .milk files by Geiss, Rovastar, Flexi, Eo.S., Martin and ~130 more authors. Point them at any audio, change the equations while they play, and share what you see as a link.
Stims lives at toil.fyi. Any WebGL2 browser; no account, no install.
Play → edit → share. This preview is accelerated; watch the 25-second workflow at recorded speed. The capture is silent.
The clips are silent. Each one opens its preset live, and a click on the page turns the sound on.
.milk files: there is no conversion step, and export gives you .milk back.zoom, warp, rot and decay are sliders. When an equation drives one, the slider and the code that sets it name the audio that reaches it (eq · bass, zoom=… ← bass), read from the equations.Why "Stims"? It's built for stimmers as much as for MilkDrop fans: the sensory controls let you decide how much happens on screen and when it stops. MilkDrop presets can flash. Presets measured as frequent flashers carry a warning, and Settings → Reduce flashing hides them; most presets haven't been measured yet.
Butterchurn and projectM are the renderers most people embed or run today. Stims is a whole app, on a renderer of its own.
| Stims | Butterchurn | projectM | |
|---|---|---|---|
| What it is | A browser app you open | A JS renderer you embed | A native library and player |
| Presets | .milk files, as-is | Converted to JSON first | .milk files |
| Editing | Live editor with diagnostics and sliders | None built in | None built in |
| Flashing safety | Flash audit against WCAG 2.3.1, live governor, brightness ceiling and motion dampener | None built in | None built in |
| Finding presets | Search, collections, previews, favorites, history, links | Up to the host app | Playlist files |
How close to MilkDrop is it? A CI test compiles all 1,750 presets in the bundled Butterchurn pack — a different population from the 1,787-preset catalog above — for both WebGL2 and WebGPU. None is unsupported on either, and 1,578 run with no approximation on both; the other 172 approximate a shader on WebGPU or use a name the expression VM doesn't know (the test). Matching projectM pixel for pixel is a stricter check, made one preset at a time against native projectM captures, and it covers only a few presets so far (results, method). If a preset looks wrong, report it; that is the most useful help there is.
The full comparison says which one to pick for what.
Playing MilkDrop presets in a browser isn't new: Butterchurn did it first. Neither is the live editor, which brings back what MilkDrop 2 had built in. These three are:
bun run lab:dataflow reads which audio reaches each control and each drawn program from the equations alone, and the editor shows the same reading beside each slider. In 73 of 2,679 presets, the audio reaches nothing on screen. Used as training data, the corpus shows presets behave as threshold programs: gradient-boosted trees beat every network tried, and 41% of memoryless audio-driven controls come back as exact equations from their behaviour (findings).| Part | What it does | Code |
|---|---|---|
| Compiler and VM | Parses preset equations (EEL2) into an IR and runs them on an interpreter or a JIT, lowering per-pixel equations into the shader on WebGPU; translates preset shaders to GLSL and WGSL | packages/milkdrop-toolchain/src/compiler/, src/js/milkdrop/vm.ts |
| Renderer | WebGL2 is the baseline; an optional WebGPU path falls back to it when a preset needs something WebGPU can't run yet | src/js/milkdrop/ |
| Audio | FFT, bands and transients computed in an AudioWorklet, packed into a GPU texture | src/js/core/audio-handler.ts, packages/audio-reactive/src/ |
| App | The React workspace: browsing, the editor, and the URL as session state | src/js/frontend/ |
| Edge (optional) | Cloudflare Worker routes for model-backed preset generation, blending and visual search; playback and editing don't need them | functions/ |
Technical foundations has the system diagram and what each part has proven so far, the architecture overview follows one frame through the code, and the docs index has the rest.
You need Bun 1.4.4+ and a browser with WebGL2. WebGPU is optional.
git clone https://github.com/zz-plant/stims.git
cd stims
bun install
bun run dev
Then open http://localhost:5173. The git history is large: git clone --filter=blob:none https://github.com/zz-plant/stims.git skips its old binaries and clones much faster. To change code, follow the contributor setup, which adds the quality gate and the browser the browser-backed tests need.
The compiler is a plain module, so scripts and CI can check .milk files the same way the live editor does:
// compile.ts — print the errors the editor would show
import { readFileSync } from 'node:fs';
import { compileMilkdropPresetSource } from './packages/milkdrop-toolchain/src/compiler.ts';
const { diagnostics } = compileMilkdropPresetSource(
readFileSync(process.argv[2] ?? '', 'utf8'),
);
for (const d of diagnostics.filter((d) => d.severity === 'error')) {
console.log(`${d.line ?? '?'}: ${d.message}`);
}
bun compile.ts public/milkdrop-presets/eos-glowsticks-v2-03-music.milk
To learn the equation language, start with the authoring curriculum; bun run lab:dataflow -- --preset <id> reports which audio signals reach each control of any catalog preset.
Four parts of Stims are standalone packages under packages/: the app imports them, they have no dependency on the app, and each has a read-only mirror repository, a demo site and an npm-ready build. eel-conformance, flash-guard and milkdrop-toolchain are on npm at 0.1.0, with 0.1.1 merged and not yet published; audio-reactive is not published and stays a workspace package. Publishing has the release state and steps.
The corpus also does stewardship work outside this repository: butterchurn and eel-wasm both have open PRs that adopt eel-conformance as their engine's test suite (butterchurn#108, eel-wasm#66), and the ns-eel2 source audit pins what MilkDrop 2's expression language actually does, cited from the C source MilkDrop ships.
| Package | What it is |
|---|---|
milkdrop-toolchain | The parser, EEL2 interpreter and JIT, IR, HLSL analysis with GLSL emission, EEL-to-WGSL lowering, formatter and MilkDrop 2 exporter above, as an npm package. |
eel-conformance | An executable specification of the preset expression language: 82 portable JSON cases any MilkDrop implementation can run. |
flash-guard | The WCAG 2.3.1 flash analysis behind the catalog's flash warnings, and the live governor behind Reduce flashing. |
audio-reactive | The AudioWorklet FFT, harmonic/percussive separation, beat tracking and reactivity metrics behind the audio path. |
bun run check:quick # lint, types and repo guards; no tests (under a minute)
bun run check # full checks, package suites, unit + compatibility + corpus
bun run test # default: unit + compatibility
bun run check:all # full checks and all profiles, including browser e2e
bun run build # production bundle
The most useful things, roughly in order of effort:
What changed recently is in the changelog.
For audio, editing, and sharing, start with the user guide; the docs index links current references and historical evidence.
For recording or streaming, start with the OBS setup recipe. It covers a Browser Source demo, regular-browser capture, and separate audio routing; native OBS verification is still pending.
Stims depends on work by:
jberg) and the Butterchurn contributors, who first ran MilkDrop presets in WebGL and whose preset parsing Stims learned from.Stims is an independent implementation. MilkDrop, Butterchurn, and projectM are credited as creative and technical lineage; no official affiliation is implied. See Lineage and Credits.
Licensed under the Unlicense — public domain.