Skip to content

OfficialIncubo/BeatDrop-Music-Visualizer

 
 

Repository files navigation

Discord Shield Chat with us on Discord!

Twitter @BeatDropVis

BeatDrop Logo (logo design by Incubo_)

BeatDrop Music Visualizer

BeatDrop Music Visualizer is a continued development of the original inactive repository fork, a standalone music visualization 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 an improvement of it.

Highlights:

  • Based of the Original MilkDrop2 Plug-in, compatible with all the MilkDrop presets (.milk).
  • Perfectly adjusted beat detection for better audio reaction (also configurable)
  • New waveforms and transitions
  • 16 custom shapes and waves limit
  • Drag, Drop & Load MilkDrop preset
  • Shader Precaching or Caching for Instant Preset Loading
  • Fully supported Pixel Shader 4 (Shader Model 3) presets for AMD/ATI processor/graphic cards
  • Spout integration
  • projectM-eval library integration
  • Toggleable Speaker and Microphone Audio Source Modes
  • Our modified loopback-capture code, called BeatDrop-loopback, with above 92kHz sample rate (Hi-Res) support, intelligent default audio change and anti-stutter
  • Interact presets with Mouse and Keyboard (CTRL + Arrow Keys)
  • Extended preset, texture, transition and noise generation randomization limit using Mersenne Twister Pseudo-Random Number Generator
  • Hard Cut Modes, Transparency Mode, Playback Controls, Startup Preset etc.
  • And so much more!

FOR MACOS USERS

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)

FEATURES

+9 ADDITIONAL SIMPLE WAVEFORMS!

Enjoy these new simple waveforms with most crazy and fascinating patterns! Made by community, made for you.

BeatDropNewWaveformsDemo


UP TO 16 CUSTOM WAVES AND SHAPES!

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.

BeatDrop16ShapesMilkDrop2077Demo


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 it supports. Simply press CTRL + Z and you're good to go!

List of available apps here: https://spout.zeal.co

BeatDropSpoutDemo BeatDropSpoutResolumeArenaDemo


SCREEN-DEPENDENT RENDER MODE & PRESET PATCH FIXES

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.

I've also manually patch fixed all the bugged presets to look very/almost identical to MilkDrop 1/2.0.

BeatDropScreenDependentRenderModeDemo


SHADER PRECACHING/CACHING

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 load the same preset that contains shaders! ;)

Here is the comparison below!

BeatDropShaderCacheComparison


BORDERLESS MODE

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).

BeatDropBorderlessModeDemo BeatDropBorderlessModeOnSpotifyDemo


PIXEL SHADER VERSION 4 PRESETS SUPPORT FOR AMD/ATI PROCESSOR/GRAPHIC CARD

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.

BeatDropAMDATISupportV2

(not affiliated with Advanced Micro Devices, Inc. or ATI Technologies Inc.)


HI-RES AUDIO SUPPORT (96kHz, 192kHz and beyond)

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.

hi-res-audio-sound-waves


CONTROL PRESETS BY USING A MOUSE

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.

BeatDropMouseSupportDemo


REAL-TIME SONG INFORMATION

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.

BeatDropRealTimeSongInfoDemo

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.


NO AUDIO CUTOFF WHILE AUDIO OUTPUT DEVICE CHANGE, SAMPLE RATE CHANGE OR DISCONNECTION

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. ;)

BEFORE COMPILING THE CODE

DesktopDevOptionalSettings GameDevOptionalSettings NETDesktopDevOptionalSettings

  • 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.

CMake optional library checked

  • After that, please change from debug to release and build it.

HOW TO COMPILE THE CODE AND UPDATE/INTEGRATE PROJECTM-EVAL LIBRARY CORRECTLY

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

  1. 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.
  2. First update your baseline by clicking View -> Terminal, then type vcpkg x-update-baseline.
  3. Compile your code. Vcpkg automatically generates the projectM-eval library using CMake.
  4. It will receive an error about one of the libraries: Invalid or corrupt file: cannot read at 0x536E (projectM_ns-eel2.lib).
  5. 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.
  6. (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.
  7. 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.
  8. 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.

  1. 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:
image

If you want to turn back on, do the same step, then change them to "Yes".

  1. Use Visual Studio'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)
  1. 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)

  1. 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.
  1. 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.
  2. 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.

BEFORE YOU RUN BEATDROP

Please download and install DirectX End-User Runtime Web first.

Microsoft Visual C++ 2015-2022 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

HOW TO USE BEATDROP

  1. Easily run BeatDrop!
  2. Open YouTube, Spotify, AIMP or any media players/audio sources and let them play! (Yes! It reacts to all the audio sources)
  3. Watch them react and enjoy! 👌🪩

Get started by pressing F1 to get a list of hotkeys and functionalities.

USAGE

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.

MILKDROP MEGAPACK - GET ALL THE MILKDROP PRESETS

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).

FEATURED WEBSITES

Softpedia

AlternativeTo

VJ Union

TopDownload.Club

The Audio File

Spout Open-Source Projects

Opensource-DVD

Never Complete Only Abandoned

FOLLOW ME ON ANY SOCIAL NETWORKS

X Discord (Join server)


ORIGINAL REPOSITORY DESCRIPTION

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:

System Requirements

Acknowledgements

Special thanks to:

License

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

Sunny March 29, 2015 at 11:06 pm

Hi. Just wondering is this open source? I'm looking for something like this for my school project.

Maurits [MSFT] March 30, 2015 at 8:35 am

@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.

Contributions

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, shall be licensed as above.