This article relies too much on references to primary sources. (March 2009) (Learn how and when to remove this template message)
|Initial release||5 November 2001|
MilkDrop is a hardware-accelerated music visualization plugin for Winamp, which was originally developed by Ryan Geiss in 2001. It uses DirectX and intelligent beat detection to render iterated images which blend seamlessly. MilkDrop uses a complex system of interpolation to transition between presets gradually through time, creating a constantly changing visual experience.
Presets are saved in .milk file format, typically in a subfolder of the MilkDrop plugin directory. Creating new presets is generally referred to as authoring, or writing, making the person that wrote a preset its author. Presets are distributed on the Internet through Winamp, the Winamp forums, and through the personal webpages of MilkDrop preset authors. A preset's title also doubles as its .milk save name, and usually includes the preset author or authors' pseudonym. MilkDrop presets often have more than one author, which is generally referred to as remixing or editing. A remix or an edit will often include these terms in the preset's title.
Code in the per_frame section is executed once for each frame, modifying variables which affect different parameters that can be passed to other areas of code. Trigonometric functions which modify MilkDrop's internal looping time variable, systems of logic, and interaction with the audio information received from Winamp or other applicable media player's Fast Fourier transform (FFT) can be used to govern how these parameters evolve through time.
Code in the per_pixel section of MilkDrop is not actually re-evaluated at every pixel as the name would suggest, rather the screen is divided into a grid and the code is evaluated at each grid point. The pixels in-between these points interpolate their values from the surrounding four points on the grid. The size of the grid is 32×24 by default, but can be set higher or lower by the user. Per_Pixel equations allow the preset author to alter some of MilkDrop's parameters differently in certain areas of the screen based upon x and y values, distance from the center of the screen, and the angle.
Custom shapes and custom waves each have variables which allow the author to change the shape, size, color, and location on screen, among other things. Shapes and custom waves each have internal per_frame code that affects these variables similarly to how per_frame equations affect the entire preset. Custom shapes and waves equations are included in MilkDrop version 1.04 and later. While initially MilkDrop allowed four custom shapes and waves, the latest version of the MilkDrop beta allows up to five custom shapes and five custom waves to be utilized per preset.
Milkdrop is the successor of an earlier music visualization software by Ryan Geiss, the geiss plugin for Winamp, released around 1998. The geiss plugin did the real-time music visualization purely software rendered by utilizing the CPU effectively by highly optimized, hand-tuned assembly code.
Originally closed source, version 1.04 Milkdrop's source code was released under the BSD license in May 2005. Geoff "Redi Jedi" Potter has taken up developing the program since 2005 and has released six beta versions.
projectM is an implementation of MilkDrop using OpenGL in C++, and is released under the GNU LGPL. It is available as a plugin for Audacious, XMMS, Winamp, iTunes, Jack, PulseAudio, foobar2000, VLC media player and XBMC. The VLC versions 2.2.0 and higher no longer support the projectM plugin. It comes natively with Clementine, and Qmmp that also available in the Play Store on Android.
MilkDrop 2.0 was released in 2007, introducing Per Pixel Shader support. It is available with Winamp 5.5 or from projectM in their 2.0.1 version for use it with other players like the VLC media player. MilkDrop 2 added DirectX 9.0 support and added the ability to use pixel shaders in its presets.
The source code for MilkDrop 2.25c has been released on 15 May 2013.
In 2011, Milkdrop was retrospectively described as "the greatest single work of art produced during the naughties".
According to the Winamp main download page, the milkdrop plugin and its predecessor Geiss are the most downloaded plugins overall, with 2,737,890 and 4,686,010 downloads (on 10 August 2014), respectively.
GEISS is entirely copyright (c) 1998-2000 by Ryan M. Geiss [...] Geiss uses hand-tuned x86 assembly language to reach blazing speeds, generating smooth and graceful realtime graphics... and it can hear whatever your computer hears and synchronize the graphics it generates to the sound you're hearing.
Also, a 3d-accelerated video card will make NO difference.. What you see in Geiss right now is not hardware accelerated (nor can it be).
To my mind, the greatest single work of art produced during the naughties - at least the greatest of which I'm so far aware - may be Ryan Geiss's open-source music visualization plugin project, Milkdrop.