You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The preset list is names only; with hundreds of presets, finding one by its look is impossible.
Render each preset once, small, after enough frames to fill its feedback buffer, with the demo signal so a thumbnail is the same every time; cache it in userData.
A grid view in the panel; a thumbnail is redone when its preset changes.
Layout. The MilkDrop panel's list has a Layout choice: List or Grid. In the grid, every preset shows a thumbnail. Each is drawn once in a hidden window, kept in userData/milkdrop-thumbs/, and drawn again when the preset or a texture it uses changes.
Recipe. Measured on a seeded 200-preset sample of the corpus.
Black start, 60 frames of the demo sound, drawn at 640x360 and scaled to a 256x144 WebP.
A seed image was not used. It fixed only 2 of 200 black thumbnails, took 45% longer, and painted its colours into other presets.
Deterministic.
Each thumbnail uses a new engine instance, with seeds taken from a content key.
Requested textures are waited for.
Nothing is written unless every frame was drawn on a live context.
Busy presets, a textured one and a sampler_randNN one gave the same bytes after different predecessors, and under load.
Panel.
Only the cells in view are drawn, newest request first.
Waiting and failed cells look different from a thumbnail that is really black.
A visualizer window drawing MilkDrop at the same time had no frame over 27 ms.
Found on the way:
New render targets could start with another MilkDrop window's picture when the CPU was busy (13 of 24 draws). They are now allocated from zeros (0 of 48).
Activity
Merge pull request #608 from CaYatur/milkdrop/thumbnails-575
CaYatur commentedon Sep 22, 2026
Done on
mainvia #608 (c1049ab, 55b0a41, 75e68ec, ab37843).userData/milkdrop-thumbs/, and drawn again when the preset or a texture it uses changes.sampler_randNNone gave the same bytes after different predecessors, and under load.Found on the way:
Not done:
This stays open until the v3.1.5 release.
CaYatur commentedon Oct 12, 2026
Shipped in v3.1.5: https://github.com/CaYatur/SoundVisualizer/releases/tag/v3.1.5