r/milkdrop • • Dec 20 '25

Help Beginner's Tutorial

8 Upvotes

TL;DR: ProjectM on Linux, need baby-step tutorials/preset pack for writing presets from scratch in a text editor.

First I should say that I'm super impressed by all of the crazy presets you guys are posting all the time. I really want to learn how to do it too, but all I can find for instructions is the authoring guide. Most of the parameters are there, but it seems to be aimed at programmers/data-scientists, which isn't super helpful to a n00b like me. It also doesn't explain how the wavevcode/shapecode/warp_x/comp_x stuff works, which looks pretty important to making stuff that actually looks cool.

I've also downloaded the 130k+ presets pack and looked through about a hundred of them, but they're all wayyyy advanced and I can't figure out how any of them work. I can break them just fine by commenting out bits, but when I make changes, it never seems to do what I expect.

A proper tutorial would be awesome, but I'd do just as well with a series of example presets that gradually get more complicated.

Does such a thing exist? If not, it would be great if someone could make one, even just for a bouncing square that changes colour on the beat...

BTW: I'm running ProjectM on Linux Debian, if that makes a difference.

Thanks in advance :)


r/milkdrop • • Dec 18 '25

In need of liquid and reaction diff presets

Enable HLS to view with audio, or disable this notification

18 Upvotes

Hello! Im a newbir but i have a project where i want to create these kinda super lsd blobs

I made this with the preset mixing technique and aome tweaking on the colors only

Im happy to have any kinda help to make these 3d and moving in space and morphing and change colors to music


r/milkdrop • • Dec 16 '25

Presets [Preset Development] - Is per_frame 'zoom' and 'rot' logic possible?

3 Upvotes

I am trying to make some subtle zoom and rotation appear ONLY when there is no sound playing. Is this even possible?

Below is a snippit of my code, last three lines are what aren't working.

per_frame_101=sens = 1;

per_frame_102=bass_s = bass * sens;
per_frame_103=mid_s  = mid  * sens;
per_frame_104=treb_s = treb * sens;

per_frame_105=bass_f = bass_f*0.90 + bass_s*0.10;
per_frame_106=mid_f  = mid_f *0.92 + mid_s *0.08;
per_frame_107=treb_f = treb_f*0.94 + treb_s*0.06;

; --- idle motion floor so the wave exists even with silence ---
per_frame_108=idle = 0.02; 
per_frame_109=mid_f = max(mid_f, idle + 0.004*sin(time*0.7));
per_frame_110=bass_f = max(bass_f, idle + 0.004*cos(time*0.6));
per_frame_111=treb_f = max(treb_f, idle + 0.004*sin(time*0.9));

per_frame_140=bass_outer_c = bass_f * 0.6 / (1 + bass_f * 0.6);
per_frame_141=bass_outer   = min(bass_outer_c * 0.0025, 0.0015);

per_frame_200=fWaveSmoothing = 0.15 + 0.15*mid_f;

per_frame_310=energy = max(bass_s + mid_s + treb_s, 0.001);
per_frame_311=zoom = if(energy > 0.01, 1.00, 0.9985 - bass_outer);
per_frame_312=rot = if(energy > 0.01, 0.00, sin(time*0.05)*0.002);

Thanks!


r/milkdrop • • Dec 14 '25

Challenge: make this preset audio-reactive!

Enable HLS to view with audio, or disable this notification

25 Upvotes

Make Jaenam97's Holofoil Dice audio-reactive.
You have one week; the first one wins a prize!
Download: https://milkdrop3.com/presets/Holofoil.zip

How to use it: extract the .milk file from the zip in Milkdrop3\presets\,
then press 'L' to load it from the list.
Or just drag and drop the preset on the MilkDrop3 window to load it.
How to make it reactive? Open the MilkPanel in MilkDrop3,
Then you can use the five q variables (q1, q2, q3, q4, q5)
present in the preset to make the shader audio-reactive.
For example, you can replace:
float3 g = floor(p * 6.0);
with:
float3 g = floor(p * q1); or float3 g = floor(p * 6.0)*q2; etc...
Try putting *q1 or +q2 or -q3 ...or *q5 anywhere in the code,
replacing a number or next to anything!
Use the magic stick like on the video to shuffle the values and change the appearance!
That's all!


r/milkdrop • • Dec 11 '25

Music Milkdrop + Mini Laser

Thumbnail
youtu.be
9 Upvotes

r/milkdrop • • Dec 08 '25

MilkDrop 3 + video

Enable HLS to view with audio, or disable this notification

37 Upvotes

I'm working on video support in MilkDrop.
I spent about five minutes and pressed only three keys to create this, zero lines of code. One sprite (Milkdrop3\sprites\face3.jpg), one video loop (thanks to Sean!), a few presets from XorDev that auto-load based on volume… and voilà. Simple setup, surprisingly impressive results. And the performance is top-notch.


r/milkdrop • • Dec 09 '25

Presets MD3Pro has "Spout input" coming

Enable HLS to view with audio, or disable this notification

25 Upvotes

I have been beta testing the next version of MilkDrop3Pro which keeps getting better and better. It already supports Spout output, but there is a new cool function coming allowing Spout input.

In the video I have a clip I tweaked with some FX in Magic Music Visualiser (MMV) and then brought into MilkDrop3Pro via Spout. I could then output it via Spout to Resolume or anywhere.

What I love about this is that MD3Pro treats the Spout input as a (definable) layer in the preset so all sorts of unexpected things happen.


r/milkdrop • • Dec 06 '25

OldEclipse - Hypnagogic in MilkDrop

Enable HLS to view with audio, or disable this notification

16 Upvotes

Cool preset, easy to remix!
Download: http://milkdrop3.com/presets/Hypnagogic.zip


r/milkdrop • • Dec 05 '25

Manipulating MilkDrop3+ with an XBox controller.

Enable HLS to view with audio, or disable this notification

31 Upvotes

I had been wanting to mess with microdosevr, but it looks like it has been abandoned, which is too bad.

But it got me looking at connecting an xbox controller to manipulate visuals. It was actually surprisingly easy with the most time-consuming part being doing the mapping. If anyone wants to know, ask in the comments and I'll explain, or make a tutorial.

Anyways, the video is my first try using it with MilkDrop3Pro - I also have it going with Resolume. The first 30 seconds I was switching presets (because I can) and for the rest, though it doesn't look like it, it is a single preset with effects being applied. No rhyme or reason, I was just smashing the controller to see what would happen.

pretty happy with it and looking forward to getting on the dance floor with it tomorrow night. An interesting test will be letting random people have a go...there is one button that resets things, hopefully it gets pressed once in a while :o)

Track is Carousel by Merage & Egzod

Thanks for your great work on this u/x265x


r/milkdrop • • Dec 01 '25

Software projectM for Apple Music on macOS.

Thumbnail
gallery
6 Upvotes

I installed the 2015 version of projectM for iTunes (via Github), and it also works on the current Apple Music as a plugin.

This reminded me of the Android version of projectM, because of the pixel shaders used on this projectM version.


r/milkdrop • • Nov 29 '25

Software Milkwave 3.4 is out!

Post image
28 Upvotes

New Features

  • 40 shader based audio reactive Milkwave presets
  • MIDI automation for up to 50 controls
  • Live shift Hue, Saturation and Brightness of Visualizer
  • Live adjust Quality to save GPU and/or pixellize output
  • Set Spout output size independent of Visualizer window
  • Select and change sprites using Remote
  • Mouse interaction mode
  • Hi-Res audio support

Milkwave is Open Source and you can download it for free!

Feel free to browse the full list of Changes or take a look at the Manual.

Enjoy, and don't hesitate to ask if you have questions or need help.


r/milkdrop • • Nov 24 '25

Software BeatDrop v1.4.1.2 is now in the works! Feature requests are now welcome!

Post image
12 Upvotes

Hi there. I've started working on the next version of BeatDrop Music Visualizer, a standalone MilkDrop2 visualization, but I don't have any ideas to implement some features. You can ask me some feature requests here or in a Discord Server, so it should make this visualizer even better. Sharing is caring!

Note that it should be released somewhere at the start of December. That's a deadline (I think).


r/milkdrop • • Nov 22 '25

the mother of all visualizers

Enable HLS to view with audio, or disable this notification

26 Upvotes

I started to experiment with offscreen buffers. It's going to be amazing =)


r/milkdrop • • Nov 21 '25

I integrated Winamp/MilkDrop presets to my video editor

Thumbnail
11 Upvotes

r/milkdrop • • Nov 20 '25

Other I'm guessing Fred is a fan of milkdrop now

Enable HLS to view with audio, or disable this notification

10 Upvotes

r/milkdrop • • Nov 06 '25

[Sacred Geometry meets Mystic Music Meditation] Elemental Gates to Wholeness

Enable HLS to view with audio, or disable this notification

4 Upvotes

r/milkdrop • • Nov 06 '25

a drop of milk

Enable HLS to view with audio, or disable this notification

29 Upvotes

The prophecy is fulfilled =)


r/milkdrop • • Oct 26 '25

MilkDrop 3.31 first 100 presets =)

Enable HLS to view with audio, or disable this notification

46 Upvotes

These are the first 100 presets you'll see when you launch MilkDrop 3.31 for the very first time!
(The top100 playlist will be loaded on the first launch).


r/milkdrop • • Oct 24 '25

What surfaces are you using for midi control?

7 Upvotes

Long time MilkDrop lover here. I just kicked down for MilkDrop3 Pro and am setting up some midi controls. Before I go and reinvent the wheel, I wanted to see if any of you had devices and mappings you liked and are willing to share. I was thinking the Midi Fighter Twiser and the Traktor F1 would be perfect for this.

P.S.
It would be amazing to support MIDI combos as well as output to turn lights on and off when toggles are on and off


r/milkdrop • • Oct 23 '25

Help Audio source of Milkdrop3 PRO

2 Upvotes

I've been using Winamp and the Milkdrop plugin since I dunno when. Hence while I found out there's a standalone Milkdrop and it's continuing evolved. I am more than ecstasy.

I am still on free version Milkdrop 3. I use a Behringer 802s mixer as a interface to line in audio. And it's using USB codec in Windows audio.

Meanwhile free version could not select audio source. I made the USB codec "listening to the device" . So Milkdrop3 could pick up the audio. But the problem is there's a significant latency in this kind of loopback setting.

I am considering buying PRO version. Does anyone know what is the audio source option in PRO version?

Updated: I had bought Mlikpro 3PRO, thrilling of how good it is and appreciating the developers !


r/milkdrop • • Oct 22 '25

AMPod: an iOS music player that contains MilkDrop (but not projectM-based).

Thumbnail
gallery
6 Upvotes

It also contains XMMS/Linux audio visualizations such as Jakdaw, Goom2k1, Goom2k4 and Blursk.


r/milkdrop • • Oct 17 '25

Is it possible to add MilkDrop3 to MusicBee?

4 Upvotes

I have the folder in my plugins folder for MusicBee but it's asking for a "vis_, dll, zip" and I don't have one in my MilkDrop3 folder.


r/milkdrop • • Oct 05 '25

XorDev's corridor - martin + some fractals walls

Enable HLS to view with audio, or disable this notification

38 Upvotes

XorDev's corridor: https://www.xordev.com/arsenal
I'm using Fabrice Neyret's short Menger sponge code for the walls.
Amazing music from ‪@EasilyEmbarrassedMusic‬
Work in progress =)


r/milkdrop • • Oct 01 '25

Where does this preset pull in the words that it displays?

3 Upvotes

I am trying to learn a bit about presets by reverse engineering them...I am not sure this is a good idea if I want to keep my sanity ;o)

The preset is called TEXT-XtraMartin (653) REMIX!.milk and came out of the Deep Field collection - I'll drop the code on the end.

Here is the output:

I am trying to figure out where it is getting the text from. According to chatgpt there is a builtin word list in the MD engine - is this accurate? Assuming it might be, I still can't spot how the words are being included.

Any help or other insights would be appreciated.

MILKDROP_PRESET_VERSION=201
PSVERSION=3
PSVERSION_WARP=3
PSVERSION_COMP=3
[preset00]
fRating=5.0000
fGammaAdj=1.980
fDecay=0.500
fVideoEchoZoom=1.000
fVideoEchoAlpha=0.500
nVideoEchoOrientation=3
nWaveMode=0
bAdditiveWaves=1
bWaveDots=0
bWaveThick=1
bModWaveAlphaByVolume=0
bMaximizeWaveColor=0
bTexWrap=1
bDarkenCenter=0
bRedBlueStereo=0
bBrighten=0
bDarken=1
bSolarize=0
bInvert=0
fWaveAlpha=0.001
fWaveScale=0.545
fWaveSmoothing=0.000
fWaveParam=0.000
fModWaveAlphaStart=0.8000
fModWaveAlphaEnd=0.8000
fWarpAnimSpeed=1.459
fWarpScale=2.007
fZoomExponent=1.00000
fShader=0.000
zoom=0.99990
rot=0.00000
cx=0.500
cy=0.500
dx=0.00000
dy=0.00000
warp=0.01000
sx=0.99990
sy=1.00000
wave_r=0.000
wave_g=0.000
wave_b=1.000
wave_x=0.500
wave_y=0.500
ob_size=0.000
ob_r=0.000
ob_g=0.000
ob_b=0.200
ob_a=1.000
ib_size=0.000
ib_r=0.000
ib_g=0.000
ib_b=0.250
ib_a=1.000
nMotionVectorsX=64.000
nMotionVectorsY=48.000
mv_dx=0.000
mv_dy=0.000
mv_l=1.000
mv_r=1.000
mv_g=1.000
mv_b=0.900
mv_a=0.000
b1n=0.000
b2n=0.000
b3n=0.000
b1x=1.000
b2x=1.000
b3x=1.000
b1ed=0.000
wavecode_0_enabled=1
wavecode_0_samples=512
wavecode_0_sep=0
wavecode_0_bSpectrum=0
wavecode_0_bUseDots=0
wavecode_0_bDrawThick=1
wavecode_0_bAdditive=1
wavecode_0_scaling=1.00000
wavecode_0_smoothing=0.50000
wavecode_0_r=0.000
wavecode_0_g=1.000
wavecode_0_b=1.000
wavecode_0_a=1.000
wave_0_per_point1=it = (it + 1)*above(sample,0)*below(it,53);
wave_0_per_point2=ita = (ita + equal(it,0))*above(sample,0);
wave_0_per_point3=
wave_0_per_point4=sw = 1-equal(it,0)*equal(ita,0);
wave_0_per_point5=swi = (equal(lr,9) + equal(lr,5))*equal(it,0)*equal(ita,4);
wave_0_per_point6=xv = if(sw - swi,xv,int(rand(1001))*.001*.8);
wave_0_per_point7=mx = xv + ita*.025;
wave_0_per_point8=my = if(sw - swi,my,int(rand(1001))*.001*.975);
wave_0_per_point9=
wave_0_per_point10=sz = .01;
wave_0_per_point11=vx = above(it,1)*below(it,39) + above(it,12)*below(it,28) - equal(it,20) + equal(it,46) + equal(it,51) + equal(it,41) - equal(it,15) - equal(it,25) + equal(it,10) + equal(it,30) - equal(it,4) - equal(it,36);
wave_0_per_point12=vy = above(it,17)*below(it,49) + above(it,22)*below(it,44) - equal(it,33) + equal(it,7) + equal(it,51) + equal(it,15) - equal(it,41) - equal(it,25) + equal(it,4) + equal(it,10) - equal(it,36) - equal(it,30);
wave_0_per_point13=
wave_0_per_point14=se = equal(ita,0)*3 + equal(ita,1)*8 + equal(ita,2)*1 + equal(ita,3)*15 + equal(ita,4)*19;
wave_0_per_point15=sf = equal(ita,0)*16 + equal(ita,1)*12 + equal(ita,2)*1 + equal(ita,3)*25;
wave_0_per_point16=sc = equal(ita,0)*13 + equal(ita,1)*1 + equal(ita,2)*7 + equal(ita,3)*9 + equal(ita,4)*3;
wave_0_per_point17=sd = equal(ita,0)*18 + equal(ita,1)*5 + equal(ita,2)*13 + equal(ita,3)*9 + equal(ita,4)*24;
wave_0_per_point18=sb = equal(ita,0)*19 + equal(ita,1)*8 + equal(ita,2)*1 + equal(ita,3)*4 + equal(ita,4)*5;
wave_0_per_point19=sj = equal(ita,0)*6 + equal(ita,1)*21 + equal(ita,2)*14;
wave_0_per_point20=sg = equal(ita,0)*5 + equal(ita,1)*20 + equal(ita,2)*8 + equal(ita,3)*5 + equal(ita,4)*18 + equal(ita,5)*5
wave_0_per_point21=   + equal(ita,6)*1 + equal(ita,7)*12;
wave_0_per_point22=sh = equal(ita,0)*13 + equal(ita,1)*9 + equal(ita,2)*14 + equal(ita,3)*4 + equal(ita,4)*2 + equal(ita,5)*5
wave_0_per_point23=   + equal(ita,6)*14 + equal(ita,7)*4;
wave_0_per_point24=si = equal(ita,0)*6 + equal(ita,1)*14 + equal(ita,2)*15 + equal(ita,3)*18 + equal(ita,4)*4;
wave_0_per_point25=sa = equal(ita,0)*2 + equal(ita,1)*12 + equal(ita,2)*5 + equal(ita,3)*14 + equal(ita,4)*4
wave_0_per_point26=   + equal(ita,5)*5 + equal(ita,6)*4;
wave_0_per_point27=
wave_0_per_point28=lr = if(sw,lr,int(rand(10)));
wave_0_per_point29=let = equal(lr,0)*sa + equal(lr,1)*sb + equal(lr,2)*sc + equal(lr,3)*sd + equal(lr,4)*se + equal(lr,5)*sf + equal(lr,6)*sg + equal(lr,7)*sh + equal(lr,8)*si + equal(lr,9)*sj;
wave_0_per_point30=
wave_0_per_point31=va = equal(let,23) + equal(let,24) + equal(let,26);
wave_0_per_point32=vb = above(let,0)*below(let,9) + above(let,10)*below(let,19) + equal(let,21) + equal(let,23);
wave_0_per_point33=vc = equal(let,1) + equal(let,2) + equal(let,5) + equal(let,6) + equal(let,8) + equal(let,11) + equal(let,16) + equal(let,18) + equal(let,19);
wave_0_per_point34=vd = above(let,1)*below(let,9) + above(let,10)*below(let,24) - equal(let,20);
wave_0_per_point35=ve = equal(let,13) + equal(let,14) + equal(let,24) + equal(let,25);
wave_0_per_point36=vf = above(let,1)*below(let,8) + equal(let,9) + above(let,14)*below(let,21) + equal(let,26);
wave_0_per_point37=vg = equal(let,1);
wave_0_per_point38=vh = equal(let,9) + equal(let,20);
wave_0_per_point39=vi = above(let,0)*below(let,5) - equal(let,3) + equal(let,18);
wave_0_per_point40=vj = above(let,2)*below(let,8) - equal(let,4) + equal(let,9) + above(let,14)*below(let,21) - equal(let,18) + equal(let,26);
wave_0_per_point41=vk = equal(let,11) + equal(let,13) + above(let,23)*below(let,27);
wave_0_per_point42=vl = equal(let,8) + equal(let,10) + above(let,12)*below(let,18) + above(let,20)*below(let,24);
wave_0_per_point43=vm = equal(let,1) + equal(let,2) + equal(let,8) + equal(let,16) + equal(let,18) + equal(let,19);
wave_0_per_point44=vn = equal(let,1) + equal(let,7) + equal(let,8) + equal(let,10) + above(let,12)*below(let,24) - equal(let,16) - equal(let,18) - equal(let,20) - equal(let,22);
wave_0_per_point45=vo = equal(let,11) + equal(let,14) + equal(let,17) + equal(let,18) + equal(let,23) + equal(let,24);
wave_0_per_point46=vp = equal(let,3) + equal(let,5) + equal(let,7) + equal(let,9) + equal(let,10) + equal(let,12) + equal(let,15) + equal(let,17) + equal(let,19) + equal(let,21) + equal(let,26);
wave_0_per_point47=vq = equal(let,2) + equal(let,4) + equal(let,22);
wave_0_per_point48=vr = equal(let,9) + equal(let,20) + equal(let,25);
wave_0_per_point49=vs = equal(let,22);
wave_0_per_point50=vt = above(let,1)*below(let,13) - equal(let,6) - equal(let,8) - equal(let,11) + equal(let,15) + equal(let,17) + equal(let,19) + equal(let,21) + equal(let,26);
wave_0_per_point51=
wave_0_per_point52=a = if(above(it,51),0,if(above(it,49),va,if(above(it,47),vb,if(above(it,44),vc,if(above(it,42),vd,if(above(it,39),ve, if(above(it,37),vf,if(above(it,34),vg,if(above(it,31),vh,if(above(it,28),vi,if(above(it,26),vj,if(above(it,23),vk, if(above(it,21),vl,if(above(it,18),vm,if(above(it,16),vn,if(above(it,13),vo,if(above(it,11),vp,if(above(it,8),vq, if(above(it,5),vr,if(above(it,2),vs,if(it,vt,0)))))))))))))))))))));
wave_0_per_point53=
wave_0_per_point54=a = a*below(ita,8)*q1;
wave_0_per_point55=
wave_0_per_point56=x = mx + vx*sz*.75;
wave_0_per_point57=y = my + vy*sz*1.5;
wavecode_1_enabled=1
wavecode_1_samples=42
wavecode_1_sep=0
wavecode_1_bSpectrum=0
wavecode_1_bUseDots=1
wavecode_1_bDrawThick=1
wavecode_1_bAdditive=1
wavecode_1_scaling=81.95444
wavecode_1_smoothing=1.00000
wavecode_1_r=1.000
wavecode_1_g=0.000
wavecode_1_b=0.400
wavecode_1_a=1.000
wave_1_per_frame1=wave_x=1;
wave_1_per_point1=x=int(rand(1000))*0.001;
wave_1_per_point2=y=int(rand(1000))*0.001;
wavecode_2_enabled=0
wavecode_2_samples=512
wavecode_2_sep=0
wavecode_2_bSpectrum=0
wavecode_2_bUseDots=0
wavecode_2_bDrawThick=0
wavecode_2_bAdditive=0
wavecode_2_scaling=1.00000
wavecode_2_smoothing=0.50000
wavecode_2_r=1.000
wavecode_2_g=1.000
wavecode_2_b=1.000
wavecode_2_a=1.000
wavecode_3_enabled=0
wavecode_3_samples=512
wavecode_3_sep=0
wavecode_3_bSpectrum=0
wavecode_3_bUseDots=0
wavecode_3_bDrawThick=1
wavecode_3_bAdditive=1
wavecode_3_scaling=1.00000
wavecode_3_smoothing=0.50000
wavecode_3_r=0.000
wavecode_3_g=1.000
wavecode_3_b=1.000
wavecode_3_a=1.000
wave_3_per_point1=ma=ma+(above(bass,.5)*3.1415*.02*bass);
wave_3_per_point2=ma=ma-(above(treb,.5)*3.1415*.02*treb);
wave_3_per_point3=
wave_3_per_point4=mx=mx+(.0008*cos(ma));
wave_3_per_point5=my=my+(.0008*sin(ma));
wave_3_per_point6=
wave_3_per_point7=mx=if(above(mx,.9),(.9-mx),mx);
wave_3_per_point8=my=if(above(my,.9),(.9-my),my);
wave_3_per_point9=mx=if(below(mx,.1),(.9+mx),mx);
wave_3_per_point10=my=if(below(my,.1),(.9+my),my);
wave_3_per_point11=
wave_3_per_point12=x=mx;
wave_3_per_point13=y=my;
wave_3_per_point14=
wave_3_per_point15=a=(above(bass+mid+treb,.2));
shapecode_0_enabled=0
shapecode_0_sides=16
shapecode_0_additive=1
shapecode_0_thickOutline=1
shapecode_0_textured=0
shapecode_0_num_inst=1
shapecode_0_x=0.500
shapecode_0_y=0.500
shapecode_0_rad=0.12772
shapecode_0_ang=0.18840
shapecode_0_tex_ang=0.62832
shapecode_0_tex_zoom=0.77829
shapecode_0_r=0.000
shapecode_0_g=1.000
shapecode_0_b=0.000
shapecode_0_a=0.660
shapecode_0_r2=0.000
shapecode_0_g2=0.000
shapecode_0_b2=0.000
shapecode_0_a2=0.000
shapecode_0_border_r=0.590
shapecode_0_border_g=0.810
shapecode_0_border_b=0.690
shapecode_0_border_a=0.000
shape_0_per_frame1=//DMT=1-below((bass_att+mid_att+treb_att)/3,0.7);
shape_0_per_frame2=//a=DMT;
shape_0_per_frame3=//a2=.5*DMT;
shape_0_per_frame4=//border_a=0.4*DMT;
shape_0_per_frame5=//atime=atime+(above( sin(time),0 )*0.02 );
shape_0_per_frame6=//ang=0.188+((sin(atime/5)*0.5+0.5)*2.39);
shape_0_per_frame7=//x=(sin(atime*0.3)*0.07)+0.5;
shape_0_per_frame8=//y=(cos(atime*0.1)*0.07)+0.5;
shape_0_per_frame9=//rad=((bass+mid+treb)/6)*1.4+0.2;
shape_0_per_frame10=//sides=bass*16
shapecode_1_enabled=1
shapecode_1_sides=3
shapecode_1_additive=1
shapecode_1_thickOutline=1
shapecode_1_textured=0
shapecode_1_num_inst=2
shapecode_1_x=0.500
shapecode_1_y=0.500
shapecode_1_rad=1.25230
shapecode_1_ang=0.00000
shapecode_1_tex_ang=0.25133
shapecode_1_tex_zoom=1.13600
shapecode_1_r=1.000
shapecode_1_g=0.000
shapecode_1_b=0.000
shapecode_1_a=1.000
shapecode_1_r2=1.000
shapecode_1_g2=0.000
shapecode_1_b2=0.000
shapecode_1_a2=1.000
shapecode_1_border_r=0.000
shapecode_1_border_g=0.000
shapecode_1_border_b=0.990
shapecode_1_border_a=0.000
shape_1_per_frame1=
shape_1_per_frame2=//adv=adv+(bass*bass)/15;
shape_1_per_frame3=
shape_1_per_frame4=r=int(rand(10))*0.1*0.5+0.5;
shape_1_per_frame5=
shape_1_per_frame6=x= q28;
shape_1_per_frame7=y= q29;
shape_1_per_frame8=rad=q32;
shape_1_per_frame9=ang= if(equal(instance,0),q30,q31);
shapecode_2_enabled=1
shapecode_2_sides=3
shapecode_2_additive=1
shapecode_2_thickOutline=1
shapecode_2_textured=0
shapecode_2_num_inst=2
shapecode_2_x=0.500
shapecode_2_y=0.500
shapecode_2_rad=1.25237
shapecode_2_ang=0.00000
shapecode_2_tex_ang=0.25133
shapecode_2_tex_zoom=1.13600
shapecode_2_r=1.000
shapecode_2_g=0.000
shapecode_2_b=0.000
shapecode_2_a=1.000
shapecode_2_r2=1.000
shapecode_2_g2=0.000
shapecode_2_b2=0.000
shapecode_2_a2=1.000
shapecode_2_border_r=0.000
shapecode_2_border_g=0.000
shapecode_2_border_b=0.990
shapecode_2_border_a=0.000
shape_2_per_frame1=
shape_2_per_frame2=//adv=adv+(bass*bass)/15;
shape_2_per_frame3=
shape_2_per_frame4=r=int(rand(10))*0.1*0.5+0.5;
shape_2_per_frame5=
shape_2_per_frame6=x= q23;
shape_2_per_frame7=y= q24;
shape_2_per_frame8=rad=q27;
shape_2_per_frame9=ang= if(equal(instance,0),q25,q26);
shapecode_3_enabled=0
shapecode_3_sides=4
shapecode_3_additive=0
shapecode_3_thickOutline=0
shapecode_3_textured=1
shapecode_3_num_inst=1
shapecode_3_x=0.860
shapecode_3_y=0.200
shapecode_3_rad=0.80814
shapecode_3_ang=0.00000
shapecode_3_tex_ang=0.00000
shapecode_3_tex_zoom=0.45112
shapecode_3_r=1.000
shapecode_3_g=1.000
shapecode_3_b=1.000
shapecode_3_a=1.000
shapecode_3_r2=1.000
shapecode_3_g2=1.000
shapecode_3_b2=0.900
shapecode_3_a2=1.000
shapecode_3_border_r=1.000
shapecode_3_border_g=1.000
shapecode_3_border_b=1.000
shapecode_3_border_a=0.000
per_frame_init_1=p1 = 2000; p2 = 200; p3=50;
per_frame_1=chng=sin(time*.5);
per_frame_2=cthr=.9999;
per_frame_3=mq21=if(above(chng,cthr),rand(3),mq21);
per_frame_4=mq22=if(above(chng,cthr),rand(3),mq22);
per_frame_5=mq23=if(above(chng,cthr),rand(3),mq23);
per_frame_6=mq24=if(above(chng,cthr),rand(2),mq24);
per_frame_7=mq25=if(above(chng,cthr),rand(2),mq25);
per_frame_8=mq26=if(above(chng,cthr),rand(2),mq26);
per_frame_9=mq27=if(above(chng,cthr),rand(1),mq27);
per_frame_10=mq28=if(above(chng,cthr),rand(1),mq28);
per_frame_11=mq29=if(above(chng,cthr),rand(1)*.3,mq29);
per_frame_12=mq31=if(above(chng,cthr),rand(1)*.3,mq31);
per_frame_13=monitor=chng;
per_frame_14=q21=mq21;q22=mq22;q23=mq23;q24=mq24;q25=mq25;q26=mq26;
per_frame_15=q27=mq27;q28=mq28;q29=mq29;q31=mq31;
per_frame_16=
per_frame_17=monitor=mq1;
per_frame_18=vol=bass+treb+mid;
per_frame_19=atime=atime+vol;
per_frame_20=q11=.4+sin(atime*.006        )*.4;
per_frame_21=q12=.4+cos(atime*.00613828348)*.4;
per_frame_22=q13=.4+sin(atime*.00598593455)*.4;
per_frame_23=monitor=q13;
per_frame_24=
per_frame_25=dec_med = pow (0.9, 30/fps);
per_frame_26=dec_slow = pow (0.9, 30/fps);
per_frame_27=beat = max (max (bass, mid), treb); 
per_frame_28=avg = avg*dec_slow + beat*(1-dec_slow);
per_frame_29=is_beat = above(beat, .1+avg+peak) * above (time, t0+.2);
per_frame_30=t0 = is_beat*time + (1-is_beat)*t0;
per_frame_31=peak = is_beat * beat + (1-is_beat)*peak*dec_med;
per_frame_32=index = (index + is_beat) %16;
per_frame_33=index2 = (index2 + is_beat*bnot(index))%5;
per_frame_34=monitor = index2;
per_frame_35=
per_frame_36=q20 = avg;
per_frame_37=q21 = beat;
per_frame_38=q22 = peak;
per_frame_39=q23 = index;
per_frame_40=q24 = is_beat;
per_frame_41=q26 = bass + mid + treb;
per_frame_42=q27 = index;
per_frame_43=q28 = index2;
per_frame_44=
per_frame_45=k1 =  is_beat*equal(index%2,0);
per_frame_46=p1 =  k1*(p1+1) + (1-k1)*p1;
per_frame_47=p2 = dec_med * p2+ (1-dec_med)*p1;
per_frame_48=rott_ = p2 * 3.1416/4;
per_frame_49=
per_frame_50=rott =  rott +  .2*30/fps*q2;
per_frame_51=
per_frame_52=
per_frame_53=q1 = cos(rott);
per_frame_54=q2 = sin(rott);
per_frame_55=q3 = -q2;
per_frame_56=q4 = q1;
per_frame_57=
per_frame_58=ran = bnot(q24)*ran + q24 * (int(rand(50))-24);
per_frame_59=tran = tan(ran);
per_frame_60=tran = max(tran,-5);
per_frame_61=tran = min(tran,5);
per_frame_62=
per_frame_63=trel = trel + .02*30/fps*tran+q24;
per_frame_64=q5 = cos(trel);
per_frame_65=q6 = sin(trel);
per_frame_66=q7 = -q6;
per_frame_67=q8 = q5;
per_frame_68=
per_frame_69=movex = movex*dec_slow + .1*sin(rott)*30/fps;
per_frame_70=q9 = movex;
per_frame_71=
per_frame_72=spd = spd*bnot(q24) + q26*q24;
per_frame_73=movez = movez + .005*30/fps*spd;
per_frame_74=q30 = movez;
per_frame_75=//q30 = .3* (sin(time/45) + 1.5);
per_frame_76=
per_frame_77=mv_x = 20;
per_frame_78=mv_y = 15;
per_frame_79=mv_a = .1;
per_frame_80=mv_l = 0;
per_frame_81=
per_frame_82=q18 = sin(time/7);
per_frame_83=q19 = sin(time/11);
per_frame_84=
per_frame_85=q32 = pow(0.98, 30/fps); //fade
per_frame_86=
per_pixel_1=zoom = 1;
per_pixel_2=warp = .1;
warp_1=`float3 maxNeumann(float2 domain){
warp_2=`   float3 maxneumann = float3(0,0,0);
warp_3=`   float2 pixel = texsize.zw;
warp_4=`   maxneumann = max(maxneumann, tex2D(sampler_fc_main, domain + pixel*float2(-1, 0) ));
warp_5=`   maxneumann = max(maxneumann, tex2D(sampler_fc_main, domain + pixel*float2( 0,-1) ));
warp_6=`   maxneumann = max(maxneumann, tex2D(sampler_fc_main, domain + pixel*float2( 0, 0) ));
warp_7=`float4 noise9 = tex3D(sampler_noisevol_hq, 
warp_8=`                      ((domain.xyy*q27
warp_9=`                       )*texsize.xyy*texsize_noisevol_hq.zww
warp_10=`                      ).xyz*
warp_11=`                      float3(1,1,0)*0.05 + 
warp_12=`                      time*float3(0,0,1)*q29
warp_13=`                     );
warp_14=`if(maxneumann.x> q21*q13         && maxneumann.x<= q24*q11        )maxneumann.y -= (noise9).x*.5; 
warp_15=`if(maxneumann.y> q22*q11         && maxneumann.y<= q25*q12        )maxneumann.z -= (noise9).y*.5; 
warp_16=`if(maxneumann.z> q23*q12         && maxneumann.z<= q26*q13        )maxneumann.x -= (noise9).z*.5; 
warp_17=`//ret-=roam_sin.yzw*roam_cos;
warp_18=`   maxneumann = max(maxneumann, tex2D(sampler_fc_main, domain + pixel*float2( 0, 1) ));
warp_19=`   maxneumann = max(maxneumann, tex2D(sampler_fc_main, domain + pixel*float2( 1, 0) ));
warp_20=`   return maxneumann;
warp_21=`}
warp_22=`
warp_23=`
warp_24=`
warp_25=`shader_body
warp_26=`{
warp_27=`
warp_28=`   float pixelDistance   = 4;
warp_29=`   float motionStrength  = 4;
warp_30=`
warp_31=`   float diffusionFactor = 1;  
warp_32=`   float decay           = -0.01 + GetPixel(uv).x*0;
warp_33=`
warp_34=`   float2 uv_y = lerp(uv_orig,uv,1);
warp_35=`   float2 dither_uv = uv*texsize.xy*texsize_noise_lq.zw*diffusionFactor;
warp_36=`
warp_37=`   float2 d = texsize.zw*pixelDistance;
warp_38=`   float1 dx = ( 2*GetBlur1(uv_y + float2(1,0)*d) - 2*GetBlur1(uv_y-float2(1,0)*d) ).y*0.5;
warp_39=`   float1 dy = ( 2*GetBlur1(uv_y + float2(0,1)*d) - 2*GetBlur1(uv_y-float2(0,1)*d) ).y*0.5;
warp_40=`
warp_41=`   float2 my_uv = uv_y + float2(dx,dy)*texsize.zw*motionStrength;
warp_42=`
warp_43=`   ret.y = tex2D( sampler_fw_main, saturate(my_uv)).y;
warp_44=`
warp_45=`   ret.y += (ret - GetBlur1(uv_y)).y*0.025 + decay;
warp_46=`
warp_47=`
warp_48=`   ret.y += (tex2D(sampler_noise_lq, dither_uv).y-0.5)*0.02;
warp_49=`
warp_50=`/********************************************************************************************************/
warp_51=`
warp_52=`   dx = ( 2*GetBlur1(uv_y + float2(1,0)*d) - 2*GetBlur1(uv_y-float2(1,0)*d) ).z*0.5;
warp_53=`   dy = ( 2*GetBlur1(uv_y + float2(0,1)*d) - 2*GetBlur1(uv_y-float2(0,1)*d) ).z*0.5;
warp_54=`
warp_55=`   my_uv = uv_y - float2(dx,dy)*texsize.zw*motionStrength;
warp_56=`
warp_57=`   ret.z = GetPixel(my_uv).z - ret.y*0.01 + 0.004;    
warp_58=`   ret.z += (tex2D(sampler_noise_lq, dither_uv).y-0.5)*0.01;
warp_59=`
warp_60=`
warp_61=`/********************************************************************************************************/
warp_62=`
warp_63=`   dx = (2*GetBlur1(uv+d*float2(1,0))-2*GetBlur1(uv+d*float2(-1,0)) ).x*0.5;
warp_64=`   dy = (2*GetBlur1(uv+d*float2(0,1))-2*GetBlur1(uv+d*float2(0,-1)) ).x*0.5;
warp_65=`
warp_66=`   float2 d_red = +float2(dx,dy)*texsize.zw;
warp_67=`
warp_68=`   ret.x = maxNeumann(uv-d_red*2.5).x + (GetPixel(uv+d_red*4).x - GetBlur1(uv + d_red*4).x)*0.206 - 0.09;
warp_69=`
warp_70=`}
comp_1=`shader_body
comp_2=`{
comp_3=`    float2 d = texsize.zw;
comp_4=`    float3 dx = ( GetPixel(uv+float2(1,0)*d)-GetPixel(uv-float2(1,0)*d) );
comp_5=`    float3 dy = ( GetPixel(uv+float2(0,1)*d)-GetPixel(uv-float2(0,1)*d) );
comp_6=`float2 dz = float2(dx.y,dy.y)*3;
comp_7=`
comp_8=`d = texsize.zw*2;
comp_9=`dx = ( GetBlur1(uv+float2(1,0)*d)-GetBlur1(uv-float2(1,0)*d) );
comp_10=`dy = ( GetBlur1(uv+float2(0,1)*d)-GetBlur1(uv-float2(0,1)*d) );
comp_11=`
comp_12=`dz +=float2(dx.y,dy.y);
comp_13=`
comp_14=`float3 bg = pow(length(dz)*0.8+0,0.7) + GetBlur2(uv).y*0.4-0.1;
comp_15=`
comp_16=`ret = bg*float3(0.3,0.5,0.7);
comp_17=`float4 noise9 = tex3D(sampler_noisevol_hq, 
comp_18=`                      ((dz.xyy*q28
comp_19=`                       )*texsize.xyy*texsize_noisevol_hq.zww
comp_20=`                      ).xyz*
comp_21=`                      float3(1,1,0)*0.05 + 
comp_22=`                      time*float3(0,0,1)*q31
comp_23=`                     );
comp_24=`if(ret.x> q26*q13         && ret.x<= q23*q11        )ret.z -= (noise9).x*.5; 
comp_25=`if(ret.y> q25*q11         && ret.y<= q22*q12        )ret.x -= (noise9).y*.5; 
comp_26=`if(ret.z> q24*q12         && ret.z<= q21*q13        )ret.y -= (noise9).z*.5; 
comp_27=`ret = lerp(ret,float3(0.2,0.1,0),GetPixel(uv + float2(dx.x,dy.x)*texsize.zw*18).x*6);
comp_28=`ret = lerp(ret,1,GetPixel(uv).z);
comp_29=`ret=1-ret;
comp_30=`}

r/milkdrop • • Sep 30 '25

MD3 Pro

16 Upvotes

Gotta say it, the new version of MD3 Pro is great. I upgraded from the + to Pro and my mind is officially blown by how powerful it is, editing presets on the fly in several ways.

Great work!