BeatDrop Music Visualizer is an improved standalone version of the original inactive repository fork based of the Original MilkDrop2 Plug-in for Winamp that aims to add better features and bug fixes/optimizations for versatility, usability and amazing. This is also considered as MilkDrop improvement.
Highlights:
- Based of the Original MilkDrop Plug-in.
- Perfectly adjusted beat detection for better audio reaction (also configurable)
- New waveforms and transitions
- 16 custom shapes and waves limit
- Shader Precaching or Caching for Instant Preset Loading
- Spout integration
- projectM-eval library integration
- Hard Cut Modes, Transparency Mode, Playback Controls, Startup Preset etc.
- And so much more!
Sorry, I have not tested running BeatDrop on a MacOS, but you can try running it with Parallels Desktop or similar virtualization tools, such as UTM (known as Universal Turing Machine)
Enjoy these new simple waveforms with most crazy and fascinating patterns! Made by community, made for you.
Now you have more possibilities to create/edit some custom waves or shapes with up to 16 slots! This will get much chaotic than before.
INTEGRATED WITH SPOUT FOR SHARING VISUALS EVERYWHERE!
Now you can send the BeatDrop's Visual Renderer via Spout to OBS (plug-in needed), Resolume, NestDrop, TouchDesigner, MadMapper, Unity (KlakSpout needed), HeavyM and so much more that support it. Simply press CTRL + Z and you're good to go!
List of available apps here: https://spout.zeal.co
Bring back the nostalgia from 2000s by fixing some old MilkDrop 1 presets behavior with Screen-Dependent Render Mode, making the visual way better. You are free to turn it off if you don't want it.
I've also manually patch fixed all the bugged presets to look very/almost identical to MilkDrop 1/2.0.
Getting in stress if the visual is freezing while the shaders are compiling? Don't worry. I've got you! BeatDrop now supports shader precaching/caching for instant loading presets. Now you can experience 0 seconds compile time when you loaded the same preset that contains shaders! ;)
Here is the comparison below!
Need any media players that needs a music visualizer on top? Of course! Just run BeatDrop, press F2, adjust or fit to any part of the window in your needs and you're good to relax! You can also start BeatDrop with this feature on by modifying the .ini setting file (beatdrop.ini).
After 20 years of the bug when using any Pixel Shader Version 4 presets that cause stutters/freezes on one of the shaders, We have researched to fix this bug & making it support for AMD/ATI cards. Now you don't worry about the shader bottleneck.

This is a BETA feature. Only a few presets can get errors about complicated shader code, e.g. martin - Gin Tonic on Ice, martin - enlighten me etc. If anyone wants to get it fully work, please open a PR and check the issue #38.
(not affiliated with Advanced Micro Devices, Inc. or ATI Technologies Inc.)
7 years ago, BeatDrop had it's issue that it resulted a loss of frequency response or a complete non-reaction when you set the sample rate above 44100Hz or 48000Hz. So, I've made support for higher sample rates (from 96000Hz to beyond) by downsampling it to the visual-preferred one, because MilkDrop is designed for 44100Hz sample rate.
To make BeatDrop more and more interactive, Me & MilkDrop2077/Serge Blanc have made support for controlling presets by just using a mouse! Preset authors can now use the mouse variables in a simple way. Just pass them to init, per-frame, per-vertex or shaders, use a mouse and look how it goes! For more information about this, you can read it from docs folder.
Now it can get the song information from any media players using SMTC, sending it to visualizer. You can also show/hide this on the bottom-left corner by pressing F8.
Note that it only works for Windows 10 or Windows 11. For Windows Vista, 7, 8 and 8.1 users, please run BeatDrop_OldOS.exe, which it doesn't use this feature and makes it better support for old Windows OS.
INTEGRATED WITH PROJECTM-EVAL FOR OPTIMIZATION
BeatDrop now features projectM Expression Evaluation Library, which replaces Nullsoft Expression Evaluation Library for portability, compile time + speed optimization and assembly-free.
To not break the listening sessions or DJ sessions, BeatDrop will no longer interrupts the audio reaction while the audio device is changed, sample rate is changed or the device disconnection happens. Also no need to restart. ;)
- First of all, Visual Studio 2022 is now required.
- DirectX SDK is even required.
- Workloads required before compiling:
- CMake is now obligatory to install! Look at the name from Desktop development with C++ category below and check this box. projectM-eval library is now integrated in.
- After that, please change from debug to release and build it.
BeatDrop now uses projectM-eval library, a drop-in replacement of Nullsoft Expression Evaluation Library, which it's assembly-free and it uses much faster instructions than i386 instructions that achieves preset compilation performance optimization. projectM-eval also performs a few compile-time optimizations like replacing larger constant expressions with a simple value.
Steps on how to compile BeatDrop with projectM-eval library:
First method: Using vcpkg
- Vcpkg options from the project configuration are enabled by default. If you want to disable them for building as local files, look at the second method.
- First update your baseline by clicking View -> Terminal, then type vcpkg x-update-baseline.
- Compile your code. Vcpkg automatically generates the projectM-eval library using CMake.
- It will receive an error about one of the libraries:
Invalid or corrupt file: cannot read at 0x536E
(projectM_ns-eel2.lib). - The generated files are in vcpkg_installed folder. Copy both libraries from vcpkg_installed\x86-windows-static\x86-windows-static\lib, then paste them to lib folder from the main source code folder.
- (Optional) Copy the ns-eel header from the same step from 5., but in include\projectm-eval\ns-eel2, then paste it to ns-eel-shim folder, still from the main source code folder.
- Now build/compile the code and you are ready to go. If you see that your output gives "1 up to date", just delete BeatDrop.exe from vis_milk2 -> Release folder. Compile it again.
- Check your generated .exe file in vis_milk2/Release/BeatDrop.exe, then copy it in your BeatDrop folder.
Second method: Using CMake (for latest version build)
Before this, Git is required for cloning repositories.
- Make sure you have disabled the vcpkg feature (if you want). First go to Project from toolbar, click properties, then go to Configuration Properties -> vcpkg, then turn the first two options off. It should look like this:

If you want to turn back on, do the same step, then change them to "Yes".
- Use VS2022's terminal (View from toolbar -> Terminal) or PowerShell. Clone the repository as a local package.
git clone https://github.com/projectM-visualizer/projectm-eval.git
cd projectm-eval
git fetch --all (if needed)
- Go to your main code folder -> projectm-eval -> CMakeLists.txt, look at BUILD_NS_EEL_SHIM option, then turn it on.
For example: option(BUILD_NS_EEL_SHIM "Build and install the ns-eel2 compatibility API shim." ON)
- Build and install the projectM-eval library using CMake.
mkdir your_build_folder
cd your_build_folder
cmake -A Win32 ..
cmake --build . --config "Release" --parallel
cmake --install . --prefix your-installation-folder-name-here.
- Now do the same steps as step 4 and 5, but look at your main code folder -> projectm-eval -> your build folder -> your CMake installation folder you provided, then there are include headers and library files installed in. If you want to copy only header or library files, then look at them inside.
- Now build/compile and it should be working. Again, look at the step 8 from the first method after you built/compiled.
If you have problems, ask me on Discord, Twitter or Instagram.
Please download and install DirectX End-User Runtime Web first.
Microsoft Visual C++ Redistributable is also required to run. You can get it from system requirements category.
BeatDrop now has a Spout integration! It's now supported to route the visual to any apps, such as NestDrop, Resolume Arena, OBS (as plug-in) and so much more.
Download Spout: https://spout.zeal.co
- Easily run BeatDrop!
- Open YouTube, Spotify, AIMP or any media players/audio sources and let them play! (Yes! It reacts to all the audio sources)
- Watch them react and enjoy! 👌🪩
Get started by pressing F1 to get a list of hotkeys and functionalities.
You can use BeatDrop for parties, karaoke, music videos, DJ mixes and so on, but you must credit this repo if you used this! I am not even angry anymore if you didn't credit this, but use #beatdrop, #beatdropmusicvisualizer or BeatDrop as tags, then I'll look at them.
If you want to have all the MilkDrop presets in your own, just download this MegaPack, then extract them to your BeatDrop folder (ex: to BeatDrop Resources folder).
BeatDrop is a stand-alone implementation of the amazing Milkdrop2 Winamp plug-in. It lets you experience the stunning visual 2D effects with your music player of choice. No additional configuration steps needed! Just start BeatDrop and play your music. Use BeatDrop with your favourite:
- Music player: foobar2000, VLC media player, Clementine, AIMP, ...
- Web-based player: SoundCloud, YouTube, Vimeo, ...
- Internet Radio station: SomaFM, DI.FM, RauteMusik.FM, ...
- For building without SMTC (old OS build): Windows Vista, Windows 7, Windows 8, Windows 8.1, Windows 10, Windows 11
- For building with SMTC (normal build): Windows 10, Windows 11
- Minimum 2GB of RAM required
- WASAPI - compatible sound card
- DirectX 9 or higher - compatible GPU
- DirectX End-User Runtimes (also included in the installer) contains the required 32-bit helper libraries d3dx9_43.dll and d3dx9_31.dll
- Microsoft Visual C++ 2015 Redistributable or Microsoft Visual C++ Redistributable All-in-One
Special thanks to:
- Ryan Geiss & Rovastar (John Baker) - Official Milkdrop2 Source Code
- oO-MrC-Oo - XBMC Plug-in
- Casey Langen (@clangen) - milkdrop2-musikcube
- Matthew van Eerde (@mvaneerde) - loopback-capture
- projectM Team (Kai Blaschke) - projectM-eval, contributor
- Lynn Jarvis (@leadedge) - BeatDrop for Spout, Spout, contributor
- Patrick Pomerleau @ Nest Immersion (@nestdome) - help, contributor, feature integrations to NestDrop
- IkeC - contributor, Milkwave Developer
- MilkDrop2077 - contributor
- Me, u/Decent-Tangerine4998 - Tester
- ...and all the preset authors and contributors!
This repository is licensed under the 3-Clause BSD License (LICENSE or https://opensource.org/licenses/BSD-3-Clause) with the exception of where otherwise noted.
Although the original Matthew van Eerde's loopback-capture project didn't explicitly state the license, the author has been kind enough to provide the license clarification
Hi. Just wondering is this open source? I'm looking for something like this for my school project.
@Sunny do with the source as you like.
All changes in this repository to the original Matthew's code are published either under the terms of BSD license or the license provided by original author.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, shall be licensed as above.