Skip to content

3.1.7 — Half the memory, no garbage collection freezes, low-power mode, a preset per MilkDrop layer

Latest

Choose a tag to compare

@CaYatur CaYatur released this 03 Nov 01:18
· 9 commits to main since this release
1865e6d

⬇️ Download

Get this one Or You should know
🪟 Windows ⬇️ Installer Portable
no install
Only the installer registers the Dynamic Lighting background identity. Per-application audio capture needs Windows build 20348 or newer.
🍎 macOS ⬇️ .dmg .zip Apple Silicon, macOS 13 Ventura or later. Unsigned — one Terminal command is needed, see below.
🐧 Linux ⬇️ AppImage .deb
Debian / Ubuntu
x64. Needs PulseAudio or PipeWire, which desktop installations already have.
🎨 MilkDrop presets ⬇️ .zip — The 56 CaYaDev presets as .milk files, with a picture of each. CC BY 4.0. The app already includes them; this is for other MilkDrop players.

Important

🍎 macOS: the app will say it is damaged. It is not.

This build is not signed — the Apple Developer Program has not been bought. macOS puts a quarantine flag on anything unsigned that arrives from the internet and refuses to open it, reporting it as "damaged and can't be opened." Right-clicking and choosing Open does not clear this on macOS 15 and later.

Open the .dmg, drag the app into Applications, then run this once in Terminal:

xattr -dr com.apple.quarantine "/Applications/CAYADEV Visualizer.app"

After that it opens normally, every time. The command removes the download flag; it does not change the application.

Then, for sound: macOS has no way to record its own output, so install BlackHole (free) and pick it as the audio source. Microphones and line inputs work with no extra setup — macOS will ask for microphone permission the first time.


Five days after v3.1.6. This release is about speed and fixes: half the memory, no more freezes from garbage collection, shaders that compile without stopping the picture, a low-power mode, and a preset per MilkDrop layer. Exports at 60 fps are unchanged: six test scenes of 180 frames each came out identical to v3.1.6, frame by frame. The intended difference is at other frame rates, where bar peak caps now fall at the right speed.

Faster

Measured with npm run perf on one machine, with the same real settings and a library of 10,392 presets, two alternating runs of each version:

v3.1.6 v3.1.7
Total memory 2,731 and 2,838 MB 1,370 and 1,388 MB
Total CPU (% of one core) 174 and 158 131 and 131
Frame gaps over 100 ms in 60 s 5 and 6 0 and 0
Longest frame 227 and 253 ms 27 and 27 ms
Opening a visualizer window 783 and 513 ms 364 and 372 ms
Opening the panel 2.0 and 1.6 s 1.8 and 1.6 s

The gain depends on the setup. Memory and freezes improve most with a large preset library.

  • A large preset library no longer weighs on every window. Every window held the text of every MilkDrop preset, and garbage collection froze the picture for 216-239 ms about every 11.5 seconds going through it. Windows now ask for a preset's text when they need it.
  • Compiling a shader no longer stops the picture. Studio shaders, effects and the gradient background compile in the background. With an empty shader cache, the longest frame on the heaviest Studio preset in a real library went from 542 to 32 ms, and for the gradient background from 219 to 41 ms. A shader or effect now appears a moment after you select it, instead of everything stopping for that moment.
  • The panel preview draws less while an output is open: 20 times a second instead of 45. You can keep it smooth under Output › Power / Performance › Panel Preview.
  • Output windows skip audio analysis nobody reads.

New

  • Low-power mode for laptops on battery and long unattended runs, under Output › Power / Performance › Low-Power Mode: always, or only on battery. It limits the frame rate to 30, turns effects off, and lowers MilkDrop and background resolution. On a real scene with an effect, total CPU went from about 146 to 94. Exports, the OBS source and your settings do not change. It is off by default.
  • Each MilkDrop layer can show its own preset. Turn on Own Preset on a layer card, and what you choose in the preset list goes to that layer. All output windows show the same thing.
  • GPU export on Linux (#904). The bundled FFmpeg has no Intel or VA-API encoders, so GPU encoders are now also tried with your system ffmpeg, and it is used when its test encode passes. Quick Sync also tries -low_power 1, which Tiger Lake needs, and h264_vaapi and hevc_vaapi are new. See the limits below.
  • More options for bars: LED segments, corner roundness, a vertical gradient, grow direction, and peak hold, fall speed and colour.
  • Colour mode for Studio visualizers: colour theme, fixed colours or rainbow.
  • Presets: Arcade Invaders plays a real game and reacts to the music, there is a new Arcade Invaders Score, and nine CaYaDev presets are back to their MilkDrop 3 originals.

Fixes

  • Export no longer fails on a machine without WebGL2. It stopped with a colour converter error. The conversion now falls back to FFmpeg, which is slower but gives the same result.
  • Choosing a preset no longer changes another layer. With a bars layer above a MilkDrop layer, the bars turned into MilkDrop too.
  • The MilkDrop layer card shows only what works. Color Mode and Glow are gone from it, since the engine reads only Sensitivity there.
  • The panel no longer jumps to the active MilkDrop preset after every change on the Scene page.
  • 3D geometry and feedback layers can be set up again with the layer stack on.
  • Bars as a layer have every setting of the Visualizer card, and two layers of the same bar count no longer share one meter.
  • Peak caps fall at the same speed at any refresh rate. They fell about 5.8 times faster at 144 Hz than at 60 Hz.
  • New layers start at factory settings and show their real defaults.

Known limits

  • On Windows, installing an update from inside the app fails unless the app runs as administrator. The installer needs administrator rights and the app cannot show that prompt, so Install and Restart stops with an error. This affects v3.1.7 and earlier. Download the new version from the releases page instead. The fix is in the next version.
  • Quick Sync and VA-API on Linux have not run on a real GPU here. There is no such hardware on this machine, and WSL has no /dev/dri. The app's path was run in WSL with real FFmpeg 6.1, through a wrapper that records the arguments. The real AppImage and .deb from this release also ran there and exported through the system ffmpeg with NVENC. An encoder is only offered if its test encode passes, so a wrong argument costs you the GPU option, not a broken video. Reports are welcome in #904.
  • A layer with its own preset stays out of automatic changes. Making those work per layer across windows needs the new engine in v4.
  • With automatic changes on, shared layers in the first window each make their own pick, while other windows follow one pick for all of them. This is not new, and it goes to v4 as well.
  • The main process still holds all preset text. Windows no longer pay for it.
  • Mapping, 3D geometry and the Studio editor's own compile still wait for the compile.
  • macOS and Linux builds pass CI, but these numbers were measured on Windows. The macOS build has never run on real hardware.
  • Older versions ignore the new settings. Settings saved by v3.1.7 open in v3.1.6 without errors, which was tested both ways.

What comes next

v4.0.0 rebuilds the core and the interface. The reasons, the decisions and the stages are in the roadmap.

Privacy and security

  • Unchanged from 3.1.6: the only network call the app makes on its own is the update check, one HTTPS request to api.github.com for the latest release, with no identifiers. Set updates to Off to stop it.
  • Vulnerabilities can be reported privately from the repository's Security tab.

3,784 of 3,785 unit tests (one skipped), a GPU self-test, a live-versus-export pixel comparison, and the packaged build's own self-test pass.

Every change, grouped by area: CHANGELOG.md · Measurements and reasoning: ROADMAP.md