aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjaybinks <jaybinks@b956fd51-792f-4845-bead-9b4dfca2ff2c>2007-12-06 11:39:29 +0000
committerjaybinks <jaybinks@b956fd51-792f-4845-bead-9b4dfca2ff2c>2007-12-06 11:39:29 +0000
commitd8ac25f3a4dedf618a6138347ba3c8b589c0bbf0 (patch)
tree69f537f0bec1f0964d6b445fd124626cb7a66f91
parent108c886449386f2f39988a3d6a3fc431d7105492 (diff)
downloadusdx-d8ac25f3a4dedf618a6138347ba3c8b589c0bbf0.tar.gz
usdx-d8ac25f3a4dedf618a6138347ba3c8b589c0bbf0.tar.xz
usdx-d8ac25f3a4dedf618a6138347ba3c8b589c0bbf0.zip
visual presets
git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@684 b956fd51-792f-4845-bead-9b4dfca2ff2c
-rw-r--r--InstallerDependencies/Visuals/projectM/config22
-rw-r--r--InstallerDependencies/Visuals/projectM/fonts/Vera.ttfbin0 -> 65932 bytes
-rw-r--r--InstallerDependencies/Visuals/projectM/fonts/VeraMono.ttfbin0 -> 49224 bytes
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Agitator.milk69
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Aimless (Gravity Directive Mix).milk75
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Aimless (Spirogravity Mix).milk75
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Airhandler (Menagerie Mix).milk77
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Airs (Windy Mix).milk82
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Anchorpulse (Pulse Of A Ghast II Mix).milk84
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Anchorpulse (Verified Mix).milk80
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Anomalous Material Science (Pure Splinter Mix).milk77
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Antidote (Aqualung Mix).milk81
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Antidote (Side Effects Mix).milk79
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Antidote.milk76
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Antique Abyss.milk79
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Arise! (Padded Mix).milk80
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Ashes Of Air (Remix).milk70
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Bitterfeld (Crystal Border Mix).milk80
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Blender.milk73
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Bow To Gravity.milk85
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Brakefreak.milk81
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Candy Avian.milk81
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Causeway Of Dreams (Nightmare Mix).milk88
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Causeway Of Dreams (REMix).milk81
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Causeway Of Dreams.milk79
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Chromatic Abyss (The Other Side).milk70
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Circlefacade.milk73
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Contortion (Xenomorph Mix).milk84
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Contortion.milk84
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Crystal Storm.milk72
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Dark Matter (Converse Mix).milk80
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Elastoid.milk81
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Floater Society.milk82
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Flowing Form.milk75
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Making Time (Swamp Mix).milk85
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Multiviola.milk76
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - Negative Sun III.milk76
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - What Cannot Be Undone.milk76
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Aderrasi - What cannot be.milk78
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Bmelgren & Krash - Rainbow Orb Peacock (Centred Journey Mix.milk76
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Bmelgren & Krash - Rainbow Orb Peacock (Lonely Signal Gone .milk70
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Bmelgren - Pentultimate Nerual Slipstream (Tweak 2).milk63
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/CatalystTheElder - Electric Rosebud_Phat_texture_edit.milk218
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Che - Escape.milk118
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Che - Terracarbon Stream.milk113
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/CrystalHigh - mad ravetriping.milk86
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/EMPR - Random - Changing Polyevolution.milk95
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Eo.S. - skylight a3 [trip colors flux2]_phat_Multi_shaped2_zoe_colours5.milk276
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Cool Bug_arm.milk238
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Cool Bug_arm_textured.milk238
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Fractical_dancer - pulsate B.milk250
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Fractical_dancer - pulsate box_mix.milk247
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Fractical_dancer_Peacock.milk250
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Eo.s and PieturP - Starfield.milk597
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/EvilJim - Follow the ball.milk65
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/EvilJim - Ice Drops.milk61
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Fvese - 0 To 60.milk81
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Fvese - A Blur.milk80
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Fvese - Lifesavor Anyone.milk67
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Fvese - New meetings.milk88
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Fvese - Quicksand.milk78
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Fvese - Stand Still!.milk80
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Fvese - The Tunnel (Final Stage Mix).milk83
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Fvese - Window Reflection 6.milk83
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Fvese - Zoom Effects (Remix 2).milk91
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Fvese - Zoom Effects With A Twist 2.milk99
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Fvese - Zoom Effects With A Twist 3.milk99
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Fvese - simple.milk77
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss & Rovastar - Notions Of Tonality 2.milk90
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss & Rovastar - Tokamak (Naked Intrusion Mix).milk80
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - Blasto.milk64
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - Cosmic Dust 2.milk70
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - Cruzin'.milk59
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - Downward Spiral.milk67
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - Dynamic Swirls 1.milk68
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - Dynamic Swirls 2.milk68
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - Eddies 2.milk78
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - Eggs.milk54
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - El Cubismo.milk55
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - Feedback 2.milk231
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - High Dynamic Range.milk227
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - Octopus Ever Changing.milk76
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - Octopus Gold.milk79
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - Octopus.milk73
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - Oldskool Mellowstyle.milk70
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - Swirlie 1.milk75
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - Swirlie 2.milk68
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - Swirlie 3.milk72
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - Swirlie 4.milk74
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss - The Fatty Lumpkin Sunkle Tweaker.milk77
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Geiss and Rovastar - The Chaos Of Colours (sprouting dimentia mix).milk261
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Idiot & Rovastar - Altars Of Madness 2 (X.42 Mix).milk95
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Idiot & Zylot - Unhealthy Love (Idiot's STDs Mix).milk112
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Idiot - MOTIVATION!.milk81
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Idiot - Texture Boxes (Remix 2).milk250
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Idiot - Texture Boxes (Remix).milk251
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Idiot24-7 - Ascending to heaven 2.milk64
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Illusion & Che - Return Of The King.milk68
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Illusion & Che - The Piper.milk69
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Illusion & Rovastar - Clouded Bottle.milk79
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Illusion & Unchained - Frozen Eye 1.milk77
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Illusion & Unchained - Invade My Mind.milk110
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Illusion - Figure Eight.milk80
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Jess - Trying To Trap A Twister.milk89
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Krash & Illusion - Spiral Movement.milk88
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Krash & Rovastar - Altars of Madness (Mad Ocean Mix).milk92
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Krash & Rovastar - Cerebral Demons - Phat + Eo.S. Killer Death Bunny Remix.milk364
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Krash & TEcHNO - Rhythmic Mantas.milk81
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Krash - 3D Shapes Demo 2.milk291
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Krash - 3D Shapes Demo.milk296
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Krash - Digital Flame.milk79
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Krash - Dynamic Borders 1.milk86
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Krash - Framed Geometry.milk360
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Krash - Interwoven (Nightmare Weft Mix).milk99
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Krash - War Machine (Shifting Complexity Mix).milk90
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Krash - Windowframe To Mega Swirl 2.milk81
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Krash and Rovastar - Rainbow Orb.milk72
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Mstress & Juppy - Dancer.milk403
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Mstress & Juppy - Dancers In The Dark.milk673
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Mstress - Acoustic Nerve Impulses (Under Drug Effetcs (Hypn.milk287
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Phat_Eo.S. - our own personal demon.milk345
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Phat_Eo.S._Algorithm.milk348
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Phat_Eo.S_shoot_em_up.milk395
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Phat_Rovastar - What_does_your_soul_look_like.milk260
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Phat_Rovastar_Eo.S. spiral_faces.milk345
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Phat_Zylot_Eo.S. spiral_faces_multi colour_ThisIsJustNotResponsible =).milk339
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Phat_Zylot_Eo.S._Krash I_hope_someone_will_see_this_triping_v2b.milk351
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Pithlit & Illusion - Symetric pattern.milk218
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Reenen - phoenix.milk67
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Reenen Geiss - Triple Feedback.milk312
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Reenen Geiss - Triple Feedback_phat+eos_edit.milk320
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Aderrasi - Clockwork Organism.milk86
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Fvese - Deadly Flower.milk83
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Fvese - Stranger Minds (Astral Mix).milk80
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Fvese - Stranger Minds.milk74
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Broken Destiny Mix).milk90
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Mysticial Awakening Mi.milk91
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Poltergiest Mix).milk107
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Twisted Truth Mix).milk97
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Voyage Of Twisted Souls Mix).milk98
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Hurricane Nightmare.milk80
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Ice Planet.milk74
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Notions Of Tonality.milk89
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Octoplasm.milk77
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Octotrip (MultiTrip Mix).milk240
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Octotrip.milk81
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Surface (Vectrip Mix).milk94
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Idiot24-7 - Balk Acid.milk77
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Rocke - Headspin.milk85
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & StudioMusic - More Cherished Desires.milk72
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & StudioMusic - Twisted Spider Web.milk77
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Telek - Altars of Madness (Rolling Oceans Mix).milk122
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Telek - Cosmic Fireworks.milk214
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Unchained - Centre Of Gravity.milk116
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Zylot - Crystal Ball (Cerimonial Decor).milk377
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Zylot - Narell's Fever.milk93
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar & Zylot - Sea Of Zigrot.milk68
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - A Million Miles from Earth (Pathfinder Mix).milk74
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - A Million Miles from Earth.milk75
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Harlequin's Madness (Dark Disorder Mix.milk239
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness (A Million Miles From Earth Mi.milk244
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness (Duel Mix).milk225
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness (Surealist Mix).milk221
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness 4 (Spirit Of Twisted Madness Mix).milk94
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness.milk217
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Attacking Freedom.milk82
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Bellanova (New Wave Mix).milk236
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Chapel Of Ghouls.milk284
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Cosmic Echoes 1.milk72
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Cosmic Echoes 2.milk71
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Decreasing Dreams (Extended Movement Mix).milk242
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Decreasing Dreams (Increasing Memory Mix) .milk254
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Explosive Minds.milk72
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Eye On Reality (Mega 3 Mix)_phat_edit.milk258
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Forgotten Moon.milk74
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Fractopia (Fantic Dancing Lights Mix).milk236
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Fractopia (Focused Childhood Mix ).milk248
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Fractopia (Fractal Havok Mix).milk233
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Fractopia (Upspoken Mix).milk263
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Future Speakers.milk280
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Hallucinogenic Pyramids (Beat Time Mix).milk75
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Harlequin's Dynamic Fractal (Crazed Spiral Mix).milk76
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Harlequin's Fractal Encounter.milk113
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Hyperspace (Frozen Rapture Mix).milk74
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Hyperspace.milk73
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Clouded Judgement Mix).milk253
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Dark Secret Mix).milk261
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Distant Memories Mix).milk259
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Frantic Thoughts Mix).milk257
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Strange Cargo Mix).milk260
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Kalideostars (Altars Of Madness MIx).milk209
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Kalideostars (Round Round Mix).milk210
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Kalideostars.milk210
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Magic Carpet.milk74
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Multiverse Starfield 1.milk71
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Multiverse Starfield 3.milk69
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Pandora's Volcano.milk70
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Parallel Universe.milk83
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Sea Shells.milk243
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Solarized Space (Space DNA Mix).milk236
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Solarized Space.milk107
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Space (Twisted Dimension Mix).milk108
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Space.milk106
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Sunflower Passion (Enlightment Mix)_Phat_edit.milk284
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Sunflower Passion (Simple Mix).milk268
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Sunflower Passion.milk272
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - The Awakening.milk65
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - The Chaos Of Colours (Drifting Mix).milk217
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - The Chaos Of Colours.milk215
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - The Shroomery.milk454
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Timeless Voyage.milk69
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Torrid Tales.milk79
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - Twilight Tunnel.milk232
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar - VooV's Movement (After Dark Mix).milk113
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar and Krash - Hallucinogenic Pyramids (Extra Beat Ti.milk83
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rovastar and Unchained - Braindance Visions.milk69
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rozzer & Zylot - Force Field Generator (Slowtime Tweak).milk80
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rozzor & Aderrasi - Canon.milk83
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rozzor & Che - Inside The House Of Nil.milk86
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rozzor & Rovastar - Oozing Resistance (Waveform Mod).milk83
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Rozzor & Shreyas - Deeper Aesthetics.milk373
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Studio Music and Unchained - Rapid Alteration.milk103
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - Entity.milk103
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - Minor Alteration.milk99
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - Remembering How You Were (Perceived Mix).milk110
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - So Much Love.milk287
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - State Of Discretion.milk103
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - Wrenched Fate.milk100
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/StudioMusic - It's Only Make Believe.milk75
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/StudioMusic - Numerosity.milk74
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Telek - Flicker.milk93
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/Telek - Slow Shift Matrix (bb4.5).milk80
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/bmelgren - Godhead.milk65
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/bmelgren - Take this highway.milk66
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - brainstem activation.milk393
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - crazy diamond.milk267
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - cthulhus asshole (bad breakfast remix).milk236
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - cthulhus asshole.milk285
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - plasma temptation.milk224
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - quark matrix.milk270
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/nil - Can't Stop the Blithering.milk71
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/nil - Can't Stop the Cramming.milk70
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/nil - Cid and Lucy.milk68
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/phat_CloseIncouneters.milk270
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/phat_CloseIncounetersV2.milk270
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/shifter - feathers (angel wings)_phat_remix.milk341
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/shifter - flashburn.milk260
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/shifter - pinwheel.milk273
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/shifter - pulsar.milk255
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/shifter - snow.milk273
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/shifter - spincycle b.milk326
-rw-r--r--InstallerDependencies/Visuals/projectM/presets/shifter - timepeice.milk264
252 files changed, 36748 insertions, 0 deletions
diff --git a/InstallerDependencies/Visuals/projectM/config b/InstallerDependencies/Visuals/projectM/config
new file mode 100644
index 00000000..bf066ae2
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/config
@@ -0,0 +1,22 @@
+projectM Config file (ONLY CHANGE THE NUMBERS!!!!!!)
+------------------------------------------------------
+Texture Size (Must be power of 2) [256,512,1024,2048, etc]
+512
+Grid X Dimension (Higher is Better but much slower) 12-60
+32
+Grid Y Dimension (Higher is Better but much slower) 8-45
+24
+Windowed Width (Initial window width)
+512
+Windowed Height (Initial window width)
+512
+Fullscreen Width (set to your native screen resolution)
+1024
+Fullscreen Height (set to your native screen resolution)
+768
+FPS (Higher the Better) 30-90 is realisitc
+35
+Fullscreen on Startup (1=yes, 0=no)
+0
+X Server to Display projectM default is ":0.0"
+:0.0
diff --git a/InstallerDependencies/Visuals/projectM/fonts/Vera.ttf b/InstallerDependencies/Visuals/projectM/fonts/Vera.ttf
new file mode 100644
index 00000000..58cd6b5e
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/fonts/Vera.ttf
Binary files differ
diff --git a/InstallerDependencies/Visuals/projectM/fonts/VeraMono.ttf b/InstallerDependencies/Visuals/projectM/fonts/VeraMono.ttf
new file mode 100644
index 00000000..139f0b43
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/fonts/VeraMono.ttf
Binary files differ
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Agitator.milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Agitator.milk
new file mode 100644
index 00000000..11f469e0
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Agitator.milk
@@ -0,0 +1,69 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.504000
+fDecay=0.900000
+fVideoEchoZoom=0.999592
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.311604
+fWaveSmoothing=0.450000
+fWaveParam=-0.500000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=0.010000
+fWarpScale=0.438651
+fZoomExponent=0.999994
+fShader=0.000000
+zoom=1.000156
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=0.990099
+sy=0.990099
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.100000
+ob_r=0.000000
+ob_g=0.600000
+ob_b=0.500000
+ob_a=0.100000
+ib_size=0.050000
+ib_r=0.000000
+ib_g=1.000000
+ib_b=1.000000
+ib_a=0.100000
+nMotionVectorsX=12.799995
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.5*sin(1.2*frame) + 0.3*sin(1.9*frame);
+per_frame_2=wave_g = wave_g + 0.7*sin(1.1*frame) + 0.4*cos(1.6*frame);
+per_frame_3=wave_b = wave_b + 0.2*sin(1.3*frame) + 0.4*sin(2*frame);
+per_pixel_1=rot=rot + (0.5 + 0.1*sin(bass)-rad)*pow(bass,3)/50;
+per_pixel_2=zoom= zoom + (0.5 + 0.3*tan(3*bass_att)-rad)*(cos(pow(rad,2.4))+(0.2*mid_att));
+per_pixel_3=warp = warp + if (above(bass,1.34), 0.5*(0.5+ 0.1*sin(bass)-rad)*(cos(pow(rad,2.4))+(5*bass_att)), 0);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Aimless (Gravity Directive Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Aimless (Gravity Directive Mix).milk
new file mode 100644
index 00000000..f0f74572
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Aimless (Gravity Directive Mix).milk
@@ -0,0 +1,75 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.611434
+fWaveSmoothing=0.000000
+fWaveParam=-0.500000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=0.900000
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_x = wave_x + 0.12*sin(0.2*time) - 0.15*cos(0.1*time) + 0.1*sin(0.2*time);
+per_frame_2=wave_y = wave_y + 0.1*sin(0.3*time) - 0.2*sin(0.88*time) + 0.13*cos(0.7*time);
+per_frame_3=dx = dx + 0.04*sin(1.24*time);
+per_frame_4=dy = dy + 0.04*sin(1.12*time);
+per_frame_5=wave_r = wave_r + 0.35*sin(1.13*time) + 0.1245*sin(2.34*time);
+per_frame_6=wave_g = wave_g + 0.35*sin(1.23*time) + 0.12*sin(2.134*time);
+per_frame_7=wave_b = wave_b + 0.35*sin(1.33*time) + 0.12*sin(2.5*time);
+per_frame_8=wave_mystery = wave_mystery + 0.00*sin(time);
+per_frame_9=turn = above(bass_att,turn)*2 + (1-above(bass_att,turn))*((turn-1.3)*0.96+1.3);
+per_frame_10=turnr = equal(turn,2)*0.089*sin(time*6.6) + (1-equal(turn,2))*turnr;
+per_frame_11=simp = simp * 0.35*sin(1.2*time) - 0.62*sin(0.7*time) + 1.5*sin(turn);
+per_frame_12=rot = rot + 1.05*((0.25*simp)*10*turnr);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Aimless (Spirogravity Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Aimless (Spirogravity Mix).milk
new file mode 100644
index 00000000..f0f74572
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Aimless (Spirogravity Mix).milk
@@ -0,0 +1,75 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.611434
+fWaveSmoothing=0.000000
+fWaveParam=-0.500000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=0.900000
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_x = wave_x + 0.12*sin(0.2*time) - 0.15*cos(0.1*time) + 0.1*sin(0.2*time);
+per_frame_2=wave_y = wave_y + 0.1*sin(0.3*time) - 0.2*sin(0.88*time) + 0.13*cos(0.7*time);
+per_frame_3=dx = dx + 0.04*sin(1.24*time);
+per_frame_4=dy = dy + 0.04*sin(1.12*time);
+per_frame_5=wave_r = wave_r + 0.35*sin(1.13*time) + 0.1245*sin(2.34*time);
+per_frame_6=wave_g = wave_g + 0.35*sin(1.23*time) + 0.12*sin(2.134*time);
+per_frame_7=wave_b = wave_b + 0.35*sin(1.33*time) + 0.12*sin(2.5*time);
+per_frame_8=wave_mystery = wave_mystery + 0.00*sin(time);
+per_frame_9=turn = above(bass_att,turn)*2 + (1-above(bass_att,turn))*((turn-1.3)*0.96+1.3);
+per_frame_10=turnr = equal(turn,2)*0.089*sin(time*6.6) + (1-equal(turn,2))*turnr;
+per_frame_11=simp = simp * 0.35*sin(1.2*time) - 0.62*sin(0.7*time) + 1.5*sin(turn);
+per_frame_12=rot = rot + 1.05*((0.25*simp)*10*turnr);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Airhandler (Menagerie Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Airhandler (Menagerie Mix).milk
new file mode 100644
index 00000000..b918ff2a
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Airhandler (Menagerie Mix).milk
@@ -0,0 +1,77 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.700000
+fDecay=0.990000
+fVideoEchoZoom=0.999600
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=1
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=1.053726
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999513
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010100
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.900000
+ib_size=0.005000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.900000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.5*sin(time*1.13);
+per_frame_2=wave_g = wave_g + 0.5*sin(time*1.23);
+per_frame_3=wave_b = wave_b + 0.5*sin(time*1.33);
+per_frame_4=
+per_frame_5=wave_x = wave_x + 0.05*sin(time);
+per_frame_6=wave_y = wave_y + 0.05*cos(time);
+per_frame_7=
+per_frame_8=ib_r = ib_r + 0.25*sin(time);
+per_frame_9=ib_g = ib_g + 0.25*cos(time);
+per_frame_10=ib_b = ib_b + 0.25*sin(0.5*time);
+per_pixel_1=zoom = zoom + 0.05*(sin(abs(50*sin(0.1*time))*rad) * sin(sin(time*2*sin(24*ang)*-rad))*3 * cos(rad));
+per_pixel_2=rot = rot + 0.1*sin(0.2+ 0.5*sin(time)-rad);
+per_pixel_3=cx = cx + 1.1*(0.99*(0.5-rad))*sin(0.733*time)*below(sin(time),cos(time));
+per_pixel_4=cy = cy + 1.1*(0.99*(0.5-rad))*cos(0.953*time)*above(sin(time),cos(0.5*time));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Airs (Windy Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Airs (Windy Mix).milk
new file mode 100644
index 00000000..7d9c2ee5
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Airs (Windy Mix).milk
@@ -0,0 +1,82 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.220183
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=3
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.241455
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.004500
+ob_r=1.000000
+ob_g=0.800000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.500000
+nMotionVectorsX=3.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=0.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.35*sin(1.4*time) + 0.15*sin(1.5*time);
+per_frame_2=wave_g = wave_g + 0.35*sin(1.7*time) + 0.15*sin(2.11*time);
+per_frame_3=wave_b = wave_b + 0.35*sin(1.84*time) + 0.15*sin(2.3*time);
+per_frame_4=
+per_frame_5=ib_r = wave_g;
+per_frame_6=ib_g = wave_b;
+per_frame_7=ib_b = wave_r;
+per_frame_8=ob_r = wave_b;
+per_frame_9=ob_g = wave_r;
+per_frame_10=ob_b = wave_g;
+per_pixel_1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=
+per_pixel_5=randomize = sin(time) - 0.75*cos(1.52*time) + 1.52*sin(5.5*time) - rand(2);
+per_pixel_6=dx = dx + 0.07*pow(rad,x*2)*sin(time) + dx_r*1.75*sin(0.25-rad*randomize);
+per_pixel_7=dy = dy + 0.07*pow(rad,x*2)*cos(time) + dy_r*1.75*sin(0.25-rad*randomize);
+per_pixel_8=zoom = zoom - 0.1*pow(rad,x*0.6 + y*0.6)*cos(rad*randomize)*2*sin(time);
+per_pixel_9=rot = rot - 0.25*(0.75*sin(1.25*time)*pow(rad,x)*sin(1.45*time))*sin(time);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Anchorpulse (Pulse Of A Ghast II Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Anchorpulse (Pulse Of A Ghast II Mix).milk
new file mode 100644
index 00000000..ef825765
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Anchorpulse (Pulse Of A Ghast II Mix).milk
@@ -0,0 +1,84 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.700000
+fDecay=0.990000
+fVideoEchoZoom=0.451116
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=5
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.535239
+fWaveSmoothing=0.000000
+fWaveParam=-0.800000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.005000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.25*sin(1.4*time) + 0.25*sin(2.25*time);
+per_frame_2=wave_g = wave_g + 0.25*sin(1.7*time) + 0.25*sin(2.11*time);
+per_frame_3=wave_b = wave_b + 0.25*sin(1.84*time) + 0.25*sin(2.3*time);
+per_frame_4=warp = 0;
+per_frame_5=
+per_frame_6=ob_r = wave_b;
+per_frame_7=ob_g = wave_r;
+per_frame_8=ob_b = wave_g;
+per_pixel_1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=
+per_pixel_5=orb = ((0.5 - 0.5*sin(12*(sin(rad*time+ang))*(ang*time+rad)*time+rad))-2*rad);
+per_pixel_6=
+per_pixel_7=zoom = zoom + 0.1*sin(0.6*cos(0.33*(0.6*sin(1.52*time)*orb + (orb*0.8*cos(2.2*time))+ ((cos(orb))*0.7*sin(time)))))*(above(zoom,0.3)*0);
+per_pixel_8=
+per_pixel_9=sx = sx + (orb)*0.2*abs((above(sin(1.2*time),0))*sin(0.8*time));
+per_pixel_10=sy = sy + (-orb)*0.2*abs((below(sin(1.45*time),0))*cos(0.63*time));
+per_pixel_11=
+per_pixel_12=dx = dx + 2*dx_r;
+per_pixel_13=dy = dy+ 2*dy_r;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Anchorpulse (Verified Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Anchorpulse (Verified Mix).milk
new file mode 100644
index 00000000..8d60b5d4
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Anchorpulse (Verified Mix).milk
@@ -0,0 +1,80 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=0.950000
+fVideoEchoZoom=1.347848
+fVideoEchoAlpha=0.600000
+nVideoEchoOrientation=0
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.266718
+fWaveSmoothing=0.500000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.25*sin(1.4*time) + 0.25*sin(2.25*time);
+per_frame_2=wave_g = wave_g + 0.25*sin(1.7*time) + 0.25*sin(2.11*time);
+per_frame_3=wave_b = wave_b + 0.25*sin(1.84*time) + 0.25*sin(2.3*time);
+per_frame_4=warp = 0;
+per_pixel_1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=
+per_pixel_5=orb = (0.05 + 0.25*sin(0.6*time + 0.62*cos(time))-(0.5/rad));
+per_pixel_6=
+per_pixel_7=zoom = zoom + (bass_att)*abs(0.33*(0.6*sin(1.52*time)*(0.25-rad) + ((0.5-rad)*0.8*cos(2.2*time))+ ((2*orb+(2-rad))*0.7*sin(time))))*0.4;
+per_pixel_8=
+per_pixel_9=sx = sx + (0.5-rad)*0.2*abs((above(sin(time),0))*sin(time));
+per_pixel_10=sy = sy + (0.5-rad)*0.2*abs((below(sin(time),0))*cos(time));
+per_pixel_11=
+per_pixel_12=dx = dx + dx_r;
+per_pixel_13=dy = dy+ dy_r;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Anomalous Material Science (Pure Splinter Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Anomalous Material Science (Pure Splinter Mix).milk
new file mode 100644
index 00000000..8b97981d
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Anomalous Material Science (Pure Splinter Mix).milk
@@ -0,0 +1,77 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.490000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.972362
+fWaveSmoothing=0.500000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=0.999998
+fShader=0.000000
+zoom=0.999998
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.050000
+mv_r=0.000000
+mv_g=0.000000
+mv_b=0.800000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.4*(0.25*sin(1.4*time)) + 0.25*sin(7.25*time);
+per_frame_2=wave_g = wave_g + 0.34*(0.25*sin(1.7*time)) + 0.25*sin(6.11*time);
+per_frame_3=wave_b = wave_b + 0.3*(0.25*sin(1.84*time)) + 0.25*sin(9.3*time);
+per_frame_4=warp = 0;
+per_pixel_1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=dx_r = equal(thresh,2)*0.025*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.025*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=
+per_pixel_5=dx = dx + dx_r*(above(x,0.45+0.45*sin(1.5*time))*below(x,0.55+0.45*sin(1.5*time)));
+per_pixel_6=dy = dy + dy_r*(above(y,0.45+0.45*cos(1.25*time))*below(y,0.55+0.45*cos(1.25*time)));
+per_pixel_7=cx = cx + bass*(above(x,0.35+0.45*sin(1.05*time))*below(x,0.65+0.45*sin(1.05*time)));
+per_pixel_8=cy = cy + bass*(above(y,0.35+0.45*cos(1.75*time))*below(y,0.65+0.45*cos(1.75*time)));
+per_pixel_9=rot = rot + 0.15*((0.43*rad)*(5*cos(dx*dy-bass_att+(0.5-rad))*2-rad))*abs(0.5*(2*sin(0.2*time)));
+per_pixel_10=zoom = zoom - 0.02*(abs(cos(12*ang))+0.4*rad);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Antidote (Aqualung Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Antidote (Aqualung Mix).milk
new file mode 100644
index 00000000..7a009c00
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Antidote (Aqualung Mix).milk
@@ -0,0 +1,81 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=0.999837
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=5
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=1.599171
+fWaveSmoothing=0.900000
+fWaveParam=1.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=20.009382
+fWarpScale=5.427911
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.100000
+wave_b=1.000000
+wave_x=0.400000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.000000
+ib_g=1.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=6.400000
+nMotionVectorsY=4.800000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.35*sin(4*time) + 0.15*sin(2.5*time);
+per_frame_2=wave_g = wave_g + 0.35*sin(3.7*time) + 0.15*sin(2.11*time);
+per_frame_3=wave_b = wave_b + 0.35*sin(3.84*time) + 0.15*sin(2.3*time);
+per_frame_4=//wave_y = wave_y + 0.24*sin(2.5*time);
+per_frame_5=wave_x = 0.5 + 0.25*sin(time);
+per_frame_6=wave_y = 0.5 + 0.25*cos(time);
+per_frame_7=ib_r = above(sin(0.2*time),-0.333)*1*below(sin(0.2*time),0.333);
+per_frame_8=ib_g = below(sin(0.2*time),-0.333)*1;
+per_frame_9=ib_b = above(sin(0.2*time),0.333)*1;
+per_pixel_1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=dy = dy + 0.001;
+per_pixel_5=//warp = warp + dy_r*50* (if (above(x*cos(1.2*time), sin(1.62*time)), if(below(x*sin(1.72*time),cos(1.8*time)), if(below(y,sin(3*time)), + 1*bass, 0), 0), 0));
+per_pixel_6=rot = rot + 0.4*(1-rad)*0.5*sin(70*dy_r+dx_r*60);
+per_pixel_7=zoom = zoom + 0.01*(1-rad*2)*0.03*(0.5-rad*0.1*sin(time));
+per_pixel_8=dy = dy + (0.005*sin(cos(x*time)*1.76*sin(0.52*time*cos(max(0.075*bass_att,0.0005*time)))));
+per_pixel_9=dx = dx + (0.005*cos(sin(y*time)*1.54*sin(0.79*time*sin(max(0.075*treb_att,0.0005*time)))));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Antidote (Side Effects Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Antidote (Side Effects Mix).milk
new file mode 100644
index 00000000..3758912f
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Antidote (Side Effects Mix).milk
@@ -0,0 +1,79 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=5.427025
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=6
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.972360
+fWaveSmoothing=0.500000
+fWaveParam=1.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=0.010000
+fWarpScale=1.766487
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.400000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=6.400000
+nMotionVectorsY=4.800000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.35*sin(1.4*time) + 0.15*sin(2.5*time+2*mid);
+per_frame_2=wave_g = wave_g + 0.35*sin(1.7*time) + 0.15*sin(2.11*time+2.2*treb);
+per_frame_3=wave_b = wave_b + 0.35*sin(1.84*time) + 0.15*sin(2.3*time+2*bass);
+per_frame_4=//wave_y = wave_y + 0.24*sin(2.5*time);
+per_frame_5=wave_x = 0.75 + 0.45*sin(sin(0.5*bass_att-0.4*treb_att)*sin(time));
+per_frame_6=//warp = warp + (0.8*bass_att - 0.8*treb_att)*0.25;
+per_pixel_1=//thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=//dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=//dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=
+per_pixel_5=//warp = warp + dy_r*50* (if (above(x*cos(1.2*time), sin(1.62*time)), if(below(x*sin(1.72*time),cos(1.8*time)), if(below(y,sin(3*time)), + 1*bass, 0), 0), 0));
+per_pixel_6=
+per_pixel_7=dy = dy + (0.004*sin(cos(x*2.25*time)*0.86*sin(0.52*time*cos(max(0.075*bass_att,0.0005*time)))));
+per_pixel_8=dx = dx + (0.004*cos(sin(y*2.25*time)*0.94*sin(0.79*time*sin(max(0.075*treb_att,0.0005*time)))));
+per_pixel_9=dy = dy - sin((1+x)*time*0.94)*(0.005*above(y,sin(1.14*time+0.02*treb_att)));
+per_pixel_10=dx = dx + sin((0.25-y)*time*0.97)*(0.005*above(x,cos(1.2*time+0.02*bass_att)));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Antidote.milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Antidote.milk
new file mode 100644
index 00000000..a7ff1eb7
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Antidote.milk
@@ -0,0 +1,76 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=0.999837
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=6
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.972360
+fWaveSmoothing=0.500000
+fWaveParam=1.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=20.009382
+fWarpScale=5.427911
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.400000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=6.400000
+nMotionVectorsY=4.800000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.35*sin(4*time) + 0.15*sin(2.5*time);
+per_frame_2=wave_g = wave_g + 0.35*sin(3.7*time) + 0.15*sin(2.11*time);
+per_frame_3=wave_b = wave_b + 0.35*sin(3.84*time) + 0.15*sin(2.3*time);
+per_frame_4=//wave_y = wave_y + 0.24*sin(2.5*time);
+per_frame_5=wave_x = 0.5 + 0.15*sin(time);
+per_pixel_1=//thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=//dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=//dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=
+per_pixel_5=//warp = warp + dy_r*50* (if (above(x*cos(1.2*time), sin(1.62*time)), if(below(x*sin(1.72*time),cos(1.8*time)), if(below(y,sin(3*time)), + 1*bass, 0), 0), 0));
+per_pixel_6=
+per_pixel_7=dy = dy + (0.005*sin(cos(x*time)*1.76*sin(0.52*time*cos(max(0.075*bass_att,0.0005*time)))));
+per_pixel_8=dx = dx + (0.005*cos(sin(y*time)*1.54*sin(0.79*time*sin(max(0.075*treb_att,0.0005*time)))));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Antique Abyss.milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Antique Abyss.milk
new file mode 100644
index 00000000..e2b93bf5
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Antique Abyss.milk
@@ -0,0 +1,79 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.700000
+fDecay=0.980000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=7
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=2.000454
+fWaveSmoothing=0.540000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.700000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.300000
+ob_a=0.200000
+ib_size=0.050000
+ib_r=0.000000
+ib_g=0.200000
+ib_b=0.300000
+ib_a=0.100000
+nMotionVectorsX=25.599995
+nMotionVectorsY=33.600002
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=0.300000
+mv_g=0.000000
+mv_b=0.000000
+mv_a=0.150000
+per_frame_1=wave_r = wave_r + (0.35*sin(1.4*time*bass) + 0.25*sin(2.5*time))*4*treb*time;
+per_frame_2=wave_g = wave_g + (0.35*sin(1.7*time*mid) - 0.25*sin(1.11*time))*4*bass*time;
+per_frame_3=wave_b = wave_b + (0.35*sin(1.84*time*treb) + 0.25*sin(2.3*time))*4*mid*time;
+per_frame_4=warp = 0;
+per_frame_5=mv_g = 0.3 + 0.25*sin(wave_r);
+per_frame_6=mv_r = 0.3 + 0.25*cos(wave_b);
+per_frame_7=mv_b = 0.3 + 0.15*sin(wave_g);
+per_frame_8=mv_x = mv_x - 3*bass;
+per_frame_9=mv_y = mv_y - 4*treb;
+per_pixel_1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=zoom = zoom - 0.26*rad*(0.7+0.1*sin(4*bass*time)-rad);
+per_pixel_5=dy= dy + 1.99*dy_r*(rad*sin(5*treb_att))*(1-rad);
+per_pixel_6=dx = dx + 1.5*dx_r *(rad*cos(5*bass_att))*(0.6*rad-0.7-rad);
+per_pixel_7=rot = rot + abs(0.8*(0.7*sin(bass*treb)*x-0.033*cos(ang))*(1-rad));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Arise! (Padded Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Arise! (Padded Mix).milk
new file mode 100644
index 00000000..9a98e79e
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Arise! (Padded Mix).milk
@@ -0,0 +1,80 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.350000
+fDecay=1.000000
+fVideoEchoZoom=1.503739
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=6
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=2.905225
+fWaveSmoothing=0.360000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=0.408391
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.25*sin(1.4*time) + 0.25*sin(2.25*time);
+per_frame_2=wave_g = wave_g + 0.25*sin(1.7*time) + 0.25*sin(2.11*time);
+per_frame_3=wave_b = wave_b + 0.25*sin(1.84*time) + 0.25*sin(2.3*time);
+per_frame_4=warp = 0;
+per_frame_5=//decay = 0.995 + 0.004*sin(0.5*time);
+per_frame_6=wave_x = 0.01;
+per_pixel_1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=
+per_pixel_5=dy = dy - 0.025*(1-y)*above(y,0.95);
+per_pixel_6=dy = dy - 0.025*(y)*below(y,0.94);
+per_pixel_7=
+per_pixel_8=warp = warp + 0.25*(bass-treb)*above(y,0.9);
+per_pixel_9=zoom = zoom - 0.02*(rad)*(above(y,0.9));
+per_pixel_10=sx = sx - above(x, 0.35 + 0.35*sin(time))*below(x,0.65 + 0.35*sin(time))*
+per_pixel_11=above(y,0.8)*0.008*sin(time);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Ashes Of Air (Remix).milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Ashes Of Air (Remix).milk
new file mode 100644
index 00000000..ed1777b7
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Ashes Of Air (Remix).milk
@@ -0,0 +1,70 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.001000
+fDecay=1.000000
+fVideoEchoZoom=1.469141
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=5
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.386134
+fWaveScale=1.568857
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999513
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010100
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.800000
+ib_size=0.000000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.5*sin(time*1.13);
+per_frame_2=wave_g = wave_g + 0.5*sin(time*1.23);
+per_frame_3=wave_b = wave_b + 0.5*sin(time*1.33);
+per_pixel_1=zoom = zoom + 0.25*(0.05*bass_att + sin(sin(time+rad))*0.3 - cos(rad)*0.1);
+per_pixel_2=rot = 0.06*sin(rad);
+per_pixel_3=dx = dx + 0.008*(0.99*1-rad)*sin(0.733*time);
+per_pixel_4=dy = dy + 0.008*(0.99*1-rad)*cos(0.953*time);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Bitterfeld (Crystal Border Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Bitterfeld (Crystal Border Mix).milk
new file mode 100644
index 00000000..79a2f22d
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Bitterfeld (Crystal Border Mix).milk
@@ -0,0 +1,80 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=2.448626
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=1.310603
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=0.999900
+fShader=0.000000
+zoom=0.999999
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.050000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.200000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=0.600000
+mv_b=0.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.25*sin(1.4*time) + 0.25*sin(2.25*time);
+per_frame_2=wave_g = wave_g + 0.25*sin(1.7*time) + 0.25*sin(2.11*time);
+per_frame_3=wave_b = wave_b + 0.25*sin(1.84*time) + 0.25*sin(2.3*time);
+per_frame_4=warp = 0;
+per_frame_5=ib_r =wave_r;
+per_frame_6=ib_g = wave_g;
+per_frame_7=ib_b = wave_b;
+per_frame_8=wave_mystery = wave_mystery + 0.3*time;
+per_pixel_1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=
+per_pixel_5=zoom = zoom - 0.2*(1.5-rad)*sin(bass/2*treb_att)*(rad*2*(rad*abs(sin(9*ang))));
+per_pixel_6=rot = rot + dy_r*(2-zoom)*0.3*cos(bass)*20;
+per_pixel_7=rot = rot - 0.4*(rad*cos(abs(12*ang)))*below(rad,0.3+ 0.4*sin(bass));
+per_pixel_8=dx = dx + 0.5*abs(rad+x-0.5*(bass/y*0.2))*dx_r;
+per_pixel_9=dy = dy + 0.5*abs(rad+y-0.5*(treb/x*0.2))*dy_r;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Blender.milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Blender.milk
new file mode 100644
index 00000000..806b4c12
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Blender.milk
@@ -0,0 +1,73 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.980000
+fVideoEchoZoom=0.999997
+fVideoEchoAlpha=0.400000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=3.915820
+fWaveSmoothing=0.500000
+fWaveParam=-0.400000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=1.000000
+wave_b=1.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=1.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=1.000000
+ib_g=1.000000
+ib_b=1.000000
+ib_a=1.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_x = wave_x + 0.15*sin(time);
+per_frame_2=wave_y = wave_y + 0.15*cos(time);
+per_frame_3=wave_r = wave_r + 0.9;
+per_frame_4=wave_g = 0.9 - 0.5*bass;
+per_frame_5=wave_b = 0.9 - 0.5*bass;
+per_pixel_1=rot = rot - 0.1*min((2-rad)*bass_att,(2-rad)*treb_att);
+per_pixel_2=grad = sqrt(x*x + y*y)*2;
+per_pixel_3=dx = dx - 0.02*(1-rad);
+per_pixel_4=dy = dy + 0.02*(1-rad);
+per_pixel_5=zoom = zoom - max(grad*(bass/8 - treb/8), 0);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Bow To Gravity.milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Bow To Gravity.milk
new file mode 100644
index 00000000..9eb205a5
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Bow To Gravity.milk
@@ -0,0 +1,85 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=0.930000
+fVideoEchoZoom=0.999837
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=6
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.796896
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=0.999995
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.500000
+ib_size=0.010000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.500000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.25*sin(1.4*time) + 0.25*sin(2.25*time);
+per_frame_2=wave_g = wave_g + 0.25*sin(1.7*time) + 0.25*sin(2.11*time);
+per_frame_3=wave_b = wave_b + 0.25*sin(1.84*time) + 0.25*sin(2.3*time);
+per_frame_4=warp = 0;
+per_frame_5=ob_r = 0.5*wave_r;
+per_frame_6=ob_b = 0.5*wave_g;
+per_frame_7=ob_g = 0.5*wave_b;
+per_frame_8=ib_r = wave_g;
+per_frame_9=ib_g = wave_b;
+per_frame_10=ib_b = wave_r;
+per_frame_11=wave_mystery = wave_mystery + 25*sin(3-1*(sin(0.001*time)));
+per_pixel_1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=dx = dx + above(x,0.5)*x*0.005;
+per_pixel_5=dx = dx - below(x,0.5)*(1-x)*0.005;
+per_pixel_6=dy = dy + above(y,0.5)*y*0.005;
+per_pixel_7=dy = dy + below(y,0.5)*(1-y)*0.005;
+per_pixel_8=zoom = zoom - 100*((1-rad)*((1.5*rad)*0.005 + 0.004*sin(0.5*bass_att)));
+per_pixel_9=
+per_pixel_10=rot = rot + (cos(bass_att*treb_att)/(1-treb)+0.5*time)*0.0005;
+per_pixel_11=zoomexp = 0.8 + 1+sin(treb_att);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Brakefreak.milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Brakefreak.milk
new file mode 100644
index 00000000..506a3e3a
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Brakefreak.milk
@@ -0,0 +1,81 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=0.980000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.880270
+fWaveSmoothing=0.500000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.020000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=1.000000
+ob_a=1.000000
+ib_size=0.020000
+ib_r=1.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.25*sin(1.4*time) + 0.25*sin(2.25*time);
+per_frame_2=wave_g = wave_g + 0.25*sin(1.7*time) + 0.25*sin(2.11*time);
+per_frame_3=wave_b = wave_b + 0.25*sin(1.84*time) + 0.25*sin(2.3*time);
+per_frame_4=ib_r = wave_r*0.5;
+per_frame_5=ib_g = wave_g*0.5;
+per_frame_6=ib_b = wave_b*0.5;
+per_frame_7=ob_r = wave_b;
+per_frame_8=ob_g = wave_r;
+per_frame_9=ob_b = wave_g;
+per_pixel_1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=
+per_pixel_5=rot = rot + 0.06*(0.1*(time))+(0.5*(0.5-rad))+rad;
+per_pixel_6=rot = rot - 0.1*sqr(0.5*cos(ang*time)*bass_att);
+per_pixel_7=zoom = zoom - 0.04*(sin(rad));
+per_pixel_8=zoom = zoom - 0.1*above(y,0.5)*sqr(0.5*sin(ang*time)*bass_att);
+per_pixel_9=zoom = zoom - 0.1*below(y,0.5)*sqr(0.5*cos(ang*time)*treb_att);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Candy Avian.milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Candy Avian.milk
new file mode 100644
index 00000000..88082ba2
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Candy Avian.milk
@@ -0,0 +1,81 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=0.923483
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=5
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=2.063785
+fWaveScale=0.724297
+fWaveSmoothing=0.500000
+fWaveParam=-0.300000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=2.500333
+fZoomExponent=1.000000
+fShader=0.100000
+zoom=0.990099
+rot=0.000000
+cx=0.500000
+cy=0.410000
+dx=-0.003990
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=1.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.200000
+ib_size=0.050000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.100000
+nMotionVectorsX=55.680000
+nMotionVectorsY=47.999996
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.250000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.4*sin(1.5*time) + 0.25*sin(2.14*time);
+per_frame_2=wave_b = wave_b + 0.41*sin(1.2*time) + 0.26*sin(2.11*time);
+per_frame_3=wave_g = wave_g + 0.4*sin(1.34*time) + 0.25*sin(2.34*time);
+per_frame_4=ib_r = 4;
+per_frame_5=ib_g = 0;
+per_frame_6=ib_b = 0;
+per_frame_7=wave_x = wave_x +
+per_frame_8=if(above(wave_y,0.75),0.40*sin(time), 0.15*sin(time));
+per_frame_9=wave_y = wave_y + 0.30*cos(0.9*time);
+per_frame_10=cx = cx +
+per_frame_11=if(above(wave_x,0.5), +0.0*sin(7*treb_att), -0.0*sin(7*mid_att));
+per_frame_12=cy = cy +
+per_frame_13=if(above(wave_x,0.5), +0.0*cos(7*bass_att), -0.0*cos(7*mid_att));
+per_frame_14=ob_r = 0.5*sin(treb)*time;
+per_frame_15=ob_b = 0.5*sin(mid)*0.9*time;
+per_frame_16=ob_g = 0.5*sin(bass)*0.8*time;
+per_frame_17=warp = warp + if (above(bass_att,1.5), 1.5, 0);
+per_frame_18=rot = rot + 0.08*sin(3*time);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Causeway Of Dreams (Nightmare Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Causeway Of Dreams (Nightmare Mix).milk
new file mode 100644
index 00000000..1b9a1944
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Causeway Of Dreams (Nightmare Mix).milk
@@ -0,0 +1,88 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=2.006758
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=1
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=1
+bSolarize=0
+bInvert=1
+fWaveAlpha=100.000000
+fWaveScale=0.999835
+fWaveSmoothing=0.500000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=1.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.010000
+ib_size=0.005000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=1.000000
+ib_a=0.010000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=basstrip = above(bass_att,basstrip)*2 + (1-above(bass_att,basstrip))*((basstrip-1.3)*0.96+1.3);
+per_frame_2=basswack = equal(basstrip,2)*0.97*sin(time*2) + (1-equal(basstrip,2))*basswack;
+per_frame_3=trebtrip = above(treb_att,trebtrip)*2 + (1-above(treb_att,trebtrip))*((trebtrip-1.3)*0.96+1.3);
+per_frame_4=trebwack = equal(trebtrip,2)*0.97*sin(time*2.5) + (1-equal(trebtrip,2))*trebwack;
+per_frame_5=midtrip = above(mid_att,midtrip)*2 + (1-above(mid_att,midtrip))*((midtrip-1.3)*0.96+1.3);
+per_frame_6=midwack = equal(midtrip,2)*0.97*sin(time*2.75) + (1-equal(midtrip,2))*midwack;
+per_frame_7=wave_r = wave_r + 0.75*basswack;
+per_frame_8=wave_g = wave_g + 0.75*trebwack;
+per_frame_9=wave_b = wave_b + 0.75*midwack;
+per_frame_10=ob_r = 1- wave_r;
+per_frame_11=ob_g = 1 - wave_g;
+per_frame_12=ob_b = 1-wave_b;
+per_frame_13=ib_r = 0.9*ob_r;
+per_frame_14=ib_g = 0.9*ob_g;
+per_frame_15=ib_b = 0.9*ob_b;
+per_frame_16=volt = (bass_att+treb_att+mid_att)/3;
+per_frame_17=zoom = zoom - 0.005;
+per_frame_18=zoom = zoom + if (above(volt,0.75),- 0.005*(1-rad), 0);
+per_frame_19=sy = sy + if (below(volt,0.83), - 0.01*(0.5-rad), 0);
+per_pixel_1=//thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=//dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=//dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=rot = rot + 0.05*sin(time*(rad*cos(time*12*ang)));
+per_pixel_5=zoom = zoom + 0.025*cos(time*(0.5-rad));
+per_pixel_6=rot = rot - 0.05*((sin(time)-rad)*(0.9+abs(sin(rad*12))));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Causeway Of Dreams (REMix).milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Causeway Of Dreams (REMix).milk
new file mode 100644
index 00000000..dbfe5efd
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Causeway Of Dreams (REMix).milk
@@ -0,0 +1,81 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=1
+nWaveMode=1
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.400279
+fWaveSmoothing=0.500000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.200000
+wave_g=0.200000
+wave_b=0.200000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.030000
+ob_r=1.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.100000
+ib_size=0.030000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=1.000000
+ib_a=0.100000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.4*sin(0.622*time) + 0.3*sin(0.155*time);
+per_frame_2=wave_g = wave_g + 0.4*sin(0.45*time) + 0.3*sin(0.674*time);
+per_frame_3=wave_b = wave_b + 0.4*sin(0.256*time) + 0.3*sin(0.35*time);
+per_frame_4=ob_r = 1- wave_r;
+per_frame_5=ob_g = 1 - wave_g;
+per_frame_6=ob_b = 1-wave_b;
+per_frame_7=ib_r = 0.9*ob_r;
+per_frame_8=ib_g = 0.9*ob_g;
+per_frame_9=ib_b = 0.9*ob_b;
+per_frame_10=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_frame_11=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_frame_12=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_frame_13=dx = dx + 0.0*dx_r + if(above(gup,0), + 0.8*gup*dx_r, 0) + if(above(gslup,0), + 0.535*gslup*dx_r, 0);
+per_frame_14=dy = dy + 0.0*dy_r + if(above(gup,0), + 0.8*gup*dy_r, 0) + if(above(glsup,0), + 0.535*gslup*dy_r, 0);
+per_frame_15=gup = +2*sin(time) + sin(0.75*time);
+per_frame_16=gslup = sin(0.655*time) - sin(0.176*time);
+per_pixel_1=rot = rot + 0.04*sin(time*(rad));
+per_pixel_2=zoom = zoom + 0.025*cos(time*(rad));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Causeway Of Dreams.milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Causeway Of Dreams.milk
new file mode 100644
index 00000000..9d834ee5
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Causeway Of Dreams.milk
@@ -0,0 +1,79 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=1
+nWaveMode=1
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.325446
+fWaveSmoothing=0.500000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.200000
+wave_g=0.200000
+wave_b=0.200000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.030000
+ob_r=1.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.100000
+ib_size=0.030000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=1.000000
+ib_a=0.100000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.4*sin(0.622*time) + 0.3*sin(0.155*time);
+per_frame_2=wave_g = wave_g + 0.4*sin(0.45*time) + 0.3*sin(0.674*time);
+per_frame_3=wave_b = wave_b + 0.4*sin(0.256*time) + 0.3*sin(0.35*time);
+per_frame_4=ob_r = 1- wave_r;
+per_frame_5=ob_g = 1 - wave_g;
+per_frame_6=ob_b = 1-wave_b;
+per_frame_7=ib_r = 0.9*ob_r;
+per_frame_8=ib_g = 0.9*ob_g;
+per_frame_9=ib_b = 0.9*ob_b;
+per_frame_10=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_frame_11=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_frame_12=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_frame_13=dx = dx + dx_r;
+per_frame_14=dy = dy + dy_r;
+per_pixel_1=rot = rot + 0.04*sin(time*(rad));
+per_pixel_2=zoom = zoom + 0.025*cos(time*(rad));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Chromatic Abyss (The Other Side).milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Chromatic Abyss (The Other Side).milk
new file mode 100644
index 00000000..41013867
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Chromatic Abyss (The Other Side).milk
@@ -0,0 +1,70 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.868317
+fWaveScale=0.484545
+fWaveSmoothing=0.000000
+fWaveParam=-0.500000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=0.010000
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.250000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + (0.5*sin(12*treb)*3.12*time)/5;
+per_frame_2=wave_b = wave_b + (0.5*sin(12*bass)*3.17*time)/5;
+per_frame_3=wave_g =wave_g + (0.5*sin(12*mid)*3.22*time)/5;
+per_frame_4=zoom = zoom + 0.01;
+per_pixel_1=sx = sx + if (above(rad, 0.38), +0.01, 0);
+per_pixel_2=sy = sy + if (above(rad, 0.38), +0.01, 0);
+per_pixel_3=warp = warp + if (above(rad,0.56 + 0.05*sin(time)), +0.5*(sin(rad)), 0);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Circlefacade.milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Circlefacade.milk
new file mode 100644
index 00000000..2a84c3d1
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Circlefacade.milk
@@ -0,0 +1,73 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.220186
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.459160
+fWaveScale=0.010000
+fWaveSmoothing=0.900000
+fWaveParam=-0.340000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=1.000000
+wave_b=1.000000
+wave_x=0.100000
+wave_y=0.900000
+ob_size=0.070000
+ob_r=1.000000
+ob_g=1.000000
+ob_b=1.000000
+ob_a=0.100000
+ib_size=0.010000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_x = 0.5 + 0.3*sin(0.75*time);
+per_frame_2=wave_y = 0.5 + 0.3*cos(0.75*time);
+per_frame_3=ob_r = ob_r + 0.445*sin(1.52*time);
+per_frame_4=ob_g = ob_g + 0.436*sin(1.062*time);
+per_frame_5=ob_b = ob_b + 0.325*sin(1.22*time);
+per_frame_6=ib_a = ib_a + 5*tan(0.5*time);
+per_frame_7=zoom = zoom - 0.1*zoom;
+per_pixel_1=dx = dx + (sin(rad)*0.05)*0.76*sin(1.2255*time);
+per_pixel_2=dy = dy + (sin(rad)*0.05)*0.76*cos(1.435*time);
+per_pixel_3=rot = rot + (0.1*max(above(dx,dy),above(dy,dx))*bass_att)*(0.75-rad);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Contortion (Xenomorph Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Contortion (Xenomorph Mix).milk
new file mode 100644
index 00000000..6c1f3210
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Contortion (Xenomorph Mix).milk
@@ -0,0 +1,84 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.301000
+fDecay=1.000000
+fVideoEchoZoom=0.999996
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=5
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=5.003415
+fWaveScale=2.630066
+fWaveSmoothing=0.900000
+fWaveParam=-0.400000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=100.000000
+fWarpScale=0.010000
+fZoomExponent=11.202057
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=63.936001
+nMotionVectorsY=47.952000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.050000
+mv_r=0.000000
+mv_g=0.000000
+mv_b=0.800000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.25*sin(1.4*time) + 0.25*sin(2.25*time);
+per_frame_2=wave_g = wave_g + 0.25*sin(1.7*time) + 0.25*sin(2.11*time);
+per_frame_3=wave_b = wave_b + 0.25*sin(1.84*time) + 0.25*sin(2.3*time);
+per_frame_4=warp = 0;
+per_frame_5=ob_r = 0.3 + 0.3*sin(1.56*time);
+per_frame_6=ob_g = 0.3 + 0.3*sin(2.15*time);
+per_frame_7=ob_b = 0.3 + 0.3*cos(1.4*time);
+per_frame_8=ib_r = 0.3 + 0.3*cos(1.83*time);
+per_frame_9=ib_g = 0.3 + 0.3*cos(1.02*time);
+per_frame_10=ib_b = 0.3 + 0.3*sin(2*time);
+per_frame_11=ing = 2*sin(0.25*time);
+per_frame_12=wave_x = wave_x + 0.2*sin(time);
+per_frame_13=wave_y = wave_y + 0.2*cos(time);
+per_pixel_1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=
+per_pixel_5=rot = rot + 0.5*(0.5-rad)*(5*sin(0.48*time*dy_r)*sin(time));
+per_pixel_6=zoom = zoom - 0.015*(0.65 - 0.25*sin((dx_r+dy_r)*20*bass)+rad);
+per_pixel_7=cx = cx + .45*sin(time)*(0.75*sin(1.25*time*dy_r)*cos(0.74*sin(dx_r*2*time)));
+per_pixel_8=cy = cy + .45*cos(time)*(0.75*cos(1.6*time*dx_r)*sin(0.74*cos(dy_r*2*time)));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Contortion.milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Contortion.milk
new file mode 100644
index 00000000..9dc61251
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Contortion.milk
@@ -0,0 +1,84 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=0.999996
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=2
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=1.691364
+fWaveSmoothing=0.000000
+fWaveParam=-0.400000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.100000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.200000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.25*sin(1.4*time) + 0.25*sin(2.25*time);
+per_frame_2=wave_g = wave_g + 0.25*sin(1.7*time) + 0.25*sin(2.11*time);
+per_frame_3=wave_b = wave_b + 0.25*sin(1.84*time) + 0.25*sin(2.3*time);
+per_frame_4=warp = 0;
+per_frame_5=ob_r = 0.3 + 0.3*sin(1.56*time);
+per_frame_6=ob_g = 0.3 + 0.3*sin(2.15*time);
+per_frame_7=ob_b = 0.3 + 0.3*cos(1.4*time);
+per_frame_8=ib_r = 0.3 + 0.3*cos(1.83*time);
+per_frame_9=ib_g = 0.3 + 0.3*cos(1.02*time);
+per_frame_10=ib_b = 0.3 + 0.3*sin(2*time);
+per_frame_11=ing = 2*sin(0.25*time);
+per_frame_12=wave_x = wave_x + 0.57*sin(time);
+per_frame_13=wave_y = wave_y + 0.57*cos(time);
+per_pixel_1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=
+per_pixel_5=rot = rot + above(bass,1)*0.25*(1-rad)*(100*dx_r);
+per_pixel_6=zoom = zoom - 0.2*(1-rad);
+per_pixel_7=cx = cx + above(bass,1)*0.25*sin(time)*(100*dy_r);
+per_pixel_8=cy = cy + above(bass,1)*0.25*cos(time)*(100*dy_r);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Crystal Storm.milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Crystal Storm.milk
new file mode 100644
index 00000000..19f17b34
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Crystal Storm.milk
@@ -0,0 +1,72 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.990000
+fVideoEchoZoom=0.649956
+fVideoEchoAlpha=0.300000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=1.691363
+fWaveSmoothing=0.000000
+fWaveParam=-0.500000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=0.931011
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=1.000000
+wave_b=1.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.001000
+ob_r=1.000000
+ob_g=1.000000
+ob_b=1.000000
+ob_a=0.500000
+ib_size=0.001000
+ib_r=0.500000
+ib_g=1.000000
+ib_b=1.000000
+ib_a=0.500000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.050000
+per_frame_1=rot = rot + 0.1*(0.4*sin(bass) - 0.4*sin(treb) / 0.4*sin(mid))*sin(5*time);
+per_frame_2=wave_x = wave_x + 0.1*sin(time) - 0.157*sin(1.73*time);
+per_frame_3=wave_y = wave_y - 0.126*sin(time) + 0.15*cos(1.1*time);
+per_frame_5=zoom = zoom + 0.01*bass*0.005*sqrt(treb/bass);
+per_pixel_1=rot = rot + 0.05*min(abs(1-rad*cos(bass))*tan(bass),-(abs(1-rad*sin(treb))*sin(time)));
+per_pixel_2=dx = dx + (0.025*sin(bass))*0.8*abs(5*bass-5*treb);
+per_pixel_3=dy = dy + (0.015*cos(treb))*0.8*abs(5*treb - 5*bass);
+per_pixel_4=cy = cy + (0.8*rad/time)*bass;
+per_pixel_5=zoom = zoom - 0.05*log(1.5-rad); \ No newline at end of file
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Dark Matter (Converse Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Dark Matter (Converse Mix).milk
new file mode 100644
index 00000000..d2ed71bd
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Dark Matter (Converse Mix).milk
@@ -0,0 +1,80 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=0.990000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=1
+nWaveMode=5
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=1.074098
+fWaveSmoothing=0.500000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=0.451117
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.500000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.25*sin(1.4*time) + 0.25*sin(2.25*time);
+per_frame_2=wave_g = wave_g + 0.25*sin(1.7*time) + 0.25*sin(2.11*time);
+per_frame_3=wave_b = wave_b + 0.25*sin(1.84*time) + 0.25*sin(2.3*time);
+per_frame_4=warp = 0;
+per_frame_5=wave_x = wave_x + 0.12*sin(time);
+per_frame_6=wave_y = wave_y + 0.12*sin(1.24*time);
+per_pixel_1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=
+per_pixel_5=zoom = zoom - abs(0.6*sin(((sin(cos(time)+0.5*sin(1.6*bass)-0.44*cos(1.1*mid))+sin(-rad)))*
+per_pixel_6=(sin(bass)*(0.5-rad))));
+per_pixel_7=zoom = zoom + 0.02*(2-rad);
+per_pixel_8=dx = dx + dx_r;
+per_pixel_9=dy = dy + dy_r;
+per_pixel_10=dx = dx + abs(0.005*(1.2*cos(bass*0.73*time) + 1.2*sin((0.5-rad)*2.1*time)));
+per_pixel_11=dy = dy + abs(0.005*(1.2*sin(bass*0.73*time) + 1.2*cos((0.5-rad)*1.3*time)));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Elastoid.milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Elastoid.milk
new file mode 100644
index 00000000..9eaec2b8
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Elastoid.milk
@@ -0,0 +1,81 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.970000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=1
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.655694
+fWaveSmoothing=0.000000
+fWaveParam=-0.500000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=1.000000
+wave_b=1.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.015000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=1.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.35*sin(4*time) + 0.15*sin(2.5*time);
+per_frame_2=wave_g = wave_g + 0.35*sin(3.7*time) + 0.15*sin(2.11*time);
+per_frame_3=wave_b = wave_b + 0.35*sin(3.84*time) + 0.15*sin(2.3*time);
+per_frame_4=ob_r = wave_r;
+per_frame_5=ob_g = wave_g;
+per_frame_6=ob_b=wave_b;
+per_frame_7=zoom = zoom - 0.02;
+per_pixel_1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=
+per_pixel_5=m1 = 2*sin(1.25*time);
+per_pixel_6=m2 = 1.25*sin(4*time);
+per_pixel_7=m3 = 5*sin(0.33*time);
+per_pixel_8=sx = sx + if (above(m1,m2), if (above(m1,m3), dx_r, -dx_r), dx_r*1.75)*(.75-rad);
+per_pixel_9=sy = sy + if (above(m2,m3), if (above(m3,m1), dy_r, dy_r*1.5), dy_r*0.75)*(.75-rad);
+per_pixel_10=dx = dx + if (above(m2,m1), if (below(m1,m3), dx_r, dx_r*0.66), dx_r*1.8)*(.75-rad);
+per_pixel_11=dy = dy + if (above(m3,m1), if(below(m2,m3), -dy_r, dy_r*1.25), dy_r*0.8)*(0.75-rad);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Floater Society.milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Floater Society.milk
new file mode 100644
index 00000000..218f6cf1
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Floater Society.milk
@@ -0,0 +1,82 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.350000
+fDecay=0.950000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.294621
+fWaveSmoothing=0.500000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.050000
+ob_r=0.200000
+ob_g=0.300000
+ob_b=0.000000
+ob_a=0.100000
+ib_size=0.005000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=1.920000
+nMotionVectorsY=23.999998
+mv_dx=-0.060000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=0.000000
+mv_b=0.000000
+mv_a=1.000000
+per_frame_1=wave_r = wave_r + 0.35*sin(4*time) + 0.25*sin(2.5*time);
+per_frame_2=wave_g = wave_g + 0.35*sin(3.7*time) + 0.25*sin(2.11*time);
+per_frame_3=wave_b = wave_b + 0.35*sin(3.84*time) + 0.25*sin(2.3*time);
+per_frame_4=wave_mystery = sin(time);
+per_frame_5=mv_l = mv_l + 2*sin(time);
+per_frame_6=mv_r = wave_r;
+per_frame_7=mv_g = wave_g;
+per_frame_8=mv_b = wave_b;
+per_frame_9=warp = 0;
+per_frame_10=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_frame_11=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_frame_12=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_frame_13=bass_seek = below(bass_seek,bass) + bass_att - (above(bass_att,bass_seek) -bass);
+per_frame_14=trip = 0.4*bass_seek;
+per_frame_15=dy = dy + dy_r*trip*cos(time);
+per_frame_16=dx = dx + dx_r*trip*sin(time);
+per_frame_17=zoom = zoom - 0.025*trip*thresh;
+per_frame_18=rot = rot + 0.015*trip*thresh;
+per_pixel_1=dy = dy - 0.95-rad*dx;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Flowing Form.milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Flowing Form.milk
new file mode 100644
index 00000000..8d1a11fb
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Flowing Form.milk
@@ -0,0 +1,75 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.920000
+fVideoEchoZoom=1.343302
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=1.611957
+fWaveSmoothing=0.000000
+fWaveParam=0.080000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=0.999834
+fWarpScale=100.000000
+fZoomExponent=1.200114
+fShader=1.000000
+zoom=1.010011
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.020000
+dy=0.020000
+warp=0.059958
+sx=0.999998
+sy=1.000000
+wave_r=0.600000
+wave_g=0.600000
+wave_b=0.300000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.100000
+ob_r=0.500000
+ob_g=0.500000
+ob_b=0.100000
+ob_a=0.500000
+ib_size=0.000000
+ib_r=0.550000
+ib_g=0.250000
+ib_b=0.050000
+ib_a=0.700000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.400*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+per_frame_2=wave_g = wave_g + 0.400*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+per_frame_3=wave_b = wave_b + 0.400*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+per_frame_4=zoom = zoom + 0.023*( 0.60*sin(0.339*time) + 0.40*sin(0.276*time) );
+per_frame_5=rot = rot + 0.030*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_6=decay = decay - 0.01*equal(frame%200,0);
+per_frame_7=ob_r = wave_g;
+per_frame_8=ob_g = wave_b;
+per_frame_9=ob_b = wave_r;
+per_pixel_1=sx=sx+0.5*cos((y*2-1)*6+time*1.53+(x*2-1)*3.2);
+per_pixel_2=sy=sy+0.5*cos((x*2-1)*8+time*1.71+(y*2-1)*4.3);
+per_pixel_3=zoom = zoom - 0.01*ang;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Making Time (Swamp Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Making Time (Swamp Mix).milk
new file mode 100644
index 00000000..25e03b42
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Making Time (Swamp Mix).milk
@@ -0,0 +1,85 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=1
+nWaveMode=5
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=1.599181
+fWaveSmoothing=0.900000
+fWaveParam=-0.200000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=bass_tick = above(bass_att,bass_tick)*2 + (1-above(bass_att,bass_tick))*
+per_frame_2=((bass_tick-1.3)*0.96+1.3);
+per_frame_3=treb_tick = above(treb_att,treb_tick)*2 + (1-above(treb_att,treb_tick))*
+per_frame_4=((treb_tick-1.3)*0.96+1.3);
+per_frame_5=mid_tick = above(mid_att,mid_tick)*2 + (1-above(mid_att,mid_tick))*
+per_frame_6=((mid_tick-1.3)*0.96+1.3);
+per_frame_7=bass_shift = equal(bass_tick,2)*0.95*sin(time*5) + (1-equal(bass_tick,2))*bass_shift;
+per_frame_8=treb_shift = equal(treb_tick,2)*0.95*sin(time*5) + (1-equal(treb_tick,2))*treb_shift;
+per_frame_9=mid_shift = equal(mid_tick,2)*0.95*sin(time*5) + (1-equal(mid_tick,2))*mid_shift;
+per_frame_10=wave_mystery = wave_mystery + 0.15*sin(time) + 0.2*sin(0.2*time);
+per_frame_11=wave_r = wave_r +bass_shift+0.3;
+per_frame_12=wave_g = wave_g+treb_shift;
+per_frame_13=wave_b = wave_b +mid_shift;
+per_pixel_1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=rot = rot + 2*abs((0.9*dy_r)*bass)*sin(0.7*time);
+per_pixel_5=zoom = zoom + 10*(0.2*rad*(3-bass/cos(rad/12)*2*tan(12)))*(0.002*sin(ang*(12*sin(8*bass))));
+per_pixel_6=cx = cx + 0.3*sin(3*dy_r);
+per_pixel_7=cy = cy + 0.3*cos(3*dx_r);
+per_pixel_8=dy = dy + 1.7*dy_r;
+per_pixel_9=dx = dx + 1.7*dx_r;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Multiviola.milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Multiviola.milk
new file mode 100644
index 00000000..4fadfe12
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Multiviola.milk
@@ -0,0 +1,76 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=0.999998
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.010000
+fWaveSmoothing=0.500000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.55*sin(2.4*mid*time) +0.925*cos(2.25*bass)*time;
+per_frame_2=wave_g = wave_g + 0.55*cos(3.7*treb*time) + 0.925*tan(1.11*mid)*time;
+per_frame_3=wave_b = wave_b + 0.55*tan(2.84*bass*time)+ 0.925*sin(3.3*treb)*-time;
+per_frame_4=warp = 0;
+per_frame_5=wave_x = wave_x + 0.25*sin(2*time);
+per_frame_6=wave_y = wave_y + 0.25*cos(2*time);
+per_frame_7=wave_mystery = wave_mystery - sqr(0.06*bass_att+(wave_x-wave_y))
+per_pixel_1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=
+per_pixel_5=rot = rot + (tan(rad)*0.5*tan(0.8-rad))*(3*(0.7*bass));
+per_pixel_6=zoom = zoom - 0.05*sin(rad*tan(rad*time));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Negative Sun III.milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Negative Sun III.milk
new file mode 100644
index 00000000..7244d5ac
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - Negative Sun III.milk
@@ -0,0 +1,76 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=1
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.010000
+fWaveSmoothing=0.500000
+fWaveParam=-0.200000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=0.999998
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.25*sin(1.4*time) + 0.25*sin(2.25*time);
+per_frame_2=wave_g = wave_g + 0.25*sin(1.7*time) + 0.25*sin(2.11*time);
+per_frame_3=wave_b = wave_b + 0.25*sin(1.84*time) + 0.25*sin(2.3*time);
+per_frame_4=warp = 0;
+per_pixel_1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=zoom = zoom + 0.01;
+per_pixel_5=zoom = zoom + (0.05 + 0.04*sin(time))*(0.2*sin(ang*time));
+per_pixel_6=rot = rot + 0.01*(0.5*cos(ang*5*bass*time));
+per_pixel_7=
+per_pixel_8=dx = dx + 0.1*above(rad,0.25)*dx_r;
+per_pixel_9=dy = dy + 0.1*above(rad,0.25)*dy_r;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - What Cannot Be Undone.milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - What Cannot Be Undone.milk
new file mode 100644
index 00000000..d8e8a654
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - What Cannot Be Undone.milk
@@ -0,0 +1,76 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=2.216706
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=2
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=3.749272
+fWaveSmoothing=0.500000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.990000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.35*sin(1.4*time) + 0.25*sin(2.5*time);
+per_frame_2=wave_g = wave_g + 0.35*sin(1.7*time) - 0.25*sin(1.11*time);
+per_frame_3=wave_b = wave_b + 0.35*sin(1.84*time) + 0.25*sin(2.3*time);
+per_frame_4=warp = 0;
+per_pixel_1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=dy = dy + dy_r +below(y,0.5)*0.005;
+per_pixel_5=dy = dy - dy_r -above(y,0.5)*0.005;
+per_pixel_6=dx = dx + dx_r+ above(y,sin(time))*0.005 - below(y,0.8*sin(time))*0.005;
+per_pixel_7=dx = dx + dx_r+ above(y,0.76*sin(1.2*time))*0.005 - below(y,0.55*sin(2*time))*0.005;
+per_pixel_8=nx = 0.8*x * sin(time) - 0.4*x *sin(1.22*time);
+per_pixel_9=ny = 0.8*y * cos(time) - 0.4*y *cos(1.4*time);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Aderrasi - What cannot be.milk b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - What cannot be.milk
new file mode 100644
index 00000000..c8d2ec41
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Aderrasi - What cannot be.milk
@@ -0,0 +1,78 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=2.216706
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=2
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=3.749272
+fWaveSmoothing=0.500000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.990000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.35*sin(1.4*time) + 0.25*sin(2.5*time);
+per_frame_2=wave_g = wave_g + 0.35*sin(1.7*time) - 0.25*sin(1.11*time);
+per_frame_3=wave_b = wave_b + 0.35*sin(1.84*time) + 0.25*sin(2.3*time);
+per_frame_4=warp = 0;
+per_pixel_1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_2=dx_r = equal(thresh,2)*0.015*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.015*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=dy = dy + dy_r +below(y,0.5)*0.005;
+per_pixel_5=dy = dy - dy_r -above(y,0.5)*0.005;
+per_pixel_6=dx = dx + dx_r+ above(y,sin(time))*0.005 - below(y,0.8*sin(time))*0.005;
+per_pixel_7=dx = dx + dx_r+ above(y,0.76*sin(1.2*time))*0.005 - below(y,0.55*sin(2*time))*0.005;
+per_pixel_8=nx = 0.8*x * sin(time) - 0.4*x *sin(1.22*time);
+per_pixel_9=ny = 0.8*y * cos(time) - 0.4*y *cos(1.4*time);
+per_pixel_10=zoom = zoom + if(below(rad,0.4), + 0.05-rad, 0);
+per_pixel_11=zoom = zoom + if (below(rad,0.2), + 0.1-rad, 0);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Bmelgren & Krash - Rainbow Orb Peacock (Centred Journey Mix.milk b/InstallerDependencies/Visuals/projectM/presets/Bmelgren & Krash - Rainbow Orb Peacock (Centred Journey Mix.milk
new file mode 100644
index 00000000..0e0016ce
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Bmelgren & Krash - Rainbow Orb Peacock (Centred Journey Mix.milk
@@ -0,0 +1,76 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=5.277897
+fWaveSmoothing=0.000000
+fWaveParam=-0.400000
+fModWaveAlphaStart=0.850000
+fModWaveAlphaEnd=1.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=-0.240000
+cx=0.650000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=0.887449
+sy=1.051010
+wave_r=0.400000
+wave_g=0.400000
+wave_b=0.400000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=1.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=warp=warp/bass;
+per_frame_2=x_wave_x = 0.5+0.3*sin(bass+treb+mid);
+per_frame_3=wave_r = 1 + sin(-x_wave_x*6.28);
+per_frame_4=wave_g = abs(sin(2*x_wave_x*6.28));
+per_frame_5=wave_b = sin(x_wave_x*6.28);
+per_frame_6=treb_effect = if(above(treb_att,1.4),pow(0.99,treb_att),1);
+per_frame_7=net_effect = if(above(bass_att,0.8*treb_att),1,treb_effect);
+per_frame_8=zoom = net_effect;
+per_frame_9=rot = rot + rot_residual/1.5;
+per_frame_10=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_11=shift = (tan(time*7)) -0.05;
+per_frame_12=shift = if(above(shift,0),0,if(below(shift,-0.1),-0.1,shift));
+per_frame_13=rot_residual = if(equal(bass_thresh,2),shift,rot_residual);
+per_frame_14=q1=net_effect;
+per_frame_15=q2=bass_thresh;
+per_pixel_1=rot = rot + if(equal(tan(ang), q1), rot, tan(q1-rad)/q2);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Bmelgren & Krash - Rainbow Orb Peacock (Lonely Signal Gone .milk b/InstallerDependencies/Visuals/projectM/presets/Bmelgren & Krash - Rainbow Orb Peacock (Lonely Signal Gone .milk
new file mode 100644
index 00000000..20511f50
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Bmelgren & Krash - Rainbow Orb Peacock (Lonely Signal Gone .milk
@@ -0,0 +1,70 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.560000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.400000
+nVideoEchoOrientation=1
+nWaveMode=6
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=1
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=64
+nMotionVectorsY=1
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=1.599180
+fWaveSmoothing=0.750000
+fWaveParam=1.000000
+fModWaveAlphaStart=0.850000
+fModWaveAlphaEnd=1.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=0.844378
+sy=1.061520
+wave_r=0.400000
+wave_g=0.400000
+wave_b=0.400000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+per_frame_1=warp=0;
+per_frame_2=x_wave_x = 0.5+0.3*sin(bass+treb+mid);
+per_frame_3=wave_r = 1 + sin(-x_wave_x*6.28);
+per_frame_4=wave_g = abs(sin(2*x_wave_x*6.28));
+per_frame_5=wave_b = sin(x_wave_x*6.28);
+per_frame_6=treb_effect = if(above(treb_att,1.4),pow(0.99,treb_att),1);
+per_frame_7=net_effect = if(above(bass_att,0.8*treb_att),1,treb_effect);
+per_frame_8=zoom = net_effect*1.027;
+per_frame_9=rot = rot + rot_residual;
+per_frame_10=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_11=shift = (tan(time*7)) -0.05;
+per_frame_12=shift = if(above(shift,0),0,if(below(shift,-0.1),-0.1,shift));
+per_frame_13=rot_residual = if(equal(bass_thresh,2),shift,rot_residual);
+per_pixel_1=rot = rot + if(equal(sin(ang), 1), rot, sin(1-rad)/sqr(bass_att*1.5));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Bmelgren - Pentultimate Nerual Slipstream (Tweak 2).milk b/InstallerDependencies/Visuals/projectM/presets/Bmelgren - Pentultimate Nerual Slipstream (Tweak 2).milk
new file mode 100644
index 00000000..6f125614
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Bmelgren - Pentultimate Nerual Slipstream (Tweak 2).milk
@@ -0,0 +1,63 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.950000
+fVideoEchoZoom=3.007504
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=1
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=1
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.880224
+fWaveSmoothing=0.000000
+fWaveParam=-0.500000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.074097
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+per_frame_1=warp = 0;
+per_frame_2=wave_r = wave_r + .5*sin(time*333) + bass*.3;
+per_frame_3=wave_g = wave_g + .5*sin(time*222) + treb*.3;
+per_frame_4=wave_b = wave_b + .5*sin(time*111) + mid*.3;
+per_frame_5=rot = .4*sin(mid_att*.05);
+per_pixel_1=ray = pow(rad,1.8)+.05;
+per_pixel_2=zoom = (ray/rad)*1.4 + .3*sin(ang*(bass*5))+(bass*.2);
diff --git a/InstallerDependencies/Visuals/projectM/presets/CatalystTheElder - Electric Rosebud_Phat_texture_edit.milk b/InstallerDependencies/Visuals/projectM/presets/CatalystTheElder - Electric Rosebud_Phat_texture_edit.milk
new file mode 100644
index 00000000..0beaf0a0
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/CatalystTheElder - Electric Rosebud_Phat_texture_edit.milk
@@ -0,0 +1,218 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.925000
+fVideoEchoZoom=1.228237
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=1
+nWaveMode=1
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=3.034055
+fWaveScale=1.285700
+fWaveSmoothing=0.630000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.400000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999514
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.300000
+wave_g=0.830000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.000000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.995947
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=0.344836
+shapecode_0_r=0.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=1.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=//rot = 0.1*sin(ang);
+shape_0_per_frame2=tex_ang=sin(time/3)*6.14;
+shape_0_per_frame3=tex_zoom=.345+(bass*.03);
+shapecode_1_enabled=1
+shapecode_1_sides=24
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.379369
+shapecode_1_ang=0.753982
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=0.842832
+shapecode_1_r=0.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=0.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=g = g + 0.5*cos(time*2.23);
+shape_1_per_frame2=b = b + 0.5*tan(time*2.33);
+shape_1_per_frame3=x=(sin(time)*0.3+0.5)+(treb_att*0.1);
+shape_1_per_frame4=y=(cos(time)*0.3+0.5)+(treb_att*0.1);
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=wave_g = wave_g + 0.5*cos(time*2.23);
+per_frame_2=wave_b = wave_b + 0.5*tan(time*2.33);
+per_pixel_1=//rot = (0.01*(sin(time)))-rad;
+per_pixel_2=zoom = 1.1+(bass/10);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Che - Escape.milk b/InstallerDependencies/Visuals/projectM/presets/Che - Escape.milk
new file mode 100644
index 00000000..27a6e728
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Che - Escape.milk
@@ -0,0 +1,118 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.950000
+fVideoEchoZoom=1.000498
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=5
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000416
+fWaveScale=0.608285
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=1.000000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000154
+fShader=0.000000
+zoom=1.000223
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.150000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.050000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=6.400000
+nMotionVectorsY=14.400005
+mv_dx=0.000000
+mv_dy=-0.010000
+mv_l=0.350000
+mv_r=0.900000
+mv_g=0.500000
+mv_b=0.000000
+mv_a=1.000000
+per_frame_1=// timed sidon sensor
+per_frame_2=// le = signal level; desired average value = 2
+per_frame_3=le=1.4*bass_att+.1*bass+.5*treb;
+per_frame_4=pulse=above(le,th);
+per_frame_5=// pulsefreq = running average of interval between last 5 pulses
+per_frame_6=pulsefreq=if(equal(pulsefreq,0),2,
+per_frame_7=if(pulse,.8*pulsefreq+.2*(time-lastpulse),pulsefreq));
+per_frame_8=lastpulse=if(pulse,time,lastpulse);
+per_frame_9=// bt = relative time; 0 = prev beat; 1 = expected beat
+per_frame_10=bt=(time-lastbeat)/(.5*beatfreq+.5*pulsefreq);
+per_frame_11=// hccp = handcicap for th driven by bt
+per_frame_12=hccp=(.03/(bt+.2))+.5*if(band(above(bt,.8),below(bt,1.2)),
+per_frame_13=(pow(sin((bt-1)*7.854),4)-1),0);
+per_frame_14=beat=band(above(le,th+hccp),btblock);
+per_frame_15=btblock=1-above(le,th+hccp);
+per_frame_16=lastbeat=if(beat,time,lastbeat);
+per_frame_17=beatfreq=if(equal(beatfreq,0),2,
+per_frame_18=if(beat,.8*beatfreq+.2*(time-lastbeat),beatfreq));
+per_frame_19=// th = threshold
+per_frame_20=th=if(above(le,th),le+114/(le+10)-7.407,
+per_frame_21=th+th*.07/(th-12)+below(th,2.7)*.1*(2.7-th));
+per_frame_22=th=if(above(th,6),6,th);
+per_frame_23=
+per_frame_24=q8=30/fps;
+per_frame_25=ccl=ccl+beat;
+per_frame_26=minorccl=minorccl+le*q8;
+per_frame_27=q7=ccl+.0002*minorccl;
+per_frame_28=q6=3.7*ccl+.01*minorccl;
+per_frame_29=ob_size=.3+.3*sin(16*ccl+.007*minorccl);
+per_frame_30=ib_a=.5+.4*sin(.01*minorccl+ccl);
+per_frame_31=wave_r=.7+.3*sin(.04*ccl+.01*minorccl);
+per_frame_32=wave_g=.7+.3*sin(.02*ccl+.012*minorccl);
+per_frame_33=wave_b=.3+.3*sin(36*ccl+.013*minorccl);
+per_frame_34=ib_r=.25+.25*sin(72*ccl+.016*minorccl);
+per_frame_35=ib_g=.25+.25*sin(48*ccl+.021*minorccl);
+per_frame_36=ib_b=.5+.3*sin(86*ccl)+.2*(.028*minorccl);
+per_frame_37=
+per_frame_38=echo_alpha=.5+.5*cos(68*ccl+.0041*minorccl);
+per_frame_39=echo_zoom=exp(sin(13.7*ccl+.017*minorccl));
+per_frame_40=echo_orient=ccl%4;
+per_frame_41=
+per_frame_42=mvrot=ccl%6;
+per_frame_43=mv_r=if(above(mvrot,2),if(above(mvrot,4),.039,
+per_frame_44=if(equal(mvrot,3),.137,.835)),if(above(mvrot,1),.651,
+per_frame_45=if(equal(mvrot,0),1,.773)));
+per_frame_46=mv_g=if(above(mvrot,2),if(above(mvrot,4),.267,
+per_frame_47=if(equal(mvrot,3),.886,.176)),if(above(mvrot,1),.804,
+per_frame_48=if(equal(mvrot,0),1,.38)));
+per_frame_49=mv_b=if(above(mvrot,2),if(above(mvrot,4),.694,
+per_frame_50=if(equal(mvrot,3),.776,.851)),if(above(mvrot,1),.114,
+per_frame_51=if(equal(mvrot,0),1,.145)));
+per_pixel_1=zone=below(sin(sin(49*q7)*14*x-sin(36*q7)*14*y),-.2);
+per_pixel_2=zoom=1+.33*q8*if(zone,-.5+.1*sin(1.08*q6),.5+.1*sin(.96*q6));
+per_pixel_3=zoomexp=exp(sin(if(zone,q6,-q6)));
+per_pixel_4=rot=q8*.03*sin(q6+q7+q7*zone);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Che - Terracarbon Stream.milk b/InstallerDependencies/Visuals/projectM/presets/Che - Terracarbon Stream.milk
new file mode 100644
index 00000000..8cb02158
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Che - Terracarbon Stream.milk
@@ -0,0 +1,113 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000499
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.030740
+fWaveScale=0.498516
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=1.000000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000158
+fShader=0.000000
+zoom=1.000223
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.100000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.060000
+ib_size=0.035000
+ib_r=0.250000
+ib_g=0.450000
+ib_b=0.250000
+ib_a=0.290000
+nMotionVectorsX=19.199999
+nMotionVectorsY=14.400005
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=2.500000
+mv_r=0.060000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.200000
+per_frame_1=// timed sidon sensor
+per_frame_2=// le = signal level; desired average value = 2
+per_frame_3=le=1.4*bass_att+.1*bass+.5*treb;
+per_frame_4=pulse=above(le,th);
+per_frame_5=// pulsefreq = running average of interval between last 5 pulses
+per_frame_6=pulsefreq=if(equal(pulsefreq,0),2,
+per_frame_7=if(pulse,.8*pulsefreq+.2*(time-lastpulse),pulsefreq));
+per_frame_8=lastpulse=if(pulse,time,lastpulse);
+per_frame_9=// bt = relative time; 0 = prev beat; 1 = expected beat
+per_frame_10=bt=(time-lastbeat)/(.5*beatfreq+.5*pulsefreq);
+per_frame_11=// hccp = handcicap for th driven by bt
+per_frame_12=hccp=(.03/(bt+.2))+.5*if(band(above(bt,.8),below(bt,1.2)),
+per_frame_13=(pow(sin((bt-1)*7.854),4)-1),0);
+per_frame_14=beat=band(above(le,th+hccp),btblock);
+per_frame_15=btblock=1-above(le,th+hccp);
+per_frame_16=lastbeat=if(beat,time,lastbeat);
+per_frame_17=beatfreq=if(equal(beatfreq,0),2,
+per_frame_18=if(beat,.8*beatfreq+.2*(time-lastbeat),beatfreq));
+per_frame_19=// th = threshold
+per_frame_20=th=if(above(le,th),le+114/(le+10)-7.407,
+per_frame_21=th+th*.07/(th-12)+below(th,2.7)*.1*(2.7-th));
+per_frame_22=th=if(above(th,6),6,th);
+per_frame_23=thccl=thccl+(th-2.5144);
+per_frame_24=
+per_frame_25=q1=le;
+per_frame_26=q2=thccl+.2*leccl;
+per_frame_27=leccl=leccl+dle*le;
+per_frame_28=dle=if(beat,-dle,dle);
+per_frame_29=bccl=bccl+beat;
+per_frame_30=
+per_frame_31=wave_r=.1+.8*sqr(sin(.011*thccl))+.1*sin(leccl*.061);
+per_frame_32=wave_g=.1+.8*sqr(sin(.013*thccl))+.1*cos(leccl*.067);
+per_frame_33=wave_b=.1+.8*sqr(cos(.017*thccl))+.1*sin(leccl*.065);
+per_frame_34=
+per_frame_35=ib_r=ib_r+.1*sin(1.3*time+.012*leccl);
+per_frame_36=ib_g=ib_g+.1*sin(1.7*time+.019*leccl);
+per_frame_37=ib_b=ib_b+.1*sin(1.9*time+.017*leccl);
+per_frame_38=mv_r=.5*(ib_r+wave_r);mv_g=.5*(ib_g+wave_g);mv_b=.5*(ib_b+wave_b);
+per_frame_39=mv_a=.5*sqr(sin(.01*leccl+bccl));
+per_frame_40=
+per_frame_41=echo_alpha=.5+.2*cos(.07*leccl+.02*thccl);
+per_frame_42=eo=if(band(equal(bccl%3,0),beat),rand(4),eo);
+per_frame_43=q3=(equal(eo,2)+equal(eo,1))*equal(bccl%2,0);
+per_frame_44=q4=(equal(eo,0)+equal(eo,3))*equal(bccl%2,0);
+per_frame_45=echo_orient=eo;
+per_pixel_1=dqv=above(x,.5)-above(y,.5);
+per_pixel_2=rot=sin(sin(rad*(13+5*sin(.01*q2))+.06*q2)*q1*.01);
+per_pixel_3=zoom=1+if(q3,dqv,1)*.1*sin(7*ang+.03*q2);
+per_pixel_4=zoom=if(q4,if(below(rad,.8*sqr(sin(.016*q2))),.75+.4*cos(.021*q2),zoom),zoom);
+per_frame_init_1=dle=1;
diff --git a/InstallerDependencies/Visuals/projectM/presets/CrystalHigh - mad ravetriping.milk b/InstallerDependencies/Visuals/projectM/presets/CrystalHigh - mad ravetriping.milk
new file mode 100644
index 00000000..7d1afe39
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/CrystalHigh - mad ravetriping.milk
@@ -0,0 +1,86 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.000000
+fDecay=0.963999
+fVideoEchoZoom=1.902700
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=33.469448
+fWaveScale=100.000000
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.240000
+fModWaveAlphaEnd=1.300001
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.009514
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.035000
+ob_r=0.340000
+ob_g=0.340000
+ob_b=0.340000
+ob_a=0.380000
+ib_size=0.020000
+ib_r=0.340000
+ib_g=0.340000
+ib_b=0.340000
+ib_a=0.210000
+nMotionVectorsX=28.000000
+nMotionVectorsY=9.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=MyVolume = min(bass+mid+treb,5);
+per_frame_2=decay = 1 - 0.01*MyVolume;
+per_frame_3=wave_r = 0.30 + 0.15*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );
+per_frame_4=wave_r = if(above(bass,1.2),wave_r + 0.35,wave_r);
+per_frame_5=wave_g = 0.30 + 0.15*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );
+per_frame_6=wave_b = 0.30 + 0.15*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );
+per_frame_7=wave_b = if(above(wave_r,0.8),wave_b-0.25,wave_b);
+per_frame_8=ib_a = max(sin(time),0);
+per_frame_9=ib_size = 0.010 + 0.002*MyVolume;
+per_frame_10=ob_a = 0.380 + 0.1*MyVolume;
+per_frame_11=ob_size = 0.050 - 0.004*MyVoulme;
+per_frame_12=ib_r = 0.340 + 0.2*sin(time*0.5413);
+per_frame_13=ib_g = 0.340 + 0.2*sin(time*0.6459);
+per_frame_14=ib_b = 0.340 + 0.2*sin(time*0.7354);
+per_frame_15=ob_r = 0.340 + 0.2*sin(time*0.7251);
+per_frame_16=ob_r = if(above(bass,1.2),ob_r + 0.35,ob_r);
+per_frame_17=ob_g = 0.340 + 0.2*sin(time*0.5315);
+per_frame_18=ob_b = 0.340 + 0.2*sin(time*0.6349);
+per_frame_19=ob_b = if(above(ob_r,0.8),ob_b-0.25,ob_b);
+per_frame_20=zoom = max(sin(bass-bass_residual*10),0.2);
+per_frame_21=rot = mid_residual*2.5;
+per_frame_22=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_23=bass_residual = equal(bass_thresh,2)*0.016*sin(time*7) + (1-equal(bass_thresh,2))*bass_residual;
+per_frame_24=mid_thresh = above(mid_att,mid_thresh)*2 + (1-above(mid_att,mid_thresh))*((mid_thresh-1.3)*0.92+1.3);
+per_frame_25=mid_residual = equal(mid_thresh,2)*0.013*sin(time*7) + (1-equal(mid_thresh,2))*mid_residual;
+per_frame_26=monitor = zoom;
diff --git a/InstallerDependencies/Visuals/projectM/presets/EMPR - Random - Changing Polyevolution.milk b/InstallerDependencies/Visuals/projectM/presets/EMPR - Random - Changing Polyevolution.milk
new file mode 100644
index 00000000..0457c67b
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/EMPR - Random - Changing Polyevolution.milk
@@ -0,0 +1,95 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.220183
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=3
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.241455
+fWaveSmoothing=0.000000
+fWaveParam=-0.261032
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.526528
+wave_g=0.324083
+wave_b=0.134239
+wave_x=0.482812
+wave_y=0.467471
+ob_size=0.004500
+ob_r=0.071102
+ob_g=0.089654
+ob_b=0.514650
+ob_a=0.985207
+ib_size=0.005000
+ib_r=0.491715
+ib_g=0.022579
+ib_b=0.569085
+ib_a=0.949768
+nMotionVectorsX=3.000000
+nMotionVectorsY=48.000000
+mv_dx=-0.505893
+mv_dy=-0.993957
+mv_l=5.000000
+mv_r=0.835033
+mv_g=0.249397
+mv_b=0.055806
+mv_a=0.175581
+per_frame_1=wave_r = wave_r + 0.45*( 0.6*sin(1.517*time) + 0.4*mid_effect );
+per_frame_2=wave_b = wave_b + 0.45*( 0.6*sin(1.088*time) + 0.4*bass_effect );
+per_frame_3=wave_g = wave_g + 0.45*( 0.6*sin(1.037*time) + 0.4*treb_effect );
+per_frame_4=zoom = zoom + 0.013*( 0.60*sin(0.339*time) + 0.40*sin(0.276*time) );
+per_frame_5=rot = rot + 0.020*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_6=decay = decay - 0.01*below(frame%5,1);
+per_frame_7=volume = 0.3*(bass+mid+att);
+per_frame_8=beatrate = equal(beatrate,0) + (1-equal(beatrate,0))*(below(volume,0.01) + (1-below(volume,0.01))*beatrate);
+per_frame_9=lastbeat = lastbeat + equal(lastbeat,0)*time;
+per_frame_10=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_11=peakbass_att = max(bass_att,peakbass_att);
+per_frame_12=beat = above(volume,0.8)*below(peakbass_att - bass_att, 0.05*peakbass_att)*above(time - lastbeat, 0.1 + 0.5*(beatrate - 0.1));
+per_frame_13=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_14=peakbass_att = beat*bass_att + (1-beat)*peakbass_att*(above(time - lastbeat, 2*beatrate)*0.95 + (1-above(time - lastbeat, 2*beatrate))*0.995);
+per_frame_15=lastbeat = beat*time + (1-beat)*lastbeat;
+per_frame_16=peakbass_att = max(peakbass_att,1.1*meanbass_att);
+per_frame_17=effect = if(beat,effect+rand(5)+1,effect);
+per_frame_18=effect = if(above(effect,5),effect-6,effect);
+per_frame_19=q1 = effect+2;
+per_frame_20=monitor = q1;
+per_frame_21=wave_mode = wave_g * wave_b;
+per_frame_22=wave_r = time + treb;
+per_frame_23=wave_r=if(below(wave_r,0.0), 0.0, wave_r);
+per_frame_24=wave_r=if(above(wave_r,1.0), 1.0, wave_r);
+per_frame_25=wave_mode=if(below(wave_mode,0), 0, wave_mode);
+per_frame_26=wave_mode=if(above(wave_mode,7.0), 7.0, wave_mode);
+per_frame_27=wave_r=if(below(wave_r,0.0), 0.0, wave_r);
+per_frame_28=wave_r=if(above(wave_r,1.0), 1.0, wave_r);
+per_pixel_1=zoom=zoom+0.04*sin(ang*int(q1)+time*2.6);
+per_pixel_2=cy = x * b;
+per_pixel_3=cy=if(below(cy,-1.0), -1.0, cy);
+per_pixel_4=cy=if(above(cy,2.0), 2.0, cy);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Eo.S. - skylight a3 [trip colors flux2]_phat_Multi_shaped2_zoe_colours5.milk b/InstallerDependencies/Visuals/projectM/presets/Eo.S. - skylight a3 [trip colors flux2]_phat_Multi_shaped2_zoe_colours5.milk
new file mode 100644
index 00000000..96f2dae9
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Eo.S. - skylight a3 [trip colors flux2]_phat_Multi_shaped2_zoe_colours5.milk
@@ -0,0 +1,276 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.000000
+fDecay=0.500000
+fVideoEchoZoom=1.006596
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=1
+bSolarize=1
+bInvert=0
+fWaveAlpha=0.019788
+fWaveScale=0.011726
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=0.010284
+fWarpScale=0.010000
+fZoomExponent=1.000000
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=0.999957
+sy=0.999997
+wave_r=0.500000
+wave_g=0.400000
+wave_b=0.300000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.600000
+ob_g=0.500000
+ob_b=0.800000
+ob_a=0.000000
+ib_size=0.015000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.020000
+mv_dy=-0.020000
+mv_l=1.000000
+mv_r=0.490000
+mv_g=0.480000
+mv_b=0.300001
+mv_a=1.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=5
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=1.670888
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=6.283185
+shapecode_0_tex_zoom=0.429222
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=1.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=flux=q5*9;
+shape_0_per_frame2=fluxs=max(flux,0);
+shape_0_per_frame3=fluxs=min(fluxs,1);
+shape_0_per_frame4=bs=q1*above(q1,0.8) + (q1*0.2 * below(q1,0.8));
+shape_0_per_frame5=advflux=(bs*fluxs) + (-bs * (1-fluxs));
+shape_0_per_frame6=adv=adv+advflux;
+shape_0_per_frame7=advs=adv/256;
+shape_0_per_frame8=
+shape_0_per_frame9=
+shape_0_per_frame10=ang=advs;
+shape_0_per_frame11=rad=1.471 + sin(advs*16)*0.4;
+shape_0_per_frame12=a2=1-(sin(time)*0.4);
+shapecode_1_enabled=1
+shapecode_1_sides=3
+shapecode_1_additive=1
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.350000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.816695
+shapecode_1_r=0.400000
+shapecode_1_g=0.400000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=0.000000
+shapecode_1_b2=0.100000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=y=0.1 + q2*0.4;
+shape_1_per_frame2=rad=q2/2;
+shape_1_per_frame3=ang=-q2*2;
+shape_1_per_frame4=
+shape_1_per_frame5=r=0.90 + (sin(time/2))*0.50;
+shape_1_per_frame6=g=0.90 + (sin(time/2 + 2)) * 0.50;
+shape_1_per_frame7=b=0.90 + (sin(time/2 + 4)) * 0.50;
+shape_1_per_frame8=
+shape_1_per_frame9=
+shape_1_per_frame10=r2=0.70 + (sin(time/2))*0.50;
+shape_1_per_frame11=g2=0.70 + (sin(time/2 + 2)) * 0.50;
+shape_1_per_frame12=b2=0.70 + (sin(time/2 + 4)) * 0.50
+shape_1_per_frame13=
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=1.089251
+shapecode_2_ang=2.890265
+shapecode_2_tex_ang=2.890265
+shapecode_2_tex_zoom=0.483654
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=1.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=flux=q5*9;
+shape_2_per_frame2=fluxs=max(flux,0);
+shape_2_per_frame3=fluxs=min(fluxs,1);
+shape_2_per_frame4=bs=q1*above(q1,0.8) + (q1*0.5 * below(q1,0.8));
+shape_2_per_frame5=advflux=(bs*fluxs) + (-bs * (1-fluxs));
+shape_2_per_frame6=adv=adv+advflux;
+shape_2_per_frame7=advs=adv/178;
+shape_2_per_frame8=
+shape_2_per_frame9=//ang=sin(time/6)*6.4;
+shape_2_per_frame10=ang=advs;
+shape_2_per_frame11=rad=1.671 + sin(advs*16)*0.4;
+shapecode_3_enabled=1
+shapecode_3_sides=3
+shapecode_3_additive=1
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.840000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=0.980000
+shapecode_3_g=1.000000
+shapecode_3_b=0.980000
+shapecode_3_a=0.800000
+shapecode_3_r2=0.000000
+shapecode_3_g2=0.090000
+shapecode_3_b2=0.000000
+shapecode_3_a2=1.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+shape_3_per_frame1=x=sin(time/2)*0.4 + 0.5;
+shape_3_per_frame2=y=sin(time)*0.4+0.5;
+shape_3_per_frame3=rad=(q2*q2)/2;;
+shape_3_per_frame4=ang=q2*2;
+shape_3_per_frame5=
+shape_3_per_frame6=r=0.70 + (sin(time/2))*0.50;
+shape_3_per_frame7=g=0.70 + (sin(time/2 + 2)) * 0.50;
+shape_3_per_frame8=b=0.70 + (sin(time/2 + 4)) * 0.50
+per_frame_init_1=mv_x=64;mv_y=48;
+per_frame_init_2=nut=0;
+per_frame_init_3=stp=0;stq=0;
+per_frame_init_4=rtp=0;rtq=0;
+per_frame_init_5=wvr=0;
+per_frame_init_6=decay=0;
+per_frame_init_7=dcsp=0;
+per_frame_init_8=q1=0;q2=0;q3=0
+per_frame_1=decay=.96;
+per_frame_2=zoom=1.000;
+per_frame_3=speed=0.80;
+per_frame_4=speedinv=1-speed;
+per_frame_5=q1=(qa*speed + bass*speedinv);
+per_frame_6=q2=(qb*speed + mid *speedinv);
+per_frame_7=q3=(qc*speed + (treb*0.8)*speedinv);
+per_frame_8=qa=q1;
+per_frame_9=qb=q2;
+per_frame_10=qc=q3;
+per_frame_11=flux=sin(time/2);
+per_frame_12=q4=flux * 0.5 + 0.5;
+per_frame_13=q5=flux;
+per_frame_14=ib_r=sin(time/2)*0.5 + 0.5;
+per_frame_15=ib_g=sin(time/2 + 2)* 0.5 + 0.5;
+per_frame_16=ib_b=sin(time/2 + 4)* 0.5 + 0.5;
+per_frame_17=ib_size=sin(time/3)*0.05;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Cool Bug_arm.milk b/InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Cool Bug_arm.milk
new file mode 100644
index 00000000..c89e9854
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Cool Bug_arm.milk
@@ -0,0 +1,238 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.000000
+fDecay=0.940000
+fVideoEchoZoom=0.498313
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=1
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.010000
+fWaveSmoothing=0.630000
+fWaveParam=-1.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=0.999998
+fShader=1.000000
+zoom=13.290894
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=-0.280000
+dy=-0.320000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.030000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=6.400000
+nMotionVectorsY=43.199997
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=0.910000
+mv_b=0.710000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.491382
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=0.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=x=.5+q4;y=.5+q5;
+shapecode_1_enabled=0
+shapecode_1_sides=24
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.444842
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=0.819541
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=tex_ang=0.01;
+shape_1_per_frame2=x=.5+q4;y=.5+q5;
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_init_1=zoom=1;
+per_frame_init_2=xpos=0;
+per_frame_init_3=ypos=0;
+per_frame_1=decay=1;
+per_frame_2=
+per_frame_3=vol= (bass+mid+treb)*0.55;
+per_frame_4=vol=vol;
+per_frame_5=
+per_frame_6=
+per_frame_7=mv_r = 0.5 + 0.4*sin(time*1.324);
+per_frame_8=mv_g = 0.5 + 0.4*cos(time*1.371);
+per_frame_9=
+per_frame_10=
+per_frame_11=
+per_frame_12=
+per_frame_13=zoom=.9;
+per_frame_14=
+per_frame_15=musictime=musictime+vol;
+per_frame_16=q4=sin(musictime*0.02)*0.3;
+per_frame_17=q5=sin(musictime*0.01)*0.3;
+per_frame_18=
+per_frame_19=dx=sin(musictime*0.1)*0.07;
+per_frame_20=dy=cos(musictime*0.069)*0.07;
+per_frame_21=
+per_frame_22=
+per_frame_23=
+per_frame_24=
+per_frame_25=monitor=rot;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Cool Bug_arm_textured.milk b/InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Cool Bug_arm_textured.milk
new file mode 100644
index 00000000..d6e8ff55
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Cool Bug_arm_textured.milk
@@ -0,0 +1,238 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.000000
+fDecay=0.940000
+fVideoEchoZoom=0.999995
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.010000
+fWaveSmoothing=0.630000
+fWaveParam=-1.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=0.999998
+fShader=1.000000
+zoom=13.290894
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=-0.280000
+dy=-0.320000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.030000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=12.799995
+nMotionVectorsY=9.600006
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=0.910000
+mv_b=0.710000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.491382
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=0.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=x=.5+q4;y=.5+q5;
+shapecode_1_enabled=0
+shapecode_1_sides=24
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.444842
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=0.819541
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=tex_ang=0.01;
+shape_1_per_frame2=x=.5+q4;y=.5+q5;
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_init_1=zoom=1;
+per_frame_init_2=xpos=0;
+per_frame_init_3=ypos=0;
+per_frame_1=decay=1;
+per_frame_2=
+per_frame_3=vol= (bass+mid+treb)*0.55;
+per_frame_4=vol=vol;
+per_frame_5=
+per_frame_6=
+per_frame_7=mv_r = 0.5 + 0.4*sin(time*1.324);
+per_frame_8=mv_g = 0.5 + 0.4*cos(time*1.371);
+per_frame_9=
+per_frame_10=
+per_frame_11=
+per_frame_12=
+per_frame_13=zoom=.9;
+per_frame_14=
+per_frame_15=musictime=musictime+vol;
+per_frame_16=q4=sin(musictime*0.02)*0.3;
+per_frame_17=q5=sin(musictime*0.01)*0.3;
+per_frame_18=
+per_frame_19=dx=sin(musictime*0.1)*0.07;
+per_frame_20=dy=cos(musictime*0.069)*0.07;
+per_frame_21=
+per_frame_22=
+per_frame_23=
+per_frame_24=
+per_frame_25=monitor=rot;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Fractical_dancer - pulsate B.milk b/InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Fractical_dancer - pulsate B.milk
new file mode 100644
index 00000000..7d69b6f8
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Fractical_dancer - pulsate B.milk
@@ -0,0 +1,250 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.000000
+fDecay=0.940000
+fVideoEchoZoom=0.597148
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=1
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.010000
+fWaveSmoothing=0.630000
+fWaveParam=-1.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=0.999998
+fShader=0.000000
+zoom=13.290894
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=-0.280000
+dy=-0.320000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=12.799995
+nMotionVectorsY=9.600006
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=0.910000
+mv_b=0.710000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.491382
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=0.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=x=.5+q4;y=.5+q5;
+shapecode_1_enabled=1
+shapecode_1_sides=24
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.018423
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=0.819541
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=tex_ang=0.01;
+shape_1_per_frame2=x=.5-q4;
+shape_1_per_frame3=y=.5-q5;
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_init_1=
+per_frame_init_2=zoom=1;
+per_frame_init_3=xpos=0;
+per_frame_init_4=ypos=0;
+per_frame_1=decay=1;
+per_frame_2=
+per_frame_3=vol= (bass+mid+treb)*0.55;
+per_frame_4=vol=vol;
+per_frame_5=
+per_frame_6=
+per_frame_7=mv_r = 0.5 + 0.4*sin(time*1.324);
+per_frame_8=mv_g = 0.5 + 0.4*cos(time*1.371);
+per_frame_9=
+per_frame_10=
+per_frame_11=
+per_frame_12=
+per_frame_13=zoom=.9;
+per_frame_14=
+per_frame_15=musictime=musictime+vol;
+per_frame_16=
+per_frame_17=q4=0;
+per_frame_18=q5=0;
+per_frame_19=//=sin(musictime*0.02)*0.3;
+per_frame_20=//q5=sin(musictime*0.01)*0.3;
+per_frame_21=
+per_frame_22=dx=sin(musictime*0.1)*0.07;
+per_frame_23=dy=cos(musictime*0.069)*0.07;
+per_frame_24=
+per_frame_25=
+per_frame_26=
+per_frame_27=
+per_frame_28=monitor=rot;
+per_pixel_1=rd=sqrt( sqr( (x-0.5-q4)*1.7) + sqr( (y-0.5+q5)*1.2 ) )+0.001;
+per_pixel_2=cx=0.5+q4;
+per_pixel_3=cy=0.5-q5;
+per_pixel_4=
+per_pixel_5=zoom=pow(rd,sin(time)+2.5)*2.0;
+per_pixel_6=zoom=max(zoom,0.1)
+per_pixel_7=
diff --git a/InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Fractical_dancer - pulsate box_mix.milk b/InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Fractical_dancer - pulsate box_mix.milk
new file mode 100644
index 00000000..35d80ffc
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Fractical_dancer - pulsate box_mix.milk
@@ -0,0 +1,247 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.000000
+fDecay=0.940000
+fVideoEchoZoom=1.970816
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=1
+fWaveAlpha=0.001000
+fWaveScale=0.010000
+fWaveSmoothing=0.630000
+fWaveParam=-1.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=0.999998
+fShader=0.000000
+zoom=13.290894
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=-0.280000
+dy=-0.320000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.150000
+ob_r=1.000000
+ob_g=1.000000
+ob_b=1.000000
+ob_a=1.000000
+ib_size=0.050000
+ib_r=0.000000
+ib_g=1.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=0.000000
+mv_g=0.700000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=0
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.244862
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=0.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=x=.5+q4;y=.5+q5;
+shapecode_1_enabled=1
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=1
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.402702
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=2.238868
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=0.000000
+shapecode_1_border_a=1.000000
+shape_1_per_frame1=tex_ang=3.14;
+shape_1_per_frame2=tex_zoom=2.235;
+shape_1_per_frame3=x=.5-q5;
+shape_1_per_frame4=y=.5-q4;
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_init_1=
+per_frame_init_2=zoom=1;
+per_frame_init_3=xpos=0;
+per_frame_init_4=ypos=0;
+per_frame_1=decay=1;
+per_frame_2=
+per_frame_3=vol= (bass+mid+treb)*0.55;
+per_frame_4=vol=vol;
+per_frame_5=
+per_frame_6=
+per_frame_7=mv_r = 0.5 + 0.4*sin(time*1.324);
+per_frame_8=mv_g = 0.5 + 0.4*cos(time*1.371);
+per_frame_9=
+per_frame_10=
+per_frame_11=
+per_frame_12=musictime=musictime+vol;
+per_frame_13=
+per_frame_14=//q4=0;
+per_frame_15=q5=0;
+per_frame_16=q4=sin(musictime*0.02)*0.4;
+per_frame_17=q5=sin(musictime*0.01)*0.3;
+per_frame_18=
+per_frame_19=dx=sin(musictime*0.1)*0.07;
+per_frame_20=dy=cos(musictime*0.069)*0.07;
+per_frame_21=
+per_frame_22=
+per_frame_23=
+per_frame_24=
+per_frame_25=monitor=rot;
+per_pixel_1=rd=sqrt( sqr( (x-0.5-q4)*1.7) + sqr( (y-0.5+q5)*1.2 ) )+0.001;
+per_pixel_2=
+per_pixel_3=cx=0.5+q4;
+per_pixel_4=cy=0.5-q5;
+per_pixel_5=
+per_pixel_6=zoom=pow(rd,sin(time)+3.5)/10.5 + .5;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Fractical_dancer_Peacock.milk b/InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Fractical_dancer_Peacock.milk
new file mode 100644
index 00000000..dc137232
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Eo.S.+Phat Fractical_dancer_Peacock.milk
@@ -0,0 +1,250 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.000000
+fDecay=0.940000
+fVideoEchoZoom=1.615167
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=1
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.010000
+fWaveSmoothing=0.630000
+fWaveParam=-1.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=0.999998
+fShader=0.000000
+zoom=13.290894
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=-0.280000
+dy=-0.320000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.050000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=12.799995
+nMotionVectorsY=9.600006
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=0.910000
+mv_b=0.710000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.491382
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=0.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=0.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.050000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=x=.5+q4;y=.5+q5;
+shape_0_per_frame2=r=sin(time*0.7)*3*(bass*0.2);
+shape_0_per_frame3=g=sin(time*0.5)*4*(treb*2);
+shapecode_1_enabled=0
+shapecode_1_sides=24
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.018423
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=0.819541
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=tex_ang=0.01;
+shape_1_per_frame2=x=.5-q4;
+shape_1_per_frame3=y=.5-q5;
+shapecode_2_enabled=1
+shapecode_2_sides=24
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.221671
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=2.987774
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=1.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_init_1=
+per_frame_init_2=zoom=1;
+per_frame_init_3=xpos=0;
+per_frame_init_4=ypos=0;
+per_frame_1=decay=1;
+per_frame_2=
+per_frame_3=vol= (bass+mid+treb)*0.55;
+per_frame_4=vol=vol;
+per_frame_5=
+per_frame_6=
+per_frame_7=mv_r = 0.5 + 0.4*sin(time*1.324);
+per_frame_8=mv_g = 0.5 + 0.4*cos(time*1.371);
+per_frame_9=
+per_frame_10=
+per_frame_11=//ib_r=bass;
+per_frame_12=//ib_g=treb;
+per_frame_13=zoom=.9;
+per_frame_14=
+per_frame_15=musictime=musictime+vol;
+per_frame_16=
+per_frame_17=q4=0;
+per_frame_18=q5=0;
+per_frame_19=//q4=sin(musictime*0.02)*0.1;
+per_frame_20=//q5=sin(musictime*0.01)*0.1;
+per_frame_21=
+per_frame_22=dx=sin(musictime*0.1)*0.07;
+per_frame_23=dy=cos(musictime*0.069)*0.07;
+per_frame_24=
+per_frame_25=
+per_frame_26=
+per_frame_27=
+per_frame_28=monitor=rot;
+per_pixel_1=rd=sqrt( sqr( (x-0.5-q4)*3) + sqr( (y-0.5+q5)*2 ) );
+per_pixel_2=cx=0.5+q4;
+per_pixel_3=cy=0.5-q5;
+per_pixel_4=
+per_pixel_5=zoom=(rd*rd)/2.5;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Eo.s and PieturP - Starfield.milk b/InstallerDependencies/Visuals/projectM/presets/Eo.s and PieturP - Starfield.milk
new file mode 100644
index 00000000..8a1bd229
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Eo.s and PieturP - Starfield.milk
@@ -0,0 +1,597 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.500000
+fVideoEchoZoom=3.012146
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=6
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.010000
+fWaveSmoothing=0.630000
+fWaveParam=-1.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999514
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.005000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.010000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=12.799999
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=1
+wavecode_0_samples=512
+wavecode_0_sep=256
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=1
+wavecode_0_bDrawThick=1
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.028414
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_per_frame1=advance=advance+ (abs(bass+treb+mid)*.01);
+wave_0_per_frame2=advance=if( above(advance,2) , 0, advance);
+wave_0_per_frame3=t1=advance;
+wave_0_per_frame4=ab=ab+(abs(bass+treb+mid)*.001);
+wave_0_per_frame5=ab=if(above(ab,628),0,ab);
+wave_0_per_frame6=t2=ab;
+wave_0_per_frame7=
+wave_0_per_point1=s=sample*6.28;
+wave_0_per_point2=
+wave_0_per_point3=//plot random x position via function of sample pos;
+wave_0_per_point4=xp=sin(s)+sin(s*0.34)+sin(s*24.3)+sin(s*13.8);
+wave_0_per_point5=xp=xp*.17;
+wave_0_per_point6=//plot random y position via function of sample pos;
+wave_0_per_point7=yp=cos(s)+sin(s*0.24)+cos(s*17.4)+sin(s*37.7);
+wave_0_per_point8=yp=yp*.17;
+wave_0_per_point9=//plot random z position via function of sample pos;
+wave_0_per_point10=zp=cos(s)+cos(s*5.24)+cos(s*47.4)+cos(s*27.7);
+wave_0_per_point11=zp=zp*0.25;
+wave_0_per_point12=
+wave_0_per_point13=//pull stars toward screen
+wave_0_per_point14=zp=zp + 1 - t1;
+wave_0_per_point15=
+wave_0_per_point16=//correct when below 0
+wave_0_per_point17=zp=if( below(zp,0) , zp+2 , zp );
+wave_0_per_point18=zp=zp*0.7;
+wave_0_per_point19=
+wave_0_per_point20=x2=sin(time*.2)*.125;
+wave_0_per_point21=y2=cos(time*.2)*.125;
+wave_0_per_point22=x=(xp/zp + 0.5)+x2;
+wave_0_per_point23=y=(yp/zp + 0.5)+y2;
+wave_0_per_point24=
+wave_0_per_point25=
+wave_0_per_point26=h=sin(t2)*.5+.5;
+wave_0_per_point27=
+wave_0_per_point28=//darken far stars
+wave_0_per_point29=//a=(1 - zp*0.5);
+wave_0_per_point30=l=(1-zp*.5);
+wave_0_per_point31=s=(1-zp*.5);
+wave_0_per_point32=
+wave_0_per_point33=
+wave_0_per_point34=
+wave_0_per_point35=//////////////////////////////////////////////////////////////////////////////
+wave_0_per_point36=//
+wave_0_per_point37=// HSL to RGB by PieturP
+wave_0_per_point38=//
+wave_0_per_point39=// hue h ( 0 - 1 ) rr ( 0 - 1 )
+wave_0_per_point40=// saturation s ( 0 - 1 ) - > gg ( 0 - 1 )
+wave_0_per_point41=// luminance l ( 0 - 1 ) bb ( 0 - 1 )
+wave_0_per_point42=//
+wave_0_per_point43=cc=(6*h);
+wave_0_per_point44=cc=if(below(cc,1),0,if(below(cc,2),1,if(below(cc,3),2,if(below(cc,4),3,if(below(cc,5),4,5)))));
+wave_0_per_point45=zf=(6*h)-cc;
+wave_0_per_point46=zm=l;
+wave_0_per_point47=zp=l*(1-s);
+wave_0_per_point48=zq=l*(1-s*zf);
+wave_0_per_point49=zt=l*(1-s*(1-zf));
+wave_0_per_point50=rr=if(equal(cc,0),zm,if(equal(cc,1),zq,if(equal(cc,2),zp,if(equal(cc,3),zp,if(equal(cc,4),zt,zm)))));
+wave_0_per_point51=gg=if(equal(cc,0),zt,if(equal(cc,1),zm,if(equal(cc,2),zm,if(equal(cc,3),zq,if(equal(cc,4),zp,zp)))));
+wave_0_per_point52=bb=if(equal(cc,0),zp,if(equal(cc,1),zp,if(equal(cc,2),zt,if(equal(cc,3),zm,if(equal(cc,4),zm,zq)))));
+wave_0_per_point53=rr=if(equal(s,0),l,rr);
+wave_0_per_point54=gg=if(equal(s,0),l,gg);
+wave_0_per_point55=bb=if(equal(s,0),l,bb);
+wave_0_per_point56=
+wave_0_per_point57=//////////////////////////////////////////////////////////////////////////////
+wave_0_per_point58=
+wave_0_per_point59=r=rr;
+wave_0_per_point60=g=gg;
+wave_0_per_point61=b=bb;
+wave_0_per_point62=
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=256
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=1
+wavecode_1_bDrawThick=1
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.028414
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+wave_1_per_frame1=advance=advance+ (abs(bass+treb+mid)*.01);
+wave_1_per_frame2=advance=if( above(advance,2) , 0, advance);
+wave_1_per_frame3=t1=advance;
+wave_1_per_frame4=ab=ab+(abs(bass+treb+mid)*.001);
+wave_1_per_frame5=ab=if(above(ab,628),0,ab);
+wave_1_per_frame6=t2=ab;
+wave_1_per_frame7=
+wave_1_per_point1=s=sample*6.28;
+wave_1_per_point2=
+wave_1_per_point3=//plot random x position via function of sample pos;
+wave_1_per_point4=xp=sin(s)+sin(s*0.34)+sin(s*24.3)+sin(s*13.8);
+wave_1_per_point5=xp=xp*.20;
+wave_1_per_point6=//plot random y position via function of sample pos;
+wave_1_per_point7=yp=cos(s)+sin(s*0.24)+cos(s*17.4)+sin(s*37.7);
+wave_1_per_point8=yp=yp*.20;
+wave_1_per_point9=//plot random z position via function of sample pos;
+wave_1_per_point10=zp=cos(s)+cos(s*5.24)+cos(s*47.4)+cos(s*27.7);
+wave_1_per_point11=zp=zp*0.25;
+wave_1_per_point12=
+wave_1_per_point13=
+wave_1_per_point14=
+wave_1_per_point15=//pull stars toward screen
+wave_1_per_point16=zp=zp + 1 - t1;
+wave_1_per_point17=
+wave_1_per_point18=//correct when below 0
+wave_1_per_point19=zp=if( below(zp,0) , zp+2 , zp );
+wave_1_per_point20=
+wave_1_per_point21=//darken far stars
+wave_1_per_point22=//a=(1 - zp*0.5);
+wave_1_per_point23=
+wave_1_per_point24=zp=zp*0.705;
+wave_1_per_point25=
+wave_1_per_point26=x=xp/zp + 0.5;
+wave_1_per_point27=y=yp/zp + 0.5;
+wave_1_per_point28=
+wave_1_per_point29=h=sin(t2)*.5+.5;
+wave_1_per_point30=
+wave_1_per_point31=s=(1-zp*.5);
+wave_1_per_point32=l=(zp*.5);
+wave_1_per_point33=
+wave_1_per_point34=
+wave_1_per_point35=//////////////////////////////////////////////////////////////////////////////
+wave_1_per_point36=//
+wave_1_per_point37=// HSL to RGB by PieturP
+wave_1_per_point38=//
+wave_1_per_point39=// hue h ( 0 - 1 ) rr ( 0 - 1 )
+wave_1_per_point40=// saturation s ( 0 - 1 ) - > gg ( 0 - 1 )
+wave_1_per_point41=// luminance l ( 0 - 1 ) bb ( 0 - 1 )
+wave_1_per_point42=//
+wave_1_per_point43=cc=(6*h);
+wave_1_per_point44=cc=if(below(cc,1),0,if(below(cc,2),1,if(below(cc,3),2,if(below(cc,4),3,if(below(cc,5),4,5)))));
+wave_1_per_point45=zf=(6*h)-cc;
+wave_1_per_point46=zm=l;
+wave_1_per_point47=zp=l*(1-s);
+wave_1_per_point48=zq=l*(1-s*zf);
+wave_1_per_point49=zt=l*(1-s*(1-zf));
+wave_1_per_point50=rr=if(equal(cc,0),zm,if(equal(cc,1),zq,if(equal(cc,2),zp,if(equal(cc,3),zp,if(equal(cc,4),zt,zm)))));
+wave_1_per_point51=gg=if(equal(cc,0),zt,if(equal(cc,1),zm,if(equal(cc,2),zm,if(equal(cc,3),zq,if(equal(cc,4),zp,zp)))));
+wave_1_per_point52=bb=if(equal(cc,0),zp,if(equal(cc,1),zp,if(equal(cc,2),zt,if(equal(cc,3),zm,if(equal(cc,4),zm,zq)))));
+wave_1_per_point53=rr=if(equal(s,0),l,rr);
+wave_1_per_point54=gg=if(equal(s,0),l,gg);
+wave_1_per_point55=bb=if(equal(s,0),l,bb);
+wave_1_per_point56=
+wave_1_per_point57=//////////////////////////////////////////////////////////////////////////////
+wave_1_per_point58=
+wave_1_per_point59=r=rr;
+wave_1_per_point60=g=gg;
+wave_1_per_point61=b=bb;
+wave_1_per_point62=
+wavecode_2_enabled=0
+wavecode_2_samples=512
+wavecode_2_sep=0
+wavecode_2_bSpectrum=1
+wavecode_2_bUseDots=1
+wavecode_2_bDrawThick=1
+wavecode_2_bAdditive=0
+wavecode_2_scaling=0.999996
+wavecode_2_smoothing=0.000000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wave_2_per_frame1=vol = (bass_att + mid_att + treb_att)*.333333;
+wave_2_per_frame2=vol_avg = .1*(vol_avg*9 + vol);
+wave_2_per_frame3=vg = vol_avg*.1;
+wave_2_per_frame4=//t1 = if(above(vg,1.8),1.8,vg);
+wave_2_per_frame5=t1=time*.3;
+wave_2_per_frame6=//t2=sin(time)*1.5+2;
+wave_2_per_frame7=//t3=.25;
+wave_2_per_frame8=//t2=sin(time*.071)*1.2+4.1;
+wave_2_per_frame9=t2=2;
+wave_2_per_frame10=t3=0;
+wave_2_per_frame11=t4=0;
+wave_2_per_point1=tm=if(above(yp,0.98),t1,tm);
+wave_2_per_point2=ex=if(above(yp,0.98),t2,ex);
+wave_2_per_point3=//ex=2;
+wave_2_per_point4=sp=.01;
+wave_2_per_point5=yp=if(above(xp,0.9998),yp+sp,yp);
+wave_2_per_point6=xp=if(above(xp,0.9998),0,xp+sp);
+wave_2_per_point7=yp=if(above(yp,0.9998),0,yp);
+wave_2_per_point8=x=((xp*ex)*.1+.5)-(.05*ex)-t3;
+wave_2_per_point9=y=((yp*ex)*.1+.5)-(.05*ex)-t4;
+wave_2_per_point10=
+wave_2_per_point11=//g=sin(xp*yp*1.506+tm);
+wave_2_per_point12=//b=sin(xp*yp*3.142+tm);
+wave_2_per_point13=//r=cos(xp*yp*1.506+tm);
+wave_2_per_point14=
+wave_2_per_point15=r=sin(xp*3.14+tm)*sin(yp*3.14+tm);
+wave_2_per_point16=g=sin(xp*6.28+tm)*sin(yp*6.28+tm);
+wave_2_per_point17=b=.4;
+wave_2_per_point18=
+wave_2_per_point19=
+wave_2_per_point20=
+wave_2_per_point21=
+wave_2_per_point22=
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=1
+wavecode_3_bUseDots=1
+wavecode_3_bDrawThick=1
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.000000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+wave_3_per_frame1=vol = (bass_att + mid_att + treb_att)*.333333;
+wave_3_per_frame2=vol_avg = .1*(vol_avg*9 + vol);
+wave_3_per_frame3=vg = vol_avg*.1;
+wave_3_per_frame4=t1 = if(above(vg,1.8),1.8,vg);
+wave_3_per_point1=tm = q1;
+wave_3_per_point2=sp = sample*6.28*8*6;
+wave_3_per_point3=
+wave_3_per_point4=vol = (value1+value2)*.5;
+wave_3_per_point5=it = it*above(sample,0);
+wave_3_per_point6=it = it + 1;
+wave_3_per_point7=rad = .5 + vol;
+wave_3_per_point8=ra = rad*sin(sample*3.14);
+wave_3_per_point9=ox = ra*sin(sp);
+wave_3_per_point10=oy = sin(sample*3.14-1.57)*rad;
+wave_3_per_point11=oz = ra*cos(sp);
+wave_3_per_point12=
+wave_3_per_point13=xang = tm*.132;
+wave_3_per_point14=sxang = 0;
+wave_3_per_point15=yang = tm*.153;
+wave_3_per_point16=ayang = 0;
+wave_3_per_point17=zang = tm*.110;
+wave_3_per_point18=azang = 0;
+wave_3_per_point19=fov = 0.6 + 0.2*sin(tm);
+wave_3_per_point20=fov = .5;
+wave_3_per_point21=
+wave_3_per_point22=mx = ox*cos(zang) - oy*sin(zang);
+wave_3_per_point23=my = ox*sin(zang) + oy*cos(zang);
+wave_3_per_point24=ox = mx;
+wave_3_per_point25=oy = my;
+wave_3_per_point26=mx = ox*cos(yang) + oz*sin(yang);
+wave_3_per_point27=mz = - ox*sin(yang) + oz*cos(yang);
+wave_3_per_point28=ox = mx;
+wave_3_per_point29=oz = mz;
+wave_3_per_point30=my = oy*cos(xang) - oz*sin(xang);
+wave_3_per_point31=mz = oy*sin(xang) + oz*cos(xang);
+wave_3_per_point32=oy = my;
+wave_3_per_point33=oz = mz;
+wave_3_per_point34=
+wave_3_per_point35=oz = oz - 2;
+wave_3_per_point36=x = ox*fov/oz + 0.5;
+wave_3_per_point37=x = (x-.5)*0.75 + 0.5;
+wave_3_per_point38=y = oy*fov/oz + 0.5;
+wave_3_per_point39=
+wave_3_per_point40=r = 1;
+wave_3_per_point41=g = .25+.25*sin(sp);
+wave_3_per_point42=b = 0;
+wave_3_per_point43=a = .5 + (oz+2)*.5;
+wave_3_per_point44=a = a*below(z,2);
+wave_3_per_point45=minrgb = min(r,min(g,b));
+wave_3_per_point46=maxrgb = max(r,max(g,b));
+wave_3_per_point47=l = (maxrgb-minrgb)*.5;
+wave_3_per_point48=diff = maxrgb-minrgb;
+wave_3_per_point49=sum = maxrgb+minrgb;
+wave_3_per_point50=s = if(above(l,0.5),diff/(2-sum),diff/sum)*(1-equal(l,0));
+wave_3_per_point51=h = if(equal(r,maxrgb),(g-b)/diff,if(equal(g,maxrgb),2+(b-r)/diff,4+(r-g)/diff));
+wave_3_per_point52=h = h*0.1666666;
+wave_3_per_point53=h = if(below(h,0),0,if(above(h,1),1,h));
+wave_3_per_point54=
+wave_3_per_point55=h = h + time*0.05*1.324;
+wave_3_per_point56=h = h - int(h);
+wave_3_per_point57=
+wave_3_per_point58=tmpb = if(below(l,0.5),l*(1+s),(l+s)-(s*l));
+wave_3_per_point59=tmpa = 2*l - tmpb;
+wave_3_per_point60=hvr = h + .333333;
+wave_3_per_point61=hvr = if(below(hvr,0),hvr+1,if(above(hvr,1),hvr-1,hvr));
+wave_3_per_point62=hvg = h;
+wave_3_per_point63=hvg = if(below(hvg,0),hvg+1,if(above(hvg,1),hvg-1,hvg));
+wave_3_per_point64=hvb = h - .333333;
+wave_3_per_point65=hvb = if(below(hvb,0),hvb+1,if(above(hvb,1),hvb-1,hvb));
+wave_3_per_point66=
+wave_3_per_point67=r = if(below(6*hvr,1),tmpa+(tmpb-tmpa)*6*hvr, if(below(2*hvr,1),tmpb, if(below(hvr*3,2),tmpa+(tmpb-tmpa)*(.666666-hvr)*6,tmpa)));
+wave_3_per_point68=g = if(below(6*hvg,1),tmpa+(tmpb-tmpa)*6*hvg, if(below(2*hvg,1),tmpb, if(below(hvg*3,2),tmpa+(tmpb-tmpa)*(.666666-hvg)*6,tmpa)));
+wave_3_per_point69=b = if(below(6*hvb,1),tmpa+(tmpb-tmpa)*6*hvb, if(below(2*hvb,1),tmpb, if(below(hvb*3,2),tmpa+(tmpb-tmpa)*(.666666-hvb)*6,tmpa)));
+shapecode_0_enabled=0
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=1
+shapecode_0_textured=1
+shapecode_0_x=0.140000
+shapecode_0_y=0.170000
+shapecode_0_rad=2.207644
+shapecode_0_ang=3.141593
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=0.255374
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=0.000000
+shapecode_0_border_g=0.000000
+shapecode_0_border_b=0.000000
+shapecode_0_border_a=0.000000
+shapecode_1_enabled=0
+shapecode_1_sides=100
+shapecode_1_additive=0
+shapecode_1_thickOutline=1
+shapecode_1_textured=1
+shapecode_1_x=0.140000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100996
+shapecode_1_ang=3.141593
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=3.241264
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=0.600000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=0.000000
+shapecode_1_border_g=0.000000
+shapecode_1_border_b=0.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=
+shape_1_per_frame2=p=p+.62;
+shape_1_per_frame3=slowp=slowp+.062;
+shape_1_per_frame4=p=below(p,6.283)*p;
+shape_1_per_frame5=slowp=below(slowp,6.283)*slowp;
+shape_1_per_frame6=x=sin(p)*.35+.5;
+shape_1_per_frame7=y=cos(p)*.35+.5;
+shape_1_per_frame8=h=sin(slowp)*.5+.5;
+shape_1_per_frame9=s=1;
+shape_1_per_frame10=l=1;
+shape_1_per_frame11=///////////////////////////////////////////////////////////////////////////////////////////////
+shape_1_per_frame12=//
+shape_1_per_frame13=// HSL to RGB by PieturP
+shape_1_per_frame14=//
+shape_1_per_frame15=// hue h ( 0 - 0.9 ) rr ( 0 - 1 )
+shape_1_per_frame16=// saturation s ( 0 - 1 ) - > gg ( 0 - 1 )
+shape_1_per_frame17=// luminance l ( 0 - 1 ) bb ( 0 - 1 )
+shape_1_per_frame18=//
+shape_1_per_frame19=cc=(6*h);
+shape_1_per_frame20=cc=if(below(cc,1),0,if(below(cc,2),1,if(below(cc,3),2,if(below(cc,4),3,if(below(cc,5),4,5)))));
+shape_1_per_frame21=zf=(6*h)-cc;
+shape_1_per_frame22=zm=l;
+shape_1_per_frame23=zp=l*(1-s);
+shape_1_per_frame24=zq=l*(1-s*zf);
+shape_1_per_frame25=zt=l*(1-s*(1-zf));
+shape_1_per_frame26=monitor=zq;
+shape_1_per_frame27=rr=if(equal(cc,0),zm,if(equal(cc,1),zq,if(equal(cc,2),zp,if(equal(cc,3),zp,if(equal(cc,4),zt,zm)))));
+shape_1_per_frame28=gg=if(equal(cc,0),zt,if(equal(cc,1),zm,if(equal(cc,2),zm,if(equal(cc,3),zq,if(equal(cc,4),zp,zp)))));
+shape_1_per_frame29=bb=if(equal(cc,0),zp,if(equal(cc,1),zp,if(equal(cc,2),zt,if(equal(cc,3),zm,if(equal(cc,4),zm,zq)))));
+shape_1_per_frame30=rr=if(equal(s,0),l,rr);
+shape_1_per_frame31=gg=if(equal(s,0),l,gg);
+shape_1_per_frame32=bb=if(equal(s,0),l,bb);
+shape_1_per_frame33=
+shape_1_per_frame34=///////////////////////////////////////////////////////////////////////////////////////////////
+shape_1_per_frame35=r=rr;
+shape_1_per_frame36=g=gg;
+shape_1_per_frame37=b=bb;
+shape_1_per_frame38=
+shape_1_per_frame39=h=sin(slowp)*.5+.5;
+shape_1_per_frame40=l=.5;
+shape_1_per_frame41=s=.55;
+shape_1_per_frame42=///////////////////////////////////////////////////////////////////////////////////////////////
+shape_1_per_frame43=//
+shape_1_per_frame44=// HSL to RGB by PieturP
+shape_1_per_frame45=//
+shape_1_per_frame46=// hue h ( 0 - 0.9 ) rr ( 0 - 1 )
+shape_1_per_frame47=// saturation s ( 0 - 1 ) - > gg ( 0 - 1 )
+shape_1_per_frame48=// luminance l ( 0 - 1 ) bb ( 0 - 1 )
+shape_1_per_frame49=//
+shape_1_per_frame50=cc=(6*h);
+shape_1_per_frame51=cc=if(below(cc,1),0,if(below(cc,2),1,if(below(cc,3),2,if(below(cc,4),3,if(below(cc,5),4,5)))));
+shape_1_per_frame52=zf=(6*h)-cc;
+shape_1_per_frame53=zm=l;
+shape_1_per_frame54=zp=l*(1-s);
+shape_1_per_frame55=zq=l*(1-s*zf);
+shape_1_per_frame56=zt=l*(1-s*(1-zf));
+shape_1_per_frame57=monitor=zq;
+shape_1_per_frame58=rr=if(equal(cc,0),zm,if(equal(cc,1),zq,if(equal(cc,2),zp,if(equal(cc,3),zp,if(equal(cc,4),zt,zm)))));
+shape_1_per_frame59=gg=if(equal(cc,0),zt,if(equal(cc,1),zm,if(equal(cc,2),zm,if(equal(cc,3),zq,if(equal(cc,4),zp,zp)))));
+shape_1_per_frame60=bb=if(equal(cc,0),zp,if(equal(cc,1),zp,if(equal(cc,2),zt,if(equal(cc,3),zm,if(equal(cc,4),zm,zq)))));
+shape_1_per_frame61=rr=if(equal(s,0),l,rr);
+shape_1_per_frame62=gg=if(equal(s,0),l,gg);
+shape_1_per_frame63=bb=if(equal(s,0),l,bb);
+shape_1_per_frame64=
+shape_1_per_frame65=///////////////////////////////////////////////////////////////////////////////////////////////
+shape_1_per_frame66=r2=rr;
+shape_1_per_frame67=g2=gg;
+shape_1_per_frame68=b2=bb;
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=1.791410
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=0.561512
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=1.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shapecode_3_enabled=0
+shapecode_3_sides=100
+shapecode_3_additive=0
+shapecode_3_thickOutline=1
+shapecode_3_textured=0
+shapecode_3_x=0.140000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.123235
+shapecode_3_ang=3.141593
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=3.241264
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=1.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=1.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=1.000000
+shapecode_3_a2=1.000000
+shapecode_3_border_r=0.000000
+shapecode_3_border_g=0.000000
+shapecode_3_border_b=0.000000
+shapecode_3_border_a=1.000000
+shape_3_per_frame1=
+shape_3_per_frame2=p=p+.314;
+shape_3_per_frame3=slowp=slowp+.00628;
+shape_3_per_frame4=p=below(p,6.283)*p;
+shape_3_per_frame5=slowp=below(slowp,6.283)*slowp;
+shape_3_per_frame6=my=my+(mid*mid*mid)*.02;
+shape_3_per_frame7=turn=below(sin(my)*.5+.5,.5);
+shape_3_per_frame8=x=if(equal(turn,1),sin(p)*.3+.5,sin(628-p)*.3+.5);
+shape_3_per_frame9=y=if(equal(turn,1),cos(p)*.3+.5,cos(628-p)*.3+.5);
+shape_3_per_frame10=h=sin(slowp)*.5+.5;
+shape_3_per_frame11=s=min(abs(bass*.6),1);
+shape_3_per_frame12=l=1;
+shape_3_per_frame13=///////////////////////////////////////////////////////////////////////////////////////////////
+shape_3_per_frame14=//
+shape_3_per_frame15=// HSL to RGB by PieturP
+shape_3_per_frame16=//
+shape_3_per_frame17=// hue h ( 0 - 0.9 ) rr ( 0 - 1 )
+shape_3_per_frame18=// saturation s ( 0 - 1 ) - > gg ( 0 - 1 )
+shape_3_per_frame19=// luminance l ( 0 - 1 ) bb ( 0 - 1 )
+shape_3_per_frame20=//
+shape_3_per_frame21=cc=(6*h);
+shape_3_per_frame22=cc=if(below(cc,1),0,if(below(cc,2),1,if(below(cc,3),2,if(below(cc,4),3,if(below(cc,5),4,5)))));
+shape_3_per_frame23=zf=(6*h)-cc;
+shape_3_per_frame24=zm=l;
+shape_3_per_frame25=zp=l*(1-s);
+shape_3_per_frame26=zq=l*(1-s*zf);
+shape_3_per_frame27=zt=l*(1-s*(1-zf));
+shape_3_per_frame28=monitor=zq;
+shape_3_per_frame29=rr=if(equal(cc,0),zm,if(equal(cc,1),zq,if(equal(cc,2),zp,if(equal(cc,3),zp,if(equal(cc,4),zt,zm)))));
+shape_3_per_frame30=gg=if(equal(cc,0),zt,if(equal(cc,1),zm,if(equal(cc,2),zm,if(equal(cc,3),zq,if(equal(cc,4),zp,zp)))));
+shape_3_per_frame31=bb=if(equal(cc,0),zp,if(equal(cc,1),zp,if(equal(cc,2),zt,if(equal(cc,3),zm,if(equal(cc,4),zm,zq)))));
+shape_3_per_frame32=rr=if(equal(s,0),l,rr);
+shape_3_per_frame33=gg=if(equal(s,0),l,gg);
+shape_3_per_frame34=bb=if(equal(s,0),l,bb);
+shape_3_per_frame35=
+shape_3_per_frame36=///////////////////////////////////////////////////////////////////////////////////////////////
+shape_3_per_frame37=r=rr;
+shape_3_per_frame38=g=gg;
+shape_3_per_frame39=b=bb;
+shape_3_per_frame40=
+shape_3_per_frame41=h=sin(slowp)*.5+.5;
+shape_3_per_frame42=l=min(abs(bass*.6),1);
+shape_3_per_frame43=s=1;
+shape_3_per_frame44=///////////////////////////////////////////////////////////////////////////////////////////////
+shape_3_per_frame45=//
+shape_3_per_frame46=// HSL to RGB by PieturP
+shape_3_per_frame47=//
+shape_3_per_frame48=// hue h ( 0 - 0.9 ) rr ( 0 - 1 )
+shape_3_per_frame49=// saturation s ( 0 - 1 ) - > gg ( 0 - 1 )
+shape_3_per_frame50=// luminance l ( 0 - 1 ) bb ( 0 - 1 )
+shape_3_per_frame51=//
+shape_3_per_frame52=cc=(6*h);
+shape_3_per_frame53=cc=if(below(cc,1),0,if(below(cc,2),1,if(below(cc,3),2,if(below(cc,4),3,if(below(cc,5),4,5)))));
+shape_3_per_frame54=zf=(6*h)-cc;
+shape_3_per_frame55=zm=l;
+shape_3_per_frame56=zp=l*(1-s);
+shape_3_per_frame57=zq=l*(1-s*zf);
+shape_3_per_frame58=zt=l*(1-s*(1-zf));
+shape_3_per_frame59=monitor=zq;
+shape_3_per_frame60=rr=if(equal(cc,0),zm,if(equal(cc,1),zq,if(equal(cc,2),zp,if(equal(cc,3),zp,if(equal(cc,4),zt,zm)))));
+shape_3_per_frame61=gg=if(equal(cc,0),zt,if(equal(cc,1),zm,if(equal(cc,2),zm,if(equal(cc,3),zq,if(equal(cc,4),zp,zp)))));
+shape_3_per_frame62=bb=if(equal(cc,0),zp,if(equal(cc,1),zp,if(equal(cc,2),zt,if(equal(cc,3),zm,if(equal(cc,4),zm,zq)))));
+shape_3_per_frame63=rr=if(equal(s,0),l,rr);
+shape_3_per_frame64=gg=if(equal(s,0),l,gg);
+shape_3_per_frame65=bb=if(equal(s,0),l,bb);
+shape_3_per_frame66=
+shape_3_per_frame67=///////////////////////////////////////////////////////////////////////////////////////////////
+shape_3_per_frame68=r2=rr;
+shape_3_per_frame69=g2=gg;
+shape_3_per_frame70=b2=bb;
+shape_3_per_frame71=border_r=rr;
+shape_3_per_frame72=border_g=gg;
+shape_3_per_frame73=border_b=bb;
+per_frame_1=decay=.8;
+per_frame_2=warp=0;
+per_frame_3=dx=0;
+per_frame_4=dy=0;
+per_frame_5=zoom=1;
diff --git a/InstallerDependencies/Visuals/projectM/presets/EvilJim - Follow the ball.milk b/InstallerDependencies/Visuals/projectM/presets/EvilJim - Follow the ball.milk
new file mode 100644
index 00000000..acc49b76
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/EvilJim - Follow the ball.milk
@@ -0,0 +1,65 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.980000
+fVideoEchoZoom=0.999608
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=1
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.800000
+fWaveScale=0.250302
+fWaveSmoothing=0.000000
+fWaveParam=-0.250000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=0.990097
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r=bass*2;
+per_frame_2=wave_g=mid*4;
+per_frame_3=wave_b=treb*0.6;
+per_pixel_1=dx=if(above(x,bass*0.6),0.02,-0.02);
+per_pixel_2=dy=if(above(y,treb_att*0.5),0.02,-0.02);
diff --git a/InstallerDependencies/Visuals/projectM/presets/EvilJim - Ice Drops.milk b/InstallerDependencies/Visuals/projectM/presets/EvilJim - Ice Drops.milk
new file mode 100644
index 00000000..e92096ae
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/EvilJim - Ice Drops.milk
@@ -0,0 +1,61 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.990000
+fVideoEchoZoom=0.999601
+fVideoEchoAlpha=0.499900
+nVideoEchoOrientation=0
+nWaveMode=6
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=1
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=1
+bDarken=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.199862
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=2.000000
+fModWaveAlphaEnd=2.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000353
+fZoomExponent=1.000157
+fShader=0.000000
+zoom=0.999511
+rot=0.000000
+cx=0.500001
+cy=0.050000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000158
+sy=1.000000
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.999000
+wave_y=0.000000
+ob_size=0.500000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+per_frame_1=warp=0;
+per_frame_2=wave_r=treb;
+per_frame_3=wave_g=mid;
+per_frame_4=wave_b=bass;
+per_frame_5=dy=bass/50;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Fvese - 0 To 60.milk b/InstallerDependencies/Visuals/projectM/presets/Fvese - 0 To 60.milk
new file mode 100644
index 00000000..e0b8a157
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Fvese - 0 To 60.milk
@@ -0,0 +1,81 @@
+[preset00]
+fRating=3.500000
+fGammaAdj=1.000000
+fDecay=0.970000
+fVideoEchoZoom=1.008000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=0
+nWaveMode=2
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.091679
+fWaveScale=0.721421
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=1.489999
+fModWaveAlphaEnd=0.750000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.007348
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.115109
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000005
+dy=0.000000
+warp=0.010000
+sx=0.999998
+sy=1.000000
+wave_r=0.760000
+wave_g=0.480000
+wave_b=0.390000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=1.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=6.400000
+nMotionVectorsY=4.800000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=3.000000
+mv_r=0.669900
+mv_g=0.480000
+mv_b=0.390000
+mv_a=0.000000
+per_frame_1=wave_b = rand(100)/100;
+per_frame_2=wave_r = rand(100)/100;
+per_frame_3=wave_g = rand(100)/100;
+per_frame_4=wave_y = wave_y;
+per_frame_5=bass_eff = max(max(bass,bass_att)-1,0);
+per_frame_6=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_7=vol =bass+treb+mid;
+per_frame_8=dx = 0.005 + 0.002*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );
+per_frame_9=dy = 0.005 + 0.002*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );
+per_frame_10=dx_r = equal(bass_thresh,2)*0.016*sin(time*3) + (1-equal(bass_eff,2))*dx_r;
+per_frame_11=dy_r = equal(bass_thresh,2)*0.012*sin(time*7) + (1-equal(bass_eff,2))*dy_r;
+per_frame_12=rot = rot + 0.070*( 0.60*sin(0.381*time) + 0.40*sin(0.479*time) );
+per_frame_13=q1=sin(time*.7*.5)+(dx_r*dy_r)+(dx*dy);
+per_frame_14=q2=sin(time*.7*.2)+(dx_r*dy_r);
+per_frame_15=q3=0.1*(atan(abs(-rad+.5)))*q2;
+per_pixel_1=zoom=zoom+.05*q3+.05*q1+bass_eff;
+per_pixel_2=dx = .01*atan((rad)/.1*sin((dx_r*dy_r)*20+time*5));
+per_pixel_3=zoom = zoom + bass_eff + rad*.2*(q2)-vol;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Fvese - A Blur.milk b/InstallerDependencies/Visuals/projectM/presets/Fvese - A Blur.milk
new file mode 100644
index 00000000..befc1b08
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Fvese - A Blur.milk
@@ -0,0 +1,80 @@
+[preset00]
+fRating=2.500000
+fGammaAdj=1.000000
+fDecay=0.985000
+fVideoEchoZoom=0.998100
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=3
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=1
+bDarken=0
+bSolarize=1
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.597149
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=1.489999
+fModWaveAlphaEnd=0.750000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999500
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000005
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.200000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=1.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=43.200001
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=4.500000
+mv_r=0.759900
+mv_g=0.480000
+mv_b=0.390000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.350*( 0.60*sin(0.825*time) + 0.40*sin(0.915*time) );
+per_frame_2=wave_g = wave_g + 0.350*( 0.60*sin(0.900*time) + 0.40*sin(1.025*time) );
+per_frame_3=wave_b = wave_b + 0.350*( 0.60*sin(0.810*time) + 0.40*sin(0.950*time) );
+per_frame_4=wave_x = wave_x + 0.4*sin(1.85*time);
+per_frame_5=wave_y = wave_y + 0.2*sin(1.85*time);
+per_frame_6=dx = 0.005 + 0.002*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );
+per_frame_7=dy = 0.005 + 0.002*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );
+per_frame_8=bass_eff = max(max(bass,bass_att)-1,0);
+per_frame_9=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_10=decay = decay - 0.05*equal(frame%16,0);
+per_frame_11=zoom = zoom + 0.05 * cos(ang-ang);
+per_frame_12=rot = bass_eff/bass_thresh-0.05;
+per_frame_13=monitor=zoom;
+per_pixel_1=sx=sx+0.07*sin(rad*18 + time*9);
+per_pixel_2=sy=sy+0.07*sin(rad*18 + time*9);
+per_pixel_3=
+per_pixel_4=
diff --git a/InstallerDependencies/Visuals/projectM/presets/Fvese - Lifesavor Anyone.milk b/InstallerDependencies/Visuals/projectM/presets/Fvese - Lifesavor Anyone.milk
new file mode 100644
index 00000000..958bb3ed
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Fvese - Lifesavor Anyone.milk
@@ -0,0 +1,67 @@
+[preset00]
+fRating=2.500000
+fGammaAdj=1.000000
+fDecay=0.980000
+fVideoEchoZoom=1.008081
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.997766
+fWaveScale=0.653090
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=1.489999
+fModWaveAlphaEnd=0.750000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=100.000000
+fShader=0.000000
+zoom=0.999500
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000005
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.350000
+wave_g=0.550000
+wave_b=0.450000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=1.000000
+ob_b=0.200000
+ob_a=0.000000
+ib_size=0.000000
+ib_r=1.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=43.200001
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=2.500000
+mv_r=0.759900
+mv_g=0.480000
+mv_b=0.390000
+mv_a=0.000000
+per_frame_1=wave_r = rand(100)/100;
+per_frame_2=wave_g = rand(100)/100;
+per_frame_3=wave_b = rand(100)/100;
+per_pixel_1=zoom = pow(rad,0.05)+.05/bass;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Fvese - New meetings.milk b/InstallerDependencies/Visuals/projectM/presets/Fvese - New meetings.milk
new file mode 100644
index 00000000..c31a6f00
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Fvese - New meetings.milk
@@ -0,0 +1,88 @@
+[preset00]
+fRating=2.500000
+fGammaAdj=1.000000
+fDecay=0.985000
+fVideoEchoZoom=0.998100
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=3
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=1
+bDarken=0
+bSolarize=1
+bInvert=0
+fWaveAlpha=4.050169
+fWaveScale=0.597149
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=1.489999
+fModWaveAlphaEnd=0.750000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999500
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000005
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.200000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=1.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=43.200001
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.500001
+mv_r=0.759900
+mv_g=0.480000
+mv_b=0.390000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.350*( 0.60*sin(0.825*time) + 0.40*sin(0.915*time) );
+per_frame_2=wave_g = wave_g + 0.350*( 0.60*sin(0.900*time) + 0.40*sin(1.025*time) );
+per_frame_3=wave_b = wave_b + 0.350*( 0.60*sin(0.810*time) + 0.40*sin(0.950*time) );
+per_frame_4=wave_y = wave_y + 0.2*sin(1.85*time);
+per_frame_5=time = time/100;
+per_frame_6=cx = cx + 0.225*( 0.60*sin(0.350*time) + 0.40*sin(0.350*time) );
+per_frame_7=cy = cy + 0.225*( 0.60*sin(0.350*time) + 0.40*sin(0.350*time) );
+per_frame_8=dx = 0.05 + 0.009*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );
+per_frame_9=dy = 0.0005 + 0.009*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );
+per_frame_10=xwave_x = wave_x + 0.250*( 0.60*sin(2.112*time) + 0.40*sin(1.589*time) );
+per_frame_11=xwave_y = wave_y + 0.250*( 0.60*sin(1.752*time) + 0.40*sin(2.298*time) );
+per_frame_12=bass_eff = max(max(bass,bass_att)-1,0);
+per_frame_13=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_14=decay = decay - 0.05*equal(frame%16,0);
+per_frame_15=zoom = decay;
+per_frame_16=rot = bass_eff/bass_thresh;
+per_frame_17=ob_size = rot-bass;
+per_frame_18=ib_a = 1-bass_eff;
+per_frame_19=ib_r = 1-wave_r;
+per_frame_20=ib_b = 1-wave_g;
+per_frame_21=ib_g = 1-wave_b;
+per_pixel_1=sx=sx+0.07*sin(rad*18 + time*9);
+per_pixel_2=sy=sy+0.07*sin(rad*18 + time*9);
+per_pixel_3=zoom=zoom + 0.005*tan(ang-ang);
+per_pixel_4=ray = pow(rad,1.85)+.037;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Fvese - Quicksand.milk b/InstallerDependencies/Visuals/projectM/presets/Fvese - Quicksand.milk
new file mode 100644
index 00000000..0254b824
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Fvese - Quicksand.milk
@@ -0,0 +1,78 @@
+[preset00]
+fRating=4.500000
+fGammaAdj=1.000000
+fDecay=0.992000
+fVideoEchoZoom=1.008000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=0
+nWaveMode=3
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=1
+bDarken=0
+bSolarize=1
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.499226
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=1.489999
+fModWaveAlphaEnd=0.750000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999500
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000005
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.760000
+wave_g=0.480000
+wave_b=0.390000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=1.000000
+ob_b=0.200000
+ob_a=0.000000
+ib_size=0.000000
+ib_r=1.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=0.669900
+mv_g=0.480000
+mv_b=0.390000
+mv_a=0.200000
+per_frame_1=wave_r = wave_r + 0.350*( 0.60*sin(0.825*time) + 0.40*sin(0.915*time) );
+per_frame_2=wave_g = wave_g + 0.350*( 0.60*sin(0.900*time) + 0.40*sin(1.025*time) );
+per_frame_3=vol = (5*bass + 3*mid + 2*treb)/10;
+per_frame_4=wave_x = wave_x + 0.03*vol*sin(0.727*time);
+per_frame_5=wave_y = wave_y + 0.04*vol*sin(0.777*time);
+per_frame_6=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_7=dx = 0.005 + 0.002*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );
+per_frame_8=dy = 0.005 + 0.002*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );
+per_frame_9=monitor = time;
+per_pixel_1=cx = (0.25&(x*5-0.5))*0.1+0.025;
+per_pixel_2=cy = (0.25&(y*5-0.5))*0.1+0.025;
+per_pixel_3=sx = sx -.005-abs(x-1)*.01;
+per_pixel_4=sy = sy -.005-abs(x-1)*.01;
+per_pixel_5=zoom = pow(rad,0.05)+.050;
+per_pixel_6=rot = 0.03*sin(0.84*time)-0.013*cos(0.784*time)+0.02*sin(1-rad);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Fvese - Stand Still!.milk b/InstallerDependencies/Visuals/projectM/presets/Fvese - Stand Still!.milk
new file mode 100644
index 00000000..921b53d8
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Fvese - Stand Still!.milk
@@ -0,0 +1,80 @@
+[preset00]
+fRating=2.500000
+fGammaAdj=2.200000
+fDecay=0.980000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=3
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=1
+bDarken=0
+bSolarize=1
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=0.610095
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=1.000000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.000000
+cy=0.000000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.400000
+wave_g=0.400000
+wave_b=0.400000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.500000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.500000
+ib_a=0.000000
+nMotionVectorsX=8.319999
+nMotionVectorsY=2.400000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=2.000000
+mv_r=0.000000
+mv_g=0.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = rand(100)/100;
+per_frame_2=wave_g = rand(100)/100;
+per_frame_3=wave_b = rand(100)/100;
+per_frame_4=wave_x = wave_x + if(above(wave_y,.75), - 0.1*tan(time), + 0.1*tan(time))-.4+((cos(vol))/2)*myeff;
+per_frame_5=wave_y = wave_y + if(below(wave_x,.75), -0.1*tan(time), +0.1*tan(time))-.4+((cos(vol))/2)*myeff;
+per_frame_6=cx = cx + 0.410*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time)+vol );
+per_frame_7=cy = cy + 0.410*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time)+vol );
+per_frame_8=zoom = zoom + 0.020*( 0.60*sin(0.339*time) + 0.40*sin(0.276*time)*vol );
+per_frame_9=rot = rot + 0.005*( 0.60*sin(0.281*time) + 0.40*sin(0.839*time)*vol );
+per_frame_10=vol = (bass_att+bass+mid+mid_att+treb+treb_att);
+per_frame_11=myeff=(wave_x + if(above(wave_y,0.75), + 0.1*tan(time), + 0.1*tan(time))+.4+((cos(vol))/2) & wave_y + 0.40*sin(8*mid)+.25+(vol/10));
+per_frame_12=dx = dx + 0.085*pow(rad,y*2)*sin(time)/vol;
+per_frame_13=dy = dy + 0.085*pow(rad,y*2)*cos(time)/vol;
+per_frame_14=sx = sx + 0.0555*pow(rad,x*2)*sin(time)/vol;
+per_frame_15=sy = sy + 0.0777*pow(rad,y*2)*sin(time);
+per_frame_16=monitor = vol;
+per_frame_17=
diff --git a/InstallerDependencies/Visuals/projectM/presets/Fvese - The Tunnel (Final Stage Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Fvese - The Tunnel (Final Stage Mix).milk
new file mode 100644
index 00000000..3d971165
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Fvese - The Tunnel (Final Stage Mix).milk
@@ -0,0 +1,83 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=0.995000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=0.241456
+fWaveSmoothing=0.090000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=0.741921
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=0.999900
+sy=0.999900
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.400000
+ob_a=0.000000
+ib_size=0.005000
+ib_r=0.000000
+ib_g=0.300000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=6.400000
+nMotionVectorsY=1.440001
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=0.759900
+mv_g=0.480000
+mv_b=0.390000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.45*(0.5*sin(time*0.701)+ 0.3*cos(time*0.438));
+per_frame_2=wave_b = wave_b - 0.4*(0.5*sin(time*4.782)+0.5*cos(time*0.722));
+per_frame_3=wave_g = wave_g + 0.4*sin(time*1.931);
+per_frame_4=vol=0.15*(bass_att+bass+mid+mid_att);
+per_frame_5=dx_r=if(equal(q3,0),if(above(x,xpos),dx*q1-xpos,dx+q2-xpos),dx);
+per_frame_6=dy_r=if(equal(q3,0),if(above(y,ypos),dy*q1-ypos,dy+q2-ypos),dy);
+per_frame_7=rot = rot+0.05*( 0.60*sin(0.381*time) + 0.40*sin(0.479*time) );
+per_frame_8=mytime=.7;
+per_frame_9=q1=sin(time*mytime*4);
+per_frame_10=q2=cos(time*mytime*2);
+per_frame_11=q3=abs(rad-.5)*(q2*q1);
+per_frame_12=xpos=.5/vol;
+per_frame_13=ypos=.5/vol;
+per_frame_14=wave_x=.5+0.1*sin(time+rand(100)/100);
+per_frame_15=wave_y=.5+0.1*cos(time+rand(100)/100);
+per_frame_16=ib_r=q3+q2;
+per_frame_17=ib_b=q2+q1;
+per_frame_18=ib_g=q1+q3;
+per_pixel_1=zoom = if(below(q1,0),0.5*x,if(equal(q2,0),0.9*(1-x),if(above(q3,0),0.9*y,0.9*(1-y)))) + 0.6 - 0.13*(min(q3,0.3));
+per_pixel_2=
diff --git a/InstallerDependencies/Visuals/projectM/presets/Fvese - Window Reflection 6.milk b/InstallerDependencies/Visuals/projectM/presets/Fvese - Window Reflection 6.milk
new file mode 100644
index 00000000..e88b133f
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Fvese - Window Reflection 6.milk
@@ -0,0 +1,83 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.000000
+fDecay=0.995000
+fVideoEchoZoom=0.199862
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=0
+nWaveMode=5
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=0.149765
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=0.010000
+fShader=0.000000
+zoom=0.999800
+rot=0.800000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=0.999900
+sy=0.999800
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.300000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=0.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.45*(0.5*sin(time*0.701)+ 0.3*cos(time*0.438));
+per_frame_2=wave_b = wave_b - 0.4*(0.5*sin(time*4.782)+0.5*cos(time*0.722));
+per_frame_3=wave_g = wave_g + 0.4*sin(time*1.931);
+per_frame_4=vol=0.15*(bass_att+bass+mid+mid_att);
+per_frame_5=bass_eff = max(max(bass,bass_att)-1,0);
+per_frame_6=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_7=q1=bass_eff+sin(time*mytime*4);
+per_frame_8=q2=bas_eff+cos(time*mytime*2);
+per_frame_9=q3=bass_eff+abs(rad+.5)+(q2*q5);
+per_frame_10=q4=bass_thresh+abs(.9*5)*(dx_r*dy_r)*(dx*dy);
+per_frame_11=q5=bass_tresh+cos(.2*2)*(dx_r*dy_r);
+per_frame_12=q6=bass_thresh+0.1*(atan(abs(-rad+.5)))*q1;
+per_frame_13=q7=if(above(bass+bass_att,2),-1.5+bass+bass_att,0);
+per_frame_14=q8=below(rad- 0.1*x,0.18);
+per_frame_15=q9=if(above(rad,.5),.9+rad,.5+bass*3%1000*.1);
+per_frame_16=dx=q8;
+per_frame_17=zoom=q9+0.4;
+per_frame_18=monitor=zoom;
+per_pixel_1=rot=zoom;
+per_frame_init_1=myzoom=if(below(q1,q6),0.3*dx,if(equal(q2,q5),0.2*(1-dx),if(above(q3,q4),0.3*dy,0.2*(1-dy)+if(equal(q4,q3),0.3* dx, if(above(q5,q2),0.25*(1-dx),if(below(q6,q1),0.3*dy,0.25*(1-dy)+if(equal(q7,q9),0.3*dx, if(below(q8,q7),0.2*(1-dx),if(equal(q9,q6),0.3*dy,0.2*(1-dy)))))))))) + .8 - 0.02*(min(q6+q1,.5))*bass_eff;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Fvese - Zoom Effects (Remix 2).milk b/InstallerDependencies/Visuals/projectM/presets/Fvese - Zoom Effects (Remix 2).milk
new file mode 100644
index 00000000..07908af0
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Fvese - Zoom Effects (Remix 2).milk
@@ -0,0 +1,91 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=0.980000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=0.241456
+fWaveSmoothing=0.090000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=0.550300
+fShader=0.000000
+zoom=0.999899
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=0.999900
+sy=0.999900
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.400000
+ob_a=0.000000
+ib_size=0.005000
+ib_r=0.000000
+ib_g=0.300000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=3.200000
+nMotionVectorsY=2.400006
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=0.759900
+mv_g=0.480000
+mv_b=0.390000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.45*(0.5*sin(time*0.701)+ 0.3*cos(time*0.438));
+per_frame_2=wave_b = wave_b - 0.4*(0.5*sin(time*4.782)+0.5*cos(time*0.722));
+per_frame_3=wave_g = wave_g + 0.4*sin(time*1.931);
+per_frame_4=vol=0.15*(bass_att+bass+mid+mid_att);
+per_frame_5=bass_eff = max(max(bass,bass_att)-1,0);
+per_frame_6=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_7=dx = 0.005 + 0.002*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );
+per_frame_8=dy = 0.005 + 0.002*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );
+per_frame_9=dx_r=if(equal(q3,0),if(above(x,xpos),dx*q1-xpos,dx+q2-xpos),dx);
+per_frame_10=dy_r=if(equal(q3,0),if(above(y,ypos),dy*q1-ypos,dy+q2-ypos),dy);
+per_frame_11=rot = rot+0.15*( 0.60*sin(0.381*time) + 0.40*sin(0.479*time) );
+per_frame_12=mytime=.9;
+per_frame_13=xpos=.5/vol;
+per_frame_14=ypos=.5/vol;
+per_frame_15=q1=sin(time*mytime*4);
+per_frame_16=q2=cos(time*mytime*2);
+per_frame_17=q3=abs(rad+.5)+(q2*q5);
+per_frame_18=q4=abs(.9*5)*(dx_r*dy_r)*(dx*dy);
+per_frame_19=q5=cos(.2*2)*(dx_r*dy_r);
+per_frame_20=q6=0.1*(atan(abs(-rad+.5)))*q1;
+per_frame_21=q7=q1+q2+q3+q4+q5+q6;
+per_frame_22=wave_x=.5+0.1*sin(time+rand(100)/100);
+per_frame_23=wave_y=.5+0.1*cos(time+rand(100)/100);
+per_frame_24=ib_r=q3+q2;
+per_frame_25=ib_b=q2+q1;
+per_frame_26=ib_g=q1+q3;
+per_frame_27=monitor=q3;
+per_pixel_1=zoom= if(below(q1,q6),0.5*x,if(equal(q2,q5),0.9*(1-x),if(above(q3,q4),0.5*y,0.9*(1-y)+if(below(q4,q3),0.5* xpos, if(equal(q5,q2),0.9*(1-xpos),if(above(q6,q1),0.9*ypos,0.3*(1-ypos))))))) + .8 - 0.03*(min(q7+q1,1));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Fvese - Zoom Effects With A Twist 2.milk b/InstallerDependencies/Visuals/projectM/presets/Fvese - Zoom Effects With A Twist 2.milk
new file mode 100644
index 00000000..72cfa1c8
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Fvese - Zoom Effects With A Twist 2.milk
@@ -0,0 +1,99 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.000000
+fDecay=0.995000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=0.499227
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=0.880200
+fShader=0.000000
+zoom=0.999800
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=0.999900
+sy=0.999899
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.300000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=19.200027
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=0.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.45*(0.5*sin(time*0.701)+ 0.3*cos(time*0.438));
+per_frame_2=wave_b = wave_b - 0.4*(0.5*sin(time*4.782)+0.5*cos(time*0.722));
+per_frame_3=wave_g = wave_g + 0.4*sin(time*1.931);
+per_frame_4=vol=0.15*(bass_att+bass+mid+mid_att);
+per_frame_5=bass_eff = max(max(bass,bass_att)-1,0);
+per_frame_6=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_7=dx = 0.005 + 0.002*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );
+per_frame_8=dy = 0.005 + 0.002*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );
+per_frame_9=dx_r=if(equal(q3,0),if(above(x,xpos),dx*q1-xpos,dx+q2-xpos),dx);
+per_frame_10=dy_r=if(equal(q3,0),if(above(y,ypos),dy*q1-ypos,dy+q2-ypos),dy);
+per_frame_11=rot = rot+0.05*( 0.60*sin(0.381*time) + 0.40*sin(0.479*time) );
+per_frame_12=mytime=.9;
+per_frame_13=xpos=.5/vol;
+per_frame_14=ypos=.5/vol;
+per_frame_15=q1=bass_eff+sin(time*mytime*4);
+per_frame_16=q2=bas_eff+cos(time*mytime*2);
+per_frame_17=q3=bass_eff+abs(rad+.5)+(q2*q5);
+per_frame_18=q4=bass_thresh+abs(.9*5)*(dx_r*dy_r)*(dx*dy);
+per_frame_19=q5=bass_tresh+cos(.2*2)*(dx_r*dy_r);
+per_frame_20=q6=bass_thresh+0.1*(atan(abs(-rad+.5)))*q1;
+per_frame_21=q7=if(above(bass+bass_att,2),-1.5+bass+bass_att,0);
+per_frame_22=q8=below(rad- 0.1*x,0.18);
+per_frame_23=q9=if(below(rad,.5),.9+rad,.5+bass*3%1000*.1);
+per_frame_24=wave_y = wave_y + 0.2*sin(1.85*time);
+per_frame_25=wave_x = wave_x + 0.5*sin(1.85*time);
+per_frame_26=cx = cx - (cx+0.07*sin(rad*18 + time*9))+(zoom + 0.005*tan(ang-ang));
+per_frame_27=cy = cy - (cy+0.07*sin(rad*18 + time*9))+(zoom + 0.005*tan(ang-ang));
+per_frame_28=ib_r=q3+q2;
+per_frame_29=ib_b=q2+q1;
+per_frame_30=ib_g=q1+q3;
+per_frame_31=ib_size=0.000;
+per_frame_32=monitor=bass;
+per_pixel_1=zoom= if(below(q1,q6),0.3*x,if(equal(q2,q5),0.2*(1-x),if(above(q3,q4),0.3*y,0.2*(1-y)+if(equal(q4,q3),0.3* xpos, if(above(q5,q2),0.25*(1-xpos),if(below(q6,q1),0.3*ypos,0.25*(1-ypos)+if(equal(q7,q9),0.3*x, if(below(q8,q7),0.2*(1-x),if(equal(q9,q6),0.3*y,0.2*(1-y)))))))))) + .8 - 0.02*(min(q6+q1,.5));
+per_pixel_2=dx = .01*atan((rad)/.1*sin((dx_r*dy_r)*20+time*5));
+per_pixel_3=sx=zoom;
+per_pixel_4=
diff --git a/InstallerDependencies/Visuals/projectM/presets/Fvese - Zoom Effects With A Twist 3.milk b/InstallerDependencies/Visuals/projectM/presets/Fvese - Zoom Effects With A Twist 3.milk
new file mode 100644
index 00000000..8f7aa605
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Fvese - Zoom Effects With A Twist 3.milk
@@ -0,0 +1,99 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.000000
+fDecay=0.995000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=0.499227
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=0.880200
+fShader=0.000000
+zoom=0.999800
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=0.999900
+sy=0.999899
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.300000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=19.200027
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=0.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.45*(0.5*sin(time*0.701)+ 0.3*cos(time*0.438));
+per_frame_2=wave_b = wave_b - 0.4*(0.5*sin(time*4.782)+0.5*cos(time*0.722));
+per_frame_3=wave_g = wave_g + 0.4*sin(time*1.931);
+per_frame_4=vol=0.15*(bass_att+bass+mid+mid_att);
+per_frame_5=bass_eff = max(max(bass,bass_att)-1,0);
+per_frame_6=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_7=dx = 0.005 + 0.002*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );
+per_frame_8=dy = 0.005 + 0.002*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );
+per_frame_9=dx_r=if(equal(q3,0),if(above(x,xpos),dx*q1-xpos,dx+q2-xpos),dx);
+per_frame_10=dy_r=if(equal(q3,0),if(above(y,ypos),dy*q1-ypos,dy+q2-ypos),dy);
+per_frame_11=rot = rot+0.05*( 0.60*sin(0.381*time) + 0.40*sin(0.479*time) );
+per_frame_12=mytime=.9;
+per_frame_13=xpos=.5/vol;
+per_frame_14=ypos=.5/vol;
+per_frame_15=q1=bass_eff+sin(time*mytime*4);
+per_frame_16=q2=bas_eff+cos(time*mytime*2);
+per_frame_17=q3=bass_eff+abs(rad+.5)+(q2*q5);
+per_frame_18=q4=bass_thresh+abs(.9*5)*(dx_r*dy_r)*(dx*dy);
+per_frame_19=q5=bass_tresh+cos(.2*2)*(dx_r*dy_r);
+per_frame_20=q6=bass_thresh+0.1*(atan(abs(-rad+.5)))*q1;
+per_frame_21=q7=if(above(bass+bass_att,2),-1.5+bass+bass_att,0);
+per_frame_22=q8=below(rad- 0.1*x,0.18);
+per_frame_23=q9=if(below(rad,.5),.9+rad,.5+bass*3%1000*.1);
+per_frame_24=wave_y = wave_y + 0.2*sin(1.85*time);
+per_frame_25=wave_x = wave_x + 0.5*sin(1.85*time);
+per_frame_26=cx = cx - (cx+0.07*sin(rad*18 + time*9))+(zoom + 0.005*tan(ang-ang));
+per_frame_27=cy = cy - (cy+0.07*sin(rad*18 + time*9))+(zoom + 0.005*tan(ang-ang));
+per_frame_28=ib_r=q3+q2;
+per_frame_29=ib_b=q2+q1;
+per_frame_30=ib_g=q1+q3;
+per_frame_31=ib_size=0.000;
+per_frame_32=monitor=bass;
+per_pixel_1=zoom= if(below(q1,q6),0.3*x,if(equal(q2,q5),0.2*(1-x),if(above(q3,q4),0.3*y,0.2*(1-y)+if(equal(q4,q3),0.3* xpos, if(above(q5,q2),0.25*(1-xpos),if(below(q6,q1),0.3*ypos,0.25*(1-ypos)+if(equal(q7,q9),0.3*x, if(below(q8,q7),0.2*(1-x),if(equal(q9,q6),0.3*y,0.2*(1-y)))))))))) + .8 - 0.02*(min(q6+q1,.5));
+per_pixel_2=dx = .01*atan((rad)/.1*sin((dx_r*dy_r)*20+time*5));
+per_pixel_3=sx=zoom;
+per_pixel_4=rot=zoom/20 \ No newline at end of file
diff --git a/InstallerDependencies/Visuals/projectM/presets/Fvese - simple.milk b/InstallerDependencies/Visuals/projectM/presets/Fvese - simple.milk
new file mode 100644
index 00000000..321be3ec
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Fvese - simple.milk
@@ -0,0 +1,77 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.999000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=0
+nWaveMode=5
+bAdditiveWaves=0
+bWaveDots=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.796630
+fWaveScale=0.543759
+fWaveSmoothing=0.630000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.020000
+cy=0.020001
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.100000
+wave_g=0.400000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.600000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=19.200027
+mv_l=5.000000
+mv_r=1.000000
+mv_g=0.000000
+mv_b=1.000000
+mv_a=0.040000
+per_frame_1=warp = 0;
+per_frame_2=dx = dx - .0005;
+per_frame_3=dy = dy - .0005;
+per_frame_4=wave_r = abs(wave_r + 0.1*(sin(time*0.346) + sin(time*1.334)));
+per_frame_5=wave_g = wave_g + 0.1*(sin(time*0.763) + sin(time*1.231));
+per_frame_6=wave_b = wave_b + 0.2*(sin(time*0.695) + sin(time*0.367));
+per_frame_7=decay=decay-0.01*(frame%1);
+per_frame_8=wave_x = 0.5+0.1*sin(time+rand(100)/100);
+per_frame_9=dx = dx + dx_residual;
+per_frame_10=dy = dy + dy_residual;
+per_frame_11=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_12=dx_residual = equal(bass_thresh,2)*0.016*sin(time*7) + (1-equal(bass_thresh,2))*dx_residual;
+per_frame_13=dy_residual = equal(bass_thresh,2)*0.012*sin(time*9) + (1-equal(bass_thresh,2))*dy_residual;
+per_frame_14=mv_r=wave_g+bass;
+per_frame_15=mv_g=wave_r+treb;
+per_pixel_1=dx = .01*atan((rad)/.1*sin((x*dy)*20+time*5));
+per_pixel_2=zoom = zoom + rad*.08;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss & Rovastar - Notions Of Tonality 2.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss & Rovastar - Notions Of Tonality 2.milk
new file mode 100644
index 00000000..2dffed2f
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss & Rovastar - Notions Of Tonality 2.milk
@@ -0,0 +1,90 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.693000
+fDecay=0.970000
+fVideoEchoZoom=1.628259
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=6
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.200000
+fWaveScale=1.093260
+fWaveSmoothing=0.100000
+fWaveParam=-0.400000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=3.259127
+fZoomExponent=1.000000
+fShader=1.000000
+zoom=1.004960
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.180378
+sx=0.999666
+sy=0.999900
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.380000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.100000
+ib_size=0.010000
+ib_r=0.550000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.100000
+nMotionVectorsX=57.599998
+nMotionVectorsY=44.160000
+mv_dx=0.002000
+mv_dy=0.002000
+mv_l=5.000000
+mv_r=0.700000
+mv_g=0.400000
+mv_b=0.500000
+mv_a=0.100000
+per_frame_1=mv_r = wave_r + 0.35*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );
+per_frame_2=mv_g = wave_g + 0.35*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );
+per_frame_3=mv_b = wave_b + 0.35*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time));
+per_frame_4=q1 = (cx*2-1) + 0.62*( 0.60*sin(0.474*time) + 0.40*sin(0.394*time) );
+per_frame_5=q2 = (cy*2-1) + 0.62*( 0.60*sin(0.413*time) + 0.40*sin(0.323*time) );
+per_frame_6=q3 = (cx*2-1) + 0.62*( 0.60*sin(0.274*-time) + 0.40*sin(0.464*time) );
+per_frame_7=q4 = (cy*2-1) + 0.62*( 0.60*sin(0.334*time) + 0.40*sin(0.371*-time) );
+per_frame_8=decay = decay - 0.01*equal(frame%5,0);
+per_frame_9=cy = cy + 0.1*sin(time*0.245);
+per_frame_10=cx = cx + 0.1*cos(time*0341);
+per_frame_11=wave_mystery = 2;
+per_frame_12=//mv_l = 2*max(max(bass,bass_att)-1.2,0);
+per_frame_13=warp = warp * pow(2, 0.6*sin(time*0.194));
+per_pixel_1=du = x*2-1 - q1;
+per_pixel_2=dv = y*2-1 - q2;
+per_pixel_3=dist = sqrt(du*du+dv*dv);
+per_pixel_4=ang2 = atan2(du,dv);
+per_pixel_5=mult = 0.008/(dist+0.4);
+per_pixel_6=dx = mult*sin(ang2-1.5);
+per_pixel_7=dy = mult*cos(ang2-1.5);
+per_pixel_8=du = x*2-1 - q3;
+per_pixel_9=dv = y*2-1 - q4;
+per_pixel_10=dist = sqrt(du*du+dv*dv);
+per_pixel_11=ang2 = atan2(du,dv);
+per_pixel_12=mult = 0.008/(dist+0.7);
+per_pixel_13=dx = dx + mult*sin(ang2+1.5);
+per_pixel_14=dy = dy + mult*cos(ang2+1.5);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss & Rovastar - Tokamak (Naked Intrusion Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Geiss & Rovastar - Tokamak (Naked Intrusion Mix).milk
new file mode 100644
index 00000000..15e4c433
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss & Rovastar - Tokamak (Naked Intrusion Mix).milk
@@ -0,0 +1,80 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.993000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.010000
+fWaveSmoothing=0.700000
+fWaveParam=-0.400000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.004000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.197884
+sx=0.999667
+sy=0.999900
+wave_r=0.550000
+wave_g=0.550000
+wave_b=0.550000
+wave_x=0.500000
+wave_y=0.680000
+ob_size=0.010000
+ob_r=1.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.700000
+ib_size=0.010000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_l=0.000000
+mv_r=0.800000
+mv_g=0.800000
+mv_b=0.800000
+mv_a=1.000000
+per_frame_1=mv_r = mv_r + 0.2*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );
+per_frame_2=mv_g = mv_g + 0.2*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );
+per_frame_3=mv_b = mv_b + 0.2*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );
+per_frame_4=q1 = (cx*2-1) + 0.6*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );
+per_frame_5=q2 = (cy*2-1) + 0.6*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );
+per_frame_6=ob_r = 1- 0.4*abs(q1);
+per_frame_7=ob_g = 0.3*abs(q2);
+per_frame_8=ob_b = 0.4*abs(q1);
+per_frame_9=wave_x = 1-abs(q2)-0.05;
+per_frame_10=wave_y = 1-abs(q1)-0.06;
+per_frame_11=wave_r = wave_r + 0.4*( 0.60*sin(0.514*time) + 0.40*sin(1.211*time) );
+per_frame_12=wave_b = wave_b + 0.4*( 0.60*sin(0.714*time) + 0.40*sin(q2) );
+per_frame_13=wave_g = wave_g + 0.4*( 0.60*sin(10*q1) + 0.40*sin(10*q2) );
+per_pixel_1=du = (x*2-1) - q1;
+per_pixel_2=dv = (y*2-1) - q2;
+per_pixel_3=dist = sqrt(du*du+dv*dv);
+per_pixel_4=ang2 = atan2(du,dv) + time*0.15;
+per_pixel_5=mult = 0.65*sin(dist*0.05);
+per_pixel_6=dx = mult*sin(ang2*2-1.5);
+per_pixel_7=dy = mult*cos(ang2*2-1.5);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - Blasto.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - Blasto.milk
new file mode 100644
index 00000000..9296f220
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - Blasto.milk
@@ -0,0 +1,64 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=2.000000
+fDecay=0.980000
+fVideoEchoZoom=12.162793
+fVideoEchoAlpha=1.000000
+nVideoEchoOrientation=0
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.800000
+fWaveScale=0.131195
+fWaveSmoothing=0.720000
+fWaveParam=1.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.019963
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.018800
+sx=1.000000
+sy=0.999831
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+per_frame_1=wave_r = wave_r + .255*sin(time*.366);
+per_frame_2=wave_g = wave_g + .255*sin(time*.222);
+per_frame_3=wave_b = wave_b + .255*sin(time*.288);
+per_frame_4=wave_r = wave_r + bass*.3;
+per_frame_5=wave_g = wave_g + treb*.3;
+per_frame_6=wave_b = wave_b + mid*.3;
+per_frame_7=decay = .75 + .05*sin(time*2) - treb*.05;
+per_pixel_1=
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - Cosmic Dust 2.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - Cosmic Dust 2.milk
new file mode 100644
index 00000000..3b8f0112
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - Cosmic Dust 2.milk
@@ -0,0 +1,70 @@
+[preset00]
+fRating=4.000000
+fGammaAdj=1.900000
+fDecay=0.980000
+fVideoEchoZoom=1.169360
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=5
+bAdditiveWaves=1
+bWaveDots=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=3.299999
+fWaveScale=1.694000
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=3.138000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.053000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.263000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.800000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+per_frame_1=wave_r = wave_r + 0.650*( 0.60*sin(1.437*time) + 0.40*sin(0.970*time) );
+per_frame_2=wave_g = wave_g + 0.650*( 0.60*sin(1.344*time) + 0.40*sin(0.841*time) );
+per_frame_3=wave_b = wave_b + 0.650*( 0.60*sin(1.251*time) + 0.40*sin(1.055*time) );
+per_frame_4=rot = rot + 0.010*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_5=cx = cx + 0.210*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );
+per_frame_6=cy = cy + 0.210*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );
+per_frame_7=dx = dx + 0.010*( 0.60*sin(0.234*time) + 0.40*sin(0.277*time) );
+per_frame_8=dy = dy + 0.010*( 0.60*sin(0.284*time) + 0.40*sin(0.247*time) );
+per_frame_9=decay = decay - 0.01*equal(frame%6,0);
+per_frame_10=dx = dx + dx_residual;
+per_frame_11=dy = dy + dy_residual;
+per_frame_12=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_13=dx_residual = equal(bass_thresh,2)*0.016*sin(time*7) + (1-equal(bass_thresh,2))*dx_residual;
+per_frame_14=dy_residual = equal(bass_thresh,2)*0.012*sin(time*9) + (1-equal(bass_thresh,2))*dy_residual;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - Cruzin'.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - Cruzin'.milk
new file mode 100644
index 00000000..d9ee7c03
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - Cruzin'.milk
@@ -0,0 +1,59 @@
+[preset00]
+fGammaAdj=2.000000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=6
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.000000
+fWaveScale=1.691672
+fWaveSmoothing=0.500000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=3.138000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000300
+rot=0.000000
+cx=0.500000
+cy=0.110000
+dx=0.000000
+dy=-0.001000
+warp=0.024300
+sx=1.001992
+sy=1.004987
+wave_r=0.000000
+wave_g=0.570000
+wave_b=1.000000
+wave_x=0.650000
+wave_y=0.500000
+per_frame_1=wave_r = wave_r + 0.250*( 0.60*sin(10.937*time) + 0.40*sin(1.470*time) );
+per_frame_2=wave_g = wave_g + 0.300*( 0.60*sin(11.344*time) + 0.40*sin(1.041*time) );
+per_frame_3=wave_b = wave_b + 0.250*( 0.60*sin(21.251*time) + 0.40*sin(1.355*time) );
+per_frame_4=rot = rot + 0.004*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_5=cx = cx + 0.110*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );
+per_frame_6=cy = cy + 0.110*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );
+per_frame_7=decay = decay - 0.01*equal(frame%6,0);
+per_pixel_1=du = (x-cx)*2;
+per_pixel_2=dv = (y-cy)*2;
+per_pixel_3=q = 0.01*pow(du*du+dv*dv,1.5);
+per_pixel_4=dx = q*du;
+per_pixel_5=dy = q*dv;
+per_pixel_6=
+fRating=4.000000
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - Downward Spiral.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - Downward Spiral.milk
new file mode 100644
index 00000000..503ad03c
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - Downward Spiral.milk
@@ -0,0 +1,67 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.900000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=7
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=2.717574
+fWaveSmoothing=0.900000
+fWaveParam=1.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.990000
+rot=0.060000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=1.000000
+sy=0.999900
+wave_r=1.000000
+wave_g=0.400000
+wave_b=0.100000
+wave_x=0.500000
+wave_y=0.600000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.120*( 0.60*sin(0.733*time) + 0.40*sin(0.345*time) );
+per_frame_2=wave_g = wave_g + 0.120*( 0.60*sin(0.600*time) + 0.40*sin(0.456*time) );
+per_frame_3=wave_b = wave_b + 0.100*( 0.60*sin(0.510*time) + 0.40*sin(0.550*time) );
+per_pixel_1=rot=rot*(-0.2+pow(cos(rad*8+ang-time*0.8),2));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - Dynamic Swirls 1.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - Dynamic Swirls 1.milk
new file mode 100644
index 00000000..db5ae5bf
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - Dynamic Swirls 1.milk
@@ -0,0 +1,68 @@
+[preset00]
+fGammaAdj=2.700000
+fDecay=0.970000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=0.634243
+fWaveSmoothing=0.100000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.004960
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000156
+sx=0.999666
+sy=0.999900
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.380000
+per_frame_1=wave_r = wave_r + 0.350*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );
+per_frame_2=wave_g = wave_g + 0.350*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );
+per_frame_3=wave_b = wave_b + 0.350*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );
+per_frame_4=q1 = (cx*2-1) + 0.62*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );
+per_frame_5=q2 = (cy*2-1) + 0.62*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );
+per_frame_6=q3 = (cx*2-1) + 0.62*( 0.60*sin(0.174*-time) + 0.40*sin(0.364*time) );
+per_frame_7=q4 = (cy*2-1) + 0.62*( 0.60*sin(0.234*time) + 0.40*sin(0.271*-time) );
+per_frame_8=decay = decay - 0.01*equal(frame%5,0);
+per_pixel_1=du = x*2-1 - q1;
+per_pixel_2=dv = y*2-1 - q2;
+per_pixel_3=dist = sqrt(du*du+dv*dv);
+per_pixel_4=ang2 = atan2(du,dv);
+per_pixel_5=mult = 0.008/(dist+0.4);
+per_pixel_6=dx = mult*sin(ang2-1.5);
+per_pixel_7=dy = mult*cos(ang2-1.5);
+per_pixel_8=du = x*2-1 - q3;
+per_pixel_9=dv = y*2-1 - q4;
+per_pixel_10=dist = sqrt(du*du+dv*dv);
+per_pixel_11=ang2 = atan2(du,dv);
+per_pixel_12=mult = 0.008/(dist+0.4);
+per_pixel_13=dx = dx + mult*sin(ang2+1.5);
+per_pixel_14=dy = dy + mult*cos(ang2+1.5);
+fRating=2.000000
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - Dynamic Swirls 2.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - Dynamic Swirls 2.milk
new file mode 100644
index 00000000..1b893b92
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - Dynamic Swirls 2.milk
@@ -0,0 +1,68 @@
+[preset00]
+fGammaAdj=2.700000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=6
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.100000
+fWaveScale=4.695139
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.670000
+fModWaveAlphaEnd=0.970000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.007964
+rot=0.020000
+cx=0.499999
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000156
+sx=0.999667
+sy=0.999900
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.700000
+per_frame_1=wave_r = wave_r + 0.350*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );
+per_frame_2=wave_g = wave_g + 0.350*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );
+per_frame_3=wave_b = wave_b + 0.350*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );
+per_frame_4=q1 = (cx*2-1) + 0.32*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );
+per_frame_5=q2 = (cy*2-1) + 0.52*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );
+per_frame_6=q3 = (cx*2-1) + 0.32*( 0.60*sin(0.174*-time) + 0.40*sin(0.364*time) );
+per_frame_7=q4 = (cy*2-1) + 0.52*( 0.60*sin(0.234*time) + 0.40*sin(0.271*-time) );
+per_frame_8=decay = decay - 0.01*equal(frame%5,0);
+per_pixel_1=du = x*2-1 - q1;
+per_pixel_2=dv = y*2-1 - q2;
+per_pixel_3=dist = sqrt(du*du+dv*dv);
+per_pixel_4=ang2 = atan2(du,dv);
+per_pixel_5=mult = 0.012/(dist+0.4);
+per_pixel_6=dx = mult*sin(ang2-1.5);
+per_pixel_7=dy = mult*cos(ang2-1.5);
+per_pixel_8=du = x*2-1 - q3;
+per_pixel_9=dv = y*2-1 - q4;
+per_pixel_10=dist = sqrt(du*du+dv*dv);
+per_pixel_11=ang2 = atan2(du,dv);
+per_pixel_12=mult = 0.012/(dist+0.4);
+per_pixel_13=dx = dx + mult*sin(ang2+1.5);
+per_pixel_14=dy = dy + mult*cos(ang2+1.5);
+fRating=2.000000
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - Eddies 2.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - Eddies 2.milk
new file mode 100644
index 00000000..da69cfd1
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - Eddies 2.milk
@@ -0,0 +1,78 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=2.700000
+fDecay=0.980000
+fVideoEchoZoom=1.645405
+fVideoEchoAlpha=0.400000
+nVideoEchoOrientation=0
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=3.605989
+fWaveScale=0.870018
+fWaveSmoothing=0.100000
+fWaveParam=-0.300000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=2.593743
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.004960
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=-0.010000
+warp=0.278033
+sx=0.999666
+sy=0.999900
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.140000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+per_frame_1=wave_r = wave_r + 0.350*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );
+per_frame_2=wave_g = wave_g + 0.350*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );
+per_frame_3=wave_b = wave_b + 0.350*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );
+per_frame_4=q1 = (cx*2-1) + 0.62*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );
+per_frame_5=q2 = (cy*2-1) + 0.62*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );
+per_frame_6=q3 = (cx*2-1) + 0.62*( 0.60*sin(0.174*-time) + 0.40*sin(0.364*time) );
+per_frame_7=q4 = (cy*2-1) + 0.62*( 0.60*sin(0.234*time) + 0.40*sin(0.271*-time) );
+per_frame_8=decay = decay - 0.01*equal(frame%5,0);
+per_pixel_1=du = x*2-1 - q1;
+per_pixel_2=dv = y*2-1 - q2;
+per_pixel_3=dist = sqrt(du*du+dv*dv);
+per_pixel_4=ang2 = atan2(du,dv);
+per_pixel_5=mult = 0.008/(dist+0.4);
+per_pixel_6=dx = dx + mult*sin(ang2-1.5);
+per_pixel_7=dy = dy + mult*cos(ang2-1.5);
+per_pixel_8=du = x*2-1 - q3;
+per_pixel_9=dv = y*2-1 - q4;
+per_pixel_10=dist = sqrt(du*du+dv*dv);
+per_pixel_11=ang2 = atan2(du,dv);
+per_pixel_12=mult = 0.008/(dist+0.4);
+per_pixel_13=dx = dx + mult*sin(ang2+1.5);
+per_pixel_14=dy = dy + mult*cos(ang2+1.5);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - Eggs.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - Eggs.milk
new file mode 100644
index 00000000..efda8e43
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - Eggs.milk
@@ -0,0 +1,54 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.970000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=3.500000
+fWaveScale=2.720000
+fWaveSmoothing=0.770000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.046000
+rot=0.020000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.420000
+sx=1.000000
+sy=1.000000
+wave_r=0.600000
+wave_g=0.600000
+wave_b=0.600000
+wave_x=0.500000
+wave_y=0.470000
+per_frame_1=wave_r = wave_r + 0.400*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+per_frame_2=wave_g = wave_g + 0.400*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+per_frame_3=wave_b = wave_b + 0.400*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+per_frame_4=zoom = zoom + 0.023*( 0.60*sin(0.339*time) + 0.40*sin(0.276*time) );
+per_frame_5=rot = rot + 0.030*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_6=cx = cx + 0.070*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );
+per_frame_7=cy = cy + 0.070*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );
+per_pixel_1=zoom=zoom+0.27*sin(time*1.55+rad*5);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - El Cubismo.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - El Cubismo.milk
new file mode 100644
index 00000000..822f71e4
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - El Cubismo.milk
@@ -0,0 +1,55 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.970000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=3.500000
+fWaveScale=2.720000
+fWaveSmoothing=0.770000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.046000
+rot=0.020000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.420000
+sx=1.000000
+sy=1.000000
+wave_r=0.600000
+wave_g=0.600000
+wave_b=0.600000
+wave_x=0.500000
+wave_y=0.470000
+per_frame_1=wave_r = wave_r + 0.400*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+per_frame_2=wave_g = wave_g + 0.400*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+per_frame_3=wave_b = wave_b + 0.400*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+per_frame_4=zoom = zoom + 0.023*( 0.60*sin(0.339*time) + 0.40*sin(0.276*time) );
+per_frame_5=rot = rot + 0.030*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_6=cx = cx + 0.070*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );
+per_frame_7=cy = cy + 0.070*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );
+per_pixel_1=dx=dx-0.05*sin(time*1.35+(x*2-1)*18);
+per_pixel_2=dy=dy-0.05*sin(time*1.79+(y*2-1)*9);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - Feedback 2.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - Feedback 2.milk
new file mode 100644
index 00000000..386b9ec1
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - Feedback 2.milk
@@ -0,0 +1,231 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.000000
+fDecay=0.900000
+fVideoEchoZoom=0.710682
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=6
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.311604
+fWaveScale=1.228910
+fWaveSmoothing=0.000000
+fWaveParam=0.200000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999902
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.207965
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.006500
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.850000
+mv_r=0.499900
+mv_g=0.499900
+mv_b=0.499900
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.370000
+shapecode_0_y=0.500000
+shapecode_0_rad=2.999997
+shapecode_0_ang=3.644249
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=0.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=0.500000
+shapecode_0_r2=0.000000
+shapecode_0_g2=0.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.300000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=1.000000
+shape_0_init1=t1 = rand(100)*0.01;
+shape_0_init2=t2 = rand(100)*0.01;
+shape_0_per_frame1=ang = time*(0.3 + 0.1*t1);
+shape_0_per_frame2=rad = rad * (0.9 + 0.2*t2);
+shape_0_per_frame3=r = min(1,max(0,r + 0.2*sin(time*0.417 + 1)));
+shape_0_per_frame4=g = min(1,max(0,g + 0.2*sin(time*0.391 + 2)));
+shape_0_per_frame5=b = min(1,max(0,b + 0.2*sin(time*0.432 + 4)));
+shape_0_per_frame6=r2 = min(1,max(0,r2 + 0.2*sin(time*0.657 + 3)));
+shape_0_per_frame7=g2 = min(1,max(0,g2 + 0.2*sin(time*0.737 + 5)));
+shape_0_per_frame8=b2 = min(1,max(0,b2 + 0.2*sin(time*0.884 + 6)));
+shapecode_1_enabled=1
+shapecode_1_sides=50
+shapecode_1_additive=1
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.370000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.706533
+shapecode_1_ang=3.644249
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=0.800000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_init1=t1 = rand(100)*0.01;
+shape_1_init2=t2 = rand(100)*0.01;
+shape_1_per_frame1=x = x + 0.05*sin(time*1.25+3);
+shape_1_per_frame2=y = y + 0.03*sin(time*1.49+1);
+shape_1_per_frame3=ang = time*(0.3 + 0.1*t1);
+shape_1_per_frame4=rad = rad * (0.9 + 0.2*t2);
+shape_1_per_frame5=r = min(1,max(0,r + 0.1*sin(time*0.417 + 1)));
+shape_1_per_frame6=g = min(1,max(0,g + 0.1*sin(time*0.391 + 2)));
+shape_1_per_frame7=b = min(1,max(0,b + 0.1*sin(time*0.432 + 4)));
+shape_1_per_frame8=r2 = min(1,max(0,r2 + 0.1*sin(time*0.457 + 3)));
+shape_1_per_frame9=g2 = min(1,max(0,g2 + 0.1*sin(time*0.437 + 5)));
+shape_1_per_frame10=b2 = min(1,max(0,b2 + 0.1*sin(time*0.484 + 6)));
+shapecode_2_enabled=1
+shapecode_2_sides=50
+shapecode_2_additive=1
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.670000
+shapecode_2_y=0.430000
+shapecode_2_rad=0.706533
+shapecode_2_ang=4.209736
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=0.800000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_init1=t1 = rand(100)*0.01;
+shape_2_init2=t2 = rand(100)*0.01;
+shape_2_per_frame1=x = x + 0.05*sin(time*2.17);
+shape_2_per_frame2=y = y + 0.03*sin(time*1.83);
+shape_2_per_frame3=ang = time*(0.3 + 0.1*t1);
+shape_2_per_frame4=rad = rad * (0.9 + 0.2*t2);
+shape_2_per_frame5=r = min(1,max(0,r + 0.1*sin(time*0.417 + 1)));
+shape_2_per_frame6=g = min(1,max(0,g + 0.1*sin(time*0.391 + 2)));
+shape_2_per_frame7=b = min(1,max(0,b + 0.1*sin(time*0.432 + 4)));
+shape_2_per_frame8=r2 = min(1,max(0,r2 + 0.1*sin(time*0.457 + 3)));
+shape_2_per_frame9=g2 = min(1,max(0,g2 + 0.1*sin(time*0.437 + 5)));
+shape_2_per_frame10=b2 = min(1,max(0,b2 + 0.1*sin(time*0.484 + 6)));
+shapecode_3_enabled=1
+shapecode_3_sides=60
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.161222
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=1.000000
+shapecode_3_g2=0.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=1.000000
+shape_3_per_frame1=x = x + 0.2*sin(time*1.14);
+shape_3_per_frame2=y = y + 0.1*sin(time*0.93+2);
+per_frame_1=wave_mystery = time*0.2;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - High Dynamic Range.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - High Dynamic Range.milk
new file mode 100644
index 00000000..09381943
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - High Dynamic Range.milk
@@ -0,0 +1,227 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.500000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=4
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=32.544682
+fWaveScale=0.503666
+fWaveSmoothing=0.558000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.870000
+fModWaveAlphaEnd=1.289900
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000012
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=16
+shapecode_0_additive=1
+shapecode_0_thickOutline=1
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.879999
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=0.060000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=0.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=ang = time*1.4;
+shape_0_per_frame2=x = q1;
+shape_0_per_frame3=y = q2;
+shape_0_per_frame4=r = 0.5 + 0.5*sin(time*0.713 + 1);
+shape_0_per_frame5=g = 0.5 + 0.5*sin(time*0.563 + 2);
+shape_0_per_frame6=b = 0.5 + 0.5*sin(time*0.654 + 5);
+shape_0_per_frame7=r2 = 0.5 + 0.5*sin(time*0.885 + 4);
+shape_0_per_frame8=g2 = 0.5 + 0.5*sin(time*0.556+ 1);
+shape_0_per_frame9=b2 = 0.5 + 0.5*sin(time*0.638 + 3);
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=
+per_frame_2=// in this example, q1 and q2 act as the center of zooming
+per_frame_3=// AND as the position of custom shape #1...
+per_frame_4=q1 = 0.5 + 0.32*cos(time*0.4);
+per_frame_5=q2 = 0.5 + 0.22*sin(time*0.4);
+per_frame_6=
+per_frame_7=//wave_x = q1;
+per_frame_8=wave_y = q2;
+per_pixel_1=dx = (x-q1)*0.02;
+per_pixel_2=dy = (y-q2)*0.02;
+per_pixel_3=
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - Octopus Ever Changing.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - Octopus Ever Changing.milk
new file mode 100644
index 00000000..132a43d4
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - Octopus Ever Changing.milk
@@ -0,0 +1,76 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=2.000000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.868656
+fWaveScale=1.420825
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.010000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.076000
+sx=1.000000
+sy=1.000000
+wave_r=0.950000
+wave_g=0.350000
+wave_b=0.450000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.000*( 0.60*sin(1.517*time) + 0.40*sin(1.580*time) );
+per_frame_2=wave_g = wave_g + 0.300*( 0.60*sin(1.088*time) + 0.40*sin(1.076*time) );
+per_frame_3=wave_b = wave_b + 0.300*( 0.60*sin(1.037*time) + 0.40*sin(0.922*time) );
+per_frame_4=rot = rot + 0.040*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_5=cx = cx + 0.110*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );
+per_frame_6=cy = cy + 0.110*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );
+per_frame_7=q1=cos(1.41*time);
+per_frame_8=q2=time + 0.3*sin(time*1.47);
+per_frame_9=cx=cx+0.2*sin(q1*0.5);
+per_frame_10=cy=cy+0.2*sin(q2*0.4);
+per_pixel_1=rot=rot+0.05*sin(rad*(13.5 + 5.5*sin(time*0.1623)) + q2*1.3 + q*1.31);
+per_pixel_2=zoom=zoom+0.05*sin(ang*10.0 + rad*(7.5 + 1.5*sin(time*0.13)) + q2*1.63 + q);
+per_pixel_3=zoom=zoom+0.05-0.05*rad;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - Octopus Gold.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - Octopus Gold.milk
new file mode 100644
index 00000000..4996a300
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - Octopus Gold.milk
@@ -0,0 +1,79 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=2.000000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=5
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=6.562210
+fWaveScale=2.673533
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=2.143588
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.010000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.004791
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=0.800000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=8.000000
+nMotionVectorsY=6.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_x = wave_x + 0.200*( 0.60*sin(0.394*time) + 0.40*sin(0.475*time) );
+per_frame_2=wave_y = wave_y + 0.200*( 0.60*sin(0.442*time) + 0.40*sin(0.321*time) );
+per_frame_3=wave_r = wave_r + 0.300*( 0.60*sin(1.517*time) + 0.40*sin(1.580*time) );
+per_frame_4=wave_g = wave_g + 0.200*( 0.60*sin(1.088*time) + 0.40*sin(1.076*time) );
+per_frame_5=wave_b = wave_b + 1.000*( 0.60*sin(3.422*time) + 0.40*sin(2.494*time) );
+per_frame_6=rot = rot + 0.040*( 0.60*sin(0.181*time) + 0.40*sin(0.279*time) );
+per_frame_7=cx = cx + 0.110*( 0.60*sin(0.174*time) + 0.40*sin(0.204*time) );
+per_frame_8=cy = cy + 0.110*( 0.60*sin(0.193*time) + 0.40*sin(0.237*time) );
+per_frame_9=zoom=zoom+0.01+0.037*sin(time*0.93) + 0.03*sin(time*0.01);
+per_frame_10=q1=cos(0.23*time);
+per_frame_11=q2=time + 0.3*sin(time*0.21);
+per_frame_12=cx=cx+0.2*sin(q1*0.5);
+per_frame_13=cy=cy+0.2*sin(q2*0.4);
+per_pixel_1=rot=rot+0.05*sin(rad*(9.5 + 5.5*sin(time*0.0823)) + q2*1.3);
+per_pixel_2=zoom=zoom+0.05*sin(ang*6 + rad*(5.5 + 1.5*sin(time*0.04)) + q2*1.63 + q);
+per_pixel_3=zoom=zoom+0.05-0.05*rad;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - Octopus.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - Octopus.milk
new file mode 100644
index 00000000..11d2ea88
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - Octopus.milk
@@ -0,0 +1,73 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=2.000000
+fDecay=0.990000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=2.426125
+fWaveScale=1.881700
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.020000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.076000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.150000
+wave_b=0.350000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 1.000*( 0.60*sin(1.517*time) + 0.40*sin(1.580*time) );
+per_frame_2=wave_g = wave_g + 1.000*( 0.60*sin(1.088*time) + 0.40*sin(1.076*time) );
+per_frame_3=wave_b = wave_b + 1.000*( 0.60*sin(1.037*time) + 0.40*sin(0.922*time) );
+per_frame_4=rot = rot + 0.040*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_5=cx = cx + 0.110*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );
+per_frame_6=cy = cy + 0.110*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );
+per_frame_7=q1=cos(1.41*time);
+per_frame_8=q2=time + 0.3*sin(time*1.47);
+per_pixel_1=rot=rot+0.05*sin(rad*13.5 + q2*1.3 + q*1.31);
+per_pixel_2=zoom=zoom+0.05*sin(ang*10.0 + rad*7.5 + q2*1.63 + q);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - Oldskool Mellowstyle.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - Oldskool Mellowstyle.milk
new file mode 100644
index 00000000..2770cdb4
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - Oldskool Mellowstyle.milk
@@ -0,0 +1,70 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.500000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=6
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=1.605000
+fWaveSmoothing=0.558000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.870000
+fModWaveAlphaEnd=1.289900
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.064000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.700000
+wave_g=0.700000
+wave_b=0.700000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.3*( 0.60*sin(0.633*time) + 0.40*sin(0.845*time) );
+per_frame_2=wave_g = wave_g + 0.3*( 0.60*sin(0.370*time) + 0.40*sin(0.656*time) );
+per_frame_3=wave_b = wave_b + 0.3*( 0.60*sin(0.740*time) + 0.40*sin(0.520*time) );
+per_frame_4=zoom = zoom + 0.013*( 0.60*sin(0.339*time) + 0.40*sin(0.276*time) );
+per_frame_5=rot = rot + 0.030*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_6=decay = decay - 0.01*equal(frame%50,0);
+per_frame_7=zoom=zoom+(bass_att-1)*0.001;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - Swirlie 1.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - Swirlie 1.milk
new file mode 100644
index 00000000..1baddce8
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - Swirlie 1.milk
@@ -0,0 +1,75 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.994000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=1
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.499998
+fWaveScale=1.524161
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=0.334695
+fWarpScale=3.928016
+fZoomExponent=2.100000
+fShader=0.000000
+zoom=0.961000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.771011
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.030000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.500000
+ib_size=0.010000
+ib_r=0.340000
+ib_g=0.340000
+ib_b=0.340000
+ib_a=0.500000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_x = wave_x + 0.2900*( 0.60*sin(2.121*time) + 0.40*sin(1.621*time) );
+per_frame_2=wave_y = wave_y + 0.2900*( 0.60*sin(1.742*time) + 0.40*sin(2.322*time) );
+per_frame_3=wave_r = wave_r + 0.350*( 0.60*sin(0.823*time) + 0.40*sin(0.916*time) );
+per_frame_4=wave_g = wave_g + 0.350*( 0.60*sin(0.900*time) + 0.40*sin(1.023*time) );
+per_frame_5=wave_b = wave_b + 0.350*( 0.60*sin(0.808*time) + 0.40*sin(0.949*time) );
+per_frame_6=rot = rot + 0.35*( 0.60*sin(0.21*time) + 0.30*sin(0.339*time) );
+per_frame_7=cx = cx + 0.30*( 0.60*sin(0.374*time) + 0.14*sin(0.194*time) );
+per_frame_8=cy = cy + 0.37*( 0.60*sin(0.274*time) + 0.10*sin(0.394*time) );
+per_frame_9=ib_r = ib_r + 0.2*sin(time*0.5413);
+per_frame_10=ib_g = ib_g + 0.2*sin(time*0.6459);
+per_frame_11=ib_b = ib_b + 0.2*sin(time*0.7354);
+per_frame_12=
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - Swirlie 2.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - Swirlie 2.milk
new file mode 100644
index 00000000..4783c9ab
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - Swirlie 2.milk
@@ -0,0 +1,68 @@
+[preset00]
+fRating=4.000000
+fGammaAdj=1.994000
+fDecay=0.970000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=1
+bAdditiveWaves=1
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.499998
+fWaveScale=1.524161
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=0.334695
+fWarpScale=3.928016
+fZoomExponent=2.100000
+fShader=0.000000
+zoom=0.961000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.771011
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.500000
+ib_size=0.030000
+ib_r=0.340000
+ib_g=0.340000
+ib_b=0.340000
+ib_a=0.100000
+per_frame_1=wave_x = wave_x + 0.2900*( 0.60*sin(2.121*time) + 0.40*sin(1.621*time) );
+per_frame_2=wave_y = wave_y + 0.2900*( 0.60*sin(1.742*time) + 0.40*sin(2.322*time) );
+per_frame_3=wave_r = wave_r + 0.350*( 0.60*sin(0.823*time) + 0.40*sin(0.916*time) );
+per_frame_4=wave_g = wave_g + 0.350*( 0.60*sin(0.900*time) + 0.40*sin(1.023*time) );
+per_frame_5=wave_b = wave_b + 0.350*( 0.60*sin(0.808*time) + 0.40*sin(0.949*time) );
+per_frame_6=rot = rot + 0.35*( 0.60*sin(0.21*time) + 0.30*sin(0.339*time) );
+per_frame_7=cx = cx + 0.30*( 0.60*sin(0.374*time) + 0.14*sin(0.194*time) );
+per_frame_8=cy = cy + 0.37*( 0.60*sin(0.274*time) + 0.10*sin(0.394*time) );
+per_frame_9=ib_r = ib_r + 0.2*sin(time*0.5413);
+per_frame_10=ib_g = ib_g + 0.2*sin(time*0.6459);
+per_frame_11=ib_b = ib_b + 0.2*sin(time*0.7354);
+per_frame_12=
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - Swirlie 3.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - Swirlie 3.milk
new file mode 100644
index 00000000..9068bb33
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - Swirlie 3.milk
@@ -0,0 +1,72 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.994000
+fDecay=0.970000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=1
+bAdditiveWaves=1
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.499998
+fWaveScale=1.524161
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=0.334695
+fWarpScale=3.928016
+fZoomExponent=2.100000
+fShader=0.000000
+zoom=0.961000
+rot=0.220000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.771011
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.500000
+ib_size=0.028500
+ib_r=0.340000
+ib_g=0.340000
+ib_b=0.340000
+ib_a=0.100000
+per_frame_1=wave_x = wave_x + 0.2900*( 0.60*sin(2.121*time) + 0.40*sin(1.621*time) );
+per_frame_2=wave_y = wave_y + 0.2900*( 0.60*sin(1.742*time) + 0.40*sin(2.322*time) );
+per_frame_3=wave_r = wave_r + 0.350*( 0.60*sin(0.823*time) + 0.40*sin(0.916*time) );
+per_frame_4=wave_g = wave_g + 0.350*( 0.60*sin(0.900*time) + 0.40*sin(1.023*time) );
+per_frame_5=wave_b = wave_b + 0.350*( 0.60*sin(0.808*time) + 0.40*sin(0.949*time) );
+per_frame_6=blah = 0.5/(wave_r+wave_g+wave_b);
+per_frame_7=wave_r = wave_r*blah; wave_g = wave_g*blah; wave_b = wave_b*blah;
+per_frame_8=rot = rot + 0.12*( 0.60*sin(0.21*time) + 0.40*sin(0.339*time) );
+per_frame_9=cx = cx + 0.30*( 0.60*sin(0.374*time) + 0.14*sin(0.194*time) );
+per_frame_10=cy = cy + 0.37*( 0.60*sin(0.274*time) + 0.10*sin(0.394*time) );
+per_frame_11=ib_r = ib_r + 0.2*sin(time*0.5413);
+per_frame_12=ib_g = ib_g + 0.2*sin(time*0.6459);
+per_frame_13=ib_b = ib_b + 0.2*sin(time*0.7354);
+per_frame_14=blah = 0.4/(ib_r+ib_g+ib_b)*3;
+per_frame_15=ib_r = ib_r*blah; ib_g = ib_g*blah; ib_b = ib_b*blah;
+per_frame_16=
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - Swirlie 4.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - Swirlie 4.milk
new file mode 100644
index 00000000..f7679989
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - Swirlie 4.milk
@@ -0,0 +1,74 @@
+[preset00]
+fRating=1.000000
+fGammaAdj=1.994000
+fDecay=0.970000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=1
+bAdditiveWaves=1
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.499998
+fWaveScale=1.524161
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=0.334695
+fWarpScale=3.928016
+fZoomExponent=2.100000
+fShader=0.000000
+zoom=0.961000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.771011
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.500000
+ib_size=0.028500
+ib_r=0.340000
+ib_g=0.340000
+ib_b=0.340000
+ib_a=0.100000
+per_frame_1=wave_x = wave_x + 0.2900*( 0.60*sin(2.121*time) + 0.40*sin(1.621*time) );
+per_frame_2=wave_y = wave_y + 0.2900*( 0.60*sin(1.742*time) + 0.40*sin(2.322*time) );
+per_frame_3=wave_r = wave_r + 0.350*( 0.60*sin(0.823*time) + 0.40*sin(0.916*time) );
+per_frame_4=wave_g = wave_g + 0.350*( 0.60*sin(0.900*time) + 0.40*sin(1.023*time) );
+per_frame_5=wave_b = wave_b + 0.350*( 0.60*sin(0.808*time) + 0.40*sin(0.949*time) );
+per_frame_6=blah = 0.5/(wave_r+wave_g+wave_b);
+per_frame_7=wave_r = wave_r*blah; wave_g = wave_g*blah; wave_b = wave_b*blah;
+per_frame_8=rot = rot + 0.35*( 0.60*sin(0.21*time) + 0.30*sin(0.339*time) );
+per_frame_9=cx = cx + 0.30*( 0.60*sin(0.374*time) + 0.14*sin(0.194*time) );
+per_frame_10=cy = cy + 0.37*( 0.60*sin(0.274*time) + 0.10*sin(0.394*time) );
+per_frame_11=dx = dx + 0.01*( 0.60*sin(0.324*time) + 0.40*sin(0.234*time) );
+per_frame_12=dy = dy + 0.01*( 0.60*sin(0.244*time) + 0.40*sin(0.264*time) );
+per_frame_13=ib_r = ib_r + 0.2*sin(time*0.5413);
+per_frame_14=ib_g = ib_g + 0.2*sin(time*0.6459);
+per_frame_15=ib_b = ib_b + 0.2*sin(time*0.7354);
+per_frame_16=blah = 12.4/(ib_r+ib_g+ib_b)*3;
+per_frame_17=ib_r = ib_r*blah; ib_g = ib_g*blah; ib_b = ib_b*blah;
+per_frame_18=
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss - The Fatty Lumpkin Sunkle Tweaker.milk b/InstallerDependencies/Visuals/projectM/presets/Geiss - The Fatty Lumpkin Sunkle Tweaker.milk
new file mode 100644
index 00000000..d5c13f91
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss - The Fatty Lumpkin Sunkle Tweaker.milk
@@ -0,0 +1,77 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=2.000000
+fDecay=0.900000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=2
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=10.140000
+fWaveScale=1.235000
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.772000
+fZoomExponent=2.301000
+fShader=0.000000
+zoom=1.099000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.290000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_x = wave_x + 0.250*( 0.60*sin(2.121*time) + 0.40*sin(1.621*time) );
+per_frame_2=wave_y = wave_y + 0.250*( 0.60*sin(1.742*time) + 0.40*sin(2.322*time) );
+per_frame_3=wave_r = wave_r + 0.500*( 0.60*sin(0.823*time) + 0.40*sin(0.916*time) );
+per_frame_4=wave_g = wave_g + 0.500*( 0.60*sin(0.900*time) + 0.40*sin(1.023*time) );
+per_frame_5=wave_b = wave_b + 0.500*( 0.60*sin(0.808*time) + 0.40*sin(0.949*time) );
+per_frame_6=zoom = zoom + 0.010*( 0.60*sin(0.339*time) + 0.40*sin(0.276*time) );
+per_frame_7=rot = rot + 0.035*( 0.60*sin(0.381*time) + 0.40*sin(0.539*time) );
+per_frame_8=cx = cx + 0.030*( 0.60*sin(0.374*time) + 0.40*sin(0.194*time) );
+per_frame_9=cy = cy + 0.037*( 0.60*sin(0.274*time) + 0.40*sin(0.394*time) );
+per_frame_10=q = time;
+per_frame_11=dx = dx + 0.019*( 0.60*sin(100.334*q)+ 0.40*sin(250.277*q));
+per_frame_12=dy = dy + 0.019*( 0.60*sin(200.384*q) + 0.40*sin(150.247*q));
+per_frame_13=sx = sx + 0.010*( 0.60*sin(0.313*time) + 0.40*sin(0.383*time) );
+per_pixel_1=rot=rot+rad*0.18*sin(0.6*time*0.439+0.4*time*0.338);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Geiss and Rovastar - The Chaos Of Colours (sprouting dimentia mix).milk b/InstallerDependencies/Visuals/projectM/presets/Geiss and Rovastar - The Chaos Of Colours (sprouting dimentia mix).milk
new file mode 100644
index 00000000..3364d0fa
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Geiss and Rovastar - The Chaos Of Colours (sprouting dimentia mix).milk
@@ -0,0 +1,261 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.700000
+fDecay=0.940000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.010000
+fWaveSmoothing=0.630000
+fWaveParam=-1.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=13.290894
+rot=-0.020000
+cx=0.500000
+cy=0.500000
+dx=-0.280000
+dy=-0.320000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.950000
+ib_g=0.850000
+ib_b=0.650000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=3
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.550000
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=0.100000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.900000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.400000
+shape_0_per_frame1=ang = time*0.4;;
+shape_0_per_frame2=x = 0.5 + 0.08*cos(time*1.3) + 0.03*cos(time*0.7);
+shape_0_per_frame3=y = 0.5 + 0.08*sin(time*1.4) + 0.03*sin(time*0.7);
+shape_0_per_frame4=r =0.5 + 0.5*sin(q8*0.613 + 1);
+shape_0_per_frame5=g = 0.5 + 0.5*sin(q8*0.763 + 2);
+shape_0_per_frame6=b = 0.5 + 0.5*sin(q8*0.771 + 5);
+shape_0_per_frame7=r2 = 0.5 + 0.5*sin(q8*0.635 + 4);
+shape_0_per_frame8=g2 = 0.5 + 0.5*sin(q8*0.616+ 1);
+shape_0_per_frame9=b2 = 0.5 + 0.5*sin(q8*0.538 + 3);
+shapecode_1_enabled=1
+shapecode_1_sides=32
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.400000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.300000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shape_1_per_frame1=ang = time*1.7;
+shape_1_per_frame2=x = 0.5 + 0.08*cos(time*1.1) + 0.03*cos(time*0.7);
+shape_1_per_frame3=y = 0.5 + 0.08*sin(time*1.1) + 0.03*sin(time*0.7);
+shape_1_per_frame4=r = 0.5 + 0.5*sin(q8*0.713 + 1);
+shape_1_per_frame5=g = 0.5 + 0.5*sin(q8*0.563 + 2);
+shape_1_per_frame6=b = 0.5 + 0.5*sin(q8*0.654 + 5);
+shape_1_per_frame7=r2 = 0.5 + 0.5*sin(q8*0.885 + 4);
+shape_1_per_frame8=g2 = 0.5 + 0.5*sin(q8*0.556+ 1);
+shape_1_per_frame9=b2 = 0.5 + 0.5*sin(tq8*0.638 + 3);
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.400000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.500000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shape_2_per_frame1=ang = time*1.24;
+shape_2_per_frame2=x = 0.5 - 0.08*cos(time*1.07) + 0.03*cos(time*0.7);
+shape_2_per_frame3=y = 0.5 - 0.08*sin(time*1.33) + 0.03*sin(time*0.7);
+shape_2_per_frame4=g = 0.5 + 0.5*sin(q8*0.713 + 1);
+shape_2_per_frame5=b = 0.5 + 0.5*sin(q8*0.563 + 2);
+shape_2_per_frame6=r = 0.5 + 0.5*sin(q8*0.654 + 5);
+shape_2_per_frame7=r2 = 0.5 + 0.5*sin(q8*0.885 + 4);
+shape_2_per_frame8=g2 = 0.5 + 0.5*sin(q8*0.556+ 1);
+shape_2_per_frame9=b2 = 0.5 + 0.5*sin(q8*.638 + 3);
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=ob_r = 0.5 + 0.4*sin(time*1.324);
+per_frame_2=ob_g = 0.5 + 0.4*cos(time*1.371);
+per_frame_3=ob_b = 0.5+0.4*sin(2.332*time);
+per_frame_4=ib_r = 0.5 + 0.25*sin(time*1.424);
+per_frame_5=ib_g = 0.25 + 0.25*cos(time*1.871);
+per_frame_6=ib_b = 1-ob_b;
+per_frame_7=volume = 0.15*(bass+bass_att+treb+treb_att+mid+mid_att);
+per_frame_8=xamptarg = if(equal(frame%15,0),min(0.5*volume*bass_att,0.5),xamptarg);
+per_frame_9=xamp = xamp + 0.5*(xamptarg-xamp);
+per_frame_10=xdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir));
+per_frame_11=xaccel = xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_12=xspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_13=xpos = xpos + 0.001*xspeed;
+per_frame_14=dx = xpos*0.05;
+per_frame_15=yamptarg = if(equal(frame%15,0),min(0.3*volume*treb_att,0.5),yamptarg);
+per_frame_16=yamp = yamp + 0.5*(yamptarg-yamp);
+per_frame_17=ydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir));
+per_frame_18=yaccel = ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_19=yspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_20=ypos = ypos + 0.001*yspeed;
+per_frame_21=dy = ypos*0.05;
+per_frame_22=wave_a = 0;
+per_frame_23=q8 =oldq8+ 0.0003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_24=oldq8 = q8;
+per_frame_25=q7 = 0.003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_26=rot = 0.4 + 1.5*sin(time*0.273) + 0.4*sin(time*0.379+3);
+per_pixel_1=zoom =( log(sqrt(2)-rad) -0.24)*1;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Idiot & Rovastar - Altars Of Madness 2 (X.42 Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Idiot & Rovastar - Altars Of Madness 2 (X.42 Mix).milk
new file mode 100644
index 00000000..19b9a5a4
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Idiot & Rovastar - Altars Of Madness 2 (X.42 Mix).milk
@@ -0,0 +1,95 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=0.999600
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=0
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.763002
+fWaveSmoothing=0.270000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=5.995790
+fWarpScale=1.331000
+fZoomExponent=1.010000
+fShader=0.000000
+zoom=0.998531
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.900000
+ob_b=0.200000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.500000
+ib_g=0.500000
+ib_b=0.500000
+ib_a=0.230000
+nMotionVectorsX=0.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=ob_r = 0.7 - 0.3*(0.5*sin(time*0.701)+ 0.3*cos(time*0.438));
+per_frame_2=ob_g = 0.5- 0.4*sin(time*5.924);
+per_frame_3=ob_b = 0.45 - 0.3*cos(time*0.816);
+per_frame_4=warp =0;
+per_frame_5=volume = 0.15*(bass_att+bass+mid+mid_att);
+per_frame_6=beatrate = if(equal(beatrate,0),1,if(below(volume,0.01),1,beatrate));
+per_frame_7=lastbeat = if(equal(lastbeat,0),time,lastbeat);
+per_frame_8=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_9=peakbass_att = if(above(bass_att,peakbass_att),bass_att,peakbass_att);
+per_frame_10=beat = if(above(volume,0.8),if(below(peakbass_att - bass_att, 0.05*peakbass_att),if(above(time - lastbeat,0.1+0.5*(beatrate-0.1)),1,0),0),0);
+per_frame_11=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_12=peakbass_att = if(equal(beat,0),if(above(time - lastbeat,2*beatrate),peakbass_att*0.95,peakbass_att*0.995),bass_att);
+per_frame_13=lastbeat = if(beat,time,lastbeat);
+per_frame_14=peakbass_att = max(if(beat,bass_att,peakbass_att),1.1*meanbass_att);
+per_frame_15=q5 = if(beat,0.1*rand(1000),oldq5);
+per_frame_16=oldq5 = q5;
+per_frame_17=q3 = if(beat,0.1*rand(1000),oldq3);
+per_frame_18=oldq3 = q3;
+per_frame_19=ib_size = 0.02;
+per_frame_20=ib_r = ib_r + 0.5*sin(time*2.424);
+per_frame_21=ib_g = ib_g + 0.5*sin(time*2.247);
+per_frame_22=ib_b = ib_b - 0.5*sin(time*1.131);
+per_frame_23=dx = dx -0.008*(0.6*sin(time*0.23)+0.5*cos(time*0.153));
+per_frame_24=dy = dy - 0.008*(0.6*sin(time*0.21)+0.5*cos(time*0.142));
+per_frame_25=echo_zoom=echo_zoom-.3*sin(Time*(q5/2/2/2/2/2/2/2));
+per_frame_26=//echo_alpha=1;
+per_pixel_1=box=abs(x*2-0.4*sin(q3))%2 + abs(y*2+0.4*sin(q5))%2;
+per_pixel_2=q1 = 4.05+(sin(x+0.237*time)-cos(y+0.513*time));
+per_pixel_3=zoom = if(above(box,1),q1*.1,zoom);
+per_pixel_4=rot = if(above(box,1),sin(0.885*time),0)*((ang/2/2/2)-rad)*Sin(q5)/2;
+per_pixel_5=dx = if(above(box,1),sin(0.542*time),0.005*sin((y-0.5)*96)+0.005*sin((y-0.5)*128));
+per_pixel_6=dy= if(above(box,1),sin(0.581*time),0.001*cos((x-0.5)*128)+0.001*cos((x-0.5)*96));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Idiot & Zylot - Unhealthy Love (Idiot's STDs Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Idiot & Zylot - Unhealthy Love (Idiot's STDs Mix).milk
new file mode 100644
index 00000000..4f7d6f97
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Idiot & Zylot - Unhealthy Love (Idiot's STDs Mix).milk
@@ -0,0 +1,112 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.950000
+fVideoEchoZoom=0.999607
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=7
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=5.830096
+fWaveSmoothing=0.630000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000100
+fShader=0.000000
+zoom=1.020484
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=0.999944
+sy=0.999904
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.400000
+ob_size=0.049900
+ob_r=0.110000
+ob_g=0.500000
+ob_b=1.000000
+ob_a=0.400000
+ib_size=0.055000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=0.640000
+nMotionVectorsY=4.800000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=0.700000
+mv_g=0.350000
+mv_b=0.500000
+mv_a=0.000000
+per_frame_1=vol_att=bass_att+treb_Att+mid_att;
+per_frame_2=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_3=treb_thresh=above(treb_att,treb_thresh)*2+
+per_frame_4=(1-above(treb_att,treb_thresh))*((treb_thresh-1.3)*0.96+1.3);
+per_frame_5=mid_thresh=above(mid_att,mid_thresh)*2+
+per_frame_6=(1-above(mid_mid_att,mid_thresh))*((mid_thresh-1.3)*0.96+1.3);
+per_frame_7=vol_thresh=bass_thresh+treb_thresh+mid_thresh;
+per_frame_8=treb_effect=max(max(treb,treb_Att),treb_thresh);
+per_frame_9=bass_effect=max(max(Bass,bass_Att),bass_thresh);
+per_frame_10=mid_effect=max(max(mid,mid_att),mid_thresh);
+per_frame_11=vol_effect=bass_effect+treb_effect+mid_effect;
+per_frame_12=react=vol;
+per_frame_13=new_bass=if(above(react,bass_effect),bass&bass_att,bass_effect+bass_thresh);
+per_frame_14=new_treb=if(above(react,treb_effect),treb&treb_att,treb_Effect+treb_thresh);
+per_frame_15=new_mid=if(above(react,mid_effect),mid&mid_Att,mid_effect+mid_thresh);
+per_frame_16=new_vol=new_bass+new_treb+new_mid+.04;
+per_frame_17=change=bnot(1);
+per_frame_18=q1=new_bass;
+per_frame_19=q2=new_treb;
+per_frame_20=q3=new_mid;
+per_frame_21=q4=new_vol;
+per_frame_22=q5=if(above(q2,q3),above(q1,q3),-above(q1,q3));
+per_frame_23=q6=if(above(q1,q3),above(q2,q4),-above(q2,q3));
+per_frame_24=q7=if(above(q5,q6),q5,-q6);;
+per_frame_25=q8=if(above(q6,q7),q6,-q7);;
+per_frame_26=
+per_frame_27=
+per_frame_28=
+per_frame_29=
+per_frame_30=red=1*sin(time*1*q1);
+per_frame_31=blue=1*sin(time*2*q2);
+per_frame_32=green=1*sin(time*3*q3);
+per_frame_33=wave_R=red-.2*sin(above(q1,q2));
+per_frame_34=wave_b=blue-.9*sin(Above(q1,q3));
+per_frame_35=wave_g=green-.5*sin(above(q3,q2));;
+per_frame_36=ob_r=blue;
+per_frame_37=ob_b=green;
+per_frame_38=ob_g=red;
+per_pixel_1=change=if(above(q1*q2,q3*q1),effect,effect0+.2+Rad*siN(q6-x+(.2*sin(q3)+x*sin(q7))));
+per_pixel_2=effect0=if(above(q1,q3),zoom,zoom-.1);
+per_pixel_3=effect=if(above(q2,q3),zoom,zoom-.1);
+per_pixel_4=change2=if(above(q1*q3,q4*q1),effect-.1,effect0-.1+rad*sin(q2-x+(.2*sin(q2))));
+per_pixel_5=change3=change-change2;
+per_pixel_6=change4=change0-change+change2;
+per_pixel_7=effect2=if(above(change,q1),if(above(change,q4),zoom+.3-rad,change),
+per_pixel_8=if(above(change,q3),-zoom+.3-rad,change2))+.2;
+per_pixel_9=zoom=if(above(change3,change4),if(above(chang2,change3),if(above(change,change2)
+per_pixel_10=,effect,effect2),effect0),zoom);
+per_pixel_11=rot = -ang*.05*zoom;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Idiot - MOTIVATION!.milk b/InstallerDependencies/Visuals/projectM/presets/Idiot - MOTIVATION!.milk
new file mode 100644
index 00000000..21d1c436
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Idiot - MOTIVATION!.milk
@@ -0,0 +1,81 @@
+[preset00]
+fRating=1.000000
+fGammaAdj=1.000000
+fDecay=0.960000
+fVideoEchoZoom=1.006596
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=0.236877
+fWaveSmoothing=0.630000
+fWaveParam=-0.400000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999514
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=1.000000
+wave_b=1.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.500000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=1.248000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=0.000000
+mv_a=0.000000
+per_frame_1=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_2=treb_thresh=above(treb_att,treb_thresh)*2+
+per_frame_3=(1-above(treb_att,treb_thresh))*((treb_thresh-1.3)*0.96+1.3);
+per_frame_4=mid_thresh=above(mid_att,mid_thresh)*2+
+per_frame_5=(1-above(mid_mid_att,mid_thresh))*((mid_thresh-1.3)*0.96+1.3);
+per_frame_6=vol_thresh=bass_thresh+treb_thresh+mid_thresh;
+per_frame_7=q1=bass_thresh;
+per_frame_8=q2=treb_thresh;
+per_frame_9=q3=mid_thresh;
+per_frame_10=q4=vol_thresh;
+per_frame_11=wave_g=1-(abs(q1/2/2));
+per_frame_12=wave_r=1-(abs(Q2/2/2));
+per_frame_13=wave_g=1-(abs(q3/2/2));
+per_frame_14=
+per_pixel_1=zoom=zoom+.1*Sin(Abs(rad/3.14)+.6*sin(above(Q1,1.594)+.1*sin(Q1)));
+per_pixel_2=rot=rot+.1*sin(rad*3.14)*sin(if(above(q2,1.6),.5,-.5))+(.01*Rad)*sin(above(q1,1.7));
+per_pixel_3=dx=dx+.01*Sin(rad*5)*Sin(if(above(q3,1.2),.5,-.5))*sin(rad*50-q1)+.005*Sin(Q2*rad*50);
+per_pixel_4=dy=dy-.01*sin(rad*5)*sin(if(above(q2,1.5),.5,-.5))*sin(rad*500-q2)-.005*sin(q1*rad*50);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Idiot - Texture Boxes (Remix 2).milk b/InstallerDependencies/Visuals/projectM/presets/Idiot - Texture Boxes (Remix 2).milk
new file mode 100644
index 00000000..13ae4078
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Idiot - Texture Boxes (Remix 2).milk
@@ -0,0 +1,250 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.900000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001715
+fWaveScale=1.000000
+fWaveSmoothing=0.750000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999999
+rot=-0.000000
+cx=0.500000
+cy=0.500000
+dx=-0.006000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.500000
+ib_r=0.400000
+ib_g=0.400000
+ib_b=0.400000
+ib_a=0.000000
+nMotionVectorsX=38.399994
+nMotionVectorsY=14.400005
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=0.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.000000
+shapecode_0_y=0.870000
+shapecode_0_rad=0.310900
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=3.141500
+shapecode_0_tex_zoom=2.216710
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=0.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=1.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=0.000000
+shapecode_0_border_b=0.000000
+shapecode_0_border_a=1.000000
+shape_0_per_frame1=textured=1;
+shape_0_per_frame2=tex_ang=tex_ang+1*sin(time*.65*q2);
+shape_0_per_frame3=ang=ang+1*sin(time*.62);
+shape_0_per_frame4=x=.5-.3*sin(time*.34);
+shape_0_per_frame5=y=.5+.3*sin(time*.53);
+shape_0_per_frame6=rad=rad-.5*sin(time*.53);
+shapecode_1_enabled=1
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.000000
+shapecode_1_y=0.620000
+shapecode_1_rad=0.307832
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=2.448630
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=0.000000
+shapecode_1_border_a=1.000000
+shape_1_per_frame1=textured=1;
+shape_1_per_frame2=tex_ang=tex_ang+1*sin(time*.23*q4);
+shape_1_per_frame3=ang=ang+1*sin(time*.75);
+shape_1_per_frame4=x=.5-.3*sin(time*.12);
+shape_1_per_frame5=y=.5+.3*sin(time*.65);
+shape_1_per_frame6=rad=rad+.5*sin(time*.75);
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.000000
+shapecode_2_y=0.370000
+shapecode_2_rad=0.317160
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=2.448629
+shapecode_2_r=1.000000
+shapecode_2_g=0.400000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=0.400000
+shapecode_2_b2=0.000000
+shapecode_2_a2=1.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=0.400000
+shapecode_2_border_b=0.000000
+shapecode_2_border_a=1.000000
+shape_2_per_frame1=textured=1;
+shape_2_per_frame2=tex_ang=tex_ang+1*sin(time*.34*q3);
+shape_2_per_frame3=ang=ang+1*sin(time*.12);
+shape_2_per_frame4=x=.5-.3*sin(time*.23);
+shape_2_per_frame5=y=.5+.3*sin(time*.56);
+shape_2_per_frame6=rad=rad+.5*sin(time*.12);
+shapecode_3_enabled=1
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=1
+shapecode_3_x=0.000000
+shapecode_3_y=0.110000
+shapecode_3_rad=0.314020
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=2.216713
+shapecode_3_r=0.000000
+shapecode_3_g=1.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=1.000000
+shapecode_3_border_r=0.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=0.000000
+shapecode_3_border_a=1.000000
+shape_3_per_frame1=textured=1;
+shape_3_per_frame2=tex_ang=tex_ang+1*sin(time*.12*q6);
+shape_3_per_frame3=ang=ang+1*sin(time*.65);
+shape_3_per_frame4=x=.5-.3*sin(time*.54);
+shape_3_per_frame5=y=.5+.3*sin(time*.23);
+shape_3_per_frame6=rad=rad+.4*sin(time*.43);
+per_frame_1=vol_att=(treb_att*.25)+(mid_att*.25)+(bass_att*.25+.5*sin(vol))/vol;
+per_frame_2=vol=bass+treb+mid;
+per_frame_3=new_bass=(bass*.25+.5*sin(bass_att*.25));
+per_frame_4=new_treb=(treb*.25+.5*sin(treb_att*.25));
+per_frame_5=new_mid=(mid*.25+.4*sin(mid_att*.25));
+per_frame_6=bass_c=q1-1*sin(bass_stt&time*.54);
+per_frame_7=treb_c=q2-1*sin(treb_att&time*.44);
+per_frame_8=mid_c=q3-1*sin(mid_att&time*.24);
+per_frame_9=vol_c=q4-1*sin(vol_att&time*.64);
+per_frame_10=q1=sin(bass-new_bass&time*.63);
+per_frame_11=q2=sin(treb-new_treb&time*.43);
+per_frame_12=q3=sin(mid-new_mid&time*.23);
+per_frame_13=q4=sin(vol&time*.65);
+per_frame_14=q5=bass_c;
+per_frame_15=q6=treb_c;
+per_frame_16=q7=mid_c;
+per_frame_17=q8=vol_c;
+per_frame_18=
+per_frame_19=
diff --git a/InstallerDependencies/Visuals/projectM/presets/Idiot - Texture Boxes (Remix).milk b/InstallerDependencies/Visuals/projectM/presets/Idiot - Texture Boxes (Remix).milk
new file mode 100644
index 00000000..b096d71e
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Idiot - Texture Boxes (Remix).milk
@@ -0,0 +1,251 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.900000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001715
+fWaveScale=1.000000
+fWaveSmoothing=0.750000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999999
+rot=-0.000000
+cx=0.500000
+cy=0.500000
+dx=0.194000
+dy=0.400000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.500000
+ib_r=0.400000
+ib_g=0.400000
+ib_b=0.400000
+ib_a=0.000000
+nMotionVectorsX=38.399994
+nMotionVectorsY=14.400005
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=0.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.000000
+shapecode_0_y=0.870000
+shapecode_0_rad=0.310900
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=3.141500
+shapecode_0_tex_zoom=2.216710
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=0.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=1.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=0.000000
+shapecode_0_border_b=0.000000
+shapecode_0_border_a=1.000000
+shape_0_per_frame1=tx=0+1*sin(q1);
+shape_0_per_frame2=textured=if(below(.5,tx),0,1);
+shape_0_per_frame3=tex_ang=tex_ang+1*sin(time*.65*q2);
+shape_0_per_frame4=ang=ang+1*sin(time*.62);
+shape_0_per_frame5=x=.5-.3*sin(time*.34);
+shape_0_per_frame6=y=.5+.3*sin(time*.53);
+shape_0_per_frame7=
+shapecode_1_enabled=1
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.000000
+shapecode_1_y=0.620000
+shapecode_1_rad=0.307832
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=2.448630
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=0.000000
+shapecode_1_border_a=1.000000
+shape_1_per_frame1=tx=0+1*sin(q2);
+shape_1_per_frame2=textured=if(below(.5,tx),0,1);
+shape_1_per_frame3=tex_ang=tex_ang+1*sin(time*.23*q4);
+shape_1_per_frame4=ang=ang+1*sin(time*.75);
+shape_1_per_frame5=x=.5-.3*sin(time*.12);
+shape_1_per_frame6=y=.5+.3*sin(time*.65);
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.000000
+shapecode_2_y=0.370000
+shapecode_2_rad=0.317160
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=2.448629
+shapecode_2_r=1.000000
+shapecode_2_g=0.400000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=0.400000
+shapecode_2_b2=0.000000
+shapecode_2_a2=1.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=0.400000
+shapecode_2_border_b=0.000000
+shapecode_2_border_a=1.000000
+shape_2_per_frame1=tx=0+1*sin(q3);
+shape_2_per_frame2=textured=if(below(.5,tx),0,1);
+shape_2_per_frame3=tex_ang=tex_ang+1*sin(time*.34*q3);
+shape_2_per_frame4=ang=ang+1*sin(time*.12);
+shape_2_per_frame5=x=.5-.3*sin(time*.23);
+shape_2_per_frame6=y=.5+.3*sin(time*.56);
+shapecode_3_enabled=1
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=1
+shapecode_3_x=0.000000
+shapecode_3_y=0.110000
+shapecode_3_rad=0.314020
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=2.216713
+shapecode_3_r=0.000000
+shapecode_3_g=1.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=1.000000
+shapecode_3_border_r=0.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=0.000000
+shapecode_3_border_a=1.000000
+shape_3_per_frame1=tx=0+1*sin(q4);
+shape_3_per_frame2=textured=if(below(.5,tx),0,1);
+shape_3_per_frame3=tex_ang=tex_ang+1*sin(time*.12*q6);
+shape_3_per_frame4=ang=ang+1*sin(time*.65);
+shape_3_per_frame5=x=.5-.3*sin(time*.54);
+shape_3_per_frame6=y=.5+.3*sin(time*.23);
+per_frame_1=vol_att=(treb_att*.25)+(mid_att*.25)+(bass_att*.25+.5*sin(vol))/vol;
+per_frame_2=vol=bass+treb+mid;
+per_frame_3=new_bass=(bass*.25+.5*sin(bass_att*.25));
+per_frame_4=new_treb=(treb*.25+.5*sin(treb_att*.25));
+per_frame_5=new_mid=(mid*.25+.4*sin(mid_att*.25));
+per_frame_6=bass_c=q1-1*sin(bass_att&time*.54);
+per_frame_7=treb_c=q2-1*sin(treb_att&time*.44);
+per_frame_8=mid_c=q3-1*sin(mid_att&time*.24);
+per_frame_9=vol_c=q4-1*sin(vol_att&time*.64);
+per_frame_10=q1=sin(bass-new_bass&time*.63);
+per_frame_11=q2=sin(treb-new_treb&time*.43);
+per_frame_12=q3=sin(mid-new_mid&time*.23);
+per_frame_13=q4=sin(vol&time*.65);
+per_frame_14=q5=bass_c;
+per_frame_15=q6=treb_c;
+per_frame_16=q7=mid_c;
+per_frame_17=q8=vol_c;
+per_frame_18=
+per_frame_19=
diff --git a/InstallerDependencies/Visuals/projectM/presets/Idiot24-7 - Ascending to heaven 2.milk b/InstallerDependencies/Visuals/projectM/presets/Idiot24-7 - Ascending to heaven 2.milk
new file mode 100644
index 00000000..dad85ca5
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Idiot24-7 - Ascending to heaven 2.milk
@@ -0,0 +1,64 @@
+[preset00]
+fRating=4.000000
+fGammaAdj=2.000000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=33.469135
+fWaveScale=0.931008
+fWaveSmoothing=0.500000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.000000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=5.725291
+fZoomExponent=4.778017
+fShader=0.000000
+zoom=1.093507
+rot=-0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.066200
+sx=0.905286
+sy=1.010000
+wave_r=1.000000
+wave_g=1.000000
+wave_b=1.000000
+wave_x=0.500000
+wave_y=0.470000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.500000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=19.199995
+nMotionVectorsY=14.400000
+mv_l=3.000000
+mv_r=0.600000
+mv_g=0.000000
+mv_b=1.000000
+mv_a=0.100000
+per_frame_1=wave_r = wave_r + 1*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+per_frame_2=wave_b = wave_b + 1*( 1.60*sin(1.900*time) + 0.40*sin(0.956*time) );
+per_frame_3=wave_g = wave_g +1*(1.50*sin(1.900*time)+.40*sin(1*time) );
+per_frame_4=rot=.140*sin(time);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Illusion & Che - Return Of The King.milk b/InstallerDependencies/Visuals/projectM/presets/Illusion & Che - Return Of The King.milk
new file mode 100644
index 00000000..f4c6d2e3
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Illusion & Che - Return Of The King.milk
@@ -0,0 +1,68 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.999000
+fVideoEchoZoom=1.000498
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=1
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000416
+fWaveScale=0.591236
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=1.000000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000158
+fShader=1.000000
+zoom=1.000200
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.030301
+sy=1.020100
+wave_r=0.000000
+wave_g=0.500000
+wave_b=0.900000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.150000
+ob_r=0.000000
+ob_g=0.200000
+ob_b=0.400000
+ob_a=0.000000
+ib_size=0.000000
+ib_r=0.250000
+ib_g=0.150000
+ib_b=0.550000
+ib_a=1.000000
+nMotionVectorsX=19.199995
+nMotionVectorsY=14.400000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.500000
+mv_r=0.000000
+mv_g=0.000000
+mv_b=0.000000
+mv_a=0.000000
+per_frame_1=wave_r = 0.150*( 0.30*sin(0.875*time) + 0.20*sin(0.315*time) );
+per_frame_2=wave_g = 0.850*( 0.10*sin(0.200*time) + 0.10*sin(1.025*time) );
+per_frame_3=wave_b = 0.250*( 0.90*sin(0.410*time) + 0.60*sin(0.150*time) );
+per_pixel_1=dx=.01*sin((20+10*sin(q1*1.5))*(y+.2*sin(q1*.7)))*bass;
+per_pixel_2=dy=.01*sin((20+10*sin(q1))*(x+.2*sin(q1*.77)))*bass;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Illusion & Che - The Piper.milk b/InstallerDependencies/Visuals/projectM/presets/Illusion & Che - The Piper.milk
new file mode 100644
index 00000000..0b2e148f
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Illusion & Che - The Piper.milk
@@ -0,0 +1,69 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.990000
+fVideoEchoZoom=1.000498
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=2
+nWaveMode=6
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000416
+fWaveScale=0.998162
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.000000
+fModWaveAlphaEnd=0.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000100
+fShader=1.000000
+zoom=0.970700
+rot=0.020000
+cx=0.350000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.072134
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.150000
+ob_r=0.000000
+ob_g=0.200000
+ob_b=0.400000
+ob_a=0.000000
+ib_size=0.000000
+ib_r=0.250000
+ib_g=0.150000
+ib_b=0.550000
+ib_a=1.000000
+nMotionVectorsX=19.199995
+nMotionVectorsY=14.400000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.500000
+mv_r=0.000000
+mv_g=0.000000
+mv_b=0.000000
+mv_a=0.000000
+per_frame_1=wave_r = 0.150*(0.30*sin(0.875*time) + 0.20*sin(0.315*time) );
+per_frame_2=wave_g = 0.150*(0.10*sin(0.200*time) + 0.10*sin(1.025*time) );
+per_frame_3=wave_b = 0.150*(0.50*sin(0.410*time) + 0.60*sin(0.150*time) );
+per_pixel_1=dx=.01*sin((20+10*sin(q1*1.5))*(y+.2*sin(q1*.7)))*bass*3;
+per_pixel_2=dy=.01*sin((20+10*sin(q1))*(x+.2*sin(q1*.77)))*bass*2;
+per_pixel_3=sy = sy + 0.01 * bass_att;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Illusion & Rovastar - Clouded Bottle.milk b/InstallerDependencies/Visuals/projectM/presets/Illusion & Rovastar - Clouded Bottle.milk
new file mode 100644
index 00000000..902410f7
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Illusion & Rovastar - Clouded Bottle.milk
@@ -0,0 +1,79 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000001
+fDecay=0.999000
+fVideoEchoZoom=0.999609
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=2
+nWaveMode=5
+bAdditiveWaves=1
+bWaveDots=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=1.254857
+fWaveSmoothing=0.630000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=2.448629
+fWarpScale=67.165291
+fZoomExponent=0.132909
+fShader=1.000000
+zoom=0.970590
+rot=0.000000
+cx=2.000000
+cy=0.500000
+dx=0.020000
+dy=0.000000
+warp=0.029800
+sx=1.000000
+sy=1.010000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=1.000000
+wave_y=0.500000
+ob_size=0.300000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.260000
+ib_r=1.000000
+ib_g=0.000000
+ib_b=1.000000
+ib_a=0.000000
+nMotionVectorsX=8.000000
+nMotionVectorsY=1.920000
+mv_l=5.000000
+mv_r=0.000000
+mv_g=1.000000
+mv_b=0.000000
+mv_a=0.500000
+per_frame_1=dx =dx -0.0005;
+per_frame_2=dy = dy-0.0035;
+per_frame_3=mv_l = 3000;
+per_frame_4=mv_r = 0.5 + 0.499*sin(time*1.12);
+per_frame_4=mv_g = 0.5 + 0.123*cos(time*1.83);
+per_frame_5=mv_b = 0.4 + 0.79*cos(time*0.45);
+per_frame_6=bass_effect = max(max(bass,bass_att)-1.3,0);
+per_frame_7=decay = if(above(bass_effect,0),0.96,0.996);
+per_frame_8=wave_x = 0.6+0.3*sin(time*0.724);
+per_frame_9=warp = warp + (2*sin(0.75*time));
+per_frame_10=wrap_s = wrap_s +0.5*sin(0.1*time);
+per_frame_9=wave_r = 0.5 + (sin(time/2) - cos(time*0.22))/2;
+per_frame_10=wave_g = 0.5 - sin(time*0.877)/2;
+per_frame_11=wave_b = 0.5 - cos(time)/2;
+per_frame_13=dx = dx + dx_residual;
+per_frame_14=dy = dy + dy_residual;
+per_frame_15=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_16=dx_residual = equal(bass_thresh,2)*0.016*sin(time*7) + (1-equal(bass_thresh,2))*dx_residual;
+per_frame_17=dy_residual = equal(bass_thresh,2)*0.012*sin(time*9) + (1-equal(bass_thresh,2))*dy_residual;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Illusion & Unchained - Frozen Eye 1.milk b/InstallerDependencies/Visuals/projectM/presets/Illusion & Unchained - Frozen Eye 1.milk
new file mode 100644
index 00000000..05c1de83
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Illusion & Unchained - Frozen Eye 1.milk
@@ -0,0 +1,77 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=1.599179
+fWaveSmoothing=0.750000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.850000
+fModWaveAlphaEnd=1.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=3.072695
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.410000
+wave_g=0.400000
+wave_b=0.400000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=warp=0;
+per_frame_2=bass_on=if(above(bass_att,1.3),1,0);
+per_frame_3=treb_on=if(above(treb_att,1.3),1,0);
+per_frame_4=state = 1 + bass;
+per_frame_5=wave_r = wave_r + 0.25*(0.6*sin(0.784*time) + 0.4*sin(0.986*time))*state;
+per_frame_6=wave_g = wave_g + 0.25*(0.6*sin(0.671*time) + 0.4*sin(1.164*time))*(4-state);
+per_frame_7=wave_b = wave_b + 0.25*(0.6*sin(1.423*time) + 0.4*sin(0.687*time))*(4/state);
+per_frame_8=wave_y=if(equal(state,1),wave_y+rand(10)*.1*sin(time*3),wave_y);
+per_frame_9=bass_effect = if(above(bass_att,1.4),pow(1.1,bass_att),1);
+per_frame_10=treb_effect = if(above(treb_att,1.4),pow(0.97,treb_att),1);
+per_frame_11=net_effect = if(above(bass_att,0.8*treb_att),bass_effect,treb_effect);
+per_frame_12=zoom = 0.99 * net_effect;
+per_frame_13=rot = 0.03 * net_effect * sin(time);
+per_frame_14=wave_size=6*state + 3;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Illusion & Unchained - Invade My Mind.milk b/InstallerDependencies/Visuals/projectM/presets/Illusion & Unchained - Invade My Mind.milk
new file mode 100644
index 00000000..b0eb4622
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Illusion & Unchained - Invade My Mind.milk
@@ -0,0 +1,110 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.976000
+fVideoEchoZoom=1.028414
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=7
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.818016
+fWaveScale=1.028415
+fWaveSmoothing=0.090000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=5.995700
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000206
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.424100
+sx=1.000000
+sy=1.000000
+wave_r=0.200000
+wave_g=1.000000
+wave_b=1.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.060000
+ob_r=0.800000
+ob_g=0.300000
+ob_b=0.800000
+ob_a=1.000000
+ib_size=0.050000
+ib_r=0.200000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.850000
+mv_r=0.499900
+mv_g=0.499900
+mv_b=0.499900
+mv_a=1.000000
+per_frame_1=old_bass_flop=bass_flop;
+per_frame_2=old_treb_flop=treb_flop;
+per_frame_3=old_mid_flop=mid_flop;
+per_frame_4=chaos=.9+.1*sin(pulse);
+per_frame_5=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.6)*chaos+1.6);
+per_frame_6=bass_flop=abs(bass_flop-equal(bass_thresh,2));
+per_frame_7=treb_thresh=above(treb_att,treb_thresh)*2 + (1-above(treb_att,treb_thresh))*((treb_thresh-1.6)*chaos+1.6);
+per_frame_8=treb_flop=abs(treb_flop-equal(treb_thresh,2));
+per_frame_9=mid_thresh=above(mid_att,mid_thresh)*2 + (1-above(mid_att,mid_thresh))*((mid_thresh-1.6)*chaos+1.6);
+per_frame_10=mid_flop=abs(mid_flop-equal(mid_thresh,2));
+per_frame_11=bass_changed=bnot(equal(old_bass_flop,bass_flop));
+per_frame_12=mid_changed=bnot(equal(old_mid_flop,mid_flop));
+per_frame_13=treb_changed=bnot(equal(old_treb_flop,treb_flop));
+per_frame_14=bass_residual = bass_changed*sin(pulse*3) + bnot(bass_changed)*bass_residual;
+per_frame_15=treb_residual = treb_changed*sin(pulse*3) + bnot(treb_changed)*treb_residual;
+per_frame_16=mid_residual = mid_changed*sin(pulse*3) + bnot(mid_changed)*mid_residual;
+per_frame_17=pulse=if(above(abs(pulse),3.14),-3.14,pulse+(bass_thresh+mid_thresh+treb_thresh)*.0035);
+per_frame_18=entropy=if(bass_changed*mid_changed*treb_changed,(1+bass_flop+treb_flop+mid_flop)*(1+rand(3)),entropy);
+per_frame_19=q1=mid_residual;
+per_frame_20=q2=bass_residual;
+per_frame_21=q3=treb_residual;
+per_frame_22=q4=sin(pulse);
+per_frame_23=q5=cos(pulse*(.5+.1*entropy));
+per_frame_24=q6=sin(pulse*(.5+pow(.25,entropy)));
+per_frame_25=q7=above(q1,0)+above(q2,0)+above(q3,0)+above(q3,0)*treb_flop+above(q2,0)*bass_flop+above(q1,0)*mid_flop;
+per_frame_26=q8=entropy;
+per_frame_27=wave_r=wave_r+wave_r*sin(q4+q5);
+per_frame_28=wave_b=wave_b+wave_b*q2*sin(q3);
+per_frame_29=wave_g=wave_g+wave_g*q2;
+per_frame_30=ob_r=ob_r+ob_r*sin(q1+q2*2.14);
+per_frame_31=ob_bob_b+ob_b*sin(q2+q3*2.14);
+per_frame_32=ob_g=ob_g+ob_g*sin(q3+q1*2.14);
+per_frame_33=ib_r=ib_r+ib_r*cos(q5+q1*2.14);
+per_frame_34=ib_b=ib_b+ib_*cos(q5+q2*2.14);
+per_frame_35=ib_g=ib_g+ib_g*cos(q5+q3*2.14);
+per_frame_36=wave_mystery=.5*q6;
+per_frame_37=warp=0;
+per_frame_38=ob_size = 0.070 + (bass+mid)/24 + bass_att/30;
+per_frame_39=ib_size = ob_size / 4;
+per_pixel_1=zoom=zoom+.10*sin(q4+time+ang+rad);
+per_pixel_2=rot=if(above(bnot(1*q4),bnot(1*q3*.24)),rot*sin(rad*sin(q4*.54)),-rot*sin(rad*cos(q4*.
+per_pixel_3=34)))*Sin(Bass*.43)*sin(time*.13)*sin(q4*.54);
+per_pixel_4=sx=sx+.2*sqrt(sin(x))*sin(q3)*sin(q4*.42)*sin(q1*.65);
+per_pixel_5=sy=sy-.2*sqrt(sin(y))*cos(q3*q1)*Sin(above(q3,q3+.4)*.54)*sin(q4*above(q3,q2)*.54);
+per_pixel_6=dx=rot*sin(q4+q3)*Y*sin(above(q2,q4*.12))*x*sin(q3*.53)*sin(q5*.43);
+per_pixel_7=dy=-rot*sin(q3)*x*Sin(above(q3,q5)*.53)*y*sin(above(q4,q1)*-.12)*sin(above(q1,q3)*.23);;
+per_pixel_8=cx = cx + 4 * sin(0.128 * q3);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Illusion - Figure Eight.milk b/InstallerDependencies/Visuals/projectM/presets/Illusion - Figure Eight.milk
new file mode 100644
index 00000000..e6172120
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Illusion - Figure Eight.milk
@@ -0,0 +1,80 @@
+[preset00]
+fRating=4.000000
+fGammaAdj=1.000000
+fDecay=0.985000
+fVideoEchoZoom=0.999609
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=5
+bAdditiveWaves=1
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.800000
+fWaveScale=0.640223
+fWaveSmoothing=0.270000
+fWaveParam=0.600000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=5.995790
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.040100
+rot=0.400000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.499900
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=3.200000
+nMotionVectorsY=3.000001
+mv_l=3.950000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.700000
+per_frame_1=dx = dx - .001;
+per_frame_2=dy = dy - .001;
+per_frame_3=warp = 0;
+per_frame_4=wave_r = wave_r + .5*sin(time*.666);
+per_frame_5=wave_g = wave_g + .5*sin(time*.777);
+per_frame_6=wave_b = wave_b + .5*sin(time*.888);
+per_frame_7=wave_r = wave_r + 0.5*sin(1.047*time);
+per_frame_8=wave_g = wave_g - 0.5*cos(0.835*time);
+per_frame_9=wave_b = wave_b + 0.5*cos(1.011*time);
+per_frame_10=rot = rot + 0.030*( 0.60*sin(0.381*time) + 0.40*sin(0.479*time) );
+per_frame_11=cx = cx + 0.110*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );
+per_frame_12=cy = cy + 0.110*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );
+per_frame_13=mv_a=mid_residual;
+per_frame_14=mv_x=rand(30);
+per_frame_15=mv_y=rand(30);
+per_frame_16=mv_r=wave_b;
+per_frame_17=mv_b=wave_g;
+per_frame_18=mv_g=wave_r;
+per_pixel_1=dx = .01*atan((rad)/.1*sin((x*y)*20+time*5));
+per_pixel_2=zoom = zoom + rad*.05;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Jess - Trying To Trap A Twister.milk b/InstallerDependencies/Visuals/projectM/presets/Jess - Trying To Trap A Twister.milk
new file mode 100644
index 00000000..a1c27848
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Jess - Trying To Trap A Twister.milk
@@ -0,0 +1,89 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=2.000000
+fDecay=0.993000
+fVideoEchoZoom=0.996620
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.264366
+fWaveScale=0.264076
+fWaveSmoothing=0.720000
+fWaveParam=-0.400000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.300000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.061520
+sy=1.061520
+wave_r=1.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=1.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=1.000000
+ib_a=1.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=warp=0;
+per_frame_2=entropy=if(bnot(entropy),2,if(equal(pulse,-9.42),1+rand(3),entropy));
+per_frame_3=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*chaos+1.3);
+per_frame_4=bass_changed=abs(bass_flop-equal(bass_thresh,2));
+per_frame_5=treb_thresh=above(treb_att,treb_thresh)*2 + (1-above(treb_att,treb_thresh))*((treb_thresh-1.3)*chaos+1.3);
+per_frame_6=treb_changed=abs(treb_flop-equal(treb_thresh,2));
+per_frame_7=mid_thresh=above(mid_att,mid_thresh)*2 + (1-above(mid_att,mid_thresh))*((mid_thresh-1.3)*chaos+1.3);
+per_frame_8=mid_changed=abs(mid_flop-equal(mid_thresh,2));
+per_frame_9=bass_residual = bass_changed*sin(pulse*bass_thresh*.2*entropy) + bnot(bass_changed)*bass_residual;
+per_frame_10=treb_residual = treb_changed*sin(pulse*treb_thresh*.2*entropy) + bnot(treb_changed)*treb_residual;
+per_frame_11=mid_residual = mid_changed*sin(pulse*mid_thresh*.2*entropy) + bnot(mid_changed)*mid_residual;
+per_frame_12=pulse=if(above(abs(pulse),9.42),-9.42,pulse+.1*bor(bor(bass_changed*bnot(treb_changed),treb_changed*bnot(bass_changed))*bnot(mid_changed),mid_changed)+(mid+bass+treb)*entropy*.01);
+per_frame_13=q1=mid_residual;
+per_frame_14=q2=bass_residual;
+per_frame_15=q3=treb_residual;
+per_frame_16=q4=sin(pulse);
+per_frame_17=q5=cos(pulse);
+per_frame_18=wave_mystery=-.2+.2*q4;
+per_frame_19=wave_r=wave_r+.5*bass_residual;
+per_frame_20=zoom=zoom-.0035*q1;
+per_frame_21=decay=decay+.003*sin(pulse);
+per_pixel_1=anti_rad=(1-rad);
+per_pixel_2=dx=if(below(sin(rad*10*q5),abs(q5)),.02*q1,.025*q2);
+per_pixel_3=dy=dy-cos(anti_rad*10*q3-rad*10*q5+rad*10*q4)*.05;
+per_pixel_4=zoom=zoom+(dy-1)*(dx-1)*q1*.07;
+per_pixel_5=rot=rot+atan(anti_rad*3.14*q3)*abs(zoom-1.2)*above(q2,0);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Krash & Illusion - Spiral Movement.milk b/InstallerDependencies/Visuals/projectM/presets/Krash & Illusion - Spiral Movement.milk
new file mode 100644
index 00000000..4ec49759
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Krash & Illusion - Spiral Movement.milk
@@ -0,0 +1,88 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=1
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=0.504218
+fWaveSmoothing=0.750000
+fWaveParam=0.240000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=9.860800
+fWarpScale=16.217400
+fZoomExponent=1.503744
+fShader=0.000000
+zoom=1.020100
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.819544
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.200000
+ib_size=0.005000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.060000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=dx=-0.0005;
+per_frame_2=dy=-0.0005;
+per_frame_3=vol = (bass+mid+att)/6;
+per_frame_4=xamptarg = if(equal(frame%15,0),min(0.5*vol*bass_att,0.5),xamptarg);
+per_frame_5=xamp = xamp + 0.5*(xamptarg-xamp);
+per_frame_6=xdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir));
+per_frame_7=xaccel = xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_8=xspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_9=xpos = xpos + 0.001*xspeed;
+per_frame_10=wave_x = xpos + 0.5;
+per_frame_11=yamptarg = if(equal(frame%15,0),min(0.3*vol*treb_att,0.5),yamptarg);
+per_frame_12=yamp = yamp + 0.5*(yamptarg-yamp);
+per_frame_13=ydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir));
+per_frame_14=yaccel = ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_15=yspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_16=ypos = ypos + 0.001*yspeed;
+per_frame_17=wave_y = ypos + 0.5;
+per_frame_18=wave_r = wave_r + 0.350*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );
+per_frame_19=wave_g = wave_g + 0.350*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );
+per_frame_20=wave_b = wave_b + 0.350*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );
+per_frame_21=rot = rot + 0.030*( 0.60*sin(0.381*time) + 0.40*sin(0.479*time) );
+per_frame_22=cx = cx + 0.410*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );
+per_frame_23=cy = cy + 0.410*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );
+per_frame_24=wave_mystery = wave_mystery + 0.15*( 0.60*sin(0.629*time) + 0.40*sin(1.826*time) );
+per_frame_25=warp = warp*vol;
+per_frame_26=zoom = zoom - 0.02*zoom*bass_att;
+per_frame_27=zoom_exp = 1.5*( 0.60*sin(0.381*time) + 0.40*sin(0.479*time) );
+per_frame_28=ob_a = 1 - 2*vol;
+per_frame_29=monitor = zoom_exp;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Krash & Rovastar - Altars of Madness (Mad Ocean Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Krash & Rovastar - Altars of Madness (Mad Ocean Mix).milk
new file mode 100644
index 00000000..323829a5
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Krash & Rovastar - Altars of Madness (Mad Ocean Mix).milk
@@ -0,0 +1,92 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.980000
+fDecay=1.000000
+fVideoEchoZoom=1.006596
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=5
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=0.660126
+fWaveSmoothing=0.000000
+fWaveParam=0.300000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.500000
+mv_r=0.150000
+mv_g=0.450000
+mv_b=0.650000
+mv_a=0.200000
+per_frame_1=warp=0;
+per_frame_2=ib_a =0.2*bass;
+per_frame_3=wave_r = wave_r + 0.45*(0.5*sin(time*0.701)+ 0.3*cos(time*0.438));
+per_frame_4=wave_b = wave_b - 0.4*(0.5*sin(time*4.782)+0.5*cos(time*0.522));
+per_frame_5=wave_g = wave_g + 0.4*sin(time*1.731);
+per_frame_6=decay = decay - equal(frame%100,0)*0.1;
+per_frame_7=vol = 0.167*(bass+mid);
+per_frame_8=xamptarg = if(equal(frame%15,0),min(0.5*vol*bass_att,0.5),xamptarg);
+per_frame_9=xamp = xamp + 0.5*(xamptarg-xamp);
+per_frame_10=xdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir));
+per_frame_11=xspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_12=xpos = xpos + 0.001*xspeed;
+per_frame_13=wave_x = 1.5*xpos + 0.5;
+per_frame_14=yamptarg = if(equal(frame%15,0),min(0.3*vol*treb_att,0.5),yamptarg);
+per_frame_15=yamp = yamp + 0.5*(yamptarg-yamp);
+per_frame_16=ydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir));
+per_frame_17=yspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_18=ypos = ypos + 0.001*yspeed;
+per_frame_19=wave_y = 1.5*ypos + 0.5;
+per_frame_20=zoom = .995;
+per_frame_21=wave_x = if(frame%2,1-wave_x,wave_x);
+per_frame_22=wave_y = if(frame%2,1-wave_y,wave_y);
+per_frame_23=wave_r = if(frame%2,wave_r,wave_g);
+per_frame_24=wave_g = if(frame%2,wave_g,wave_b);
+per_frame_25=wave_b = if(frame%2,wave_b,wave_r);
+per_frame_26=monitor = green;
+per_pixel_1=dx=dx+0.008*sin((y*2-1)*(48+12*sin(0.412*time)))+0.008*sin(((y+sin(time*0.163))*2-1)*(3+sin(0.241*time)));
+per_pixel_2=dy=dy+0.008*cos((x*2-1)*(64+18*sin(0.376*time)))+0.008*cos(((x+sin(time*0.282))*2-1)*(3+sin(0.349*time)));
+per_frame_init_1=q8=0;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Krash & Rovastar - Cerebral Demons - Phat + Eo.S. Killer Death Bunny Remix.milk b/InstallerDependencies/Visuals/projectM/presets/Krash & Rovastar - Cerebral Demons - Phat + Eo.S. Killer Death Bunny Remix.milk
new file mode 100644
index 00000000..814c7a90
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Krash & Rovastar - Cerebral Demons - Phat + Eo.S. Killer Death Bunny Remix.milk
@@ -0,0 +1,364 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=1
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.334693
+fWaveSmoothing=0.750000
+fWaveParam=-0.219900
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.300000
+zoom=0.999900
+rot=0.100000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.800000
+ib_size=0.005000
+ib_r=0.400000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=0.000000
+mv_g=0.700000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=1
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=0.800000
+wavecode_0_b=0.300000
+wavecode_0_a=1.000000
+wave_0_per_point1=n=sample*6.283;
+wave_0_per_point2=
+wave_0_per_point3=xp=sin(n);
+wave_0_per_point4=yp=cos(n);
+wave_0_per_point5=
+wave_0_per_point6=tm=q3 - sample;
+wave_0_per_point7=
+wave_0_per_point8=xof=sin(tm) * sin(tm*3) * 0.4 + 0.5;
+wave_0_per_point9=yof=cos(tm*1.3) * sin(tm*5.4) * 0.4 + 0.5;
+wave_0_per_point10=
+wave_0_per_point11=
+wave_0_per_point12=x= xof;
+wave_0_per_point13=y= (1-yof);
+wave_0_per_point14=
+wave_0_per_point15=a=1-sample;
+wave_0_per_point16=
+wave_0_per_point17=
+wave_0_per_point18=
+wave_0_per_point19=
+wavecode_1_enabled=1
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=1
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=0.700000
+wavecode_1_b=0.200000
+wavecode_1_a=1.000000
+wave_1_per_point1=n=sample*6.283;
+wave_1_per_point2=n2=(sample-q8 - time*0.1)*6;
+wave_1_per_point3=
+wave_1_per_point4=xp=sin(n);
+wave_1_per_point5=yp=cos(n);
+wave_1_per_point6=
+wave_1_per_point7=tm=q8 - sample;
+wave_1_per_point8=
+wave_1_per_point9=tx= sin(n2*13)*sin(n2*5) * sample * 0.05;
+wave_1_per_point10=ty= cos(n2*13)*sin(n2*7) * sample * 0.05;
+wave_1_per_point11=
+wave_1_per_point12=xof=sin(tm) * sin(tm*3) * 0.4 + 0.5 + tx;
+wave_1_per_point13=yof=cos(tm*1.3) * sin(tm*5.4) * 0.4 + 0.5 + ty;
+wave_1_per_point14=
+wave_1_per_point15=xran=(rand(10) - 5) * 0.0005; xran=xran*sample;
+wave_1_per_point16=yran=(rand(10) - 5) * 0.0005; yran=yran*sample;
+wave_1_per_point17=
+wave_1_per_point18=x= xof + xran;
+wave_1_per_point19=y= (1-yof) + yran;
+wave_1_per_point20=
+wave_1_per_point21=a=(1-sample);
+wave_1_per_point22=g=g*(1-sample);
+wave_1_per_point23=b=b*(1-sample)
+wavecode_2_enabled=1
+wavecode_2_samples=512
+wavecode_2_sep=0
+wavecode_2_bSpectrum=0
+wavecode_2_bUseDots=1
+wavecode_2_bDrawThick=1
+wavecode_2_bAdditive=0
+wavecode_2_scaling=1.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=0.780000
+wavecode_2_b=0.200000
+wavecode_2_a=1.000000
+wave_2_per_point1=n=sample*6.283;
+wave_2_per_point2=n2=(sample-q8 - time*0.1)*6;
+wave_2_per_point3=
+wave_2_per_point4=xp=sin(n);
+wave_2_per_point5=yp=cos(n);
+wave_2_per_point6=
+wave_2_per_point7=tm=q8 - sample;
+wave_2_per_point8=
+wave_2_per_point9=tx= sin(n2*13)*sin(n2*5) * sample * 0.05;
+wave_2_per_point10=ty= cos(n2*13)*sin(n2*7) * sample * 0.05;
+wave_2_per_point11=
+wave_2_per_point12=xof=sin(tm) * sin(tm*3) * 0.4 + 0.5 + tx;
+wave_2_per_point13=yof=cos(tm*1.3) * sin(tm*5.4) * 0.4 + 0.5 + ty;
+wave_2_per_point14=
+wave_2_per_point15=xran=(rand(10) - 5) * 0.0005; xran=xran*sample;
+wave_2_per_point16=yran=(rand(10) - 5) * 0.0005; yran=yran*sample;
+wave_2_per_point17=
+wave_2_per_point18=x= xof + xran;
+wave_2_per_point19=y= (1-yof) + yran;
+wave_2_per_point20=
+wave_2_per_point21=a=(1-sample);
+wave_2_per_point22=g=g*(1-sample);
+wave_2_per_point23=b=b*(1-sample)
+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=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+wave_3_per_point1=xs=sin(sample*6.28);
+wave_3_per_point2=ys=cos(sample*6.28);
+wave_3_per_point3=xs=xs*0.7 + 0.5;
+wave_3_per_point4=ys=ys*0.7 + 0.5;
+wave_3_per_point5=xs=min(xs,0.958);
+wave_3_per_point6=xs=max(xs,0.042);
+wave_3_per_point7=ys=min(ys,0.988);
+wave_3_per_point8=ys=max(ys,0.012);
+wave_3_per_point9=x=xs;y=ys;
+wave_3_per_point10=
+wave_3_per_point11=n2=abs((sample*6.283)-3.1415);
+wave_3_per_point12=
+wave_3_per_point13=r=sin(n2+time)*0.5+0.5;
+wave_3_per_point14=g=sin(n2+2.1+time)*0.5+0.5;
+wave_3_per_point15=b=sin(n2+4.2+time)*0.5+0.5;
+wave_3_per_point16=
+wave_3_per_point17=
+wave_3_per_point18=a=a * above(sin(n2*9+q8*2), sin(time) )
+shapecode_0_enabled=1
+shapecode_0_sides=5
+shapecode_0_additive=1
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.110462
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=0.500000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=0.500000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.100000
+shape_0_per_frame1=x=q1;
+shape_0_per_frame2=y=1-q2;
+shape_0_per_frame3=ang=time
+shapecode_1_enabled=1
+shapecode_1_sides=5
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.030000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=0.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=0.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shape_1_per_frame1=x=q1;
+shape_1_per_frame2=y=1-q2;
+shape_1_per_frame3=ang=time
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=warp=0;
+per_frame_2=wave_r = wave_r + 0.45*(0.5*sin(time*0.701)+ 0.3*cos(time*0.438));
+per_frame_3=wave_b = wave_b - 0.4*(0.5*sin(time*4.782)+0.5*cos(time*0.722));
+per_frame_4=wave_g = wave_g + 0.4*sin(time*1.931);
+per_frame_5=wave_r = 0.2125*wave_r + 0.7154*wave_g + 0.0721*wave_b;
+per_frame_6=wave_g = wave_r;
+per_frame_7=wave_b = wave_r;
+per_frame_8=vol = 0.167*(bass+mid);
+per_frame_9=xamptarg = if(equal(frame%15,0),min(0.5*vol*bass_att,0.5),xamptarg);
+per_frame_10=xamp = xamp + 0.5*(xamptarg-xamp);
+per_frame_11=xdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir));
+per_frame_12=xspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_13=xpos = xpos + 0.001*xspeed;
+per_frame_14=wave_x = 1.25*xpos + 0.5;
+per_frame_15=yamptarg = if(equal(frame%15,0),min(0.3*vol*treb_att,0.5),yamptarg);
+per_frame_16=yamp = yamp + 0.5*(yamptarg-yamp);
+per_frame_17=ydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir));
+per_frame_18=yspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_19=ypos = ypos + 0.001*yspeed;
+per_frame_20=wave_y = 1.25*ypos + 0.5;
+per_frame_21=dx = dx + dx_residual;
+per_frame_22=dy = dy + dy_residual;
+per_frame_23=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_24=dx_residual = equal(bass_thresh,2)*0.003*sin(time*7) + (1-equal(bass_thresh,2))*dx_residual;
+per_frame_25=dy_residual = equal(bass_thresh,2)*0.001*sin(time*9) + (1-equal(bass_thresh,2))*dy_residual;
+per_frame_26=rot = 0.1;
+per_frame_27=
+per_frame_28=vol=(bass+mid+treb)*0.25;
+per_frame_29=vol=vol*vol;
+per_frame_30=mtime=mtime + vol*0.01;
+per_frame_31=q8=mtime;
+per_frame_32=
+per_frame_33=
+per_frame_34=q1=sin(mtime) * sin(mtime*3) * 0.4 + 0.5;
+per_frame_35=q2=cos(mtime*1.3) * sin(mtime*5.4) * 0.4 + 0.5;
+per_frame_36=
+per_frame_37=
+per_frame_38=
+per_frame_39=ib_r = tan(time);
+per_frame_40=ib_r = min(1, max(ib_r,0));
+per_frame_41=
+per_frame_42=ib_g = tan(time+2.1);
+per_frame_43=ib_g = min(1, max(ib_g,0));
+per_frame_44=
+per_frame_45=ib_b = tan(time+4.2);
+per_frame_46=ib_b = min(1, max(ib_b,0));
+per_frame_47=
+per_frame_48=q3 = 10+8*(0.6*sin(0.223*time) + 0.4*sin(0.153*time));
+per_frame_49=q4 = 1/q3;
+per_frame_50=q5 = 0.5*sign(xpos);
+per_frame_51=q6 = 0.5*sign(ypos);
+per_frame_52=
+per_frame_53=monitor=q4
+per_frame_54=
+per_frame_55=
+per_pixel_1=cx = ((0&(x*q3-q5))+q5)*q4;
+per_pixel_2=cy = ((0&(y*q3-q6))+q6)*q4;
+per_pixel_3=newx = q1-x;
+per_pixel_4=newy = q2-y;
+per_pixel_5=newrad = sqrt((newx)*(newx)+0.5625*(newy)*(newy))*2;
+per_pixel_6=newzoom = pow(1.05 + 0.03*newrad, pow(0.01+sin(newrad*newrad), newrad*2-1));
+per_pixel_7=dx = (newx)*newzoom - newx;
+per_pixel_8=dy = (newy)*newzoom - newy;
+per_pixel_9=dx =dx*0.1;
+per_pixel_10=dy=dy*0.1;
+per_pixel_11=rot = 2*newrad*(0.5*(0.5-rad)+0.1);
+per_pixel_12=rot=rot*sin(time)*0.2;
+per_pixel_13=//sx=-1
diff --git a/InstallerDependencies/Visuals/projectM/presets/Krash & TEcHNO - Rhythmic Mantas.milk b/InstallerDependencies/Visuals/projectM/presets/Krash & TEcHNO - Rhythmic Mantas.milk
new file mode 100644
index 00000000..9b775d4b
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Krash & TEcHNO - Rhythmic Mantas.milk
@@ -0,0 +1,81 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.700000
+fDecay=0.995000
+fVideoEchoZoom=1.000224
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=6
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.003100
+fWaveScale=1.004873
+fWaveSmoothing=0.000000
+fWaveParam=-1.000000
+fModWaveAlphaStart=1.010000
+fModWaveAlphaEnd=1.010000
+fWarpAnimSpeed=0.999994
+fWarpScale=1.002083
+fZoomExponent=1.001830
+fShader=1.000000
+zoom=0.995048
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.010000
+dy=0.010000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.050000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=1.000000
+nMotionVectorsY=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=1.000000
+per_frame_1=volume = 0.3*(bass+mid+att);
+per_frame_2=beatrate = equal(beatrate,0) + (1-equal(beatrate,0))*(below(volume,0.01) + (1-below(volume,0.01))*beatrate);
+per_frame_3=lastbeat = lastbeat + equal(lastbeat,0)*time;
+per_frame_4=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_5=peakbass_att = max(bass_att,peakbass_att);
+per_frame_6=beat = above(volume,0.8)*below(peakbass_att - bass_att, 0.05*peakbass_att)*above(time - lastbeat, 0.1 + 0.5*(beatrate - 0.1));
+per_frame_7=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_8=peakbass_att = beat*bass_att + (1-beat)*peakbass_att*(above(time - lastbeat, 2*beatrate)*0.95 + (1-above(time - lastbeat, 2*beatrate))*0.995);
+per_frame_9=lastbeat = beat*time + (1-beat)*lastbeat;
+per_frame_10=peakbass_att = max(peakbass_att,1.1*meanbass_att);
+per_frame_11=mode = if(beat,rand(4),mode);
+per_frame_12=q1 = ((time*20)%50)*0.08;
+per_frame_13=q2 = 1 - below(mode,2)*2;
+per_frame_14=q3 = 1 - 2*(mode%2);
+per_frame_15=wave_x = 1-below(mode,2);
+per_frame_16=wave_mystery = (frame%2)*(2*(1-equal(mode%3,0))-1);
+per_frame_17=wave_r=if(below(frame%6,3),bass*0.5,0);
+per_frame_18=wave_b=0.9+sin(time)*0.1;
+per_frame_19=wave_g=if(above(frame%6,2),bass*0.5,0);
+per_pixel_1=dx = dx*pow(-1,0&(13+q1 - 5*(q2*y)))*min(bass,1.2);
+per_pixel_2=dy = dy*pow(-1,0&(13+q1 - 5*(q3*x)))*min(bass,1.2);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Krash - 3D Shapes Demo 2.milk b/InstallerDependencies/Visuals/projectM/presets/Krash - 3D Shapes Demo 2.milk
new file mode 100644
index 00000000..2ee59358
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Krash - 3D Shapes Demo 2.milk
@@ -0,0 +1,291 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.900000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=1.000000
+fWaveSmoothing=0.750000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+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=0
+wavecode_0_scaling=0.463735
+wavecode_0_smoothing=0.000000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_init1=//pi
+wave_0_init2=t8=3.14159265;
+wave_0_init3=t5 = 1;
+wave_0_per_frame1=rotx = rotx+bass;
+wave_0_per_frame2=roty = roty+mid;
+wave_0_per_frame3=rotz = rotz+treb;
+wave_0_per_frame4=//rotx =0;
+wave_0_per_frame5=//roty =0;
+wave_0_per_frame6=//rotz =0;
+wave_0_per_frame7=
+wave_0_per_frame8=//convert rotation values from degrees to radians
+wave_0_per_frame9=t1= t8*rotx/180;
+wave_0_per_frame10=t2 = t8*roty/180;
+wave_0_per_frame11=t3 = t8*rotz/180;
+wave_0_per_frame12=
+wave_0_per_point1=//Define 3D Shape
+wave_0_per_point2=
+wave_0_per_point3=//Torus
+wave_0_per_point4=x0 = (1+value1)*sin(2*t8*sample);
+wave_0_per_point5=y0 = (1+value1)*cos(2*t8*sample);
+wave_0_per_point6=x1 = 0.5*sin(32*t8*sample)*y0+y0;
+wave_0_per_point7=y1 = 0.5*sin(32*t8*sample)*x0+x0;
+wave_0_per_point8=z1= 0.5*cos(32*t8*sample);
+wave_0_per_point9=
+wave_0_per_point10=//modulate values to adjust for rotation on multiple axes, convert to world co-ordinates
+wave_0_per_point11=y2 = y1*cos(t1)-z1*sin(t1);
+wave_0_per_point12=z2 = y1*sin(t1)+z1*cos(t1);
+wave_0_per_point13=x2 = z2*sin(t2)+x1*cos(t2);
+wave_0_per_point14=z3 = z2*cos(t2)-x1*sin(t2);
+wave_0_per_point15=x3 = x2*cos(t3)-y2*sin(t3);
+wave_0_per_point16=y3 = y2*cos(t3)+x2*sin(t3);
+wave_0_per_point17=//move resulting shape in 3d space
+wave_0_per_point18=x4 = x3;
+wave_0_per_point19=y4 = y3;
+wave_0_per_point20=z4 = z3+2;
+wave_0_per_point21=//draw 3d shape in 2d
+wave_0_per_point22=x=0.5+0.5*(x4/(1+z4*0.5));
+wave_0_per_point23=y=0.5+0.5*(y4/(1+z4*0.5));
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=1
+wavecode_1_bAdditive=0
+wavecode_1_scaling=0.463735
+wavecode_1_smoothing=0.000000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+wave_1_init1=//pi
+wave_1_init2=t8=3.14159265;
+wave_1_init3=t5 = 1;
+wave_1_per_frame1=rotx = rotx+bass;
+wave_1_per_frame2=roty = roty+mid;
+wave_1_per_frame3=rotz = rotz+treb;
+wave_1_per_frame4=//rotx = 0;
+wave_1_per_frame5=//roty =0;
+wave_1_per_frame6=//rotz = 0;
+wave_1_per_frame7=
+wave_1_per_frame8=//convert rotation values from degrees to radians
+wave_1_per_frame9=t1= t8*rotx/180;
+wave_1_per_frame10=t2 = t8*roty/180;
+wave_1_per_frame11=t3 = t8*rotz/180;
+wave_1_per_frame12=
+wave_1_per_frame13=t4 = 3*sin(time+0.66*t8);
+wave_1_per_frame14=t5 = 10+8*cos(time+0.66*t8);
+wave_1_per_frame15=
+wave_1_per_frame16=b = 0.5-0.4*cos(time+0.66*t8);
+wave_1_per_frame17=g = 0.5-0.4*sin(time+0.66*t8);
+wave_1_per_point1=//Define 3D Shape
+wave_1_per_point2=
+wave_1_per_point3=//Sphere
+wave_1_per_point4=x1 = (1+value1)*sin(t8*sample)*sin(16*t8*sample);
+wave_1_per_point5=y1 = (1+value1)*cos(t8*sample);
+wave_1_per_point6=z1= (1+value1)*sin(t8*sample)*cos(16*t8*sample);
+wave_1_per_point7=
+wave_1_per_point8=//modulate values to adjust for rotation on multiple axes, convert to world co-ordinates
+wave_1_per_point9=y2 = y1*cos(t1)-z1*sin(t1);
+wave_1_per_point10=z2 = y1*sin(t1)+z1*cos(t1);
+wave_1_per_point11=x2 = z2*sin(t2)+x1*cos(t2);
+wave_1_per_point12=z3 = z2*cos(t2)-x1*sin(t2);
+wave_1_per_point13=x3 = x2*cos(t3)-y2*sin(t3);
+wave_1_per_point14=y3 = y2*cos(t3)+x2*sin(t3);
+wave_1_per_point15=//move resulting shape in 3d space
+wave_1_per_point16=x4 = x3+t4;
+wave_1_per_point17=y4 = y3;
+wave_1_per_point18=z4 = z3+t5;
+wave_1_per_point19=//draw 3d shape in 2d
+wave_1_per_point20=x=0.5+0.5*(x4/(1+z4*0.5));
+wave_1_per_point21=y=0.5+0.5*(y4/(1+z4*0.5));
+wave_1_per_point22=
+wave_1_per_point23=r = g+value1;
+wavecode_2_enabled=0
+wavecode_2_samples=512
+wavecode_2_sep=0
+wavecode_2_bSpectrum=0
+wavecode_2_bUseDots=0
+wavecode_2_bDrawThick=1
+wavecode_2_bAdditive=0
+wavecode_2_scaling=0.463735
+wavecode_2_smoothing=0.000000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wave_2_init1=//pi
+wave_2_init2=t8=3.14159265;
+wave_2_init3=t5 = 1;
+wave_2_per_frame1=rotx = rotx+bass;
+wave_2_per_frame2=roty = roty+mid;
+wave_2_per_frame3=rotz = rotz+treb;
+wave_2_per_frame4=//rotx = 0;
+wave_2_per_frame5=//roty =0;
+wave_2_per_frame6=//rotz = 0;
+wave_2_per_frame7=
+wave_2_per_frame8=//convert rotation values from degrees to radians
+wave_2_per_frame9=t1= t8*rotx/180;
+wave_2_per_frame10=t2 = t8*roty/180;
+wave_2_per_frame11=t3 = t8*rotz/180;
+wave_2_per_frame12=
+wave_2_per_frame13=t4 = 3*sin(time+1.33*t8);
+wave_2_per_frame14=t5 = 10+8*cos(time+1.33*t8);
+wave_2_per_frame15=
+wave_2_per_frame16=r = 0.5-0.4*cos(time+1.33*t8);
+wave_2_per_frame17=b = 0.5-0.4*sin(time+1.33*t8);
+wave_2_per_point1=//Define 3D Shape
+wave_2_per_point2=
+wave_2_per_point3=//Cube
+wave_2_per_point4=x0 = if(below(sample*12,1),sample*12, if(below(sample*12,2),1, if(below(sample*12,3),abs(sample*12-3), if(below(sample*12,6),0, if(below(sample*12,8),1, if(below(sample*12,9),abs(sample*12-9), if(below(sample*12,10),0, if(below(sample*12,11),sample*12-10,1))))))));
+wave_2_per_point5=y0 = if(below(sample*12,1),0, if(below(sample*12,2),sample*12-1, if(below(sample*12,3),1, if(below(sample*12,4),abs(sample*12-4), if(below(sample*12,5),0, if(below(sample*12,7),1, if(below(sample*12,9),0, if(below(sample*12,10),sample*12-9, if(below(sample*12,11),1,abs(sample*12-12))))))))));
+wave_2_per_point6=z0 = if(below(sample*12,4),0, if(below(sample*12,5),sample*12-4, if(below(sample*12,6),abs(sample*12-6), if(below(sample*12,7),sample*12-6, if(below(sample*12,8),abs(sample*12-8),1)))));
+wave_2_per_point7=x1 = 0.5-x0+if(below(sin(sample*12*3.1415),0),value1,0);
+wave_2_per_point8=y1 = 0.5-y0+if(below(cos((sample*12-1.5)*3.1415),0),value1,0);
+wave_2_per_point9=z1 = 0.5-z0+if(below(sample*12,4),0,if(below(sample*12,8),value1,0));
+wave_2_per_point10=
+wave_2_per_point11=//modulate values to adjust for rotation on multiple axes, convert to world co-ordinates
+wave_2_per_point12=y2 = y1*cos(t1)-z1*sin(t1);
+wave_2_per_point13=z2 = y1*sin(t1)+z1*cos(t1);
+wave_2_per_point14=x2 = z2*sin(t2)+x1*cos(t2);
+wave_2_per_point15=z3 = z2*cos(t2)-x1*sin(t2);
+wave_2_per_point16=x3 = x2*cos(t3)-y2*sin(t3);
+wave_2_per_point17=y3 = y2*cos(t3)+x2*sin(t3);
+wave_2_per_point18=//move resulting shape in 3d space
+wave_2_per_point19=x4 = x3+t4;
+wave_2_per_point20=y4 = y3;
+wave_2_per_point21=z4 = z3+t5;
+wave_2_per_point22=//draw 3d shape in 2d
+wave_2_per_point23=x=0.5+0.5*(x4/(1+z4*0.5));
+wave_2_per_point24=y=0.5+0.5*(y4/(1+z4*0.5));
+wave_2_per_point25=
+wave_2_per_point26=g = b+value1;
+shapecode_0_enabled=0
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.100000
+shapecode_0_ang=0.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.100000
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+per_frame_1=warp=0;
+per_frame_2=wave_a=0;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Krash - 3D Shapes Demo.milk b/InstallerDependencies/Visuals/projectM/presets/Krash - 3D Shapes Demo.milk
new file mode 100644
index 00000000..37ac81c0
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Krash - 3D Shapes Demo.milk
@@ -0,0 +1,296 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.900000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=1.000000
+fWaveSmoothing=0.750000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+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=0
+wavecode_0_scaling=0.463735
+wavecode_0_smoothing=0.000000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_init1=//pi
+wave_0_init2=t8=3.14159265;
+wave_0_init3=t5 = 1;
+wave_0_per_frame1=rotx = rotx+bass;
+wave_0_per_frame2=roty = roty+mid;
+wave_0_per_frame3=rotz = rotz+treb;
+wave_0_per_frame4=//rotx = 0;
+wave_0_per_frame5=//roty =0;
+wave_0_per_frame6=//rotz = 0;
+wave_0_per_frame7=
+wave_0_per_frame8=//convert rotation values from degrees to radians
+wave_0_per_frame9=t1= t8*rotx/180;
+wave_0_per_frame10=t2 = t8*roty/180;
+wave_0_per_frame11=t3 = t8*rotz/180;
+wave_0_per_frame12=
+wave_0_per_frame13=t4 = 3*sin(time);
+wave_0_per_frame14=t5 = 10+8*cos(time);
+wave_0_per_frame15=
+wave_0_per_frame16=g = 0.5-0.4*cos(time);
+wave_0_per_frame17=r = 0.5-0.4*sin(time);
+wave_0_per_point1=//Define 3D Shape
+wave_0_per_point2=
+wave_0_per_point3=//Spiral
+wave_0_per_point4=x1 = 0.5*sin(8*sample);
+wave_0_per_point5=y1 = 2*(sample-0.5)-value1;
+wave_0_per_point6=z1= 0.5*cos(8*sample);
+wave_0_per_point7=
+wave_0_per_point8=//modulate values to adjust for rotation on multiple axes, convert to world co-ordinates
+wave_0_per_point9=y2 = y1*cos(t1)-z1*sin(t1);
+wave_0_per_point10=z2 = y1*sin(t1)+z1*cos(t1);
+wave_0_per_point11=x2 = z2*sin(t2)+x1*cos(t2);
+wave_0_per_point12=z3 = z2*cos(t2)-x1*sin(t2);
+wave_0_per_point13=x3 = x2*cos(t3)-y2*sin(t3);
+wave_0_per_point14=y3 = y2*cos(t3)+x2*sin(t3);
+wave_0_per_point15=//move resulting shape in 3d space
+wave_0_per_point16=x4 =x3 + t4;
+wave_0_per_point17=y4 = y3;
+wave_0_per_point18=z4 = z3+t5;
+wave_0_per_point19=//draw 3d shape in 2d
+wave_0_per_point20=x=0.5+0.5*(x4/(1+z4*0.5));
+wave_0_per_point21=y=0.5+0.5*(y4/(1+z4*0.5));
+wave_0_per_point22=//x=(0.5)*sin(8*sample*t8);
+wave_0_per_point23=b= r+value1;
+wavecode_1_enabled=1
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=1
+wavecode_1_bAdditive=0
+wavecode_1_scaling=0.463735
+wavecode_1_smoothing=0.000000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+wave_1_init1=//pi
+wave_1_init2=t8=3.14159265;
+wave_1_init3=t5 = 1;
+wave_1_per_frame1=rotx = rotx+bass;
+wave_1_per_frame2=roty = roty+mid;
+wave_1_per_frame3=rotz = rotz+treb;
+wave_1_per_frame4=//rotx = 0;
+wave_1_per_frame5=//roty =0;
+wave_1_per_frame6=//rotz = 0;
+wave_1_per_frame7=
+wave_1_per_frame8=//convert rotation values from degrees to radians
+wave_1_per_frame9=t1= t8*rotx/180;
+wave_1_per_frame10=t2 = t8*roty/180;
+wave_1_per_frame11=t3 = t8*rotz/180;
+wave_1_per_frame12=
+wave_1_per_frame13=t4 = 3*sin(time+0.66*t8);
+wave_1_per_frame14=t5 = 10+8*cos(time+0.66*t8);
+wave_1_per_frame15=
+wave_1_per_frame16=b = 0.5-0.4*cos(time+0.66*t8);
+wave_1_per_frame17=g = 0.5-0.4*sin(time+0.66*t8);
+wave_1_per_point1=//Define 3D Shape
+wave_1_per_point2=
+wave_1_per_point3=//Sphere
+wave_1_per_point4=x1 = (1+value1)*sin(t8*sample)*sin(16*t8*sample);
+wave_1_per_point5=y1 = (1+value1)*cos(t8*sample);
+wave_1_per_point6=z1= (1+value1)*sin(t8*sample)*cos(16*t8*sample);
+wave_1_per_point7=
+wave_1_per_point8=//modulate values to adjust for rotation on multiple axes, convert to world co-ordinates
+wave_1_per_point9=y2 = y1*cos(t1)-z1*sin(t1);
+wave_1_per_point10=z2 = y1*sin(t1)+z1*cos(t1);
+wave_1_per_point11=x2 = z2*sin(t2)+x1*cos(t2);
+wave_1_per_point12=z3 = z2*cos(t2)-x1*sin(t2);
+wave_1_per_point13=x3 = x2*cos(t3)-y2*sin(t3);
+wave_1_per_point14=y3 = y2*cos(t3)+x2*sin(t3);
+wave_1_per_point15=//move resulting shape in 3d space
+wave_1_per_point16=x4 = x3+t4;
+wave_1_per_point17=y4 = y3;
+wave_1_per_point18=z4 = z3+t5;
+wave_1_per_point19=//draw 3d shape in 2d
+wave_1_per_point20=x=0.5+0.5*(x4/(1+z4*0.5));
+wave_1_per_point21=y=0.5+0.5*(y4/(1+z4*0.5));
+wave_1_per_point22=
+wave_1_per_point23=r = g+value1;
+wavecode_2_enabled=1
+wavecode_2_samples=512
+wavecode_2_sep=0
+wavecode_2_bSpectrum=0
+wavecode_2_bUseDots=0
+wavecode_2_bDrawThick=1
+wavecode_2_bAdditive=0
+wavecode_2_scaling=0.463735
+wavecode_2_smoothing=0.000000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wave_2_init1=//pi
+wave_2_init2=t8=3.14159265;
+wave_2_init3=t5 = 1;
+wave_2_per_frame1=rotx = rotx+bass;
+wave_2_per_frame2=roty = roty+mid;
+wave_2_per_frame3=rotz = rotz+treb;
+wave_2_per_frame4=//rotx = 0;
+wave_2_per_frame5=//roty =0;
+wave_2_per_frame6=//rotz = 0;
+wave_2_per_frame7=
+wave_2_per_frame8=//convert rotation values from degrees to radians
+wave_2_per_frame9=t1= t8*rotx/180;
+wave_2_per_frame10=t2 = t8*roty/180;
+wave_2_per_frame11=t3 = t8*rotz/180;
+wave_2_per_frame12=
+wave_2_per_frame13=t4 = 3*sin(time+1.33*t8);
+wave_2_per_frame14=t5 = 10+8*cos(time+1.33*t8);
+wave_2_per_frame15=
+wave_2_per_frame16=r = 0.5-0.4*cos(time+1.33*t8);
+wave_2_per_frame17=b = 0.5-0.4*sin(time+1.33*t8);
+wave_2_per_point1=//Define 3D Shape
+wave_2_per_point2=
+wave_2_per_point3=//Cube
+wave_2_per_point4=x0 = if(below(sample*12,1),sample*12, if(below(sample*12,2),1, if(below(sample*12,3),abs(sample*12-3), if(below(sample*12,6),0, if(below(sample*12,8),1, if(below(sample*12,9),abs(sample*12-9), if(below(sample*12,10),0, if(below(sample*12,11),sample*12-10,1))))))));
+wave_2_per_point5=y0 = if(below(sample*12,1),0, if(below(sample*12,2),sample*12-1, if(below(sample*12,3),1, if(below(sample*12,4),abs(sample*12-4), if(below(sample*12,5),0, if(below(sample*12,7),1, if(below(sample*12,9),0, if(below(sample*12,10),sample*12-9, if(below(sample*12,11),1,abs(sample*12-12))))))))));
+wave_2_per_point6=z0 = if(below(sample*12,4),0, if(below(sample*12,5),sample*12-4, if(below(sample*12,6),abs(sample*12-6), if(below(sample*12,7),sample*12-6, if(below(sample*12,8),abs(sample*12-8),1)))));
+wave_2_per_point7=x1 = 0.5-x0+if(below(sin(sample*12*3.1415),0),value1,0);
+wave_2_per_point8=y1 = 0.5-y0+if(below(cos((sample*12-1.5)*3.1415),0),value1,0);
+wave_2_per_point9=z1 = 0.5-z0+if(below(sample*12,4),0,if(below(sample*12,8),value1,0));
+wave_2_per_point10=
+wave_2_per_point11=//modulate values to adjust for rotation on multiple axes, convert to world co-ordinates
+wave_2_per_point12=y2 = y1*cos(t1)-z1*sin(t1);
+wave_2_per_point13=z2 = y1*sin(t1)+z1*cos(t1);
+wave_2_per_point14=x2 = z2*sin(t2)+x1*cos(t2);
+wave_2_per_point15=z3 = z2*cos(t2)-x1*sin(t2);
+wave_2_per_point16=x3 = x2*cos(t3)-y2*sin(t3);
+wave_2_per_point17=y3 = y2*cos(t3)+x2*sin(t3);
+wave_2_per_point18=//move resulting shape in 3d space
+wave_2_per_point19=x4 = x3+t4;
+wave_2_per_point20=y4 = y3;
+wave_2_per_point21=z4 = z3+t5;
+wave_2_per_point22=//draw 3d shape in 2d
+wave_2_per_point23=x=0.5+0.5*(x4/(1+z4*0.5));
+wave_2_per_point24=y=0.5+0.5*(y4/(1+z4*0.5));
+wave_2_per_point25=
+wave_2_per_point26=g = b+value1;
+shapecode_0_enabled=0
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.100000
+shapecode_0_ang=0.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.100000
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+per_frame_1=warp=0;
+per_frame_2=wave_a=0;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Krash - Digital Flame.milk b/InstallerDependencies/Visuals/projectM/presets/Krash - Digital Flame.milk
new file mode 100644
index 00000000..a52a6ea4
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Krash - Digital Flame.milk
@@ -0,0 +1,79 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.900000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=6
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=0.369700
+fWaveSmoothing=0.750000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=53.523884
+fWarpScale=0.408391
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.699900
+wave_g=0.600000
+wave_b=0.800000
+wave_x=0.000000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=q1 = (bass_att + mid_att + treb_att) /3;
+per_frame_2=q2 = time + 1000;
+per_frame_3=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.4)*0.95+1.4);
+per_frame_4=treb_thresh = above(treb_att,treb_thresh)*2 + (1-above(treb_att,treb_thresh))*((treb_thresh-1.5)*0.85+1.2);
+per_frame_5=bass_on = above(bass_thresh,1.9);
+per_frame_6=treb_on = above(treb_thresh,1.9);
+per_frame_7=swapcolour = bass_on - treb_on;
+per_frame_8=red_aim = if(equal(swapcolour,1),1,if(equal(swapcolour,0),0.9,0.7));
+per_frame_9=green_aim = if(equal(swapcolour,1),0.7,if(equal(swapcolour,0),0.3,0.6));
+per_frame_10=blue_aim = if(equal(swapcolour,1),0,if(equal(swapcolour,0),0.2,0.8));
+per_frame_11=red = red + (red_aim - red)*0.5;
+per_frame_12=green = green + (green_aim - green)*0.5;
+per_frame_13=blue = blue + (blue_aim - blue)*0.5;
+per_frame_14=wave_r = red;
+per_frame_15=wave_g = green;
+per_frame_16=wave_b = blue;
+per_pixel_1=dy = -0.1*(q1-1)*log(2-(abs(y*2 - 1.8)));
+per_pixel_2=dy = below(dy,0.02)*dy - 0.02;
+per_pixel_3=dy = dy + 0.01*(sin((x*q2*0.483) + (y*q2*1.238)) + sin((x*q2*1.612) + (y*q2*0.648)));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Krash - Dynamic Borders 1.milk b/InstallerDependencies/Visuals/projectM/presets/Krash - Dynamic Borders 1.milk
new file mode 100644
index 00000000..987445b7
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Krash - Dynamic Borders 1.milk
@@ -0,0 +1,86 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.700000
+fDecay=0.990000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=1
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.634243
+fWaveSmoothing=0.100000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=0.999990
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000156
+sx=0.999666
+sy=0.999900
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.380000
+ob_size=0.020000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.100000
+ib_size=0.050000
+ib_r=0.500000
+ib_g=0.500000
+ib_b=0.500000
+ib_a=0.100000
+per_frame_1=warp = 0;
+per_frame_2=
+per_frame_3=ib_r = ib_r + 0.10*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );
+per_frame_4=ib_g = ib_g + 0.10*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );
+per_frame_5=ib_b = ib_b + 0.10*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );
+per_frame_6=temp = 0.12*tan(0.3*(mid+bass));
+per_frame_7=ib_a = if(below(temp,0.4),temp,0.4);
+per_frame_8=ob_size = ob_size - 0.01;
+per_frame_9=ob_size = ob_size + 0.15*sin(0.5*bass_att);
+per_frame_10=q1 = (cx*2-1) + 0.62*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );
+per_frame_11=q2 = (cy*2-1) + 0.62*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );
+per_frame_12=q3 = (cx*2-1) + 0.62*( 0.60*sin(0.174*-time) + 0.40*sin(0.364*time) );
+per_frame_13=q4 = (cy*2-1) + 0.62*( 0.60*sin(0.234*time) + 0.40*sin(0.271*-time) );
+per_frame_14=decay = decay - 0.01*equal(frame%5,0);
+per_pixel_1=du = x*2-1 - q1;
+per_pixel_2=dv = y*2-1 - q2;
+per_pixel_3=dist = sqrt(du*du+dv*dv);
+per_pixel_4=ang2 = atan2(du,dv);
+per_pixel_5=mult = 0.008/(dist+0.4);
+per_pixel_6=dx = mult*sin(ang2-1.5);
+per_pixel_7=dy = mult*cos(ang2-1.5);
+per_pixel_8=du = x*2-1 - q3;
+per_pixel_9=dv = y*2-1 - q4;
+per_pixel_10=dist = sqrt(du*du+dv*dv);
+per_pixel_11=ang2 = atan2(du,dv);
+per_pixel_12=mult = 0.008/(dist+0.4);
+per_pixel_13=dx = dx + mult*sin(ang2+1.5);
+per_pixel_14=dy = dy + mult*cos(ang2+1.5);
+per_pixel_15=dx = dx*1.5;
+per_pixel_16=dy = dy*1.5;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Krash - Framed Geometry.milk b/InstallerDependencies/Visuals/projectM/presets/Krash - Framed Geometry.milk
new file mode 100644
index 00000000..2d9c612f
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Krash - Framed Geometry.milk
@@ -0,0 +1,360 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.990000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=0.369711
+fWaveSmoothing=0.750000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.800000
+ob_size=0.500000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.010000
+ib_size=0.500000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.010000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=-0.122860
+mv_dy=0.400769
+mv_l=0.055000
+mv_r=0.068206
+mv_g=0.020766
+mv_b=0.516542
+mv_a=0.000000
+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=0
+wavecode_0_scaling=0.463735
+wavecode_0_smoothing=0.000000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_init1=//pi
+wave_0_init2=t8=3.14159265;
+wave_0_init3=t5 = 1;
+wave_0_per_frame1=rotx = rotx+bass;
+wave_0_per_frame2=roty = roty+mid;
+wave_0_per_frame3=rotz = rotz+treb;
+wave_0_per_frame4=//rotx = 0;
+wave_0_per_frame5=//roty =0;
+wave_0_per_frame6=//rotz = 0;
+wave_0_per_frame7=
+wave_0_per_frame8=//convert rotation values from degrees to radians
+wave_0_per_frame9=t1= t8*rotx/180;
+wave_0_per_frame10=t2 = t8*roty/180;
+wave_0_per_frame11=t3 = t8*rotz/180;
+wave_0_per_frame12=
+wave_0_per_frame13=t4 = 4*sin(q1);
+wave_0_per_frame14=t5 = 10+8*cos(q1);
+wave_0_per_frame15=
+wave_0_per_frame16=g = 0.5-0.3*cos(time);
+wave_0_per_frame17=r = 0.5-0.3*sin(time);
+wave_0_per_point1=//Define 3D Shape
+wave_0_per_point2=
+wave_0_per_point3=//Spiral
+wave_0_per_point4=x1 = 0.5*sin(8*t8*sample);
+wave_0_per_point5=y1 = 2*(sample-0.5)-value1;
+wave_0_per_point6=z1= 0.5*cos(8*t8*sample);
+wave_0_per_point7=
+wave_0_per_point8=//modulate values to adjust for rotation on multiple axes, convert to world co-ordinates
+wave_0_per_point9=y2 = y1*cos(t1)-z1*sin(t1);
+wave_0_per_point10=z2 = y1*sin(t1)+z1*cos(t1);
+wave_0_per_point11=x2 = z2*sin(t2)+x1*cos(t2);
+wave_0_per_point12=z3 = z2*cos(t2)-x1*sin(t2);
+wave_0_per_point13=x3 = x2*cos(t3)-y2*sin(t3);
+wave_0_per_point14=y3 = y2*cos(t3)+x2*sin(t3);
+wave_0_per_point15=//move resulting shape in 3d space
+wave_0_per_point16=x4 = x3+t4;
+wave_0_per_point17=y4 = y3;
+wave_0_per_point18=z4 = z3+t5;
+wave_0_per_point19=//draw 3d shape in 2d
+wave_0_per_point20=x=0.5+0.5*(x4/(1+z4*0.5));
+wave_0_per_point21=y=0.5+0.5*(y4/(1+z4*0.5));
+wave_0_per_point22=
+wave_0_per_point23=b= r+5*value1;
+wavecode_1_enabled=1
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=1
+wavecode_1_bAdditive=0
+wavecode_1_scaling=0.463735
+wavecode_1_smoothing=0.000000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+wave_1_init1=//pi
+wave_1_init2=t8=3.14159265;
+wave_1_init3=t5 = 1;
+wave_1_per_frame1=rotx = rotx+bass;
+wave_1_per_frame2=roty = roty+mid;
+wave_1_per_frame3=rotz = rotz+treb;
+wave_1_per_frame4=//rotx = 0;
+wave_1_per_frame5=//roty =0;
+wave_1_per_frame6=//rotz = 0;
+wave_1_per_frame7=
+wave_1_per_frame8=//convert rotation values from degrees to radians
+wave_1_per_frame9=t1= t8*rotx/180;
+wave_1_per_frame10=t2 = t8*roty/180;
+wave_1_per_frame11=t3 = t8*rotz/180;
+wave_1_per_frame12=
+wave_1_per_frame13=t4 = 4*sin(q1+0.66*t8);
+wave_1_per_frame14=t5 = 10+8*cos(q1+0.66*t8);
+wave_1_per_frame15=
+wave_1_per_frame16=b = 0.5-0.3*cos(time+0.66*t8);
+wave_1_per_frame17=g = 0.5-0.3*sin(time+0.66*t8);
+wave_1_per_point1=//Define 3D Shape
+wave_1_per_point2=
+wave_1_per_point3=//Sphere
+wave_1_per_point4=x0 = sin(2*t8*sample);
+wave_1_per_point5=y0 = cos(2*t8*sample);
+wave_1_per_point6=x1 = (1+value1)*sin(12*t8*sample)*y0;
+wave_1_per_point7=y1 = (1+value1)*sin(12*t8*sample)*x0;
+wave_1_per_point8=z1= (1+value1)*cos(12*t8*sample);
+wave_1_per_point9=
+wave_1_per_point10=
+wave_1_per_point11=//modulate values to adjust for rotation on multiple axes, convert to world co-ordinates
+wave_1_per_point12=y2 = y1*cos(t1)-z1*sin(t1);
+wave_1_per_point13=z2 = y1*sin(t1)+z1*cos(t1);
+wave_1_per_point14=x2 = z2*sin(t2)+x1*cos(t2);
+wave_1_per_point15=z3 = z2*cos(t2)-x1*sin(t2);
+wave_1_per_point16=x3 = x2*cos(t3)-y2*sin(t3);
+wave_1_per_point17=y3 = y2*cos(t3)+x2*sin(t3);
+wave_1_per_point18=//move resulting shape in 3d space
+wave_1_per_point19=x4 = x3+t4;
+wave_1_per_point20=y4 = y3;
+wave_1_per_point21=z4 = z3+t5;
+wave_1_per_point22=//draw 3d shape in 2d
+wave_1_per_point23=x=0.5+0.5*(x4/(1+z4*0.5));
+wave_1_per_point24=y=0.5+0.5*(y4/(1+z4*0.5));
+wave_1_per_point25=
+wave_1_per_point26=r = g+5*value1;
+wavecode_2_enabled=1
+wavecode_2_samples=512
+wavecode_2_sep=0
+wavecode_2_bSpectrum=0
+wavecode_2_bUseDots=0
+wavecode_2_bDrawThick=1
+wavecode_2_bAdditive=0
+wavecode_2_scaling=0.463735
+wavecode_2_smoothing=0.000000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wave_2_init1=//pi
+wave_2_init2=t8=3.14159265;
+wave_2_init3=t5 = 1;
+wave_2_per_frame1=rotx = rotx+bass;
+wave_2_per_frame2=roty = roty+mid;
+wave_2_per_frame3=rotz = rotz+treb;
+wave_2_per_frame4=//rotx = 0;
+wave_2_per_frame5=//roty =0;
+wave_2_per_frame6=//rotz = 0;
+wave_2_per_frame7=
+wave_2_per_frame8=//convert rotation values from degrees to radians
+wave_2_per_frame9=t1= t8*rotx/180;
+wave_2_per_frame10=t2 = t8*roty/180;
+wave_2_per_frame11=t3 = t8*rotz/180;
+wave_2_per_frame12=
+wave_2_per_frame13=t4 = 4*sin(q1+1.33*t8);
+wave_2_per_frame14=t5 = 10+8*cos(q1+1.33*t8);
+wave_2_per_frame15=
+wave_2_per_frame16=r = 0.5-0.3*cos(time+1.33*t8);
+wave_2_per_frame17=b = 0.5-0.3*sin(time+1.33*t8);
+wave_2_per_point1=//Define 3D Shape
+wave_2_per_point2=
+wave_2_per_point3=//Cube
+wave_2_per_point4=x0 = if(below(sample*12,1),sample*12, if(below(sample*12,2),1, if(below(sample*12,3),abs(sample*12-3), if(below(sample*12,6),0, if(below(sample*12,8),1, if(below(sample*12,9),abs(sample*12-9), if(below(sample*12,10),0, if(below(sample*12,11),sample*12-10,1))))))));
+wave_2_per_point5=y0 = if(below(sample*12,1),0, if(below(sample*12,2),sample*12-1, if(below(sample*12,3),1, if(below(sample*12,4),abs(sample*12-4), if(below(sample*12,5),0, if(below(sample*12,7),1, if(below(sample*12,9),0, if(below(sample*12,10),sample*12-9, if(below(sample*12,11),1,abs(sample*12-12))))))))));
+wave_2_per_point6=z0 = if(below(sample*12,4),0, if(below(sample*12,5),sample*12-4, if(below(sample*12,6),abs(sample*12-6), if(below(sample*12,7),sample*12-6, if(below(sample*12,8),abs(sample*12-8),1)))));
+wave_2_per_point7=x1 = 0.5-x0+if(below(sin(sample*12*3.1415),0),value1,0);
+wave_2_per_point8=y1 = 0.5-y0+if(below(cos((sample*12-1.5)*3.1415),0),value1,0);
+wave_2_per_point9=z1 = 0.5-z0+if(below(sample*12,4),0,if(below(sample*12,8),value1,0));
+wave_2_per_point10=
+wave_2_per_point11=//modulate values to adjust for rotation on multiple axes, convert to world co-ordinates
+wave_2_per_point12=y2 = y1*cos(t1)-z1*sin(t1);
+wave_2_per_point13=z2 = y1*sin(t1)+z1*cos(t1);
+wave_2_per_point14=x2 = z2*sin(t2)+x1*cos(t2);
+wave_2_per_point15=z3 = z2*cos(t2)-x1*sin(t2);
+wave_2_per_point16=x3 = x2*cos(t3)-y2*sin(t3);
+wave_2_per_point17=y3 = y2*cos(t3)+x2*sin(t3);
+wave_2_per_point18=//move resulting shape in 3d space
+wave_2_per_point19=x4 = x3+t4;
+wave_2_per_point20=y4 = y3;
+wave_2_per_point21=z4 = z3+t5;
+wave_2_per_point22=//draw 3d shape in 2d
+wave_2_per_point23=x=0.5+0.5*(x4/(1+z4*0.5));
+wave_2_per_point24=y=0.5+0.5*(y4/(1+z4*0.5));
+wave_2_per_point25=
+wave_2_per_point26=g = b+5*value1;
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=0
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.100000
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.100000
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=warp=0;
+per_frame_2=volume = 0.3*(bass+mid);
+per_frame_3=beatrate = equal(beatrate,0) + (1-equal(beatrate,0))*(below(volume,0.01) + (1-below(volume,0.01))*beatrate);
+per_frame_4=lastbeat = lastbeat + equal(lastbeat,0)*time;
+per_frame_5=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_6=peakbass_att = max(bass_att,peakbass_att);
+per_frame_7=beat = above(volume,0.8)*below(peakbass_att - bass_att, 0.05*peakbass_att)*above(time - lastbeat, 0.1 + 0.5*(beatrate - 0.1));
+per_frame_8=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_9=peakbass_att = beat*bass_att + (1-beat)*peakbass_att*(above(time - lastbeat, 2*beatrate)*0.95 + (1-above(time - lastbeat, 2*beatrate))*0.995);
+per_frame_10=lastbeat = beat*time + (1-beat)*lastbeat;
+per_frame_11=peakbass_att = max(peakbass_att,1.1*meanbass_att);
+per_frame_12=dir = if(equal(abs(dir),1),dir,1);
+per_frame_13=dir = if(equal(beatcount,beat),0-dir,dir);
+per_frame_14=beatcount = if(above(beatcount,rand(10)+2),1,beatcount+beat);
+per_frame_15=movement = movement+(dir/fps)*0.5*3.1415/beatrate;
+per_frame_16=q1 = movement;
+per_frame_17=monitor = beat;
+per_pixel_1=zoom = zoom-0.001+0.06*max(abs(y-0.5)-0.3,0);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Krash - Interwoven (Nightmare Weft Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Krash - Interwoven (Nightmare Weft Mix).milk
new file mode 100644
index 00000000..508bc945
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Krash - Interwoven (Nightmare Weft Mix).milk
@@ -0,0 +1,99 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=1.000000
+fVideoEchoZoom=1.816695
+fVideoEchoAlpha=0.400000
+nVideoEchoOrientation=1
+nWaveMode=5
+bAdditiveWaves=1
+bWaveDots=1
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=1
+bDarken=1
+bSolarize=1
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=0.498315
+fWaveSmoothing=0.750000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.950000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=31.199999
+nMotionVectorsY=2.280001
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=2.500000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=0.800000
+mv_a=0.100000
+per_frame_1=warp=0;
+per_frame_2=
+per_frame_3=framethird = frame%3;
+per_frame_4=
+per_frame_5=x1 = 0.5 + 0.15*sin(0.416*time) + 0.15*sin(0.832*time) + 0.1*sin(1.324*time);
+per_frame_6=x2 = 0.5 + 0.15*sin(0.341*time) + 0.15*sin(0.768*time) + 0.1*sin(1.523*time);
+per_frame_7=x3 = 0.5 + 0.15*sin(0.287*time) + 0.15*sin(0.913*time) + 0.1*sin(1.142*time);
+per_frame_8=r1 = 0.5 + 0.15*sin(0.512*time) + 0.15*sin(0.943*time) + 0.1*sin(1.024*time);
+per_frame_9=r2 = 0.5 + 0.15*sin(0.483*time) + 0.15*sin(0.879*time) + 0.1*sin(1.423*time);
+per_frame_10=r3 = 0.5 + 0.15*sin(0.531*time) + 0.15*sin(0.671*time) + 0.1*sin(1.442*time);
+per_frame_11=g1 = 0.5 + 0.15*sin(0.248*time) + 0.15*sin(0.829*time) + 0.1*sin(1.623*time);
+per_frame_12=g2 = 0.5 + 0.15*sin(0.461*time) + 0.15*sin(0.699*time) + 0.1*sin(1.254*time);
+per_frame_13=g3 = 0.5 + 0.15*sin(0.397*time) + 0.15*sin(0.768*time) + 0.1*sin(1.157*time);
+per_frame_14=b1 = 0.5 + 0.15*sin(0.211*time) + 0.15*sin(0.652*time) + 0.1*sin(1.865*time);
+per_frame_15=b2 = 0.5 + 0.15*sin(0.333*time) + 0.15*sin(0.978*time) + 0.1*sin(1.359*time);
+per_frame_16=b3 = 0.5 + 0.15*sin(0.475*time) + 0.15*sin(0.791*time) + 0.1*sin(1.011*time);
+per_frame_17=wave_x = if(equal(framethird,0),x1,if(equal(framethird,1),x2,x3));
+per_frame_18=wave_r = if(equal(framethird,0),r1,if(equal(framethird,1),r2,r3));
+per_frame_19=wave_g = if(equal(framethird,0),g1,if(equal(framethird,1),g2,g3));
+per_frame_20=wave_b = if(equal(framethird,0),b1,if(equal(framethird,1),b2,b3));
+per_frame_21=
+per_frame_22=volume = 0.3*(bass+mid);
+per_frame_23=beatrate = equal(beatrate,0) + (1-equal(beatrate,0))*(below(volume,0.01) + (1-below(volume,0.01))*beatrate);
+per_frame_24=lastbeat = lastbeat + equal(lastbeat,0)*time;
+per_frame_25=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_26=peakbass_att = max(bass_att,peakbass_att);
+per_frame_27=beat = above(volume,0.8)*below(peakbass_att - bass_att, 0.05*peakbass_att)*above(time - lastbeat, 0.1 + 0.5*(beatrate - 0.1));
+per_frame_28=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_29=peakbass_att = beat*bass_att + (1-beat)*peakbass_att*(above(time - lastbeat, 2*beatrate)*0.99 + (1-above(time - lastbeat, 2*beatrate))*0.998);
+per_frame_30=lastbeat = beat*time + (1-beat)*lastbeat;
+per_frame_31=peakbass_att = max(peakbass_att,1.1*meanbass_att);
+per_frame_32=dx = if(beat,1-2*rand(2),0);
+per_frame_33=ob_a = if(beat,0,0.65);
+per_frame_34=mv_a = if(beat,1,0.05);
+per_pixel_1=dy = 0.004 + 0.0005*sin(10*x+0.459*time) + 0.0005*sin(14*x+0.325*time) + 0.0005*sin(1.231*time);
+per_pixel_2=//dx = dx + 0.0001*sin(9*y+0.612*time) + 0.0001*sin(13*y+0.429*time) + 0.0001*sin(1.027*time);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Krash - War Machine (Shifting Complexity Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Krash - War Machine (Shifting Complexity Mix).milk
new file mode 100644
index 00000000..512a54fb
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Krash - War Machine (Shifting Complexity Mix).milk
@@ -0,0 +1,90 @@
+[preset00]
+fRating=4.000000
+fGammaAdj=2.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=0.999996
+fWaveSmoothing=0.750000
+fWaveParam=-0.499900
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999900
+rot=0.100000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.800000
+wave_g=0.200000
+wave_b=0.200000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.100000
+ib_size=0.500000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=warp=0;
+per_frame_2=wave_r = wave_r + 0.45*(0.5*sin(time*0.701)+ 0.3*cos(time*0.438));
+per_frame_3=wave_b = wave_b - 0.4*(0.5*sin(time*4.782)+0.5*cos(time*0.522));
+per_frame_4=wave_g = wave_g + 0.4*sin(time*1.731);
+per_frame_5=ob_r = above(bass_att,bass)*(bass_att-bass)*4;
+per_frame_6=volume = 0.3*(bass+mid+att);
+per_frame_7=beatrate = equal(beatrate,0) + (1-equal(beatrate,0))*(below(volume,0.01) + (1-below(volume,0.01))*beatrate);
+per_frame_8=lastbeat = lastbeat + equal(lastbeat,0)*time;
+per_frame_9=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_10=peakbass_att = max(bass_att,peakbass_att);
+per_frame_11=beat = above(volume,0.8)*below(peakbass_att - bass_att, 0.05*peakbass_att)*above(time - lastbeat, 0.1 + 0.5*(beatrate - 0.1));
+per_frame_12=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_13=peakbass_att = beat*bass_att + (1-beat)*peakbass_att*(above(time - lastbeat, 2*beatrate)*0.95 + (1-above(time - lastbeat, 2*beatrate))*0.995);
+per_frame_14=lastbeat = beat*time + (1-beat)*lastbeat;
+per_frame_15=peakbass_att = max(peakbass_att,1.1*meanbass_att);
+per_frame_16=beatcounter = beatcounter + beat;
+per_frame_17=mode = if(beat*equal(beatcounter%2,0),1-mode,mode);
+per_frame_18=mode2 = if(beat,(mode2 + rand(7) + 1)%8,mode2);
+per_frame_19=mode3 = if(beat,(mode3 + rand(7) + 1)%8,mode3);
+per_frame_20=q1 = 2*mode-1;
+per_frame_21=q2 = mode2 + 2;
+per_frame_22=q3 = 1/q2;
+per_frame_23=q4 = mode3 + 2;
+per_frame_24=q5 = 1/q4;
+per_frame_25=wave_x = (rand(q2)+0.5)*q3;
+per_frame_26=wave_y = (rand(q4)+0.5)*q5;
+per_frame_27=decay = decay - 0.1*equal(frame%50,0);
+per_pixel_1=cx = ((0&(x*q2-0.5))+0.5)*q3;
+per_pixel_2=cy = ((0&(y*q4-0.5))+0.5)*q5;
+per_pixel_3=rot = rot*pow(-1,(0&(x*q2-0.5)) + (0&(y*q4-0.5)))*q1;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Krash - Windowframe To Mega Swirl 2.milk b/InstallerDependencies/Visuals/projectM/presets/Krash - Windowframe To Mega Swirl 2.milk
new file mode 100644
index 00000000..1788d462
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Krash - Windowframe To Mega Swirl 2.milk
@@ -0,0 +1,81 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=2.000000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=3.300000
+fWaveScale=1.170000
+fWaveSmoothing=0.500000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=2.100000
+fShader=0.000000
+zoom=1.025000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.290770
+sx=1.000000
+sy=1.000000
+wave_r=0.800000
+wave_g=0.500000
+wave_b=0.300000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+per_frame_1=wave_r = wave_r + 0.400*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+per_frame_2=wave_g = wave_g + 0.400*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+per_frame_3=wave_b = wave_b + 0.400*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+per_frame_4=zoom = zoom + 0.01*( 0.60*sin(0.339*time) + 0.40*sin(0.276*time) );
+per_frame_5=rot = rot + 0.010*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_6=decay = decay - 0.01*equal(frame%6,0);
+per_frame_7=left = 0.5 + 0.25*(sin(0.555*time) + sin(1.111*time));
+per_frame_8=right = 0.5 + 0.25*(sin(0.333*time) + sin(1.222*time));
+per_frame_9=centrex = (left+right)/2;
+per_frame_10=distx = 0.1 + (abs(centrex-left)+abs(centrex-right))/2;
+per_frame_11=q1 = centrex + distx;
+per_frame_12=q2 = centrex - distx;
+per_frame_13=wave_x = centrex;
+per_frame_14=top = 0.5 + 0.25*(sin(0.888*time) + sin(0.999*time));
+per_frame_15=bottom = 0.5 + 0.25*(sin(0.444*time) + sin(1.333*time));
+per_frame_16=centrey = (top+bottom)/2;
+per_frame_17=disty = 0.1 + (abs(centrey-top)+abs(centrey-bottom))/2;
+per_frame_18=q3 = centrey + disty;
+per_frame_19=q4 = centrey - disty;
+per_frame_20=wave_y = 1-centrey;
+per_pixel_1=rot=rot+0.16*sin(time*-3.3+rad*11)*(1.3-rad);
+per_pixel_2=dx = if(above(x,q1), 1,dx);
+per_pixel_3=dx = if(below(x,q2), -1,dx);
+per_pixel_4=dy = if(above(y,q3), 1,dy);
+per_pixel_5=dy = if(below(y,q4), -1,dy);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Krash and Rovastar - Rainbow Orb.milk b/InstallerDependencies/Visuals/projectM/presets/Krash and Rovastar - Rainbow Orb.milk
new file mode 100644
index 00000000..7032dc64
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Krash and Rovastar - Rainbow Orb.milk
@@ -0,0 +1,72 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=2.000000
+fDecay=0.975000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=2
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=64
+nMotionVectorsY=1
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=0.108925
+fWaveSmoothing=0.750000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.850000
+fModWaveAlphaEnd=1.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.400000
+wave_g=0.400000
+wave_b=0.400000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+per_frame_1=warp=0;
+per_frame_2=dx=-0.0005;
+per_frame_3=dy=-0.0005;
+per_frame_4=wave_x = 0.5+0.3*sin(bass+treb+mid);
+per_frame_5=wave_r = 1 + sin(-wave_x*6.28);
+per_frame_6=wave_g = abs(sin(2*wave_x*6.28));
+per_frame_7=wave_b = sin(wave_x*6.28);
+per_frame_8=treb_effect = if(above(treb_att,1.4),pow(0.99,treb_att),1);
+per_frame_9=net_effect = if(above(bass_att,0.8*treb_att),1,treb_effect);
+per_frame_10=zoom = net_effect*1.065;
+per_frame_11=rot = rot + rot_residual;
+per_frame_12=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_13=shift = (tan(time*7)) -0.05;
+per_frame_14=shift = if(above(shift,0),0,if(below(shift,-0.1),-0.1,shift));
+per_frame_15=rot_residual = if(equal(bass_thresh,2),shift,rot_residual);
+per_pixel_1=rot = rot + if(equal(sin(ang), 0), rot, sin(1-rad)/2);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Mstress & Juppy - Dancer.milk b/InstallerDependencies/Visuals/projectM/presets/Mstress & Juppy - Dancer.milk
new file mode 100644
index 00000000..2b0df35f
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Mstress & Juppy - Dancer.milk
@@ -0,0 +1,403 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.006596
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.010000
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=0.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999514
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=1.000000
+wave_y=1.000000
+ob_size=0.500000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.300000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=3.000000
+nMotionVectorsY=2.000000
+mv_dx=0.020000
+mv_dy=-0.020000
+mv_l=0.150000
+mv_r=0.490000
+mv_g=0.480000
+mv_b=0.300001
+mv_a=0.000000
+wavecode_0_enabled=1
+wavecode_0_samples=16
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=1
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.0000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_per_point1=dim =1; //Dancer dimensions
+wave_0_per_point2=xpos=0;//Dancer x position variation
+wave_0_per_point3=ypos=0;//Dancer y position variation
+wave_0_per_point4=
+wave_0_per_point5=
+wave_0_per_point6=
+wave_0_per_point7=//Position Stabilization
+wave_0_per_point8=xpos=xpos+(1-dim)/2;
+wave_0_per_point9=ypos=ypos+(1-dim)/2;
+wave_0_per_point10=
+wave_0_per_point11=meanbass = 0.01*(meanbass*99+bass);
+wave_0_per_point12=meantreb = 0.01*(meantreb*99+treb);
+wave_0_per_point13=meanmid = 0.01*(meanmid*99+mid);
+wave_0_per_point14=bassdiff = (bass - meanbass)*15;
+wave_0_per_point15=trebdiff = (treb - meantreb)*15;
+wave_0_per_point16=middiff = (mid - meanmid)*15;
+wave_0_per_point17=ba = min(above(bassdiff,0)*bassdiff*.005,.11);
+wave_0_per_point18=tr = min(above(trebdiff,0)*trebdiff*.005,.11);
+wave_0_per_point19=mi = min(above(middiff,0)*middiff*.005,.11);
+wave_0_per_point20=
+wave_0_per_point21=mi2_prg = mi2_prg+mi;
+wave_0_per_point22=gam = abs(gam-above(mi2_prg,5));
+wave_0_per_point23=mi2_prg= if(above(mi2_prg,5),0,mi2_prg);
+wave_0_per_point24=
+wave_0_per_point25=s = sample *15;
+wave_0_per_point26=//Gambe
+wave_0_per_point27=x= if(equal(int(s),1),.4,.4);
+wave_0_per_point28=y= if(equal(int(s),1),.2+((ba+tr)*.5)*gam,.2+((ba+tr)*.5)*gam);
+wave_0_per_point29=
+wave_0_per_point30=x= if(equal(int(s),2),.5+sin(ba*100)*.03,x);
+wave_0_per_point31=y= if(equal(int(s),2),.4,y);
+wave_0_per_point32=
+wave_0_per_point33=x= if(equal(int(s),3),.6,x);
+wave_0_per_point34=y= if(equal(int(s),3),.2+((ba+tr)*.5)*(1-gam),y);
+wave_0_per_point35=
+wave_0_per_point36=x= if(equal(int(s),4),.5+sin(ba*100)*.03,x);
+wave_0_per_point37=y= if(equal(int(s),4),.4,y);
+wave_0_per_point38=
+wave_0_per_point39=//Corpo
+wave_0_per_point40=x= if(equal(int(s),5),.5,x);
+wave_0_per_point41=y= if(equal(int(s),5),.6,y);
+wave_0_per_point42=
+wave_0_per_point43=//Braccia
+wave_0_per_point44=x= if(equal(int(s),6),.4-mi*.23,x);
+wave_0_per_point45=y= if(equal(int(s),6),.5+mi,y);
+wave_0_per_point46=
+wave_0_per_point47=x= if(equal(int(s),7),.5,x);
+wave_0_per_point48=y= if(equal(int(s),7),.6,y);
+wave_0_per_point49=
+wave_0_per_point50=x= if(equal(int(s),8),.6+tr*.23,x);
+wave_0_per_point51=y= if(equal(int(s),8),.5+tr,y);
+wave_0_per_point52=
+wave_0_per_point53=x= if(equal(int(s),9),.5,x);
+wave_0_per_point54=y= if(equal(int(s),9),.6,y);
+wave_0_per_point55=
+wave_0_per_point56=//Testa
+wave_0_per_point57=x= if(equal(int(s),10),.5,x);
+wave_0_per_point58=y= if(equal(int(s),10),.62,y);
+wave_0_per_point59=
+wave_0_per_point60=x= if(equal(int(s),11),.47-ba*.23,x);
+wave_0_per_point61=y= if(equal(int(s),11),.62,y);
+wave_0_per_point62=x= if(equal(int(s),12),.47-ba*.23,x);
+wave_0_per_point63=y= if(equal(int(s),12),.67+ba*.23,y);
+wave_0_per_point64=
+wave_0_per_point65=x= if(equal(int(s),13),.53+ba*.23,x);
+wave_0_per_point66=y= if(equal(int(s),13),.67+ba*.23,y);
+wave_0_per_point67=
+wave_0_per_point68=x= if(equal(int(s),14),.53+ba*.23,x);
+wave_0_per_point69=y= if(equal(int(s),14),.62,y);
+wave_0_per_point70=
+wave_0_per_point71=x= if(equal(int(s),15),.50,x);
+wave_0_per_point72=y= if(equal(int(s),15),.62,y);
+wave_0_per_point73=
+wave_0_per_point74=x=x*dim+xpos;
+wave_0_per_point75=y=y*dim+ypos;
+wave_0_per_point76=
+wave_0_per_point77=mi_prg= if(above(mi_prg,5),0,mi_prg+mi*.1);
+wave_0_per_point78=ba_prg= if(above(ba_prg,5),0,ba_prg+ba*.1);
+wave_0_per_point79=tr_prg= if(above(tr_prg,5),0,tr_prg+tr*.1);
+wave_0_per_point80=
+wave_0_per_point81=hm=sample+mi2_prg;
+wave_0_per_point82=ht=sample+tr_prg;
+wave_0_per_point83=hb=sample+ba_prg;
+wave_0_per_point84=
+wave_0_per_point85=r=hm;
+wave_0_per_point86=g=ht;
+wave_0_per_point87=b=hb;
+wave_0_per_point88=a=.8;
+wavecode_1_enabled=0
+wavecode_1_samples=16
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=1
+wavecode_1_bAdditive=1
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+wavecode_2_enabled=0
+wavecode_2_samples=512
+wavecode_2_sep=0
+wavecode_2_bSpectrum=0
+wavecode_2_bUseDots=1
+wavecode_2_bDrawThick=1
+wavecode_2_bAdditive=0
+wavecode_2_scaling=1.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wave_2_per_frame1=
+wave_2_per_frame2=rx=atan2(q2,sqr(q3)+sqr(q4))/4+q3/2;
+wave_2_per_frame3=ry=atan2(q2,q4);
+wave_2_per_frame4=rz=0;
+wave_2_per_frame5=
+wave_2_per_frame6=t1=sin(rx);t2=cos(rx);
+wave_2_per_frame7=t3=sin(ry);t4=cos(ry);
+wave_2_per_frame8=t5=sin(rz);t6=cos(rz);
+wave_2_per_point1=sample=sample*q1*134;
+wave_2_per_point2=x1=sin(sample*543)*2+q2;
+wave_2_per_point3=y1=cos(sample*4232)*2+q3;
+wave_2_per_point4=z1=sin(sample*90)*2+q4;
+wave_2_per_point5=
+wave_2_per_point6=x2=x1*t4-z1*t3;z2=x1*t3+z1*t4;
+wave_2_per_point7=y2=y1*t2-z2*t1;z3=y1*t1+z2*t2+1;
+wave_2_per_point8=x3=x2*t6-y2*t5;y3=x2*t5+y2*t6;
+wave_2_per_point9=z3=if(above(z3,.1),.5/z3,0);
+wave_2_per_point10=x=if(z3,x3*z3,x)+.5;
+wave_2_per_point11=y=if(z3,-y3*z3,y)+.5;
+wave_2_per_point12=a=z3*.8;
+wavecode_3_enabled=0
+wavecode_3_samples=142
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=1
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+wave_3_per_frame1=
+wave_3_per_frame2=rx=atan2(q2,sqr(q3)+sqr(q4))/4+q3/2;
+wave_3_per_frame3=ry=atan2(q2,q4);
+wave_3_per_frame4=rz=0;
+wave_3_per_frame5=ry1=ry1+bass_att*.2;
+wave_3_per_frame6=t1=sin(rx);t2=cos(rx);
+wave_3_per_frame7=t3=sin(ry);t4=cos(ry);
+wave_3_per_frame8=t5=sin(rz);t6=cos(rz);
+wave_3_per_frame9=t7=sin(ry1);t8=cos(ry1);
+wave_3_per_frame10=
+wave_3_per_point1=cp=bnot(cp);
+wave_3_per_point2=r=sample*q1*10;
+wave_3_per_point3=i1=(sample*6)%2;
+wave_3_per_point4=rt=if(cp,.7,.2);
+wave_3_per_point5=sample=sample*q1*.5;
+wave_3_per_point6=
+wave_3_per_point7=x1=sin(r)*rt;
+wave_3_per_point8=z1=cos(r)*rt;
+wave_3_per_point9=y1=-.5;
+wave_3_per_point10=x2=x1*t8-z1*t7;z2=x1*t7+z1*t8;
+wave_3_per_point11=x1=x2+q2;
+wave_3_per_point12=y1=y1+q3;
+wave_3_per_point13=z1=z2+q4;
+wave_3_per_point14=x2=x1*t4-z1*t3;z2=x1*t3+z1*t4;
+wave_3_per_point15=y2=y1*t2-z2*t1;z3=y1*t1+z2*t2+1.4;
+wave_3_per_point16=x3=x2*t6-y2*t5;y3=x2*t5+y2*t6;
+wave_3_per_point17=z3=if(above(z3,.1),.5/z3,0);
+wave_3_per_point18=x=if(z3,x3*z3,x)+.5;
+wave_3_per_point19=y=if(z3,-y3*z3,y)+.5;
+wave_3_per_point20=hu=sample+cos(time/q1)*q1;
+wave_3_per_point21=r=sin(hu)*.5+.5;
+wave_3_per_point22=g=sin(hu+q1*.33)*.5+.5;
+wave_3_per_point23=b=sin(hu+q1*.66)*.5+.5;
+wave_3_per_point24=a=z3*.8;
+shapecode_0_enabled=1
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.840000
+shapecode_0_y=0.740000
+shapecode_0_rad=0.289992
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.361327
+shapecode_0_r=0.100000
+shapecode_0_g=0.500000
+shapecode_0_b=0.500000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.100000
+shapecode_0_g2=0.500000
+shapecode_0_b2=0.400000
+shapecode_0_a2=1.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.040000
+shape_0_per_frame1=temp1 = 0.01*(temp1*99+bass);
+shape_0_per_frame2=temp2 = (bass - temp1)*15;
+shape_0_per_frame3=temp3 = min(above(temp2,0)*temp2*.005,.11);
+shape_0_per_frame4=
+shape_0_per_frame5=temp4= temp4+temp3;
+shape_0_per_frame6=
+shape_0_per_frame7=tex_ang =-temp4;
+shapecode_1_enabled=1
+shapecode_1_sides=100
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.150000
+shapecode_1_y=0.730000
+shapecode_1_rad=0.511334
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.388689
+shapecode_1_r=0.600000
+shapecode_1_g=0.600000
+shapecode_1_b=0.200000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.600000
+shapecode_1_g2=0.600000
+shapecode_1_b2=0.210000
+shapecode_1_a2=0.899999
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.070000
+shape_1_per_frame1=meanbass = 0.01*(meanbass*99+bass);
+shape_1_per_frame2=bassdiff = (bass - meanbass)*15;
+shape_1_per_frame3=ba = min(above(bassdiff,0)*bassdiff*.005,.11);
+shape_1_per_frame4=
+shape_1_per_frame5=
+shape_1_per_frame6=ba_prg= ba_prg+ba;
+shape_1_per_frame7=
+shape_1_per_frame8=tex_ang =-ba_prg;
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=1
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.000000
+shapecode_2_rad=0.559238
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shape_2_per_frame1=meanbass = 0.01*(meanbass*99+bass);
+shape_2_per_frame2=meantreb = 0.01*(meantreb*99+treb);
+shape_2_per_frame3=meanmid = 0.01*(meanmid*99+mid);
+shape_2_per_frame4=bassdiff = (bass - meanbass)*15;
+shape_2_per_frame5=trebdiff = (treb - meantreb)*15;
+shape_2_per_frame6=middiff = (mid - meanmid)*15;
+shape_2_per_frame7=bassdiff = above(bassdiff,0)*bassdiff;
+shape_2_per_frame8=trebdiff = above(trebdiff,0)*trebdiff;
+shape_2_per_frame9=middiff = above(middiff,0)*middiff;
+shape_2_per_frame10=
+shape_2_per_frame11=g = min(1,max(0,0.2*trebdiff));
+shape_2_per_frame12=r = min(1,max(0,0.2*middiff));
+shape_2_per_frame13=b = min(1,max(0,0.2*bassdiff));
+shape_2_per_frame14=g2 = min(1,max(0,0.2*trebdiff));
+shape_2_per_frame15=r2 = min(1,max(0,0.2*middiff));
+shape_2_per_frame16=b2 = min(1,max(0,0.2*bassdiff));
+shape_2_per_frame17=border_g = .4+min(.6,max(0,0.1*trebdiff));
+shape_2_per_frame18=border_r = .4+min(.6,max(0,0.1*middiff));
+shape_2_per_frame19=border_b = .4+min(.6,max(0,0.1*bassdiff));
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_init_1=q1=acos(-1)*2;
+per_frame_1=decay=.30;
+per_frame_2=
+per_frame_3=meanmid = 0.01*(meanmid*99+mid);
+per_frame_4=middiff = (mid - meanmid)*15;
+per_frame_5=mi = min(above(middiff,0)*middiff*.005,.11);
+per_frame_6=
+per_frame_7=mi_prg = mi_prg+mi;
+per_frame_8=gam = abs(gam-above(mi_prg,.5));
+per_frame_9=mi_prg= if(above(mi_prg,.5),0,mi_prg);
+per_frame_10=q1=gam;
+per_frame_11=monitor =mi_prg;
+per_pixel_1=
+per_pixel_2=ylim=.8;
+per_pixel_3=
+per_pixel_4=sx = sy-below(y,ylim)*.001;
+per_pixel_5=dx=dx+.01*bass*(1-q1*2)*below(y,ylim);
+per_pixel_6=rot=rot+.051*below(y,ylim);
+per_pixel_7=cx=int(x*16)/16;
+per_pixel_8=cy=int(y*16)/16;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Mstress & Juppy - Dancers In The Dark.milk b/InstallerDependencies/Visuals/projectM/presets/Mstress & Juppy - Dancers In The Dark.milk
new file mode 100644
index 00000000..ded178a0
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Mstress & Juppy - Dancers In The Dark.milk
@@ -0,0 +1,673 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=0.999609
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.010000
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=0.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999514
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=1.000000
+wave_y=1.000000
+ob_size=0.500000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.500000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=3.000000
+nMotionVectorsY=2.000000
+mv_dx=0.020000
+mv_dy=-0.020000
+mv_l=0.150000
+mv_r=0.490000
+mv_g=0.480000
+mv_b=0.300001
+mv_a=0.000000
+wavecode_0_enabled=1
+wavecode_0_samples=16
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=1
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_per_point1=meanbass = 0.01*(meanbass*99+bass_att);
+wave_0_per_point2=meantreb = 0.01*(meantreb*99+treb_att);
+wave_0_per_point3=meanmid = 0.01*(meanmid*99+mid_att);
+wave_0_per_point4=bassdiff = (bass_att - meanbass)*15;
+wave_0_per_point5=trebdiff = (treb_att - meantreb)*15;
+wave_0_per_point6=middiff = (mid_att - meanmid)*15;
+wave_0_per_point7=ba = min(above(bassdiff,0)*bassdiff*.005,.11);
+wave_0_per_point8=tr = min(above(trebdiff,0)*trebdiff*.005,.11);
+wave_0_per_point9=mi = min(above(middiff,0)*middiff*.005,.11);
+wave_0_per_point10=baprg=baprg+ba*.3;
+wave_0_per_point11=trprg=trprg+tr*.2;
+wave_0_per_point12=miprg=miprg+tr*.2;
+wave_0_per_point13=
+wave_0_per_point14=
+wave_0_per_point15=dim =.5+.4*sin(miprg); //Dancer dimensions
+wave_0_per_point16=xpos=0+.3*sin(baprg);//Dancer x position variation
+wave_0_per_point17=ypos=0+.2*sin(trprg);//Dancer y position variation
+wave_0_per_point18=
+wave_0_per_point19=
+wave_0_per_point20=
+wave_0_per_point21=//Position Stabilization
+wave_0_per_point22=xpos=xpos+(1-dim)/2;
+wave_0_per_point23=ypos=ypos+(1-dim)/2;
+wave_0_per_point24=
+wave_0_per_point25=meanbass = 0.01*(meanbass*99+bass);
+wave_0_per_point26=meantreb = 0.01*(meantreb*99+treb);
+wave_0_per_point27=meanmid = 0.01*(meanmid*99+mid);
+wave_0_per_point28=bassdiff = (bass - meanbass)*15;
+wave_0_per_point29=trebdiff = (treb - meantreb)*15;
+wave_0_per_point30=middiff = (mid - meanmid)*15;
+wave_0_per_point31=ba = min(above(bassdiff,0)*bassdiff*.005,.11);
+wave_0_per_point32=tr = min(above(trebdiff,0)*trebdiff*.005,.11);
+wave_0_per_point33=mi = min(above(middiff,0)*middiff*.005,.11);
+wave_0_per_point34=
+wave_0_per_point35=mi2_prg = mi2_prg+mi;
+wave_0_per_point36=gam = abs(gam-above(mi2_prg,5));
+wave_0_per_point37=mi2_prg= if(above(mi2_prg,5),0,mi2_prg);
+wave_0_per_point38=
+wave_0_per_point39=s = sample *15;
+wave_0_per_point40=//Gambe
+wave_0_per_point41=x= if(equal(int(s),1),.4,.4);
+wave_0_per_point42=y= if(equal(int(s),1),.2+((ba+tr)*.5)*gam,.2+((ba+tr)*.5)*gam);
+wave_0_per_point43=
+wave_0_per_point44=x= if(equal(int(s),2),.5+sin(ba*100)*.03,x);
+wave_0_per_point45=y= if(equal(int(s),2),.4,y);
+wave_0_per_point46=
+wave_0_per_point47=x= if(equal(int(s),3),.6,x);
+wave_0_per_point48=y= if(equal(int(s),3),.2+((ba+tr)*.5)*(1-gam),y);
+wave_0_per_point49=
+wave_0_per_point50=x= if(equal(int(s),4),.5+sin(ba*100)*.03,x);
+wave_0_per_point51=y= if(equal(int(s),4),.4,y);
+wave_0_per_point52=
+wave_0_per_point53=//Corpo
+wave_0_per_point54=x= if(equal(int(s),5),.5,x);
+wave_0_per_point55=y= if(equal(int(s),5),.6,y);
+wave_0_per_point56=
+wave_0_per_point57=//Braccia
+wave_0_per_point58=x= if(equal(int(s),6),.4-mi*.23,x);
+wave_0_per_point59=y= if(equal(int(s),6),.5+mi,y);
+wave_0_per_point60=
+wave_0_per_point61=x= if(equal(int(s),7),.5,x);
+wave_0_per_point62=y= if(equal(int(s),7),.6,y);
+wave_0_per_point63=
+wave_0_per_point64=x= if(equal(int(s),8),.6+tr*.23,x);
+wave_0_per_point65=y= if(equal(int(s),8),.5+tr,y);
+wave_0_per_point66=
+wave_0_per_point67=x= if(equal(int(s),9),.5,x);
+wave_0_per_point68=y= if(equal(int(s),9),.6,y);
+wave_0_per_point69=
+wave_0_per_point70=//Testa
+wave_0_per_point71=x= if(equal(int(s),10),.5,x);
+wave_0_per_point72=y= if(equal(int(s),10),.62,y);
+wave_0_per_point73=
+wave_0_per_point74=x= if(equal(int(s),11),.47-ba*.23,x);
+wave_0_per_point75=y= if(equal(int(s),11),.62,y);
+wave_0_per_point76=x= if(equal(int(s),12),.47-ba*.23,x);
+wave_0_per_point77=y= if(equal(int(s),12),.67+ba*.23,y);
+wave_0_per_point78=
+wave_0_per_point79=x= if(equal(int(s),13),.53+ba*.23,x);
+wave_0_per_point80=y= if(equal(int(s),13),.67+ba*.23,y);
+wave_0_per_point81=
+wave_0_per_point82=x= if(equal(int(s),14),.53+ba*.23,x);
+wave_0_per_point83=y= if(equal(int(s),14),.62,y);
+wave_0_per_point84=
+wave_0_per_point85=x= if(equal(int(s),15),.50,x);
+wave_0_per_point86=y= if(equal(int(s),15),.62,y);
+wave_0_per_point87=
+wave_0_per_point88=x=x*dim+xpos;
+wave_0_per_point89=y=y*dim+ypos;
+wave_0_per_point90=
+wave_0_per_point91=mi_prg= if(above(mi_prg,5),0,mi_prg+mi*.1);
+wave_0_per_point92=ba_prg= if(above(ba_prg,5),0,ba_prg+ba*.1);
+wave_0_per_point93=tr_prg= if(above(tr_prg,5),0,tr_prg+tr*.1);
+wave_0_per_point94=
+wave_0_per_point95=hm=sample+mi2_prg;
+wave_0_per_point96=ht=sample+tr_prg;
+wave_0_per_point97=hb=sample+ba_prg;
+wave_0_per_point98=
+wave_0_per_point99=r=hm;
+wave_0_per_point100=g=ht;
+wave_0_per_point101=b=hb;
+wave_0_per_point102=a=.8;
+wavecode_1_enabled=1
+wavecode_1_samples=16
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=1
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+wave_1_per_point1=meanbass = 0.01*(meanbass*99+bass_att);
+wave_1_per_point2=meantreb = 0.01*(meantreb*99+treb_att);
+wave_1_per_point3=meanmid = 0.01*(meanmid*99+mid_att);
+wave_1_per_point4=bassdiff = (bass_att - meanbass)*15;
+wave_1_per_point5=trebdiff = (treb_att - meantreb)*15;
+wave_1_per_point6=middiff = (mid_att - meanmid)*15;
+wave_1_per_point7=ba = min(above(bassdiff,0)*bassdiff*.005,.11);
+wave_1_per_point8=tr = min(above(trebdiff,0)*trebdiff*.005,.11);
+wave_1_per_point9=mi = min(above(middiff,0)*middiff*.005,.11);
+wave_1_per_point10=baprg=baprg+ba*.4;
+wave_1_per_point11=trprg=trprg+tr*.1;
+wave_1_per_point12=miprg=miprg+tr*.3;
+wave_1_per_point13=
+wave_1_per_point14=
+wave_1_per_point15=dim =.5+.3*sin(baprg); //Dancer dimensions
+wave_1_per_point16=xpos=0+.3*sin(trprg);//Dancer x position variation
+wave_1_per_point17=ypos=0+.2*sin(miprg);//Dancer y position variation
+wave_1_per_point18=
+wave_1_per_point19=
+wave_1_per_point20=
+wave_1_per_point21=//Position Stabilization
+wave_1_per_point22=xpos=xpos+(1-dim)/2;
+wave_1_per_point23=ypos=ypos+(1-dim)/2;
+wave_1_per_point24=
+wave_1_per_point25=meanbass = 0.01*(meanbass*99+bass);
+wave_1_per_point26=meantreb = 0.01*(meantreb*99+treb);
+wave_1_per_point27=meanmid = 0.01*(meanmid*99+mid);
+wave_1_per_point28=bassdiff = (bass - meanbass)*15;
+wave_1_per_point29=trebdiff = (treb - meantreb)*15;
+wave_1_per_point30=middiff = (mid - meanmid)*15;
+wave_1_per_point31=ba = min(above(bassdiff,0)*bassdiff*.005,.11);
+wave_1_per_point32=tr = min(above(trebdiff,0)*trebdiff*.005,.11);
+wave_1_per_point33=mi = min(above(middiff,0)*middiff*.005,.11);
+wave_1_per_point34=
+wave_1_per_point35=mi2_prg = mi2_prg+mi;
+wave_1_per_point36=gam = abs(gam-above(mi2_prg,5));
+wave_1_per_point37=mi2_prg= if(above(mi2_prg,5),0,mi2_prg);
+wave_1_per_point38=
+wave_1_per_point39=s = sample *15;
+wave_1_per_point40=//Gambe
+wave_1_per_point41=x= if(equal(int(s),1),.4,.4);
+wave_1_per_point42=y= if(equal(int(s),1),.2+((ba+tr)*.5)*gam,.2+((ba+tr)*.5)*gam);
+wave_1_per_point43=
+wave_1_per_point44=x= if(equal(int(s),2),.5+sin(ba*100)*.03,x);
+wave_1_per_point45=y= if(equal(int(s),2),.4,y);
+wave_1_per_point46=
+wave_1_per_point47=x= if(equal(int(s),3),.6,x);
+wave_1_per_point48=y= if(equal(int(s),3),.2+((ba+tr)*.5)*(1-gam),y);
+wave_1_per_point49=
+wave_1_per_point50=x= if(equal(int(s),4),.5+sin(ba*100)*.03,x);
+wave_1_per_point51=y= if(equal(int(s),4),.4,y);
+wave_1_per_point52=
+wave_1_per_point53=//Corpo
+wave_1_per_point54=x= if(equal(int(s),5),.5,x);
+wave_1_per_point55=y= if(equal(int(s),5),.6,y);
+wave_1_per_point56=
+wave_1_per_point57=//Braccia
+wave_1_per_point58=x= if(equal(int(s),6),.4-mi*.23,x);
+wave_1_per_point59=y= if(equal(int(s),6),.5+mi,y);
+wave_1_per_point60=
+wave_1_per_point61=x= if(equal(int(s),7),.5,x);
+wave_1_per_point62=y= if(equal(int(s),7),.6,y);
+wave_1_per_point63=
+wave_1_per_point64=x= if(equal(int(s),8),.6+tr*.23,x);
+wave_1_per_point65=y= if(equal(int(s),8),.5+tr,y);
+wave_1_per_point66=
+wave_1_per_point67=x= if(equal(int(s),9),.5,x);
+wave_1_per_point68=y= if(equal(int(s),9),.6,y);
+wave_1_per_point69=
+wave_1_per_point70=//Testa
+wave_1_per_point71=x= if(equal(int(s),10),.5,x);
+wave_1_per_point72=y= if(equal(int(s),10),.62,y);
+wave_1_per_point73=
+wave_1_per_point74=x= if(equal(int(s),11),.47-ba*.23,x);
+wave_1_per_point75=y= if(equal(int(s),11),.62,y);
+wave_1_per_point76=x= if(equal(int(s),12),.47-ba*.23,x);
+wave_1_per_point77=y= if(equal(int(s),12),.67+ba*.23,y);
+wave_1_per_point78=
+wave_1_per_point79=x= if(equal(int(s),13),.53+ba*.23,x);
+wave_1_per_point80=y= if(equal(int(s),13),.67+ba*.23,y);
+wave_1_per_point81=
+wave_1_per_point82=x= if(equal(int(s),14),.53+ba*.23,x);
+wave_1_per_point83=y= if(equal(int(s),14),.62,y);
+wave_1_per_point84=
+wave_1_per_point85=x= if(equal(int(s),15),.50,x);
+wave_1_per_point86=y= if(equal(int(s),15),.62,y);
+wave_1_per_point87=
+wave_1_per_point88=x=x*dim+xpos;
+wave_1_per_point89=y=y*dim+ypos;
+wave_1_per_point90=
+wave_1_per_point91=mi_prg= if(above(mi_prg,5),0,mi_prg+mi*.1);
+wave_1_per_point92=ba_prg= if(above(ba_prg,5),0,ba_prg+ba*.1);
+wave_1_per_point93=tr_prg= if(above(tr_prg,5),0,tr_prg+tr*.1);
+wave_1_per_point94=
+wave_1_per_point95=hm=sample+mi2_prg;
+wave_1_per_point96=ht=sample+tr_prg;
+wave_1_per_point97=hb=sample+ba_prg;
+wave_1_per_point98=
+wave_1_per_point99=r=hm;
+wave_1_per_point100=g=ht;
+wave_1_per_point101=b=hb;
+wave_1_per_point102=a=.8;
+wavecode_2_enabled=1
+wavecode_2_samples=16
+wavecode_2_sep=0
+wavecode_2_bSpectrum=0
+wavecode_2_bUseDots=0
+wavecode_2_bDrawThick=1
+wavecode_2_bAdditive=0
+wavecode_2_scaling=1.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wave_2_per_point1=meanbass = 0.01*(meanbass*99+bass);
+wave_2_per_point2=meantreb = 0.01*(meantreb*99+treb);
+wave_2_per_point3=meanmid = 0.01*(meanmid*99+mid);
+wave_2_per_point4=bassdiff = (bass - meanbass)*15;
+wave_2_per_point5=trebdiff = (treb - meantreb)*15;
+wave_2_per_point6=middiff = (mid - meanmid)*15;
+wave_2_per_point7=ba = min(above(bassdiff,0)*bassdiff*.005,.11);
+wave_2_per_point8=tr = min(above(trebdiff,0)*trebdiff*.005,.11);
+wave_2_per_point9=mi = min(above(middiff,0)*middiff*.005,.11);
+wave_2_per_point10=baprg=baprg+ba*.1;
+wave_2_per_point11=trprg=trprg+tr*.24;
+wave_2_per_point12=miprg=miprg+tr*.3;
+wave_2_per_point13=
+wave_2_per_point14=
+wave_2_per_point15=dim =.5+.3*sin(miprg); //Dancer dimensions
+wave_2_per_point16=xpos=0+.3*sin(trprg);//Dancer x position variation
+wave_2_per_point17=ypos=0+.2*sin(baprg);//Dancer y position variation
+wave_2_per_point18=
+wave_2_per_point19=
+wave_2_per_point20=
+wave_2_per_point21=//Position Stabilization
+wave_2_per_point22=xpos=xpos+(1-dim)/2;
+wave_2_per_point23=ypos=ypos+(1-dim)/2;
+wave_2_per_point24=
+wave_2_per_point25=meanbass = 0.01*(meanbass*99+bass);
+wave_2_per_point26=meantreb = 0.01*(meantreb*99+treb);
+wave_2_per_point27=meanmid = 0.01*(meanmid*99+mid);
+wave_2_per_point28=bassdiff = (bass - meanbass)*15;
+wave_2_per_point29=trebdiff = (treb - meantreb)*15;
+wave_2_per_point30=middiff = (mid - meanmid)*15;
+wave_2_per_point31=ba = min(above(bassdiff,0)*bassdiff*.005,.11);
+wave_2_per_point32=tr = min(above(trebdiff,0)*trebdiff*.005,.11);
+wave_2_per_point33=mi = min(above(middiff,0)*middiff*.005,.11);
+wave_2_per_point34=
+wave_2_per_point35=mi2_prg = mi2_prg+mi;
+wave_2_per_point36=gam = abs(gam-above(mi2_prg,5));
+wave_2_per_point37=mi2_prg= if(above(mi2_prg,5),0,mi2_prg);
+wave_2_per_point38=
+wave_2_per_point39=s = sample *15;
+wave_2_per_point40=//Gambe
+wave_2_per_point41=x= if(equal(int(s),1),.4,.4);
+wave_2_per_point42=y= if(equal(int(s),1),.2+((ba+tr)*.5)*gam,.2+((ba+tr)*.5)*gam);
+wave_2_per_point43=
+wave_2_per_point44=x= if(equal(int(s),2),.5+sin(ba*100)*.03,x);
+wave_2_per_point45=y= if(equal(int(s),2),.4,y);
+wave_2_per_point46=
+wave_2_per_point47=x= if(equal(int(s),3),.6,x);
+wave_2_per_point48=y= if(equal(int(s),3),.2+((ba+tr)*.5)*(1-gam),y);
+wave_2_per_point49=
+wave_2_per_point50=x= if(equal(int(s),4),.5+sin(ba*100)*.03,x);
+wave_2_per_point51=y= if(equal(int(s),4),.4,y);
+wave_2_per_point52=
+wave_2_per_point53=//Corpo
+wave_2_per_point54=x= if(equal(int(s),5),.5,x);
+wave_2_per_point55=y= if(equal(int(s),5),.6,y);
+wave_2_per_point56=
+wave_2_per_point57=//Braccia
+wave_2_per_point58=x= if(equal(int(s),6),.4-mi*.23,x);
+wave_2_per_point59=y= if(equal(int(s),6),.5+mi,y);
+wave_2_per_point60=
+wave_2_per_point61=x= if(equal(int(s),7),.5,x);
+wave_2_per_point62=y= if(equal(int(s),7),.6,y);
+wave_2_per_point63=
+wave_2_per_point64=x= if(equal(int(s),8),.6+tr*.23,x);
+wave_2_per_point65=y= if(equal(int(s),8),.5+tr,y);
+wave_2_per_point66=
+wave_2_per_point67=x= if(equal(int(s),9),.5,x);
+wave_2_per_point68=y= if(equal(int(s),9),.6,y);
+wave_2_per_point69=
+wave_2_per_point70=//Testa
+wave_2_per_point71=x= if(equal(int(s),10),.5,x);
+wave_2_per_point72=y= if(equal(int(s),10),.62,y);
+wave_2_per_point73=
+wave_2_per_point74=x= if(equal(int(s),11),.47-ba*.23,x);
+wave_2_per_point75=y= if(equal(int(s),11),.62,y);
+wave_2_per_point76=x= if(equal(int(s),12),.47-ba*.23,x);
+wave_2_per_point77=y= if(equal(int(s),12),.67+ba*.23,y);
+wave_2_per_point78=
+wave_2_per_point79=x= if(equal(int(s),13),.53+ba*.23,x);
+wave_2_per_point80=y= if(equal(int(s),13),.67+ba*.23,y);
+wave_2_per_point81=
+wave_2_per_point82=x= if(equal(int(s),14),.53+ba*.23,x);
+wave_2_per_point83=y= if(equal(int(s),14),.62,y);
+wave_2_per_point84=
+wave_2_per_point85=x= if(equal(int(s),15),.50,x);
+wave_2_per_point86=y= if(equal(int(s),15),.62,y);
+wave_2_per_point87=
+wave_2_per_point88=x=x*dim+xpos;
+wave_2_per_point89=y=y*dim+ypos;
+wave_2_per_point90=
+wave_2_per_point91=mi_prg= if(above(mi_prg,5),0,mi_prg+mi*.1);
+wave_2_per_point92=ba_prg= if(above(ba_prg,5),0,ba_prg+ba*.1);
+wave_2_per_point93=tr_prg= if(above(tr_prg,5),0,tr_prg+tr*.1);
+wave_2_per_point94=
+wave_2_per_point95=hm=sample+mi2_prg;
+wave_2_per_point96=ht=sample+tr_prg;
+wave_2_per_point97=hb=sample+ba_prg;
+wave_2_per_point98=
+wave_2_per_point99=r=hm;
+wave_2_per_point100=g=ht;
+wave_2_per_point101=b=hb;
+wave_2_per_point102=a=.8;
+wavecode_3_enabled=1
+wavecode_3_samples=16
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=1
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+wave_3_per_frame1=
+wave_3_per_frame2=rx=at
+wave_3_per_point1=meanbass = 0.01*(meanbass*99+bass);
+wave_3_per_point2=meantreb = 0.01*(meantreb*99+treb);
+wave_3_per_point3=meanmid = 0.01*(meanmid*99+mid);
+wave_3_per_point4=bassdiff = (bass - meanbass)*15;
+wave_3_per_point5=trebdiff = (treb - meantreb)*15;
+wave_3_per_point6=middiff = (mid - meanmid)*15;
+wave_3_per_point7=ba = min(above(bassdiff,0)*bassdiff*.005,.11);
+wave_3_per_point8=tr = min(above(trebdiff,0)*trebdiff*.005,.11);
+wave_3_per_point9=mi = min(above(middiff,0)*middiff*.005,.11);
+wave_3_per_point10=baprg=baprg+ba*.26;
+wave_3_per_point11=trprg=trprg+tr*.34;
+wave_3_per_point12=miprg=miprg+tr*.125;
+wave_3_per_point13=
+wave_3_per_point14=
+wave_3_per_point15=dim =.5+.4*sin(trprg); //Dancer dimensions
+wave_3_per_point16=xpos=0+.3*sin(baprg);//Dancer x position variation
+wave_3_per_point17=ypos=0+.2*sin(miprg);//Dancer y position variation
+wave_3_per_point18=
+wave_3_per_point19=
+wave_3_per_point20=
+wave_3_per_point21=//Position Stabilization
+wave_3_per_point22=xpos=xpos+(1-dim)/2;
+wave_3_per_point23=ypos=ypos+(1-dim)/2;
+wave_3_per_point24=
+wave_3_per_point25=meanbass = 0.01*(meanbass*99+bass);
+wave_3_per_point26=meantreb = 0.01*(meantreb*99+treb);
+wave_3_per_point27=meanmid = 0.01*(meanmid*99+mid);
+wave_3_per_point28=bassdiff = (bass - meanbass)*15;
+wave_3_per_point29=trebdiff = (treb - meantreb)*15;
+wave_3_per_point30=middiff = (mid - meanmid)*15;
+wave_3_per_point31=ba = min(above(bassdiff,0)*bassdiff*.005,.11);
+wave_3_per_point32=tr = min(above(trebdiff,0)*trebdiff*.005,.11);
+wave_3_per_point33=mi = min(above(middiff,0)*middiff*.005,.11);
+wave_3_per_point34=
+wave_3_per_point35=mi2_prg = mi2_prg+mi;
+wave_3_per_point36=gam = abs(gam-above(mi2_prg,5));
+wave_3_per_point37=mi2_prg= if(above(mi2_prg,5),0,mi2_prg);
+wave_3_per_point38=
+wave_3_per_point39=s = sample *15;
+wave_3_per_point40=//Gambe
+wave_3_per_point41=x= if(equal(int(s),1),.4,.4);
+wave_3_per_point42=y= if(equal(int(s),1),.2+((ba+tr)*.5)*gam,.2+((ba+tr)*.5)*gam);
+wave_3_per_point43=
+wave_3_per_point44=x= if(equal(int(s),2),.5+sin(ba*100)*.03,x);
+wave_3_per_point45=y= if(equal(int(s),2),.4,y);
+wave_3_per_point46=
+wave_3_per_point47=x= if(equal(int(s),3),.6,x);
+wave_3_per_point48=y= if(equal(int(s),3),.2+((ba+tr)*.5)*(1-gam),y);
+wave_3_per_point49=
+wave_3_per_point50=x= if(equal(int(s),4),.5+sin(ba*100)*.03,x);
+wave_3_per_point51=y= if(equal(int(s),4),.4,y);
+wave_3_per_point52=
+wave_3_per_point53=//Corpo
+wave_3_per_point54=x= if(equal(int(s),5),.5,x);
+wave_3_per_point55=y= if(equal(int(s),5),.6,y);
+wave_3_per_point56=
+wave_3_per_point57=//Braccia
+wave_3_per_point58=x= if(equal(int(s),6),.4-mi*.23,x);
+wave_3_per_point59=y= if(equal(int(s),6),.5+mi,y);
+wave_3_per_point60=
+wave_3_per_point61=x= if(equal(int(s),7),.5,x);
+wave_3_per_point62=y= if(equal(int(s),7),.6,y);
+wave_3_per_point63=
+wave_3_per_point64=x= if(equal(int(s),8),.6+tr*.23,x);
+wave_3_per_point65=y= if(equal(int(s),8),.5+tr,y);
+wave_3_per_point66=
+wave_3_per_point67=x= if(equal(int(s),9),.5,x);
+wave_3_per_point68=y= if(equal(int(s),9),.6,y);
+wave_3_per_point69=
+wave_3_per_point70=//Testa
+wave_3_per_point71=x= if(equal(int(s),10),.5,x);
+wave_3_per_point72=y= if(equal(int(s),10),.62,y);
+wave_3_per_point73=
+wave_3_per_point74=x= if(equal(int(s),11),.47-ba*.23,x);
+wave_3_per_point75=y= if(equal(int(s),11),.62,y);
+wave_3_per_point76=x= if(equal(int(s),12),.47-ba*.23,x);
+wave_3_per_point77=y= if(equal(int(s),12),.67+ba*.23,y);
+wave_3_per_point78=
+wave_3_per_point79=x= if(equal(int(s),13),.53+ba*.23,x);
+wave_3_per_point80=y= if(equal(int(s),13),.67+ba*.23,y);
+wave_3_per_point81=
+wave_3_per_point82=x= if(equal(int(s),14),.53+ba*.23,x);
+wave_3_per_point83=y= if(equal(int(s),14),.62,y);
+wave_3_per_point84=
+wave_3_per_point85=x= if(equal(int(s),15),.50,x);
+wave_3_per_point86=y= if(equal(int(s),15),.62,y);
+wave_3_per_point87=
+wave_3_per_point88=x=x*dim+xpos;
+wave_3_per_point89=y=y*dim+ypos;
+wave_3_per_point90=
+wave_3_per_point91=mi_prg= if(above(mi_prg,5),0,mi_prg+mi*.1);
+wave_3_per_point92=ba_prg= if(above(ba_prg,5),0,ba_prg+ba*.1);
+wave_3_per_point93=tr_prg= if(above(tr_prg,5),0,tr_prg+tr*.1);
+wave_3_per_point94=
+wave_3_per_point95=hm=sample+mi2_prg;
+wave_3_per_point96=ht=sample+tr_prg;
+wave_3_per_point97=hb=sample+ba_prg;
+wave_3_per_point98=
+wave_3_per_point99=r=hm;
+wave_3_per_point100=g=ht;
+wave_3_per_point101=b=hb;
+wave_3_per_point102=a=.8;
+shapecode_0_enabled=0
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.840000
+shapecode_0_y=0.740000
+shapecode_0_rad=0.289992
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.321291
+shapecode_0_r=0.100000
+shapecode_0_g=0.500000
+shapecode_0_b=0.500000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.100000
+shapecode_0_g2=0.500000
+shapecode_0_b2=0.400000
+shapecode_0_a2=1.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=meantreb = 0.01*(meantreb*99+treb);
+shape_0_per_frame2=trebdiff = (treb - meantreb)*15;
+shape_0_per_frame3=tr = min(above(trebdiff,0)*trebdiff*.005,.11);
+shape_0_per_frame4=
+shape_0_per_frame5=tr_prg= tr_prg+tr;
+shape_0_per_frame6=
+shape_0_per_frame7=tex_ang =-tr_prg;
+shapecode_1_enabled=0
+shapecode_1_sides=100
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.150000
+shapecode_1_y=0.730000
+shapecode_1_rad=0.511334
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.361326
+shapecode_1_r=0.600000
+shapecode_1_g=0.600000
+shapecode_1_b=0.200000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.600000
+shapecode_1_g2=0.600000
+shapecode_1_b2=0.210000
+shapecode_1_a2=0.899999
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=meanbass = 0.01*(meanbass*99+bass);
+shape_1_per_frame2=bassdiff = (bass - meanbass)*15;
+shape_1_per_frame3=ba = min(above(bassdiff,0)*bassdiff*.005,.11);
+shape_1_per_frame4=
+shape_1_per_frame5=
+shape_1_per_frame6=ba_prg= ba_prg+ba;
+shape_1_per_frame7=
+shape_1_per_frame8=tex_ang =-ba_prg;
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_init_1=q1=acos(-1)*2;
+per_frame_1=decay=.30;
+per_frame_2=
+per_frame_3=meanmid = 0.01*(meanmid*99+mid);
+per_frame_4=middiff = (mid - meanmid)*15;
+per_frame_5=mi = min(above(middiff,0)*middiff*.005,.11);
+per_frame_6=
+per_frame_7=mi_prg = mi_prg+mi;
+per_frame_8=gam = abs(gam-above(mi_prg,.5));
+per_frame_9=mi_prg= if(above(mi_prg,.5),0,mi_prg);
+per_frame_10=miprg=miprg+mi;
+per_frame_11=q1=gam;
+per_frame_12=monitor =mi_prg;
+per_frame_13=
+per_frame_14=
+per_frame_15=//Thanks to krash for beat detection (modified)
+per_frame_16=volume = 0.3*bass+mid;
+per_frame_17=beatrate = equal(beatrate,0) + (1-equal(beatrate,0))*(below(volume,0.01) + (1-below(volume,0.01))*beatrate);
+per_frame_18=lastbeat = lastbeat + equal(lastbeat,0)*time;
+per_frame_19=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_20=runmeanbass =(runmeanbass*2 + bass_att)/3;
+per_frame_21=peakbass_att = max(bass_att,peakbass_att);
+per_frame_22=beat = above(volume,0.8)*above(bass_att,runmeanbass*1.1)*below(peakbass_att - bass_att, 0.05*peakbass_att)*above(time - lastbeat, 0.1 + 0.5*(beatrate - 0.1));
+per_frame_23=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_24=peakbass_att = beat*bass_att + (1-beat)*peakbass_att*(above(time - lastbeat, 2*beatrate)*0.95 + (1-above(time - lastbeat, 2*beatrate))*0.995);
+per_frame_25=lastbeat = beat*time + (1-beat)*lastbeat;
+per_frame_26=peakbass_att = max(peakbass_att,1.1*meanbass_att);
+per_frame_27=
+per_frame_28=echo_zoom =pow(1/(1.8+1.5*sin(miprg)),.5);
+per_frame_29=monitor=echo_zoom;
+per_frame_30=//oldecho = echo_zoom;
+per_pixel_1=
+per_pixel_2=
+per_pixel_3=
+per_pixel_4=DY =dy-.004*below(y,1)*(rad+.1)*bass;//*(1-below(y,.50)*above(y,.479));
+per_pixel_5=//zoom=zoom+above(y,.49)*.1;
+per_pixel_6=sx = sy-below(y,1)*.001;
+per_pixel_7=dx=dx+.01*bass*(1-q1*2);//sin(bass*.2);
+per_pixel_8=rot=rot+.051*below(y,1);//*(1-below(y,.49)*above(y,.47));
+per_pixel_9=cx=int(x*16)/16;
+per_pixel_10=cy=int(y*16)/16;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Mstress - Acoustic Nerve Impulses (Under Drug Effetcs (Hypn.milk b/InstallerDependencies/Visuals/projectM/presets/Mstress - Acoustic Nerve Impulses (Under Drug Effetcs (Hypn.milk
new file mode 100644
index 00000000..b40061a5
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Mstress - Acoustic Nerve Impulses (Under Drug Effetcs (Hypn.milk
@@ -0,0 +1,287 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.000000
+fDecay=0.998500
+fVideoEchoZoom=1.168096
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=7
+bAdditiveWaves=1
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.118879
+fWaveSmoothing=0.000000
+fWaveParam=-0.000100
+fModWaveAlphaStart=0.240000
+fModWaveAlphaEnd=1.300001
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=0.999998
+fShader=0.000000
+zoom=1.010514
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000022
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.340000
+ob_g=0.340000
+ob_b=0.340000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.340000
+ib_g=0.340000
+ib_b=0.340000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=16
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=1
+wavecode_0_bAdditive=0
+wavecode_0_scaling=2.279692
+wavecode_0_smoothing=0.700000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_init1=t8 = time;
+wave_0_per_frame1=t7 = t8;
+wave_0_per_frame2=t8 = time;
+wave_0_per_point1=x = 0.5 + sin(sample*3 + time*0.1);
+wave_0_per_point2=y = 0.5 + sin(sample*94.23) + 0.02*sin(time*4.5);
+wave_0_per_point3=b=abs(sin(sample*100+time));
+wave_0_per_point4=r=abs(sin(sample*512+time));
+wave_0_per_point5=g=abs(sin(sample*10+time));
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=73
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=1.959247
+shapecode_0_ang=6.031858
+shapecode_0_tex_ang=5.780530
+shapecode_0_tex_zoom=0.999998
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=0.090000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=0.100000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=flag1=int(abs(flag1-q1));
+shape_0_per_frame2=flag=int(abs(flag-q1*flag1));
+shape_0_per_frame3=ang =ang +if(flag,0,-.4)+abs(sin(bass))*.4*if(flag,1,-1);
+shape_0_per_frame4=
+shape_0_per_frame5=x=x+sin(time*.7)*.06;
+shape_0_per_frame6=y=y+sin(time*.5)*.06;
+shape_0_per_frame7=
+shape_0_per_frame8=
+shape_0_per_frame9=
+shape_0_per_frame10=a = if(equal(q5+q6+q7,0),0,a);
+shape_0_per_frame11=a2=a;
+shapecode_1_enabled=1
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.840000
+shapecode_1_y=0.220000
+shapecode_1_rad=0.600092
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=0.734577
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=0.890000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=flag = abs(flag-1);
+shape_1_per_frame2=y = if(flag,.8,.2);
+shape_1_per_frame3=ang=if(flag,-q2,q3);
+shape_1_per_frame4=tex_ang=if(flag,-q3*3,q2*3);
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.181000
+shapecode_2_y=0.800000
+shapecode_2_rad=0.599578
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=0.734577
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=flag = abs(flag-1);
+shape_2_per_frame2=y = if(flag,.2,.8);
+shape_2_per_frame3=ang=if(flag,-q3,q2);
+shape_2_per_frame4=tex_ang=if(flag,-q2*3,q3*3);
+shapecode_3_enabled=1
+shapecode_3_sides=6
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.560000
+shapecode_3_y=0.150000
+shapecode_3_rad=0.230671
+shapecode_3_ang=5.403541
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=0.010000
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=1.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=1.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=1.000000
+shapecode_3_a2=0.130000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+shape_3_per_frame1=g = min(1,max(0,0.2*q7));
+shape_3_per_frame2=r = min(1,max(0,0.2*q6));
+shape_3_per_frame3=b = min(1,max(0,0.2*q5));
+shape_3_per_frame4=g2 = min(.8,max(0,0.1*q7));
+shape_3_per_frame5=r2 = min(.8,max(0,0.1*q6));
+shape_3_per_frame6=b2 = min(.8,max(0,0.1*q5));
+shape_3_per_frame7=ang=time;
+shape_3_per_frame8=a = if(equal(q5+q6+q7,0),0,a);
+shape_3_per_frame9=a2=if(equal(q5+q6+q7,0),0,a2);
+shape_3_per_frame10=
+shape_3_per_frame11=mbass=bass*5;
+shape_3_per_frame12=xmov = 0.1*rand(10)*mbass*0.015*(1-2*above(rand(10),5));
+shape_3_per_frame13=ymov = pow(pow(mbass*0.015,2)-pow(xmovn,2),1/2)*(1-2*above(rand(10),5));
+shape_3_per_frame14=x = .5+xmov ;
+shape_3_per_frame15=y = .5+ymov;
+per_frame_init_1=oldy=.4;
+per_frame_1=meanbass = 0.01*(meanbass*99+bass);
+per_frame_2=meantreb = 0.01*(meantreb*99+treb);
+per_frame_3=meanmid = 0.01*(meanmid*99+mid);
+per_frame_4=bassdiff = (bass - meanbass)*15;
+per_frame_5=trebdiff = (treb - meantreb)*15;
+per_frame_6=middiff = (mid - meanmid)*15;
+per_frame_7=bassdiff = above(bassdiff,0)*bassdiff;
+per_frame_8=trebdiff = above(trebdiff,0)*trebdiff;
+per_frame_9=middiff = above(middiff,0)*middiff;
+per_frame_10=q5=bassdiff;
+per_frame_11=q6=middiff;
+per_frame_12=q7=trebdiff;
+per_frame_13=
+per_frame_14=
+per_frame_15=
+per_frame_16=//Thanks to krash for beat detection (modified)
+per_frame_17=volume = 0.3*bass+mid;
+per_frame_18=beatrate = equal(beatrate,0) + (1-equal(beatrate,0))*(below(volume,0.01) + (1-below(volume,0.01))*beatrate);
+per_frame_19=lastbeat = lastbeat + equal(lastbeat,0)*time;
+per_frame_20=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_21=runmeanbass =(runmeanbass*2 + bass_att)/3;
+per_frame_22=peakbass_att = max(bass_att,peakbass_att);
+per_frame_23=beat = above(volume,0.8)*above(bass_att,runmeanbass*1.1)*below(peakbass_att - bass_att, 0.05*peakbass_att)*above(time - lastbeat, 0.1 + 0.5*(beatrate - 0.1));
+per_frame_24=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_25=peakbass_att = beat*bass_att + (1-beat)*peakbass_att*(above(time - lastbeat, 2*beatrate)*0.95 + (1-above(time - lastbeat, 2*beatrate))*0.995);
+per_frame_26=lastbeat = beat*time + (1-beat)*lastbeat;
+per_frame_27=peakbass_att = max(peakbass_att,1.1*meanbass_att);
+per_frame_28=q1 = beat;
+per_frame_29=q2=oldq2+bass*.02;
+per_frame_30=oldq2=q2;
+per_frame_31=q3=oldq3+treb*.02;
+per_frame_32=oldq3=q3;
+per_frame_33=temp = y;
+per_frame_34=y = if(beat,oldy,y);
+per_frame_35=oldy=if(beat,temp,oldy);
+per_frame_36=
+per_frame_37=monitor =q2;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Phat_Eo.S. - our own personal demon.milk b/InstallerDependencies/Visuals/projectM/presets/Phat_Eo.S. - our own personal demon.milk
new file mode 100644
index 00000000..644513ef
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Phat_Eo.S. - our own personal demon.milk
@@ -0,0 +1,345 @@
+[preset00]
+fRating=0.000000
+fGammaAdj=1.000000
+fDecay=0.925000
+fVideoEchoZoom=1.001829
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=2
+bAdditiveWaves=1
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=2.850136
+fWaveSmoothing=0.630000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999514
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=12.799995
+nMotionVectorsY=38.400002
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.800001
+mv_r=0.440000
+mv_g=0.650000
+mv_b=0.810000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_per_frame1=basstime=basstime+(bass*bass);
+wave_0_per_frame2=t1=basstime*0.003;
+wave_0_per_frame3=
+wave_0_per_point1=//plot x,y,z to point on circle
+wave_0_per_point2=smp=sample*6.283;
+wave_0_per_point3=xp=sin(smp )*0.05;
+wave_0_per_point4=yp=cos(smp )*0.05;
+wave_0_per_point5=zp=0;
+wave_0_per_point6=
+wave_0_per_point7=
+wave_0_per_point8=//alter shape;
+wave_0_per_point9=angy=sin(sample*6.28*4 +t1 )*6.28;
+wave_0_per_point10=xq=xp*cos(angy) - zp*sin(angy);
+wave_0_per_point11=zq=xp*sin(angy) + zp*cos(angy);
+wave_0_per_point12=xp=xq;
+wave_0_per_point13=zp=zq;
+wave_0_per_point14=
+wave_0_per_point15=
+wave_0_per_point16=//rotate on y axis;
+wave_0_per_point17=angy=t1*0.1;
+wave_0_per_point18=xq=xp*cos(angy) - zp*sin(angy);
+wave_0_per_point19=zq=xp*sin(angy) + zp*cos(angy);
+wave_0_per_point20=xp=xq;
+wave_0_per_point21=zp=zq;
+wave_0_per_point22=
+wave_0_per_point23=//rotate on x axis
+wave_0_per_point24=axs1 = sin(t1*0.15) + 1.6;
+wave_0_per_point25=yq= yp*cos(axs1) - zp*sin(axs1);
+wave_0_per_point26=zq= yp*sin(axs1) + zp*cos(axs1);
+wave_0_per_point27=yp=yq;
+wave_0_per_point28=zp=zq;
+wave_0_per_point29=
+wave_0_per_point30=//rotate on y axis again
+wave_0_per_point31=axs2 = sin(t1*0.1)*3.3;
+wave_0_per_point32=xq=xp*cos(axs2) - zp*sin(axs2);
+wave_0_per_point33=zq=xp*sin(axs2) + zp*cos(axs2);
+wave_0_per_point34=xp=xq;
+wave_0_per_point35=zp=zq;
+wave_0_per_point36=
+wave_0_per_point37=//stretch y axis to compensate for aspect ratio
+wave_0_per_point38=yp=yp*1.2;
+wave_0_per_point39=
+wave_0_per_point40=//push forward into viewpace
+wave_0_per_point41=zp=zp+2.1;
+wave_0_per_point42=
+wave_0_per_point43=//project x,y,z into screenspace
+wave_0_per_point44=xs=xp/zp;
+wave_0_per_point45=ys=yp/zp;
+wave_0_per_point46=
+wave_0_per_point47=//center 0,0 in middle of screen
+wave_0_per_point48=x=xs+0.5+q4;
+wave_0_per_point49=y=ys+0.5+q5;
+wave_0_per_point50=
+wave_0_per_point51=r=1-q1;
+wave_0_per_point52=g=1-q2;
+wave_0_per_point53=b=1-q3;
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=0
+shapecode_0_sides=23
+shapecode_0_additive=1
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.700000
+shapecode_0_rad=0.154930
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=0.010000
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=y=bass_att*0.5+0.2;
+shape_0_per_frame2=x=cos(time*2)*0.5+0.5;
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=1.801999
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=3.141593
+shapecode_1_tex_zoom=0.572684
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=//ang = ang + (bass*.2) + (time*.4);
+shape_1_per_frame2=//rad=1.781+(bass*0.025);
+shape_1_per_frame3=ang=above(0.5,treb_att)*.063;
+shapecode_2_enabled=0
+shapecode_2_sides=100
+shapecode_2_additive=1
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.900000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=0.010000
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shape_2_per_frame1=x = sin(time*5) * .4 + .5;
+shape_2_per_frame2=y=treb_att*0.5;
+shape_2_per_frame3=
+shape_2_per_frame4=pow( (bass*.15),2);
+shapecode_3_enabled=0
+shapecode_3_sides=100
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=1
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.033004
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=0.010000
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=1.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=1.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=1.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+shape_3_per_frame1=x=.5+(bass*0.07);
+per_frame_1=wave_a = 0;
+per_frame_2=
+per_frame_3=
+per_frame_4=
+per_frame_5=//Thanks to Zylot for rainbow generator
+per_frame_6=counter1 = if(equal(counter2,1),if(equal(counter1,1),0,counter1+.2),1);
+per_frame_7=counter2 = if(equal(counter1,1),if(equal(counter2,1),0,counter2+.2),1);
+per_frame_8=cdelay1 = if(equal(cdelay2,1),1,if(equal(colorcounter%2,1),if(equal(counter1,1),2 ,0), if(equal(counter2,1),2,0)));
+per_frame_9=cdelay2 = if(equal(cdelay1,2),1,0);
+per_frame_10=colorcounter = if(above(colorcounter,7),0,if(equal(cdelay1,1),colorcounter+1,colorcounter));
+per_frame_11=ib_r = .5*if(equal(colorcounter,1),1, if(equal(colorcounter,2),1, if(equal(colorcounter,3),1, if(equal(colorcounter,4),sin(counter2+2.1), if(equal(colorcounter,5),0, if(equal(colorcounter,6),0,sin(counter1)))))));
+per_frame_12=ib_g = .5*if(equal(colorcounter,1),0, if(equal(colorcounter,2),sin(counter2*.5), if(equal(colorcounter,3),sin((counter1+1.75)*.4), if(equal(colorcounter,4),1, if(equal(colorcounter,5),1, if(equal(colorcounter,6),sin(counter2+2),0))))));
+per_frame_13=ib_b = if(equal(colorcounter,1),sin(counter1+2.1), if(equal(colorcounter,2),0, if(equal(colorcounter,3),0, if(equal(colorcounter,4),0, if(equal(colorcounter,5),sin(counter1), if(equal(colorcounter,6),1,1))))));
+per_frame_14=
+per_frame_15=ib_r=tan(time*1);
+per_frame_16=ib_r=min(ib_r,1);
+per_frame_17=ib_r=max(ib_r,0);
+per_frame_18=ib_g=tan(time*1+2.1);
+per_frame_19=ib_g=min(ib_g,1);
+per_frame_20=ib_g=max(ib_g,0);
+per_frame_21=ib_b=tan(time*1+4.2);
+per_frame_22=ib_b=min(ib_b,1);
+per_frame_23=ib_b=max(ib_b,0);
+per_frame_24=
+per_frame_25=ob_r=ib_r-0.5;
+per_frame_26=ob_g=ib_g-0.5;
+per_frame_27=ob_b=ib_b-0.5;
+per_frame_28=q1=ib_r;
+per_frame_29=q2=ib_g;
+per_frame_30=q3=ib_b;
+per_frame_31=
+per_frame_32=
+per_frame_33=
+per_frame_34=decay = 0.9999;
+per_frame_35=
+per_frame_36=
+per_frame_37=//echo_orient=((bass_att+mid_att+treb_att)/3)*3;
+per_frame_38=//solarize=above(0.5,bass);
+per_frame_39=//darken=above(0.4,treb);
+per_frame_40=
+per_frame_41=musictime=musictime+(mid*mid*mid)*0.02;
+per_frame_42=
+per_frame_43=xpos=sin(musictime*0.6)*0.6;
+per_frame_44=ypos=sin(musictime*0.4)*0.6;
+per_frame_45=q4=xpos;
+per_frame_46=q5=ypos;
+per_frame_47=
+per_frame_48=zoom=.98 + min(bass,1)*0.04
+per_frame_49=
+per_pixel_1=//flip= (-2 * above(sin(time),-0.9) )+1;
+per_pixel_2=//var=(bass+mid+treb)/3;
+per_pixel_3=//rot=((ang&rad/rad)/(var*20))/10;
+per_pixel_4=//sx=.99-(var*0.01);
+per_pixel_5=//cx=var*0.1*(ang/12);
+per_pixel_6=//sy=sx;
+per_pixel_7=
+per_pixel_8=//zoom=-1;
+per_pixel_9=sx=-1+(bass*0.2);
+per_pixel_10=sy=-1-(treb*0.2);
+per_pixel_11=
+per_pixel_12=cx=0.5+q4;
+per_pixel_13=cy=0.5-q5;
+per_pixel_14=rd=sqrt( sqr( (x-0.5-q4)*2) + sqr( (y-0.5+q5)*1.5 ) );
+per_pixel_15=//zm=(1.1-(rd/4));
+per_pixel_16=zm=.98;
+per_pixel_17=
+per_pixel_18=ag=atan( (y-0.5+q5)/(x-0.5-q4) );
+per_pixel_19=star=sin(ag*6+time)*((2-rd)-ag)/5;
+per_pixel_20=zm=zm+star/20;
+per_pixel_21=sx=zm;
+per_pixel_22=sy=zm;
+per_pixel_23=//rot=above(rd,0.7)*(rd-0.7)*sin(time*0.3)
diff --git a/InstallerDependencies/Visuals/projectM/presets/Phat_Eo.S._Algorithm.milk b/InstallerDependencies/Visuals/projectM/presets/Phat_Eo.S._Algorithm.milk
new file mode 100644
index 00000000..5f125499
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Phat_Eo.S._Algorithm.milk
@@ -0,0 +1,348 @@
+[preset00]
+fRating=0.000000
+fGammaAdj=1.000000
+fDecay=0.925000
+fVideoEchoZoom=1.001829
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=2
+bAdditiveWaves=1
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=2.850136
+fWaveSmoothing=0.630000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999514
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=12.799995
+nMotionVectorsY=38.400002
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.800001
+mv_r=0.440000
+mv_g=0.650000
+mv_b=0.810000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_per_frame1=basstime=basstime+(bass*bass);
+wave_0_per_frame2=t1=basstime*0.003;
+wave_0_per_frame3=
+wave_0_per_point1=//plot x,y,z to point on circle
+wave_0_per_point2=smp=sample*6.283;
+wave_0_per_point3=xp=sin(smp )*0.20;
+wave_0_per_point4=yp=cos(smp )*0.20;
+wave_0_per_point5=zp=0;
+wave_0_per_point6=
+wave_0_per_point7=
+wave_0_per_point8=//alter shape;
+wave_0_per_point9=angy=sin(sample*6.28*4 +t1 )*6.28;
+wave_0_per_point10=xq=xp*cos(angy) - zp*sin(angy);
+wave_0_per_point11=zq=xp*sin(angy) + zp*cos(angy);
+wave_0_per_point12=xp=xq;
+wave_0_per_point13=zp=zq;
+wave_0_per_point14=
+wave_0_per_point15=
+wave_0_per_point16=//rotate on y axis;
+wave_0_per_point17=angy=t1*0.1;
+wave_0_per_point18=xq=xp*cos(angy) - zp*sin(angy);
+wave_0_per_point19=zq=xp*sin(angy) + zp*cos(angy);
+wave_0_per_point20=xp=xq;
+wave_0_per_point21=zp=zq;
+wave_0_per_point22=
+wave_0_per_point23=//rotate on x axis
+wave_0_per_point24=axs1 = sin(t1*0.15) + 1.6;
+wave_0_per_point25=yq= yp*cos(axs1) - zp*sin(axs1);
+wave_0_per_point26=zq= yp*sin(axs1) + zp*cos(axs1);
+wave_0_per_point27=yp=yq;
+wave_0_per_point28=zp=zq;
+wave_0_per_point29=
+wave_0_per_point30=//rotate on y axis again
+wave_0_per_point31=axs2 = sin(t1*0.1)*3.3;
+wave_0_per_point32=xq=xp*cos(axs2) - zp*sin(axs2);
+wave_0_per_point33=zq=xp*sin(axs2) + zp*cos(axs2);
+wave_0_per_point34=xp=xq;
+wave_0_per_point35=zp=zq;
+wave_0_per_point36=
+wave_0_per_point37=//stretch y axis to compensate for aspect ratio
+wave_0_per_point38=yp=yp*1.2;
+wave_0_per_point39=
+wave_0_per_point40=//push forward into viewpace
+wave_0_per_point41=zp=zp+2.1;
+wave_0_per_point42=
+wave_0_per_point43=//project x,y,z into screenspace
+wave_0_per_point44=xs=xp/zp;
+wave_0_per_point45=ys=yp/zp;
+wave_0_per_point46=
+wave_0_per_point47=//center 0,0 in middle of screen
+wave_0_per_point48=x=xs+0.5+q4;
+wave_0_per_point49=y=ys+0.5+q5;
+wave_0_per_point50=
+wave_0_per_point51=r=1-q1;
+wave_0_per_point52=g=1-q2;
+wave_0_per_point53=b=1-q3;
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=23
+shapecode_0_additive=1
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.700000
+shapecode_0_rad=0.154930
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=0.010000
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=y=bass_att*0.5+0.2;
+shape_0_per_frame2=x=cos(time*2)*0.5+0.5;
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=1.801999
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=3.141593
+shapecode_1_tex_zoom=0.550335
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=//ang = ang + (bass*.2) + (time*.4);
+shape_1_per_frame2=//rad=1.781+(bass*0.025);
+shape_1_per_frame3=ang=above(0.5,treb_att)*.063;
+shapecode_2_enabled=1
+shapecode_2_sides=100
+shapecode_2_additive=1
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.900000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=0.010000
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shape_2_per_frame1=x = sin(time*5) * .4 + .5;
+shape_2_per_frame2=y=treb_att*0.5;
+shape_2_per_frame3=
+shape_2_per_frame4=pow( (bass*.15),2);
+shapecode_3_enabled=1
+shapecode_3_sides=100
+shapecode_3_additive=1
+shapecode_3_thickOutline=0
+shapecode_3_textured=1
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.033004
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=0.010000
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=1.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=1.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=1.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+shape_3_per_frame1=x=.5+(bass*0.07);
+per_frame_1=wave_a = 0;
+per_frame_2=
+per_frame_3=ib_r=tan(time*2);
+per_frame_4=ib_r=min(ib_r,1);
+per_frame_5=ib_r=max(ib_r,0);
+per_frame_6=ib_g=tan(time*2+2.1);
+per_frame_7=ib_g=min(ib_g,1);
+per_frame_8=ib_g=max(ib_g,0);
+per_frame_9=ib_b=tan(time*2+4.2);
+per_frame_10=ib_b=min(ib_b,1);
+per_frame_11=ib_b=max(ib_b,0);
+per_frame_12=//ib_r=1-ib_r;
+per_frame_13=//ib_g=1-ib_g;
+per_frame_14=//ib_b=1-ib_b;
+per_frame_15=
+per_frame_16=ob_r=ib_r-0.5;
+per_frame_17=ob_g=ib_g-0.5;
+per_frame_18=ob_b=ib_b-0.5;
+per_frame_19=q1=ib_r;
+per_frame_20=q2=ib_g;
+per_frame_21=q3=ib_b;
+per_frame_22=
+per_frame_23=
+per_frame_24=
+per_frame_25=decay = 1;
+per_frame_26=
+per_frame_27=
+per_frame_28=//echo_orient=((bass_att+mid_att+treb_att)/3)*3;
+per_frame_29=//solarize=above(0.5,bass);
+per_frame_30=//darken=above(0.4,treb);
+per_frame_31=
+per_frame_32=musictime=musictime+(mid*mid*mid)*0.01;
+per_frame_33=
+per_frame_34=xpos=sin(musictime*0.4)*0.2;
+per_frame_35=ypos=sin(musictime*0.4)*0.2;
+per_frame_36=q4=xpos;
+per_frame_37=q5=ypos
+per_frame_38=
+per_pixel_1=//flip= (-2 * above(sin(time),-0.9) )+1;
+per_pixel_2=//var=(bass+mid+treb)/3;
+per_pixel_3=//rot=((ang&rad/rad)/(var*20))/10;
+per_pixel_4=//sx=.99-(var*0.01);
+per_pixel_5=//cx=var*0.1*(ang/12);
+per_pixel_6=//sy=sx;
+per_pixel_7=
+per_pixel_8=zoom=-.96-(bass*0.03);
+per_pixel_9=
+per_pixel_10=//cx=0.5+q4;
+per_pixel_11=//cy=0.5-q5;
+per_pixel_12=rd=sqrt( sqr( (x-0.5-q4)*2) + sqr( (y-0.5+q5)*1.5 ) );
+per_pixel_13=//zm=(1.1-(rd/4));
+per_pixel_14=zm=1;
+per_pixel_15=
+per_pixel_16=ag=atan( (y-0.5+q5)/(x-0.5-q4) );
+per_pixel_17=star=sin(rd/5)*(2-rd);
+per_pixel_18=zm=zm+star/20;
+per_pixel_19=sx=zm;
+per_pixel_20=sy=zm;
+per_pixel_21=rot=above(rd,0.7)/(rd+7)*(bass_att*0.1)/rd;
+per_pixel_22=dx=sin(y*140)*(bass*0.005)*sin(ag);
+per_pixel_23=dy=cos(x*140)*(bass*0.005)*cos(ag);
+per_pixel_24=
+per_pixel_25=
+per_pixel_26=
+per_pixel_27=sect_a=if ( below(x,0.333), 1, 0 );
+per_pixel_28=sect_b=if ( below(x,0.666), 1, 0 );
+per_pixel_29=sect_b=if ( above(x,0.333), sect_b, 0 );
+per_pixel_30=sect_c=if ( above(x,0.666), 1, 0 );
+per_pixel_31=
+per_pixel_32=cy_a=( bass_att)*q1 + 0.5 +rd-ag;
+per_pixel_33=cy_b=( bass_att)*q2 - 1.2 +ag;
+per_pixel_34=cy_c=( bass_att)*q3 + 0.5 +rd-ag;
+per_pixel_35=
+per_pixel_36=cx=(sect_a*0.166 + sect_b*0.5 + sect_c*0.833)*rd;
+per_pixel_37=cy=(sect_a/cy_a + sect_b/cy_b + sect_c/cy_c)*rd;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Phat_Eo.S_shoot_em_up.milk b/InstallerDependencies/Visuals/projectM/presets/Phat_Eo.S_shoot_em_up.milk
new file mode 100644
index 00000000..312b8eed
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Phat_Eo.S_shoot_em_up.milk
@@ -0,0 +1,395 @@
+[preset00]
+fRating=1.000000
+fGammaAdj=1.420000
+fDecay=0.960000
+fVideoEchoZoom=0.996623
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=1
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=1
+bSolarize=1
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.011726
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=0.010284
+fWarpScale=0.010000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.400000
+wave_b=0.300000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.110000
+ob_g=0.000000
+ob_b=0.100000
+ob_a=0.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=3.000000
+nMotionVectorsY=2.000000
+mv_dx=0.020000
+mv_dy=-0.020000
+mv_l=0.150000
+mv_r=0.490000
+mv_g=0.480000
+mv_b=0.300001
+mv_a=0.000000
+wavecode_0_enabled=1
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=1
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=0.800000
+wavecode_0_b=0.100000
+wavecode_0_a=1.000000
+wave_0_per_point1=n=sample*6.28;
+wave_0_per_point2=
+wave_0_per_point3=xp=sin(n)*.3;
+wave_0_per_point4=yp=cos(n)*.3;
+wave_0_per_point5=zp=0;
+wave_0_per_point6=
+wave_0_per_point7=scale=tan(n*(sin(time/10)*10))*.5+.5;
+wave_0_per_point8=scale=min(scale,(.5+(bass*.5)));
+wave_0_per_point9=scale=max(scale,-.5);
+wave_0_per_point10=
+wave_0_per_point11=xp=xp*scale;
+wave_0_per_point12=yp=yp*scale;
+wave_0_per_point13=
+wave_0_per_point14=zp=max(0.5-min(abs(scale),0.5)*2,0);
+wave_0_per_point15=
+wave_0_per_point16=zp=pow(1-zp,2)*0.25;
+wave_0_per_point17=
+wave_0_per_point18=//rotate on x axis
+wave_0_per_point19=ang=time*0.5;
+wave_0_per_point20=xq=xp;
+wave_0_per_point21=yq=yp*sin(ang) + zp*cos(ang);
+wave_0_per_point22=zq=yp*cos(ang) - zp*sin(ang);
+wave_0_per_point23=
+wave_0_per_point24=//rotate on y axis
+wave_0_per_point25=ang=time;
+wave_0_per_point26=xp=xq*sin(ang) + zq*cos(ang);
+wave_0_per_point27=yp=yq;
+wave_0_per_point28=zp=xq*cos(ang) - zq*sin(ang);
+wave_0_per_point29=
+wave_0_per_point30=
+wave_0_per_point31=//push forward into viewspace
+wave_0_per_point32=zp=zp+1.1;
+wave_0_per_point33=
+wave_0_per_point34=//project into screenspace
+wave_0_per_point35=xs=xp/zp;
+wave_0_per_point36=ys=yp/zp;
+wave_0_per_point37=
+wave_0_per_point38=
+wave_0_per_point39=x=xs+.5;
+wave_0_per_point40=y=ys*1.3+.5;
+wave_0_per_point41=
+wave_0_per_point42=r=(sin(time)*.5+.5)*.5;
+wave_0_per_point43=g=(cos(time/2)*.5+.5)*.8;
+wave_0_per_point44=b=tan(time);
+wavecode_1_enabled=1
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=1
+wavecode_1_bDrawThick=1
+wavecode_1_bAdditive=1
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+wave_1_per_point1=n=sample*6.28;
+wave_1_per_point2=xp=sin(n*32+n)*.07;
+wave_1_per_point3=yp=cos(n*32+n)*.07;
+wave_1_per_point4=zp=0;
+wave_1_per_point5=
+wave_1_per_point6=//rotate on y during waveform draw
+wave_1_per_point7=ang=n*0.5;
+wave_1_per_point8=xr=xp*sin(ang) + zp*cos(ang);
+wave_1_per_point9=yr=yp;
+wave_1_per_point10=zr=xp*cos(ang) - zp*sin(ang);
+wave_1_per_point11=zr=zr-0.3;
+wave_1_per_point12=
+wave_1_per_point13=
+wave_1_per_point14=//rotate on x axis
+wave_1_per_point15=ang=time*0.5;
+wave_1_per_point16=xq=xr;
+wave_1_per_point17=yq=yr*sin(ang) + zr*cos(ang);
+wave_1_per_point18=zq=yr*cos(ang) - zr*sin(ang);
+wave_1_per_point19=
+wave_1_per_point20=//rotate on y axis
+wave_1_per_point21=ang=time;
+wave_1_per_point22=xp=xq*sin(ang) + zq*cos(ang);
+wave_1_per_point23=yp=yq;
+wave_1_per_point24=zp=xq*cos(ang) - zq*sin(ang);
+wave_1_per_point25=
+wave_1_per_point26=
+wave_1_per_point27=//push forward into viewspace
+wave_1_per_point28=zp=zp+1.1;
+wave_1_per_point29=
+wave_1_per_point30=//project into screenspace
+wave_1_per_point31=xs=xp/zp;
+wave_1_per_point32=ys=yp/zp;
+wave_1_per_point33=
+wave_1_per_point34=
+wave_1_per_point35=x=xs+.5;
+wave_1_per_point36=y=ys*1.3+.5;
+wave_1_per_point37=
+wave_1_per_point38=g=(cos(time)*.5+.5)*.5;
+wave_1_per_point39=b=(sin(time/2)*.5+.5)*.8;
+wave_1_per_point40=r=tan(time);
+wavecode_2_enabled=1
+wavecode_2_samples=512
+wavecode_2_sep=0
+wavecode_2_bSpectrum=0
+wavecode_2_bUseDots=0
+wavecode_2_bDrawThick=0
+wavecode_2_bAdditive=1
+wavecode_2_scaling=1.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wave_2_per_point1=n=sample*6.28;
+wave_2_per_point2=xp=sin(n*32)*.03;
+wave_2_per_point3=yp=cos(n*32)*.03;
+wave_2_per_point4=zp=0;
+wave_2_per_point5=
+wave_2_per_point6=scale=sin(n*32*6)*0.5+0.5;
+wave_2_per_point7=scale=scale*(sin(n*6)*0.5+0.5);
+wave_2_per_point8=scale=scale*mid_att*mid_att*0.5;
+wave_2_per_point9=xp=xp*(1+scale);
+wave_2_per_point10=yp=yp*(1+scale);
+wave_2_per_point11=
+wave_2_per_point12=//rotate on y during waveform draw
+wave_2_per_point13=ang=n*0.5;
+wave_2_per_point14=xr=xp*sin(ang) + zp*cos(ang);
+wave_2_per_point15=yr=yp;
+wave_2_per_point16=zr=xp*cos(ang) - zp*sin(ang);
+wave_2_per_point17=xr=xr+0.11;
+wave_2_per_point18=
+wave_2_per_point19=//orbit rotation
+wave_2_per_point20=ang=time*4;
+wave_2_per_point21=xp=xr*sin(ang) + zr*cos(ang);
+wave_2_per_point22=yp=yr;
+wave_2_per_point23=zp=xr*cos(ang) - zr*sin(ang);
+wave_2_per_point24=
+wave_2_per_point25=
+wave_2_per_point26=
+wave_2_per_point27=
+wave_2_per_point28=zp=zp-0.3;
+wave_2_per_point29=
+wave_2_per_point30=
+wave_2_per_point31=//rotate on x axis
+wave_2_per_point32=ang=time*0.5;
+wave_2_per_point33=xq=xp;
+wave_2_per_point34=yq=yp*sin(ang) + zp*cos(ang);
+wave_2_per_point35=zq=yp*cos(ang) - zp*sin(ang);
+wave_2_per_point36=
+wave_2_per_point37=//rotate on y axis
+wave_2_per_point38=ang=time;
+wave_2_per_point39=xp=xq*sin(ang) + zq*cos(ang);
+wave_2_per_point40=yp=yq;
+wave_2_per_point41=zp=xq*cos(ang) - zq*sin(ang);
+wave_2_per_point42=
+wave_2_per_point43=
+wave_2_per_point44=//push forward into viewspace
+wave_2_per_point45=zp=zp+1.1;
+wave_2_per_point46=
+wave_2_per_point47=//project into screenspace
+wave_2_per_point48=xs=xp/zp;
+wave_2_per_point49=ys=yp/zp;
+wave_2_per_point50=
+wave_2_per_point51=
+wave_2_per_point52=x=xs+.5;
+wave_2_per_point53=y=ys*1.3+.5;
+wave_2_per_point54=
+wave_2_per_point55=g=(cos(time)*.5+.5)*.5;
+wave_2_per_point56=r=(cos(time/2)*.5+.5)*.8;
+wave_2_per_point57=b=tan(time);
+wavecode_3_enabled=1
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=1
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=1
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=0.300000
+wavecode_3_g=0.700000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+wave_3_per_point1=n=sample*6.28;
+wave_3_per_point2=ends=sin(sample*3.1415);
+wave_3_per_point3=xp=value1*4*ends;
+wave_3_per_point4=yp=value2*4*ends;
+wave_3_per_point5=zp=-0.23 + sample*0.3;
+wave_3_per_point6=
+wave_3_per_point7=//rotate on x axis
+wave_3_per_point8=ang=time*0.5;
+wave_3_per_point9=xq=xp;
+wave_3_per_point10=yq=yp*sin(ang) + zp*cos(ang);
+wave_3_per_point11=zq=yp*cos(ang) - zp*sin(ang);
+wave_3_per_point12=
+wave_3_per_point13=//rotate on y axis
+wave_3_per_point14=ang=time;
+wave_3_per_point15=xp=xq*sin(ang) + zq*cos(ang);
+wave_3_per_point16=yp=yq;
+wave_3_per_point17=zp=xq*cos(ang) - zq*sin(ang);
+wave_3_per_point18=
+wave_3_per_point19=
+wave_3_per_point20=//push forward into viewspace
+wave_3_per_point21=zp=zp+1.1;
+wave_3_per_point22=
+wave_3_per_point23=//project into screenspace
+wave_3_per_point24=xs=xp/zp;
+wave_3_per_point25=ys=yp/zp;
+wave_3_per_point26=
+wave_3_per_point27=
+wave_3_per_point28=x=xs+.5;
+wave_3_per_point29=y=ys*1.3+.5;
+wave_3_per_point30=
+wave_3_per_point31=a=max(treb-1,0)*2
+shapecode_0_enabled=0
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.100000
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.100000
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_init_1=mv_x=64;mv_y=48;
+per_frame_init_2=nut=0;
+per_frame_init_3=stp=0;stq=0;
+per_frame_init_4=rtp=0;rtq=0;
+per_frame_init_5=wvr=0;
+per_frame_init_6=decay=0;
+per_frame_init_7=dcsp=0
+per_frame_init_8=
+per_frame_1=decay=0.97;
+per_frame_2=zoom=1.000;
+per_frame_3=sx=1.005;
+per_frame_4=sy=1.001
+per_frame_5=
+per_frame_6=
+per_frame_7=
+per_frame_8=
diff --git a/InstallerDependencies/Visuals/projectM/presets/Phat_Rovastar - What_does_your_soul_look_like.milk b/InstallerDependencies/Visuals/projectM/presets/Phat_Rovastar - What_does_your_soul_look_like.milk
new file mode 100644
index 00000000..ec4f23a8
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Phat_Rovastar - What_does_your_soul_look_like.milk
@@ -0,0 +1,260 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=0.999609
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=1
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.800000
+fWaveScale=1.605000
+fWaveSmoothing=0.700000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.064000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=0.990099
+sy=0.990099
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=1.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=13
+shapecode_0_additive=0
+shapecode_0_thickOutline=1
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.555908
+shapecode_0_ang=1.696460
+shapecode_0_tex_ang=1.633629
+shapecode_0_tex_zoom=1.160965
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=0.100000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=//r = 0.5+0.25*sin(time*0.567)+0.25*sin(time*0.673);
+shape_0_per_frame2=//b = 0.5+0.25*sin(time*0.617)+0.25*sin(time*0.493);
+shape_0_per_frame3=//= 0.5+0.25*sin(time*0.771)+0.25*sin(time*0.317);
+shape_0_per_frame4=//2 = 0.5+0.25*sin(time*0.417)+0.25*sin(time*0.773);
+shape_0_per_frame5=//b2 = 0.5+0.25*sin(time*0.663)+0.25*sin(time*0.893);
+shape_0_per_frame6=//g2 = 0.5+0.25*sin(time*0.317)+0.25*sin(time*0.327);
+shape_0_per_frame7=//ang = q1;
+shape_0_per_frame8=//x = 0.5 + 0.1*sin(q1*1.432)+0.1*sin(q1*0.342);
+shape_0_per_frame9=//y= 0.5 + 0.1*sin(q1*1.311)+0.1*sin(q1*0.394);
+shape_0_per_frame10=a=sin(time)*0.5+0.5;
+shapecode_1_enabled=1
+shapecode_1_sides=3
+shapecode_1_additive=0
+shapecode_1_thickOutline=1
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=1.232284
+shapecode_1_ang=2.324779
+shapecode_1_tex_ang=4.712390
+shapecode_1_tex_zoom=0.236264
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=0.500000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=0.100000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=0.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=//r = 0.5+0.25*sin(time*0.567)+0.25*sin(time*0.673);
+shape_1_per_frame2=//b = 0.5+0.25*sin(time*0.617)+0.25*sin(time*0.493);
+shape_1_per_frame3=//= 0.5+0.25*sin(time*0.771)+0.25*sin(time*0.317);
+shape_1_per_frame4=//2 = 0.5+0.25*sin(time*0.417)+0.25*sin(time*0.773);
+shape_1_per_frame5=//b2 = 0.5+0.25*sin(time*0.663)+0.25*sin(time*0.893);
+shape_1_per_frame6=//g2 = 0.5+0.25*sin(time*0.317)+0.25*sin(time*0.327);
+shape_1_per_frame7=ang = q1 + 3.1415;
+shape_1_per_frame8=//x = 0.5 + 0.1*sin(q1*1.432)+0.1*sin(q1*0.342);
+shape_1_per_frame9=//y= 0.5 + 0.1*sin(q1*1.311)+0.1*sin(q1*0.394);
+shapecode_2_enabled=0
+shapecode_2_sides=3
+shapecode_2_additive=0
+shapecode_2_thickOutline=1
+shapecode_2_textured=1
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.503257
+shapecode_2_ang=1.696460
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=0.741923
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=0.500000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=0.500000
+shapecode_2_border_r=0.000000
+shapecode_2_border_g=0.500000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=1.000000
+shape_2_per_frame1=//r = 0.5+0.25*sin(time*0.567)+0.25*sin(time*0.673);
+shape_2_per_frame2=//b = 0.5+0.25*sin(time*0.617)+0.25*sin(time*0.493);
+shape_2_per_frame3=//= 0.5+0.25*sin(time*0.771)+0.25*sin(time*0.317);
+shape_2_per_frame4=//2 = 0.5+0.25*sin(time*0.417)+0.25*sin(time*0.773);
+shape_2_per_frame5=//b2 = 0.5+0.25*sin(time*0.663)+0.25*sin(time*0.893);
+shape_2_per_frame6=//g2 = 0.5+0.25*sin(time*0.317)+0.25*sin(time*0.327);
+shape_2_per_frame7=ang = q1+ 3.1415*0.5;
+shape_2_per_frame8=x = 0.5 + 0.1*sin(q1*1.432)+0.1*sin(q1*0.342);
+shape_2_per_frame9=y= 0.5 + 0.1*sin(q1*1.311)+0.1*sin(q1*0.394);
+shapecode_3_enabled=0
+shapecode_3_sides=3
+shapecode_3_additive=0
+shapecode_3_thickOutline=1
+shapecode_3_textured=1
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.503257
+shapecode_3_ang=1.696460
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=0.671653
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=1.000000
+shapecode_3_a=0.500000
+shapecode_3_r2=1.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=1.000000
+shapecode_3_a2=0.500000
+shapecode_3_border_r=0.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=1.000000
+shape_3_per_frame1=//r = 0.5+0.25*sin(time*0.567)+0.25*sin(time*0.673);
+shape_3_per_frame2=//b = 0.5+0.25*sin(time*0.617)+0.25*sin(time*0.493);
+shape_3_per_frame3=//= 0.5+0.25*sin(time*0.771)+0.25*sin(time*0.317);
+shape_3_per_frame4=//2 = 0.5+0.25*sin(time*0.417)+0.25*sin(time*0.773);
+shape_3_per_frame5=//b2 = 0.5+0.25*sin(time*0.663)+0.25*sin(time*0.893);
+shape_3_per_frame6=//g2 = 0.5+0.25*sin(time*0.317)+0.25*sin(time*0.327);
+shape_3_per_frame7=ang = q1 - 3.1415*0.5;
+shape_3_per_frame8=x = 0.5 + 0.1*sin(q1*1.432)+0.1*sin(q1*0.342);
+shape_3_per_frame9=y= 0.5 + 0.1*sin(q1*1.311)+0.1*sin(q1*0.394);
+per_frame_1=ib_r = 0.5 + (5.499*( 0.60*sin(0.933*time/3) + 0.40*sin(1.045*time/3) ));
+per_frame_2=ib_g = 0.5 + (5*( 0.60*sin(0.900*time/3) + 0.40*sin(0.956*time/3) ));
+per_frame_3=ib_b = 0.5 + (5.499*( 0.60*sin(0.910*time/3) + 0.40*sin(0.920*time/3) ));
+per_frame_4=wave_a=0;
+per_frame_5=decay =1;
+per_frame_6=zoom =1;
+per_frame_7=rot=0;
+per_frame_8=warp=0;
+per_frame_9=q1 = oldq1+0.005*(bass+bass_att+(bass*bass_att)-1);
+per_frame_10=oldq1 = below(q1,30000)*q1;
+per_frame_11=monitor =q1;
+per_pixel_1=//dx=0.003*(bass*bass+bass_att)*sin((sin(sqrt(4)-rad))*5+(rad*5*sin(q1)))*y*ang;
+per_pixel_2=//dy=0.003*(bass*bass+bass_att)*cos((sin(sqrt(4)-rad))*5+(-rad*5*sin(q1)))*x*rad*ang;
+per_pixel_3=
+per_pixel_4=rot=(sin(time/2)*x)/(atan(time*2)/(ang/3)/x);
+per_pixel_5=warp=(sin(time*9)*y)/(atan(time/2)/rad/y)
diff --git a/InstallerDependencies/Visuals/projectM/presets/Phat_Rovastar_Eo.S. spiral_faces.milk b/InstallerDependencies/Visuals/projectM/presets/Phat_Rovastar_Eo.S. spiral_faces.milk
new file mode 100644
index 00000000..ebc9877f
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Phat_Rovastar_Eo.S. spiral_faces.milk
@@ -0,0 +1,345 @@
+[preset00]
+fRating=0.000000
+fGammaAdj=1.000000
+fDecay=0.925000
+fVideoEchoZoom=1.001829
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=2
+bAdditiveWaves=1
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=2.850136
+fWaveSmoothing=0.630000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999514
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=12.799995
+nMotionVectorsY=38.400002
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.800001
+mv_r=0.440000
+mv_g=0.650000
+mv_b=0.810000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=1
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_per_frame1=basstime=basstime+(bass*bass);
+wave_0_per_frame2=t1=basstime*0.003;
+wave_0_per_frame3=
+wave_0_per_point1=//plot x,y,z to point on circle
+wave_0_per_point2=smp=sample*6.283;
+wave_0_per_point3=xp=sin(smp )*0.20;
+wave_0_per_point4=yp=cos(smp )*0.20;
+wave_0_per_point5=zp=0;
+wave_0_per_point6=
+wave_0_per_point7=
+wave_0_per_point8=//alter shape;
+wave_0_per_point9=angy=sin(sample*6.28*4 +t1 )*6.28;
+wave_0_per_point10=xq=xp*cos(angy) - zp*sin(angy);
+wave_0_per_point11=zq=xp*sin(angy) + zp*cos(angy);
+wave_0_per_point12=xp=xq;
+wave_0_per_point13=zp=zq;
+wave_0_per_point14=
+wave_0_per_point15=
+wave_0_per_point16=//rotate on y axis;
+wave_0_per_point17=angy=t1*0.1;
+wave_0_per_point18=xq=xp*cos(angy) - zp*sin(angy);
+wave_0_per_point19=zq=xp*sin(angy) + zp*cos(angy);
+wave_0_per_point20=xp=xq;
+wave_0_per_point21=zp=zq;
+wave_0_per_point22=
+wave_0_per_point23=//rotate on x axis
+wave_0_per_point24=axs1 = sin(t1*0.15) + 1.6;
+wave_0_per_point25=yq= yp*cos(axs1) - zp*sin(axs1);
+wave_0_per_point26=zq= yp*sin(axs1) + zp*cos(axs1);
+wave_0_per_point27=yp=yq;
+wave_0_per_point28=zp=zq;
+wave_0_per_point29=
+wave_0_per_point30=//rotate on y axis again
+wave_0_per_point31=axs2 = sin(t1*0.1)*3.3;
+wave_0_per_point32=xq=xp*cos(axs2) - zp*sin(axs2);
+wave_0_per_point33=zq=xp*sin(axs2) + zp*cos(axs2);
+wave_0_per_point34=xp=xq;
+wave_0_per_point35=zp=zq;
+wave_0_per_point36=
+wave_0_per_point37=//stretch y axis to compensate for aspect ratio
+wave_0_per_point38=yp=yp*1.2;
+wave_0_per_point39=
+wave_0_per_point40=//push forward into viewpace
+wave_0_per_point41=zp=zp+2.1;
+wave_0_per_point42=
+wave_0_per_point43=//project x,y,z into screenspace
+wave_0_per_point44=xs=xp/zp;
+wave_0_per_point45=ys=yp/zp;
+wave_0_per_point46=
+wave_0_per_point47=//center 0,0 in middle of screen
+wave_0_per_point48=x=xs+0.5+q4;
+wave_0_per_point49=y=ys+0.5+q5;
+wave_0_per_point50=
+wave_0_per_point51=r=1-q1;
+wave_0_per_point52=g=1-q2;
+wave_0_per_point53=b=1-q3;
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=0
+shapecode_0_sides=23
+shapecode_0_additive=1
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.700000
+shapecode_0_rad=0.154930
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=0.010000
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=y=bass_att*0.5+0.2;
+shape_0_per_frame2=x=cos(time*2)*0.5+0.5;
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=1.801999
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=3.141593
+shapecode_1_tex_zoom=0.572684
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=//ang = ang + (bass*.2) + (time*.4);
+shape_1_per_frame2=//rad=1.781+(bass*0.025);
+shape_1_per_frame3=ang=above(0.5,treb_att)*.063;
+shapecode_2_enabled=0
+shapecode_2_sides=100
+shapecode_2_additive=1
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.900000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=0.010000
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shape_2_per_frame1=x = sin(time*5) * .4 + .5;
+shape_2_per_frame2=y=treb_att*0.5;
+shape_2_per_frame3=
+shape_2_per_frame4=pow( (bass*.15),2);
+shapecode_3_enabled=0
+shapecode_3_sides=100
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=1
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.033004
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=0.010000
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=1.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=1.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=1.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+shape_3_per_frame1=x=.5+(bass*0.07);
+per_frame_1=wave_a = 0;
+per_frame_2=
+per_frame_3=
+per_frame_4=
+per_frame_5=//Thanks to Zylot for rainbow generator
+per_frame_6=counter1 = if(equal(counter2,1),if(equal(counter1,1),0,counter1+.2),1);
+per_frame_7=counter2 = if(equal(counter1,1),if(equal(counter2,1),0,counter2+.2),1);
+per_frame_8=cdelay1 = if(equal(cdelay2,1),1,if(equal(colorcounter%2,1),if(equal(counter1,1),2 ,0), if(equal(counter2,1),2,0)));
+per_frame_9=cdelay2 = if(equal(cdelay1,2),1,0);
+per_frame_10=colorcounter = if(above(colorcounter,7),0,if(equal(cdelay1,1),colorcounter+1,colorcounter));
+per_frame_11=ib_r = .5*if(equal(colorcounter,1),1, if(equal(colorcounter,2),1, if(equal(colorcounter,3),1, if(equal(colorcounter,4),sin(counter2+2.1), if(equal(colorcounter,5),0, if(equal(colorcounter,6),0,sin(counter1)))))));
+per_frame_12=ib_g = .5*if(equal(colorcounter,1),0, if(equal(colorcounter,2),sin(counter2*.5), if(equal(colorcounter,3),sin((counter1+1.75)*.4), if(equal(colorcounter,4),1, if(equal(colorcounter,5),1, if(equal(colorcounter,6),sin(counter2+2),0))))));
+per_frame_13=ib_b = if(equal(colorcounter,1),sin(counter1+2.1), if(equal(colorcounter,2),0, if(equal(colorcounter,3),0, if(equal(colorcounter,4),0, if(equal(colorcounter,5),sin(counter1), if(equal(colorcounter,6),1,1))))));
+per_frame_14=
+per_frame_15=
+per_frame_16=
+per_frame_17=//ob_r=ib_r-0.5;
+per_frame_18=//ob_g=ib_g-0.5;
+per_frame_19=//ob_b=ib_b-0.5;
+per_frame_20=q1=ib_r;
+per_frame_21=q2=ib_g;
+per_frame_22=q3=ib_b;
+per_frame_23=
+per_frame_24=
+per_frame_25=
+per_frame_26=decay = 1;
+per_frame_27=
+per_frame_28=
+per_frame_29=//echo_orient=((bass_att+mid_att+treb_att)/3)*3;
+per_frame_30=//solarize=above(0.5,bass);
+per_frame_31=//darken=above(0.4,treb);
+per_frame_32=
+per_frame_33=musictime=musictime+(mid*mid*mid)*0.02;
+per_frame_34=
+per_frame_35=xpos=sin(musictime*0.6)*0.3;
+per_frame_36=ypos=sin(musictime*0.4)*0.3;
+per_frame_37=q4=xpos;
+per_frame_38=q5=ypos;
+per_frame_39=
+per_frame_40=ob_r = 0.3 - 0.3*(0.5*sin(time*0.701)+ 0.3*cos(time*0.438));
+per_frame_41=ob_g = 0.6- 0.4*sin(time*2.924);
+per_frame_42=ob_b = 0.35 - 0.3*cos(time*0.816);
+per_frame_43=// = cx - 0.1*sin(time*0.342);
+per_frame_44=// = cy + 0.1*sin(time*0.433);
+per_frame_45=//warp =0;
+per_frame_46=ib_size = 0.02;
+per_frame_47=ib_r = ib_r + 0.5*sin(time*3.034);
+per_frame_48=ib_g = ib_g + 0.5*sin(time*2.547);
+per_frame_49=ib_b = ib_b - 0.5*sin(time*1.431);
+per_pixel_1=//flip= (-2 * above(sin(time),-0.9) )+1;
+per_pixel_2=//var=(bass+mid+treb)/3;
+per_pixel_3=//rot=((ang&rad/rad)/(var*20))/10;
+per_pixel_4=//sx=.99-(var*0.01);
+per_pixel_5=//cx=var*0.1*(ang/12);
+per_pixel_6=//sy=sx;
+per_pixel_7=
+per_pixel_8=zoom=.99;
+per_pixel_9=
+per_pixel_10=cx=0.5+q4;
+per_pixel_11=cy=0.5-q5;
+per_pixel_12=rd=sqrt( sqr( (x-0.5-q4)*2) + sqr( (y-0.5+q5)*1.5 ) );
+per_pixel_13=//zm=(1.1-(rd/4));
+per_pixel_14=zm=.99;
+per_pixel_15=
+per_pixel_16=ag=atan( (y-0.5+q5)/(x-0.5-q4) );
+per_pixel_17=star=sin(ag/5)*(2-rd);
+per_pixel_18=zm=zm+star/20;
+per_pixel_19=sx=zm;
+per_pixel_20=sy=zm;
+per_pixel_21=//rot=above(rd,0.7)/(rd+7)*(bass_att*0.1)/rd;
+per_pixel_22=dx=sin(y*100)*(bass*0.005)*ag/(rd*5);
+per_pixel_23=dy=cos(x*100)*(bass*0.005)*ag/(rd*5);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Phat_Zylot_Eo.S. spiral_faces_multi colour_ThisIsJustNotResponsible =).milk b/InstallerDependencies/Visuals/projectM/presets/Phat_Zylot_Eo.S. spiral_faces_multi colour_ThisIsJustNotResponsible =).milk
new file mode 100644
index 00000000..7c387beb
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Phat_Zylot_Eo.S. spiral_faces_multi colour_ThisIsJustNotResponsible =).milk
@@ -0,0 +1,339 @@
+[preset00]
+fRating=0.000000
+fGammaAdj=1.000000
+fDecay=0.925000
+fVideoEchoZoom=1.001829
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=2
+bAdditiveWaves=1
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=1
+bDarken=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=2.850136
+fWaveSmoothing=0.630000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999514
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=12.799995
+nMotionVectorsY=38.400002
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.800001
+mv_r=0.440000
+mv_g=0.650000
+mv_b=0.810000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=1
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_per_frame1=basstime=basstime+(bass*bass);
+wave_0_per_frame2=t1=basstime*0.003;
+wave_0_per_frame3=
+wave_0_per_point1=//plot x,y,z to point on circle
+wave_0_per_point2=smp=sample*6.283;
+wave_0_per_point3=xp=sin(smp )*0.20;
+wave_0_per_point4=yp=cos(smp )*0.20;
+wave_0_per_point5=zp=0;
+wave_0_per_point6=
+wave_0_per_point7=
+wave_0_per_point8=//alter shape;
+wave_0_per_point9=angy=sin(sample*6.28*4 +t1 )*6.28;
+wave_0_per_point10=xq=xp*cos(angy) - zp*sin(angy);
+wave_0_per_point11=zq=xp*sin(angy) + zp*cos(angy);
+wave_0_per_point12=xp=xq;
+wave_0_per_point13=zp=zq;
+wave_0_per_point14=
+wave_0_per_point15=
+wave_0_per_point16=//rotate on y axis;
+wave_0_per_point17=angy=t1*0.1;
+wave_0_per_point18=xq=xp*cos(angy) - zp*sin(angy);
+wave_0_per_point19=zq=xp*sin(angy) + zp*cos(angy);
+wave_0_per_point20=xp=xq;
+wave_0_per_point21=zp=zq;
+wave_0_per_point22=
+wave_0_per_point23=//rotate on x axis
+wave_0_per_point24=axs1 = sin(t1*0.15) + 1.6;
+wave_0_per_point25=yq= yp*cos(axs1) - zp*sin(axs1);
+wave_0_per_point26=zq= yp*sin(axs1) + zp*cos(axs1);
+wave_0_per_point27=yp=yq;
+wave_0_per_point28=zp=zq;
+wave_0_per_point29=
+wave_0_per_point30=//rotate on y axis again
+wave_0_per_point31=axs2 = sin(t1*0.1)*3.3;
+wave_0_per_point32=xq=xp*cos(axs2) - zp*sin(axs2);
+wave_0_per_point33=zq=xp*sin(axs2) + zp*cos(axs2);
+wave_0_per_point34=xp=xq;
+wave_0_per_point35=zp=zq;
+wave_0_per_point36=
+wave_0_per_point37=//stretch y axis to compensate for aspect ratio
+wave_0_per_point38=yp=yp*1.2;
+wave_0_per_point39=
+wave_0_per_point40=//push forward into viewpace
+wave_0_per_point41=zp=zp+2.1;
+wave_0_per_point42=
+wave_0_per_point43=//project x,y,z into screenspace
+wave_0_per_point44=xs=xp/zp;
+wave_0_per_point45=ys=yp/zp;
+wave_0_per_point46=
+wave_0_per_point47=//center 0,0 in middle of screen
+wave_0_per_point48=x=xs+0.5+q4;
+wave_0_per_point49=y=ys+0.5+q5;
+wave_0_per_point50=
+wave_0_per_point51=r=1-q1;
+wave_0_per_point52=g=1-q2;
+wave_0_per_point53=b=1-q3;
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=0
+shapecode_0_sides=23
+shapecode_0_additive=1
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.700000
+shapecode_0_rad=0.154930
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=0.010000
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=y=bass_att*0.5+0.2;
+shape_0_per_frame2=x=cos(time*2)*0.5+0.5;
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=1.801999
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=3.141593
+shapecode_1_tex_zoom=0.572684
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=//ang = ang + (bass*.2) + (time*.4);
+shape_1_per_frame2=//rad=1.781+(bass*0.025);
+shape_1_per_frame3=ang=above(0.5,treb_att)*.063;
+shapecode_2_enabled=0
+shapecode_2_sides=100
+shapecode_2_additive=1
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.900000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=0.010000
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shape_2_per_frame1=x = sin(time*5) * .4 + .5;
+shape_2_per_frame2=y=treb_att*0.5;
+shape_2_per_frame3=
+shape_2_per_frame4=pow( (bass*.15),2);
+shapecode_3_enabled=0
+shapecode_3_sides=100
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=1
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.033004
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=0.010000
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=1.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=1.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=1.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+shape_3_per_frame1=x=.5+(bass*0.07);
+per_frame_1=wave_a = 0;
+per_frame_2=
+per_frame_3=
+per_frame_4=
+per_frame_5=//Thanks to Zylot for rainbow generator
+per_frame_6=counter1 = if(equal(counter2,1),if(equal(counter1,1),0,counter1+.2),1);
+per_frame_7=counter2 = if(equal(counter1,1),if(equal(counter2,1),0,counter2+.2),1);
+per_frame_8=cdelay1 = if(equal(cdelay2,1),1,if(equal(colorcounter%2,1),if(equal(counter1,1),2 ,0), if(equal(counter2,1),2,0)));
+per_frame_9=cdelay2 = if(equal(cdelay1,2),1,0);
+per_frame_10=colorcounter = if(above(colorcounter,7),0,if(equal(cdelay1,1),colorcounter+1,colorcounter));
+per_frame_11=ib_r = .5*if(equal(colorcounter,1),1, if(equal(colorcounter,2),1, if(equal(colorcounter,3),1, if(equal(colorcounter,4),sin(counter2+2.1), if(equal(colorcounter,5),0, if(equal(colorcounter,6),0,sin(counter1)))))));
+per_frame_12=ib_g = .5*if(equal(colorcounter,1),0, if(equal(colorcounter,2),sin(counter2*.5), if(equal(colorcounter,3),sin((counter1+1.75)*.4), if(equal(colorcounter,4),1, if(equal(colorcounter,5),1, if(equal(colorcounter,6),sin(counter2+2),0))))));
+per_frame_13=ib_b = if(equal(colorcounter,1),sin(counter1+2.1), if(equal(colorcounter,2),0, if(equal(colorcounter,3),0, if(equal(colorcounter,4),0, if(equal(colorcounter,5),sin(counter1), if(equal(colorcounter,6),1,1))))));
+per_frame_14=
+per_frame_15=
+per_frame_16=
+per_frame_17=//ob_r=ib_r-0.5;
+per_frame_18=//ob_g=ib_g-0.5;
+per_frame_19=//ob_b=ib_b-0.5;
+per_frame_20=//q1=ib_r;
+per_frame_21=//q2=ib_g;
+per_frame_22=//q3=ib_b;
+per_frame_23=
+per_frame_24=
+per_frame_25=
+per_frame_26=decay = 1;
+per_frame_27=
+per_frame_28=
+per_frame_29=//echo_orient=((bass_att+mid_att+treb_att)/3)*3;
+per_frame_30=//solarize=above(0.5,bass);
+per_frame_31=//darken=above(0.4,treb);
+per_frame_32=
+per_frame_33=musictime=musictime+(mid*mid*mid)*0.02;
+per_frame_34=
+per_frame_35=xpos=sin(musictime*0.6)*0.3;
+per_frame_36=ypos=sin(musictime*0.4)*0.3;
+per_frame_37=q4=xpos;
+per_frame_38=q5=ypos;
+per_frame_39=
+per_frame_40=ob_r = ob_r + 0.5*sin(time*1.13);
+per_frame_41=ob_g = ob_g + 0.5*sin(time*1.23);
+per_frame_42=ob_b = ob_b + 0.5*sin(time*1.33);
+per_frame_43=invert=above(sin(time*200),0.5);
+per_pixel_1=//flip= (-2 * above(sin(time),-0.9) )+1;
+per_pixel_2=//var=(bass+mid+treb)/3;
+per_pixel_3=//rot=((ang&rad/rad)/(var*20))/10;
+per_pixel_4=//sx=.99-(var*0.01);
+per_pixel_5=//cx=var*0.1*(ang/12);
+per_pixel_6=//sy=sx;
+per_pixel_7=
+per_pixel_8=zoom=.99;
+per_pixel_9=
+per_pixel_10=cx=0.5+q4;
+per_pixel_11=cy=0.5-q5;
+per_pixel_12=rd=sqrt( sqr( (x-0.5-q4)*2) + sqr( (y-0.5+q5)*1.5 ) );
+per_pixel_13=//zm=(1.1-(rd/4));
+per_pixel_14=zm=.99;
+per_pixel_15=
+per_pixel_16=ag=atan( (y-0.5+q5)/(x-0.5-q4) );
+per_pixel_17=star=sin(ag/5)*(2-rd);
+per_pixel_18=zm=zm+star/20;
+per_pixel_19=sx=zm;
+per_pixel_20=sy=zm;
+per_pixel_21=//rot=above(rd,0.7)/(rd+7)*(bass_att*0.1)/rd;
+per_pixel_22=dx=sin(y*100)*(bass*0.005)*ag/(rd*5);
+per_pixel_23=dy=cos(x*100)*(bass*0.005)*ag/(rd*5);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Phat_Zylot_Eo.S._Krash I_hope_someone_will_see_this_triping_v2b.milk b/InstallerDependencies/Visuals/projectM/presets/Phat_Zylot_Eo.S._Krash I_hope_someone_will_see_this_triping_v2b.milk
new file mode 100644
index 00000000..1e12133d
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Phat_Zylot_Eo.S._Krash I_hope_someone_will_see_this_triping_v2b.milk
@@ -0,0 +1,351 @@
+[preset00]
+fRating=0.000000
+fGammaAdj=1.000000
+fDecay=0.925000
+fVideoEchoZoom=1.001829
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=2
+bAdditiveWaves=1
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=2.850136
+fWaveSmoothing=0.630000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999514
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=63.936001
+nMotionVectorsY=47.952000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=0.200000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_per_frame1=basstime=basstime+(bass*bass);
+wave_0_per_frame2=t1=basstime*0.003;
+wave_0_per_frame3=
+wave_0_per_point1=//plot x,y,z to point on circle
+wave_0_per_point2=smp=sample*6.283;
+wave_0_per_point3=xp=sin(smp )*0.05;
+wave_0_per_point4=yp=cos(smp )*0.05;
+wave_0_per_point5=zp=0;
+wave_0_per_point6=
+wave_0_per_point7=
+wave_0_per_point8=//alter shape;
+wave_0_per_point9=angy=sin(sample*6.28*4 +t1 )*6.28;
+wave_0_per_point10=xq=xp*cos(angy) - zp*sin(angy);
+wave_0_per_point11=zq=xp*sin(angy) + zp*cos(angy);
+wave_0_per_point12=xp=xq;
+wave_0_per_point13=zp=zq;
+wave_0_per_point14=
+wave_0_per_point15=
+wave_0_per_point16=//rotate on y axis;
+wave_0_per_point17=angy=t1*0.1;
+wave_0_per_point18=xq=xp*cos(angy) - zp*sin(angy);
+wave_0_per_point19=zq=xp*sin(angy) + zp*cos(angy);
+wave_0_per_point20=xp=xq;
+wave_0_per_point21=zp=zq;
+wave_0_per_point22=
+wave_0_per_point23=//rotate on x axis
+wave_0_per_point24=axs1 = sin(t1*0.15) + 1.6;
+wave_0_per_point25=yq= yp*cos(axs1) - zp*sin(axs1);
+wave_0_per_point26=zq= yp*sin(axs1) + zp*cos(axs1);
+wave_0_per_point27=yp=yq;
+wave_0_per_point28=zp=zq;
+wave_0_per_point29=
+wave_0_per_point30=//rotate on y axis again
+wave_0_per_point31=axs2 = sin(t1*0.1)*3.3;
+wave_0_per_point32=xq=xp*cos(axs2) - zp*sin(axs2);
+wave_0_per_point33=zq=xp*sin(axs2) + zp*cos(axs2);
+wave_0_per_point34=xp=xq;
+wave_0_per_point35=zp=zq;
+wave_0_per_point36=
+wave_0_per_point37=//stretch y axis to compensate for aspect ratio
+wave_0_per_point38=yp=yp*1.2;
+wave_0_per_point39=
+wave_0_per_point40=//push forward into viewpace
+wave_0_per_point41=zp=zp+2.1;
+wave_0_per_point42=
+wave_0_per_point43=//project x,y,z into screenspace
+wave_0_per_point44=xs=xp/zp;
+wave_0_per_point45=ys=yp/zp;
+wave_0_per_point46=
+wave_0_per_point47=//center 0,0 in middle of screen
+wave_0_per_point48=x=xs+0.5+q4;
+wave_0_per_point49=y=ys+0.5+q5;
+wave_0_per_point50=
+wave_0_per_point51=r=1-q1;
+wave_0_per_point52=g=1-q2;
+wave_0_per_point53=b=1-q3;
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=0
+shapecode_0_sides=23
+shapecode_0_additive=1
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.700000
+shapecode_0_rad=0.154930
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=0.010000
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=y=bass_att*0.5+0.2;
+shape_0_per_frame2=x=cos(time*2)*0.5+0.5;
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=1.801999
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=3.141593
+shapecode_1_tex_zoom=0.572684
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=//ang = ang + (bass*.2) + (time*.4);
+shape_1_per_frame2=//rad=1.781+(bass*0.025);
+shape_1_per_frame3=ang=above(0.5,treb_att)*.063;
+shapecode_2_enabled=0
+shapecode_2_sides=100
+shapecode_2_additive=1
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.900000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=0.010000
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shape_2_per_frame1=x = sin(time*5) * .4 + .5;
+shape_2_per_frame2=y=treb_att*0.5;
+shape_2_per_frame3=
+shape_2_per_frame4=pow( (bass*.15),2);
+shapecode_3_enabled=0
+shapecode_3_sides=100
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=1
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.033004
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=0.010000
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=1.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=1.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=1.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+shape_3_per_frame1=x=.5+(bass*0.07);
+per_frame_1=wave_a = 0;
+per_frame_2=
+per_frame_3=
+per_frame_4=
+per_frame_5=//Thanks to Zylot for rainbow generator
+per_frame_6=counter1 = if(equal(counter2,1),if(equal(counter1,1),0,counter1+.2),1);
+per_frame_7=counter2 = if(equal(counter1,1),if(equal(counter2,1),0,counter2+.2),1);
+per_frame_8=cdelay1 = if(equal(cdelay2,1),1,if(equal(colorcounter%2,1),if(equal(counter1,1),2 ,0), if(equal(counter2,1),2,0)));
+per_frame_9=cdelay2 = if(equal(cdelay1,2),1,0);
+per_frame_10=colorcounter = if(above(colorcounter,7),0,if(equal(cdelay1,1),colorcounter+1,colorcounter));
+per_frame_11=ib_r = .5*if(equal(colorcounter,1),1, if(equal(colorcounter,2),1, if(equal(colorcounter,3),1, if(equal(colorcounter,4),sin(counter2+2.1), if(equal(colorcounter,5),0, if(equal(colorcounter,6),0,sin(counter1)))))));
+per_frame_12=ib_g = .5*if(equal(colorcounter,1),0, if(equal(colorcounter,2),sin(counter2*.5), if(equal(colorcounter,3),sin((counter1+1.75)*.4), if(equal(colorcounter,4),1, if(equal(colorcounter,5),1, if(equal(colorcounter,6),sin(counter2+2),0))))));
+per_frame_13=ib_b = if(equal(colorcounter,1),sin(counter1+2.1), if(equal(colorcounter,2),0, if(equal(colorcounter,3),0, if(equal(colorcounter,4),0, if(equal(colorcounter,5),sin(counter1), if(equal(colorcounter,6),1,1))))));
+per_frame_14=
+per_frame_15=
+per_frame_16=
+per_frame_17=ob_r=ib_r-0.5;
+per_frame_18=ob_g=ib_g-0.5;
+per_frame_19=ob_b=ib_b-0.5;
+per_frame_20=q1=ib_r;
+per_frame_21=q2=ib_g;
+per_frame_22=q3=ib_b;
+per_frame_23=
+per_frame_24=
+per_frame_25=
+per_frame_26=decay = 0.9999;
+per_frame_27=
+per_frame_28=
+per_frame_29=//echo_orient=((bass_att+mid_att+treb_att)/3)*3;
+per_frame_30=//solarize=above(0.5,bass);
+per_frame_31=//darken=above(0.4,treb);
+per_frame_32=
+per_frame_33=musictime=musictime+(mid*mid*mid)*0.02;
+per_frame_34=
+per_frame_35=xpos=sin(musictime*0.6)*0.6;
+per_frame_36=ypos=sin(musictime*0.4)*0.6;
+per_frame_37=q4=xpos;
+per_frame_38=q5=ypos;
+per_frame_39=
+per_frame_40=
+per_frame_41=
+per_frame_42=//beatdetect
+per_frame_43=volume = 0.3*(bass+mid+att);
+per_frame_44=beatrate = if(equal(beatrate,0),1,if(below(volume,0.01),1,beatrate));
+per_frame_45=lastbeat = if(equal(lastbeat,0),time,lastbeat);
+per_frame_46=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_47=beat = if(above(volume,0.8),if(below(peakbass_att - bass_att, 0.05*peakbass_att),if(above(time - lastbeat,0.1+0.5*(beatrate-0.1)),1,0),0),0);
+per_frame_48=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.5*(beatrate + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_49=peakbass_att = if(equal(beat,0),if(above(time - lastbeat,2*beatrate),peakbass_att*0.95,peakbass_att*0.995),bass_att);
+per_frame_50=lastbeat = if(beat,time,lastbeat);
+per_frame_51=peakbass_att = max(if(beat,bass_att,peakbass_att),1.1*meanbass_att);
+per_frame_52=
+per_frame_53=mybeat=if(beat,mybeat+1,mybeat);
+per_frame_54=mybeat=if(above(mybeat,3),0,mybeat);
+per_frame_55=echo_orient=mybeat;
+per_pixel_1=//flip= (-2 * above(sin(time),-0.9) )+1;
+per_pixel_2=//var=(bass+mid+treb)/3;
+per_pixel_3=//rot=((ang&rad/rad)/(var*20))/10;
+per_pixel_4=//sx=.99-(var*0.01);
+per_pixel_5=//cx=var*0.1*(ang/12);
+per_pixel_6=//sy=sx;
+per_pixel_7=
+per_pixel_8=//zoom=-1;
+per_pixel_9=sx=-1+(bass*0.2);
+per_pixel_10=sy=-1-(treb*0.2);
+per_pixel_11=
+per_pixel_12=cx=0.5+q4;
+per_pixel_13=cy=0.5-q5;
+per_pixel_14=rd=sqrt( sqr( (x-0.5-q4)*2) + sqr( (y-0.5+q5)*1.5 ) );
+per_pixel_15=//zm=(1.1-(rd/4));
+per_pixel_16=zm=.994;
+per_pixel_17=
+per_pixel_18=ag=atan( (y-0.5+q5)/(x-0.5-q4) );
+per_pixel_19=star=sin(ag*6+time)*((2-rd)-ag)/5;
+per_pixel_20=zm=zm+star/20;
+per_pixel_21=sx=zm;
+per_pixel_22=sy=zm;
+per_pixel_23=//rot=above(rd,0.7)*(rd-0.7)*sin(time*0.3)
diff --git a/InstallerDependencies/Visuals/projectM/presets/Pithlit & Illusion - Symetric pattern.milk b/InstallerDependencies/Visuals/projectM/presets/Pithlit & Illusion - Symetric pattern.milk
new file mode 100644
index 00000000..b3f7f9ae
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Pithlit & Illusion - Symetric pattern.milk
@@ -0,0 +1,218 @@
+[preset00]
+fRating=3.500000
+fGammaAdj=1.000000
+fDecay=0.999000
+fVideoEchoZoom=0.999500
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=6
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=4.712706
+fWaveSmoothing=0.900000
+fWaveParam=1.000000
+fModWaveAlphaStart=1.489999
+fModWaveAlphaEnd=0.750000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=0.203507
+fShader=0.000000
+zoom=1.074096
+rot=1.000000
+cx=2.000000
+cy=-1.000000
+dx=-0.980000
+dy=1.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=0.250000
+wave_b=0.000000
+wave_x=0.000000
+wave_y=0.000000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=2.400000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=0.950000
+mv_g=0.800000
+mv_b=0.700000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=100
+shapecode_0_additive=1
+shapecode_0_thickOutline=1
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.100000
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=0.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=0.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.200000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=0.000000
+shapecode_0_border_b=0.000000
+shapecode_0_border_a=1.000000
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=wave_r = wave_r + 0.400*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+per_frame_2=wave_g = wave_g + 0.400*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+per_frame_3=wave_b = wave_b + 0.400*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+per_frame_4=mv_r = 0.7-bass_att;
+per_frame_5=mv_b = 0.6-treb_att;
+per_frame_6=mv_g = 0.5-mid_att;
+per_frame_7=rot = rot + 0.040*( 0.60*sin(0.381*time) + 0.40*sin(0.539*time) );
+per_frame_8=zoom=max(0.98, min(0.15+0.8*bass_att, 1.75 ));
+per_pixel_1=pre_zoom=zoom-.07*acos(y*2-1)*sin(time*1.2*q1)*zoom-.07*acos(x*2-1)*sin(time*1.1*q1);
+per_pixel_2=zoom=if(above(abs(zoom-1),.04),pre_zoom,.99);
+per_pixel_3=rot=if(above(abs(zoom-1),2),-.4+.2*q1,0);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Reenen - phoenix.milk b/InstallerDependencies/Visuals/projectM/presets/Reenen - phoenix.milk
new file mode 100644
index 00000000..df28a56e
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Reenen - phoenix.milk
@@ -0,0 +1,67 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.000000
+fDecay=0.980000
+fVideoEchoZoom=0.999607
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=3
+bAdditiveWaves=1
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=5.053452
+fWaveScale=0.811409
+fWaveSmoothing=0.720000
+fWaveParam=-0.400000
+fModWaveAlphaStart=0.000000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=0.608037
+fWarpScale=1.220618
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.009520
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.591235
+sx=0.970590
+sy=1.000000
+wave_r=0.700000
+wave_g=0.100000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.240000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.000000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+per_frame_1=vol = (bass*5 + mid * 3 + treb*2)/20;
+per_frame_2=wave_g = wave_g + vol/10 + 0.1*sin(3.21*time);
+per_frame_3=wave_r = wave_r + vol/10;
+per_frame_4=wave_b = vol/10;
+per_frame_5=dy = dy - vol/30 + 0.0015*sin(0.56*time);
+per_frame_6=sx = sx - vol/50;
+per_frame_7=wave_x = wave_x + vol/50;
+per_pixel_1=q1 = above(0.5,y);
+per_pixel_2=q2 = bor(above(x,0.55),above(0.45,x));
+per_pixel_3=q3 = (pow(rad+0.95,4)-1)*0.1*(y+0.1);
+per_pixel_4=rot = if(bor(q1,q2),q3,rot);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Reenen Geiss - Triple Feedback.milk b/InstallerDependencies/Visuals/projectM/presets/Reenen Geiss - Triple Feedback.milk
new file mode 100644
index 00000000..5dc834a6
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Reenen Geiss - Triple Feedback.milk
@@ -0,0 +1,312 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.000000
+fDecay=0.900000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=6
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.311600
+fWaveScale=1.228910
+fWaveSmoothing=0.000000
+fWaveParam=0.200000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.459526
+fWarpScale=2.006761
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999902
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.460478
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.006500
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.850000
+mv_r=0.499900
+mv_g=0.499900
+mv_b=0.499900
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=6.650134
+shapecode_0_ang=3.644249
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=0.075238
+shapecode_0_r=0.500000
+shapecode_0_g=0.500000
+shapecode_0_b=1.000000
+shapecode_0_a=0.550000
+shapecode_0_r2=0.000000
+shapecode_0_g2=0.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_init1=t1 = rand(100)*0.01;
+shape_0_init2=t2 = rand(100)*0.01;
+shape_0_per_frame1=rate = fps/(fps+1/3);
+shape_0_per_frame2=beat = above(bass,bassthresh);
+shape_0_per_frame3=bassthresh = beat*4 + (1-beat)*((bassthresh - 1.3)*rate+1.3);
+shape_0_per_frame4=poly = if(beat,rand(30)+6,poly);
+shape_0_per_frame5=sides = poly;
+shape_0_per_frame6=
+shape_0_per_frame7=te = te + max(bass/fps/3,0.003);
+shape_0_per_frame8=x = 0.5+0.45*sin(te*1.87)+0.07*sin(time*0.6);
+shape_0_per_frame9=y = 0.5+0.35*cos(te*1.87)+0.07*sin(time*1.3);
+shape_0_per_frame10=ang = 3*sin(-te*1.67) + 3*cos(te*0.4);
+shape_0_per_frame11=rad = rad * (0.9 + 0.2*t2);
+shape_0_per_frame12=r = min(1,max(0,r + 0.4*sin(time*0.517 + 1)));
+shape_0_per_frame13=g = min(1,max(0,g + 0.4*sin(time*0.491 + 2)));
+shape_0_per_frame14=b = min(1,max(0,b + 0.4*sin(time*0.532 + 4)));
+shape_0_per_frame15=r2 = min(1,max(0,r2 + 0.4*sin(time*0.457 + 3)));
+shape_0_per_frame16=g2 = min(1,max(0,g2 + 0.4*sin(time*0.437 + 5)));
+shape_0_per_frame17=b2 = min(1,max(0,b2 + 0.4*sin(time*0.484 + 6)));
+shapecode_1_enabled=1
+shapecode_1_sides=3
+shapecode_1_additive=1
+shapecode_1_thickOutline=1
+shapecode_1_textured=1
+shapecode_1_x=0.370000
+shapecode_1_y=0.490000
+shapecode_1_rad=0.749999
+shapecode_1_ang=3.644249
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=0.000000
+shapecode_1_border_g=0.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_init1=t1 = rand(100)*0.01;
+shape_1_init2=t2 = rand(100)*0.01;
+shape_1_init3=te = 1;
+shape_1_init4=poly = 4;
+shape_1_per_frame1=rate = fps/(fps+1/2);
+shape_1_per_frame2=beat = above(bass,bassthresh);
+shape_1_per_frame3=bassthresh = beat*4 + (1-beat)*((bassthresh - 1.5)*rate+1.5);
+shape_1_per_frame4=ran = rand(8)+4;
+shape_1_per_frame5=poly = if(beat,if(equal(ran,poly),poly+1,ran),poly);
+shape_1_per_frame6=//poly = if(above(poly,8),4,poly);
+shape_1_per_frame7=sides = poly;
+shape_1_per_frame8=
+shape_1_per_frame9=rate2 = fps/(fps+10);
+shape_1_per_frame10=out = (1-beat)*rate2*out + beat;
+shape_1_per_frame11=border_a = out;
+shape_1_per_frame12=te = bass/fps/2 + te;
+shape_1_per_frame13=x = x + 0.056*sin(te*1.67);
+shape_1_per_frame14=y = y + 0.043*sin(te*1.23);
+shape_1_per_frame15=ang = 3*sin(-te*0.67) + 3*cos(te*0.4);
+shape_1_per_frame16=rad = rad * (0.9 + 0.2*t2) - 0.1*sin(te*1.51);;
+shape_1_per_frame17=r = min(1,max(0,r + 0.3*sin(time*0.427 + 1)));
+shape_1_per_frame18=g = min(1,max(0,g + 0.3*sin(time*0.401 + 2)));
+shape_1_per_frame19=b = min(1,max(0,b + 0.3*sin(time*0.452 + 4)));
+shape_1_per_frame20=r2 = min(1,max(0,r2 + 0.3*sin(time*0.417 + 3)));
+shape_1_per_frame21=g2 = min(1,max(0,g2 + 0.3*sin(time*0.457 + 5)));
+shape_1_per_frame22=b2 = min(1,max(0,b2 + 0.3*sin(time*0.434 + 6)));
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=1
+shapecode_2_thickOutline=1
+shapecode_2_textured=1
+shapecode_2_x=0.670000
+shapecode_2_y=0.430000
+shapecode_2_rad=0.749999
+shapecode_2_ang=4.209736
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=0.000000
+shapecode_2_border_a=0.000000
+shape_2_init1=t1 = rand(100)*0.01;
+shape_2_init2=t2 = rand(100)*0.01;
+shape_2_init3=te = 1;
+shape_2_init4=poly = 5;
+shape_2_per_frame1=rate = fps/(fps+1/2);
+shape_2_per_frame2=beat = above(mid,bassthresh);
+shape_2_per_frame3=bassthresh = beat*4 + (1-beat)*((bassthresh - 1.6)*rate+1.6);
+shape_2_per_frame4=ran = rand(8)+4;
+shape_2_per_frame5=poly = if(beat,if(equal(ran,poly),poly+1,ran),poly);
+shape_2_per_frame6=//poly = if(above(poly,8),4,poly);
+shape_2_per_frame7=sides = poly;
+shape_2_per_frame8=
+shape_2_per_frame9=rate2 = fps/(fps+10);
+shape_2_per_frame10=out = (1-beat)*rate2*out + beat;
+shape_2_per_frame11=border_a = out;
+shape_2_per_frame12=
+shape_2_per_frame13=te = mid/fps/2 + te;
+shape_2_per_frame14=x = x + 0.05*sin(te*1.17);
+shape_2_per_frame15=y = y + 0.05*sin(te*1.83);
+shape_2_per_frame16=ang = 3*sin(te*0.5)+2*sin(te*1.1)+4*sin(te*0.3);
+shape_2_per_frame17=rad = rad * (0.9 + 0.2*t2) + 0.1*sin(te*1.3);
+shape_2_per_frame18=r = min(1,max(0,r + 0.3*sin(time*0.417 + 1)));
+shape_2_per_frame19=g = min(1,max(0,g + 0.3*sin(time*0.391 + 2)));
+shape_2_per_frame20=b = min(1,max(0,b + 0.3*sin(time*0.432 + 4)));
+shape_2_per_frame21=r2 = min(1,max(0,r2 + 0.3*sin(time*0.457 + 3)));
+shape_2_per_frame22=g2 = min(1,max(0,g2 + 0.3*sin(time*0.437 + 5)));
+shape_2_per_frame23=b2 = min(1,max(0,b2 + 0.3*sin(time*0.484 + 6)));
+shapecode_3_enabled=1
+shapecode_3_sides=3
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.265151
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.100000
+shapecode_3_g2=0.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=0.500000
+shapecode_3_border_g=0.500000
+shapecode_3_border_b=0.500000
+shapecode_3_border_a=1.000000
+shape_3_per_frame1=rate = fps/(fps+1/2);
+shape_3_per_frame2=
+shape_3_per_frame3=ang = time*0.5;
+shape_3_per_frame4=vol = (bass_att+mid_att+treb_att)/6;
+shape_3_per_frame5=te = vol/fps + te;
+shape_3_per_frame6=x = x + 0.2*sin(te*1.14);
+shape_3_per_frame7=y = y + 0.2*sin(te*0.96+2);
+shape_3_per_frame8=
+shape_3_per_frame9=beat = above(vol*1.5,bassthresh);
+shape_3_per_frame10=bassthresh = beat*4 + (1-beat)*((bassthresh - 1.4)*rate+1.4);
+shape_3_per_frame11=poly = if(beat,rand(5)+3,poly);
+shape_3_per_frame12=poly = if(equal(poly,7),rand(50)+7,poly);
+shape_3_per_frame13=sides = poly;
+shape_3_per_frame14=rad = rad-log(poly)/100;
+per_frame_1=//This Preset is based on Geiss - Feedback and Geiss - Feedback 2
+per_frame_2=
+per_frame_3=//Ever since Geiss made those presets I've made slight changes
+per_frame_4=//to them and saved them. They were so cool, I used to watch
+per_frame_5=//them for hours. This preset is then one that flowed from
+per_frame_6=//changing and tweaking those.
+per_frame_7=
+per_frame_8=//Almost everything is changed, but the one shape, (shape 4)
+per_frame_9=//feeding back into the two bigger ones (shape 2 and 3) is
+per_frame_10=//obtained from the Feedback presets.
+per_frame_11=
+per_frame_12=//I've added a 4th shape (shape 1) that is the big 'filter'
+per_frame_13=//to change colours etc. It is also textured, so thats why
+per_frame_14=//the 'triple' feedback is for.
+per_frame_15=
+per_frame_16=//Shapes 3 and 2 can have their borders displayed in a strobe
+per_frame_17=//like fashion on beats. They also change amount of sides.
+per_frame_18=
+per_frame_19=//-Reenen
diff --git a/InstallerDependencies/Visuals/projectM/presets/Reenen Geiss - Triple Feedback_phat+eos_edit.milk b/InstallerDependencies/Visuals/projectM/presets/Reenen Geiss - Triple Feedback_phat+eos_edit.milk
new file mode 100644
index 00000000..c232827c
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Reenen Geiss - Triple Feedback_phat+eos_edit.milk
@@ -0,0 +1,320 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.000000
+fDecay=0.900000
+fVideoEchoZoom=0.999999
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=1
+nWaveMode=6
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=1
+bDarken=0
+bSolarize=1
+bInvert=0
+fWaveAlpha=0.311600
+fWaveScale=1.228910
+fWaveSmoothing=0.000000
+fWaveParam=0.200000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.459526
+fWarpScale=2.006761
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999902
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=-1.000000
+warp=0.010000
+sx=0.999998
+sy=1.000000
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.850000
+mv_r=0.499900
+mv_g=0.499900
+mv_b=0.499900
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=6.650134
+shapecode_0_ang=3.644249
+shapecode_0_tex_ang=3.141593
+shapecode_0_tex_zoom=0.068793
+shapecode_0_r=0.500000
+shapecode_0_g=0.500000
+shapecode_0_b=1.000000
+shapecode_0_a=0.550000
+shapecode_0_r2=0.000000
+shapecode_0_g2=0.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_init1=t1 = rand(100)*0.01;
+shape_0_init2=t2 = rand(100)*0.01;
+shape_0_per_frame1=rate = fps/(fps+1/3);
+shape_0_per_frame2=beat = above(bass,bassthresh);
+shape_0_per_frame3=bassthresh = beat*4 + (1-beat)*((bassthresh - 1.3)*rate+1.3);
+shape_0_per_frame4=poly = if(beat,rand(30)+6,poly);
+shape_0_per_frame5=sides = poly;
+shape_0_per_frame6=
+shape_0_per_frame7=te = te + max(bass/fps/3,0.003);
+shape_0_per_frame8=x = 0.5+0.45*sin(te*1.87)+0.07*sin(time*0.6);
+shape_0_per_frame9=y = 0.5+0.35*cos(te*1.87)+0.07*sin(time*1.3);
+shape_0_per_frame10=ang = 3*sin(-te*1.67) + 3*cos(te*0.4);
+shape_0_per_frame11=rad = rad * (0.9 + 0.2*t2);
+shape_0_per_frame12=r = min(1,max(0,r + 0.4*sin(time*0.517 + 1)));
+shape_0_per_frame13=g = min(1,max(0,g + 0.4*sin(time*0.491 + 2)));
+shape_0_per_frame14=b = min(1,max(0,b + 0.4*sin(time*0.532 + 4)));
+shape_0_per_frame15=r2 = min(1,max(0,r2 + 0.4*sin(time*0.457 + 3)));
+shape_0_per_frame16=g2 = min(1,max(0,g2 + 0.4*sin(time*0.437 + 5)));
+shape_0_per_frame17=b2 = min(1,max(0,b2 + 0.4*sin(time*0.484 + 6)));
+shapecode_1_enabled=1
+shapecode_1_sides=3
+shapecode_1_additive=1
+shapecode_1_thickOutline=1
+shapecode_1_textured=1
+shapecode_1_x=0.370000
+shapecode_1_y=0.490000
+shapecode_1_rad=0.749999
+shapecode_1_ang=3.644249
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=0.000000
+shapecode_1_border_g=0.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_init1=t1 = rand(100)*0.01;
+shape_1_init2=t2 = rand(100)*0.01;
+shape_1_init3=te = 1;
+shape_1_init4=poly = 4;
+shape_1_per_frame1=
+shape_1_per_frame2=rate = fps/(fps+1/2);
+shape_1_per_frame3=beat = above(bass,bassthresh);
+shape_1_per_frame4=bassthresh = beat*4 + (1-beat)*((bassthresh - 1.5)*rate+1.5);
+shape_1_per_frame5=ran = rand(8)+4;
+shape_1_per_frame6=poly = if(beat,if(equal(ran,poly),poly+1,ran),poly);
+shape_1_per_frame7=//poly = if(above(poly,8),4,poly);
+shape_1_per_frame8=sides = poly;
+shape_1_per_frame9=
+shape_1_per_frame10=rate2 = fps/(fps+10);
+shape_1_per_frame11=out = (1-beat)*rate2*out + beat;
+shape_1_per_frame12=border_a = out;
+shape_1_per_frame13=te = bass/fps/2 + te;
+shape_1_per_frame14=x = x + 0.056*sin(te*1.67);
+shape_1_per_frame15=y = y + 0.043*sin(te*1.23);
+shape_1_per_frame16=ang = 3*sin(-te*0.67) + 3*cos(te*0.4);
+shape_1_per_frame17=rad = rad * (0.9 + 0.2*t2) - 0.1*sin(te*1.51);;
+shape_1_per_frame18=r = min(1,max(0,r + 0.3*sin(time*0.427 + 1)));
+shape_1_per_frame19=g = min(1,max(0,g + 0.3*sin(time*0.401 + 2)));
+shape_1_per_frame20=b = min(1,max(0,b + 0.3*sin(time*0.452 + 4)));
+shape_1_per_frame21=r2 = min(1,max(0,r2 + 0.3*sin(time*0.417 + 3)));
+shape_1_per_frame22=g2 = min(1,max(0,g2 + 0.3*sin(time*0.457 + 5)));
+shape_1_per_frame23=b2 = min(1,max(0,b2 + 0.3*sin(time*0.434 + 6)));
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=1
+shapecode_2_textured=1
+shapecode_2_x=0.670000
+shapecode_2_y=0.430000
+shapecode_2_rad=0.331672
+shapecode_2_ang=4.209736
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=0.000000
+shapecode_2_border_a=0.000000
+shape_2_init1=t1 = rand(100)*0.01;
+shape_2_init2=t2 = rand(100)*0.01;
+shape_2_init3=te = 1;
+shape_2_init4=poly = 5;
+shape_2_per_frame1=rate = fps/(fps+1/2);
+shape_2_per_frame2=beat = above(mid,bassthresh);
+shape_2_per_frame3=bassthresh = beat*4 + (1-beat)*((bassthresh - 1.6)*rate+1.6);
+shape_2_per_frame4=ran = rand(8)+4;
+shape_2_per_frame5=poly = if(beat,if(equal(ran,poly),poly+1,ran),poly);
+shape_2_per_frame6=//poly = if(above(poly,8),4,poly);
+shape_2_per_frame7=sides = poly;
+shape_2_per_frame8=
+shape_2_per_frame9=rate2 = fps/(fps+10);
+shape_2_per_frame10=out = (1-beat)*rate2*out + beat;
+shape_2_per_frame11=border_a = out;
+shape_2_per_frame12=
+shape_2_per_frame13=te = mid/fps/2 + te;
+shape_2_per_frame14=x = x + 0.05*sin(te*1.17);
+shape_2_per_frame15=y = y + 0.05*sin(te*1.83);
+shape_2_per_frame16=ang = 3*sin(te*0.5)+2*sin(te*1.1)+4*sin(te*0.3);
+shape_2_per_frame17=rad = rad * (0.9 + 0.2*t2) + 0.1*sin(te*1.3);
+shape_2_per_frame18=r = min(1,max(0,r + 0.3*sin(time*0.417 + 1)));
+shape_2_per_frame19=g = min(1,max(0,g + 0.3*sin(time*0.391 + 2)));
+shape_2_per_frame20=b = min(1,max(0,b + 0.3*sin(time*0.432 + 4)));
+shape_2_per_frame21=r2 = min(1,max(0,r2 + 0.3*sin(time*0.457 + 3)));
+shape_2_per_frame22=g2 = min(1,max(0,g2 + 0.3*sin(time*0.437 + 5)));
+shape_2_per_frame23=b2 = min(1,max(0,b2 + 0.3*sin(time*0.484 + 6)));
+shapecode_3_enabled=1
+shapecode_3_sides=3
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.265151
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.100000
+shapecode_3_g2=0.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=0.500000
+shapecode_3_border_g=0.500000
+shapecode_3_border_b=0.500000
+shapecode_3_border_a=1.000000
+shape_3_per_frame1=rate = fps/(fps+1/2);
+shape_3_per_frame2=
+shape_3_per_frame3=ang = time*0.5;
+shape_3_per_frame4=vol = (bass_att+mid_att+treb_att)/6;
+shape_3_per_frame5=te = vol/fps + te;
+shape_3_per_frame6=x = x + 0.2*sin(te*1.14);
+shape_3_per_frame7=y = y + 0.2*sin(te*0.96+2);
+shape_3_per_frame8=
+shape_3_per_frame9=beat = above(vol*1.5,bassthresh);
+shape_3_per_frame10=bassthresh = beat*4 + (1-beat)*((bassthresh - 1.4)*rate+1.4);
+shape_3_per_frame11=poly = if(beat,rand(5)+3,poly);
+shape_3_per_frame12=poly = if(equal(poly,7),rand(50)+7,poly);
+shape_3_per_frame13=sides = poly;
+shape_3_per_frame14=rad = rad-log(poly)/100;
+shape_3_per_frame15=
+shape_3_per_frame16=a=pow(vol*2,2);
+shape_3_per_frame17=border_a=a;
+shape_3_per_frame18=rad=rad*0.7+a*0.015
+per_frame_1=//This Preset is based on Geiss - Feedback and Geiss - Feedback 2
+per_frame_2=
+per_frame_3=//Ever since Geiss made those presets I've made slight changes
+per_frame_4=//to them and saved them. They were so cool, I used to watch
+per_frame_5=//them for hours. This preset is then one that flowed from
+per_frame_6=//changing and tweaking those.
+per_frame_7=
+per_frame_8=//Almost everything is changed, but the one shape, (shape 4)
+per_frame_9=//feeding back into the two bigger ones (shape 2 and 3) is
+per_frame_10=//obtained from the Feedback presets.
+per_frame_11=
+per_frame_12=//I've added a 4th shape (shape 1) that is the big 'filter'
+per_frame_13=//to change colours etc. It is also textured, so thats why
+per_frame_14=//the 'triple' feedback is for.
+per_frame_15=
+per_frame_16=//Shapes 3 and 2 can have their borders displayed in a strobe
+per_frame_17=//like fashion on beats. They also change amount of sides.
+per_frame_18=
+per_frame_19=//-Reenen
+per_frame_20=
+per_frame_21=zoom=1.05;
+per_frame_22=decay=0.85
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Aderrasi - Clockwork Organism.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Aderrasi - Clockwork Organism.milk
new file mode 100644
index 00000000..c4ebdc27
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Aderrasi - Clockwork Organism.milk
@@ -0,0 +1,86 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.220183
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=1
+bSolarize=1
+bInvert=1
+fWaveAlpha=0.785805
+fWaveScale=0.837543
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.500000
+ob_g=0.100000
+ob_b=0.200000
+ob_a=0.100000
+ib_size=0.017000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.35*sin(4*time) + 0.15*sin(2.5*time);
+per_frame_2=wave_g = wave_g + 0.35*sin(3.7*time) + 0.15*sin(2.11*time);
+per_frame_3=wave_b = wave_b + 0.35*sin(3.84*time) + 0.15*sin(2.3*time);
+per_frame_4=ib_r = wave_r;
+per_frame_5=ib_g = wave_g;
+per_frame_6=ib_b = wave_b;
+per_frame_7=dx = dx + dx_r;
+per_frame_8=dy = dy + dy_r;
+per_frame_9=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_frame_10=dx_r = above(thresh,2)*0.015*sin(rad*5*time)+(1-equal(thresh,2))*dx_r;
+per_frame_11=dy_r = above(thresh,2)*0.015*sin(ang*6*time)+(1-equal(thresh,2))*dy_r;
+per_frame_12=q1 = dx_r*1000;
+per_frame_13=q2 = dx_y*1000;
+per_frame_14=monitor = dx_r;
+per_frame_15=bass_test = bass+1.3*bass_att;
+per_frame_16=q8 = if(above(bass_test,2.5),bass_test,0.5*bass_test);
+per_pixel_1=//dx = dx + q1*0.01975*pow(rad,x*x)*sin(time);
+per_pixel_2=//dy = dy + q2*0.01975*pow(rad,x*x)*cos(time);
+per_pixel_3=zoom = zoom - 0.125*pow(rad,x*7)*cos(ang*6);
+per_pixel_4=//rot = rot - 0.25*(0.75*sin(1.25*time)*pow(rad,x)*sin(1.45*time))*q1*q2;
+per_pixel_5=rot = (zoom-1)+0.07*(q8);
+per_frame_init_1=dx_r=1;
+per_frame_init_2=dy_r=1;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Fvese - Deadly Flower.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Fvese - Deadly Flower.milk
new file mode 100644
index 00000000..95ba4ef7
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Fvese - Deadly Flower.milk
@@ -0,0 +1,83 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.980000
+fVideoEchoZoom=0.999609
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=1
+bDarken=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000158
+fWaveScale=0.669541
+fWaveSmoothing=0.630000
+fWaveParam=-1.000000
+fModWaveAlphaStart=2.000000
+fModWaveAlphaEnd=2.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999514
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010100
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.000000
+wave_y=0.000000
+ob_size=0.015000
+ob_r=0.230000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.650000
+ib_a=0.400000
+nMotionVectorsX=12.256001
+nMotionVectorsY=9.288002
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=1.000000
+per_frame_1=warp =0;
+per_frame_2=wave_x=0.4+0.1*mid;
+per_frame_3=wave_y=0.4+0.1*bass;
+per_frame_4=wave_r=bass;
+per_frame_5=wave_g=mid;
+per_frame_6=wave_b=treb;
+per_frame_7=madbass=max(max(bass,bass_att)-1.3,0);
+per_frame_8=madtreb=max(max(treb,treb_att)-1.3,0);
+per_frame_9=zoom = zoom -1.1* madbass+0.00;
+per_frame_10=ib_a = if(above(bass,1.2),0.7,0);
+per_frame_11=ob_r = if(above(treb,1.2),0.3,0.1);
+per_frame_12=mv_x =48;
+per_frame_13=mv_y= 3.25;
+per_frame_14=mv_r = 1-bass_att;
+per_frame_15=mv_b = 1-treb_att;
+per_frame_16=mv_g = 1-mid_att;
+per_frame_17=bass_effect=max(max(bass,bass_att)-0.8,0);
+per_frame_18=q1 = if(above(bass_effect,0),0.45+bass_effect,0);
+per_pixel_1=rot=if(below(rad,q1),0.05*bass_factor+sin(time*.3+ang*8+(sqrt(2)-rad*7.5))*.063,rot);
+per_pixel_2=zoom=if(below(rad,q1),-0.05*bass_factor+1-.23*(1-rad)*sin(time*.3+ang*8+rad*7.5),zoom);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Fvese - Stranger Minds (Astral Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Fvese - Stranger Minds (Astral Mix).milk
new file mode 100644
index 00000000..c533b91d
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Fvese - Stranger Minds (Astral Mix).milk
@@ -0,0 +1,80 @@
+[preset00]
+fRating=3.500000
+fGammaAdj=1.000000
+fDecay=0.999000
+fVideoEchoZoom=0.999600
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=2
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=1
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.005730
+fWaveScale=0.023445
+fWaveSmoothing=0.000000
+fWaveParam=-0.480000
+fModWaveAlphaStart=1.489999
+fModWaveAlphaEnd=0.750000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999500
+rot=0.200000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.600000
+wave_g=0.600000
+wave_b=0.510000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.500000
+ib_g=0.400000
+ib_b=0.650000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_l=0.055000
+mv_r=0.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=1.000000
+per_frame_1=wave_r = wave_r + 0.350*( 0.60*sin(0.825*time) + 0.40*sin(0.915*time) );
+per_frame_2=wave_g = wave_g + 0.350*( 0.60*sin(0.900*time) + 0.40*sin(1.025*time) );
+per_frame_3=wave_b = wave_b + 0.350*( 0.60*sin(0.810*time) + 0.40*sin(0.950*time) );
+per_frame_4=mv_r= wave_r + 0.350*( 0.60*sin(0.900*time) + 0.40*sin(0.750*time) );
+per_frame_5=mv_g= wave_g + 0.350*( 0.60*sin(0.825*time) + 0.40*sin(0.950*time) );
+per_frame_6=mv_b= wave_b + 0.350*( 0.60*sin(0.775*time) + 0.40*sin(1.025*time) );
+per_frame_7=ib_r=1-min(bass*0.5,1);
+per_frame_8=ib_b=1-min(treb*0.5,1);
+per_frame_9=ib_g=1-min(mid*0.5,1);
+per_frame_10=ob_r=1-min(mid_att*0.5,1);
+per_frame_11=ob_b=1-min(bass_att*0.5,1);
+per_frame_12=ob_g=1-min(treb_att*0.5,1);
+per_frame_13=bass_effect = min(max(max(bass,bass_effect)-1.3,0),0.5);
+per_frame_14=ib_size = ib_size+ bass_effect;
+per_frame_15=wave_mystery = wave_mystery + 0.4*bass_effect;
+per_frame_16=mv_l = mv_l + 0.5*bass_effect;
+per_frame_17=q1 = bass_effect;
+per_pixel_1=zoom =0.9- sin(time + ang*2)*0.02;
+per_pixel_2=zoom=zoom+(q1)*0.1;
+per_pixel_3=rot = rot + 0.1*q1*(3.14-ang);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Fvese - Stranger Minds.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Fvese - Stranger Minds.milk
new file mode 100644
index 00000000..3ec92150
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Fvese - Stranger Minds.milk
@@ -0,0 +1,74 @@
+[preset00]
+fRating=3.500000
+fGammaAdj=1.000000
+fDecay=0.999000
+fVideoEchoZoom=0.999600
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=5
+bAdditiveWaves=1
+bWaveDots=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.005730
+fWaveScale=0.535239
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=1.489999
+fModWaveAlphaEnd=0.750000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999500
+rot=0.200000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=3.200000
+nMotionVectorsY=1.440000
+mv_l=5.000000
+mv_r=0.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.350*( 0.60*sin(0.825*time) + 0.40*sin(0.915*time) );
+per_frame_2=wave_g = wave_g + 0.350*( 0.60*sin(0.900*time) + 0.40*sin(1.025*time) );
+per_frame_3=wave_b = wave_b + 0.350*( 0.60*sin(0.810*time) + 0.40*sin(0.950*time) );
+per_frame_4=mv_r= wave_r + 0.350*( 0.60*sin(0.900*time) + 0.40*sin(0.750*time) );
+per_frame_5=mv_g= wave_g + 0.350*( 0.60*sin(0.825*time) + 0.40*sin(0.950*time) );
+per_frame_6=mv_b= wave_b + 0.350*( 0.60*sin(0.775*time) + 0.40*sin(1.025*time) );
+per_frame_7=ib_r=min(bass*0.5,1);
+per_frame_8=ib_b=min(treb*0.5,1);
+per_frame_9=ib_g=min(mid*0.5,1);
+per_frame_10=ob_r=1-min(mid_att*0.5,1);
+per_frame_11=ob_b=1-min(bass_att*0.5,1);
+per_frame_12=ob_g=1-min(treb_att*0.5,1);
+per_pixel_1=zoom =0.9- sin(time + ang*2)*0.02;
+per_pixel_2=zoom=zoom+(bass_att-1.0)*0.115;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Broken Destiny Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Broken Destiny Mix).milk
new file mode 100644
index 00000000..059b2d3f
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Broken Destiny Mix).milk
@@ -0,0 +1,90 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=2.994000
+fDecay=0.981000
+fVideoEchoZoom=0.999609
+fVideoEchoAlpha=1.000000
+nVideoEchoOrientation=0
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=0.634243
+fWaveSmoothing=0.100000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.004960
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000156
+sx=0.999666
+sy=0.999900
+wave_r=0.550000
+wave_g=0.550000
+wave_b=0.550000
+wave_x=0.500000
+wave_y=0.360000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=2.016000
+mv_dx=0.000000
+mv_dy=-0.100000
+mv_l=5.000000
+mv_r=0.000000
+mv_g=0.000000
+mv_b=0.700000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.40*( 0.60*sin(1.980*time) + 0.40*sin(1.047*time) );
+per_frame_2=wave_g = wave_g + 0.40*( 0.60*sin(1.835*time) + 0.40*sin(1.081*time) );
+per_frame_3=wave_b = wave_b + 0.40*( 0.60*sin(1.714*time) + 0.40*sin(1.011*time) );
+per_frame_4=q8 = oldq8+if(above(bass+bass_att,2.8),q8+0.005*pow((bass+bass_att),5),0);
+per_frame_5=oldq8 = q8;
+per_frame_6=q7 =0.005*(pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_7=q1 = 0.62*( 0.60*sin(0.374*q8) + 0.40*sin(0.294*q8) );
+per_frame_8=q2 = 0.62*( 0.60*sin(0.393*q8) + 0.40*sin(0.223*q8) );
+per_frame_9=q3 = 0.62*( 0.60*sin(0.174*-q8) + 0.40*sin(0.364*q8) );
+per_frame_10=q4 = 0.62*( 0.60*sin(0.234*q8) + 0.40*sin(0.271*-q8) );
+per_frame_11=echo_zoom = 1+ q7;
+per_frame_12=zoom = 1+q7;
+per_pixel_1=du = x*2-1 - q1;
+per_pixel_2=dv = y*2-1 - q2;
+per_pixel_3=dist = sqrt(du*du+dv*dv);
+per_pixel_4=ang2 = atan2(du,dv);
+per_pixel_5=mult = 0.008/(dist+0.4);
+per_pixel_6=dx = mult*sin(ang2-1.5);
+per_pixel_7=dy = mult*cos(ang2-1.5);
+per_pixel_8=du = x*2-1 - q3;
+per_pixel_9=dv = y*2-1 - q4;
+per_pixel_10=dist = sqrt(du*du+dv*dv);
+per_pixel_11=ang2 = atan2(du,dv);
+per_pixel_12=mult = 0.008*sin(q8)/(dist+0.4);
+per_pixel_13=dx = dx + mult*sin(ang2+1.5);
+per_pixel_14=dy = dy + mult*cos(ang2+1.5);
+per_pixel_15=rot = -0.01*rad*sin(q8);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Mysticial Awakening Mi.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Mysticial Awakening Mi.milk
new file mode 100644
index 00000000..76464fe3
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Mysticial Awakening Mi.milk
@@ -0,0 +1,91 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.980000
+fDecay=1.000000
+fVideoEchoZoom=1.000154
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=0.010000
+fWaveSmoothing=0.100000
+fWaveParam=-0.472000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=0.972366
+fShader=0.000000
+zoom=1.004960
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000156
+sx=0.999666
+sy=0.999900
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.510000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=0.000000
+mv_g=0.000000
+mv_b=1.000000
+mv_a=1.000000
+per_frame_1=wave_r = wave_r + 0.350*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );
+per_frame_2=wave_g = wave_g + 0.350*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );
+per_frame_3=wave_b = wave_b + 0.350*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );
+per_frame_4=q8 = oldq8+min(if(above(bass+bass_att,2.8),q8+0.025*pow((bass+bass_att-1.5),5),0),1);
+per_frame_5=oldq8 = q8;
+per_frame_6=q8 = q8 + 0.1*time;
+per_frame_7=q1 = 0.62*( 0.60*sin(0.374*q8) + 0.40*sin(0.294*q8) );
+per_frame_8=q2 = 0.62*( 0.60*sin(0.393*q8) + 0.40*sin(0.223*q8) );
+per_frame_9=q3 = 0.62*( 0.60*sin(0.174*-q8) + 0.40*sin(0.364*q8) );
+per_frame_10=q4 = 0.62*( 0.60*sin(0.234*q8) + 0.40*sin(0.271*-q8) );
+per_frame_11=mv_x = 1.25;
+per_frame_12=mv_y = 1.25;
+per_frame_13=mv_a =1;
+per_pixel_1=du = x*2-1 - q1;
+per_pixel_2=dv = y*2-1 - q2;
+per_pixel_3=dist = sqrt(du*du+dv*dv);
+per_pixel_4=ang2 = atan2(du,dv);
+per_pixel_5=mult = 0.008/(dist+0.4);
+per_pixel_6=dx = mult*sin(ang2-1.5);
+per_pixel_7=dy = mult*cos(ang2-1.5);
+per_pixel_8=du = x*2-1 - q3;
+per_pixel_9=dv = y*2-1 - q4;
+per_pixel_10=dist = sqrt(du*du+dv*dv);
+per_pixel_11=ang2 = atan2(du,dv);
+per_pixel_12=mult = 0.008*sin(q8)/(dist+0.4);
+per_pixel_13=dx = dx + mult*sin(ang2+1.5);
+per_pixel_14=dy = dy + mult*cos(ang2+1.5);
+per_pixel_15=rot = -0.01*rad*sin(q8);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Poltergiest Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Poltergiest Mix).milk
new file mode 100644
index 00000000..096b432a
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Poltergiest Mix).milk
@@ -0,0 +1,107 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=2.994000
+fDecay=0.900000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=0
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=1
+bDarken=0
+bSolarize=1
+bInvert=1
+fWaveAlpha=1.000000
+fWaveScale=1.553027
+fWaveSmoothing=0.100000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.004960
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000156
+sx=0.999666
+sy=0.999900
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.150000
+mv_r=0.000000
+mv_g=0.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.350*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );
+per_frame_2=wave_g = wave_g + 0.350*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );
+per_frame_3=wave_b = wave_b + 0.350*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );
+per_frame_4=q8 = oldq8+if(above(bass+bass_att,2.8),q8+0.005*pow((bass+bass_att),5),0);
+per_frame_5=oldq8 = q8;
+per_frame_6=q1 = 0.62*( 0.60*sin(0.374*q8) + 0.40*sin(0.294*q8) );
+per_frame_7=q2 = 0.62*( 0.60*sin(0.393*q8) + 0.40*sin(0.223*q8) );
+per_frame_8=q3 = 0.62*( 0.60*sin(0.174*-q8) + 0.40*sin(0.364*q8) );
+per_frame_9=q4 = 0.62*( 0.60*sin(0.234*q8) + 0.40*sin(0.271*-q8) );
+per_frame_10=zoom = 1+ 0.06*abs(sin(q8*1.123));
+per_frame_11=decay = 0.8+0.2*sin(q8*0.334);
+per_frame_12=
+per_frame_13=volume = 0.15*(bass_att+bass+mid+mid_att);
+per_frame_14=beatrate = if(equal(beatrate,0),1,if(below(volume,0.01),1,beatrate));
+per_frame_15=lastbeat = if(equal(lastbeat,0),time,lastbeat);
+per_frame_16=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_17=peakbass_att = if(above(bass_att,peakbass_att),bass_att,peakbass_att);
+per_frame_18=beat = if(above(volume,0.8),if(below(peakbass_att - bass_att, 0.05*peakbass_att),if(above(time - lastbeat,0.1+0.5*(beatrate-0.1)),1,0),0),0);
+per_frame_19=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_20=peakbass_att = if(equal(beat,0),if(above(time - lastbeat,2*beatrate),peakbass_att*0.95,peakbass_att*0.995),bass_att);
+per_frame_21=lastbeat = if(beat,time,lastbeat);
+per_frame_22=countertime = if(beat,time,countertime);
+per_frame_23=counter =-pow(min((time-countertime-1.5),0),9);
+per_frame_24=q7 = min(time-countertime,1);
+per_frame_25=q5=oldq5+0.04*counter;
+per_frame_26=oldq5=q5;
+per_frame_27=q6 = beat;
+per_frame_28=echo_zoom = beat*abs(100*sin(3.13*q8));
+per_frame_29=echo_alpha = beat*0.5;
+per_pixel_1=du = x*2-1 - q1;
+per_pixel_2=dv = y*2-1 - q2;
+per_pixel_3=dist = sqrt(du*du+dv*dv);
+per_pixel_4=ang2 = atan2(du,dv);
+per_pixel_5=mult = 0.008/(dist+0.4);
+per_pixel_6=dx = mult*sin(ang2-1.5);
+per_pixel_7=dy = mult*cos(ang2-1.5);
+per_pixel_8=du = x*2-1 - q3;
+per_pixel_9=dv = y*2-1 - q4;
+per_pixel_10=dist = sqrt(du*du+dv*dv);
+per_pixel_11=ang2 = atan2(du,dv);
+per_pixel_12=mult = 0.008*sin(q8)/(dist+0.4);
+per_pixel_13=dx = dx + mult*sin(ang2+1.5);
+per_pixel_14=dy = dy + mult*cos(ang2+1.5);
+per_pixel_15=rot =0.01*rad*sin(q8*0.781);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Twisted Truth Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Twisted Truth Mix).milk
new file mode 100644
index 00000000..318c9e29
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Twisted Truth Mix).milk
@@ -0,0 +1,97 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=2.994000
+fDecay=0.965000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=0.634243
+fWaveSmoothing=0.100000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.004960
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000156
+sx=0.999666
+sy=0.999900
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.380000
+ob_size=0.005000
+ob_r=1.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.470000
+nMotionVectorsX=64.000000
+nMotionVectorsY=2.016000
+mv_dx=0.000000
+mv_dy=-0.100000
+mv_l=5.000000
+mv_r=0.000000
+mv_g=0.000000
+mv_b=0.700000
+mv_a=0.500000
+per_frame_1=wave_r = wave_r + 0.350*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );
+per_frame_2=wave_g = wave_g + 0.350*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );
+per_frame_3=wave_b = wave_b + 0.350*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );
+per_frame_4=//q8 = oldq8+min(if(above(bass+bass_att,2.8),q8+0.025*pow((bass+bass_att-2),5),0),1);
+per_frame_5=//oldq8 = q8;
+per_frame_6=//q8 = q8 + time*0.1;
+per_frame_7=q8 =oldq8+ 0.005*(pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_8=oldq8 = q8;
+per_frame_9=monitor = q8;
+per_frame_10=q1 = 0.62*( 0.60*sin(0.374*q8) + 0.40*sin(0.294*q8) );
+per_frame_11=q2 = 0.62*( 0.60*sin(0.393*q8) + 0.40*sin(0.223*q8) );
+per_frame_12=q3 = 0.62*( 0.60*sin(0.174*-q8) + 0.40*sin(0.364*q8) );
+per_frame_13=q4 = 0.62*( 0.60*sin(0.234*q8) + 0.40*sin(0.271*-q8) );
+per_frame_14=ob_r = wave_r;
+per_frame_15=ob_g = wave_g;
+per_frame_16=ob_b = wave_b;
+per_frame_17=mv_r = wave_r;
+per_frame_18=mv_b = wave_b;
+per_frame_19=mv_g = wave_g;
+per_frame_20=ib_a = abs(sin(q8*0.9141));
+per_pixel_1=du = x*2-1 - q1;
+per_pixel_2=dv = y*2-1 - q2;
+per_pixel_3=dist = sqrt(du*du+dv*dv);
+per_pixel_4=ang2 = atan2(du,dv);
+per_pixel_5=mult = 0.008/(dist+0.4);
+per_pixel_6=dx = mult*sin(ang2-1.5);
+per_pixel_7=dy = mult*cos(ang2-1.5);
+per_pixel_8=du = x*2-1 - q3;
+per_pixel_9=dv = y*2-1 - q4;
+per_pixel_10=dist = sqrt(du*du+dv*dv);
+per_pixel_11=ang2 = atan2(du,dv);
+per_pixel_12=mult = 0.008/(dist+0.4);
+per_pixel_13=dx = dx + mult*sin(ang2+1.5);
+per_pixel_14=dy = dy + mult*cos(ang2+1.5);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Voyage Of Twisted Souls Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Voyage Of Twisted Souls Mix).milk
new file mode 100644
index 00000000..fa1f85f9
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Dynamic Swirls 3 (Voyage Of Twisted Souls Mix).milk
@@ -0,0 +1,98 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.993000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.608039
+fWaveScale=0.634243
+fWaveSmoothing=0.100000
+fWaveParam=0.500000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.004960
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000156
+sx=0.999666
+sy=0.999900
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.360000
+ob_size=0.010000
+ob_r=1.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.015000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.150000
+mv_r=0.000000
+mv_g=0.000000
+mv_b=1.000000
+mv_a=0.400000
+per_frame_1=ob_r = 0.7 - 0.3*(0.5*sin(time*0.701)+ 0.3*cos(time*0.438));
+per_frame_2=ob_g = 0.5- 0.48*sin(time*1.324);
+per_frame_3=ob_b = 0.5 - 0.48*cos(time*1.316);
+per_frame_4=wave_r = wave_r + 0.350*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );
+per_frame_5=wave_g = wave_g + 0.350*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );
+per_frame_6=wave_b = wave_b + 0.350*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );
+per_frame_7=mv_r = wave_r;
+per_frame_8=mv_b = wave_b;
+per_frame_9=mv_g = wave_g;
+per_frame_10=q8 = oldq8+if(above(bass+bass_att,2.8),q8+0.005*pow((bass+bass_att),5),0);
+per_frame_11=oldq8 = q8;
+per_frame_12=monitor = sin(q8);
+per_frame_13=q1 = 0.62*( 0.60*sin(0.374*q8) + 0.40*sin(0.294*q8) );
+per_frame_14=q2 = 0.62*( 0.60*sin(0.393*q8) + 0.40*sin(0.223*q8) );
+per_frame_15=q3 = 0.62*( 0.60*sin(0.174*-q8) + 0.40*sin(0.364*q8) );
+per_frame_16=q4 = 0.62*( 0.60*sin(0.234*q8) + 0.40*sin(0.271*-q8) );
+per_frame_17=//zoom = zoom+ 0.06*abs(sin(q8));
+per_pixel_1=du = x*2-1 - q1;
+per_pixel_2=dv = y*2-1 - q2;
+per_pixel_3=dist = sqrt(du*du+dv*dv);
+per_pixel_4=ang2 = atan2(du,dv);
+per_pixel_5=mult = 0.008/(dist+0.4);
+per_pixel_6=dx = mult*sin(ang2-1.5);
+per_pixel_7=dy = mult*cos(ang2-1.5);
+per_pixel_8=du = x*2-1 - q3;
+per_pixel_9=dv = y*2-1 - q4;
+per_pixel_10=dist = sqrt(du*du+dv*dv);
+per_pixel_11=ang2 = atan2(du,dv);
+per_pixel_12=mult = 0.008*sin(q8)/(dist+0.4);
+per_pixel_13=dx = dx + mult*sin(ang2+1.5);
+per_pixel_14=dy = dy + mult*cos(ang2+1.5);
+per_pixel_15=//rot = -0.01*rad*sin(q8);
+per_pixel_16=rot =0+abs(3* dx) - abs(3*dy);
+per_pixel_17=zoom =1+abs(3* dx) - abs(3*dy);
+per_pixel_18=zoomexp = 1 + abs((300* dx) - (300*dy));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Hurricane Nightmare.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Hurricane Nightmare.milk
new file mode 100644
index 00000000..a1e76753
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Hurricane Nightmare.milk
@@ -0,0 +1,80 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=1.000000
+fVideoEchoZoom=0.999609
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=1
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.300000
+fWaveScale=0.881381
+fWaveSmoothing=0.500000
+fWaveParam=-1.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=3.600000
+fShader=0.000000
+zoom=1.021087
+rot=-0.160000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.309000
+sx=1.000000
+sy=1.000000
+wave_r=0.600000
+wave_g=0.600000
+wave_b=0.600000
+wave_x=0.500000
+wave_y=0.470000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.750000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=1.000000
+per_frame_1=wave_r = wave_r + 0.400*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+per_frame_2=wave_g = wave_g + 0.400*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+per_frame_3=wave_b = wave_b + 0.400*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+per_frame_4=q8 = oldq8+if(above(bass+bass_att,1.8),q8+0.0005*pow((bass+bass_att-1),9),0);
+per_frame_5=oldq8 = q8;
+per_frame_6=monitor = q8;
+per_frame_7=zoom = zoom + 0.023*( 0.60*sin(0.339*q8) + 0.40*sin(0.276*q8) );
+per_frame_8=rot = rot + 0.030*( 0.60*sin(0.381*q8) + 0.40*sin(0.579*q8) );
+per_frame_9=//decay = decay - 0.02*equal(frame%40,0);
+per_frame_10=mv_r = wave_r;
+per_frame_11=mv_b = wave_b;
+per_frame_12=mv_g = wave_g;
+per_frame_13=mv_x = 1.25;
+per_frame_14=mv_y = 1.25;
+per_frame_15=mv_dx = 0.1*sin(1.1*time);
+per_frame_16=mv_dy = 0.1*cos(1.112*time);
+per_pixel_1=rot=rot+1/(10*(rad+0.2+0.1*sin(q8)));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Ice Planet.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Ice Planet.milk
new file mode 100644
index 00000000..dac382b9
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Ice Planet.milk
@@ -0,0 +1,74 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.998000
+fDecay=0.960000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=1
+bInvert=1
+fWaveAlpha=1.334524
+fWaveScale=1.981000
+fWaveSmoothing=0.600000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.064000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.600000
+wave_g=0.600000
+wave_b=0.600000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.400*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+per_frame_2=wave_g = wave_g + 0.400*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+per_frame_3=wave_b = wave_b + 0.400*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+per_frame_4=q8 = oldq8+if(above(bass+bass_att,2.8),q8+0.001*pow((bass+bass_att-2),8),0);
+per_frame_5=oldq8 = q8;
+per_frame_6=monitor = q8;
+per_frame_7=zoom = zoom + 0.013*( 0.60*sin(0.339*q8) + 0.40*sin(0.276*q8) );
+per_frame_8=rot = rot + 0.040*( 0.60*sin(0.381*q8) + 0.40*sin(0.579*q8) );
+per_pixel_1=zoom = zoom + (x*2-1)*(0.08+0.15*sin(q8*0.321)) + (y*2-1)*(0.08+0.15*cos(q8*0.321));
+per_pixel_2=sx=sx-(zoom-1)*0.1;
+per_pixel_3=sy=sy-(zoom-1)*0.1;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Notions Of Tonality.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Notions Of Tonality.milk
new file mode 100644
index 00000000..52adfc54
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Notions Of Tonality.milk
@@ -0,0 +1,89 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.700000
+fDecay=0.970000
+fVideoEchoZoom=0.999609
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=0.013089
+fWaveSmoothing=0.100000
+fWaveParam=-0.400000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=1.000000
+zoom=1.004960
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000156
+sx=0.999666
+sy=0.999900
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.380000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=63.936001
+nMotionVectorsY=47.952000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.400000
+mv_r=0.700000
+mv_g=0.400000
+mv_b=0.500000
+mv_a=1.000000
+per_frame_1=mv_r = wave_r + 0.350*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );
+per_frame_2=mv_g = wave_g + 0.350*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );
+per_frame_3=mv_b = wave_b + 0.350*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time));
+per_frame_4=q1 = (cx*2-1) + 0.62*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );
+per_frame_5=q2 = (cy*2-1) + 0.62*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );
+per_frame_6=q3 = (cx*2-1) + 0.62*( 0.60*sin(0.174*-time) + 0.40*sin(0.364*time) );
+per_frame_7=q4 = (cy*2-1) + 0.62*( 0.60*sin(0.234*time) + 0.40*sin(0.271*-time) );
+per_frame_8=decay = decay - 0.01*equal(frame%5,0);
+per_frame_9=cy = cy + 0.1*sin(time*0.245);
+per_frame_10=cx = cx + 0.1*cos(time*0341);
+per_frame_11=wave_mystery = 2;
+per_frame_12=mv_l = 2*max(max(bass,bass_att)-1.2,0);
+per_pixel_1=du = x*2-1 - q1;
+per_pixel_2=dv = y*2-1 - q2;
+per_pixel_3=dist = sqrt(du*du+dv*dv);
+per_pixel_4=ang2 = atan2(du,dv);
+per_pixel_5=mult = 0.008/(dist+0.4);
+per_pixel_6=dx = mult*sin(ang2-1.5);
+per_pixel_7=dy = mult*cos(ang2-1.5);
+per_pixel_8=du = x*2-1 - q3;
+per_pixel_9=dv = y*2-1 - q4;
+per_pixel_10=dist = sqrt(du*du+dv*dv);
+per_pixel_11=ang2 = atan2(du,dv);
+per_pixel_12=mult = 0.008/(dist+0.4);
+per_pixel_13=dx = dx + mult*sin(ang2+1.5);
+per_pixel_14=dy = dy + mult*cos(ang2+1.5);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Octoplasm.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Octoplasm.milk
new file mode 100644
index 00000000..cbcfc497
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Octoplasm.milk
@@ -0,0 +1,77 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.700000
+fDecay=0.964000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.695686
+fWaveSmoothing=0.450000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.020000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.076000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.100000
+ob_g=0.200000
+ob_b=0.400000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=3.008000
+nMotionVectorsY=48.000000
+mv_l=2.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=warp = 0;
+per_frame_2=bass_effect = min(max(max(bass,bass_att)-1.3,0),1);
+per_frame_3=treb_effect = min(max(max(treb,treb_att)-1.3,0),1);
+per_frame_4=mid_effect = min(max(max(mid,mid_att)-1.3,0),1);
+per_frame_5=wave_r = wave_r + 0.4*( 0.6*sin(1.517*time) + 0.4*mid_effect );
+per_frame_6=wave_b = wave_b + 0.4*( 0.6*sin(1.088*time) + 0.4*bass_effect );
+per_frame_7=wave_g = wave_g + 0.4*( 0.6*sin(1.037*time) + 0.4*treb_effect );
+per_frame_8=rot = rot + 0.040*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_9=cx = cx + 0.110*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );
+per_frame_10=cy = cy + 0.110*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );
+per_frame_11=ob_r = 1-wave_b;
+per_frame_12=ob_g = wave_r;
+per_frame_13=ob_b = 1-wave_g;
+per_frame_14=q1=cos((0.91*time) + sin(time*0.324));
+per_frame_15=q2=time + 0.3*sin((time*0.47) - cos(time*0.216));
+per_pixel_1=rot=rot+0.08*sin(rad*23.5 + q2*1.3 + q1*1.31);
+per_pixel_2=zoom=zoom+0.05*sin(ang*4 + pow((sqrt(2)-rad),13*rad) + q2*1.63 + q1) - 0.05;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Octotrip (MultiTrip Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Octotrip (MultiTrip Mix).milk
new file mode 100644
index 00000000..392f82ff
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Octotrip (MultiTrip Mix).milk
@@ -0,0 +1,240 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.980000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.695686
+fWaveSmoothing=0.450000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.020000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.076000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.100000
+ob_g=0.200000
+ob_b=0.400000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=3.008000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=2.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=0
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.100000
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.100000
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=warp =0;
+per_frame_2=bass_effect = min(max(max(bass,bass_att)-1.3,0),1);
+per_frame_3=treb_effect = min(max(max(treb,treb_att)-1.3,0),1);
+per_frame_4=mid_effect = min(max(max(mid,mid_att)-1.3,0),1);
+per_frame_5=wave_r = wave_r + 0.4*( 0.6*sin(1.517*time) + 0.4*mid_effect );
+per_frame_6=wave_b = wave_b + 0.4*( 0.6*sin(1.088*time) + 0.4*bass_effect );
+per_frame_7=wave_g = wave_g + 0.4*( 0.6*sin(1.037*time) + 0.4*treb_effect );
+per_frame_8=rot = rot + 0.040*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_9=cx = cx + 0.110*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );
+per_frame_10=cy = cy + 0.110*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );
+per_frame_11=ib_r = wave_g;
+per_frame_12=ib_g = 1-wave_r;
+per_frame_13=ib_b = wave_b;
+per_frame_14=ob_r = 1-wave_b;
+per_frame_15=ob_g = wave_r;
+per_frame_16=ob_b = 1-wave_g;
+per_frame_17=ib_size = 0.02*bass_effect;
+per_frame_18=q1=cos((0.91*time) + sin(time*0.324));
+per_frame_19=q2=time + 0.3*sin((time*0.47) - cos(time*0.216));
+per_frame_20=movement =movement + 0.5*(((bass+bass_att + 0.075*pow((bass+0.6*bass_att+0.2*treb_att),3)))/fps);
+per_frame_21=movement = if(above(movement,10000), 0, movement);
+per_frame_22=
+per_frame_23=q3 = 0.5+0.15*sin(movement);
+per_frame_24=q4 = 0.5-0.15*cos(0.781*movement);
+per_frame_25=
+per_frame_26=wave_x = q3;
+per_frame_27=wave_y = 1-q4;
+per_pixel_1=newx =x- q3;
+per_pixel_2=newy =y- q4;
+per_pixel_3=newang = atan2(newx,newy);
+per_pixel_4=newrad = min(sqrt((newx)*(newx)+0.5625*(newy)*(newy))*2,sqrt(2));
+per_pixel_5=rot=0+0.05*sin(newrad*13.5 + q2*1.3 + q1*1.31);
+per_pixel_6=zoom=zoom+0.05*sin(newang*10.0 + newrad*7.5 + q2*1.63 + q1)-0.05;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Octotrip.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Octotrip.milk
new file mode 100644
index 00000000..fe2debe0
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Octotrip.milk
@@ -0,0 +1,81 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.700000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.695686
+fWaveSmoothing=0.450000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.020000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.076000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.100000
+ob_g=0.200000
+ob_b=0.400000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=3.008000
+nMotionVectorsY=48.000000
+mv_l=2.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=warp =0;
+per_frame_2=bass_effect = min(max(max(bass,bass_att)-1.3,0),1);
+per_frame_3=treb_effect = min(max(max(treb,treb_att)-1.3,0),1);
+per_frame_4=mid_effect = min(max(max(mid,mid_att)-1.3,0),1);
+per_frame_5=wave_r = wave_r + 0.4*( 0.6*sin(1.517*time) + 0.4*mid_effect );
+per_frame_6=wave_b = wave_b + 0.4*( 0.6*sin(1.088*time) + 0.4*bass_effect );
+per_frame_7=wave_g = wave_g + 0.4*( 0.6*sin(1.037*time) + 0.4*treb_effect );
+per_frame_8=rot = rot + 0.040*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_9=cx = cx + 0.110*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );
+per_frame_10=cy = cy + 0.110*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );
+per_frame_11=ib_r = wave_g;
+per_frame_12=ib_g = 1-wave_r;
+per_frame_13=ib_b = wave_b;
+per_frame_14=ob_r = 1-wave_b;
+per_frame_15=ob_g = wave_r;
+per_frame_16=ob_b = 1-wave_g;
+per_frame_17=ib_size = 0.02*bass_effect;
+per_frame_18=q1=cos((0.91*time) + sin(time*0.324));
+per_frame_19=q2=time + 0.3*sin((time*0.47) - cos(time*0.216));
+per_pixel_1=rot=rot+0.05*sin(rad*13.5 + q2*1.3 + q1*1.31);
+per_pixel_2=zoom=zoom+0.05*sin(ang*10.0 + rad*7.5 + q2*1.63 + q1) - 0.05;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Surface (Vectrip Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Surface (Vectrip Mix).milk
new file mode 100644
index 00000000..8121eb43
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Geiss - Surface (Vectrip Mix).milk
@@ -0,0 +1,94 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.700000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=4
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=2.706706
+fWaveScale=0.234487
+fWaveSmoothing=0.100000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.014000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.029439
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=0.530000
+mv_g=0.700000
+mv_b=0.330000
+mv_a=1.000000
+per_frame_1=wave_r = wave_r + 0.350*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );
+per_frame_2=wave_g = wave_g + 0.350*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );
+per_frame_3=wave_b = wave_b + 0.350*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );
+per_frame_4=cx = cx + 0.110*( 0.60*sin(0.374*time) + 0.40*sin(0.294*time) );
+per_frame_5=cy = cy + 0.110*( 0.60*sin(0.393*time) + 0.40*sin(0.223*time) );
+per_frame_6=dx = dx + 0.01*( 0.60*sin(0.173*time) + 0.40*sin(0.223*time) );
+per_frame_7=vol = (bass+mid+att)/6;
+per_frame_8=xamptarg = if(equal(frame%15,0),min(0.5*vol*bass_att,0.5),xamptarg);
+per_frame_9=xamp = xamp + 0.5*(xamptarg-xamp);
+per_frame_10=xdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir));
+per_frame_11=xaccel = xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_12=xspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_13=xpos = xpos + 0.001*xspeed;
+per_frame_14=yamptarg = if(equal(frame%15,0),min(0.3*vol*treb_att,0.5),yamptarg);
+per_frame_15=yamp = yamp + 0.5*(yamptarg-yamp);
+per_frame_16=ydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir));
+per_frame_17=yaccel = ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_18=yspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_19=ypos = ypos + 0.001*yspeed;
+per_frame_20=mv_x_speed = 4;
+per_frame_21=mv_y_speed = 4;
+per_frame_22=mv_x_range = 0.49;
+per_frame_23=mv_y_range = 0.049;
+per_frame_24=mv_x_amount = 20;
+per_frame_25=mv_y_amount = 2.25;
+per_frame_26=mv_x = mv_x_amount +mv_x_range + mv_x_range*sin(mv_x_speed*ypos+(sin(time*0.964)-0.5*cos(time*0.256)));
+per_frame_27=mv_y = mv_y_amount + mv_y_range+ mv_y_range*sin(mv_y_speed*xpos-(cos(time*1.345)-0.5*cos(time*0.331)));
+per_frame_28=mv_b = mv_b + 0.2*sin(time*0.771);
+per_frame_29=mv_r = mv_r + 0.25*cos(time*1.701);
+per_frame_30=mv_g = mv_g + 0.3*cos(time*0.601);
+per_frame_31=mv_l = 10+6*min((0.5*bass+0.5*bass_att),2);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Idiot24-7 - Balk Acid.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Idiot24-7 - Balk Acid.milk
new file mode 100644
index 00000000..5637231c
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Idiot24-7 - Balk Acid.milk
@@ -0,0 +1,77 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=0.999514
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=7
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.591236
+fWaveSmoothing=0.000000
+fWaveParam=1.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=0.010000
+fShader=0.000000
+zoom=1.000300
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.400000
+wave_g=1.000000
+wave_b=0.600000
+wave_x=0.500000
+wave_y=1.000000
+ob_size=0.005000
+ob_r=1.000000
+ob_g=1.000000
+ob_b=0.410000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=12.799995
+nMotionVectorsY=2.879900
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=3.000000
+mv_r=0.000000
+mv_g=0.700000
+mv_b=1.000000
+mv_a=0.400000
+per_frame_1=zoom=zoom+0.028*(bass+bass_att) -0.05;
+per_frame_2=rot=rot+0.10*sin(time);
+per_frame_3=mv_r=0.5 +0.5*sin(time*1.23);
+per_frame_4=mv_b=0.5 + 0.5*sin(time*1.26);
+per_frame_5=mv_g=0.5+ 0.5*sin(time*1.19);
+per_frame_6=wave_g=wave_g*+.20*sin(time*.13);
+per_frame_7=wave_r=wave_r+.13*sin(time);
+per_frame_8=wave_b=wave_b*sin(time);
+per_frame_9=wave_x=wave_x-.5*sin(time*.13);
+per_frame_10=ob_a = if(above(mid+treb,2.6),1,0);
+per_frame_11=ob_r = 0.5 + 0.4*sin(time*2.87);
+per_frame_12=ob_b = 0.5 + 0.4*sin(time*2.914);
+per_frame_13=ob_g = 0.5 + 0.4*sin(time*2.768);
+per_frame_14=mv_y = 3.25;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Rocke - Headspin.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Rocke - Headspin.milk
new file mode 100644
index 00000000..b3dc9831
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Rocke - Headspin.milk
@@ -0,0 +1,85 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.990000
+fVideoEchoZoom=0.999600
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=1
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.800000
+fWaveScale=0.060957
+fWaveSmoothing=0.900000
+fWaveParam=-0.280000
+fModWaveAlphaStart=0.030000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=0.396381
+fWarpScale=0.720100
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.959069
+rot=0.500000
+cx=0.500000
+cy=0.500000
+dx=-0.002000
+dy=-0.002000
+warp=0.010000
+sx=1.000000
+sy=0.999999
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.500000
+ib_size=0.010000
+ib_r=0.230000
+ib_g=0.230000
+ib_b=0.230000
+ib_a=0.499900
+nMotionVectorsX=1.384000
+nMotionVectorsY=4.320006
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=1.000000
+per_frame_1=warp = 0;
+per_frame_2=wave_r = 0.225*mid_att;
+per_frame_3=wave_g = 0.213*treb_att;
+per_frame_4=wave_b = 0.235*bass_att;
+per_frame_5=wave_mystery = wave_mystery + 0.15*sin(0.5*time);
+per_frame_6=cx = cx + 0.1*sin(0.2*time);
+per_frame_7=cy = cy + 0.1*sin(0.4*time);
+per_frame_8=decay = decay + 0.01*sin(time);
+per_frame_9=mv_x = 1.5;
+per_frame_10=mv_y = 3 + 0.1*sin(time);
+per_frame_11=mv_b = 0.5+0.4*sin(time*0.863);
+per_frame_12=mv_g = 0.5+0.45*sin(time*0.523);
+per_frame_13=mv_r = 0.5+0.45*sin(time*0.98);
+per_frame_14=mv_l = 0.1+ 0.45*mv_y ;
+per_frame_15=mv_dx = 0.5*(1-bass)+0.5*sin(time*1.1);
+per_frame_16=mv_dy = 0.5*(1-bass)+0.5*sin(time*0.985);
+per_frame_17=ob_r =max(bass+bass_att+treb+treb_att-5.5,0);
+per_frame_18=ib_b = 0.5*max(bass-1,0);
+per_frame_19=monitor = ob_r;
+per_frame_20=ob_b = 0.12+0.1*sin(time*12);
+per_frame_21=ob_g = 0.12+ 0.1*sin(5*time);
+per_frame_22=warp =0;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & StudioMusic - More Cherished Desires.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & StudioMusic - More Cherished Desires.milk
new file mode 100644
index 00000000..78798791
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & StudioMusic - More Cherished Desires.milk
@@ -0,0 +1,72 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.980000
+fVideoEchoZoom=2.947994
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=5
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.396500
+fWaveScale=0.969133
+fWaveSmoothing=0.666000
+fWaveParam=0.000100
+fModWaveAlphaStart=1.379900
+fModWaveAlphaEnd=1.020000
+fWarpAnimSpeed=2.000000
+fWarpScale=1.000000
+fZoomExponent=0.056700
+fShader=0.700000
+zoom=0.539300
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=0.819500
+sy=0.819545
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.500000
+ob_g=0.010000
+ob_b=0.010000
+ob_a=0.950000
+ib_size=0.010000
+ib_r=0.010000
+ib_g=0.010000
+ib_b=0.500000
+ib_a=0.950000
+nMotionVectorsX=9.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=warp = 0;
+per_frame_2=wave_r = bass*.5;
+per_frame_3=wave_g = treb*.5;
+per_frame_4=wave_b = mid*.5;
+per_frame_5=decay = .99;
+per_frame_6=rot = rot + 0.040*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_7=zoom=max(0.98, min(0.15+0.8*bass_att, 1.75 ));
+per_pixel_1=zoom = zoom+rad*.1+0.05;
+per_pixel_2=zoomexp =1 - 1*sin(rad*time*100);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & StudioMusic - Twisted Spider Web.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & StudioMusic - Twisted Spider Web.milk
new file mode 100644
index 00000000..d13342ce
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & StudioMusic - Twisted Spider Web.milk
@@ -0,0 +1,77 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.990000
+fVideoEchoZoom=1.001799
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=5
+bAdditiveWaves=1
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.995648
+fWaveScale=0.995868
+fWaveSmoothing=0.837000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=10.784599
+fZoomExponent=1.001700
+fShader=0.000000
+zoom=1.009989
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.500000
+dy=0.500000
+warp=1.000000
+sx=0.999900
+sy=1.000000
+wave_r=0.500000
+wave_g=0.499900
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.500000
+ob_g=0.500000
+ob_b=0.500000
+ob_a=0.950000
+ib_size=0.010000
+ib_r=0.500000
+ib_g=0.500000
+ib_b=0.500000
+ib_a=0.950000
+nMotionVectorsX=64.000000
+nMotionVectorsY=1.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=bass_effect = max(max(bass,bass_att)-1.2,0);
+per_frame_2=treb_effect = max(max(treb,treb_att)-1.2,0);
+per_frame_3=warp = 0.25 + bass_att*1.25;
+per_frame_4=ib_r= ib_r-+ 0.5*( sin(time*0.391));
+per_frame_5=ib_g= ib_g + 0.5*( sin(time*1.527) );
+per_frame_6=ib_b= ib_b - 0.5*( sin(time*1.843) );
+per_frame_7=ob_r = 1 - ib_r;
+per_frame_8=ob_g = 1 - ib_g;
+per_frame_9=ob_b = 1 - ib_b;
+per_frame_10=ob_size = if(above(bass_effect,0), 0.001+0.0065*bass_effect,0.001);
+per_frame_11=ib_size = if(above(treb_effect,0), 0.001+0.0065*treb_effect,0.001);
+per_frame_12=zoom=1.35+0.2*sin(time);
+per_pixel_1=rot = rot + 1 + log(sqrt(2)-rad);
+per_pixel_2=zoom=zoom-0.5*rad +0.1*sin(rad);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Telek - Altars of Madness (Rolling Oceans Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Telek - Altars of Madness (Rolling Oceans Mix).milk
new file mode 100644
index 00000000..6cad5d07
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Telek - Altars of Madness (Rolling Oceans Mix).milk
@@ -0,0 +1,122 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.980000
+fDecay=1.000000
+fVideoEchoZoom=1.006596
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=5
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=0.660126
+fWaveSmoothing=0.000000
+fWaveParam=0.300000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.500000
+mv_r=0.150000
+mv_g=0.450000
+mv_b=0.650000
+mv_a=0.200000
+per_frame_1=warp=0;
+per_frame_2=ib_a =0.2*bass;
+per_frame_3=wave_r = wave_r + 0.45*(0.5*sin(time*0.701)+ 0.3*cos(time*0.438));
+per_frame_4=wave_b = wave_b - 0.4*(0.5*sin(time*4.782)+0.5*cos(time*0.522));
+per_frame_5=wave_g = wave_g + 0.4*sin(time*1.731);
+per_frame_6=decay = decay - equal(frame%100,0)*0.1;
+per_frame_7=vol = 0.167*(bass+mid);
+per_frame_8=xamptarg = if(equal(frame%15,0),min(0.5*vol*bass_att,0.5),xamptarg);
+per_frame_9=xamp = xamp + 0.5*(xamptarg-xamp);
+per_frame_10=xdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir));
+per_frame_11=xspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_12=xpos = xpos + 0.001*xspeed;
+per_frame_13=wave_x = 1.5*xpos + 0.5;
+per_frame_14=yamptarg = if(equal(frame%15,0),min(0.3*vol*treb_att,0.5),yamptarg);
+per_frame_15=yamp = yamp + 0.5*(yamptarg-yamp);
+per_frame_16=ydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir));
+per_frame_17=yspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_18=ypos = ypos + 0.001*yspeed;
+per_frame_19=wave_y = 1.5*ypos + 0.5;
+per_frame_20=zoom = .995;
+per_frame_21=
+per_frame_22=
+per_frame_23=
+per_frame_24=
+per_frame_25=
+per_frame_26=
+per_frame_27=
+per_frame_28=frametest = frame%2;
+per_frame_29=wave_x = if(frametest,1-wave_x,wave_x);
+per_frame_30=wave_y = if(frametest,1-wave_y,wave_y);
+per_frame_31=wave_r = if(frametest,wave_r,wave_g);
+per_frame_32=wave_g = if(frametest,wave_g,wave_b);
+per_frame_33=wave_b = if(frametest,wave_b,wave_r);
+per_frame_34=monitor = green;
+per_frame_35=q8 = oldq8+ 0.0005*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_36=oldq8 = q8;
+per_frame_37=
+per_frame_38=mv_g=0.5+bass_att*.1;
+per_frame_39=beat=if(above(bass*bass_att,4.5),1-beat,beat);
+per_frame_40=q1=beat*2-1;
+per_frame_41=
+per_frame_42=amp =amp*.8+.2*(bass_att+mid_att+treb_att)*.3;
+per_frame_43=q2 = min(amp,1);
+per_frame_44=trebcap=trebcap*.7+.16*treb;
+per_frame_45=q3=trebcap*2;
+per_frame_46=monitor = q3;
+per_pixel_1=dx=dx+0.008*sin((y*2-1)*(48+12*sin(0.412*q8)))+0.008*sin(((y+sin(time*0.163))*2-1)* (3+sin(0.241*q8)));
+per_pixel_2=dy=dy+0.008*cos((x*2-1)*(64+18*sin(0.376*q8)))+0.008*sin(((x+sin(q8*0.282))*2-1) *(3+sin(0.349*q8)));
+per_pixel_3=wang = (3+q3)*x+time*1.7+bass*.1;
+per_pixel_4=in = 0;
+per_pixel_5=in = in + below(abs(x-.25),.05)*below(abs(y-.5),.25);
+per_pixel_6=in = below(abs(y-(.5+.5*sin(wang)*q2)),.1);
+per_pixel_7=in=bnot(bnot(in));
+per_pixel_8=dx = dx+.02*in;
+per_pixel_9=dy = dy+.08*cos(wang)*q2*in;
+per_pixel_10=
+per_pixel_11=dx = dx+bnot(in)*.005*q1;
+per_pixel_12=dy = dy+bnot(in)*cos(wang)*-.01*q1;
+per_frame_init_1=q8=0;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Telek - Cosmic Fireworks.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Telek - Cosmic Fireworks.milk
new file mode 100644
index 00000000..99cc446b
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Telek - Cosmic Fireworks.milk
@@ -0,0 +1,214 @@
+[preset00]
+fRating=4.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.010000
+fWaveSmoothing=0.900000
+fWaveParam=1.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.001000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.002000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=33.152000
+nMotionVectorsY=28.799997
+mv_dx=0.006000
+mv_dy=0.000000
+mv_l=2.500000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=0.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=32
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.300000
+shapecode_0_ang=0.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.500000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=x = 0.5 + 0.2*sin(time*0.5624);
+shape_0_per_frame2=y = 0.5+0.2*sin(time*0.8934);
+shape_0_per_frame3=r =0.5+0.5*sin(time*0.9431);
+shape_0_per_frame4=b2 = 0.5+0.5*sin(time*3.175);
+shape_0_per_frame5=g = 1 - 0.1*bass;
+shape_0_per_frame6=r2 = 0.5*0.5*sin(1.7823);
+shape_0_per_frame7=g2 = 0.5 + 0.5*sin(time*2.32);
+shape_0_per_frame8=rad=0.02 + 0.00004*pow(bass+bass,5);
+shape_0_per_frame9=ang = 0.1*sin(time) + (rad-0.1)*10;;
+shapecode_1_enabled=1
+shapecode_1_sides=32
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=0.500000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.500000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=0.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=x = 0.5 + 0.2*sin(time*0.6824);
+shape_1_per_frame2=y = 0.5+0.2*sin(time*0.934);
+shape_1_per_frame3=r =0.5+0.5*sin(time*0.9431);
+shape_1_per_frame4=b2 = 0.5+0.5*sin(time*3.675);
+shape_1_per_frame5=g = 1 - 0.1*bass;
+shape_1_per_frame6=r2 = 0.5*0.5*sin(2.23);
+shape_1_per_frame7=g2 = 0.5 + 0.5*sin(time*1.32);
+shape_1_per_frame8=rad=0.08 + 0.00001*pow(bass+bass,7);
+shape_1_per_frame9=ang = 0.1*sin(time) + (rad-0.1)*10;;
+shapecode_2_enabled=1
+shapecode_2_sides=32
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=0.500000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.500000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=x = 0.5 + 0.2*sin(time*0.9824);
+shape_2_per_frame2=y = 0.5+0.2*sin(time*0.34);
+shape_2_per_frame3=v =0.5+0.5*sin(time*0.9431);
+shape_2_per_frame4=r2 = 0.5+0.5*sin(time*1.675);
+shape_2_per_frame5=g = 1 - 0.1*bass;
+shape_2_per_frame6=g2 = 0.5*0.5*sin(1.23);
+shape_2_per_frame7=b2 = 0.5 + 0.5*sin(time*1.32);
+shape_2_per_frame8=rad=0.02 + 0.00001*pow(bass+bass,5);
+shape_2_per_frame9=ang = 0.2*sin(time) + (rad-0.1)*10;;
+per_frame_1=xx = sin(time*.13)*.5+.5;
+per_frame_2=
+per_frame_3=beat = above(bass*bass_att,4.5)+bnot(xx);
+per_frame_4=//xx = if(beat,0,xx);
+per_frame_5=//x = if(beat,rand(10)*.1,x);
+per_frame_6=//y = if(beat,rand(10)*.1,y);
+per_frame_7=x = if(beat, max(min(rand( 2 )*.2 -.1+x, 1), 0), x);
+per_frame_8=y = if(beat, max(min(rand( 2 )*.2 -.1+y, 1), 0), y);
+per_frame_9=zoom = 1-beat*.1;
+per_frame_10=wave_x = x;
+per_frame_11=wave_y = y;
+per_frame_12=wave_mystery = xx*1.7-.5;
+per_frame_13=ob_a = beat;
+per_frame_14=wave_r= sin(time*.197)*.5+.5;
+per_frame_15=wave_g=cos(time*.201)*.5+.5;
+per_frame_16=wave_b=sin(time*.215)*.5+.5;
+per_frame_17=
+per_frame_18=xx=sin(xx*62.82)*.5+.5;
+per_frame_19=wave_r = xx+(1-xx)*wave_r;
+per_frame_20=wave_g = xx+(1-xx)*wave_g;
+per_frame_21=wave_b = xx+(1-xx)*wave_b;
+per_frame_22=//wave_b= wave_g;
+per_frame_23=//rot = .015;
+per_frame_24=monitor = xx;
+per_pixel_1=//rot = 0.001*rad;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Unchained - Centre Of Gravity.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Unchained - Centre Of Gravity.milk
new file mode 100644
index 00000000..e66c93d2
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Unchained - Centre Of Gravity.milk
@@ -0,0 +1,116 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.996000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=1
+bSolarize=1
+bInvert=0
+fWaveAlpha=0.818016
+fWaveScale=0.653093
+fWaveSmoothing=0.090000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=5.995700
+fWarpScale=1.331000
+fZoomExponent=0.999994
+fShader=0.000000
+zoom=1.008200
+rot=-0.760000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.424100
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.500000
+ob_g=0.500000
+ob_b=0.500000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.500000
+ib_g=0.500000
+ib_b=0.500000
+ib_a=0.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=0.000000
+mv_b=0.010000
+mv_a=1.000000
+per_frame_1=old_bass_flop=bass_flop;
+per_frame_2=old_treb_flop=treb_flop;
+per_frame_3=old_mid_flop=mid_flop;
+per_frame_4=chaos=.9+.1*sin(pulse);
+per_frame_5=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.6)*chaos+1.6);
+per_frame_6=bass_flop=abs(bass_flop-equal(bass_thresh,2));
+per_frame_7=treb_thresh=above(treb_att,treb_thresh)*2 + (1-above(treb_att,treb_thresh))*((treb_thresh-1.6)*chaos+1.6);
+per_frame_8=treb_flop=abs(treb_flop-equal(treb_thresh,2));
+per_frame_9=mid_thresh=above(mid_att,mid_thresh)*2 + (1-above(mid_att,mid_thresh))*((mid_thresh-1.6)*chaos+1.6);
+per_frame_10=mid_flop=abs(mid_flop-equal(mid_thresh,2));
+per_frame_11=bass_changed=bnot(equal(old_bass_flop,bass_flop));
+per_frame_12=mid_changed=bnot(equal(old_mid_flop,mid_flop));
+per_frame_13=treb_changed=bnot(equal(old_treb_flop,treb_flop));
+per_frame_14=bass_residual = bass_changed*sin(pulse*3) + bnot(bass_changed)*bass_residual;
+per_frame_15=treb_residual = treb_changed*sin(pulse*3) + bnot(treb_changed)*treb_residual;
+per_frame_16=mid_residual = mid_changed*sin(pulse*3) + bnot(mid_changed)*mid_residual;
+per_frame_17=pulse=if(above(abs(pulse),3.14),-3.14,pulse+(bass_thresh+mid_thresh+treb_thresh)*.0035);
+per_frame_18=entropy=if(bass_changed*mid_changed*treb_changed,(1+bass_flop+treb_flop+mid_flop)*(1+rand(3)),entropy);
+per_frame_19=q1=mid_residual;
+per_frame_20=q2=bass_residual;
+per_frame_21=q3=treb_residual;
+per_frame_22=q4=sin(pulse);
+per_frame_23=q5=cos(pulse*(.5+.1*entropy));
+per_frame_24=q6=sin(pulse*(.5+pow(.25,entropy)));
+per_frame_25=q7=above(q1,0)+above(q2,0)+above(q3,0)+above(q3,0)*treb_flop+above(q2,0)*bass_flop+above(q1,0)*mid_flop;
+per_frame_26=q8=entropy;
+per_frame_27=wave_r=wave_r+wave_r*q1;
+per_frame_28=wave_b=wave_b+wave_b*q2;
+per_frame_29=wave_g=wave_g+wave_g*q3;
+per_frame_30=ob_r=ob_r+ob_r*sin(q1+q2*2.14);
+per_frame_31=ob_b=ob_b+ob_b*sin(q2+q3*2.14);
+per_frame_32=ob_g=ob_g+ob_g*sin(q3+q1*2.14);
+per_frame_33=ib_r=ib_r+ib_r*cos(q5+q1*2.14);
+per_frame_34=ib_b=ib_b+ib_*cos(q5+q2*2.14);
+per_frame_35=ib_g=ib_g+ib_g*cos(q5+q3*2.14);
+per_frame_36=ob_a=.25+.25*sin(q2+q3*2.14);
+per_frame_37=ib_a=.25+.25*sin(q2*2.14+q3);
+per_frame_38=ob_size=.1+.1*sin(q3*3+q1);
+per_frame_39=ib_size=.1+.1*sin(q1*3+q3);
+per_frame_40=wave_mystery=.5*q6;
+per_frame_41=warp=0;
+per_frame_42=wave_mode=q8%7;
+per_frame_43=mv_x = 1.25;
+per_frame_44=mv_y = 1.25;
+per_frame_45=mv_dx = 0.1*sin(time);
+per_frame_46=mv_dy = -0.1*cos(time);
+per_pixel_1=c1=x*q1+sin(ang)*q4;
+per_pixel_2=c2=y*q2+sin(ang)*q6;
+per_pixel_3=radix=if(above(q3,0),min(x-c2,y-c2),max(x*c1,y*c1));
+per_pixel_4=radix=if(above(q2,0),min(radix,rad),max(radix,rad));
+per_pixel_5=rot=if(above(q6,0),((sqrt(2)*0.5)-rad)*.18*q5,.2*q5*sin(rad*2.133*q7));
+per_pixel_6=zoom=if(above(q2,0),zoom,if(above(q3,0),1+.07*sin(q4*.2*radix),1+.07*cos(radix*10*q4)));
+per_pixel_7=zoomexp=if(above(q2,0),zoomexp, if(above(q3,0),1-.07*sin(q4*.2*radix), 1+.07*cos(radix*10*q4)))*rad;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Zylot - Crystal Ball (Cerimonial Decor).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Zylot - Crystal Ball (Cerimonial Decor).milk
new file mode 100644
index 00000000..0d08602b
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Zylot - Crystal Ball (Cerimonial Decor).milk
@@ -0,0 +1,377 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.900000
+fVideoEchoZoom=0.999838
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=1.000000
+fWaveSmoothing=0.750000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=1
+wavecode_0_bAdditive=0
+wavecode_0_scaling=0.463735
+wavecode_0_smoothing=0.000000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_init1=//pi
+wave_0_init2=t8=3.14159265;
+wave_0_init3=t5 = 1;
+wave_0_per_frame1=rotx = rotx+bass;
+wave_0_per_frame2=roty = roty+mid;
+wave_0_per_frame3=rotz = rotz+treb;
+wave_0_per_frame4=//rotx = 0;
+wave_0_per_frame5=//roty =0;
+wave_0_per_frame6=//rotz = 0;
+wave_0_per_frame7=
+wave_0_per_frame8=//convert rotation values from degrees to radians
+wave_0_per_frame9=t1= t8*rotx/180;
+wave_0_per_frame10=t2 = t8*roty/180;
+wave_0_per_frame11=t3 = t8*rotz/180;
+wave_0_per_frame12=
+wave_0_per_frame13=t4 = 3*sin(time);
+wave_0_per_frame14=t5 = 10+8*cos(time);
+wave_0_per_frame15=
+wave_0_per_frame16=g = 0.5-0.4*cos(time);
+wave_0_per_frame17=r = 0.5-0.4*sin(time);
+wave_0_per_point1=//Define 3D Shape
+wave_0_per_point2=
+wave_0_per_point3=//Spiral
+wave_0_per_point4=x1 = 0.5*sin(8*t8*sample);
+wave_0_per_point5=y1 = 2*(sample-0.5)-value1;
+wave_0_per_point6=z1= 0.5*cos(8*t8*sample);
+wave_0_per_point7=
+wave_0_per_point8=//modulate values to adjust for rotation on multiple axes, convert to world co-ordinates
+wave_0_per_point9=y2 = y1*cos(t1)-z1*sin(t1);
+wave_0_per_point10=z2 = y1*sin(t1)+z1*cos(t1);
+wave_0_per_point11=x2 = z2*sin(t2)+x1*cos(t2);
+wave_0_per_point12=z3 = z2*cos(t2)-x1*sin(t2);
+wave_0_per_point13=x3 = x2*cos(t3)-y2*sin(t3);
+wave_0_per_point14=y3 = y2*cos(t3)+x2*sin(t3);
+wave_0_per_point15=//move resulting shape in 3d space
+wave_0_per_point16=x4 = x3+t4;
+wave_0_per_point17=y4 = y3;
+wave_0_per_point18=z4 = z3+t5;
+wave_0_per_point19=//draw 3d shape in 2d
+wave_0_per_point20=x=0.5+0.5*(x4/(1+z4*0.5));
+wave_0_per_point21=y=0.5+0.5*(y4/(1+z4*0.5));
+wave_0_per_point22=
+wave_0_per_point23=b= r+value1;
+wavecode_1_enabled=1
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=1
+wavecode_1_bAdditive=0
+wavecode_1_scaling=0.463735
+wavecode_1_smoothing=0.000000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+wave_1_init1=//pi
+wave_1_init2=t8=3.14159265;
+wave_1_init3=t5 = 1;
+wave_1_per_frame1=rotx = rotx+bass;
+wave_1_per_frame2=roty = roty+mid;
+wave_1_per_frame3=rotz = rotz+treb;
+wave_1_per_frame4=//rotx = 0;
+wave_1_per_frame5=//roty =0;
+wave_1_per_frame6=//rotz = 0;
+wave_1_per_frame7=
+wave_1_per_frame8=//convert rotation values from degrees to radians
+wave_1_per_frame9=t1= t8*rotx/180;
+wave_1_per_frame10=t2 = t8*roty/180;
+wave_1_per_frame11=t3 = t8*rotz/180;
+wave_1_per_frame12=
+wave_1_per_frame13=t4 = 3*sin(0.66*t8);
+wave_1_per_frame14=t5 = 10+8*cos(0.66*t8);
+wave_1_per_point1=//Define 3D Shape
+wave_1_per_point2=
+wave_1_per_point3=//Sphere
+wave_1_per_point4=fvar = sample*512;
+wave_1_per_point5=svar = fvar/32;
+wave_1_per_point6=tvar = 0&svar;
+wave_1_per_point7=nsample = tvar*3.5;
+wave_1_per_point8=x1 = (1)*sin(nsample+value1*5);
+wave_1_per_point9=y1 = (4)*cos(sample*t8*2);
+wave_1_per_point10=z1= (4)*sin(sample*(t8*2));
+wave_1_per_point11=
+wave_1_per_point12=//modulate values to adjust for rotation on multiple axes, convert to world co-ordinates
+wave_1_per_point13=y2 = y1*cos(t1)-z1*sin(t1);
+wave_1_per_point14=z2 = y1*sin(t1)+z1*cos(t1);
+wave_1_per_point15=x2 = z2*sin(t2)+x1*cos(t2);
+wave_1_per_point16=z3 = z2*cos(t2)-x1*sin(t2);
+wave_1_per_point17=x3 = x2*cos(t3)-y2*sin(t3);
+wave_1_per_point18=y3 = y2*cos(t3)+x2*sin(t3);
+wave_1_per_point19=//move resulting shape in 3d space
+wave_1_per_point20=x4 = x3;
+wave_1_per_point21=y4 = y3;
+wave_1_per_point22=z4 = z3+10;
+wave_1_per_point23=//draw 3d shape in 2d
+wave_1_per_point24=x=0.5+0.5*(x4/(1+z4*0.5));
+wave_1_per_point25=y=0.5+0.5*(y4/(1+z4*0.5));
+wave_1_per_point26=
+wave_1_per_point27=r = sin(nsample);
+wave_1_per_point28=g = -.1+cos(sample*5+(time*5));
+wave_1_per_point29=b = -.1-sin(sample*5+(time*5));
+wave_1_per_point30=g = if(below(g,0),0,g);
+wave_1_per_point31=b = if(below(b,0),0,b);
+wavecode_2_enabled=1
+wavecode_2_samples=48
+wavecode_2_sep=0
+wavecode_2_bSpectrum=0
+wavecode_2_bUseDots=0
+wavecode_2_bDrawThick=1
+wavecode_2_bAdditive=0
+wavecode_2_scaling=0.463735
+wavecode_2_smoothing=0.000000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wave_2_init1=//pi
+wave_2_init2=t8=3.14159265;
+wave_2_init3=t5 = 1;
+wave_2_per_frame1=rotx = rotx+bass;
+wave_2_per_frame2=roty = roty+mid;
+wave_2_per_frame3=rotz = rotz+treb;
+wave_2_per_frame4=//rotx = 0;
+wave_2_per_frame5=//roty =0;
+wave_2_per_frame6=//rotz = 0;
+wave_2_per_frame7=
+wave_2_per_frame8=//convert rotation values from degrees to radians
+wave_2_per_frame9=t1= t8*rotx/180;
+wave_2_per_frame10=t2 = t8*roty/180;
+wave_2_per_frame11=t3 = t8*rotz/180;
+wave_2_per_frame12=
+wave_2_per_frame13=t4 = 3*sin(time+1.33*t8);
+wave_2_per_frame14=t5 = 10+8*cos(time+1.33*t8);
+wave_2_per_frame15=
+wave_2_per_frame16=r = 0.5-0.4*cos(time+1.33*t8);
+wave_2_per_frame17=b = 0.5-0.4*sin(time+1.33*t8);
+wave_2_per_point1=//Define 3D Shape
+wave_2_per_point2=
+wave_2_per_point3=//Zylot's dumb 3d wave
+wave_2_per_point4=fvar = sample*512;
+wave_2_per_point5=svar = fvar/16;
+wave_2_per_point6=tvar = 0&svar;
+wave_2_per_point7=newsample = tvar/3.2;
+wave_2_per_point8=x1 = sin(newsample*3.1415926*2);
+wave_2_per_point9=y1 = cos(newsample*3.1415926*2);
+wave_2_per_point10=z1 = 0;
+wave_2_per_point11=
+wave_2_per_point12=//modulate values to adjust for rotation on multiple axes, convert to world co-ordinates
+wave_2_per_point13=y2 = y1*cos(t1)-z1*sin(t1);
+wave_2_per_point14=z2 = y1*sin(t1)+z1*cos(t1);
+wave_2_per_point15=x2 = z2*sin(t2)+x1*cos(t2);
+wave_2_per_point16=z3 = z2*cos(t2)-x1*sin(t2);
+wave_2_per_point17=x3 = x2*cos(t3)-y2*sin(t3);
+wave_2_per_point18=y3 = y2*cos(t3)+x2*sin(t3);
+wave_2_per_point19=//move resulting shape in 3d space
+wave_2_per_point20=x4 = x3;
+wave_2_per_point21=y4 = y3;
+wave_2_per_point22=z4 = z3+5;
+wave_2_per_point23=//draw 3d shape in 2d
+wave_2_per_point24=x=0.5+0.5*(x4/(1+z4*0.5));
+wave_2_per_point25=y=0.5+0.5*(y4/(1+z4*0.5));
+wave_2_per_point26=
+wave_2_per_point27=r = -.5 + sin(sample*5+((time*5)+9));
+wave_2_per_point28=r = if(below(r,0),0,r);
+wave_2_per_point29=g = -.5 + sin(sample*5+time*5);
+wave_2_per_point30=g = if(below(g,0),0,g);
+wave_2_per_point31=b = -.5 + sin(sample*5+((time*5)+18));
+wave_2_per_point32=b = if(below(b,0),0,b);
+wave_2_per_point33=r = if(above(bass,1.5),1,r);
+wave_2_per_point34=g = if(above(bass,1.5),1,g);
+wave_2_per_point35=b = if(above(bass,1.5),1,b);
+shapecode_0_enabled=1
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=6.530878
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=0.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=0.500000
+shapecode_0_r2=0.000000
+shapecode_0_g2=0.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=1.000000
+shapecode_0_border_r=0.000000
+shapecode_0_border_g=0.000000
+shapecode_0_border_b=0.000000
+shapecode_0_border_a=1.000000
+shape_0_per_frame1=q8 =oldq8+ 0.0003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+shape_0_per_frame2=oldq8 = q8;
+shape_0_per_frame3=q7 = 0.003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+shape_0_per_frame4=rad = rad + sin(q8);
+shape_0_per_frame5=r2 = bass;
+shape_0_per_frame6=g2 = treb;
+shape_0_per_frame7=b2 = mid;
+shapecode_1_enabled=1
+shapecode_1_sides=100
+shapecode_1_additive=1
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.022480
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=0.800000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=0.300000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=q8 =oldq8+ 0.0003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+shape_1_per_frame2=oldq8 = q8;
+shape_1_per_frame3=q7 = 0.003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+shape_1_per_frame4=rad = .55;
+shape_1_per_frame5=r = min(1,max(0,r + 0.1*sin(time*0.417 + 1)));
+shape_1_per_frame6=g = min(1,max(0,g + 0.1*sin(time*0.391 + 2)));
+shape_1_per_frame7=b = min(1,max(0,b + 0.1*sin(time*0.432 + 4)));
+shape_1_per_frame8=r2 = min(1,max(0,r2 + 0.1*sin(time*0.457 + 3)));
+shape_1_per_frame9=g2 = min(1,max(0,g2 + 0.1*sin(time*0.437 + 5)));
+shape_1_per_frame10=b2 = min(1,max(0,b2 + 0.1*sin(time*0.484 + 6)));
+shape_1_per_frame11=ang = ang-cos(time*.02);
+shape_1_per_frame12=x = .5 + .1*sin(q8*.11);
+shape_1_per_frame13=y = .5 + .1*sin(q8*.51);
+shapecode_2_enabled=1
+shapecode_2_sides=100
+shapecode_2_additive=1
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.650000
+shapecode_2_y=0.620000
+shapecode_2_rad=0.108925
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=0.540000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=0.400000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=q8 =oldq8+ 0.0003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+shape_2_per_frame2=oldq8 = q8;
+shape_2_per_frame3=q7 = 0.003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+shape_2_per_frame4=rad = .750 + .1*sin(q8*.02);
+shape_2_per_frame5=r = min(1,max(0,r + 0.1*sin(time*0.417 + 1)));
+shape_2_per_frame6=g = min(1,max(0,g + 0.1*sin(time*0.391 + 2)));
+shape_2_per_frame7=b = min(1,max(0,b + 0.1*sin(time*0.432 + 4)));
+shape_2_per_frame8=r2 = min(1,max(0,r2 + 0.1*sin(time*0.457 + 3)));
+shape_2_per_frame9=g2 = min(1,max(0,g2 + 0.1*sin(time*0.437 + 5)));
+shape_2_per_frame10=b2 = min(1,max(0,b2 + 0.1*sin(time*0.484 + 6)));
+shape_2_per_frame11=ang = ang+4*sin(q8*.2);
+shapecode_3_enabled=0
+shapecode_3_sides=100
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=1
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+per_frame_1=warp=0;
+per_frame_2=wave_a=0;
+per_frame_3=q8 =oldq8+ 0.0003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_4=oldq8 = q8;
+per_frame_5=q7 = 0.003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_6=zoom = 1+.005*q7;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Zylot - Narell's Fever.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Zylot - Narell's Fever.milk
new file mode 100644
index 00000000..74b1419c
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Zylot - Narell's Fever.milk
@@ -0,0 +1,93 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=3.221673
+fWaveScale=0.685151
+fWaveSmoothing=0.750000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.200000
+ob_g=0.400000
+ob_b=0.220000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.750000
+ib_b=0.550000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=3.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=3.950000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=warp = 0;
+per_frame_2=wave_r = wave_r + .15*sin(time*.222);
+per_frame_3=wave_g = wave_g + .15*sin(time*.333);
+per_frame_4=wave_b = wave_b + .15*sin(time*.444);
+per_frame_5=zoom = zoom+.01 - bass_att*.01;
+per_frame_6=volume = 0.3*(bass+mid);
+per_frame_7=beatrate = if(equal(beatrate,0),1,if(below(volume,0.01),1,beatrate));
+per_frame_8=lastbeat = if(equal(lastbeat,0),time,lastbeat);
+per_frame_9=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_10=peakbass_att = if(above(bass_att,peakbass_att),bass_att,peakbass_att);
+per_frame_11=beat = if(above(volume,0.8),if(below(peakbass_att - bass_att, 0.05*peakbass_att),if(above(time - lastbeat,0.1+0.5*(beatrate-0.1)),1,0),0),0);
+per_frame_12=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_13=peakbass_att = if(equal(beat,0),if(above(time - lastbeat,2*beatrate),peakbass_att*0.95,peakbass_att*0.995),bass_att);
+per_frame_14=lastbeat = if(beat,time,lastbeat);
+per_frame_15=peakbass_att = max(if(beat,bass_att,peakbass_att),1.1*meanbass_att);
+per_frame_16=beatcounter = if(above(beat,0),beatcounter +1, beatcounter);
+per_frame_17=beatcounter = if(above(beatcounter,5), 0, beatcounter);
+per_frame_18=beateven = beatcounter%2;
+per_frame_19=mycounter = if(beateven,if(beat,if(above(mycounter,4),0,mycounter+1),mycounter),mycounter);
+per_frame_20=q2 = if(beat,if(beateven,2,mycounter+3),oldq2);
+per_frame_21=oldq2 = q2;
+per_frame_22=ib_r = ib_r + 0.25*sin(time*0.965);
+per_frame_23=ib_g = ib_g +0.25*sin(time*1.123);
+per_frame_24=ib_b = ib_b + 0.25*sin(time*1.046);
+per_frame_25=ob_r = ob_r + 0.15*sin(time*0.865);
+per_frame_26=ob_g = ob_g +0.15*sin(time*1.103);
+per_frame_27=ob_b = ob_b + 0.15*sin(time*1.086);
+per_pixel_1=rot = .3*tan(.1*sin(pow(rad,4)*20+time)+sin(time*.222)*.1);
+per_pixel_2=zoom = zoom + .1*sin((ang)*q2+time);
+per_frame_init_1=beatcounter =0;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar & Zylot - Sea Of Zigrot.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Zylot - Sea Of Zigrot.milk
new file mode 100644
index 00000000..9f97832a
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar & Zylot - Sea Of Zigrot.milk
@@ -0,0 +1,68 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.800000
+fWaveScale=0.179142
+fWaveSmoothing=0.750000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.199900
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.400000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=warp = 0;
+per_frame_2=wave_b = .25 + mid_att*.3;
+per_frame_3=zoom = zoom + bass_att*.05;
+per_pixel_1=dx = rad*sin(x*y)*.05;
+per_pixel_2=warp = -rad;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - A Million Miles from Earth (Pathfinder Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - A Million Miles from Earth (Pathfinder Mix).milk
new file mode 100644
index 00000000..a9eea02a
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - A Million Miles from Earth (Pathfinder Mix).milk
@@ -0,0 +1,74 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=1
+nWaveMode=7
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.438649
+fWaveSmoothing=0.500000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=1.000000
+wave_b=1.000000
+wave_x=0.500000
+wave_y=0.963000
+ob_size=0.005000
+ob_r=0.400000
+ob_g=0.300000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=1.000000
+ib_g=0.600000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=warp = 0;
+per_frame_2=wave_r = 0.5 + 0.3*sin(time*0.894);
+per_frame_3=wave_g = 0.53 + 0.33*sin(time*1.14);
+per_frame_4=wave_b = 0.2 + 0.1*(1-bass);
+per_frame_5=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_frame_6=dx_r = equal(thresh,2)*0.002*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_frame_7=dy_r = equal(thresh,2)*0.002*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_frame_8=zoom = zoom -0.01*thresh;
+per_frame_9=dx = 1.1* dx_r;
+per_frame_10=dy = 1.1* dy_r;
+per_frame_11=dx = dx + if (above(bass,1.3), 21*dx_r, 0);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - A Million Miles from Earth.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - A Million Miles from Earth.milk
new file mode 100644
index 00000000..b1f57b07
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - A Million Miles from Earth.milk
@@ -0,0 +1,75 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=1
+nWaveMode=7
+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=100.000000
+fWaveScale=0.438649
+fWaveSmoothing=0.500000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=1.000000
+wave_b=1.000000
+wave_x=0.500000
+wave_y=0.976000
+ob_size=0.005000
+ob_r=0.400000
+ob_g=0.300000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=1.000000
+ib_g=0.600000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=warp = 0;
+per_frame_2=wave_r = 0.5 + 0.3*sin(time*0.894);
+per_frame_3=wave_g = 0.53 + 0.33*sin(time*1.14);
+per_frame_4=wave_b = 0.2 + 0.1*(1-bass);
+per_frame_5=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_frame_6=dx_r = equal(thresh,2)*0.004*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_frame_7=dy_r = equal(thresh,2)*0.004*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_frame_8=zoom = zoom -0.01*thresh;
+per_frame_9=dx = 1.1* dx_r;
+per_frame_10=dy = 1.1* dy_r;
+per_frame_11=dx = dx + if (above(bass,1.35), 31*dx_r, 0);
+per_frame_12=dy = if (above(bass,1.3), 0, dy);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Harlequin's Madness (Dark Disorder Mix.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Harlequin's Madness (Dark Disorder Mix.milk
new file mode 100644
index 00000000..7bb7476c
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Harlequin's Madness (Dark Disorder Mix.milk
@@ -0,0 +1,239 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=0.999609
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.640100
+fWaveSmoothing=0.270000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=5.995790
+fWarpScale=1.331000
+fZoomExponent=1.010000
+fShader=0.000000
+zoom=0.998531
+rot=0.002000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.960000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.900000
+ob_b=0.200000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.500000
+ib_g=0.500000
+ib_b=0.500000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=32
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.200000
+shapecode_0_ang=0.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.400000
+shapecode_0_a=0.500000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.200000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=ang = time*0.4;;
+shape_0_per_frame2=x = 0.5 + 0.3*cos(time*1.23) + 0.03*cos(time*0.7);
+shape_0_per_frame3=y = 0.5 + 0.3*sin(time*1.43) + 0.03*sin(time*0.7);
+shape_0_per_frame4=r =0.5 + 0.5*sin(q8*0.613 + 1);
+shape_0_per_frame5=g = 0.5 + 0.5*sin(q8*0.763 + 2);
+shape_0_per_frame6=b = 0.5 + 0.5*sin(q8*0.771 + 5);
+shape_0_per_frame7=r2 = 0.5 + 0.5*sin(q8*0.635 + 4);
+shape_0_per_frame8=g2 = 0.5 + 0.5*sin(q8*0.616+ 1);
+shape_0_per_frame9=b2 = 0.5 + 0.5*sin(q8*0.538 + 3);
+shapecode_1_enabled=1
+shapecode_1_sides=32
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.200000
+shapecode_1_ang=0.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=0.500000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.200000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shape_1_per_frame1=ang = time*0.4;;
+shape_1_per_frame2=x = 0.5 + 0.3*cos(time*1.104) + 0.03*cos(time*0.7);
+shape_1_per_frame3=y = 0.5 + 0.3*sin(time*1.27) + 0.03*sin(time*0.7);
+shape_1_per_frame4=r =0.5 + 0.5*sin(q8*0.613 + 1);
+shape_1_per_frame5=g = 0.5 + 0.5*sin(q8*0.763 + 2);
+shape_1_per_frame6=b = 0.5 + 0.5*sin(q8*0.771 + 5);
+shape_1_per_frame7=r2 = 0.5 + 0.5*sin(q8*0.635 + 4);
+shape_1_per_frame8=g2 = 0.5 + 0.5*sin(q8*0.616+ 1);
+shape_1_per_frame9=b2 = 0.5 + 0.5*sin(q8*0.538 + 3);
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.200000
+shapecode_2_ang=0.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=0.500000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.200000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shape_2_per_frame1=ang = time*0.4;;
+shape_2_per_frame2=x = 0.5 + 0.3*cos(time*1.23) + 0.03*cos(time*0.9);
+shape_2_per_frame3=y = 0.5 + 0.3*sin(time*1.18) + 0.03*sin(time*0.9);
+shape_2_per_frame4=r =0.5 + 0.5*sin(q8*0.413 + 1);
+shape_2_per_frame5=g = 0.5 + 0.5*sin(q8*0.363 + 2);
+shape_2_per_frame6=b = 0.5 + 0.5*sin(q8*0.871 + 5);
+shape_2_per_frame7=r2 = 0.5 + 0.5*sin(q8*0.835 + 4);
+shape_2_per_frame8=g2 = 0.5 + 0.5*sin(q8*0.686+ 1);
+shape_2_per_frame9=b2 = 0.5 + 0.5*sin(q8*0.938 + 3);
+shape_2_per_frame10=sides = 360;
+per_frame_init_1=q8=0;
+per_frame_1=q8 =oldq8+ 0.001*(pow(1.2*bass+0.4*bass_att+0.2*treb+0.2*treb_att+0.2*mid+0.2*mid_att,6)/fps) +0.1/fps;
+per_frame_2=oldq8 = q8;
+per_frame_3=ob_r = 0.3 - 0.3*(0.5*sin(q8*0.701)+ 0.3*cos(q8*0.438));
+per_frame_4=ob_g = 0.6- 0.4*sin(q8*2.924);
+per_frame_5=ob_b = 0.35 - 0.3*cos(q8*0.816);
+per_frame_6=warp =0;
+per_frame_7=ib_size = 0.02;
+per_frame_8=ib_r = ib_r + 0.5*sin(q8*3.034);
+per_frame_9=ib_g = ib_g + 0.5*sin(q8*2.547);
+per_frame_10=ib_b = ib_b - 0.5*sin(q8*1.431);
+per_frame_11=ib_r =0;
+per_frame_12=ib_g =0;
+per_frame_13=ib_b =0;
+per_frame_14=volume = 0.15*(bass_att+bass+mid+mid_att);
+per_frame_15=beatrate = if(equal(beatrate,0),1,if(below(volume,0.01),1,beatrate));
+per_frame_16=lastbeat = if(equal(lastbeat,0),time,lastbeat);
+per_frame_17=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_18=peakbass_att = if(above(bass_att,peakbass_att),bass_att,peakbass_att);
+per_frame_19=beat = if(above(volume,0.8),if(below(peakbass_att - bass_att, 0.05*peakbass_att),if(above(time - lastbeat,0.1+0.5*(beatrate-0.1)),1,0),0),0);
+per_frame_20=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_21=peakbass_att = if(equal(beat,0),if(above(time - lastbeat,2*beatrate),peakbass_att*0.95,peakbass_att*0.995),bass_att);
+per_frame_22=lastbeat = if(beat,time,lastbeat);
+per_frame_23=mybeat = if(beat,mybeat+1,mybeat);
+per_frame_24=mybeat = if(above(mybeat,7),0,mybeat);
+per_frame_25=mybeat2 = if(equal(mybeat,1),1,0);
+per_frame_26=q7 = if(beat*mybeat2,0.001+0.0001*rand(40),oldq7);
+per_frame_27=oldq7=q7;
+per_frame_28=q6 = if(beat*mybeat2,0.001+0.0001*rand(40),oldq6);
+per_frame_29=oldq6=q6;
+per_frame_30=q5= if(beat*mybeat2,0.001+0.0001*rand(40),oldq5);
+per_frame_31=oldq5=q5;
+per_frame_32=q4 = if(beat*mybeat2,0.001+0.0001*rand(40),oldq4);
+per_frame_33=oldq4=q4;
+per_frame_34=Flag = If(beat*mybeat2,if(Rand(2)-1,1,0),oldFlag);
+per_frame_35=oldflag = flag;
+per_frame_36=Ratio = If(Beat*mybeat2,100+rand(60),oldRatio);
+per_frame_37=OldRatio = Ratio;
+per_frame_38=q3 = if(beat*mybeat2,if(flag,ratio,0.75*ratio),oldq3);
+per_frame_39=oldq3=q3;
+per_frame_40=q2 = if(beat*mybeat2,if(flag,0.75*ratio,ratio),oldq2);
+per_frame_41=oldq2=q2;
+per_frame_42=solarize = beat;;
+per_pixel_1=box=(0.7*sqrt(2)-rad)+0.8*abs(x*3-0.4*sin(q1))%2 + 0.8*abs(y*3+0.4*sin(q1))%2;
+per_pixel_2=q1 = 8.3+(sin(x+0.137*q8)-cos(y+0.213*q8));
+per_pixel_3=zoom = if(above(box,1),q1*.1,zoom);
+per_pixel_4=rot = if(above(box,1),0.1*rad+sin(0.385*q8),rot);
+per_pixel_5=dx=if(above(box,1),dx,q4*sin((y-0.5)*q3)+q5*sin((y-0.5)*q2));
+per_pixel_6=dy=if(above(box,1),dy,q6*cos((x-0.5)*q2)+q7*cos((x-0.5)*q3));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness (A Million Miles From Earth Mi.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness (A Million Miles From Earth Mi.milk
new file mode 100644
index 00000000..c0a375ad
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness (A Million Miles From Earth Mi.milk
@@ -0,0 +1,244 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.980000
+fDecay=1.000000
+fVideoEchoZoom=0.999609
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=1
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=1.299910
+fWaveSmoothing=0.630000
+fWaveParam=0.300000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.500000
+mv_r=0.350000
+mv_g=0.350000
+mv_b=0.350000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=1.203212
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=0.787566
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=1.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+shape_0_per_frame2=dx_r = equal(thresh,2)*0.004*sin(5*time)+(1-equal(thresh,2))*dx_r;
+shape_0_per_frame3=dy_r = equal(thresh,2)*0.004*sin(6*time)+(1-equal(thresh,2))*dy_r;
+shape_0_per_frame4=//tex_zoom = 0.8 -0.01*thresh;
+shape_0_per_frame5=fdx = 1.1* dx_r;
+shape_0_per_frame6=fdy = 1.1* dy_r;
+shape_0_per_frame7=x = x+0.1*(fdx + if (above(bass,1.35), 31*dx_r, 0));
+shape_0_per_frame8=y = y+0.01*(if (above(bass,1.3), 0, y));
+shape_0_per_frame9=
+shape_0_per_frame10=
+shape_0_per_frame11=
+shape_0_per_frame12=tex_zoom = 0.8-0.0001*pow((bass+bass_att),5)-0.01*(bass+bass_att);
+shape_0_per_frame13=//tex_ang = bass;
+shape_0_per_frame14=//x = x +0.01*sin(time);
+shape_0_per_frame15=//tex_ang = 0.1*bass;
+shapecode_1_enabled=1
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.730000
+shapecode_1_rad=0.221671
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=2.448624
+shapecode_1_r=1.000000
+shapecode_1_g=0.500000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=0.500000
+shapecode_1_b2=1.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=1.000000
+shape_1_per_frame1=ang = 2*3.1415*sin(0.541*time);
+shape_1_per_frame2=tex_ang = ang;
+shape_1_per_frame3=x = 0.5 + 0.3*cos(time*0.74);
+shape_1_per_frame4=y = 0.5 - 0.34*sin(time*0.894);
+shapecode_2_enabled=1
+shapecode_2_sides=5
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.500000
+shapecode_2_y=0.230000
+shapecode_2_rad=0.221671
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.220186
+shapecode_2_r=0.500000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.500000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=1.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=1.000000
+shape_2_per_frame1=ang = 3.1415*2*sin(time*0.274);
+shape_2_per_frame2=tex_ang = ang;
+shape_2_per_frame3=x = 0.5+0.3*sin(time*0.5317);
+shape_2_per_frame4=y = 0.5+0.35*sin(time*0.6121);
+shapecode_3_enabled=1
+shapecode_3_sides=3
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=1
+shapecode_3_x=0.300000
+shapecode_3_y=0.730000
+shapecode_3_rad=0.221671
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=0.970586
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=1.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=1.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=1.000000
+shape_3_per_frame1=ang = 3.1415*2*cos(time*0.314);
+shape_3_per_frame2=tex_ang = ang;
+shape_3_per_frame3=x = 0.5-0.3*sin(time*0.7117);
+shape_3_per_frame4=y = 0.5-0.36*cos(time*0.5621);
+per_frame_init_1=q8=0;
+per_frame_1=warp=0;
+per_frame_2=q8 =oldq8+ 0.0003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_3=oldq8 = q8;
+per_frame_4=wave_r = 0.5+0.5*sin(1.123*q8);
+per_frame_5=wave_g = 0.5+0.5*sin(q8*1.576);
+per_frame_6=wave_b = 0.5+0.5*cos(q8*1.465);
+per_frame_7=ib_a =0.2*bass;
+per_pixel_1=dx=dx+0.008*sin((y*2-1)*meshx)+0.008*sin((y*2-1)*meshx*1.3333);
+per_pixel_2=dy=dy+0.008*cos((x*2-1)*meshx*1.3333)+0.008*cos((x*2-1)*meshx);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness (Duel Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness (Duel Mix).milk
new file mode 100644
index 00000000..0151860d
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness (Duel Mix).milk
@@ -0,0 +1,225 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.980000
+fDecay=1.000000
+fVideoEchoZoom=1.006596
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=2
+nWaveMode=1
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=1.235590
+fWaveSmoothing=0.630000
+fWaveParam=-0.200000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=2.400000
+mv_dx=0.000000
+mv_dy=-0.100000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=0
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.100000
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.100000
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_init_1=q8=0;
+per_frame_1=warp=0;
+per_frame_2=q8 =oldq8+ 0.0003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_3=oldq8 = q8;
+per_frame_4=wave_r = 0.5+0.5*sin(1.123*q8);
+per_frame_5=wave_g = 0.5+0.5*sin(q8*1.576);
+per_frame_6=wave_b = 0.5+0.5*cos(q8*1.465);
+per_frame_7=ib_r = wave_b;
+per_frame_8=ib_b=wave_g;
+per_frame_9=ib_g=wave_r;
+per_frame_10=ib_a =1;
+per_frame_11=wave_x = 0.5 + 0.32*sin(q8*0.3);
+per_frame_12=wave_y = 0.5 - 0.24*cos(q8*0.2);
+per_frame_13=ob_size = 0.005 - above(bass,2)*0.005;
+per_pixel_1=dx=dx+0.008*sin((y*2-1)*meshx);
+per_pixel_2=dy=dy+0.008*cos((x*2-1)*meshx*1.333);
+per_pixel_3=dx=dx+0.008*sin((y*2-1)*meshx*1.333);
+per_pixel_4=dy=dy+0.008*cos((x*2-1)*meshx);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness (Surealist Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness (Surealist Mix).milk
new file mode 100644
index 00000000..696514cf
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness (Surealist Mix).milk
@@ -0,0 +1,221 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.980000
+fDecay=1.000000
+fVideoEchoZoom=1.006596
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=1
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=1.199252
+fWaveSmoothing=0.630000
+fWaveParam=0.300000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.500000
+mv_r=0.350000
+mv_g=0.350000
+mv_b=0.350000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=0
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.100000
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.100000
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_init_1=q8=0;
+per_frame_1=warp=0;
+per_frame_2=q8 =oldq8+ 0.0003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_3=oldq8 = q8;
+per_frame_4=wave_r = 0.5+0.5*sin(1.123*q8);
+per_frame_5=wave_g = 0.5+0.5*sin(q8*1.576);
+per_frame_6=wave_b = 0.5+0.5*cos(q8*1.465);
+per_frame_7=ib_a =0.2*bass;
+per_frame_8=q2 = q8;
+per_frame_9=q1 = 0.1*q8;
+per_pixel_1=dx=dx+0.008*sin((y*2-1)*meshx)+0.008*sin((y*2-1)*meshx*1.333);
+per_pixel_2=dy=dy+0.008*cos((x*2-1)*meshx*2.6667)-0.008*cos((x*2-1)*meshx);
+per_pixel_3=rot=rot+0.01*sin(rad*(9.5 + 5.5*sin(q8*0.1623)) + q2*1.3 + q1*1.31);
+per_pixel_4=zoom=zoom+0.01*sin(ang*6 + rad*(5.5 + 1.5*sin(q8*0.13)) + q2*1.63 + q1);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness 4 (Spirit Of Twisted Madness Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness 4 (Spirit Of Twisted Madness Mix).milk
new file mode 100644
index 00000000..d9259a39
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness 4 (Spirit Of Twisted Madness Mix).milk
@@ -0,0 +1,94 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=0.999609
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.640100
+fWaveSmoothing=0.270000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=5.995790
+fWarpScale=1.331000
+fZoomExponent=1.010000
+fShader=0.000000
+zoom=0.998531
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.960000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.900000
+ob_b=0.200000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.500000
+ib_g=0.500000
+ib_b=0.500000
+ib_a=0.230000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.250000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=ob_r = 0.7 - 0.3*(0.5*sin(time*0.701)+ 0.3*cos(time*0.438));
+per_frame_2=ob_g = 0.5- 0.4*sin(time*5.924);
+per_frame_3=ob_b = 0.45 - 0.3*cos(time*0.816);
+per_frame_4=warp =0;
+per_frame_5=volume = 0.08*(bass_att+3*bass+mid+mid_att);
+per_frame_6=beatrate = if(equal(beatrate,0),1,if(below(volume,0.01),1,beatrate));
+per_frame_7=lastbeat = if(equal(lastbeat,0),time,lastbeat);
+per_frame_8=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_9=peakbass_att = if(above(bass_att,peakbass_att),bass_att,peakbass_att);
+per_frame_10=beat = if(above(volume,0.8),if(below(peakbass_att - bass_att, 0.05*peakbass_att),if(above(time - lastbeat,0.1+0.5*(beatrate-0.1)),1,0),0),0);
+per_frame_11=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_12=peakbass_att = if(equal(beat,0),if(above(time - lastbeat,2*beatrate),peakbass_att*0.95,peakbass_att*0.995),bass_att);
+per_frame_13=lastbeat = if(beat,time,lastbeat);
+per_frame_14=peakbass_att = max(if(beat,bass_att,peakbass_att),1.1*meanbass_att);
+per_frame_15=q5 = if(beat,0.1*rand(1000),oldq5);
+per_frame_16=oldq5 = q5;
+per_frame_17=q3 = if(beat,0.1*rand(1000),oldq3);
+per_frame_18=oldq3 = q3;
+per_frame_19=ib_size = 0.02;
+per_frame_20=ib_r = ib_r + 0.5*sin(time*2.424);
+per_frame_21=ib_g = ib_g + 0.5*sin(time*2.247);
+per_frame_22=ib_b = ib_b - 0.5*sin(time*1.131);
+per_frame_23=q8 = oldq8 +0.003*(((pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,5)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,4)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,3)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,2)/fps) +(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att)/fps)) + 1/(fps*5);
+per_frame_24=oldq8 = q8;
+per_pixel_1=box=abs(x*2-0.4*sin(q3))%2 + abs(y*2+0.4*sin(q5))%2;
+per_pixel_2=q1 = 4.05+(sin(x+0.237*time)-cos(y+0.513*time));
+per_pixel_3=zoom = if(above(box,1),q1*.1,zoom);
+per_pixel_4=rot = if(above(box,1),sin(0.885*q8),0);
+per_pixel_5=dx = if(above(box,1),sin(0.542*time),0.005*sin((y*2-1)*48)+0.001*tan((y*2-1)*64));
+per_pixel_6=dy= if(above(box,1),sin(0.581*time),((1+abs(sin(q8)))*0.001)*cos((x*2-1)*48)+0.001*tan((x*2-1)*48));
+per_pixel_7=zoomexp = if(above(box,1),3,1);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness.milk
new file mode 100644
index 00000000..19a59ee9
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Altars Of Madness.milk
@@ -0,0 +1,217 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.980000
+fDecay=1.000000
+fVideoEchoZoom=1.006596
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=1
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=1.199252
+fWaveSmoothing=0.630000
+fWaveParam=0.300000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.500000
+mv_r=0.350000
+mv_g=0.350000
+mv_b=0.350000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=0
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.100000
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.100000
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_init_1=q8=0;
+per_frame_1=warp=0;
+per_frame_2=q8 =oldq8+ 0.0003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_3=oldq8 = q8;
+per_frame_4=wave_r = 0.5+0.5*sin(1.123*q8);
+per_frame_5=wave_g = 0.5+0.5*sin(q8*1.576);
+per_frame_6=wave_b = 0.5+0.5*cos(q8*1.465);
+per_frame_7=ib_a =0.2*bass;
+per_pixel_1=dx=dx+0.008*sin((y*2-1)*meshx)+0.008*sin((y*2-1)*meshx*1.3333);
+per_pixel_2=dy=dy+0.008*cos((x*2-1)*meshx*1.3333)+0.008*cos((x*2-1)*meshx);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Attacking Freedom.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Attacking Freedom.milk
new file mode 100644
index 00000000..2dda1bd4
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Attacking Freedom.milk
@@ -0,0 +1,82 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=2.000000
+fDecay=0.960000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=1
+bInvert=1
+fWaveAlpha=1.000000
+fWaveScale=0.224562
+fWaveSmoothing=0.000000
+fWaveParam=-0.500000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.199900
+wave_b=0.700000
+wave_x=0.600000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.030000
+ob_g=0.150000
+ob_b=0.250000
+ob_a=0.000000
+ib_size=0.000000
+ib_r=0.100000
+ib_g=0.500000
+ib_b=0.500000
+ib_a=0.010000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=0.000000
+mv_g=0.700000
+mv_b=1.000000
+mv_a=0.500000
+per_frame_1=warp=0;
+per_frame_2=mv_g = mv_g + 0.1*(0.6*sin(time*0.763) + 0.4*sin(time*1.231));
+per_frame_3=mv_b = mv_b + 0.2*(0.6*sin(time*0.695) + 0.4*sin(time*0.367));
+per_frame_4=q8 = oldq8 +0.003*(((pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,5)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,4)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,3)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,2)/fps) +(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att)/fps)) + 1/(fps*5);
+per_frame_5=oldq8 = q8;
+per_frame_6=wave_x = 0.1*sin(q8*1.0677) + 0.5;
+per_frame_7=wave_y = 0.1*sin(q8*1.1931) + 0.5;
+per_frame_8=q1 = wave_x;
+per_frame_9=q2 = 1-wave_y;
+per_frame_10=cx = wave_x;
+per_frame_11=cy = 1-wave_y;
+per_pixel_1=newx = x - q1;
+per_pixel_2=newy = y - q2;
+per_pixel_3=newrad = min(sqrt((newx)*(newx)+0.5625*(newy)*(newy))*2,sqrt(2));
+per_pixel_4=newzoom = pow(0.996, pow(0.01+sin(newrad*newrad), newrad*2-1));
+per_pixel_5=dx = (newx)*newzoom - newx;
+per_pixel_6=dy = (newy)*newzoom - newy;
+per_pixel_7=rot = -0.1*newrad*(0.5*rad+0.1);
+per_pixel_8=zoom = 1+newzoom*0.3;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Bellanova (New Wave Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Bellanova (New Wave Mix).milk
new file mode 100644
index 00000000..4d8556c1
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Bellanova (New Wave Mix).milk
@@ -0,0 +1,236 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.800000
+fWaveScale=8.311065
+fWaveSmoothing=0.606000
+fWaveParam=-0.500000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.000000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.134784
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.599182
+shapecode_0_r=0.000000
+shapecode_0_g=0.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.200000
+shapecode_0_g2=0.200000
+shapecode_0_b2=0.200000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=x = q3;
+shape_0_per_frame2=y = 1- q4;
+shape_0_per_frame3=r = 0.5 + 0.49*sin(time*0.467);
+shape_0_per_frame4=b = 0.5 + 0.49*sin(time*0.568);
+shape_0_per_frame5=g = 0.5 + 0.49*sin(time*0.669);
+shape_0_per_frame6=r2 = 0.1*(bass+bass_att);
+shape_0_per_frame7=b2 = r2;
+shape_0_per_frame8=g2 = r2;
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=warp = 0;
+per_frame_2=
+per_frame_3=wave_g = 0.5 + 0.5*sin(time*2.13);
+per_frame_4=wave_b = 0.5 + 0.5*sin(0.89*time);
+per_frame_5=wave_r = 0.2 + 0.2*sin(time*1.113);
+per_frame_6=movement =movement + 0.5*(((bass+bass_att + 0.075*pow((bass+0.6*bass_att+0.2*treb_att),3)))/fps);
+per_frame_7=movement = if(above(movement,10000), 0, movement);
+per_frame_8=
+per_frame_9=q3 = 0.5+0.1*sin(movement);
+per_frame_10=q4 = 0.5-0.1*cos(0.781*movement);
+per_frame_11=
+per_frame_12=wave_x = q3;
+per_frame_13=wave_y = 1-q4;
+per_frame_14=decay = 0.995;
+per_frame_15=//decay = 1.0;
+per_pixel_1=newx =x- q3;
+per_pixel_2=newy =y- q4;
+per_pixel_3=newang = atan2(newx,newy);
+per_pixel_4=newrad = min(sqrt((newx)*(newx)+0.5625*(newy)*(newy))*2,sqrt(2));
+per_pixel_5=rot = rot + 0.1*sin(newang*20);
+per_pixel_6=zoom = 1.0+0.1*abs(sin(newang*4));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Chapel Of Ghouls.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Chapel Of Ghouls.milk
new file mode 100644
index 00000000..f00a26e8
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Chapel Of Ghouls.milk
@@ -0,0 +1,284 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.980000
+fDecay=1.000000
+fVideoEchoZoom=0.999609
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=1
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=0.931011
+fWaveSmoothing=0.630000
+fWaveParam=-0.400000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=11.360000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.750000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=100
+shapecode_0_additive=1
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.444842
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=0.200000
+shapecode_0_r2=0.200000
+shapecode_0_g2=0.300000
+shapecode_0_b2=0.200000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=x = 0.5 + 0.3*sin(time*0.9521);
+shape_0_per_frame2=y = 0.5+0.3*sin(time*0.782);
+shape_0_per_frame3=b = 0.2 + 0.199*sin(time*0.462);
+shape_0_per_frame4=g = 0.2 + 0.199*sin(time*0.3462);
+shape_0_per_frame5=r = 0.9 + 0.099*sin(time*0.2786);
+shape_0_per_frame6=r2 = 0.2 + 0.199*sin(time*0.3162);
+shape_0_per_frame7=g2 = 0.2 + 0.199*sin(time*0.29462);
+shape_0_per_frame8=b2 = 0.2 + 0.199*sin(time*0.4042);
+shape_0_per_frame9=//a1=q2;
+shape_0_per_frame10=//a2 = q2;
+shape_0_per_frame11=additive = if(q4,(q4-1)*equal(q3,0),bnot(equal(q3,0)));
+shape_0_per_frame12=textured = bnot(equal(q3,0));
+shapecode_1_enabled=1
+shapecode_1_sides=100
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.444842
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=0.200000
+shapecode_1_r2=0.200000
+shapecode_1_g2=0.300000
+shapecode_1_b2=0.200000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=x = 0.5 + 0.3*sin(time*0.8521);
+shape_1_per_frame2=y = 0.5+0.3*sin(time*0.67682);
+shape_1_per_frame3=b = 0.2 + 0.199*sin(time*0.3462);
+shape_1_per_frame4=g = 0.2 + 0.199*sin(time*0.462);
+shape_1_per_frame5=r = 0.9 + 0.099*sin(time*0.3786);
+shape_1_per_frame6=r2 = 0.2 + 0.199*sin(time*0.4162);
+shape_1_per_frame7=g2 = 0.2 + 0.199*sin(time*0.39462);
+shape_1_per_frame8=b2 = 0.2 + 0.199*sin(time*0.3042);
+shape_1_per_frame9=additive = if(q4,(q4-1)*equal(q3,1),bnot(equal(q3,1)));
+shape_1_per_frame10=textured = bnot(equal(q3,1));
+shapecode_2_enabled=1
+shapecode_2_sides=100
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.444842
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=0.200000
+shapecode_2_r2=0.200000
+shapecode_2_g2=0.300000
+shapecode_2_b2=0.200000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=x = 0.5 + 0.3*sin(time*0.7721);
+shape_2_per_frame2=y = 0.5+0.3*sin(time*0.823);
+shape_2_per_frame3=b = 0.2 + 0.199*sin(time*0.652);
+shape_2_per_frame4=g = 0.2 + 0.199*sin(time*0.4162);
+shape_2_per_frame5=r = 0.9 + 0.099*sin(time*0.1786);
+shape_2_per_frame6=r2 = 0.2 + 0.199*sin(time*0.1862);
+shape_2_per_frame7=g2 = 0.2 + 0.199*sin(time*0.442);
+shape_2_per_frame8=b2 = 0.2 + 0.199*sin(time*0.382);
+shape_2_per_frame9=//a = q2;
+shape_2_per_frame10=//a2 = q2;
+shape_2_per_frame11=additive = if(q4,(q4-1)*equal(q3,2),bnot(equal(q3,2)));
+shape_2_per_frame12=textured = bnot(equal(q3,2));
+shapecode_3_enabled=1
+shapecode_3_sides=100
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=1
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.444842
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=0.200000
+shapecode_3_r2=0.200000
+shapecode_3_g2=0.300000
+shapecode_3_b2=0.200000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+shape_3_per_frame1=x = 0.5 + 0.3*sin(time*0.621);
+shape_3_per_frame2=y = 0.5+0.3*sin(time*0.693);
+shape_3_per_frame3=b = 0.2 + 0.199*sin(time*0.3862);
+shape_3_per_frame4=g = 0.2 + 0.199*sin(time*0.449);
+shape_3_per_frame5=r = 0.9 + 0.099*sin(time*0.3521);
+shape_3_per_frame6=r2 = 0.2 + 0.199*sin(time*0.5252);
+shape_3_per_frame7=g2 = 0.2 + 0.199*sin(time*0.3085);
+shape_3_per_frame8=b2 = 0.2 + 0.199*sin(time*0.4111);
+shape_3_per_frame9=//a = q2;
+shape_3_per_frame10=//a2 = q2;
+shape_3_per_frame11=additive = if(q4,(q4-1)*equal(q3,3),bnot(equal(q3,3)));
+shape_3_per_frame12=textured = bnot(equal(q3,3));
+per_frame_init_1=q4 = int(rand(3));
+per_frame_init_2=q5 = 2+int(rand(3))*(1/3);
+per_frame_init_3=q6 = 2+int(rand(3))*(1/3);
+per_frame_init_4=q7 = 2+int(rand(3))*(1/3);
+per_frame_init_5=q8 = 2+int(rand(3))*(1/3);
+per_frame_1=warp=0;
+per_frame_2=ib_a =0.2*bass;
+per_frame_3=volume = 0.15*(bass_att+bass+mid+mid_att);
+per_frame_4=beatrate = if(equal(beatrate,0),1,if(below(volume,0.01),1,beatrate));
+per_frame_5=lastbeat = if(equal(lastbeat,0),time,lastbeat);
+per_frame_6=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_7=peakbass_att = if(above(bass_att,peakbass_att),bass_att,peakbass_att);
+per_frame_8=beat = if(above(volume,0.8),if(below(peakbass_att - bass_att, 0.05*peakbass_att),if(above(time - lastbeat,0.1+0.5*(beatrate-0.1)),1,0),0),0);
+per_frame_9=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_10=peakbass_att = if(equal(beat,0),if(above(time - lastbeat,2*beatrate),peakbass_att*0.95,peakbass_att*0.995),bass_att);
+per_frame_11=lastbeat = if(beat,time,lastbeat);
+per_frame_12=countertime = if(beat,time,countertime);
+per_frame_13=counter =-1*pow(min((time-countertime-1.5),0),9);
+per_frame_14=beatcounter = if(beat, Beatcounter+1, beatcounter);
+per_frame_15=wave_a = 0;
+per_frame_16=ib_r=0.1+0.0999*sin(time*0.4251);
+per_frame_17=ib_b=0.1+0.0999*sin(time*0.351);
+per_frame_18=ib_g=0.1+0.0999*sin(time*0.543);
+per_frame_19=ob_a =bnot(beat);
+per_frame_20=q2 = beat;
+per_frame_21=q3 = beatcounter%4;
+per_frame_22=monitor = q4;
+per_frame_23=decay =if(q4,1,0.98);
+per_frame_24=q1 =20/fps;
+per_pixel_1=dx= dx+q1*0.005*sin((y-0.5)*meshx*q7) +q1*0.005*sin((y-0.5)*meshx*q4);
+per_pixel_2=dy=dy+q1*0.0025*cos((x-0.5)*meshx*q6)+ q1*0.0025*cos((x-0.5)*meshx*q5);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Cosmic Echoes 1.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Cosmic Echoes 1.milk
new file mode 100644
index 00000000..b9d952cc
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Cosmic Echoes 1.milk
@@ -0,0 +1,72 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.840000
+fDecay=0.900000
+fVideoEchoZoom=2.215847
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=7
+bAdditiveWaves=1
+bWaveDots=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=0.130388
+fWaveSmoothing=0.540000
+fWaveParam=-1.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999514
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=1.000000
+ob_size=0.500000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+per_frame_1=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.4)*0.85+1.4);
+per_frame_2=treb_thresh = above(treb_att,treb_thresh)*2 + (1-above(treb_att,treb_thresh))*((treb_thresh-1.5)*0.75+1.5);
+per_frame_3=bass_on = above(bass_thresh,1.8);
+per_frame_4=treb_on = above(treb_thresh,1.9);
+per_frame_5=swapcolour = bass_on - treb_on;
+per_frame_6=red_aim = if(equal(swapcolour,1),1,if(equal(swapcolour,0),1,0));
+per_frame_7=green_aim = if(equal(swapcolour,1),0,if(equal(swapcolour,0),0.5,0.25));
+per_frame_8=blue_aim = if(equal(swapcolour,1),0,if(equal(swapcolour,0),0,1));
+per_frame_9=red = red + (red_aim - red)*if(equal(swapcolour,1),0.65,0.45);
+per_frame_10=green = green + (green_aim - green)*0.5;
+per_frame_11=blue = blue + (blue_aim - blue)*if(equal(swapcolour,1),0.45,0.65);
+per_frame_12=wave_r = red;
+per_frame_13=wave_g = green;
+per_frame_14=wave_b = blue;
+per_pixel_1=dx = if(above(x,0.5),sin(0.5-x)/15, log10(1/x)/45);
+per_pixel_2=xrot = if(above(rad,0.4),cos(rad*2*x)/25+sin(pow(ang,5))/25,cos(1-rad)/25+2*sin(-rad)/25);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Cosmic Echoes 2.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Cosmic Echoes 2.milk
new file mode 100644
index 00000000..af865229
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Cosmic Echoes 2.milk
@@ -0,0 +1,71 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.840000
+fDecay=0.900000
+fVideoEchoZoom=2.215847
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=7
+bAdditiveWaves=1
+bWaveDots=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=0.130388
+fWaveSmoothing=0.540000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999514
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=1.000000
+ob_size=0.500000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+per_frame_1=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.4)*0.85+1.4);
+per_frame_2=treb_thresh = above(treb_att,treb_thresh)*2 + (1-above(treb_att,treb_thresh))*((treb_thresh-1.5)*0.75+1.5);
+per_frame_3=bass_on = above(bass_thresh,1.8);
+per_frame_4=treb_on = above(treb_thresh,1.9);
+per_frame_5=swapcolour = bass_on - treb_on;
+per_frame_6=red_aim = if(equal(swapcolour,1),1,if(equal(swapcolour,0),1,0));
+per_frame_7=green_aim = if(equal(swapcolour,1),0,if(equal(swapcolour,0),0.5,0.25));
+per_frame_8=blue_aim = if(equal(swapcolour,1),0,if(equal(swapcolour,0),0,1));
+per_frame_9=red = red + (red_aim - red)*if(equal(swapcolour,1),0.65,0.45);
+per_frame_10=green = green + (green_aim - green)*0.5;
+per_frame_11=blue = blue + (blue_aim - blue)*if(equal(swapcolour,1),0.45,0.65);
+per_frame_12=wave_r = red;
+per_frame_13=wave_g = green;
+per_frame_14=wave_b = blue;
+per_pixel_1=dy = if(above(y,0.5),sin(0.5-y)/10, log10(1/y)/35);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Decreasing Dreams (Extended Movement Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Decreasing Dreams (Extended Movement Mix).milk
new file mode 100644
index 00000000..120ac932
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Decreasing Dreams (Extended Movement Mix).milk
@@ -0,0 +1,242 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.900000
+fDecay=0.970000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.800000
+fWaveScale=0.893664
+fWaveSmoothing=0.600000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.995000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.600000
+wave_g=0.600000
+wave_b=0.600000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=1.000000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=-0.002000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=0.000000
+mv_b=0.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.330038
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=x = q1;
+shape_0_per_frame2=y = 1- q2;
+shape_0_per_frame3=r = 0.5 + 0.49*sin(time*0.467);
+shape_0_per_frame4=b = 0.5 + 0.49*sin(time*0.568);
+shape_0_per_frame5=g = 0.5 + 0.49*sin(time*0.669);
+shape_0_per_frame6=r2 = 0.1*(bass+bass_att);
+shape_0_per_frame7=b2 = r2;
+shape_0_per_frame8=g2 = r2;
+shape_0_per_frame9=rad = r2 + 0.2;
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=wave_r = wave_r + 0.200*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+per_frame_2=wave_g = wave_g + 0.200*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+per_frame_3=wave_b = wave_b + 0.200*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+per_frame_4=warp=0;
+per_frame_5=zoom =1;
+per_frame_6=rot=0;
+per_frame_7=decay =0.985;
+per_frame_8=//decay =1;
+per_frame_9=
+per_frame_10=ib_r = 0.666 - 0.333*sin(time*1.234);
+per_frame_11=ib_g = 0.666+0.333*sin(time*2.123);
+per_frame_12=ib_b = 0.01+0.1*treb;
+per_frame_13=
+per_frame_14=movement =movement + 0.5*(((bass+bass_att + 0.075*pow((bass+0.6*bass_att+0.2*treb_att),3)))/fps);
+per_frame_15=movement = if(above(movement,10000), 0, movement);
+per_frame_16=
+per_frame_17=q1 = 0.5+0.1*sin(movement);
+per_frame_18=q2 = 0.5-0.1*cos(0.781*movement);
+per_frame_19=q3 = (35+15*sin(time*0.3426)+0.8*bass);
+per_frame_20=wave_x = q1;
+per_frame_21=wave_y = 1- q2;
+per_pixel_1=newx =x- q1;
+per_pixel_2=newy =y- q2;
+per_pixel_3=newrad = min(sqrt((newx)*(newx)+0.5625*(newy)*(newy))*2,sqrt(2));
+per_pixel_4=dy=0.007*sin((1.3-newrad)*(1.3-newrad)*(q3));
+per_pixel_5=dx=-0.007*cos((1.3-newrad)*(1.3-newrad)*(q3));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Decreasing Dreams (Increasing Memory Mix) .milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Decreasing Dreams (Increasing Memory Mix) .milk
new file mode 100644
index 00000000..dbf17a9c
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Decreasing Dreams (Increasing Memory Mix) .milk
@@ -0,0 +1,254 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.900000
+fDecay=0.970000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.800000
+fWaveScale=1.204525
+fWaveSmoothing=0.600000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.995000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.600000
+wave_g=0.600000
+wave_b=0.600000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=1.000000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=0
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.100000
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.100000
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=wave_r = wave_r + 0.200*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+per_frame_2=wave_g = wave_g + 0.200*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+per_frame_3=wave_b = wave_b + 0.200*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+per_frame_4=warp=0;
+per_frame_5=zoom =1;
+per_frame_6=rot=0;
+per_frame_7=decay =0.97;
+per_frame_8=//decay =1;
+per_frame_9=wave_r = 0.5 + 0.45*( 0.6*sin(1.517*time) + 0.4*mid_effect );
+per_frame_10=wave_b = 0.5 + 0.45*( 0.6*sin(1.088*time) + 0.4*bass_effect );
+per_frame_11=wave_g = 0.5 + 0.45*( 0.6*sin(1.037*time) + 0.4*treb_effect );
+per_frame_12=volume = 0.3*(bass+mid+att);
+per_frame_13=beatrate = equal(beatrate,0) + (1-equal(beatrate,0))*(below(volume,0.01) + (1-below(volume,0.01))*beatrate);
+per_frame_14=lastbeat = lastbeat + equal(lastbeat,0)*time;
+per_frame_15=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_16=peakbass_att = max(bass_att,peakbass_att);
+per_frame_17=beat = above(volume,0.8)*below(peakbass_att - bass_att, 0.05*peakbass_att)*above(time - lastbeat, 0.1 + 0.5*(beatrate - 0.1));
+per_frame_18=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_19=peakbass_att = beat*bass_att + (1-beat)*peakbass_att*(above(time - lastbeat, 2*beatrate)*0.95 + (1-above(time - lastbeat, 2*beatrate))*0.995);
+per_frame_20=lastbeat = beat*time + (1-beat)*lastbeat;
+per_frame_21=peakbass_att = max(peakbass_att,1.1*meanbass_att);
+per_frame_22=//counter = if(beat,counter+rand(10),counter);
+per_frame_23=//counter = if(above(counter,10000),0,counter);
+per_frame_24=test1 = if(beat,0.001*(rand(20)-10),test1);
+per_frame_25=test2 = if(beat,rand(79),test2);
+per_frame_26=test3 = if(beat,0.001*(rand(20)-10),test3);
+per_frame_27=test4 = if(beat,rand(79),test4);
+per_frame_28=
+per_frame_29=q1 =test1;
+per_frame_30=q2 =test2;
+per_frame_31=q3 =test3;
+per_frame_32=q4 =test4;
+per_frame_33=
+per_frame_34=//q1 = 0.001*((counter%20)-10); //multiply amount for dx
+per_frame_35=//q2 = (counter%79); //angle amount for dy
+per_frame_36=//counter2 = if(beat,counter2+rand(10),counter2);
+per_frame_37=//counter2 = if(above(counter2,10000),0,counter2);
+per_frame_38=//q3 = 0.001*((counter2%20)-10); //multiply amount for dy
+per_frame_39=//q4 = (counter2%79); //angle amount for dy
+per_frame_40=monitor = test;
+per_frame_41=zoom = 1.02;
+per_pixel_1=//dx=q1*0.001*sin(ang*q2);
+per_pixel_2=//dy=q3*0.001*cos(ang*q4);
+per_pixel_3=//velocity = 150;
+per_pixel_4=dy=q1*sin((1.3-rad)*(1.3-rad)*q2);
+per_pixel_5=dx=q3*cos((1.3-rad)*(1.3-rad)*q4);
+per_pixel_6=
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Explosive Minds.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Explosive Minds.milk
new file mode 100644
index 00000000..a0a94931
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Explosive Minds.milk
@@ -0,0 +1,72 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=2.000000
+fDecay=1.000000
+fVideoEchoZoom=0.999608
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=2
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.800000
+fWaveScale=0.011046
+fWaveSmoothing=0.750000
+fWaveParam=-0.420000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=1.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.900000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=1.280000
+nMotionVectorsY=1.248000
+mv_dx=-0.060000
+mv_dy=-0.026000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=warp = 0;
+per_frame_2=wave_r = bass_att*.3;
+per_frame_3=wave_g = treb_att*.3;
+per_frame_4=wave_b = mid_att*.3;
+per_frame_5=ob_r = 0.5+0.5*sin(time*5.12);
+per_frame_6=ob_b = 0.5+0.5*sin(time*6.112);
+per_frame_7=ob_g = 0.5+0.5*sin(time*7.212);
+per_frame_8=q1 = zoom + pow((bass+bass_att),3)*.005-.02;
+per_pixel_1=zoom =q1+ rad*sin(ang*25)*.05;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Eye On Reality (Mega 3 Mix)_phat_edit.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Eye On Reality (Mega 3 Mix)_phat_edit.milk
new file mode 100644
index 00000000..8986405e
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Eye On Reality (Mega 3 Mix)_phat_edit.milk
@@ -0,0 +1,258 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.980000
+fVideoEchoZoom=0.996627
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=1
+fWaveAlpha=3.300000
+fWaveScale=0.032546
+fWaveSmoothing=0.000000
+fWaveParam=-0.660000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=2.100000
+fShader=0.000000
+zoom=1.025000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.290770
+sx=1.000000
+sy=1.000000
+wave_r=0.800000
+wave_g=0.500000
+wave_b=0.300000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=0.350000
+mv_g=0.350000
+mv_b=0.350000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=3
+shapecode_0_additive=1
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.330038
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.200000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=x = q7;
+shape_0_per_frame2=y = 1-q8;
+shape_0_per_frame3=
+shape_0_per_frame4=ang=bass;
+shape_0_per_frame5=r = 0.5+ 0.400*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+shape_0_per_frame6=g = 0.5 + 0.400*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+shape_0_per_frame7=b = 0.5 + 0.400*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+shape_0_per_frame8=r2 = 0.5+ 0.400*( 0.60*sin(0.873*time) + 0.40*sin(1.124*time) );
+shape_0_per_frame9=g2 = 0.5 + 0.400*( 0.60*sin(0.947*time) + 0.40*sin(0.978*time) );
+shape_0_per_frame10=b2 = 0.5 + 0.400*( 0.60*sin(0.889*time) + 0.40*sin(0.868*time) );
+shapecode_1_enabled=1
+shapecode_1_sides=100
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.081954
+shapecode_1_ang=5.026548
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=2.063783
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=x = q7;
+shape_1_per_frame2=y = 1-q8;
+shape_1_per_frame3=
+shape_1_per_frame4=
+shape_1_per_frame5=r = 0.5+ 0.400*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+shape_1_per_frame6=g = 0.5 + 0.400*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+shape_1_per_frame7=b = 0.5 + 0.400*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+shape_1_per_frame8=r2 = 0.5+ 0.400*( 0.60*sin(0.873*time) + 0.40*sin(1.124*time) );
+shape_1_per_frame9=g2 = 0.5 + 0.400*( 0.60*sin(0.947*time) + 0.40*sin(0.978*time) );
+shape_1_per_frame10=b2 = 0.5 + 0.400*( 0.60*sin(0.889*time) + 0.40*sin(0.868*time) );
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=q6 =oldq6+ 0.005*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_2=oldq6 = q6;
+per_frame_3=left = 0.5 + 0.25*(sin(0.555*q6) + sin(1.111*q6));
+per_frame_4=right = 0.5 + 0.25*(sin(0.333*q6) + sin(1.222*q6));
+per_frame_5=centrex = (left+right)/2;
+per_frame_6=distx = 0.1 + (abs(centrex-left)+abs(centrex-right))/2;
+per_frame_7=q1 = centrex + distx;
+per_frame_8=q2 = centrex - distx;
+per_frame_9=wave_x = centrex;
+per_frame_10=top = 0.5 + 0.25*(sin(0.888*time) + sin(0.999*time));
+per_frame_11=bottom = 0.5 + 0.25*(sin(0.444*time) + sin(1.333*time));
+per_frame_12=centrey = (top+bottom)/2;
+per_frame_13=disty = 0.1 + (abs(centrey-top)+abs(centrey-bottom))/2;
+per_frame_14=q3 = centrey + disty;
+per_frame_15=q4 = centrey - disty;
+per_frame_16=wave_y = 1-centrey;
+per_frame_17=warp=0;
+per_frame_18=monitor = zoom;
+per_frame_19=zoom = 1;
+per_frame_20=q7 = centrex;
+per_frame_21=q8 = centrey;
+per_frame_22=wave_a = 0;
+per_frame_23=dx = 0;
+per_frame_24=dy =0;
+per_pixel_1=newx = x-q7;
+per_pixel_2=newy = y-q8;
+per_pixel_3=newrad = min(sqrt((newx)*(newx)+0.5625*(newy)*(newy))*2,sqrt(2));
+per_pixel_4=newang = atan2(newx,newy);
+per_pixel_5=newzoom = pow(0.999 + 0.05*sin((q4)*(newang+q3)), pow(sin(newrad*newrad), newrad));
+per_pixel_6=rot=rot+0.16*sin(q6*-3.3+newrad*11)*(1.3-newrad);
+per_pixel_7=zoom=zoom+0.04*sin(q6*1.2+newang*6.28*3);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Forgotten Moon.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Forgotten Moon.milk
new file mode 100644
index 00000000..cdeea863
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Forgotten Moon.milk
@@ -0,0 +1,74 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.006596
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=8
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=0.015199
+fWaveSmoothing=0.630000
+fWaveParam=-0.340000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.100000
+wave_y=0.860000
+ob_size=0.005000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.500000
+mv_r=0.350000
+mv_g=0.350000
+mv_b=0.350000
+mv_a=0.000000
+per_frame_1=warp=0;
+per_frame_2=ib_r = 0.5+0.5*sin(time);
+per_frame_3=ib_g = 0.5+0.5*sin(time*1.576);
+per_frame_4=wave_r = wave_r + 0.350*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );
+per_frame_5=wave_g = wave_g + 0.350*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );
+per_frame_6=wave_b = wave_b + 0.350*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );
+per_frame_7=q8 =oldq8+ 0.0002*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_8=oldq8 = q8;
+per_pixel_1=dx = 0.01*sin(100*y+q8/y);
+per_pixel_2=dy = 0.01*sin(100*x+q8/x);
+per_frame_init_1=q8=0;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Fractopia (Fantic Dancing Lights Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Fractopia (Fantic Dancing Lights Mix).milk
new file mode 100644
index 00000000..96735209
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Fractopia (Fantic Dancing Lights Mix).milk
@@ -0,0 +1,236 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=4.574798
+fWaveSmoothing=0.750000
+fWaveParam=-0.400000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=9.860800
+fWarpScale=16.217400
+fZoomExponent=1.503744
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.999999
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=1.000000
+ob_a=1.000000
+ib_size=0.040000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=-0.002000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=0.000000
+mv_b=0.000000
+mv_a=1.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=0
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.150375
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=1.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=x = 0.5 + 0.05*sin(q1*0.456);
+shape_0_per_frame2=y = 0.5 + 0.05*sin(q1*0.56);
+shape_0_per_frame3=tex_zoom = tex_zoom + 0.5*sin(q1*0.345);
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_init_1=q4 = 0.249+0.5*(rand(100)*0.01);
+per_frame_init_2=q5 = 0.249+0.5*(rand(100)*0.01);
+per_frame_init_3=q6 = 0.249+0.5*(rand(100)*0.01);
+per_frame_1=wave_a =0;
+per_frame_2=movement =movement + 0.5*(((bass+bass_att + 0.075*pow((bass+0.6*bass_att+0.2*treb_att),3)))/fps);
+per_frame_3=movement = if(above(movement,10000), 0, movement);
+per_frame_4=ob_b = q4+0.25*sin(movement*3.816);
+per_frame_5=ob_g = q4+0.25*sin(movement*0.744);
+per_frame_6=ob_r = q4+0.25*sin(movement*0.707);
+per_frame_7=wrap = above(bass+bass_att,3);
+per_frame_8=decay=1;
+per_frame_9=rot=0;
+per_frame_10=zoom =0.98;
+per_frame_11=mv_r = 0;
+per_frame_12=mv_g = 0;
+per_frame_13=mv_b =0;
+per_frame_14=mv_dy = 0.03*sin(movement*0.34);
+per_frame_15=mv_dx = 0.035*(sin(movement*0.217)+cos(movement*0.413)+sin(movement*0.311));
+per_frame_16=warp=0;
+per_frame_17=dx =0.01*sin(movement*5);
+per_frame_18=dy =0.0005*(bass+bass_att);
+per_pixel_1=myy = y-(0.250025);
+per_pixel_2=myx = x-0.5;
+per_pixel_3=dx =dx+ 2*(2*myx*myy);
+per_pixel_4=dy =dy+ 2*((myy*myy) - (myx*myx));
+per_pixel_5=
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Fractopia (Focused Childhood Mix ).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Fractopia (Focused Childhood Mix ).milk
new file mode 100644
index 00000000..4fac8910
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Fractopia (Focused Childhood Mix ).milk
@@ -0,0 +1,248 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=0.073891
+fWaveSmoothing=0.750000
+fWaveParam=-0.480000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=9.860800
+fWarpScale=16.217400
+fZoomExponent=1.503744
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.999999
+sx=1.000000
+sy=1.000000
+wave_r=0.900000
+wave_g=0.200000
+wave_b=0.400000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=1.000000
+ob_g=0.100000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.050000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=0.000000
+mv_g=0.000000
+mv_b=0.000000
+mv_a=1.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=0
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.537415
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.725085
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=1.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=warp = 0;
+per_frame_2=volume = 0.3*(bass+mid+att);
+per_frame_3=xamptarg = if(equal(frame%15,0),min(0.25*volume*(60*bass_att/fps),0.5),xamptarg);
+per_frame_4=xamp = xamp + 0.5*(xamptarg-xamp);
+per_frame_5=xdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir));
+per_frame_6=xspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_7=xpos = xpos + 0.001*xspeed;
+per_frame_8=yamptarg = if(equal(frame%15,0),min(0.15*volume*(60*treb_att/fps),0.5),yamptarg);
+per_frame_9=yamp = yamp + 0.5*(yamptarg-yamp);
+per_frame_10=ydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir));
+per_frame_11=yspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_12=ypos = ypos + 0.001*yspeed;
+per_frame_13=beatrate = equal(beatrate,0) + (1-equal(beatrate,0))*(below(volume,0.01) + (1-below(volume,0.01))*beatrate);
+per_frame_14=lastbeat = lastbeat + equal(lastbeat,0)*time;
+per_frame_15=meanbass_att = 0.1*(meanbass_att*(bass_att));
+per_frame_16=peakbass_att = max((bass_att),peakbass_att);
+per_frame_17=beat = above(volume,0.8)*below(peakbass_att - (bass_att), 0.05*peakbass_att)*above(time - lastbeat, 0.1 + 0.5*(beatrate - 0.1));
+per_frame_18=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_19=peakbass_att = beat*(bass_att) + (1-beat)*peakbass_att*(above(time - lastbeat, 2*beatrate)*0.95 + (1-above(time - lastbeat, 2*beatrate))*0.995);
+per_frame_20=lastbeat = beat*time + (1-beat)*lastbeat;
+per_frame_21=peakbass_att = max(peakbass_att,1.1*meanbass_att);
+per_frame_22=wave_x = xpos + 0.5;
+per_frame_23=wave_y = 1-(ypos + 0.5);
+per_frame_24=wave_r = 0.5 + 0.499*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );
+per_frame_25=wave_g = 0.5 + 0.499*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );
+per_frame_26=wave_b = 0.5 + 0.499*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );
+per_frame_27=q1 = wave_x;
+per_frame_28=q2 = ypos+0.5;
+per_frame_29=movement =movement + 0.4*(((bass+bass_att + 0.1*pow((bass+0.6*bass_att+0.2*treb_att),3)))/fps);
+per_frame_30=movement = if(above(movement,10000), 0, movement);
+per_frame_31=q8 = movement;
+per_frame_32=ib_size = ib_size + (beat);
+per_frame_33=ib_r = beat*rand(100)*0.01;
+per_frame_34=ib_g = beat*rand(100)*0.01;
+per_frame_35=ib_b = beat*rand(100)*0.01;
+per_frame_36=zoom =1.3 + 0.5*sin(movement*0.821);
+per_frame_37=wrap = 1-beat;
+per_pixel_1=myx = x-(q1);
+per_pixel_2=myy = y-q2+0.1;
+per_pixel_3=dx = 3.5*sin(q8*0.567)*(2*myy*myx);
+per_pixel_4=dy = 3.5*sin(q8*0.567)*((myy*myy) - (myx*myx));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Fractopia (Fractal Havok Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Fractopia (Fractal Havok Mix).milk
new file mode 100644
index 00000000..7d4ca322
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Fractopia (Fractal Havok Mix).milk
@@ -0,0 +1,233 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=4.574798
+fWaveSmoothing=0.750000
+fWaveParam=-0.400000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=9.860800
+fWarpScale=16.217400
+fZoomExponent=1.503744
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.999999
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=1.000000
+ob_a=1.000000
+ib_size=0.040000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=0.000000
+mv_b=0.000000
+mv_a=0.600000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=0
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.150375
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=1.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=x = 0.5 + 0.05*sin(q1*0.456);
+shape_0_per_frame2=y = 0.5 + 0.05*sin(q1*0.56);
+shape_0_per_frame3=tex_zoom = tex_zoom + 0.5*sin(q1*0.345);
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_init_1=q4 = 0.249+0.5*(rand(100)*0.01);
+per_frame_init_2=q5 = 0.249+0.5*(rand(100)*0.01);
+per_frame_init_3=q6 = 0.249+0.5*(rand(100)*0.01);
+per_frame_1=mv_r = 0.5 + 0.499*(0.60*sin(3.980*time) + 0.40*sin(1.047*time) );
+per_frame_2=mv_g = 0.5+ 0.499*(0.60*sin(0.835*time) + 0.40*sin(1.081*time) );
+per_frame_3=mv_b = 0.5 + 0.499*(0.60*sin(0.814*time) + 0.40*sin(1.011*time) );
+per_frame_4=wave_a =0;
+per_frame_5=warp=0;
+per_frame_6=movement =movement + 0.5*(((bass+bass_att + 0.075*pow((bass+0.6*bass_att+0.2*treb_att),3)))/fps);
+per_frame_7=movement = if(above(movement,10000), 0, movement);
+per_frame_8=rot =-0.04+ 0.01*(sin(movement*0.696)+cos(movement*0.463)+sin(movement*0.365));
+per_frame_9=cx = 0 + 0.1*(sin(movement*0.247)+cos(movement*0.373)+sin(movement*0.187));
+per_frame_10=cy = 0 + 0.1*(sin(movement*0.317)+cos(movement*0.209)+sin(movement*0.109));
+per_frame_11=ob_b = q4+0.25*sin(movement*3.816);
+per_frame_12=ob_g = q4+0.25*sin(movement*0.744);
+per_frame_13=ob_r = q4+0.25*sin(movement*0.707);
+per_frame_14=wrap = below(bass+bass_att,3);
+per_frame_15=zoom = 0.99 + 0.0035*(sin(movement*0.217)+cos(movement*0.413)+sin(movement*0.311));
+per_frame_16=q1 = movement;
+per_pixel_1=myy = y-(0.250025);
+per_pixel_2=myx = x-0.095;
+per_pixel_3=dx = 2*(2*myx*myy);
+per_pixel_4=dy = 2*((myy*myy) - (myx*myx));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Fractopia (Upspoken Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Fractopia (Upspoken Mix).milk
new file mode 100644
index 00000000..31ede31c
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Fractopia (Upspoken Mix).milk
@@ -0,0 +1,263 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=0
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=0.180933
+fWaveSmoothing=0.750000
+fWaveParam=-0.200000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=9.860800
+fWarpScale=16.217400
+fZoomExponent=1.503744
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.999999
+sx=1.000000
+sy=1.000000
+wave_r=0.900000
+wave_g=0.200000
+wave_b=0.400000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=1.000000
+ob_g=0.100000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.050000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=0.000000
+mv_b=0.000000
+mv_a=1.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=0
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.537415
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.725085
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=1.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=warp = 0;
+per_frame_2=volume = 0.3*(bass+mid+att);
+per_frame_3=xamptarg = if(equal(frame%15,0),min(0.25*volume*bass_att,0.5),xamptarg);
+per_frame_4=xamp = xamp + 0.5*(xamptarg-xamp);
+per_frame_5=xdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir));
+per_frame_6=xspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_7=xpos = xpos + 0.001*xspeed;
+per_frame_8=yamptarg = if(equal(frame%15,0),min(0.15*volume*treb_att,0.5),yamptarg);
+per_frame_9=yamp = yamp + 0.5*(yamptarg-yamp);
+per_frame_10=ydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir));
+per_frame_11=yspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_12=ypos = ypos + 0.001*yspeed;
+per_frame_13=beatrate = equal(beatrate,0) + (1-equal(beatrate,0))*(below(volume,0.01) + (1-below(volume,0.01))*beatrate);
+per_frame_14=lastbeat = lastbeat + equal(lastbeat,0)*time;
+per_frame_15=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_16=peakbass_att = max(bass_att,peakbass_att);
+per_frame_17=beat = above(volume,0.8)*below(peakbass_att - bass_att, 0.05*peakbass_att)*above(time - lastbeat, 0.1 + 0.5*(beatrate - 0.1));
+per_frame_18=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_19=peakbass_att = beat*bass_att + (1-beat)*peakbass_att*(above(time - lastbeat, 2*beatrate)*0.95 + (1-above(time - lastbeat, 2*beatrate))*0.995);
+per_frame_20=lastbeat = beat*time + (1-beat)*lastbeat;
+per_frame_21=peakbass_att = max(peakbass_att,1.1*meanbass_att);
+per_frame_22=wave_x = xpos + 0.5;
+per_frame_23=wave_y = 1-(ypos + 0.5);
+per_frame_24=wave_r = 0.5 + 0.499*( 0.60*sin(0.980*time) + 0.40*sin(1.047*time) );
+per_frame_25=wave_g = 0.5 + 0.499*( 0.60*sin(0.835*time) + 0.40*sin(1.081*time) );
+per_frame_26=wave_b = 0.5 + 0.499*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );
+per_frame_27=wave_mystery = -0.17 + 0.03*(0.6*sin(0.637*time) + 0.4*sin(0.949*time));
+per_frame_28=mv_r = if(beat, 1, ib_r);
+per_frame_29=mv_b = if(beat, wave_b, ib_b);
+per_frame_30=//mv_a = if(beat, 0.1, ib_a);
+per_frame_31=//ib_a = 0.015;
+per_frame_32=q3 = wave_mystery;
+per_frame_33=q1 = wave_x;
+per_frame_34=q2 = 1-wave_y;
+per_frame_35=q2 = ypos+0.5;
+per_frame_36=warp=0;
+per_frame_37=
+per_frame_38=//q2 = 1-(ypos + 0.5);
+per_frame_39=//q1 = 0.5;
+per_frame_40=//q2=0.5;
+per_frame_41=ob_r = 1-wave_g;
+per_frame_42=ob_b = 1-wave_r;
+per_frame_43=ob_g = 1-wave_b;
+per_frame_44=
+per_frame_45=monitor = wave_y;
+per_frame_46=movement =movement + 0.4*(((bass+bass_att + 0.1*pow((bass+0.6*bass_att+0.2*treb_att),3)))/fps);
+per_frame_47=movement = if(above(movement,10000), 0, movement);
+per_frame_48=rot =1*sin(movement);
+per_frame_49=cx = wave_x;
+per_frame_50=cy = y_pos+0.5;
+per_frame_51=
+per_frame_52=q8 = movement;
+per_pixel_1=myy = x-q1;
+per_pixel_2=myx = y-q2+0.1;
+per_pixel_3=dx = 3*sin(q8*0.675)*(2*myx*myy);
+per_pixel_4=dy = 3*sin(q8*0.675)*((myx*myx) - (myy*myy));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Future Speakers.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Future Speakers.milk
new file mode 100644
index 00000000..12dd0bdd
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Future Speakers.milk
@@ -0,0 +1,280 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.900000
+fDecay=0.970000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.800000
+fWaveScale=1.447717
+fWaveSmoothing=0.600000
+fWaveParam=-0.500000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.995000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=1.000000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=-0.002000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=0.000000
+mv_g=0.000000
+mv_b=0.400000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.330038
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=x = q1;
+shape_0_per_frame2=y = 1- q2;
+shape_0_per_frame3=r = 0.5 + 0.49*sin(time*1.467);
+shape_0_per_frame4=b = 0.5 + 0.49*sin(time*0.768);
+shape_0_per_frame5=g = 0.5 + 0.49*sin(time*0.559);
+shape_0_per_frame6=r2 = 0.1*(bass+bass_att);
+shape_0_per_frame7=b2 = r2;
+shape_0_per_frame8=g2 = r2;
+shape_0_per_frame9=rad = r2 + 0.2;
+shapecode_1_enabled=1
+shapecode_1_sides=100
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.330038
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=r = 0.5 + 0.49*sin(time*0.467);
+shape_1_per_frame2=b = 0.5 + 0.49*sin(time*0.568);
+shape_1_per_frame3=g = 0.5 + 0.49*sin(time*0.669);
+shape_1_per_frame4=r2 = 0.1*(bass+bass_att);
+shape_1_per_frame5=b2 = r2;
+shape_1_per_frame6=g2 = r2;
+shape_1_per_frame7=rad = r2 + 0.2;
+shape_1_per_frame8=x = q1+0.3*sin(time*0.85);
+shape_1_per_frame9=y = 1-q2-0.4*cos(time*0.85);
+shapecode_2_enabled=1
+shapecode_2_sides=100
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.330038
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=r = 0.5 + 0.49*sin(time*0.467);
+shape_2_per_frame2=b = 0.5 + 0.49*sin(time*0.568);
+shape_2_per_frame3=g = 0.5 + 0.49*sin(time*0.669);
+shape_2_per_frame4=r2 = 0.1*(bass+bass_att);
+shape_2_per_frame5=b2 = r2;
+shape_2_per_frame6=g2 = r2;
+shape_2_per_frame7=rad = r2 + 0.2;
+shape_2_per_frame8=x = q1+0.3*sin(time*0.85+2.07);
+shape_2_per_frame9=y = 1-q2-0.4*cos(time*0.85+2.07);
+shapecode_3_enabled=1
+shapecode_3_sides=100
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.330038
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+shape_3_per_frame1=x = q1;
+shape_3_per_frame2=y = 1- q2;
+shape_3_per_frame3=r = 0.5 + 0.49*sin(time*0.467);
+shape_3_per_frame4=b = 0.5 + 0.49*sin(time*0.568);
+shape_3_per_frame5=g = 0.5 + 0.49*sin(time*0.669);
+shape_3_per_frame6=r2 = 0.1*(bass+bass_att);
+shape_3_per_frame7=b2 = r2;
+shape_3_per_frame8=g2 = r2;
+shape_3_per_frame9=rad = r2 + 0.2;
+shape_3_per_frame10=x = q1+0.3*sin(time*0.85+4.14);
+shape_3_per_frame11=y = 1-q2-0.4*cos(time*0.85+4.14);
+per_frame_1=wave_r = wave_r + 0.250*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+per_frame_2=wave_g = wave_g + 0.480*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+per_frame_3=wave_b = wave_b + 0.370*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+per_frame_4=warp=0;
+per_frame_5=zoom =1;
+per_frame_6=rot=0;
+per_frame_7=decay =1;
+per_frame_8=ib_r = 0.16 + 0.15*sin(time*0.783);
+per_frame_9=ib_g = 0.16 + 0.15*sin(time*0.895);
+per_frame_10=ib_b = 0.75 +0.24*sin(time*1.134);
+per_frame_11=ib_size = 0.005*above(bass+bass_att,2.8);
+per_frame_12=ib_size =0;
+per_frame_13=mv_r = ib_r;
+per_frame_14=mv_b = ib_b;
+per_frame_15=mv_g = ib_g;
+per_frame_16=
+per_frame_17=movement =movement + 0.5*(((bass+bass_att + 0.075*pow((bass+0.6*bass_att+0.2*treb_att),3)))/fps);
+per_frame_18=movement = if(above(movement,10000), 0, movement);
+per_frame_19=
+per_frame_20=q1 = 0.5+0.2*sin(movement);
+per_frame_21=q2 = 0.5-0.2*cos(0.781*movement);
+per_frame_22=q3 = movement;
+per_frame_23=wave_x = q1;
+per_frame_24=wave_y = 1-q2;
+per_frame_25=
+per_pixel_1=newx =x- q1;
+per_pixel_2=newy =y- q2;
+per_pixel_3=newrad = min(sqrt((newx)*(newx)+0.5625*(newy)*(newy))*2,sqrt(2));
+per_pixel_4=newang = atan2(newx,newy);
+per_pixel_5=//effect = ((1-newrad)*(1-newrad))*(0.0*((0.9+0.2*sin(q3*0.23))*y)*((0.9+0.2*sin(q3*0.197))*x));
+per_pixel_6=effect = sqrt(2)-newrad;
+per_pixel_7=effect2 = newang;
+per_pixel_8=//effect = sqrt(2)-rad;
+per_pixel_9=zoom=0.9-(0.1*bass)*cos(pow((effect),3)*8*(bass_att+1));
+per_pixel_10=
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Hallucinogenic Pyramids (Beat Time Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Hallucinogenic Pyramids (Beat Time Mix).milk
new file mode 100644
index 00000000..18bdb258
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Hallucinogenic Pyramids (Beat Time Mix).milk
@@ -0,0 +1,75 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=2.000000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=6
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=11.940000
+fWaveScale=1.599182
+fWaveSmoothing=0.700000
+fWaveParam=1.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.772000
+fZoomExponent=1.001000
+fShader=0.000000
+zoom=1.007000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.700000
+wave_g=0.300000
+wave_b=0.300000
+wave_x=0.000000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.400000
+ob_g=0.300000
+ob_b=0.000000
+ob_a=0.700000
+ib_size=0.005000
+ib_r=0.650000
+ib_g=0.050000
+ib_b=0.450000
+ib_a=0.300000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.200*( 0.60*sin(0.823*time) + 0.40*sin(0.916*time) );
+per_frame_2=wave_g = wave_g + 0.500*( 0.60*sin(0.900*time) + 0.40*sin(1.023*time) );
+per_frame_3=wave_b = wave_b + 0.500*( 0.60*sin(0.808*time) + 0.40*sin(0.949*time) );
+per_frame_4=decay = decay - 0.03*equal(frame%30,0);
+per_frame_5=treb_effect = max(max(treb,treb_att)-1.25,0);
+per_frame_6=mid_effect= max(max(mid,mid_att)-1.25,0);
+per_frame_7=ob_size = ob_size + 0.005*treb_effect;
+per_frame_8=ib_size = ib_size + 0.005*mid_effect;
+per_frame_9=ob_r = ob_r -0.2* treb_effect +0.2* mid_effect;
+per_frame_10=ib_g = ib_g + 0.2*mid_effect- 0.2*treb_effect;
+per_pixel_1=ok_to_change = if(above(time,beat_time+5),1,0);
+per_pixel_2=bass_effect = max(bass, bass_att)-1;
+per_pixel_3=beat_time = if(above(bass_effect,0.5), if(ok_to_change,time,beat_time),beat_time);
+per_pixel_4=effect = if(equal(time,beat_time),abs(effect-1),effect);
+per_pixel_5=bass_effect = max(max(bass,bass_att)-1.34,0);
+per_pixel_6=zoom = if(above(effect,0),0.4*x,0.4*y) +0.6 -0.13*(min(bass_effect,0.3));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Harlequin's Dynamic Fractal (Crazed Spiral Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Harlequin's Dynamic Fractal (Crazed Spiral Mix).milk
new file mode 100644
index 00000000..75945057
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Harlequin's Dynamic Fractal (Crazed Spiral Mix).milk
@@ -0,0 +1,76 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=0.999609
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.640100
+fWaveSmoothing=0.270000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=5.995790
+fWarpScale=1.331000
+fZoomExponent=1.010000
+fShader=0.000000
+zoom=0.998531
+rot=0.002000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.960000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.900000
+ob_b=0.200000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.500000
+ib_g=0.500000
+ib_b=0.500000
+ib_a=1.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=48.000000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=ob_r = 0.3 - 0.3*(0.5*sin(time*0.701)+ 0.3*cos(time*0.438));
+per_frame_2=ob_g = 0.6- 0.4*sin(time*2.924);
+per_frame_3=ob_b = 0.35 - 0.3*cos(time*0.816);
+per_frame_4=cx = cx - 0.1*sin(time*0.342);
+per_frame_5=cy = cy + 0.1*sin(time*0.433);
+per_frame_6=warp =0;
+per_frame_7=ib_size = 0.02;
+per_frame_8=ib_r = ib_r + 0.5*sin(time*3.034);
+per_frame_9=ib_g = ib_g + 0.5*sin(time*2.547);
+per_frame_10=ib_b = ib_b - 0.5*sin(time*1.431);
+per_frame_11=dx = dx -0.008*sin(time*0.23);
+per_frame_12=dy = dy - 0.008*sin(time*0.2);
+per_pixel_1=box=(1-rad)+0.5*abs(x*3-0.4*sin(q1))%2 + 0.5*abs(y*3+0.4*sin(q1))%2;
+per_pixel_2=q1 = 8.05+(sin(x+0.137*time)-cos(y+0.213*time));
+per_pixel_3=zoom = if(above(box,1),q1*.1,zoom);
+per_pixel_4=rot = if(above(box,1),1*sin(0.385*time),rot);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Harlequin's Fractal Encounter.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Harlequin's Fractal Encounter.milk
new file mode 100644
index 00000000..ec0d2949
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Harlequin's Fractal Encounter.milk
@@ -0,0 +1,113 @@
+[preset00]
+fRating=4.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=0.999609
+fVideoEchoAlpha=1.000000
+nVideoEchoOrientation=1
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=7.014853
+fWaveScale=0.010000
+fWaveSmoothing=0.270000
+fWaveParam=-0.400000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=5.995790
+fWarpScale=1.331000
+fZoomExponent=1.010000
+fShader=0.000000
+zoom=0.998531
+rot=0.002000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.100000
+wave_y=0.900000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.900000
+ob_b=0.200000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.500000
+ib_g=0.500000
+ib_b=0.500000
+ib_a=1.000000
+nMotionVectorsX=63.936001
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=0.630000
+mv_g=0.200000
+mv_b=0.300000
+mv_a=0.000000
+per_frame_1=ob_r = 0.4 - 0.3*(0.5*sin(time*0.701)+ 0.3*cos(time*0.438));
+per_frame_2=ob_g = 0.5 - 0.46*sin(time*1.724);
+per_frame_3=ob_b = 0.65 - 0.3*cos(time*1.816);
+per_frame_4=warp =0;
+per_frame_5=ib_size = 0.025;
+per_frame_6=ib_r = ib_r + 0.5*(0.6*sin(time*3.034)+0.4*cos(time*2.14));
+per_frame_7=ib_g = ib_g + 0.5*(0.6*sin(time*3.147)+0.4*cos(time*2.015));
+per_frame_8=ib_b = ib_b - 0.5*(0.6*sin(time*3.431)+0.4*cos(time*1.842));
+per_frame_9=dx = dx -0.003*(0.6*sin(time*0.234) + 0.4*cos(time*0.437));
+per_frame_10=dy = dy - 0.003*(0.7*sin(time*0.213) + 0.3*cos(time*0.315));
+per_frame_11=volume = 0.15*(bass+bass_att+treb+treb_att+mid+mid_att);
+per_frame_12=xamptarg = if(equal(frame%15,0),min(0.5*volume*bass_att,0.5),xamptarg);
+per_frame_13=xamp = xamp + 0.5*(xamptarg-xamp);
+per_frame_14=xdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir));
+per_frame_15=xaccel = xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_16=xspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_17=xpos = xpos + 0.001*xspeed;
+per_frame_18=q2 = xpos;
+per_frame_19=yamptarg = if(equal(frame%15,0),min(0.3*volume*treb_att,0.5),yamptarg);
+per_frame_20=yamp = yamp + 0.5*(yamptarg-yamp);
+per_frame_21=ydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir));
+per_frame_22=yaccel = ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_23=yspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_24=ypos = ypos + 0.001*yspeed;
+per_frame_25=q4 = ypos;
+per_frame_26=bass_effect = max(max(bass,bass_att)-1.2,0);
+per_frame_27=echo_zoom = 1.32 + 0.3*(0.59*sin(q4+time*0.865) + 0.41*cos(q2+time*1.192)) + 0.05*bass_effect;
+per_frame_28=volume = 0.15*(bass_att+bass+mid+mid_att);
+per_frame_29=beatrate = if(equal(beatrate,0),1,if(below(volume,0.01),1,beatrate));
+per_frame_30=lastbeat = if(equal(lastbeat,0),time,lastbeat);
+per_frame_31=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_32=peakbass_att = if(above(bass_att,peakbass_att),bass_att,peakbass_att);
+per_frame_33=beat = if(above(volume,0.8),if(below(peakbass_att - bass_att, 0.05*peakbass_att),if(above(time - lastbeat,0.1+0.5*(beatrate-0.1)),1,0),0),0);
+per_frame_34=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_35=peakbass_att = if(equal(beat,0),if(above(time - lastbeat,2*beatrate),peakbass_att*0.95,peakbass_att*0.995),bass_att);
+per_frame_36=lastbeat = if(beat,time,lastbeat);
+per_frame_37=peakbass_att = max(if(beat,bass_att,peakbass_att),1.1*meanbass_att);
+per_frame_38=mode = (mode+beat*(rand(3)+1))%4;
+per_frame_39=echo_orient = mode;
+per_frame_40=wave_a = 0;
+per_frame_41=q6 = beat;
+per_pixel_1=box =0.5+0.8*(2*x%4+2*y%2);
+per_pixel_2=q1 = 8.05+0.3*(sin(pow(x,3)+0.177*time)-cos(pow(y,3)+0.223*time));
+per_pixel_3=q7 = above(box,1);
+per_pixel_4=zoom = if(q7,(q1*.1) + q6*6 ,zoom);
+per_pixel_5=rot = if(q7,0.63*sin(0.5*rad+0.385*time + 0.12*sin(0.67*time) + 0.1*q4 + 0.12*q2 +q6*50),rot);
+per_pixel_6=cx = cx - 0.05*sin(rad+2*q4);
+per_pixel_7=cy = cy + 0.04*sin(((0.5*sqrt(2))-rad)-2*q2);
+per_pixel_8=sx = if(q7,sx+q6*18,sx);
+per_pixel_9=sy = if(q7,sy+q6*18,sy);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Hyperspace (Frozen Rapture Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Hyperspace (Frozen Rapture Mix).milk
new file mode 100644
index 00000000..5e647ecd
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Hyperspace (Frozen Rapture Mix).milk
@@ -0,0 +1,74 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.973000
+fVideoEchoZoom=1.047463
+fVideoEchoAlpha=1.000000
+nVideoEchoOrientation=0
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=1
+bDarken=1
+bSolarize=1
+bInvert=1
+fWaveAlpha=0.900000
+fWaveScale=2.905229
+fWaveSmoothing=0.600000
+fWaveParam=-0.300000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=0.999835
+fShader=0.000000
+zoom=0.999682
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.600000
+wave_g=0.600000
+wave_b=0.600000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=0.350000
+mv_g=0.350000
+mv_b=0.350000
+mv_a=1.000000
+per_frame_1=wave_r = wave_r + 0.400*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+per_frame_2=wave_g = wave_g + 0.100*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+per_frame_3=wave_b = wave_b + 0.100*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+per_frame_4=mv_r = wave_r;
+per_frame_5=mv_b = wave_b;
+per_frame_6=mv_g = wave_g;
+per_frame_7=q1 = 0.05*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_8=//q1 = 0.6*(bass+bass_att);
+per_frame_9=mv_a = if(above(bass-1.2,1),1,bass-1.2);
+per_frame_10=echo_zoom = 1+q1;
+per_pixel_1=zoom = 1.01 + rad*0.15*q1;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Hyperspace.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Hyperspace.milk
new file mode 100644
index 00000000..f691879f
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Hyperspace.milk
@@ -0,0 +1,73 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.973000
+fVideoEchoZoom=1.047463
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.900000
+fWaveScale=2.905229
+fWaveSmoothing=0.600000
+fWaveParam=-0.300000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=0.999835
+fShader=0.000000
+zoom=0.999682
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.600000
+wave_g=0.600000
+wave_b=0.600000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=0.350000
+mv_g=0.350000
+mv_b=0.350000
+mv_a=1.000000
+per_frame_1=wave_r = wave_r + 0.400*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+per_frame_2=wave_g = wave_g + 0.100*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+per_frame_3=wave_b = wave_b + 0.100*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+per_frame_4=mv_r = wave_r;
+per_frame_5=mv_b = wave_b;
+per_frame_6=mv_g = wave_g;
+per_frame_7=q1 = 0.05*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_8=//q1 = 0.6*(bass+bass_att);
+per_frame_9=mv_a = if(above(bass-1.2,1),1,bass-1.2);
+per_pixel_1=zoom = 1.01 + rad*0.15*q1;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Clouded Judgement Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Clouded Judgement Mix).milk
new file mode 100644
index 00000000..a749f5ed
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Clouded Judgement Mix).milk
@@ -0,0 +1,253 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.980000
+fDecay=0.900000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=0.010000
+fWaveSmoothing=0.630000
+fWaveParam=0.018000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=13.290894
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=-0.280000
+dy=-0.320000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.015000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=0.950000
+ib_g=0.850000
+ib_b=0.650000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=0.000000
+mv_g=0.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=3
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=1.621747
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=1.884956
+shapecode_0_tex_zoom=0.424973
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=0.700000
+shapecode_0_r2=1.000000
+shapecode_0_g2=0.600000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=//tex_zoom = 0.05*q6;
+shape_0_per_frame2=a =1;
+shape_0_per_frame3=a1=1;
+shape_0_per_frame4=//tex_zoom =0.1;
+shape_0_per_frame5=x = 0.5 + 0.1*sin(q7*0.986);
+shape_0_per_frame6=y = 0.5 + 0.1*sin(q7*0.846);
+shape_0_per_frame7=tex_ang = 3.1515 + 3.1415*sin(q7*0.4521);
+shapecode_1_enabled=1
+shapecode_1_sides=3
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=1.621747
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=1.884956
+shapecode_1_tex_zoom=0.424973
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=0.700000
+shapecode_1_r2=0.700000
+shapecode_1_g2=0.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=//tex_zoom = 0.05*q6;
+shape_1_per_frame2=a =1;
+shape_1_per_frame3=a1=1;
+shape_1_per_frame4=//tex_zoom =0.1;
+shape_1_per_frame5=x = 0.5 + 0.1*sin(q7*0.986);
+shape_1_per_frame6=y = 0.5 + 0.1*sin(q7*0.846);
+shape_1_per_frame7=tex_ang = 3.1515 + 3.1415*sin(q7*0.521);
+shapecode_2_enabled=1
+shapecode_2_sides=3
+shapecode_2_additive=1
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=1.621747
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=1.884956
+shapecode_2_tex_zoom=0.424973
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=0.700000
+shapecode_2_r2=1.000000
+shapecode_2_g2=0.600000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=//tex_zoom = 0.05*q6;
+shape_2_per_frame2=a =1;
+shape_2_per_frame3=a1=1;
+shape_2_per_frame4=//tex_zoom =0.1;
+shape_2_per_frame5=x = 0.5 + 0.1*sin(q7*0.986);
+shape_2_per_frame6=y = 0.5 + 0.1*sin(q7*0.846);
+shape_2_per_frame7=tex_ang = 3.1515 + 3.1415*sin(q7*0.4521);
+shapecode_3_enabled=1
+shapecode_3_sides=100
+shapecode_3_additive=0
+shapecode_3_thickOutline=1
+shapecode_3_textured=1
+shapecode_3_x=0.900000
+shapecode_3_y=0.900000
+shapecode_3_rad=0.181670
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=1.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=1.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=1.000000
+shapecode_3_a2=1.000000
+shapecode_3_border_r=0.000000
+shapecode_3_border_g=0.000000
+shapecode_3_border_b=0.000000
+shapecode_3_border_a=1.000000
+shape_3_per_frame1=x = 0.5 +0.4*sin(0.1*q8);
+shape_3_per_frame2=y = 0.5+0.4*sin(q7*0.19653);
+shape_3_per_frame3=textured =1;
+per_frame_init_1=q8 =0;
+per_frame_init_2=q7=0;
+per_frame_1=wave_r = 0.5+ 0.2*(bass-1);
+per_frame_2=wave_g = 0.5+ 0.2*(mid-1.2);
+per_frame_3=wave_b = 0.5+ 0.2*(treb-.5);
+per_frame_4=warp =0;
+per_frame_5=ob_r = 1-wave_r;
+per_frame_6=ob_g = 1-wave_g;
+per_frame_7=ob_b = 1-wave_b;
+per_frame_8=ib_r = 0.75 + 0.25*sin(time*0.4123);
+per_frame_9=ib_g = 0.25 + 0.25*cos(time*0.87);
+per_frame_10=ib_b = 0.5+0.5*sin(1.23*time);
+per_frame_11=q8 = oldq8 +0.003*(((pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,5)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,4)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,3)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,2)/fps) +(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att)/fps));
+per_frame_12=oldq8 = q8;
+per_frame_13=q7 =oldq7+ 0.001*(pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,7)/fps);
+per_frame_14=oldq7 = q7;
+per_frame_15=wave_a =0;
+per_frame_16=dy = 0.5 + 0.01*(sin(0.786*q7));
+per_frame_17=dx = 0.1*sin(1.143*q8);
+per_frame_18=q6 = 15+0.1*(((pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,5)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,4)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,3)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,2)/fps) +(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att)/fps));
+per_pixel_1=//dx=dx+0.5*sin((y-0.5)*128);
+per_pixel_2=dy=dy+0.008*cos((x-0.5 - 0.1*sin(q7))*(q6));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Dark Secret Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Dark Secret Mix).milk
new file mode 100644
index 00000000..fa28a1d1
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Dark Secret Mix).milk
@@ -0,0 +1,261 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.980000
+fDecay=0.900000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=1
+fWaveAlpha=4.099998
+fWaveScale=0.010000
+fWaveSmoothing=0.630000
+fWaveParam=0.018000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=13.290894
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=-0.280000
+dy=-0.320000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.015000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=0.950000
+ib_g=0.850000
+ib_b=0.650000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=0.153926
+mv_g=0.153926
+mv_b=0.714137
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=4
+shapecode_0_additive=1
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=1.621747
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=1.884956
+shapecode_0_tex_zoom=0.424973
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=0.600000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=//tex_zoom = 0.05*q6;
+shape_0_per_frame2=a =1;
+shape_0_per_frame3=a1=1;
+shape_0_per_frame4=//tex_zoom =0.1;
+shape_0_per_frame5=x = 0.5 + 0.1*sin(q7*0.986);
+shape_0_per_frame6=y = 0.5 + 0.1*sin(q7*0.846);
+shape_0_per_frame7=tex_ang = 3.1515 + 3.1415*sin(q7*0.4521) +0.05*sin(time);
+shapecode_1_enabled=1
+shapecode_1_sides=4
+shapecode_1_additive=1
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=1.621747
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=1.884956
+shapecode_1_tex_zoom=0.424973
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=0.600000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=//tex_zoom = 0.05*q6;
+shape_1_per_frame2=a =1;
+shape_1_per_frame3=a1=1;
+shape_1_per_frame4=//tex_zoom =0.1;
+shape_1_per_frame5=x = 0.5 + 0.1*sin(q7*0.986);
+shape_1_per_frame6=y = 0.5 + 0.1*sin(q7*0.846);
+shape_1_per_frame7=tex_ang = 3.1515 + 3.1415*sin(q7*0.4521) +0.1*sin(time);
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=1
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=1.621747
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=1.884956
+shapecode_2_tex_zoom=0.424973
+shapecode_2_r=0.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=0.600000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=//tex_zoom = 0.05*q6;
+shape_2_per_frame2=a =1;
+shape_2_per_frame3=a1=1;
+shape_2_per_frame4=//tex_zoom =0.1;
+shape_2_per_frame5=x = 0.5 + 0.1*sin(q7*0.986);
+shape_2_per_frame6=y = 0.5 + 0.1*sin(q7*0.846);
+shape_2_per_frame7=tex_ang = 3.1515 + 3.1415*sin(q7*0.4521) +0.15*sin(time);
+shapecode_3_enabled=1
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=1
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=1.621747
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=1.884956
+shapecode_3_tex_zoom=0.424973
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=1.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=1.000000
+shapecode_3_g2=0.600000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+shape_3_per_frame1=//tex_zoom = 0.05*q6;
+shape_3_per_frame2=a =1;
+shape_3_per_frame3=a1=1;
+shape_3_per_frame4=//tex_zoom =0.1;
+shape_3_per_frame5=x = 0.5 + 0.1*sin(q7*0.986);
+shape_3_per_frame6=y = 0.5 + 0.1*sin(q7*0.846);
+shape_3_per_frame7=tex_ang = 3.1515 + 3.1415*sin(q7*0.4521) +0.2*sin(time);;
+per_frame_init_1=q8 =0;
+per_frame_init_2=q7=0;
+per_frame_1=wave_r = 0.5+ 0.2*(bass-1);
+per_frame_2=wave_g = 0.5+ 0.2*(mid-1.2);
+per_frame_3=wave_b = 0.5+ 0.2*(treb-.5);
+per_frame_4=warp =0;
+per_frame_5=ob_r = 1-wave_r;
+per_frame_6=ob_g = 1-wave_g;
+per_frame_7=ob_b = 1-wave_b;
+per_frame_8=ib_r = 0.75 + 0.25*sin(time*0.4123);
+per_frame_9=ib_g = 0.25 + 0.25*cos(time*0.87);
+per_frame_10=ib_b = 0.5+0.5*sin(1.23*time);
+per_frame_11=q8 = oldq8 +0.003*(((pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,5)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,4)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,3)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,2)/fps) +(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att)/fps));
+per_frame_12=oldq8 = q8;
+per_frame_13=q7 =oldq7+ 0.001*(pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,7)/fps);
+per_frame_14=oldq7 = q7;
+per_frame_15=wave_a =0;
+per_frame_16=dy = 0.5 + 0.01*(sin(0.786*q7));
+per_frame_17=dx = 0.1*sin(1.143*q8);
+per_frame_18=q6 = 15+0.1*(((pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,5)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,4)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,3)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,2)/fps) +(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att)/fps));
+per_frame_19=//q7 =0;
+per_frame_20=invert = 1+sin(q8);
+per_frame_21=monitor = q8;
+per_frame_22=invert =int(1 + sin(0.01*q8));
+per_pixel_1=//dx=dx+0.5*sin((y-0.5)*128);
+per_pixel_2=dy=dy+0.008*cos((x-0.5 - 0.1*sin(q7))*(q6));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Distant Memories Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Distant Memories Mix).milk
new file mode 100644
index 00000000..3b706ea6
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Distant Memories Mix).milk
@@ -0,0 +1,259 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.980000
+fDecay=0.900000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=0.010000
+fWaveSmoothing=0.630000
+fWaveParam=0.018000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=13.290894
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=-0.280000
+dy=-0.320000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.015000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=0.950000
+ib_g=0.850000
+ib_b=0.650000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=0.000000
+mv_g=0.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=4
+shapecode_0_additive=1
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=1.621747
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=1.884956
+shapecode_0_tex_zoom=0.424973
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=0.600000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=//tex_zoom = 0.05*q6;
+shape_0_per_frame2=a =1;
+shape_0_per_frame3=a1=1;
+shape_0_per_frame4=//tex_zoom =0.1;
+shape_0_per_frame5=x = 0.5 + 0.1*sin(q7*0.986);
+shape_0_per_frame6=y = 0.5 + 0.1*sin(q7*0.846);
+shape_0_per_frame7=tex_ang = 3.1515 + 3.1415*sin(q7*0.4521) +0.05*sin(time);
+shapecode_1_enabled=1
+shapecode_1_sides=4
+shapecode_1_additive=1
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=1.621747
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=1.884956
+shapecode_1_tex_zoom=0.424973
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=0.600000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=//tex_zoom = 0.05*q6;
+shape_1_per_frame2=a =1;
+shape_1_per_frame3=a1=1;
+shape_1_per_frame4=//tex_zoom =0.1;
+shape_1_per_frame5=x = 0.5 + 0.1*sin(q7*0.986);
+shape_1_per_frame6=y = 0.5 + 0.1*sin(q7*0.846);
+shape_1_per_frame7=tex_ang = 3.1515 + 3.1415*sin(q7*0.4521) +0.1*sin(time);
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=1
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=1.621747
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=1.884956
+shapecode_2_tex_zoom=0.449770
+shapecode_2_r=0.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=0.600000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=//tex_zoom = 0.05*q6;
+shape_2_per_frame2=a =1;
+shape_2_per_frame3=a1=1;
+shape_2_per_frame4=//tex_zoom =0.1;
+shape_2_per_frame5=x = 0.5 + 0.1*sin(q7*0.986);
+shape_2_per_frame6=y = 0.5 + 0.1*sin(q7*0.846);
+shape_2_per_frame7=tex_ang = 3.1515 + 3.1415*sin(q7*0.4521) +0.15*sin(time);
+shapecode_3_enabled=1
+shapecode_3_sides=4
+shapecode_3_additive=1
+shapecode_3_thickOutline=0
+shapecode_3_textured=1
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=1.621747
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=1.884956
+shapecode_3_tex_zoom=0.424973
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=1.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=1.000000
+shapecode_3_g2=0.600000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+shape_3_per_frame1=//tex_zoom = 0.05*q6;
+shape_3_per_frame2=a =1;
+shape_3_per_frame3=a1=1;
+shape_3_per_frame4=//tex_zoom =0.1;
+shape_3_per_frame5=x = 0.5 + 0.1*sin(q7*0.986);
+shape_3_per_frame6=y = 0.5 + 0.1*sin(q7*0.846);
+shape_3_per_frame7=tex_ang = 3.1515 + 3.1415*sin(q7*0.4521) +0.2*sin(time);;
+per_frame_init_1=q8 =0;
+per_frame_init_2=q7=0;
+per_frame_1=wave_r = 0.5+ 0.2*(bass-1);
+per_frame_2=wave_g = 0.5+ 0.2*(mid-1.2);
+per_frame_3=wave_b = 0.5+ 0.2*(treb-.5);
+per_frame_4=warp =0;
+per_frame_5=ob_r = 1-wave_r;
+per_frame_6=ob_g = 1-wave_g;
+per_frame_7=ob_b = 1-wave_b;
+per_frame_8=ib_r = 0.75 + 0.25*sin(time*0.4123);
+per_frame_9=ib_g = 0.25 + 0.25*cos(time*0.87);
+per_frame_10=ib_b = 0.5+0.5*sin(1.23*time);
+per_frame_11=q8 = oldq8 +0.003*(((pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,5)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,4)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,3)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,2)/fps) +(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att)/fps));
+per_frame_12=oldq8 = q8;
+per_frame_13=q7 =oldq7+ 0.001*(pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,7)/fps);
+per_frame_14=oldq7 = q7;
+per_frame_15=wave_a =0;
+per_frame_16=dy = 0.5 + 0.01*(sin(0.786*q7));
+per_frame_17=dx = 0.1*sin(1.143*q8);
+per_frame_18=q6 = 15+0.1*(((pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,5)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,4)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,3)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,2)/fps) +(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att)/fps));
+per_frame_19=//q7 =0;
+per_frame_20=decay =0.1;
+per_pixel_1=//dx=dx+0.5*sin((y-0.5)*128);
+per_pixel_2=dy=dy+0.008*cos((x-0.5 - 0.1*sin(q7))*(q6));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Frantic Thoughts Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Frantic Thoughts Mix).milk
new file mode 100644
index 00000000..14e251c5
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Frantic Thoughts Mix).milk
@@ -0,0 +1,257 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.980000
+fDecay=0.900000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=0.010000
+fWaveSmoothing=0.630000
+fWaveParam=0.018000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=13.290894
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=-0.280000
+dy=-0.320000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.015000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=0.950000
+ib_g=0.850000
+ib_b=0.650000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=0.000000
+mv_g=0.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=1.621747
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=1.884956
+shapecode_0_tex_zoom=0.424973
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=0.700000
+shapecode_0_r2=1.000000
+shapecode_0_g2=0.600000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=//tex_zoom = 0.05*q6;
+shape_0_per_frame2=a =1;
+shape_0_per_frame3=a1=1;
+shape_0_per_frame4=//tex_zoom =0.1;
+shape_0_per_frame5=x = 0.5 + 0.1*sin(q7*0.986);
+shape_0_per_frame6=y = 0.5 + 0.1*sin(q7*0.846);
+shape_0_per_frame7=tex_ang = 3.1515 + 3.1415*sin(q7*0.4521);
+shapecode_1_enabled=1
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=1.621747
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=1.884956
+shapecode_1_tex_zoom=0.424973
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=0.700000
+shapecode_1_r2=1.000000
+shapecode_1_g2=0.600000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=//tex_zoom = 0.05*q6;
+shape_1_per_frame2=a =1;
+shape_1_per_frame3=a1=1;
+shape_1_per_frame4=//tex_zoom =0.1;
+shape_1_per_frame5=x = 0.5 + 0.1*sin(q7*0.986);
+shape_1_per_frame6=y = 0.5 + 0.1*sin(q7*0.846);
+shape_1_per_frame7=tex_ang = 3.1515 + 3.1415*sin(q7*0.4521);
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=1.621747
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=1.884956
+shapecode_2_tex_zoom=0.424973
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=0.700000
+shapecode_2_r2=1.000000
+shapecode_2_g2=0.600000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=//tex_zoom = 0.05*q6;
+shape_2_per_frame2=a =1;
+shape_2_per_frame3=a1=1;
+shape_2_per_frame4=//tex_zoom =0.1;
+shape_2_per_frame5=x = 0.5 + 0.1*sin(q7*0.986);
+shape_2_per_frame6=y = 0.5 + 0.1*sin(q7*0.846);
+shape_2_per_frame7=tex_ang = 3.1515 + 3.1415*sin(q7*0.4521);
+shapecode_3_enabled=1
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=1
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=1.621747
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=1.884956
+shapecode_3_tex_zoom=0.424973
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=1.000000
+shapecode_3_a=0.700000
+shapecode_3_r2=1.000000
+shapecode_3_g2=0.600000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+shape_3_per_frame1=//tex_zoom = 0.05*q6;
+shape_3_per_frame2=a =1;
+shape_3_per_frame3=a1=1;
+shape_3_per_frame4=//tex_zoom =0.1;
+shape_3_per_frame5=x = 0.5 + 0.1*sin(q7*0.986);
+shape_3_per_frame6=y = 0.5 + 0.1*sin(q7*0.846);
+shape_3_per_frame7=tex_ang = 3.1515 + 3.1415*sin(q7*0.4521);
+per_frame_init_1=q8 =0;
+per_frame_init_2=q7=0;
+per_frame_1=wave_r = 0.5+ 0.2*(bass-1);
+per_frame_2=wave_g = 0.5+ 0.2*(mid-1.2);
+per_frame_3=wave_b = 0.5+ 0.2*(treb-.5);
+per_frame_4=warp =0;
+per_frame_5=ob_r = 1-wave_r;
+per_frame_6=ob_g = 1-wave_g;
+per_frame_7=ob_b = 1-wave_b;
+per_frame_8=ib_r = 0.75 + 0.25*sin(time*0.4123);
+per_frame_9=ib_g = 0.25 + 0.25*cos(time*0.87);
+per_frame_10=ib_b = 0.5+0.5*sin(1.23*time);
+per_frame_11=q8 = oldq8 +0.003*(((pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,5)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,4)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,3)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,2)/fps) +(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att)/fps));
+per_frame_12=oldq8 = q8;
+per_frame_13=q7 =oldq7+ 0.001*(pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,7)/fps);
+per_frame_14=oldq7 = q7;
+per_frame_15=wave_a =0;
+per_frame_16=dy = 0.5 + 0.01*(sin(0.786*q7));
+per_frame_17=dx = 0.1*sin(1.143*q8);
+per_frame_18=q6 = 15+0.1*(((pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,5)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,4)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,3)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,2)/fps) +(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att)/fps));
+per_pixel_1=//dx=dx+0.5*sin((y-0.5)*128);
+per_pixel_2=dy=dy+0.008*cos((x-0.5 - 0.1*sin(q7))*(q6));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Strange Cargo Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Strange Cargo Mix).milk
new file mode 100644
index 00000000..cfe206fe
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Inner Thoughts (Strange Cargo Mix).milk
@@ -0,0 +1,260 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.980000
+fDecay=0.900000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=0.010000
+fWaveSmoothing=0.630000
+fWaveParam=0.018000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=13.290894
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=-0.280000
+dy=-0.320000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.015000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=0.950000
+ib_g=0.850000
+ib_b=0.650000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=0.000000
+mv_g=0.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=4
+shapecode_0_additive=1
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=1.621747
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=1.884956
+shapecode_0_tex_zoom=0.424973
+shapecode_0_r=0.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=0.600000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=//tex_zoom = 0.05*q6;
+shape_0_per_frame2=a =1;
+shape_0_per_frame3=a1=1;
+shape_0_per_frame4=//tex_zoom =0.1;
+shape_0_per_frame5=x = 0.5 + 0.1*sin(q7*0.986)+0.01;
+shape_0_per_frame6=y = 0.5 + 0.1*sin(q7*0.846)+0.01;;
+shape_0_per_frame7=tex_ang = 3.1515 + 3.1415*sin(q7*0.4521) +0.05*sin(time);
+shapecode_1_enabled=1
+shapecode_1_sides=4
+shapecode_1_additive=1
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=1.621747
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=1.884956
+shapecode_1_tex_zoom=0.424973
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=0.600000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=//tex_zoom = 0.05*q6;
+shape_1_per_frame2=a =1;
+shape_1_per_frame3=a1=1;
+shape_1_per_frame4=//tex_zoom =0.1;
+shape_1_per_frame5=x = 0.5 + 0.1*sin(q7*0.986)+0.02;
+shape_1_per_frame6=y = 0.5 + 0.1*sin(q7*0.846)+ 0.02;
+shape_1_per_frame7=tex_ang = 3.1515 + 3.1415*sin(q7*0.4521) +0.1*sin(time);
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=1
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=1.621747
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=1.884956
+shapecode_2_tex_zoom=0.424973
+shapecode_2_r=0.000000
+shapecode_2_g=1.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=0.600000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=//tex_zoom = 0.05*q6;
+shape_2_per_frame2=a =1;
+shape_2_per_frame3=a1=1;
+shape_2_per_frame4=//tex_zoom =0.1;
+shape_2_per_frame5=x = 0.5 + 0.1*sin(q7*0.986)+0.03;
+shape_2_per_frame6=y = 0.5 + 0.1*sin(q7*0.846)+0.03;
+shape_2_per_frame7=tex_ang = 3.1515 + 3.1415*sin(q7*0.4521) +0.15*sin(time);
+shapecode_3_enabled=1
+shapecode_3_sides=4
+shapecode_3_additive=1
+shapecode_3_thickOutline=0
+shapecode_3_textured=1
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=1.621747
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=1.884956
+shapecode_3_tex_zoom=0.424973
+shapecode_3_r=0.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=1.000000
+shapecode_3_g2=0.600000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+shape_3_per_frame1=//tex_zoom = 0.05*q6;
+shape_3_per_frame2=a =1;
+shape_3_per_frame3=a1=1;
+shape_3_per_frame4=//tex_zoom =0.1;
+shape_3_per_frame5=x = 0.5 + 0.1*sin(q7*0.986) +0.04;
+shape_3_per_frame6=y = 0.5 + 0.1*sin(q7*0.846) +0.04;
+shape_3_per_frame7=tex_ang = 3.1515 + 3.1415*sin(q7*0.4521) +0.2*sin(time);;
+per_frame_init_1=q8 =0;
+per_frame_init_2=q7=0;
+per_frame_1=wave_r = 0.5+ 0.2*(bass-1);
+per_frame_2=wave_g = 0.5+ 0.2*(mid-1.2);
+per_frame_3=wave_b = 0.5+ 0.2*(treb-.5);
+per_frame_4=warp =0;
+per_frame_5=ob_r = 1-wave_r;
+per_frame_6=ob_g = 1-wave_g;
+per_frame_7=ob_b = 1-wave_b;
+per_frame_8=ib_r = 0.75 + 0.25*sin(time*0.4123);
+per_frame_9=ib_g = 0.25 + 0.25*cos(time*0.87);
+per_frame_10=ib_b = 0.5+0.5*sin(1.23*time);
+per_frame_11=q8 = oldq8 +0.003*(((pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,5)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,4)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,3)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,2)/fps) +(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att)/fps));
+per_frame_12=oldq8 = q8;
+per_frame_13=q7 =oldq7+ 0.001*(pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,7)/fps);
+per_frame_14=oldq7 = q7;
+per_frame_15=wave_a =0;
+per_frame_16=dy = 0.5 + 0.01*(sin(0.786*q7));
+per_frame_17=dx = 0.1*sin(1.143*q8);
+per_frame_18=q6 = 15+0.1*(((pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,5)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,4)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,3)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,2)/fps) +(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att)/fps));
+per_frame_19=//q7 =0;
+per_frame_20=decay =0.2;
+per_frame_21=decay =0.1*(bass_att+bass);
+per_pixel_1=//dx=dx+0.5*sin((y-0.5)*128);
+per_pixel_2=dy=dy+0.008*cos((x-0.5 - 0.1*sin(q7))*(q6));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Kalideostars (Altars Of Madness MIx).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Kalideostars (Altars Of Madness MIx).milk
new file mode 100644
index 00000000..fedfbdfc
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Kalideostars (Altars Of Madness MIx).milk
@@ -0,0 +1,209 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.500000
+fDecay=1.000000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.621810
+fWaveSmoothing=0.558000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.870000
+fModWaveAlphaEnd=1.289900
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.004000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.700000
+wave_g=0.700000
+wave_b=0.700000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=12.799995
+nMotionVectorsY=2.879900
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=3.000000
+mv_r=0.000000
+mv_g=0.700000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+wavecode_2_enabled=1
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wave_2_per_point1=x=x+0.5+0.008*sin((y*2-1)*48)+0.008*sin((y*2-1)*64);
+wave_2_per_point2=y=y+0.5+0.008*cos((x*2-1)*64)+0.008*cos((x*2-1)*48);
+shapecode_0_enabled=1
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.193000
+shapecode_0_ang=0.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=0.040000
+shapecode_0_r2=0.000000
+shapecode_0_g2=0.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.900000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.400000
+shape_0_per_frame1=sides = 40*q7;
+shape_0_per_frame2=sides = 9;
+shape_0_per_frame3=ang = q8*3.4;
+shape_0_per_frame4=x = 0.5 + 0.18*cos(q8*0.5) + 0.03*cos(time*0.7);
+shape_0_per_frame5=y = 0.5 + 0.18*sin(q8*0.5) + 0.03*sin(time*0.7);
+shape_0_per_frame6=r = 0.5 + 0.5*sin(time*0.713 + 1);
+shape_0_per_frame7=g = 0.5 + 0.5*sin(time*0.563 + 2);
+shape_0_per_frame8=b = 0.5 + 0.5*sin(time*0.654 + 5);
+shape_0_per_frame9=r2 = 0.5 + 0.5*sin(time*0.885 + 4);
+shape_0_per_frame10=g2 = 0.5 + 0.5*sin(time*0.556+ 1);
+shape_0_per_frame11=b2 = 0.5 + 0.5*sin(time*0.638 + 3);
+shapecode_1_enabled=1
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.340000
+shapecode_1_ang=0.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=0.040000
+shapecode_1_r2=0.000000
+shapecode_1_g2=0.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.900000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.400000
+shape_1_per_frame1=sides = 3;
+shape_1_per_frame2=ang = q8*2.15;
+shape_1_per_frame3=x = 0.5 + 0.18*cos(q8*0.5) + 0.03*cos(time*0.7);
+shape_1_per_frame4=y = 0.5 + 0.18*sin(q8*0.5) + 0.03*sin(time*0.7);
+shape_1_per_frame5=r = 0.5 - 0.5*sin(time*1.43 + 1);
+shape_1_per_frame6=g = 0.5 - 0.5*sin(time*0.583 + 2);
+shape_1_per_frame7=b = 0.5 - 0.5*sin(time*0.751 + 5);
+shape_1_per_frame8=r2 = 0.5 + 0.5*sin(time*2.845 + 4);
+shape_1_per_frame9=g2 = 0.5 + 0.5*sin(time*0.756+ 1);
+shape_1_per_frame10=b2 = 0.5 + 0.5*sin(time*0.688 + 3);
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=1
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.350000
+shapecode_2_ang=0.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=0.040000
+shapecode_2_r2=0.000000
+shapecode_2_g2=0.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.300000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.400000
+shape_2_per_frame1=sides = 360;
+shape_2_per_frame2=ang = q8*1.4;
+shape_2_per_frame3=x = 0.5 + 0.18*cos(q8*0.5) + 0.03*cos(time*0.7);
+shape_2_per_frame4=y = 0.5 + 0.18*sin(q8*0.5) + 0.03*sin(time*0.7);
+shape_2_per_frame5=r = 0.5 + 0.5*sin(q8*0.713 + 1);
+shape_2_per_frame6=g = 0.5 + 0.5*sin(q8*0.563 + 2);
+shape_2_per_frame7=b = 0.5 + 0.5*sin(q8*0.654 + 5);
+shape_2_per_frame8=r2 = 0.5 + 0.5*sin(q8*0.885 + 4);
+shape_2_per_frame9=g2 = 0.5 + 0.5*sin(q8*0.556+ 1);
+shape_2_per_frame10=b2 = 0.5 + 0.5*sin(q8*0.638 + 3);
+per_frame_1=wave_r = wave_r + 0.3*( 0.60*sin(0.633*time) + 0.40*sin(0.845*time) );
+per_frame_2=wave_g = wave_g + 0.3*( 0.60*sin(0.370*time) + 0.40*sin(0.656*time) );
+per_frame_3=wave_b = wave_b + 0.3*( 0.60*sin(0.740*time) + 0.40*sin(0.520*time) );
+per_frame_4=//zoom = zoom + 0.013*( 0.60*sin(0.339*time) + 0.40*sin(0.276*time) );
+per_frame_5=//rot = rot + 0.030*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_6=decay = decay - 0.01*equal(frame%50,0);
+per_frame_7=q8 =oldq8+ 0.005*(pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_8=oldq8 = q8;
+per_frame_9=q7 =0.005*(pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_10=zoom=zoom+(q7)*0.01;
+per_frame_11=q1 = 0.5 + 0.2*cos(q8*0.87);
+per_frame_12=q2 = 0.5 + 0.2*sin(q8*0.87);
+per_pixel_1=dx=dx+0.003*sin((y*2-1)*64)+0.001*sin((y*2-1)*96);
+per_pixel_2=dy=dy+0.004*cos((x*2-1)*64)+0.002*cos((x*2-1)*96);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Kalideostars (Round Round Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Kalideostars (Round Round Mix).milk
new file mode 100644
index 00000000..57f5f347
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Kalideostars (Round Round Mix).milk
@@ -0,0 +1,210 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.994000
+fDecay=1.000000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.621810
+fWaveSmoothing=0.558000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.870000
+fModWaveAlphaEnd=1.289900
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000012
+rot=0.100000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.700000
+wave_g=0.700000
+wave_b=0.700000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=28.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wave_2_per_point1=x=x+0.5+0.008*sin((y*2-1)*48)+0.008*sin((y*2-1)*64);
+wave_2_per_point2=y=y+0.5+0.008*cos((x*2-1)*64)+0.008*cos((x*2-1)*48);
+shapecode_0_enabled=1
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.193000
+shapecode_0_ang=0.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=0.040000
+shapecode_0_r2=0.000000
+shapecode_0_g2=0.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.900000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.400000
+shape_0_per_frame1=sides = 40*q7;
+shape_0_per_frame2=sides = 9;
+shape_0_per_frame3=ang = q8*3.4;
+shape_0_per_frame4=x = 0.5 + 0.18*cos(q8*0.5) + 0.03*cos(time*0.7);
+shape_0_per_frame5=y = 0.5 + 0.18*sin(q8*0.5) + 0.03*sin(time*0.7);
+shape_0_per_frame6=r = 0.5 + 0.5*sin(time*0.713 + 1);
+shape_0_per_frame7=g = 0.5 + 0.5*sin(time*0.563 + 2);
+shape_0_per_frame8=b = 0.5 + 0.5*sin(time*0.654 + 5);
+shape_0_per_frame9=r2 = 0.5 + 0.5*sin(time*0.885 + 4);
+shape_0_per_frame10=g2 = 0.5 + 0.5*sin(time*0.556+ 1);
+shape_0_per_frame11=b2 = 0.5 + 0.5*sin(time*0.638 + 3);
+shapecode_1_enabled=1
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.340000
+shapecode_1_ang=0.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=0.040000
+shapecode_1_r2=0.000000
+shapecode_1_g2=0.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.900000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.400000
+shape_1_per_frame1=sides = 3;
+shape_1_per_frame2=ang = q8*2.15;
+shape_1_per_frame3=x = 0.5 + 0.18*cos(q8*0.5) + 0.03*cos(time*0.7);
+shape_1_per_frame4=y = 0.5 + 0.18*sin(q8*0.5) + 0.03*sin(time*0.7);
+shape_1_per_frame5=r = 0.5 - 0.5*sin(time*1.43 + 1);
+shape_1_per_frame6=g = 0.5 - 0.5*sin(time*0.583 + 2);
+shape_1_per_frame7=b = 0.5 - 0.5*sin(time*0.751 + 5);
+shape_1_per_frame8=r2 = 0.5 + 0.5*sin(time*2.845 + 4);
+shape_1_per_frame9=g2 = 0.5 + 0.5*sin(time*0.756+ 1);
+shape_1_per_frame10=b2 = 0.5 + 0.5*sin(time*0.688 + 3);
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=1
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.350000
+shapecode_2_ang=0.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=0.040000
+shapecode_2_r2=0.000000
+shapecode_2_g2=0.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.300000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.400000
+shape_2_per_frame1=sides = 360;
+shape_2_per_frame2=ang = q8*1.4;
+shape_2_per_frame3=x = 0.5 + 0.18*cos(q8*0.5) + 0.03*cos(time*0.7);
+shape_2_per_frame4=y = 0.5 + 0.18*sin(q8*0.5) + 0.03*sin(time*0.7);
+shape_2_per_frame5=r = 0.5 + 0.5*sin(q8*0.713 + 1);
+shape_2_per_frame6=g = 0.5 + 0.5*sin(q8*0.563 + 2);
+shape_2_per_frame7=b = 0.5 + 0.5*sin(q8*0.654 + 5);
+shape_2_per_frame8=r2 = 0.5 + 0.5*sin(q8*0.885 + 4);
+shape_2_per_frame9=g2 = 0.5 + 0.5*sin(q8*0.556+ 1);
+shape_2_per_frame10=b2 = 0.5 + 0.5*sin(q8*0.638 + 3);
+per_frame_1=wave_r = wave_r + 0.3*( 0.60*sin(0.633*time) + 0.40*sin(0.845*time) );
+per_frame_2=wave_g = wave_g + 0.3*( 0.60*sin(0.370*time) + 0.40*sin(0.656*time) );
+per_frame_3=wave_b = wave_b + 0.3*( 0.60*sin(0.740*time) + 0.40*sin(0.520*time) );
+per_frame_4=//zoom = zoom + 0.013*( 0.60*sin(0.339*time) + 0.40*sin(0.276*time) );
+per_frame_5=//rot = rot + 0.030*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_6=decay = decay - 0.01*equal(frame%50,0);
+per_frame_7=q8 =oldq8+ 0.005*(pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_8=oldq8 = q8;
+per_frame_9=q7 =0.005*(pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_10=zoom=1+(q7)*0.01;
+per_frame_11=q1 = 0.5 + 0.2*cos(q8*0.87);
+per_frame_12=q2 = 0.5 + 0.2*sin(q8*0.87);
+per_frame_13=wave_a =0;
+per_pixel_1=//dx=dx+0.008*sin((y*2-1)*48)+0.008*sin((y*2-1)*64);
+per_pixel_2=//dy=dy+0.008*cos((x*2-1)*64)+0.008*cos((x*2-1)*48);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Kalideostars.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Kalideostars.milk
new file mode 100644
index 00000000..f4677a5b
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Kalideostars.milk
@@ -0,0 +1,210 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.500000
+fDecay=1.000000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.621810
+fWaveSmoothing=0.558000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.870000
+fModWaveAlphaEnd=1.289900
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.004000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.700000
+wave_g=0.700000
+wave_b=0.700000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=28.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wave_2_per_point1=x=x+0.5+0.008*sin((y*2-1)*48)+0.008*sin((y*2-1)*64);
+wave_2_per_point2=y=y+0.5+0.008*cos((x*2-1)*64)+0.008*cos((x*2-1)*48);
+shapecode_0_enabled=1
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.193000
+shapecode_0_ang=0.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=0.040000
+shapecode_0_r2=0.000000
+shapecode_0_g2=0.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.900000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.400000
+shape_0_per_frame1=sides = 40*q7;
+shape_0_per_frame2=sides = 9;
+shape_0_per_frame3=ang = q8*3.4;
+shape_0_per_frame4=x = 0.5 + 0.18*cos(q8*0.5) + 0.03*cos(time*0.7);
+shape_0_per_frame5=y = 0.5 + 0.18*sin(q8*0.5) + 0.03*sin(time*0.7);
+shape_0_per_frame6=r = 0.5 + 0.5*sin(time*0.713 + 1);
+shape_0_per_frame7=g = 0.5 + 0.5*sin(time*0.563 + 2);
+shape_0_per_frame8=b = 0.5 + 0.5*sin(time*0.654 + 5);
+shape_0_per_frame9=r2 = 0.5 + 0.5*sin(time*0.885 + 4);
+shape_0_per_frame10=g2 = 0.5 + 0.5*sin(time*0.556+ 1);
+shape_0_per_frame11=b2 = 0.5 + 0.5*sin(time*0.638 + 3);
+shapecode_1_enabled=1
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.340000
+shapecode_1_ang=0.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=0.040000
+shapecode_1_r2=0.000000
+shapecode_1_g2=0.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.900000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.400000
+shape_1_per_frame1=sides = 3;
+shape_1_per_frame2=ang = q8*2.15;
+shape_1_per_frame3=x = 0.5 + 0.18*cos(q8*0.5) + 0.03*cos(time*0.7);
+shape_1_per_frame4=y = 0.5 + 0.18*sin(q8*0.5) + 0.03*sin(time*0.7);
+shape_1_per_frame5=r = 0.5 - 0.5*sin(time*1.43 + 1);
+shape_1_per_frame6=g = 0.5 - 0.5*sin(time*0.583 + 2);
+shape_1_per_frame7=b = 0.5 - 0.5*sin(time*0.751 + 5);
+shape_1_per_frame8=r2 = 0.5 + 0.5*sin(time*2.845 + 4);
+shape_1_per_frame9=g2 = 0.5 + 0.5*sin(time*0.756+ 1);
+shape_1_per_frame10=b2 = 0.5 + 0.5*sin(time*0.688 + 3);
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=1
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.350000
+shapecode_2_ang=0.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=0.040000
+shapecode_2_r2=0.000000
+shapecode_2_g2=0.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.300000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.400000
+shape_2_per_frame1=sides = 360;
+shape_2_per_frame2=ang = q8*1.4;
+shape_2_per_frame3=x = 0.5 + 0.18*cos(q8*0.5) + 0.03*cos(time*0.7);
+shape_2_per_frame4=y = 0.5 + 0.18*sin(q8*0.5) + 0.03*sin(time*0.7);
+shape_2_per_frame5=r = 0.5 + 0.5*sin(q8*0.713 + 1);
+shape_2_per_frame6=g = 0.5 + 0.5*sin(q8*0.563 + 2);
+shape_2_per_frame7=b = 0.5 + 0.5*sin(q8*0.654 + 5);
+shape_2_per_frame8=r2 = 0.5 + 0.5*sin(q8*0.885 + 4);
+shape_2_per_frame9=g2 = 0.5 + 0.5*sin(q8*0.556+ 1);
+shape_2_per_frame10=b2 = 0.5 + 0.5*sin(q8*0.638 + 3);
+per_frame_1=wave_r = wave_r + 0.3*( 0.60*sin(0.633*time) + 0.40*sin(0.845*time) );
+per_frame_2=wave_g = wave_g + 0.3*( 0.60*sin(0.370*time) + 0.40*sin(0.656*time) );
+per_frame_3=wave_b = wave_b + 0.3*( 0.60*sin(0.740*time) + 0.40*sin(0.520*time) );
+per_frame_4=//zoom = zoom + 0.013*( 0.60*sin(0.339*time) + 0.40*sin(0.276*time) );
+per_frame_5=//rot = rot + 0.030*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_6=decay = decay - 0.01*equal(frame%50,0);
+per_frame_7=q8 =oldq8+ 0.005*(pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_8=oldq8 = q8;
+per_frame_9=q7 =0.005*(pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_10=zoom=1+(q7)*0.01;
+per_frame_11=q1 = 0.5 + 0.2*cos(q8*0.87);
+per_frame_12=q2 = 0.5 + 0.2*sin(q8*0.87);
+per_frame_13=wave_a =0;
+per_pixel_1=//dx=dx+0.008*sin((y*2-1)*48)+0.008*sin((y*2-1)*64);
+per_pixel_2=//dy=dy+0.008*cos((x*2-1)*64)+0.008*cos((x*2-1)*48);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Magic Carpet.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Magic Carpet.milk
new file mode 100644
index 00000000..4f978475
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Magic Carpet.milk
@@ -0,0 +1,74 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.980000
+fDecay=0.994000
+fVideoEchoZoom=1.006596
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=8
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=0.013223
+fWaveSmoothing=0.630000
+fWaveParam=-0.340000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.100000
+wave_y=0.860000
+ob_size=0.000000
+ob_r=0.500000
+ob_g=0.500000
+ob_b=0.500000
+ob_a=0.000000
+ib_size=0.005000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=2.400000
+mv_dx=0.000000
+mv_dy=-0.100000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=warp=0;
+per_frame_2=q8 =oldq8+ 0.0003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_3=oldq8 = q8;
+per_frame_4=ib_r = 0.5+0.5*sin(1.123*q8);
+per_frame_5=ib_g = 0.5+0.5*sin(q8*1.576);
+per_frame_6=ib_b = 0.5+0.5*cos(q8*1.465);
+per_frame_7=wave_a=0;
+per_frame_8=decay = 0.990 + abs(0.01*sin(0.321*q8));
+per_pixel_1=dx = 0.008*sin(100*y+(q8*y));
+per_pixel_2=dy = 0.008*sin(100*x+(q8*x));
+per_frame_init_1=q8=0;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Multiverse Starfield 1.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Multiverse Starfield 1.milk
new file mode 100644
index 00000000..eb0efd6a
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Multiverse Starfield 1.milk
@@ -0,0 +1,71 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.960000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.704175
+fWaveScale=0.031716
+fWaveSmoothing=0.630000
+fWaveParam=-0.800000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=0.980296
+sy=1.000000
+wave_r=0.000000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=1.000000
+per_frame_1=warp = 0;
+per_frame_2=wave_mystery = 2;
+per_frame_3=zoom = 1.4 +0.15*cos(time*0.42);
+per_frame_4=rot = 0.01*sin(1.34*time);
+per_frame_5=dx = 0.005*sin(time*0.646);
+per_frame_6=dy=0.005*sin(time*0.314);
+per_frame_7=cx = 0.5 + 0.05*sin(0.497*time);
+per_frame_8=cy = 0.5 +0.05*sin(0.413*time);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Multiverse Starfield 3.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Multiverse Starfield 3.milk
new file mode 100644
index 00000000..3875df44
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Multiverse Starfield 3.milk
@@ -0,0 +1,69 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.300000
+fDecay=0.960000
+fVideoEchoZoom=0.999609
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.704175
+fWaveScale=0.031716
+fWaveSmoothing=0.630000
+fWaveParam=-0.800000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=0.980296
+sy=1.000000
+wave_r=0.000000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=1.000000
+per_frame_1=warp = 0;
+per_frame_2=wave_mystery = 2;
+per_pixel_1=zoom = 1.8 +0.04*cos(time*0.857) + atan(atan(0.5*sqrt(2)-rad)*1.5*rad);
+per_pixel_2=rot = 0.03*sin(0.84*time)-0.013*cos(0.784*time)+0.02*sin(1-rad);
+per_pixel_3=dx = 0.02*sin(time*0.46)*(0.5*sqrt(2)-rad)+0.015*sin(time*0.511);
+per_pixel_4=dy=0.02*sin(time*0.54)*(0.5*sqrt(2)-rad)+0.013*cos(time*0.633);
+per_pixel_5=cx = 0.5 + 0.1*sin(0.97*time)*(rad*rad);
+per_pixel_6=cy = 0.5 +0.1*sin(0.613*time)*(rad*rad);
+per_pixel_7=zoomexp = 0.8-0.2*(1-rad)+0.2*sin(-rad*rad)+0.1*sin(time*0.669);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Pandora's Volcano.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Pandora's Volcano.milk
new file mode 100644
index 00000000..83ac6f6d
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Pandora's Volcano.milk
@@ -0,0 +1,70 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.925000
+fVideoEchoZoom=1.006596
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=7
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=0.627609
+fWaveSmoothing=0.108000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.070500
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.005000
+dy=0.000000
+warp=0.198054
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.040000
+ob_size=0.000000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.059900
+ib_size=0.000000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=tt = time/2;
+per_frame_2=wave_r = 1;
+per_frame_3=wave_b = 0.4 + sin(tt)/3;
+per_frame_4=wave_g = 0.5 - cos(2*tt)/4;
+per_frame_5=sy = 1.1 + progress/10;
+per_pixel_1=sx = tan(pow(y,2))-log(y);
+per_pixel_2=zoom = 1.0 + sin(rad)/5 + progress/10;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Parallel Universe.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Parallel Universe.milk
new file mode 100644
index 00000000..a1c6dd20
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Parallel Universe.milk
@@ -0,0 +1,83 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.990000
+fVideoEchoZoom=0.999609
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=0.032378
+fWaveSmoothing=0.630000
+fWaveParam=-0.400000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.045000
+wave_y=0.940000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=1.000000
+ib_g=0.000000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=4.400000
+mv_r=1.000000
+mv_g=0.000000
+mv_b=0.000000
+mv_a=0.000000
+per_frame_1=wave_r = 0.5+0.5*sin(time);
+per_frame_2=wave_r = 0.5+0.5*sin(time);
+per_frame_3=xwave_a = 0;
+per_frame_4=ib_b = 0.5+0.3*sin(time*2.314);
+per_frame_5=ib_r = 0.7+0.3*sin(time*1.867);
+per_frame_6=q8 = if(above(bass,1.2),2*bass,0.5);
+per_frame_7=q7 = if(above(bass_att,1.2),2*bass_att,0.5);
+per_frame_8=q6 = if(above(bass+bass_att,2.3),bass+bass_att,0.5);
+per_frame_9=warp =0;
+per_frame_10=q5 = if(above(treb+treb_att,2.8),1,0);
+per_frame_11=monitor = q5;
+per_frame_12=ib_g = q5;
+per_pixel_1=myx = x-0.5;
+per_pixel_2=myy = y-0.5;
+per_pixel_3=q1 =0.1*sqrt(x*x+y*y);
+per_pixel_4=q1 = 0.05*(x+y);
+per_pixel_5=dy = q1*abs(sin(50*bass));
+per_pixel_6=dx = q1*abs(sin(50*bass_att));
+per_pixel_7=dy = 0.2*q1*q6;
+per_pixel_8=dx=0.2*q1*q6;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Sea Shells.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Sea Shells.milk
new file mode 100644
index 00000000..82be1335
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Sea Shells.milk
@@ -0,0 +1,243 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.900000
+fDecay=0.970000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.800000
+fWaveScale=0.893664
+fWaveSmoothing=0.600000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.995000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=1.000000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=-0.002000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=0.000000
+mv_g=0.000000
+mv_b=0.400000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.330038
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=x = q1;
+shape_0_per_frame2=y = 1- q2;
+shape_0_per_frame3=r = 0.5 + 0.49*sin(time*0.467);
+shape_0_per_frame4=b = 0.5 + 0.49*sin(time*0.568);
+shape_0_per_frame5=g = 0.5 + 0.49*sin(time*0.669);
+shape_0_per_frame6=r2 = 0.1*(bass+bass_att);
+shape_0_per_frame7=b2 = r2;
+shape_0_per_frame8=g2 = r2;
+shape_0_per_frame9=rad = 0.5*r2 + 0.1;
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=wave_r = wave_r + 0.250*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+per_frame_2=wave_g = wave_g + 0.480*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+per_frame_3=wave_b = wave_b + 0.370*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+per_frame_4=warp=0;
+per_frame_5=zoom =1;
+per_frame_6=rot=0;
+per_frame_7=decay =0.99;
+per_frame_8=decay =1;
+per_frame_9=ib_r = 0.16 + 0.15*sin(time*0.783);
+per_frame_10=ib_g = 0.16 + 0.15*sin(time*0.895);
+per_frame_11=ib_b = 0.75 +0.24*sin(time*1.134);
+per_frame_12=ib_size = 0.005*above(bass+bass_att,2.8);
+per_frame_13=
+per_frame_14=movement =movement + 0.5*(((bass+bass_att + 0.075*pow((bass+0.6*bass_att+0.2*treb_att),3)))/fps);
+per_frame_15=movement = if(above(movement,10000), 0, movement);
+per_frame_16=
+per_frame_17=q1 = 0.5+0.1*sin(movement);
+per_frame_18=q2 = 0.5-0.1*cos(0.781*movement);
+per_frame_19=q3 = movement;
+per_frame_20=wave_x = q1;
+per_frame_21=wave_y = 1-q2;
+per_pixel_1=newx =x- q1;
+per_pixel_2=newy =y- q2;
+per_pixel_3=newrad = min(sqrt((newx)*(newx)+0.5625*(newy)*(newy))*2,sqrt(2));
+per_pixel_4=effect = newrad*((0.9+0.2*sin(q3*0.23))*y)*((0.9+0.2*sin(q3*0.197))*x);
+per_pixel_5=dy=-0.007*cos(pow((sqrt(2)-effect),5)*10);
+per_pixel_6=dx=-0.007*sin(pow((sqrt(2)-effect),5)*10);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Solarized Space (Space DNA Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Solarized Space (Space DNA Mix).milk
new file mode 100644
index 00000000..8dff4335
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Solarized Space (Space DNA Mix).milk
@@ -0,0 +1,236 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.994000
+fDecay=0.960000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=1
+bDarken=0
+bSolarize=1
+bInvert=1
+fWaveAlpha=1.882469
+fWaveScale=0.000000
+fWaveSmoothing=0.630000
+fWaveParam=-0.500000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=0.980296
+sy=1.000000
+wave_r=1.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.001500
+ib_r=1.000000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=1.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.100000
+shapecode_0_ang=0.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=ang = time*0.4;;
+shape_0_per_frame2=x = 0.5 + 0.08*cos(time*1.3) + 0.03*cos(time*0.7);
+shape_0_per_frame3=y = 0.5 + 0.08*sin(time*1.4) + 0.03*sin(time*0.7);
+shape_0_per_frame4=r =0.5 + 0.5*sin(q8*0.613 + 1);
+shape_0_per_frame5=g = 0.5 + 0.5*sin(q8*0.763 + 2);
+shape_0_per_frame6=b = 0.5 + 0.5*sin(q8*0.771 + 5);
+shape_0_per_frame7=r2 = 0.5 + 0.5*sin(q8*0.635 + 4);
+shape_0_per_frame8=g2 = 0.5 + 0.5*sin(q8*0.616+ 1);
+shape_0_per_frame9=b2 = 0.5 + 0.5*sin(q8*0.538 + 3);
+shape_0_per_frame10=sides = 360;
+shapecode_1_enabled=1
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=ang = time*0.4;;
+shape_1_per_frame2=x = 0.5 + 0.08*cos(time*1.3) + 0.03*cos(time*0.5);
+shape_1_per_frame3=y = 0.5 + 0.08*sin(time*1.4) + 0.03*sin(time*0.5);
+shape_1_per_frame4=r =0.5 + 0.5*sin(q8*0.4413 + 1);
+shape_1_per_frame5=g = 0.5 + 0.5*sin(q8*1.23 + 2);
+shape_1_per_frame6=b = 0.5 + 0.5*sin(q8*0.721 + 5);
+shape_1_per_frame7=r2 = 0.5 + 0.5*sin(q8*0.775 + 4);
+shape_1_per_frame8=g2 = 0.5 - 0.5*sin(q8*0.676+ 1);
+shape_1_per_frame9=b2 = 0.5 + 0.5*sin(q8*0.738 + 3);
+shape_1_per_frame10=sides = 360;
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=ang = time*0.4;;
+shape_2_per_frame2=x = 0.5 + 0.08*cos(time*1.3) + 0.03*cos(time*0.9);
+shape_2_per_frame3=y = 0.5 + 0.08*sin(time*1.4) + 0.03*sin(time*0.9);
+shape_2_per_frame4=r =0.5 + 0.5*sin(q8*0.413 + 1);
+shape_2_per_frame5=g = 0.5 + 0.5*sin(q8*0.363 + 2);
+shape_2_per_frame6=b = 0.5 + 0.5*sin(q8*0.871 + 5);
+shape_2_per_frame7=r2 = 0.5 + 0.5*sin(q8*0.835 + 4);
+shape_2_per_frame8=g2 = 0.5 + 0.5*sin(q8*0.686+ 1);
+shape_2_per_frame9=b2 = 0.5 + 0.5*sin(q8*0.938 + 3);
+shape_2_per_frame10=sides = 360;
+per_frame_1=warp = 0;
+per_frame_2=wave_mystery = -0.5;
+per_frame_3=vol = 0.167*(bass+mid);
+per_frame_4=xamptarg = if(equal(frame%15,0),min(0.5*vol*bass_att,0.5),xamptarg);
+per_frame_5=xamp = xamp + 0.5*(xamptarg-xamp);
+per_frame_6=xdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir));
+per_frame_7=xspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_8=xpos = xpos + 0.001*xspeed;
+per_frame_9=myx = 1.25*xpos + 0.5;
+per_frame_10=yamptarg = if(equal(frame%15,0),min(0.3*vol*treb_att,0.5),yamptarg);
+per_frame_11=yamp = yamp + 0.5*(yamptarg-yamp);
+per_frame_12=ydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir));
+per_frame_13=yspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_14=ypos = ypos + 0.001*yspeed;
+per_frame_15=myy = 1.25*ypos + 0.5;
+per_frame_16=cx = 0.5 + 0.05*sin(0.497*time);
+per_frame_17=cy = 0.5 +0.05*sin(0.413*time);
+per_frame_18=volume = 0.15*(bass_att+bass+mid+mid_att);
+per_frame_19=beatrate = if(equal(beatrate,0),1,if(below(volume,0.01),1,beatrate));
+per_frame_20=lastbeat = if(equal(lastbeat,0),time,lastbeat);
+per_frame_21=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_22=peakbass_att = if(above(bass_att,peakbass_att),bass_att,peakbass_att);
+per_frame_23=beat = if(above(volume,0.8),if(below(peakbass_att - bass_att, 0.05*peakbass_att),if(above(time - lastbeat,0.1+0.5*(beatrate-0.1)),1,0),0),0);
+per_frame_24=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_25=peakbass_att = if(equal(beat,0),if(above(time - lastbeat,2*beatrate),peakbass_att*0.95,peakbass_att*0.995),bass_att);
+per_frame_26=lastbeat = if(beat,time,lastbeat);
+per_frame_27=peakbass_att = max(if(beat,bass_att,peakbass_att),1.1*meanbass_att);
+per_frame_28=beatcounter = if(above(beat,0),beatcounter +1, beatcounter);
+per_frame_29=beatcounter = if(above(beatcounter,8), 0, beatcounter);
+per_frame_30=beateven = beatcounter%4;
+per_frame_31=mode = if(beat,(mode+rand(3)+1)%4,mode);
+per_frame_32=beateven = if(equal(beateven,3),-1,beateven);
+per_frame_33=beateven = if(equal(beateven,0),0.1*(myx+myy),beateven);
+per_frame_34=beateven = if(equal(beateven,2),0.1*(-myx-myy),beateven);
+per_frame_35=dx = 0.1*beateven*myx;
+per_frame_36=dy = 0.1*beateven*myy;
+per_frame_37=monitor = beateven;
+per_frame_38=wave_a = Bass_thresh;
+per_frame_39=zoom = 1.5 +0.25*myy;
+per_frame_40=rot = myx*beateven;
+per_frame_41=wave_x = 0.5 + 0.05*myx;
+per_frame_42=wave_y=0.5 + 0.05*myy;
+per_frame_43=q8 =oldq8+ 0.005*(pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_44=oldq8 = q8;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Solarized Space.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Solarized Space.milk
new file mode 100644
index 00000000..662efaf2
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Solarized Space.milk
@@ -0,0 +1,107 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.994000
+fDecay=0.960000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=1
+bDarken=0
+bSolarize=1
+bInvert=1
+fWaveAlpha=1.882469
+fWaveScale=0.000000
+fWaveSmoothing=0.630000
+fWaveParam=-0.500000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=0.980296
+sy=1.000000
+wave_r=1.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.001500
+ib_r=1.000000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=1.000000
+per_frame_1=warp = 0;
+per_frame_2=wave_mystery = -0.5;
+per_frame_3=vol = 0.167*(bass+mid);
+per_frame_4=xamptarg = if(equal(frame%15,0),min(0.5*vol*bass_att,0.5),xamptarg);
+per_frame_5=xamp = xamp + 0.5*(xamptarg-xamp);
+per_frame_6=xdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir));
+per_frame_7=xspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_8=xpos = xpos + 0.001*xspeed;
+per_frame_9=myx = 1.25*xpos + 0.5;
+per_frame_10=yamptarg = if(equal(frame%15,0),min(0.3*vol*treb_att,0.5),yamptarg);
+per_frame_11=yamp = yamp + 0.5*(yamptarg-yamp);
+per_frame_12=ydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir));
+per_frame_13=yspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_14=ypos = ypos + 0.001*yspeed;
+per_frame_15=myy = 1.25*ypos + 0.5;
+per_frame_16=
+per_frame_17=cx = 0.5 + 0.05*sin(0.497*time);
+per_frame_18=cy = 0.5 +0.05*sin(0.413*time);
+per_frame_19=volume = 0.15*(bass_att+bass+mid+mid_att);
+per_frame_20=beatrate = if(equal(beatrate,0),1,if(below(volume,0.01),1,beatrate));
+per_frame_21=lastbeat = if(equal(lastbeat,0),time,lastbeat);
+per_frame_22=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_23=peakbass_att = if(above(bass_att,peakbass_att),bass_att,peakbass_att);
+per_frame_24=beat = if(above(volume,0.8),if(below(peakbass_att - bass_att, 0.05*peakbass_att),if(above(time - lastbeat,0.1+0.5*(beatrate-0.1)),1,0),0),0);
+per_frame_25=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_26=peakbass_att = if(equal(beat,0),if(above(time - lastbeat,2*beatrate),peakbass_att*0.95,peakbass_att*0.995),bass_att);
+per_frame_27=lastbeat = if(beat,time,lastbeat);
+per_frame_28=peakbass_att = max(if(beat,bass_att,peakbass_att),1.1*meanbass_att);
+per_frame_29=beatcounter = if(above(beat,0),beatcounter +1, beatcounter);
+per_frame_30=beatcounter = if(above(beatcounter,8), 0, beatcounter);
+per_frame_31=beateven = beatcounter%4;
+per_frame_32=mode = if(beat,(mode+rand(3)+1)%4,mode);
+per_frame_33=beateven = if(equal(beateven,3),-1,beateven);
+per_frame_34=beateven = if(equal(beateven,0),0.1*(myx+myy),beateven);
+per_frame_35=beateven = if(equal(beateven,2),0.1*(-myx-myy),beateven);
+per_frame_36=dx = 0.1*beateven*myx;
+per_frame_37=dy = 0.1*beateven*myy;
+per_frame_38=monitor = beateven;
+per_frame_39=wave_a = Bass_thresh;
+per_frame_40=zoom = 1.5 +0.25*myy;
+per_frame_41=rot = myx*beateven;
+per_frame_42=wave_x = 0.5 + 0.05*myx;
+per_frame_43=wave_y=0.5 + 0.05*myy;
+per_frame_44=
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Space (Twisted Dimension Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Space (Twisted Dimension Mix).milk
new file mode 100644
index 00000000..88f973e8
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Space (Twisted Dimension Mix).milk
@@ -0,0 +1,108 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.980000
+fDecay=0.940000
+fVideoEchoZoom=1.019701
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.882469
+fWaveScale=0.000000
+fWaveSmoothing=0.630000
+fWaveParam=-0.500000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=0.980296
+sy=1.000000
+wave_r=0.000000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=1.000000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=1.000000
+per_frame_1=warp = 0;
+per_frame_2=wave_mystery = -0.5;
+per_frame_3=vol = 0.167*(bass+mid);
+per_frame_4=xamptarg = if(equal(frame%15,0),min(0.5*vol*bass_att,0.5),xamptarg);
+per_frame_5=xamp = xamp + 0.5*(xamptarg-xamp);
+per_frame_6=xdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir));
+per_frame_7=xspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_8=xpos = xpos + 0.001*xspeed;
+per_frame_9=myx = 1.25*xpos + 0.5;
+per_frame_10=yamptarg = if(equal(frame%15,0),min(0.3*vol*treb_att,0.5),yamptarg);
+per_frame_11=yamp = yamp + 0.5*(yamptarg-yamp);
+per_frame_12=ydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir));
+per_frame_13=yspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_14=ypos = ypos + 0.001*yspeed;
+per_frame_15=myy = 1.25*ypos + 0.5;
+per_frame_16=
+per_frame_17=cx = 0.5 + 0.05*sin(0.497*time);
+per_frame_18=cy = 0.5 +0.05*sin(0.413*time);
+per_frame_19=
+per_frame_20=
+per_frame_21=
+per_frame_22=dx = dx + dx_residual;
+per_frame_23=dy = dy + dy_residual;
+per_frame_24=
+per_frame_25=
+per_frame_26=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_27=dx_residual = equal(bass_thresh,2)*0.016*sin(time*7) + (1-equal(bass_thresh,2))*dx_residual;
+per_frame_28=dy_residual = equal(bass_thresh,2)*0.012*sin(time*9) + (1-equal(bass_thresh,2))*dy_residual;
+per_frame_29=
+per_frame_30=wave_a = Bass_thresh;
+per_frame_31=monitor = rot;
+per_frame_32=zoom = 1.5 +0.25*myy*dy;
+per_frame_33=rot = 215*myx*dx;
+per_frame_34=wave_x = 0.5 + 0.05*myx + 0.08*bass_thresh -0.1;
+per_frame_35=wave_y=0.5 + 0.05*myy;
+per_frame_36=monitor = rot;
+per_frame_37=mv_dx = dx;
+per_frame_38=mv_dy =dy;
+per_frame_39=echo_zoom =1+ 0.1*(myx-myy);
+per_frame_40=monitor=echo_zoom;
+per_pixel_1=zoom = zoom + 0.1*(1-rad);
+per_pixel_2=sy = 1+ 0.2*(1-rad);
+per_pixel_3=rot = rot + 0.2*rad;
+per_pixel_4=dx = dx*rad;
+per_pixel_5=dy = dy*(1-rad);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Space.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Space.milk
new file mode 100644
index 00000000..001298ed
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Space.milk
@@ -0,0 +1,106 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.960000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.882469
+fWaveScale=0.000000
+fWaveSmoothing=0.630000
+fWaveParam=-0.500000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=0.980296
+sy=1.000000
+wave_r=0.000000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.001500
+ib_r=1.000000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=1.000000
+per_frame_1=warp = 0;
+per_frame_2=wave_mystery = -0.5;
+per_frame_3=vol = 0.167*(bass+mid);
+per_frame_4=xamptarg = if(equal(frame%15,0),min(0.5*vol*bass_att,0.5),xamptarg);
+per_frame_5=xamp = xamp + 0.5*(xamptarg-xamp);
+per_frame_6=xdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir));
+per_frame_7=xspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_8=xpos = xpos + 0.001*xspeed;
+per_frame_9=myx = 1.25*xpos + 0.5;
+per_frame_10=yamptarg = if(equal(frame%15,0),min(0.3*vol*treb_att,0.5),yamptarg);
+per_frame_11=yamp = yamp + 0.5*(yamptarg-yamp);
+per_frame_12=ydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir));
+per_frame_13=yspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_14=ypos = ypos + 0.001*yspeed;
+per_frame_15=myy = 1.25*ypos + 0.5;
+per_frame_16=
+per_frame_17=cx = 0.5 + 0.05*sin(0.497*time);
+per_frame_18=cy = 0.5 +0.05*sin(0.413*time);
+per_frame_19=
+per_frame_20=
+per_frame_21=
+per_frame_22=
+per_frame_23=
+per_frame_24=
+per_frame_25=
+per_frame_26=
+per_frame_27=
+per_frame_28=
+per_frame_29=
+per_frame_30=
+per_frame_31=dx = dx + dx_residual;
+per_frame_32=dy = dy + dy_residual;
+per_frame_33=
+per_frame_34=
+per_frame_35=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_36=dx_residual = equal(bass_thresh,2)*0.016*sin(time*7) + (1-equal(bass_thresh,2))*dx_residual;
+per_frame_37=dy_residual = equal(bass_thresh,2)*0.012*sin(time*9) + (1-equal(bass_thresh,2))*dy_residual;
+per_frame_38=
+per_frame_39=wave_a = Bass_thresh;
+per_frame_40=zoom = 1.5 +0.25*myy;
+per_frame_41=rot = 215*myx*dx;
+per_frame_42=wave_x = 0.5 + 0.05*myx;
+per_frame_43=wave_y=0.5 + 0.05*myy;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Sunflower Passion (Enlightment Mix)_Phat_edit.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Sunflower Passion (Enlightment Mix)_Phat_edit.milk
new file mode 100644
index 00000000..c4cecedc
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Sunflower Passion (Enlightment Mix)_Phat_edit.milk
@@ -0,0 +1,284 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.980000
+fDecay=0.980000
+fVideoEchoZoom=2.447667
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=3.645252
+fWaveScale=1.951307
+fWaveSmoothing=0.500000
+fWaveParam=-0.500000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=2.100000
+fShader=0.000000
+zoom=1.025000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.290770
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=0.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.135177
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=0.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=1.000000
+shapecode_0_border_r=0.000000
+shapecode_0_border_g=0.000000
+shapecode_0_border_b=0.000000
+shapecode_0_border_a=1.000000
+shape_0_per_frame1=x = 0.3 + 0.05*sin(0.89*q8);
+shape_0_per_frame2=y = 0.4 - 0.05*cos(0.77*q8);
+shape_0_per_frame3=
+shape_0_per_frame4=r = 0.25+0.25*sin(time*0.7679);
+shape_0_per_frame5=g = 0.25+0.25*sin(time*0.8079);
+shape_0_per_frame6=b = 0.25+0.25*sin(time*0.7339);
+shape_0_per_frame7=r2 = 0.25+0.25*sin(time*0.6979);
+shape_0_per_frame8=g2 = 0.25+0.25*sin(time*0.849);
+shape_0_per_frame9=b2 = 0.25+0.25*sin(time*0.8079);
+shapecode_1_enabled=1
+shapecode_1_sides=100
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.066232
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=0.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=0.000000
+shapecode_1_border_g=0.000000
+shapecode_1_border_b=0.000000
+shapecode_1_border_a=1.000000
+shape_1_per_frame1=x = 0.3 - 0.05*sin(0.7089*q8);
+shape_1_per_frame2=y = 0.4 + 0.05*cos(0.5077*q8);
+shape_1_per_frame3=
+shape_1_per_frame4=r = 0.25+0.25*sin(time*0.6479);
+shape_1_per_frame5=g = 0.25+0.25*sin(time*0.5079);
+shape_1_per_frame6=b = 0.25+0.25*sin(time*0.9339);
+shape_1_per_frame7=r2 = 0.25+0.25*sin(time*0.779);
+shape_1_per_frame8=g2 = 0.25+0.25*sin(time*0.707);
+shape_1_per_frame9=b2 = 0.25+0.25*sin(time*0.747);
+shapecode_2_enabled=1
+shapecode_2_sides=100
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.036457
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=0.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=1.000000
+shapecode_2_border_r=0.000000
+shapecode_2_border_g=0.000000
+shapecode_2_border_b=0.000000
+shapecode_2_border_a=1.000000
+shape_2_per_frame1=x = 0.3 + 0.05*sin(0.679*q8);
+shape_2_per_frame2=y = 0.4 - 0.05*cos(0.877*q8);
+shape_2_per_frame3=
+shape_2_per_frame4=r = 0.25+0.25*sin(time*0.5679);
+shape_2_per_frame5=g = 0.25+0.25*sin(time*0.4079);
+shape_2_per_frame6=b = 0.25+0.25*sin(time*1.1339);
+shape_2_per_frame7=r2 = 0.25+0.25*sin(time*0.9979);
+shape_2_per_frame8=g2 = 0.25+0.25*sin(time*0.891);
+shape_2_per_frame9=b2 = 0.25+0.25*sin(time*0.713);
+shapecode_3_enabled=1
+shapecode_3_sides=100
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.012202
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=0.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=1.000000
+shapecode_3_border_r=0.000000
+shapecode_3_border_g=0.000000
+shapecode_3_border_b=0.000000
+shapecode_3_border_a=1.000000
+shape_3_per_frame1=x = 0.3 + 0.05*sin(0.916*q8);
+shape_3_per_frame2=y = 0.4 - 0.05*cos(0.977*q8);
+shape_3_per_frame3=
+shape_3_per_frame4=r = 0.25+0.25*sin(time*1.1679);
+shape_3_per_frame5=g = 0.25+0.25*sin(time*1.18079);
+shape_3_per_frame6=b = 0.25+0.25*sin(time*1.17339);
+shape_3_per_frame7=r2 = 0.25+0.25*sin(time*1.16979);
+shape_3_per_frame8=g2 = 0.25+0.25*sin(time*1.1849);
+shape_3_per_frame9=b2 = 0.25+0.25*sin(time*1.81079);
+per_frame_1=//wave_r = 0.0 + 0.000*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+per_frame_2=//wave_g = 0.0 + 0.000*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+per_frame_3=//wave_b = 0.0 + 0.000*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+per_frame_4=//zoom = zoom + 0.01*( 0.60*sin(0.339*time) + 0.40*sin(0.276*time) );
+per_frame_5=//rot = rot + 0.010*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_6=//decay = decay - 0.01*equal(frame%6,0);
+per_frame_7=warp=0;
+per_frame_8=//zoom =1;
+per_frame_9=rot =0;
+per_frame_10=cx=0.5;
+per_frame_11=cy=0.5;
+per_frame_12=q1 = 0.5 + 0.1*sin(time);
+per_frame_13=q2 = 0.5 - 0.1*cos(time);
+per_frame_14=wave_a =0;
+per_frame_15=decay=.95;
+per_frame_16=q1=0.5 +0.1*sin(q8);
+per_frame_17=q2=0.5;
+per_frame_18=
+per_frame_19=
+per_frame_20=q8 = oldq8+ 0.003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_21=oldq8 =q8;
+per_frame_22=mybass = mybass + 0.01*(bass + bass_att);
+per_frame_23=
+per_frame_24=//rot =1 + 0.15*sin(mybass*0.1789);
+per_frame_25=//zoom = 1.6 + 0.1*sin(mybass*0.786);
+per_frame_26=zoom = 1.09;
+per_frame_27=//rot =0.12;
+per_frame_28=//cx = 0.4;
+per_frame_29=//cy = 0.4;
+per_frame_30=q1=0.5 +0.00*sin(0.12*q8);
+per_frame_31=q2=0.5 -0.00*cos(0.177*q8);
+per_pixel_1=myx = (x-q1)*1.1;
+per_pixel_2=myy= (y-q2)*1.1;
+per_pixel_3=myrad = (myx*myx) + (myy*myy);
+per_pixel_4=dx = (0.5+0.02*sin(q8))*(myy/(myrad+1));
+per_pixel_5=dy = -(0.5+0.02*sin(q8*0.897))*(myx/(myrad+1));
+per_pixel_6=rd=bass*rad;
+per_pixel_7=rot=rd/10;
+per_pixel_8=
+per_pixel_9=sy=1.02+(rad/10);
+per_pixel_10=sx=sy-myrad;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Sunflower Passion (Simple Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Sunflower Passion (Simple Mix).milk
new file mode 100644
index 00000000..98209f68
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Sunflower Passion (Simple Mix).milk
@@ -0,0 +1,268 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=3.645252
+fWaveScale=0.010000
+fWaveSmoothing=0.500000
+fWaveParam=-0.500000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=2.100000
+fShader=0.000000
+zoom=1.025000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.290770
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=1.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.015000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=0.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.020410
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=0.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=1.000000
+shapecode_0_border_r=0.000000
+shapecode_0_border_g=0.000000
+shapecode_0_border_b=0.000000
+shapecode_0_border_a=1.000000
+shape_0_per_frame1=x = 0.5 + 0.01*sin(0.89*q8);
+shape_0_per_frame2=y = 0.5 - 0.01*cos(0.77*q8);
+shape_0_per_frame3=
+shape_0_per_frame4=r = 0.25+0.25*sin(time*0.7679);
+shape_0_per_frame5=g = 0.25+0.25*sin(time*0.8079);
+shape_0_per_frame6=b = 0.25+0.25*sin(time*0.7339);
+shape_0_per_frame7=r2 = 0.25+0.25*sin(time*0.6979);
+shape_0_per_frame8=g2 = 0.25+0.25*sin(time*0.849);
+shape_0_per_frame9=b2 = 0.25+0.25*sin(time*0.8079);
+shapecode_1_enabled=1
+shapecode_1_sides=100
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.020068
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=0.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=0.000000
+shapecode_1_border_g=0.000000
+shapecode_1_border_b=0.000000
+shapecode_1_border_a=1.000000
+shape_1_per_frame1=x = 0.5 - 0.01*sin(0.7089*q8);
+shape_1_per_frame2=y = 0.5 + 0.01*cos(0.5077*q8);
+shape_1_per_frame3=
+shape_1_per_frame4=r = 0.25+0.25*sin(time*0.6479);
+shape_1_per_frame5=g = 0.25+0.25*sin(time*0.5079);
+shape_1_per_frame6=b = 0.25+0.25*sin(time*0.9339);
+shape_1_per_frame7=r2 = 0.25+0.25*sin(time*0.779);
+shape_1_per_frame8=g2 = 0.25+0.25*sin(time*0.707);
+shape_1_per_frame9=b2 = 0.25+0.25*sin(time*0.747);
+shapecode_2_enabled=1
+shapecode_2_sides=100
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.020068
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=0.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=1.000000
+shapecode_2_border_r=0.000000
+shapecode_2_border_g=0.000000
+shapecode_2_border_b=0.000000
+shapecode_2_border_a=1.000000
+shape_2_per_frame1=x = 0.5 + 0.01*sin(0.679*q8);
+shape_2_per_frame2=y = 0.5 - 0.01*cos(0.877*q8);
+shape_2_per_frame3=
+shape_2_per_frame4=r = 0.25+0.25*sin(time*0.5679);
+shape_2_per_frame5=g = 0.25+0.25*sin(time*0.4079);
+shape_2_per_frame6=b = 0.25+0.25*sin(time*1.1339);
+shape_2_per_frame7=r2 = 0.25+0.25*sin(time*0.9979);
+shape_2_per_frame8=g2 = 0.25+0.25*sin(time*0.891);
+shape_2_per_frame9=b2 = 0.25+0.25*sin(time*0.713);
+shapecode_3_enabled=1
+shapecode_3_sides=100
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.020068
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=0.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=1.000000
+shapecode_3_border_r=0.000000
+shapecode_3_border_g=0.000000
+shapecode_3_border_b=0.000000
+shapecode_3_border_a=1.000000
+shape_3_per_frame1=x = 0.5 + 0.01*sin(0.916*q8);
+shape_3_per_frame2=y = 0.5 - 0.01*cos(0.977*q8);
+shape_3_per_frame3=
+shape_3_per_frame4=r = 0.25+0.25*sin(time*1.1679);
+shape_3_per_frame5=g = 0.25+0.25*sin(time*1.18079);
+shape_3_per_frame6=b = 0.25+0.25*sin(time*1.17339);
+shape_3_per_frame7=r2 = 0.25+0.25*sin(time*1.16979);
+shape_3_per_frame8=g2 = 0.25+0.25*sin(time*1.1849);
+shape_3_per_frame9=b2 = 0.25+0.25*sin(time*1.81079);
+per_frame_1=wave_r = 0.0 + 0.000*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+per_frame_2=wave_g = 0.0 + 0.000*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+per_frame_3=wave_b = 0.0 + 0.000*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+per_frame_4=zoom = zoom + 0.01*( 0.60*sin(0.339*time) + 0.40*sin(0.276*time) );
+per_frame_5=rot = rot + 0.010*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_6=//decay = decay - 0.01*equal(frame%6,0);
+per_frame_7=warp=0;
+per_frame_8=zoom =1;
+per_frame_9=rot =0;
+per_frame_10=cx=0.5;
+per_frame_11=cy=0.5;
+per_frame_12=q1 = 0.5 + 0.1*sin(time);
+per_frame_13=q2 = 0.5 - 0.1*cos(time);
+per_frame_14=wave_a =0;
+per_frame_15=decay=1;
+per_frame_16=q8 = oldq8+ 0.0005*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_17=oldq8 =q8;
+per_frame_18=mybass = mybass + 0.01*(bass + bass_att);
+per_frame_19=rot =1 + 0.15*sin(mybass*0.1789);
+per_frame_20=zoom = 1.6 + 0.1*sin(mybass*0.786);
+per_pixel_1=myx = (x-q1)*2;
+per_pixel_2=myy= (y-q2)*2;
+per_pixel_3=myrad = (myx*myx) + (myy*myy);
+per_pixel_4=dx = 0.1*(myy/(myrad+1));
+per_pixel_5=dy = -0.1*(myx/(myrad+1));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Sunflower Passion.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Sunflower Passion.milk
new file mode 100644
index 00000000..fa9da9bc
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Sunflower Passion.milk
@@ -0,0 +1,272 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=3.645252
+fWaveScale=0.010000
+fWaveSmoothing=0.500000
+fWaveParam=-0.500000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=2.853000
+fZoomExponent=2.100000
+fShader=0.000000
+zoom=1.025000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.290770
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=1.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.015000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=0.000000
+mv_a=1.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.020410
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=0.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=1.000000
+shapecode_0_border_r=0.000000
+shapecode_0_border_g=0.000000
+shapecode_0_border_b=0.000000
+shapecode_0_border_a=1.000000
+shape_0_per_frame1=x = 0.5 + 0.1*sin(0.89*q8);
+shape_0_per_frame2=y = 0.5 - 0.1*cos(0.77*q8);
+shape_0_per_frame3=
+shape_0_per_frame4=r = 0.25+0.25*sin(time*0.7679);
+shape_0_per_frame5=g = 0.25+0.25*sin(time*0.8079);
+shape_0_per_frame6=b = 0.25+0.25*sin(time*0.7339);
+shape_0_per_frame7=r2 = 0.25+0.25*sin(time*0.6979);
+shape_0_per_frame8=g2 = 0.25+0.25*sin(time*0.849);
+shape_0_per_frame9=b2 = 0.25+0.25*sin(time*0.8079);
+shapecode_1_enabled=1
+shapecode_1_sides=100
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.020068
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=0.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=0.000000
+shapecode_1_border_g=0.000000
+shapecode_1_border_b=0.000000
+shapecode_1_border_a=1.000000
+shape_1_per_frame1=x = 0.5 - 0.1*sin(0.7089*q8);
+shape_1_per_frame2=y = 0.5 + 0.1*cos(0.5077*q8);
+shape_1_per_frame3=
+shape_1_per_frame4=r = 0.25+0.25*sin(time*0.6479);
+shape_1_per_frame5=g = 0.25+0.25*sin(time*0.5079);
+shape_1_per_frame6=b = 0.25+0.25*sin(time*0.9339);
+shape_1_per_frame7=r2 = 0.25+0.25*sin(time*0.779);
+shape_1_per_frame8=g2 = 0.25+0.25*sin(time*0.707);
+shape_1_per_frame9=b2 = 0.25+0.25*sin(time*0.747);
+shapecode_2_enabled=1
+shapecode_2_sides=100
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.020068
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=0.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=1.000000
+shapecode_2_border_r=0.000000
+shapecode_2_border_g=0.000000
+shapecode_2_border_b=0.000000
+shapecode_2_border_a=1.000000
+shape_2_per_frame1=x = 0.5 + 0.1*sin(0.679*q8);
+shape_2_per_frame2=y = 0.5 - 0.1*cos(0.877*q8);
+shape_2_per_frame3=
+shape_2_per_frame4=r = 0.25+0.25*sin(time*0.5679);
+shape_2_per_frame5=g = 0.25+0.25*sin(time*0.4079);
+shape_2_per_frame6=b = 0.25+0.25*sin(time*1.1339);
+shape_2_per_frame7=r2 = 0.25+0.25*sin(time*0.9979);
+shape_2_per_frame8=g2 = 0.25+0.25*sin(time*0.891);
+shape_2_per_frame9=b2 = 0.25+0.25*sin(time*0.713);
+shapecode_3_enabled=1
+shapecode_3_sides=100
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.020068
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=0.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=1.000000
+shapecode_3_border_r=0.000000
+shapecode_3_border_g=0.000000
+shapecode_3_border_b=0.000000
+shapecode_3_border_a=1.000000
+shape_3_per_frame1=x = 0.5 + 0.1*sin(0.916*q8);
+shape_3_per_frame2=y = 0.5 - 0.1*cos(0.977*q8);
+shape_3_per_frame3=
+shape_3_per_frame4=r = 0.25+0.25*sin(time*1.1679);
+shape_3_per_frame5=g = 0.25+0.25*sin(time*1.18079);
+shape_3_per_frame6=b = 0.25+0.25*sin(time*1.17339);
+shape_3_per_frame7=r2 = 0.25+0.25*sin(time*1.16979);
+shape_3_per_frame8=g2 = 0.25+0.25*sin(time*1.1849);
+shape_3_per_frame9=b2 = 0.25+0.25*sin(time*1.81079);
+per_frame_1=wave_r = 0.0 + 0.000*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+per_frame_2=wave_g = 0.0 + 0.000*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+per_frame_3=wave_b = 0.0 + 0.000*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+per_frame_4=zoom = zoom + 0.01*( 0.60*sin(0.339*time) + 0.40*sin(0.276*time) );
+per_frame_5=rot = rot + 0.010*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_6=//decay = decay - 0.01*equal(frame%6,0);
+per_frame_7=warp=0;
+per_frame_8=zoom =1;
+per_frame_9=rot =0;
+per_frame_10=cx=0.5;
+per_frame_11=cy=0.5;
+per_frame_12=q1 = 0.5 + 0.1*sin(time);
+per_frame_13=q2 = 0.5 - 0.1*cos(time);
+per_frame_14=wave_a =0;
+per_frame_15=decay=1;
+per_frame_16=
+per_frame_17=
+per_frame_18=
+per_frame_19=q8 = oldq8+ 0.0005*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_20=oldq8 =q8;
+per_frame_21=mybass = mybass + 0.01*(bass + bass_att);
+per_frame_22=
+per_frame_23=rot =1 + 0.15*sin(mybass*0.1789);
+per_frame_24=zoom = 1.4 + 0.1*sin(mybass*0.786);
+per_pixel_1=myx = (x-q1)*2;
+per_pixel_2=myy= (y-q2)*2;
+per_pixel_3=myrad = (myx*myx) + (myy*myy);
+per_pixel_4=dx = 0.1*(myy/(myrad+1));
+per_pixel_5=dy = -0.1*(myx/(myrad+1));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - The Awakening.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - The Awakening.milk
new file mode 100644
index 00000000..4aa3e8df
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - The Awakening.milk
@@ -0,0 +1,65 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.989000
+fVideoEchoZoom=1.483841
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.800000
+fWaveScale=0.089269
+fWaveSmoothing=0.720000
+fWaveParam=-0.360000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.009963
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=0.999999
+sy=0.999830
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.060000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+per_frame_1=warp = 0;
+per_frame_2=wave_r = wave_r + .4*sin(time*.678);
+per_frame_3=wave_g = wave_g + .4*sin(time*.977);
+per_frame_4=wave_b = wave_b + .4*sin(time*.766);
+per_frame_5=decay = 1 - mid /20;
+per_frame_6=q1 = wave_r;
+per_frame_7=wave_mystery = -time/6;
+per_pixel_1=zoom = 0.974 + rad/10 + abs(sin(ang-rad)/10) +q1/10;
+per_pixel_2=rot = -0.4 + treb*.001 + sin(treb+rad)/33 -q1/8;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - The Chaos Of Colours (Drifting Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - The Chaos Of Colours (Drifting Mix).milk
new file mode 100644
index 00000000..765fd87b
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - The Chaos Of Colours (Drifting Mix).milk
@@ -0,0 +1,217 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.700000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.010000
+fWaveSmoothing=0.630000
+fWaveParam=-1.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=13.290894
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=-0.280000
+dy=-0.320000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.950000
+ib_g=0.850000
+ib_b=0.650000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=3
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.550000
+shapecode_0_ang=0.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=0.100000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.900000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.200000
+shape_0_per_frame1=ang = time*1.4;
+shape_0_per_frame2=x = 0.5 + 0.08*cos(time*1.3) + 0.03*cos(time*0.7);
+shape_0_per_frame3=y = 0.5 + 0.08*sin(time*1.4) + 0.03*sin(time*0.7);
+shape_0_per_frame4=r = 0.5 + 0.5*sin(q8*0.613 + 1);
+shape_0_per_frame5=g = 0.5 + 0.5*sin(q8*0.763 + 2);
+shape_0_per_frame6=b = 0.5 + 0.5*sin(q8*0.771 + 5);
+shape_0_per_frame7=r2 = 0.5 + 0.5*sin(q8*0.635 + 4);
+shape_0_per_frame8=g2 = 0.5 + 0.5*sin(q8*0.616+ 1);
+shape_0_per_frame9=b2 = 0.5 + 0.5*sin(q8*0.538 + 3);
+shapecode_1_enabled=1
+shapecode_1_sides=32
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.400000
+shapecode_1_ang=0.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.300000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.200000
+shape_1_per_frame1=ang = time*1.7;
+shape_1_per_frame2=x = 0.5 + 0.08*cos(time*1.1) + 0.03*cos(time*0.7);
+shape_1_per_frame3=y = 0.5 + 0.08*sin(time*1.1) + 0.03*sin(time*0.7);
+shape_1_per_frame4=r = 0.5 + 0.5*sin(q8*0.713 + 1);
+shape_1_per_frame5=g = 0.5 + 0.5*sin(q8*0.563 + 2);
+shape_1_per_frame6=b = 0.5 + 0.5*sin(q8*0.654 + 5);
+shape_1_per_frame7=r2 = 0.5 + 0.5*sin(q8*0.885 + 4);
+shape_1_per_frame8=g2 = 0.5 + 0.5*sin(q8*0.556+ 1);
+shape_1_per_frame9=b2 = 0.5 + 0.5*sin(q8*0.638 + 3);
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.400000
+shapecode_2_ang=0.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=0.600000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.400000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.200000
+shape_2_per_frame1=ang = time*1.24;
+shape_2_per_frame2=x = 0.5 - 0.08*cos(time*1.07) + 0.03*cos(time*0.7);
+shape_2_per_frame3=y = 0.5 - 0.08*sin(time*1.33) + 0.03*sin(time*0.7);
+shape_2_per_frame4=g = 0.5 + 0.5*sin(q8*0.713 + 1);
+shape_2_per_frame5=b = 0.5 + 0.5*cos(q8*0.563 + 2);
+shape_2_per_frame6=r = 0.5 + 0.5*sin(q8*0.654 + 5);
+shape_2_per_frame7=r2 = 0.5 + 0.5*cos(q8*0.885 + 4);
+shape_2_per_frame8=g2 = 0.5 + 0.5*cos(q8*0.556+ 1);
+shape_2_per_frame9=b2 = 0.5 + 0.5*sin(q8*0.638 + 3);
+per_frame_1=ob_r = 0.5 + 0.4*sin(time*1.324);
+per_frame_2=ob_g = 0.5 + 0.4*cos(time*1.371);
+per_frame_3=ob_b = 0.5+0.4*sin(2.332*time);
+per_frame_4=ib_r = 0.5 + 0.25*sin(time*1.424);
+per_frame_5=ib_g = 0.25 + 0.25*cos(time*1.871);
+per_frame_6=ib_b = 1-ob_b;
+per_frame_7=volume = 0.15*(bass+bass_att+treb+treb_att+mid+mid_att);
+per_frame_8=xamptarg = if(equal(frame%15,0),min(0.5*volume*bass_att,0.5),xamptarg);
+per_frame_9=xamp = xamp + 0.5*(xamptarg-xamp);
+per_frame_10=xdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir));
+per_frame_11=xaccel = xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_12=xspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_13=xpos = xpos + 0.001*xspeed;
+per_frame_14=dx = xpos*0.005;
+per_frame_15=yamptarg = if(equal(frame%15,0),min(0.3*volume*treb_att,0.5),yamptarg);
+per_frame_16=yamp = yamp + 0.5*(yamptarg-yamp);
+per_frame_17=ydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir));
+per_frame_18=yaccel = ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_19=yspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_20=ypos = ypos + 0.001*yspeed;
+per_frame_21=dy = ypos*0.005;
+per_frame_22=rot = 10*(dx-dy);
+per_frame_23=wave_a = 0;
+per_frame_24=q8 =oldq8+ 0.0003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_25=oldq8 = q8;
+per_frame_26=q7 = 0.003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_27=monitor = rot;
+per_pixel_1=zoom = 1+0.05*rad;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - The Chaos Of Colours.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - The Chaos Of Colours.milk
new file mode 100644
index 00000000..240700f1
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - The Chaos Of Colours.milk
@@ -0,0 +1,215 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.700000
+fDecay=0.940000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.010000
+fWaveSmoothing=0.630000
+fWaveParam=-1.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=13.290894
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=-0.280000
+dy=-0.320000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.000000
+ib_r=0.950000
+ib_g=0.850000
+ib_b=0.650000
+ib_a=1.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=3
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.550000
+shapecode_0_ang=0.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=0.100000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.900000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.400000
+shape_0_per_frame1=ang = time*0.4;;
+shape_0_per_frame2=x = 0.5 + 0.08*cos(time*1.3) + 0.03*cos(time*0.7);
+shape_0_per_frame3=y = 0.5 + 0.08*sin(time*1.4) + 0.03*sin(time*0.7);
+shape_0_per_frame4=r =0.5 + 0.5*sin(q8*0.613 + 1);
+shape_0_per_frame5=g = 0.5 + 0.5*sin(q8*0.763 + 2);
+shape_0_per_frame6=b = 0.5 + 0.5*sin(q8*0.771 + 5);
+shape_0_per_frame7=r2 = 0.5 + 0.5*sin(q8*0.635 + 4);
+shape_0_per_frame8=g2 = 0.5 + 0.5*sin(q8*0.616+ 1);
+shape_0_per_frame9=b2 = 0.5 + 0.5*sin(q8*0.538 + 3);
+shapecode_1_enabled=1
+shapecode_1_sides=32
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.400000
+shapecode_1_ang=0.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.300000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shape_1_per_frame1=ang = time*1.7;
+shape_1_per_frame2=x = 0.5 + 0.08*cos(time*1.1) + 0.03*cos(time*0.7);
+shape_1_per_frame3=y = 0.5 + 0.08*sin(time*1.1) + 0.03*sin(time*0.7);
+shape_1_per_frame4=r = 0.5 + 0.5*sin(q8*0.713 + 1);
+shape_1_per_frame5=g = 0.5 + 0.5*sin(q8*0.563 + 2);
+shape_1_per_frame6=b = 0.5 + 0.5*sin(q8*0.654 + 5);
+shape_1_per_frame7=r2 = 0.5 + 0.5*sin(q8*0.885 + 4);
+shape_1_per_frame8=g2 = 0.5 + 0.5*sin(q8*0.556+ 1);
+shape_1_per_frame9=b2 = 0.5 + 0.5*sin(tq8*0.638 + 3);
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.400000
+shapecode_2_ang=0.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.500000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shape_2_per_frame1=ang = time*1.24;
+shape_2_per_frame2=x = 0.5 - 0.08*cos(time*1.07) + 0.03*cos(time*0.7);
+shape_2_per_frame3=y = 0.5 - 0.08*sin(time*1.33) + 0.03*sin(time*0.7);
+shape_2_per_frame4=g = 0.5 + 0.5*sin(q8*0.713 + 1);
+shape_2_per_frame5=b = 0.5 + 0.5*sin(q8*0.563 + 2);
+shape_2_per_frame6=r = 0.5 + 0.5*sin(q8*0.654 + 5);
+shape_2_per_frame7=r2 = 0.5 + 0.5*sin(q8*0.885 + 4);
+shape_2_per_frame8=g2 = 0.5 + 0.5*sin(q8*0.556+ 1);
+shape_2_per_frame9=b2 = 0.5 + 0.5*sin(q8*.638 + 3);
+per_frame_1=ob_r = 0.5 + 0.4*sin(time*1.324);
+per_frame_2=ob_g = 0.5 + 0.4*cos(time*1.371);
+per_frame_3=ob_b = 0.5+0.4*sin(2.332*time);
+per_frame_4=ib_r = 0.5 + 0.25*sin(time*1.424);
+per_frame_5=ib_g = 0.25 + 0.25*cos(time*1.871);
+per_frame_6=ib_b = 1-ob_b;
+per_frame_7=volume = 0.15*(bass+bass_att+treb+treb_att+mid+mid_att);
+per_frame_8=xamptarg = if(equal(frame%15,0),min(0.5*volume*bass_att,0.5),xamptarg);
+per_frame_9=xamp = xamp + 0.5*(xamptarg-xamp);
+per_frame_10=xdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir));
+per_frame_11=xaccel = xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_12=xspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp);
+per_frame_13=xpos = xpos + 0.001*xspeed;
+per_frame_14=dx = xpos*0.05;
+per_frame_15=yamptarg = if(equal(frame%15,0),min(0.3*volume*treb_att,0.5),yamptarg);
+per_frame_16=yamp = yamp + 0.5*(yamptarg-yamp);
+per_frame_17=ydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir));
+per_frame_18=yaccel = ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_19=yspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp);
+per_frame_20=ypos = ypos + 0.001*yspeed;
+per_frame_21=dy = ypos*0.05;
+per_frame_22=wave_a = 0;
+per_frame_23=q8 =oldq8+ 0.0003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_24=oldq8 = q8;
+per_frame_25=q7 = 0.003*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_pixel_1=zoom =( log(sqrt(2)-rad) -0.24)*1;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - The Shroomery.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - The Shroomery.milk
new file mode 100644
index 00000000..53ae0d37
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - The Shroomery.milk
@@ -0,0 +1,454 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=1.000000
+fVideoEchoZoom=0.332702
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=1.000000
+fWaveSmoothing=0.750000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.200000
+ob_a=0.500000
+ib_size=0.005000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=7.058490
+nMotionVectorsY=31.639950
+mv_dx=-0.385207
+mv_dy=-0.168757
+mv_l=0.598467
+mv_r=0.358736
+mv_g=0.275337
+mv_b=0.561849
+mv_a=0.000000
+wavecode_0_enabled=1
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=1
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.027964
+wavecode_0_smoothing=0.000000
+wavecode_0_r=0.300000
+wavecode_0_g=1.000000
+wavecode_0_b=0.300000
+wavecode_0_a=1.000000
+wave_0_init1=//pi
+wave_0_init2=//t8=3.14159265*0.15;
+wave_0_init3=//t5 = 1;
+wave_0_init4=
+wave_0_init5=//n =300;
+wave_0_init6=t1 = 300;
+wave_0_init7=//rx = 0;
+wave_0_init8=t2 = 0;
+wave_0_init9=//ry = 0;
+wave_0_init10=t3 = 0;
+wave_0_init11=//tpi =3.1415;
+wave_0_init12=t4 = 3.14159265;
+wave_0_init13=//c=1;
+wave_0_init14=t5 = 1;
+wave_0_init15=//hu=10;
+wave_0_init16=t6 = 10;
+wave_0_init17=//hut=-10;
+wave_0_init18=t7 = -10;
+wave_0_per_frame1=t7 = 0.5+0.5*sin(time)*t4;
+wave_0_per_frame2=t6 = (t7+t6*5)/6;
+wave_0_per_frame3=t2 = pow(2*bass+bass_att,5)*0.00015111 +oldt2;
+wave_0_per_frame4=oldt2 = t2;
+wave_0_per_frame5=//t2 = 3*sin(time*0.0965);
+wave_0_per_frame6=t3 = pow(2*bass+bass_att,4)*0.00026213 + oldt3;
+wave_0_per_frame7=oldt3 = t3;
+wave_0_per_frame8=//t3 = 3*sin(time*0.0872);
+wave_0_per_frame9=
+wave_0_per_frame10=q1 = -cos(cos(t2));
+wave_0_per_frame11=q2 = cos(-t3);
+wave_0_per_frame12=q3 = sin(cos(-t2));
+wave_0_per_frame13=q4 = sin(t3);
+wave_0_per_point1=u = sample*2-1;
+wave_0_per_point2=rf = 512;
+wave_0_per_point3=shc = 1-u*u;
+wave_0_per_point4=cf = below(sample,0.45);
+wave_0_per_point5=u=if(cf,sqrt(shc)*(-u/2+0.5), if(below(sample,0.55), (sample-0.45)*15+0.1, pow(shc,0.7)*1.5));
+wave_0_per_point6=u = u + v/8;
+wave_0_per_point7=px = cos(sample*t4*rf)*u/2+cos(t6)+1.5;
+wave_0_per_point8=py = sample*2-1;
+wave_0_per_point9=pz = sin(sample*t4*rf)*u/2+2.9;
+wave_0_per_point10=y1 = py*q1 + pz*q3;
+wave_0_per_point11=z1 = pz*q1 - py*q3;
+wave_0_per_point12=x2 = px*q2 + z1*q4;
+wave_0_per_point13=z2 = z1*q2 - px*q4+5;
+wave_0_per_point14=x = x2/z2;
+wave_0_per_point15=y = y1/z2;
+wave_0_per_point16=x = x*0.5 + 0.5;
+wave_0_per_point17=y = 0.5*y + 0.5;
+wave_0_per_point18=r = 0.5+sin(sample*195)*0.5;
+wave_0_per_point19=g = 0.5*sin(time*0.145)+0.499*(0.5+sin(x*95)*0.5);
+wave_0_per_point20=b = 0.5*sin(time*0.1876)+0.495*(0.5+sin(y*208)*0.5);
+wavecode_1_enabled=1
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=1
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=1
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.027964
+wavecode_1_smoothing=0.000000
+wavecode_1_r=0.000000
+wavecode_1_g=0.000000
+wavecode_1_b=0.400000
+wavecode_1_a=1.000000
+wave_1_init1=//pi
+wave_1_init2=//t8=3.14159265*0.15;
+wave_1_init3=//t5 = 1;
+wave_1_init4=
+wave_1_init5=//n =300;
+wave_1_init6=t1 = 300;
+wave_1_init7=//rx = 0;
+wave_1_init8=t2 = 0;
+wave_1_init9=//ry = 0;
+wave_1_init10=t3 = 0;
+wave_1_init11=//tpi =3.1415;
+wave_1_init12=t4 = 3.14159265;
+wave_1_init13=//c=1;
+wave_1_init14=t5 = 1;
+wave_1_init15=//hu=10;
+wave_1_init16=t6 = 10;
+wave_1_init17=//hut=-10;
+wave_1_init18=t7 = -10;
+wave_1_per_frame1=t7 = 0.5+0.5*sin(time*0.135)*t4;
+wave_1_per_frame2=t6 = (t7+t6*5)/6;
+wave_1_per_frame3=t2 = pow(bass+bass_att,6)*0.00005 + 0.022+ oldt2;
+wave_1_per_frame4=oldt2 = if(above(t2,10000),0,t2);
+wave_1_per_frame5=//t2 = t2 -cos(time*0.451);
+wave_1_per_frame6=t3 = pow(bass+bass_att,7)*0.00005 + 0.0278 +oldt3;
+wave_1_per_frame7=oldt3 = t3;
+wave_1_per_frame8=//t3 = t3-cos(time*0.321);
+wave_1_per_frame9=q1 = -cos(cos(t2));
+wave_1_per_frame10=q2 = -cos(t3);
+wave_1_per_frame11=q3 = sin(cos(t2));
+wave_1_per_frame12=q4 = sin(t3);
+wave_1_per_point1=u = sample*2-1;
+wave_1_per_point2=rf = 1000;
+wave_1_per_point3=shc = 1-u*u;
+wave_1_per_point4=cf = below(sample,0.45);
+wave_1_per_point5=u=if(cf,sqrt(shc)*(-u/2+0.5), if(below(sample,0.55), (sample-0.45)*15+0.1, pow(shc,0.7)*1.5));
+wave_1_per_point6=u = u + v/8;
+wave_1_per_point7=px = cos(sample*t4*rf)*u/2+cos(t6)+1.5;
+wave_1_per_point8=py = sample*2-1;
+wave_1_per_point9=pz = sin(sample*t4*rf)*u/2+2.9;
+wave_1_per_point10=y1 = py*q1 + pz*q3;
+wave_1_per_point11=z1 = pz*q1 - py*q3;
+wave_1_per_point12=x2 = px*q2 + z1*q4;
+wave_1_per_point13=z2 = z1*q2 - px*q4+5;
+wave_1_per_point14=x = x2/z2;
+wave_1_per_point15=y = y1/z2;
+wave_1_per_point16=x = x*0.5 + 0.5;
+wave_1_per_point17=y = 0.5*y + 0.5;
+wave_1_per_point18=r = abs(sample-(sample*progress));
+wave_1_per_point19=g = sample/y;
+wave_1_per_point20=b = x2*sample;
+wavecode_2_enabled=1
+wavecode_2_samples=512
+wavecode_2_sep=0
+wavecode_2_bSpectrum=0
+wavecode_2_bUseDots=1
+wavecode_2_bDrawThick=1
+wavecode_2_bAdditive=0
+wavecode_2_scaling=1.027964
+wavecode_2_smoothing=0.000000
+wavecode_2_r=0.800000
+wavecode_2_g=0.400000
+wavecode_2_b=0.400000
+wavecode_2_a=1.000000
+wave_2_init1=//pi
+wave_2_init2=//t8=3.14159265*0.15;
+wave_2_init3=//t5 = 1;
+wave_2_init4=
+wave_2_init5=//n =300;
+wave_2_init6=t1 = 300;
+wave_2_init7=//rx = 0;
+wave_2_init8=t2 = 0;
+wave_2_init9=//ry = 0;
+wave_2_init10=t3 = 0;
+wave_2_init11=//tpi =3.1415;
+wave_2_init12=t4 = 3.14159265;
+wave_2_init13=//c=1;
+wave_2_init14=t5 = 1;
+wave_2_init15=//hu=10;
+wave_2_init16=t6 = 10;
+wave_2_init17=//hut=-10;
+wave_2_init18=t7 = -10;
+wave_2_per_frame1=t7 = 0.5+0.5*sin(time*0.896)*t4;
+wave_2_per_frame2=t6 = (t7+t6*5)/6;
+wave_2_per_frame3=t2 = pow(1.13*bass+bass_att,5)*0.0001 +0.0017+oldt2;
+wave_2_per_frame4=oldt2 = t2;
+wave_2_per_frame5=t2 = t2 + sin(time*0.01963);
+wave_2_per_frame6=t3 = pow(bass+1.14*bass_att,5)*0.0001 + 0.00121 +oldt3;
+wave_2_per_frame7=oldt3 = t3;
+wave_2_per_frame8=t3 = t3 + sin(time*0.06527);
+wave_2_per_frame9=q1 = -cos(cos(t2));
+wave_2_per_frame10=q2 = cos(t3);
+wave_2_per_frame11=q3 = sin(cos(t2));
+wave_2_per_frame12=q4 = sin(t3);
+wave_2_per_point1=u = sample*2-1;
+wave_2_per_point2=rf = 1000;
+wave_2_per_point3=shc = 1-u*u;
+wave_2_per_point4=cf = below(sample,0.45);
+wave_2_per_point5=u=if(cf,sqrt(shc)*(-u/2+0.5), if(below(sample,0.55), (sample-0.45)*15+0.1, pow(shc,0.7)*1.5));
+wave_2_per_point6=u = u + v/8;
+wave_2_per_point7=px = cos(sample*t4*rf)*u/2+cos(t6)+1.5;
+wave_2_per_point8=py = sample*2-1;
+wave_2_per_point9=pz = sin(sample*t4*rf)*u/2+2.9;
+wave_2_per_point10=y1 = py*q1 + pz*q3;
+wave_2_per_point11=z1 = pz*q1 - py*q3;
+wave_2_per_point12=x2 = px*q2 + z1*q4;
+wave_2_per_point13=z2 = z1*q2 - px*q4+5;
+wave_2_per_point14=x = x2/z2;
+wave_2_per_point15=y = y1/z2;
+wave_2_per_point16=x = x*0.5 + 0.5;
+wave_2_per_point17=y = 0.5*y + 0.5;
+wave_2_per_point18=r = sample;
+wave_2_per_point19=g = x*sample;
+wave_2_per_point20=b = y*x/sample;
+wavecode_3_enabled=1
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=1
+wavecode_3_bDrawThick=1
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.027964
+wavecode_3_smoothing=0.000000
+wavecode_3_r=0.000000
+wavecode_3_g=0.500000
+wavecode_3_b=0.700000
+wavecode_3_a=1.000000
+wave_3_init1=//pi
+wave_3_init2=//t8=3.14159265*0.15;
+wave_3_init3=//t5 = 1;
+wave_3_init4=
+wave_3_init5=//n =300;
+wave_3_init6=t1 = 300;
+wave_3_init7=//rx = 0;
+wave_3_init8=t2 = 0;
+wave_3_init9=//ry = 0;
+wave_3_init10=t3 = 0;
+wave_3_init11=//tpi =3.1415;
+wave_3_init12=t4 = 3.14159265;
+wave_3_init13=//c=1;
+wave_3_init14=t5 = 1;
+wave_3_init15=//hu=10;
+wave_3_init16=t6 = 10;
+wave_3_init17=//hut=-10;
+wave_3_init18=t7 = -10;
+wave_3_per_frame1=t7 = 0.5+0.5*sin(time)*t4;
+wave_3_per_frame2=t6 = (t7+t6*5)/6;
+wave_3_per_frame3=t2 = q8*0.7825;
+wave_3_per_frame4=t3 = q8*0.6242;
+wave_3_per_frame5=q1 = -cos(cos(t2));
+wave_3_per_frame6=q2 = cos(t3);
+wave_3_per_frame7=q3 = sin(cos(t2));
+wave_3_per_frame8=q4 = sin(t3);
+wave_3_per_point1=u = sample*2-1;
+wave_3_per_point2=rf = 1000;
+wave_3_per_point3=shc = 1-u*u;
+wave_3_per_point4=cf = below(sample,0.45);
+wave_3_per_point5=u=if(cf,sqrt(shc)*(-u/2+0.5), if(below(sample,0.55), (sample-0.45)*15+0.1, pow(shc,0.7)*1.5));
+wave_3_per_point6=u = u + v/8;
+wave_3_per_point7=px = cos(sample*t4*rf)*u/2+cos(t6)+1.5;
+wave_3_per_point8=py = sample*2-1;
+wave_3_per_point9=pz = sin(sample*t4*rf)*u/2+2.9;
+wave_3_per_point10=y1 = py*q1 + pz*q3;
+wave_3_per_point11=z1 = pz*q1 - py*q3;
+wave_3_per_point12=x2 = px*q2 + z1*q4;
+wave_3_per_point13=z2 = z1*q2 - px*q4+5;
+wave_3_per_point14=x = x2/z2;
+wave_3_per_point15=y = y1/z2;
+wave_3_per_point16=x = x*0.5 + 0.5;
+wave_3_per_point17=y = 0.5*y + 0.5;
+wave_3_per_point18=r = 0.5*(y/x) + 0.499*sin(time*0.564);
+wave_3_per_point19=b = 0.5*(x*y) + 0.499*sin(time*0.457);
+wave_3_per_point20=g = 0.5*(x*x) + 0.499*sin(time*0.134);
+shapecode_0_enabled=1
+shapecode_0_sides=100
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.496295
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=5.617169
+shapecode_0_tex_zoom=1.699528
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=0.100000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=//x = 0.5+ 0.4*sin(0.2765*time+0.341*q8);
+shape_0_per_frame2=//y = 0.5+ 0.4*sin(0.311*time+0.213*q8);
+shape_0_per_frame3=//ang = 3.1415-3.1415*cos(time*0.1389);
+shape_0_per_frame4=//rad = 0.5+0.5*sin(q8*0.2685);
+shape_0_per_frame5=tex_Ang = q8;
+shapecode_1_enabled=1
+shapecode_1_sides=100
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.496295
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=5.617169
+shapecode_1_tex_zoom=1.719942
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=0.100000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=//x = 0.5+ 0.4*sin(0.2765*time+0.341*q8);
+shape_1_per_frame2=//y = 0.5+ 0.4*sin(0.311*time+0.213*q8);
+shape_1_per_frame3=//ang = 3.1415-3.1415*cos(time*0.1389);
+shape_1_per_frame4=//rad = 0.5+0.5*sin(q8*0.2685);
+shape_1_per_frame5=tex_Ang = q8-0.02;
+shape_1_per_frame6=//x = x +0.01;
+shapecode_2_enabled=1
+shapecode_2_sides=100
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.496295
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.740601
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=0.100000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=//x = 0.5+ 0.4*sin(0.2765*time+0.341*q8);
+shape_2_per_frame2=//y = 0.5+ 0.4*sin(0.311*time+0.213*q8);
+shape_2_per_frame3=//ang = 3.1415-3.1415*cos(time*0.1389);
+shape_2_per_frame4=//rad = 0.5+0.5*sin(q8*0.2685);
+shape_2_per_frame5=tex_Ang = q8-0.04;
+shape_2_per_frame6=//x = x +0.01;
+shapecode_3_enabled=0
+shapecode_3_sides=100
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=1
+shapecode_3_x=0.120000
+shapecode_3_y=0.200000
+shapecode_3_rad=0.330038
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=1.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=1.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=1.000000
+shapecode_3_a2=1.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+shape_3_per_frame1=x = 0.5+ 0.4*sin(0.105*time+0.3*q4);
+shape_3_per_frame2=y = 0.5+ 0.4*sin(0.1267*time+0.323*q4);
+shape_3_per_frame3=ang = 3.1415+3.1415*sin(time*0.2654);
+shape_3_per_frame4=rad = 0.5+0.5*sin(q4*0.785);
+per_frame_init_1=//With thanks to UnConeD for his mushy SSC code. :)
+per_frame_1=warp=0;
+per_frame_2=wave_a=0;
+per_frame_3=decay = 0.97;
+per_frame_4=q7 = 0.00004*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_5=
+per_frame_6=q6 = oldq6+ 0.0002*(pow(1+0.1*bass+0.1*bass_att+1.2*treb+0.4*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_7=oldq6 = q6;
+per_frame_8=
+per_frame_9=q4 = oldq4+ 0.0002*(pow(1+0.1*bass+0.1*bass_att+0.1*treb+0.1*treb_att+1.2*mid+0.4*mid_att,6)/fps);
+per_frame_10=oldq4 = q4;
+per_frame_11=
+per_frame_12=q8 = oldq8+ 0.0002*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_13=oldq8 = q8;
+per_frame_14=
+per_frame_15=q8 = oldq8+ 0.0002*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_16=oldq8 = if(above(q8,10000),0,q8);
+per_frame_17=ob_b = max(0,sin(q8*0.2542)*0.2 +0.1);
+per_frame_18=ob_r = max(0,sin(q8*0.985)*0.4 + 0.2);
+per_frame_19=ob_g = max(0,sin(q8*0.8711)*0.3 + 0.1);
+per_frame_20=ob_a =max(0,0.3*(q7-0.2))+0.1;
+per_frame_21=ib_r = 1-if(ob_size-0.005,0,1);
+per_frame_22=ib_g = ib_r*(0.21*0.2*sin(time*0.643));
+per_frame_23=ib_b = ib_r*(0.21*0.2*sin(time*0.853));
+per_frame_24=ib_a =0.2*q7;
+per_frame_25=echo_alpha = above(q7,0.2);
+per_frame_26=echo_zoom = 1 + 0.01*q7;
+per_pixel_1=dx=dx+0.007*sin((y*2-1)*meshx)+ 0.006*sin((y*2-1)*meshx*1.3333);
+per_pixel_2=dy=dy+sin(q8*0.1745)*0.007*cos((x*2-1)*meshx*1.3333)+ sin(q8*0.1875)*0.006*cos((x*2-1)*meshx*1.666);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Timeless Voyage.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Timeless Voyage.milk
new file mode 100644
index 00000000..8de24728
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Timeless Voyage.milk
@@ -0,0 +1,69 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.980000
+fVideoEchoZoom=0.999609
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=5
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=1.285749
+fWaveSmoothing=0.900000
+fWaveParam=0.600000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.380217
+rot=0.020000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.198054
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.500000
+ob_r=0.000000
+ob_g=1.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.550000
+ib_a=0.000000
+nMotionVectorsX=52.090683
+nMotionVectorsY=37.504894
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=4.534792
+mv_r=0.000000
+mv_g=0.162823
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = bass-1;
+per_frame_2=wave_g = mid-1.2;
+per_frame_3=wave_b = treb-.5;
+per_frame_4=warp =0;
+per_pixel_1=rot=0.2*pow(ang,3);
+per_pixel_2=zoom=sin(pow(rad,3))+1;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Torrid Tales.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Torrid Tales.milk
new file mode 100644
index 00000000..60fcc68b
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Torrid Tales.milk
@@ -0,0 +1,79 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=0.999609
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=8
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=1.285751
+fWaveSmoothing=0.630000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.990099
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.500000
+mv_r=0.350000
+mv_g=0.350000
+mv_b=0.350000
+mv_a=0.000000
+per_frame_1=warp=0;
+per_frame_2=ib_r = 0.5+0.50*( 0.60*sin(0.814*time) + 0.40*sin(1.011*time) );
+per_frame_3=ib_g = 0.5+0.5*sin(time*1.476);
+per_frame_4=ib_b = 0.5+0.5*sin(1.374*time);
+per_frame_5=ob_r = ib_r;
+per_frame_6=ob_g=ib_g;
+per_frame_7=ob_b=ib_b;
+per_frame_8=q8 =oldq8+ 0.001*(pow(1+1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_9=oldq8 = q8;
+per_frame_10=wave_a = 0;
+per_frame_11=ib_a =1;
+per_pixel_1=dx = sin((1000+sin(q8))/y)/200;
+per_pixel_2=dy = cos((1000+sin(q8))/x)/200;
+per_pixel_3=rot = dy*100*dx;
+per_frame_init_1=q8=0;
+per_frame_init_2=q1 = rand(2)+2;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - Twilight Tunnel.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Twilight Tunnel.milk
new file mode 100644
index 00000000..a0d4bf90
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - Twilight Tunnel.milk
@@ -0,0 +1,232 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.960000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.010000
+fWaveSmoothing=0.630000
+fWaveParam=-0.500000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=0.980296
+sy=1.000000
+wave_r=0.000000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.089632
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=0.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=0.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=1.000000
+shape_0_per_frame1=//rad = rad +0.0155*cos(q8*0.423);
+shape_0_per_frame2=border_r = 0.5 + 0.499*sin(time*0.6711);
+shape_0_per_frame3=border_b = 0.5 + 0.499*sin(time*0.8011);
+shape_0_per_frame4=border_g = 0.5 + 0.499*sin(time*0.7777);
+shapecode_1_enabled=1
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=0.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=1.000000
+shape_1_per_frame1=//rad = rad +0.0155*cos(q8*0.423);
+shape_1_per_frame2=border_r = 0.5 + 0.499*sin(time*0.7642);
+shape_1_per_frame3=border_b = 0.5 + 0.499*sin(time*0.6411);
+shape_1_per_frame4=border_g = 0.5 + 0.499*sin(time*0.7311);
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.076440
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=0.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=0.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=1.000000
+shape_2_per_frame1=border_r = 0.5 + 0.499*sin(time*0.9413);
+shape_2_per_frame2=border_b = 0.5 + 0.499*sin(time*0.2021);
+shape_2_per_frame3=border_g = 0.5 + 0.499*sin(time*0.8549);
+shapecode_3_enabled=1
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=1
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.067165
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=1.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=1.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=1.000000
+shapecode_3_a2=1.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=0.000000
+shapecode_3_border_a=1.000000
+shape_3_per_frame1=border_r = 0.5 + 0.499*sin(time*0.5157);
+shape_3_per_frame2=border_b = 0.5 + 0.499*sin(time*0.4877);
+shape_3_per_frame3=border_g = 0.5 + 0.499*sin(time*0.3867);
+per_frame_1=warp = 0;
+per_frame_2=wave_mystery = 2;
+per_frame_3=wave_a = 0;
+per_frame_4=q8 =oldq8+ 0.005*(pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps) + 0.035;
+per_frame_5=oldq8 = q8;
+per_frame_6=zoom = 1.5 +0.155*cos(q8*0.423);
+per_frame_7=rot = 0.0128*sin(1.343*q8);
+per_frame_8=dx = 0.0035*sin(q8*0.646);
+per_frame_9=dy = 0.0035*sin(q8*0.314);
+per_frame_10=cx = 0.5 + 0.005*sin(0.497*q8);
+per_frame_11=cy = 0.5 +0.005*sin(0.413*q8);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar - VooV's Movement (After Dark Mix).milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar - VooV's Movement (After Dark Mix).milk
new file mode 100644
index 00000000..959b555f
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar - VooV's Movement (After Dark Mix).milk
@@ -0,0 +1,113 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.000000
+fWaveScale=1.186471
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=0.351767
+fShader=0.000000
+zoom=0.980296
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=0.700000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=1.000000
+ob_g=1.000000
+ob_b=1.000000
+ob_a=1.000000
+ib_size=0.005000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=1.280000
+nMotionVectorsY=1.248000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=warp=0;
+per_frame_2=framehalf = frame%2;
+per_frame_3=volume = 0.3*(bass+mid);
+per_frame_4=beatrate = equal(beatrate,0) + (1-equal(beatrate,0))*(below(volume,0.01) + (1-below(volume,0.01))*beatrate);
+per_frame_5=lastbeat = lastbeat + equal(lastbeat,0)*time;
+per_frame_6=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_7=peakbass_att = max(bass_att,peakbass_att);
+per_frame_8=beat = above(volume,0.8)*below(peakbass_att - bass_att, 0.05*peakbass_att)*above(time - lastbeat, 0.1 + 0.5*(beatrate - 0.1));
+per_frame_9=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_10=peakbass_att = beat*bass_att + (1-beat)*peakbass_att*(above(time - lastbeat, 2*beatrate)*0.99 + (1-above(time - lastbeat, 2*beatrate))*0.998);
+per_frame_11=lastbeat = beat*time + (1-beat)*lastbeat;
+per_frame_12=peakbass_att = max(peakbass_att,1.1*meanbass_att);
+per_frame_13=mode = if(beat,abs(mode-1),mode);
+per_frame_14=q8 = oldq8 +0.003*(((pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,5)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,4)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,3)/fps) + (pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,2)/fps) +(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att)/fps)) + 1/(fps*5);
+per_frame_15=oldq8 = q8;
+per_frame_16=q1 = 0.5 + 0.15*sin(0.416*q8) + 0.15*sin(0.832*q8) + 0.1*sin(1.324*q8);
+per_frame_17=q2 = 0.5 + 0.15*sin(0.341*q8) + 0.15*sin(0.768*q8) + 0.1*sin(1.523*q8);
+per_frame_18=q6 = 0.5 + 0.15*sin(0.287*q8) + 0.15*sin(0.913*q8) + 0.1*sin(1.142*q8);
+per_frame_19=q7 = 0.5 + 0.15*sin(0.531*q8) + 0.15*sin(0.671*q8) + 0.1*sin(1.442*q8);
+per_frame_20=ob_size = beat*0.05;
+per_frame_21=ob_r = sin(20*(q1+q2));
+per_frame_22=ob_g = sin(25*(q6+q7));
+per_frame_23=q4 = (8 + 0.2*sin(q8*0.385) + 0.2*sin(q8*0.641) + 0.2*sin(q8*0.846));
+per_frame_24=q5 = (12 + 0.2*sin(q8*0.385) + 0.2*sin(q8*0.641) + 0.2*sin(q8*0.846));
+per_frame_25=q3 = mode;
+per_frame_26=wave_a =0.4;
+per_frame_27=wave_r = if(framehalf,0.5 + 0.15*sin(0.512*time) + 0.15*sin(0.943*time) + 0.1*sin(1.024*time),0.5 + 0.15*sin(0.483*time) + 0.15*sin(0.879*time) + 0.1*sin(1.423*time));
+per_frame_28=wave_g = if(framehalf,0.5 + 0.15*sin(0.248*time) + 0.15*sin(0.829*time) + 0.1*sin(1.623*time),0.5 + 0.15*sin(0.461*time) + 0.15*sin(0.699*time) + 0.1*sin(1.254*time));
+per_frame_29=wave_b = if(framehalf,0.5 + 0.15*sin(0.211*time) + 0.15*sin(0.652*time) + 0.1*sin(1.865*time),0.5 + 0.15*sin(0.333*time) + 0.15*sin(0.978*time) + 0.1*sin(1.359*time));
+per_pixel_1=newx = x - q1;
+per_pixel_2=newy = y - q6;
+per_pixel_3=newrad = min(sqrt((newx)*(newx)+0.5625*(newy)*(newy))*2,sqrt(2));
+per_pixel_4=newang = atan2(newx,newy);
+per_pixel_5=newzoom = pow(0.995 + 0.05*sin((q4)*(newang+q3)), pow(sin(newrad*newrad), newrad));
+per_pixel_6=dx = (newx)*newzoom - newx;
+per_pixel_7=dy = (newy)*newzoom - newy;
+per_pixel_8=newx = x - q2;
+per_pixel_9=newy = y - q7;
+per_pixel_10=newrad = min(sqrt((newx)*(newx)+0.5625*(newy)*(newy))*2,sqrt(2));
+per_pixel_11=newang = atan2(newx,newy);
+per_pixel_12=newzoom = pow(0.995 + 0.05*sin((q5)*(newang)), pow(sin(newrad*newrad), newrad));
+per_pixel_13=dx = dx + (newx)*newzoom - newx;
+per_pixel_14=dy = dy + (newy)*newzoom - newy;
+per_pixel_15=newx = x - (0.33*(q1+q2+q6));
+per_pixel_16=newy = y - (0.33*(3-q2-q6-q7));
+per_pixel_17=newrad = min(sqrt((newx)*(newx)+0.5625*(newy)*(newy))*2,sqrt(2));
+per_pixel_18=newang = atan2(newx,newy);
+per_pixel_19=newzoom = pow(1.04 + 0.05*sin(0.5*(q4+q5)*(newang)), pow(sin(newrad*newrad), newrad));
+per_pixel_20=dx = dx + (newx)*newzoom - newx;
+per_pixel_21=dy = dy + (newy)*newzoom - newy;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar and Krash - Hallucinogenic Pyramids (Extra Beat Ti.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar and Krash - Hallucinogenic Pyramids (Extra Beat Ti.milk
new file mode 100644
index 00000000..a6fb42dc
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar and Krash - Hallucinogenic Pyramids (Extra Beat Ti.milk
@@ -0,0 +1,83 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=2.000000
+fDecay=0.980000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=6
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=11.940000
+fWaveScale=1.599182
+fWaveSmoothing=0.700000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.772000
+fZoomExponent=1.001000
+fShader=0.000000
+zoom=1.007000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.400000
+wave_b=0.650000
+wave_x=0.010000
+wave_y=0.000000
+ob_size=0.005000
+ob_r=0.300000
+ob_g=0.500000
+ob_b=0.300000
+ob_a=0.700000
+ib_size=0.005000
+ib_r=0.450000
+ib_g=0.350000
+ib_b=0.350000
+ib_a=0.300000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_b = wave_b - 0.200*( 0.60*sin(1.823*time) + 0.40*sin(0.916*time) );
+per_frame_2=wave_r = wave_r + 0.500*( 0.60*sin(1.900*time) + 0.40*sin(1.023*time) );
+per_frame_3=wave_g = wave_g + 0.500*( 0.60*sin(1.1*time) + 0.40*sin(0.949*time) );
+per_frame_4=decay = decay - 0.03*equal(frame%30,0);
+per_frame_5=treb_effect = max(max(treb,treb_att)-1.25,0);
+per_frame_6=mid_effect= max(max(mid,mid_att)-1.25,0);
+per_frame_7=ob_size = ob_size + 0.005*treb_effect;
+per_frame_8=ib_size = ib_size + 0.005*mid_effect;
+per_frame_9=ob_g = ob_g -0.2* treb_effect +0.2* mid_effect;
+per_frame_10=ib_g = ib_g + 0.2*mid_effect+ 0.2*treb_effect;
+per_frame_11=ib_b = ib_b - 0.2*mid_effect+ 0.2*treb_effect;
+per_frame_12=ok_to_change = if(above(time,beat_time+5),1,0);
+per_frame_13=bass_effect = max(bass, bass_att)-1;
+per_frame_14=beat_time = if(above(bass_effect,0.5), if(ok_to_change,time,beat_time),beat_time);
+per_frame_15=effect = if(equal(time,beat_time),effect+rand(3)+1,effect);
+per_frame_16=effect = if(above(effect,3),effect-4,effect);
+per_frame_17=bass_effect = max(max(bass,bass_att)-1.34,0);
+per_frame_18=q1 = effect;
+per_frame_19=q2 = bass_effect;
+per_frame_20=wave_x = if(equal(q1,0),0.01,if(equal(q1,1),0.99,if(equal(q1,2),0.01,0.99)));
+per_frame_21=wave_mystery = if(equal(q1,0),1,if(equal(q1,1),1,if(equal(q1,2),0,0)));
+per_frame_22=monitor = q1;
+per_frame_23=zoom = if(equal(q1,0),0.4*x,if(equal(q1,1),0.4*(1-x),if(equal(q1,2),0.4*y,0.4*(1-y)))) + 0.6 - 0.13*(min(q2,0.3));
+per_pixel_1=zoom = if(equal(q1,0),0.4*x,if(equal(q1,1),0.4*(1-x),if(equal(q1,2),0.4*y,0.4*(1-y)))) + 0.6 - 0.13*(min(q2,0.3));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rovastar and Unchained - Braindance Visions.milk b/InstallerDependencies/Visuals/projectM/presets/Rovastar and Unchained - Braindance Visions.milk
new file mode 100644
index 00000000..d19e48ba
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rovastar and Unchained - Braindance Visions.milk
@@ -0,0 +1,69 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.935000
+fVideoEchoZoom=1.006595
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=100.000000
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999514
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.489000
+wave_y=0.500000
+ob_size=0.500000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+per_frame_1=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3);
+per_frame_2=bass_residual = equal(bass_thresh,2)*sin(time*bass_thresh*.1) + (1-equal(bass_thresh,2))*bass_residual;
+per_frame_3=mid_thresh = above(mid_att,mid_thresh)*2 + (1-above(mid_att,mid_thresh))*((mid_thresh-1.3)*0.96+1.3);
+per_frame_4=mid_residual = equal(mid_thresh,2)*sin(time*bass_thresh*.1) + (1-equal(mid_thresh,2))*mid_residual;
+per_frame_5=q1=.75+.2*bass_residual;
+per_frame_6=q2=.25+.2*mid_residual;
+per_frame_7=wave_g = wave_g*bass_residual;
+per_frame_8=wave_b =wave_b*mid_residual;
+per_frame_9=wave_r = wave_r + .5*sin(time*bass_residual*mid_residual*.4);
+per_frame_10=rot=rot+.3*sin(time*mid_residual);
+per_pixel_1=sy= if(below(y,q1),if(above(y,q2),pow(log(abs(ang)*time),3)/4,q1+.25),q2+.75);
+per_pixel_2=zoom = 1 + sin(rad)/10*cos((y-.5+rad)*10*sin(time));
+per_pixel_3=rot=rot+if(bnot(below(y,q1)*above(y,q2)),0,sin(time/2)*.1);
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rozzer & Zylot - Force Field Generator (Slowtime Tweak).milk b/InstallerDependencies/Visuals/projectM/presets/Rozzer & Zylot - Force Field Generator (Slowtime Tweak).milk
new file mode 100644
index 00000000..f88798dd
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rozzer & Zylot - Force Field Generator (Slowtime Tweak).milk
@@ -0,0 +1,80 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.050000
+fDecay=0.950000
+fVideoEchoZoom=0.333500
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=1
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.108925
+fWaveSmoothing=0.900000
+fWaveParam=-0.399900
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.000000
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=slowtime = slowtime+beat;
+per_frame_2=vol_now = .4 * bass + 0.1 * (bass_att+treb+mid);
+per_frame_3=vol_mean = if(equal(frame%50,0),vol_mean-0.5*(vol_mean-vol_now),0.1*(vol_mean*9 + vol_now));
+per_frame_4=beat = if(above(vol_now,1.5*vol_mean),1,0);
+per_frame_5=beatcount = beatcount + beat;
+per_frame_6=wave_b = 1- (cos(time) + abs(cos(time)));
+per_frame_7=wave_g = 1-abs(sin(time)) ;
+per_frame_8=wave_r = 1-(-1 * cos(time)) + abs(-1 * cos(time)) + 0.2 * (cos(sin(time))+(abs(cos(sin(time)))+cos(sin(time))));
+per_frame_9=q1 = abs(sin(slowtime)/3)-.2;
+per_frame_10=
+per_frame_11=warp = 0;
+per_frame_12=wave_mode = 6;
+per_frame_13=wave_mystery = if(below(frame%2,1),0,1)+slowtime*q1;
+per_frame_14=monitor = q1;
+per_pixel_1=zoom = zoom - q1*rad;
+per_pixel_2=dx = .5;
+per_pixel_3=dy = .5;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rozzor & Aderrasi - Canon.milk b/InstallerDependencies/Visuals/projectM/presets/Rozzor & Aderrasi - Canon.milk
new file mode 100644
index 00000000..b48a214b
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rozzor & Aderrasi - Canon.milk
@@ -0,0 +1,83 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.463937
+fWaveSmoothing=0.500000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000010
+dy=0.000010
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.600000
+wave_g=0.600000
+wave_b=0.600000
+wave_x=0.500000
+wave_y=0.100000
+ob_size=0.010000
+ob_r=1.000000
+ob_g=1.000000
+ob_b=1.000000
+ob_a=1.000000
+ib_size=0.015000
+ib_r=1.000000
+ib_g=1.000000
+ib_b=1.000000
+ib_a=1.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_mystery = wave_mystery + 0.25*tan(3*bass);
+per_frame_2=q1 = wave_mystery;
+per_frame_3=wave_b = cos(time) + abs(cos(time));
+per_frame_4=wave_g = abs(sin(time)) ;
+per_frame_5=wave_r = (-1 * cos(time)) + abs(-1 * cos(time)) + 0.2 * (cos(sin(time))+(abs(cos(sin(time)))+cos(sin(time))));
+per_frame_6=ob_r = if(above(wave_r,1),1,if(above(wave_r,0), abs(wave_r),0));
+per_frame_7=ob_g = if(above(wave_g,1),1,if(above(wave_g,0), abs(wave_g),0));
+per_frame_8=ob_b = if(above(wave_b,1),1,if(above(wave_b,0), abs(wave_b),0));
+per_frame_9=ib_g = wave_g;
+per_frame_10=ib_r = sin(time);
+per_frame_11=kick = above(bass_att,kick)*2 + (1-above(bass_att,kick))*((kick-1.3)*0.96+1.3);
+per_frame_12=dx_r = equal(kick,2)*0.018*sin(6*time) + (1-equal(kick,2))*dx_r;
+per_frame_13=dy_r = equal(kick,2)*0.015*sin(7*time) + (1-equal(kick,2))*dy_r;
+per_frame_14=dy = dy + 2*dy_r * 0.5*sin(0.8*time);
+per_frame_15=dx = dx + 2*dx_r * 0.5*sin(time);
+per_frame_16=warp = warp + if (below(kick,0), + 0.5*treb, 0);
+per_frame_17=q2 = kick;
+per_pixel_1=rot = rot + 0.3*(0.2*sin(1-rad)*5 - 0.2*sin(0.05*rad)*5) * q2;
+per_pixel_2=cx = if(above(dy,-.5),1-rot * 2,rot*q2);
+per_pixel_3=
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rozzor & Che - Inside The House Of Nil.milk b/InstallerDependencies/Visuals/projectM/presets/Rozzor & Che - Inside The House Of Nil.milk
new file mode 100644
index 00000000..1f95a6ad
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rozzor & Che - Inside The House Of Nil.milk
@@ -0,0 +1,86 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=1
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=1.175613
+fWaveSmoothing=0.306000
+fWaveParam=-0.460000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=0.854653
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.500000
+ob_r=0.190000
+ob_g=0.120000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.015000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=7.679999
+nMotionVectorsY=11.519997
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=1.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.340000
+per_frame_1=slowtime = slowtime+beat*time;
+per_frame_2=vol_now = .4 * bass + 0.1 * (bass_att+treb+mid);
+per_frame_3=vol_mean = if(equal(frame%50,0),vol_mean-0.5*(vol_mean-vol_now),0.1*(vol_mean*9 + vol_now));
+per_frame_4=beat = if(above(vol_now,1.5*vol_mean),1,0);
+per_frame_5=ib_r = - abs(cos(time));
+per_frame_6=ib_g = sin(time);
+per_frame_7=ib_b= cos(time)*sign(cos(time));
+per_frame_8=mv_r = abs(sin(time));
+per_frame_9=mv_g = sin(slowtime) ;
+per_frame_10=mv_b= cos(slowtime)*sign(cos(slowtime));
+per_frame_11=redneg = if(below(mv_r,0),1,0);
+per_frame_12=greenneg = if(below(mv_g,0),1,0);
+per_frame_13=blueneg = if(below(mv_b,0),1,0);
+per_frame_14=wave_r = if(redneg,if(bor(greenneg , blueneg),1,1+mv_r),mv_r);
+per_frame_15=wave_g = if(greenneg,if(equal(greenneg + blueneg,2),1,1+mv_g),mv_g);
+per_frame_16=wave_b = if(blueneg,1 + mv_b, mv_b);
+per_frame_17=dx=sin(slowtime*1.234)*.0125;
+per_frame_18=dy=cos(slowtime*.9666)*.0125;
+per_frame_19=q1 = sin(slowtime);
+per_frame_20=q2 = wave_b;
+per_pixel_1=zoom=1+above(sin(1.7*q2),-.5)*.1*sin(2*q2+.027*q1+4*(1+sin(.7*time+q2))*sin(.05*q2+time)*rad);
+per_pixel_2=rot=.1*sin(q2)*sin(2.3*q2+.027*q1+2*sin(.07*q1+1.2*time)*(rad+sin(time+above(sin(q2),0)*4*sin(q2)*ang)));
+per_pixel_3=rot=above(sin(1.2*q2+1.3),-.5)*rot;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rozzor & Rovastar - Oozing Resistance (Waveform Mod).milk b/InstallerDependencies/Visuals/projectM/presets/Rozzor & Rovastar - Oozing Resistance (Waveform Mod).milk
new file mode 100644
index 00000000..efb1d660
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rozzor & Rovastar - Oozing Resistance (Waveform Mod).milk
@@ -0,0 +1,83 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.006596
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=3
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=1
+fWaveAlpha=5.002776
+fWaveScale=1.186400
+fWaveSmoothing=0.630000
+fWaveParam=-1.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999513
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.500000
+mv_r=0.350000
+mv_g=0.350000
+mv_b=0.350000
+mv_a=0.000000
+per_frame_1=ob_r = 0.5+0.5*sin(2*time);
+per_frame_2=ob_g = 0.5+0.5*sin(1.23*time);
+per_frame_3=ob_b = 0.5+0.5*sin(time*1.321);
+per_frame_4=wave_a =0;
+per_frame_5=q8 =oldq8+ 0.003*(pow(1.2*bass+0.4*bass_att+0.1*treb+0.1*treb_att+0.1*mid+0.1*mid_att,6)/fps);
+per_frame_6=oldq8 = q8;
+per_frame_7=warp=0;
+per_frame_8=sx = 1- 0.1*sin(q8)+0.05*sin(time);
+per_frame_9=wave_b = cos(time) + abs(cos(time));
+per_frame_10=wave_g = abs(sin(time)) ;
+per_frame_11=wave_r = (-1 * cos(time)) + abs(-1 * cos(time)) + 0.2 * (cos(sin(time))+(abs(cos(sin(time)))+cos(sin(time))));
+per_frame_12=wave_r = 1 - if(above(wave_r,1),1,if(above(wave_r,0), abs(wave_r),0));
+per_frame_13=wave_g = 1 - if(above(wave_g,1),1,if(above(wave_g,0), abs(wave_g),0));
+per_frame_14=wave_b = 1 - if(above(wave_b,1),1,if(above(wave_b,0), abs(wave_b),0));
+per_frame_15=
+per_pixel_1=rot = 0.1*(rad+cos((5+5*sin(q8*1.211)*x)-0.5) -sin(((5+5*sin(q8*0.973))*y)-0.5));
+per_pixel_2=dx = 0.005*(cos((5+5*sin(q8*1.311)*x)-0.5) -sin(((5+5*sin(q8*0.9431))*y)-0.5));
+per_pixel_3=dy = 0.005*(cos((5+5*sin(q8*1.021)*x)-0.5) -sin(((5+5*sin(q8*0.987))*y)-0.5));
+per_pixel_4=zoom =1- 0.005*(rad+cos((5+5*sin(q8*0.943)*x)-0.5) -sin(((5+5*sin(q8*1.0961))*y)-0.5));
+per_pixel_5=cx = 1-rot * 2;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Rozzor & Shreyas - Deeper Aesthetics.milk b/InstallerDependencies/Visuals/projectM/presets/Rozzor & Shreyas - Deeper Aesthetics.milk
new file mode 100644
index 00000000..bbec0b81
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Rozzor & Shreyas - Deeper Aesthetics.milk
@@ -0,0 +1,373 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=2.000000
+fDecay=0.980000
+fVideoEchoZoom=0.998169
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=7.740000
+fWaveScale=0.656000
+fWaveSmoothing=0.800000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.772000
+fZoomExponent=1.960000
+fShader=0.190000
+zoom=0.999698
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.513000
+sx=1.000000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.580000
+ib_size=0.015000
+ib_r=0.550000
+ib_g=1.000000
+ib_b=0.499900
+ib_a=0.230000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=1
+wavecode_0_samples=302
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=1
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_per_frame1=ti=if(above(bass,1.3),.3,ti*.9);
+wave_0_per_frame2=tt1=tt1+.01+ti*.1;
+wave_0_per_frame3=t8=tt1;
+wave_0_per_frame4=t7=cos(time*.1+1)*sin(time*.1-6);
+wave_0_per_frame5=rx=atan2(sin(time*.1)*cos(t8),sqr(sin(t8)+1)+sqr(t7))/4+(sin(t8)+1)/2;
+wave_0_per_frame6=ry=atan2(sin(time*.1)*cos(t8),t7);
+wave_0_per_frame7=rz=0;
+wave_0_per_frame8=
+wave_0_per_frame9=t1=sin(rx);t2=cos(rx);
+wave_0_per_frame10=t3=sin(ry);t4=cos(ry);
+wave_0_per_frame11=t5=sin(rz);t6=cos(rz);
+wave_0_per_point1=sample=sample*6.283185*.5;value1=(value1+1)*.3;
+wave_0_per_point2=x1=sin(sample)*sin(sample*40)*value1;
+wave_0_per_point3=y1=cos(sample)*value1;
+wave_0_per_point4=z1=sin(sample)*cos(sample*40)*value1;
+wave_0_per_point5=x1=x1+(sin(time*.1)*cos(t8));
+wave_0_per_point6=y1=y1+(sin(t8)+1);
+wave_0_per_point7=z1=z1+t7;
+wave_0_per_point8=x2=x1*t4-z1*t3;z2=x1*t3+z1*t4;
+wave_0_per_point9=y2=y1*t2-z2*t1;z3=y1*t1+z2*t2+1.4;
+wave_0_per_point10=x3=x2*t6-y2*t5;y3=x2*t5+y2*t6;
+wave_0_per_point11=z3=if(above(z3,.1),.5/z3,0);
+wave_0_per_point12=x=if(z3,x3*z3,x)+.5;
+wave_0_per_point13=y=if(z3,-y3*z3,y)+.5;
+wave_0_per_point14=hu=sample+sin(time);
+wave_0_per_point15=r=sin(hu)*.5+.5;
+wave_0_per_point16=g=sin(hu+6.283185*.33)*.5+.5;
+wave_0_per_point17=b=sin(hu+6.283185*.66)*.5+.5;
+wave_0_per_point18=a=z3*.8;
+wavecode_1_enabled=1
+wavecode_1_samples=302
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=1
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+wave_1_per_frame1=ti=if(above(bass,1.3),.3,ti*.9);
+wave_1_per_frame2=tt1=tt1+.01+ti*.1;
+wave_1_per_frame3=t8=tt1;
+wave_1_per_frame4=t7=cos(time*.1+1)*sin(time*.1-6);
+wave_1_per_frame5=rx=atan2(sin(time*.1)*cos(t8),sqr(sin(t8)+1)+sqr(t7))/4+(sin(t8)+1)/2;
+wave_1_per_frame6=ry=atan2(sin(time*.1)*cos(t8),t7);
+wave_1_per_frame7=rz=0;
+wave_1_per_frame8=
+wave_1_per_frame9=t1=sin(rx);t2=cos(rx);
+wave_1_per_frame10=t3=sin(ry);t4=cos(ry);
+wave_1_per_frame11=t5=sin(rz);t6=cos(rz);
+wave_1_per_frame12=
+wave_1_per_point1=cp=bnot(cp);
+wave_1_per_point2=r=sample*6.283185*10;
+wave_1_per_point3=i1=(sample*6)%2;
+wave_1_per_point4=rt=if(cp,1,.5);
+wave_1_per_point5=sample=sample*6.283185*.5;
+wave_1_per_point6=
+wave_1_per_point7=x1=sin(r)*rt;
+wave_1_per_point8=z1=cos(r)*rt;
+wave_1_per_point9=y1=-sin(i1)+.5;
+wave_1_per_point10=x1=x1+(sin(time*.1)*cos(t8));
+wave_1_per_point11=y1=y1+(sin(t8)+1);
+wave_1_per_point12=z1=z1+t7;
+wave_1_per_point13=x2=x1*t4-z1*t3;z2=x1*t3+z1*t4;
+wave_1_per_point14=y2=y1*t2-z2*t1;z3=y1*t1+z2*t2+1.4;
+wave_1_per_point15=x3=x2*t6-y2*t5;y3=x2*t5+y2*t6;
+wave_1_per_point16=z3=if(above(z3,.1),.5/z3,0);
+wave_1_per_point17=x=if(z3,x3*z3,x)+.5;
+wave_1_per_point18=y=if(z3,-y3*z3,y)+.5;
+wave_1_per_point19=hu=sample+sin(time/6.283185)*6.283185;
+wave_1_per_point20=r=sin(hu)*.5+.5;
+wave_1_per_point21=g=sin(hu+6.283185*.33)*.5+.5;
+wave_1_per_point22=b=sin(hu+6.283185*.66)*.5+.5;
+wave_1_per_point23=a=z3*.8;
+wavecode_2_enabled=1
+wavecode_2_samples=512
+wavecode_2_sep=0
+wavecode_2_bSpectrum=0
+wavecode_2_bUseDots=1
+wavecode_2_bDrawThick=1
+wavecode_2_bAdditive=0
+wavecode_2_scaling=1.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wave_2_per_frame1=ti=if(above(bass,1.3),.3,ti*.9);
+wave_2_per_frame2=tt1=tt1+.01+ti*.1;
+wave_2_per_frame3=t8=tt1;
+wave_2_per_frame4=t7=cos(time*.1+1)*sin(time*.1-6);
+wave_2_per_frame5=rx=atan2(sin(time*.1)*cos(t8),sqr(sin(t8)+1)+sqr(t7))/4+(sin(t8)+1)/2;
+wave_2_per_frame6=ry=atan2(sin(time*.1)*cos(t8),t7);
+wave_2_per_frame7=rz=0;
+wave_2_per_frame8=
+wave_2_per_frame9=t1=sin(rx);t2=cos(rx);
+wave_2_per_frame10=t3=sin(ry);t4=cos(ry);
+wave_2_per_frame11=t5=sin(rz);t6=cos(rz);
+wave_2_per_point1=sample=sample*6.283185*134;
+wave_2_per_point2=x1=sin(sample*543)*2+(sin(time*.1)*cos(t8));
+wave_2_per_point3=y1=cos(sample*4232)*2+(sin(t8)+1);
+wave_2_per_point4=z1=sin(sample*90)*2+t7;
+wave_2_per_point5=
+wave_2_per_point6=x2=x1*t4-z1*t3;z2=x1*t3+z1*t4;
+wave_2_per_point7=y2=y1*t2-z2*t1;z3=y1*t1+z2*t2+1;
+wave_2_per_point8=x3=x2*t6-y2*t5;y3=x2*t5+y2*t6;
+wave_2_per_point9=z3=if(above(z3,.1),.5/z3,0);
+wave_2_per_point10=x=if(z3,x3*z3,x)+.5;
+wave_2_per_point11=y=if(z3,-y3*z3,y)+.5;
+wave_2_per_point12=a=z3*.8;
+wavecode_3_enabled=1
+wavecode_3_samples=142
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=1
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+wave_3_per_frame1=ti=if(above(bass,1.3),.3,ti*.9);
+wave_3_per_frame2=tt1=tt1+.01+ti*.1;
+wave_3_per_frame3=t8=tt1;
+wave_3_per_frame4=t7=cos(time*.1+1)*sin(time*.1-6);
+wave_3_per_frame5=rx=atan2(sin(time*.1)*cos(t8),sqr(sin(t8)+1)+sqr(t7))/4+(sin(t8)+1)/2;
+wave_3_per_frame6=ry=atan2(sin(time*.1)*cos(t8),t7);
+wave_3_per_frame7=ry1=ry1+bass_att*.2;
+wave_3_per_frame8=t1=sin(rx);t2=cos(rx);
+wave_3_per_frame9=t3=sin(ry);t4=cos(ry);
+wave_3_per_frame10=t5=ry1;
+wave_3_per_frame11=
+wave_3_per_point1=cp=bnot(cp);
+wave_3_per_point2=r=sample*62.83185;
+wave_3_per_point3=i1=(sample*6)%2;
+wave_3_per_point4=rt=if(cp,.7,.2);
+wave_3_per_point5=sample=sample*3.14159;
+wave_3_per_point6=
+wave_3_per_point7=x1=sin(r)*rt;
+wave_3_per_point8=z1=cos(r)*rt;
+wave_3_per_point9=y1=-.5;
+wave_3_per_point10=x2=x1*cos(t5)-z1*sin(t5);z2=x1*sin(t5)+z1*cos(t5);
+wave_3_per_point11=x1=x2+(sin(time*.1)*cos(t8));
+wave_3_per_point12=y1=y1+(sin(t8)+1);
+wave_3_per_point13=z1=z2+t7;
+wave_3_per_point14=x2=x1*t4-z1*t3;z2=x1*t3+z1*t4;
+wave_3_per_point15=y2=y1*t2-z2*t1;z3=y1*t1+z2*t2+1.4;
+wave_3_per_point16=x3=x2;y3=y2;
+wave_3_per_point17=z3=if(above(z3,.1),.5/z3,0);
+wave_3_per_point18=x=if(z3,x3*z3,x)+.5;
+wave_3_per_point19=y=if(z3,-y3*z3,y)+.5;
+wave_3_per_point20=hu=sample+cos(time/6.283185)*6.283185;
+wave_3_per_point21=r=sin(hu)*.5+.5;
+wave_3_per_point22=g=sin(hu+6.283185*.33)*.5+.5;
+wave_3_per_point23=b=sin(hu+6.283185*.66)*.5+.5;
+wave_3_per_point24=a=z3*.8;
+wave_3_per_point25=
+wave_3_per_point26=
+shapecode_0_enabled=0
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.100000
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.100000
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=warp=0;
+per_frame_2=old_bass_flop=bass_flop;
+per_frame_3=old_treb_flop=treb_flop;
+per_frame_4=old_mid_flop=mid_flop;
+per_frame_5=chaos=.9+.1*sin(pulse);
+per_frame_6=entropy=if(bnot(entropy),2,if(equal(pulse,-20),1+rand(3),entropy));
+per_frame_7=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*chaos+1.3);
+per_frame_8=bass_flop=abs(bass_flop-equal(bass_thresh,2));
+per_frame_9=treb_thresh=above(treb_att,treb_thresh)*2 + (1-above(treb_att,treb_thresh))*((treb_thresh-1.3)*chaos+1.3);
+per_frame_10=treb_flop=abs(treb_flop-equal(treb_thresh,2));
+per_frame_11=mid_thresh=above(mid_att,mid_thresh)*2 + (1-above(mid_att,mid_thresh))*((mid_thresh-1.3)*chaos+1.3);
+per_frame_12=mid_flop=abs(mid_flop-equal(mid_thresh,2));
+per_frame_13=bass_changed=bnot(equal(old_bass_flop,bass_flop));
+per_frame_14=mid_changed=bnot(equal(old_mid_flop,mid_flop));
+per_frame_15=treb_changed=bnot(equal(old_treb_flop,treb_flop));
+per_frame_16=bass_residual = bass_changed*sin(pulse*bass_thresh*.1*entropy) + bnot(bass_changed)*bass_residual;
+per_frame_17=treb_residual = treb_changed*sin(pulse*treb_thresh*.1*entropy) + bnot(treb_changed)*treb_residual;
+per_frame_18=mid_residual = mid_changed*sin(pulse*mid_thresh*.1*entropy) + bnot(mid_changed)*mid_residual;
+per_frame_19=pulse=if(above(abs(pulse),20),-20,pulse+.2*bor(bor(bass_changed*bnot(treb_changed),treb_changed*bnot(bass_changed))*bnot(mid_changed),mid_changed)+(mid+bass+treb)*entropy*.025);
+per_frame_20=q1=mid_residual;
+per_frame_21=q2=bass_residual;
+per_frame_22=q3=treb_residual;
+per_frame_23=q4=sin(pulse);
+per_frame_24=q5=sin(pulse/2);
+per_frame_25=wave_r=wave_r+.5*bass_residual;
+per_frame_26=wave_r=wave_g+.5*mid_residual;
+per_frame_27=wave_r=wave_b+.5*treb_residual;
+per_frame_28=wave_mystery=mid_residual;
+per_frame_29=ob_r=if(bass_flop,treb_flop,wave_r);
+per_frame_30=ob_b=if(treb_flop,mid_flop,wave_b);
+per_frame_31=ob_g=if(mid_flop,bass_flop,wave_g);
+per_frame_32=ob_a=.03+.02*wave_r;
+per_frame_33=ob_size=.05+.04*treb_residual;
+per_frame_34=ib_r=if(bass_flop,ob_b,ob_g);
+per_frame_35=ib_b=if(treb_flop,ob_g,ob_r);
+per_frame_36=ib_g=if(mid_flop,ob_r,ob_b);
+per_frame_37=ib_a=.03+.02*wave_g;
+per_frame_38=ib_size=.05+.04*bass_residual;
+per_pixel_1=radix=if(above(q3,0),min(x,y),max(x,y));
+per_pixel_2=radix=if(above(q2,0),min(radix,rad),max(radix,rad));
+per_pixel_3=rot=if(above(q4,0),rad*.2*q5,0);
+per_pixel_4=zoom=if(above(q2,0),zoom,if(above(q3,0),1+q1*.05,1+.07*cos(radix*10*q1)));
diff --git a/InstallerDependencies/Visuals/projectM/presets/Studio Music and Unchained - Rapid Alteration.milk b/InstallerDependencies/Visuals/projectM/presets/Studio Music and Unchained - Rapid Alteration.milk
new file mode 100644
index 00000000..4b532f71
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Studio Music and Unchained - Rapid Alteration.milk
@@ -0,0 +1,103 @@
+[preset00]
+fRating=4.000000
+fGammaAdj=1.000000
+fDecay=0.983000
+fVideoEchoZoom=0.998169
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=4
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=7.740000
+fWaveScale=0.372036
+fWaveSmoothing=0.387000
+fWaveParam=-0.360000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.334503
+fWarpScale=1.327831
+fZoomExponent=1.026514
+fShader=1.000000
+zoom=1.374512
+rot=0.020000
+cx=0.170000
+cy=0.830001
+dx=0.000000
+dy=0.000000
+warp=1.779457
+sx=0.990099
+sy=1.000000
+wave_r=0.270000
+wave_g=0.270000
+wave_b=0.270000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.360000
+ob_g=0.360000
+ob_b=0.360000
+ob_a=0.580000
+ib_size=0.010000
+ib_r=0.450000
+ib_g=0.450001
+ib_b=0.449900
+ib_a=0.530000
+per_frame_1=warp=0;
+per_frame_2=old_bass_flop=bass_flop;
+per_frame_3=old_treb_flop=treb_flop;
+per_frame_4=old_mid_flop=mid_flop;
+per_frame_5=chaos=.9+.1*sin(pulse);
+per_frame_6=entropy=if(bnot(entropy),2,if(equal(pulse,-20),1+rand(3),entropy));
+per_frame_7=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*chaos+1.3);
+per_frame_8=bass_flop=abs(bass_flop-equal(bass_thresh,2));
+per_frame_9=treb_thresh=above(treb_att,treb_thresh)*2 + (1-above(treb_att,treb_thresh))*((treb_thresh-1.3)*chaos+1.3);
+per_frame_10=treb_flop=abs(treb_flop-equal(treb_thresh,2));
+per_frame_11=mid_thresh=above(mid_att,mid_thresh)*2 + (1-above(mid_att,mid_thresh))*((mid_thresh-1.3)*chaos+1.3);
+per_frame_12=mid_flop=abs(mid_flop-equal(mid_thresh,2));
+per_frame_13=bass_changed=bnot(equal(old_bass_flop,bass_flop));
+per_frame_14=mid_changed=bnot(equal(old_mid_flop,mid_flop));
+per_frame_15=treb_changed=bnot(equal(old_treb_flop,treb_flop));
+per_frame_16=bass_residual = bass_changed*sin(pulse*bass_thresh*.1*entropy) + bnot(bass_changed)*bass_residual;
+per_frame_17=treb_residual = treb_changed*sin(pulse*treb_thresh*.1*entropy) + bnot(treb_changed)*treb_residual;
+per_frame_18=mid_residual = mid_changed*sin(pulse*mid_thresh*.1*entropy) + bnot(mid_changed)*mid_residual;
+per_frame_19=pulse=if(above(abs(pulse),20),-20,pulse+.2*bor(bor(bass_changed*bnot(treb_changed),treb_changed*bnot(bass_changed))*bnot(mid_changed),mid_changed)+(mid+bass+treb)*entropy*.025);
+per_frame_20=q1=mid_residual;
+per_frame_21=q2=bass_residual;
+per_frame_22=q3=treb_residual;
+per_frame_23=q4=sin(pulse);
+per_frame_24=q5=sin(pulse/2);
+per_frame_25=wave_r=wave_r+.5*bass_residual;
+per_frame_26=wave_r=wave_g+.5*mid_residual;
+per_frame_27=wave_r=wave_b+.5*treb_residual;
+per_frame_28=wave_mystery=mid_residual;
+per_frame_29=ob_r=if(bass_flop,treb_flop,wave_r);
+per_frame_30=ob_b=if(treb_flop,mid_flop,wave_b);
+per_frame_31=ob_g=if(mid_flop,bass_flop,wave_g);
+per_frame_32=ob_a=.03+.02*wave_r;
+per_frame_33=ob_size=.05+.04*treb_residual;
+per_frame_34=ib_r=if(bass_flop,ob_b,ob_g);
+per_frame_35=ib_b=if(treb_flop,ob_g,ob_r);
+per_frame_36=ib_g=if(mid_flop,ob_r,ob_b);
+per_frame_37=ib_a=.03+.02*wave_g;
+per_frame_38=ib_size=.05+.04*bass_residual;
+per_frame_39=ib_r = ib_r + 0.2*sin(time*0.5413);
+per_frame_40=ib_g = ib_g + 0.2*sin(time*0.6459);
+per_frame_41=ib_b = ib_b + 0.2*sin(time*0.4354);
+per_frame_42=rot = rot + 0.040*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_43=zoom=max(0.98, min(0.15+0.8*bass_att, 1.75 ));
+per_pixel_1=radix=if(above(q3,0),min(x,y),max(x,y));
+per_pixel_2=radix=if(above(q2,0),min(radix,rad),max(radix,rad));
+per_pixel_3=rot=if(above(q4,0),rad*.2*q5,0);
+per_pixel_4=zoom=if(above(q2,0),zoom,if(above(q3,0),1+q1*.05,1+.07*cos(radix*10*q1)));
diff --git a/InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - Entity.milk b/InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - Entity.milk
new file mode 100644
index 00000000..0d1835e9
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - Entity.milk
@@ -0,0 +1,103 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.980000
+fVideoEchoZoom=0.998099
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=6
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=1
+fWaveAlpha=7.740000
+fWaveScale=0.988200
+fWaveSmoothing=0.450000
+fWaveParam=0.300000
+fModWaveAlphaStart=1.359900
+fModWaveAlphaEnd=0.380000
+fWarpAnimSpeed=0.787543
+fWarpScale=1.327700
+fZoomExponent=1.332000
+fShader=0.500000
+zoom=1.195700
+rot=0.000000
+cx=0.050000
+cy=0.950000
+dx=0.000000
+dy=0.000000
+warp=3.753000
+sx=0.990000
+sy=1.000000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.340001
+ib_size=0.005000
+ib_r=0.970000
+ib_g=0.500000
+ib_b=0.499900
+ib_a=0.500000
+per_frame_1=warp=0;
+per_frame_2=old_bass_flop=bass_flop;
+per_frame_3=old_treb_flop=treb_flop;
+per_frame_4=old_mid_flop=mid_flop;
+per_frame_5=chaos=.9+.1*sin(pulse);
+per_frame_6=entropy=if(bnot(entropy),2,if(equal(pulse,-20),1+rand(3),entropy));
+per_frame_7=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*chaos+1.3);
+per_frame_8=bass_flop=abs(bass_flop-equal(bass_thresh,2));
+per_frame_9=treb_thresh=above(treb_att,treb_thresh)*2 + (1-above(treb_att,treb_thresh))*((treb_thresh-1.3)*chaos+1.3);
+per_frame_10=treb_flop=abs(treb_flop-equal(treb_thresh,2));
+per_frame_11=mid_thresh=above(mid_att,mid_thresh)*2 + (1-above(mid_att,mid_thresh))*((mid_thresh-1.3)*chaos+1.3);
+per_frame_12=mid_flop=abs(mid_flop-equal(mid_thresh,2));
+per_frame_13=bass_changed=bnot(equal(old_bass_flop,bass_flop));
+per_frame_14=mid_changed=bnot(equal(old_mid_flop,mid_flop));
+per_frame_15=treb_changed=bnot(equal(old_treb_flop,treb_flop));
+per_frame_16=bass_residual = bass_changed*sin(pulse*bass_thresh*.1*entropy) + bnot(bass_changed)*bass_residual;
+per_frame_17=treb_residual = treb_changed*sin(pulse*treb_thresh*.1*entropy) + bnot(treb_changed)*treb_residual;
+per_frame_18=mid_residual = mid_changed*sin(pulse*mid_thresh*.1*entropy) + bnot(mid_changed)*mid_residual;
+per_frame_19=pulse=if(above(abs(pulse),20),-20,pulse+.2*bor(bor(bass_changed*bnot(treb_changed),treb_changed*bnot(bass_changed))*bnot(mid_changed),mid_changed)+(mid+bass+treb)*entropy*.025);
+per_frame_20=q1=mid_residual;
+per_frame_21=q2=bass_residual;
+per_frame_22=q3=treb_residual;
+per_frame_23=q4=sin(pulse);
+per_frame_24=q5=sin(pulse/2);
+per_frame_25=wave_r=wave_r+.5*bass_residual;
+per_frame_26=wave_r=wave_g+.5*mid_residual;
+per_frame_27=wave_r=wave_b+.5*treb_residual;
+per_frame_28=wave_mystery=mid_residual;
+per_frame_29=ob_r=if(bass_flop,treb_flop,wave_r);
+per_frame_30=ob_b=if(treb_flop,mid_flop,wave_b);
+per_frame_31=ob_g=if(mid_flop,bass_flop,wave_g);
+per_frame_32=ob_a=.03+.02*wave_r;
+per_frame_33=ob_size=.05+.04*treb_residual;
+per_frame_34=ib_r=if(bass_flop,ob_b,ob_g);
+per_frame_35=ib_b=if(treb_flop,ob_g,ob_r);
+per_frame_36=ib_g=if(mid_flop,ob_r,ob_b);
+per_frame_37=ib_a=.03+.02*wave_g;
+per_frame_38=ib_size=.05+.04*bass_residual;
+per_frame_39=ib_r = ib_r + 0.2*sin(time*0.5413);
+per_frame_40=ib_g = ib_g + 0.2*sin(time*0.6459);
+per_frame_41=ib_b = ib_b + 0.2*sin(time*0.4354);
+per_frame_42=rot = rot + 0.040*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_43=zoom=max(0.98, min(0.15+0.8*bass_att, 1.75 ));
+per_pixel_1=radix=if(above(q3,0),min(x,y),max(x,y));
+per_pixel_2=radix=if(above(q2,0),min(radix,rad),max(radix,rad));
+per_pixel_3=rot=if(above(q4,0),rad*.2*q5,0);
+per_pixel_4=zoom=if(above(q2,0),zoom,if(above(q3,0),1+q1*.05,1+.07*cos(radix*10*q1)));
diff --git a/InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - Minor Alteration.milk b/InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - Minor Alteration.milk
new file mode 100644
index 00000000..72f8dfd9
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - Minor Alteration.milk
@@ -0,0 +1,99 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.900000
+fVideoEchoZoom=0.998169
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=7.740000
+fWaveScale=0.372036
+fWaveSmoothing=0.387000
+fWaveParam=-0.360000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.334503
+fWarpScale=1.327831
+fZoomExponent=1.026514
+fShader=0.400000
+zoom=1.374512
+rot=0.020000
+cx=0.170000
+cy=0.830001
+dx=0.000000
+dy=0.000000
+warp=1.779457
+sx=0.990099
+sy=1.000000
+wave_r=0.270000
+wave_g=0.270000
+wave_b=0.270000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.360000
+ob_g=0.360000
+ob_b=0.360000
+ob_a=0.580000
+ib_size=0.010000
+ib_r=0.450000
+ib_g=0.450001
+ib_b=0.449900
+ib_a=0.900000
+per_frame_1=warp=0;
+per_frame_2=old_bass_flop=bass_flop;
+per_frame_3=old_treb_flop=treb_flop;
+per_frame_4=old_mid_flop=mid_flop;
+per_frame_5=chaos=.9+.1*sin(pulse);
+per_frame_6=entropy=if(bnot(entropy),2,if(equal(pulse,-20),1+rand(3),entropy));
+per_frame_7=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*chaos+1.3);
+per_frame_8=bass_flop=abs(bass_flop-equal(bass_thresh,2));
+per_frame_9=treb_thresh=above(treb_att,treb_thresh)*2 + (1-above(treb_att,treb_thresh))*((treb_thresh-1.3)*chaos+1.3);
+per_frame_10=treb_flop=abs(treb_flop-equal(treb_thresh,2));
+per_frame_11=mid_thresh=above(mid_att,mid_thresh)*2 + (1-above(mid_att,mid_thresh))*((mid_thresh-1.3)*chaos+1.3);
+per_frame_12=mid_flop=abs(mid_flop-equal(mid_thresh,2));
+per_frame_13=bass_changed=bnot(equal(old_bass_flop,bass_flop));
+per_frame_14=mid_changed=bnot(equal(old_mid_flop,mid_flop));
+per_frame_15=treb_changed=bnot(equal(old_treb_flop,treb_flop));
+per_frame_16=bass_residual = bass_changed*sin(pulse*bass_thresh*.1*entropy) + bnot(bass_changed)*bass_residual;
+per_frame_17=treb_residual = treb_changed*sin(pulse*treb_thresh*.1*entropy) + bnot(treb_changed)*treb_residual;
+per_frame_18=mid_residual = mid_changed*sin(pulse*mid_thresh*.1*entropy) + bnot(mid_changed)*mid_residual;
+per_frame_19=pulse=if(above(abs(pulse),20),-20,pulse+.1*bor(bor(bass_changed,treb_changed),mid_changed)+(mid_thresh+bass_thresh+treb_thresh)*entropy*.025);
+per_frame_20=q1=mid_residual;
+per_frame_21=q2=bass_residual;
+per_frame_22=q3=treb_residual;
+per_frame_23=q4=sin(pulse);
+per_frame_24=q5=sin(pulse/2);
+per_frame_25=wave_r=wave_r+.5*bass_residual;
+per_frame_26=wave_r=wave_g+.5*mid_residual;
+per_frame_27=wave_r=wave_b+.5*treb_residual;
+per_frame_28=wave_mystery=mid_residual;
+per_frame_29=ob_r=if(bass_flop,treb_flop,wave_r);
+per_frame_30=ob_b=if(treb_flop,mid_flop,wave_b);
+per_frame_31=ob_g=if(mid_flop,bass_flop,wave_g);
+per_frame_32=ob_a=.03+.02*wave_r;
+per_frame_33=ob_size=.25+.25*treb_residual;
+per_frame_34=ib_size=.05+.04*bass_residual;
+per_frame_35=ib_r = if(bass_flop,ob_b,.5+ 0.2*sin(time*0.5413));
+per_frame_36=ib_g = if(treb_flop,ob_g,.5 + 0.2*sin(time*0.6459));
+per_frame_37=ib_b = if(mid_flop,ob_r,.5 + 0.2*sin(time*0.4354));
+per_frame_38=rot = rot + 0.04*q1;
+per_frame_39=zoom=max(0.98, 0.2+0.35*bass_thresh);
+per_pixel_1=radix=if(above(q3,0),min(x,y),max(x,y));
+per_pixel_2=radix=if(above(q2,0),min(radix,rad),max(radix,rad));
+per_pixel_3=rot=if(above(q4,0),rad*.2*q5,rot);
+per_pixel_4=zoom=if(above(q2,0),zoom,if(above(q3,0),zoom+q1*.05,zoom+.07*cos(radix*10*q1)));
diff --git a/InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - Remembering How You Were (Perceived Mix).milk b/InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - Remembering How You Were (Perceived Mix).milk
new file mode 100644
index 00000000..dcdafa9d
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - Remembering How You Were (Perceived Mix).milk
@@ -0,0 +1,110 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=0.998100
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=5
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=13.378749
+fWaveScale=0.717349
+fWaveSmoothing=0.531000
+fWaveParam=0.020000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.208100
+fWarpScale=1.263386
+fZoomExponent=0.111607
+fShader=0.509900
+zoom=0.054279
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.333300
+sx=0.999901
+sy=0.999901
+wave_r=0.250000
+wave_g=0.350000
+wave_b=0.700000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.500000
+ob_g=0.250000
+ob_b=0.150000
+ob_a=0.970000
+ib_size=0.005000
+ib_r=0.100000
+ib_g=0.300000
+ib_b=0.500000
+ib_a=0.970000
+nMotionVectorsX=64.000000
+nMotionVectorsY=1.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=warp=0;
+per_frame_2=old_bass_flop=bass_flop;
+per_frame_3=old_treb_flop=treb_flop;
+per_frame_4=old_mid_flop=mid_flop;
+per_frame_5=chaos=.9+.1*sin(pulse);
+per_frame_6=entropy=if(bnot(entropy),2,if(equal(pulse,-20),1+rand(3),entropy));
+per_frame_7=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*chaos+1.3);
+per_frame_8=bass_flop=abs(bass_flop-equal(bass_thresh,2));
+per_frame_9=treb_thresh=above(treb_att,treb_thresh)*2 + (1-above(treb_att,treb_thresh))*((treb_thresh-1.3)*chaos+1.3);
+per_frame_10=treb_flop=abs(treb_flop-equal(treb_thresh,2));
+per_frame_11=mid_thresh=above(mid_att,mid_thresh)*2 + (1-above(mid_att,mid_thresh))*((mid_thresh-1.3)*chaos+1.3);
+per_frame_12=mid_flop=abs(mid_flop-equal(mid_thresh,2));
+per_frame_13=bass_changed=bnot(equal(old_bass_flop,bass_flop));
+per_frame_14=mid_changed=bnot(equal(old_mid_flop,mid_flop));
+per_frame_15=treb_changed=bnot(equal(old_treb_flop,treb_flop));
+per_frame_16=bass_residual = bass_changed*sin(pulse*bass_thresh*.1*entropy) + bnot(bass_changed)*bass_residual;
+per_frame_17=treb_residual = treb_changed*sin(pulse*treb_thresh*.1*entropy) + bnot(treb_changed)*treb_residual;
+per_frame_18=mid_residual = mid_changed*sin(pulse*mid_thresh*.1*entropy) + bnot(mid_changed)*mid_residual;
+per_frame_19=pulse=if(above(abs(pulse),20),-20,pulse+.1*bor(bor(bass_changed,treb_changed),mid_changed)+(mid_thresh+bass_thresh+treb_thresh)*entropy*.025);
+per_frame_20=q1=mid_residual;
+per_frame_21=q2=bass_residual;
+per_frame_22=q3=treb_residual;
+per_frame_23=q4=sin(pulse);
+per_frame_24=q5=sin(pulse/2);
+per_frame_25=wave_r=wave_r+.5*bass_residual;
+per_frame_26=wave_r=wave_g+.5*mid_residual;
+per_frame_27=wave_r=wave_b+.5*treb_residual;
+per_frame_28=wave_mystery=mid_residual;
+per_frame_29=ob_r=if(bass_flop,treb_flop,wave_r);
+per_frame_30=ob_b=if(treb_flop,mid_flop,wave_b);
+per_frame_31=ob_g=if(mid_flop,bass_flop,wave_g);
+per_frame_32=ob_a=.03+.02*wave_r;
+per_frame_33=ob_size=.25+.25*treb_residual;
+per_frame_34=ib_size=.05+.04*bass_residual;
+per_frame_35=ib_r = if(bass_flop,ob_b,.5+ 0.2*sin(time*0.5413));
+per_frame_36=ib_g = if(treb_flop,ob_g,.5 + 0.2*sin(time*0.6459));
+per_frame_37=ib_b = if(mid_flop,ob_r,.5 + 0.2*sin(time*0.4354));
+per_frame_38=rot = rot + 0.04*q1;
+per_frame_39=zoom=max(0.98, 0.2+0.35*bass_thresh);
+per_frame_40=rot = sin(bass*treb*mid)/16;
+per_frame_41=wave_r = bass*.5;
+per_frame_42=wave_g = treb*.5;
+per_frame_43=wave_b = mid*.5;
+per_pixel_1=dx = dx + if (above(crack,rip), 2*dx_r*crackdown, -2*dx_r*ripdown)*05;
+per_pixel_2=dy = dy + if (above(rip,crack), 2*dy_r*crackdown, -2*dy_r*ripdown)*05;
+per_pixel_3=zoom=0.9615+rad/12+ q2/20;
+per_frame_init_1=entropy=2;
diff --git a/InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - So Much Love.milk b/InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - So Much Love.milk
new file mode 100644
index 00000000..056781bc
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - So Much Love.milk
@@ -0,0 +1,287 @@
+[preset00]
+fRating=1.000000
+fGammaAdj=1.350000
+fDecay=0.999000
+fVideoEchoZoom=1.006465
+fVideoEchoAlpha=0.499900
+nVideoEchoOrientation=3
+nWaveMode=5
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=2.001574
+fWaveScale=0.728900
+fWaveSmoothing=0.783000
+fWaveParam=-0.140000
+fModWaveAlphaStart=0.760000
+fModWaveAlphaEnd=0.900001
+fWarpAnimSpeed=5.921029
+fWarpScale=1.095251
+fZoomExponent=1.570168
+fShader=0.650000
+zoom=0.970805
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.107093
+sx=1.078500
+sy=0.990000
+wave_r=0.500000
+wave_g=0.500000
+wave_b=0.500000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.005000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=3.000000
+nMotionVectorsY=2.000000
+mv_dx=0.020000
+mv_dy=-0.020000
+mv_l=0.150000
+mv_r=0.490000
+mv_g=0.480000
+mv_b=0.300001
+mv_a=0.970000
+wavecode_0_enabled=0
+wavecode_0_samples=128
+wavecode_0_sep=2
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=0.749339
+wavecode_0_smoothing=0.250000
+wavecode_0_r=0.520000
+wavecode_0_g=0.410001
+wavecode_0_b=0.340001
+wavecode_0_a=0.970000
+wave_0_per_frame1=x=100*sin(time)*q2+.3;
+wave_0_per_frame2=t1=cos(time)*q3;
+wave_0_per_frame3=r = 0.5 + 0.5*sin(time*1.353 +3);
+wave_0_per_frame4=b = 0.5 + 0.5*sin(time*1.561 + 2);
+wave_0_per_frame5=g = 0.5 + 0.5*sin(time*1.213 + 4);
+wave_0_per_point1=x = t8 + value1*0.7;
+wave_0_per_point2=y = 0.5 + value2*0.7;
+wave_0_per_point3=t1 = t1 + 0.01;
+wave_0_per_point4=b = x;
+wave_0_per_point5=a = 0.5 + 0.5*sin(time + t1*50);
+wave_0_per_point6=a = a*a;
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=0.370001
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=1
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.075209
+shapecode_0_ang=0.010000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=0.640000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.610000
+shapecode_0_border_r=0.460001
+shapecode_0_border_g=0.370001
+shapecode_0_border_b=0.600000
+shapecode_0_border_a=0.400000
+shape_0_per_frame1=x = 0.5 + 0.50*cos(q3*0.5) + 0.25*cos(time*6.5);
+shape_0_per_frame2=y = 0.5 + 0.50*sin(q3*0.5) + 0.25*sin(time*6.5);
+shape_0_per_frame3=r = 0.5 + 0.5*sin(time*1.713 + 2);
+shape_0_per_frame4=g = 0.5 + 0.5*sin(time*1.063 + 3);
+shape_0_per_frame5=b = 0.5 + 0.5*sin(time*1.054 + 1);
+shape_0_per_frame6=r2 = 0.5 + 0.5*sin(time*1.085 + 3);
+shape_0_per_frame7=g2 = 0.5 + 0.5*sin(time*1.056+ 1);
+shape_0_per_frame8=b2 = 0.5 + 0.5*sin(time*1.038 + 3);
+shapecode_1_enabled=1
+shapecode_1_sides=32
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.089633
+shapecode_1_ang=0.030000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=0.210001
+shapecode_1_g=0.440000
+shapecode_1_b=0.230000
+shapecode_1_a=0.540000
+shapecode_1_r2=0.180000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.110000
+shapecode_1_a2=0.510000
+shapecode_1_border_r=0.150001
+shapecode_1_border_g=0.400001
+shapecode_1_border_b=0.480000
+shapecode_1_border_a=0.290000
+shape_1_per_frame1=ang = time*1.4;
+shape_1_per_frame2=x = 0.5 + 0.16*cos(time*2.1) + 0.03*cos(time*0.7);
+shape_1_per_frame3=y = 0.5 + 0.12*sin(time*2.3) + 0.04*sin(time*0.2);
+shape_1_per_frame4=r = 0.5 + 0.5*sin(time*0.713 + 1);
+shape_1_per_frame5=g = 0.5 + 0.5*sin(time*0.563 + 2);
+shape_1_per_frame6=b = 0.5 + 0.5*sin(time*0.654 + 5);
+shape_1_per_frame7=r2 = 0.5 + 0.5*sin(time*0.885 + 4);
+shape_1_per_frame8=g2 = 0.5 + 0.5*sin(time*0.556+ 1);
+shape_1_per_frame9=b2 = 0.5 + 0.5*sin(time*0.638 + 3);
+shapecode_2_enabled=1
+shapecode_2_sides=5
+shapecode_2_additive=0
+shapecode_2_thickOutline=1
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.090001
+shapecode_2_ang=0.030000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=0.590000
+shapecode_2_g=0.430000
+shapecode_2_b=0.290000
+shapecode_2_a=0.560000
+shapecode_2_r2=0.160000
+shapecode_2_g2=0.400001
+shapecode_2_b2=0.540000
+shapecode_2_a2=0.530000
+shapecode_2_border_r=0.390001
+shapecode_2_border_g=0.000000
+shapecode_2_border_b=0.350001
+shapecode_2_border_a=0.390000
+shape_2_per_frame1=x = 0.5 + 0.15*cos(q3*0.5) + 0.21*cos(time*7.5);
+shape_2_per_frame2=y = 0.5 + 0.15*sin(q3*0.5) + 0.21*sin(time*7.5);
+shape_2_per_frame3=r = 0.5 + 0.5*sin(time*1.713 + 1);
+shape_2_per_frame4=g = 0.5 + 0.5*sin(time*1.563 + 3);
+shape_2_per_frame5=b = 0.5 + 0.5*sin(time*1.654 + 2);
+shape_2_per_frame6=r2 = 0.5 + 0.5*sin(time*1.885 + 3);
+shape_2_per_frame7=g2 = 0.5 + 0.5*sin(time*1.556+ 2);
+shape_2_per_frame8=b2 = 0.5 + 0.5*sin(time*1.638 + 4);
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=sx=1;
+per_frame_2=sy=1;
+per_frame_3=warp=0;
+per_frame_4=chaos=.9+.1*sin(pulse);
+per_frame_5=entropy=if(bnot(entropy),2,if(equal(pulse,-20),1+rand(3),entropy));
+per_frame_6=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*chaos+1.3);
+per_frame_7=bass_changed=abs(bass_changed-equal(bass_thresh,2));
+per_frame_8=treb_thresh=above(treb_att,treb_thresh)*2 + (1-above(treb_att,treb_thresh))*((treb_thresh-1.3)*chaos+1.3);
+per_frame_9=treb_changed=abs(bass_changed-equal(treb_thresh,2));
+per_frame_10=mid_thresh=above(mid_att,mid_thresh)*2 + (1-above(mid_att,mid_thresh))*((mid_thresh-1.3)*chaos+1.3);
+per_frame_11=mid_changed=abs(bass_changed-equal(mid_thresh,2));
+per_frame_12=bass_residual = bass_changed*sin(pulse*bass_thresh*.1*entropy) + bnot(bass_changed)*bass_residual;
+per_frame_13=treb_residual = treb_changed*sin(pulse*treb_thresh*.1*entropy) + bnot(treb_changed)*treb_residual;
+per_frame_14=mid_residual = mid_changed*sin(pulse*mid_thresh*.1*entropy) + bnot(mid_changed)*mid_residual;
+per_frame_15=pulse=if(above(abs(pulse),20),-20,pulse+.2*bor(bor(bass_changed*bnot(treb_changed),treb_changed*bnot(bass_changed))*bnot(mid_changed),mid_changed)+(mid+bass+treb)*.025);
+per_frame_16=q1=mid_residual;
+per_frame_17=q2=bass_residual;
+per_frame_18=q3=treb_residual;
+per_frame_19=q5=sin(pulse);
+per_frame_20=q4=(1+1*above(q1,0))*(1+2*above(q2,0))*(1+4*above(q3,0))*(1+6*mid_changed*below(q5,0))*(1+10*below(q1,0))*(1+12*mid_changed*above(q5,0));
+per_frame_21=wave_r=if(equal(treb_changed,1),0+.2*q1,if(equal(bass_changed,1),.8+.2*q2,.6+.08*q5));
+per_frame_22=wave_g=if(equal(treb_changed,1),0,if(equal(mid_changed,1),0,.5+.5*q2));
+per_frame_23=wave_b=if(equal(treb_changed,1),.8+.2*q3,0);
+per_frame_24=ob_r=if(bass_changed,treb_changed,wave_r);
+per_frame_25=ob_b=if(treb_changed,mid_changedp,wave_b);
+per_frame_26=ob_g=if(mid_changed,bass_changed,wave_g);
+per_frame_27=ob_a=.03+.02*wave_r;
+per_frame_28=ob_size=.05+.04*treb_residual;
+per_frame_29=ob_size=bnot(q1%102)*.1;
+per_frame_30=ib_r=if(bass_changed,ob_b,ob_g);
+per_frame_31=ib_b=if(treb_changed,ob_g,ob_r);
+per_frame_32=ib_g=if(mid_changed,ob_r,ob_b);
+per_frame_33=ib_a=.03+.02*wave_g;
+per_frame_34=ib_size=.05+.04*bass_residual;
+per_frame_35=wave_mystery=bnot(q1%2)*.3-bnot(q1%11)*.3+.5*sin(pulse*q2);
+per_frame_36=cx=cx+.5*q1;
+per_frame_37=cy=cy+.5*q2;
+per_frame_38=rot = rot + 0.040*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_39=zoom=max(0.97, min(0.15+0.7*bass_att, 1.75 ));
+per_pixel_1=state=q4;
+per_pixel_2=bend = cos(x*10*q1*bnot(state%7)-rad*10*q2*bnot(state%3));
+per_pixel_3=zoom = zoom+bend*.05*q3*bnot(state%5);
+per_pixel_4=grid=abs(x*10-5)%2 + abs(y*10-5)%2;
+per_pixel_5=sx=sx-equal(grid,bnot(state%2))*above(q1*q2*q3*q5,.8)*.9;
+per_pixel_6=rot=if(above(zoom-1,.03+.03*q5)*bnot(below(q1*q2*q3,0)),q1,rot);
+per_pixel_7=rot=rot+if(q2,0,sin(time*.7243)*.5);
+per_pixel_8=zoom=zoom+if(q2,0,rad*sin(time*.734)*.8);
+per_pixel_9=warp=warp+if(above(rad,.2166),sin(ang*rad),0);
+per_pixel_10=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*0.96+1.3);
+per_pixel_11=dx_r = equal(thresh,2)*0.025*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_12=dy_r = equal(thresh,2)*0.025*sin(5*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_13=crack = 1.34*sin(3.12*thresh*time) + 0.95*sin(5*thresh*time) + 1.73*cos(1.66*thresh*time) - 0.5*sin(0.25*thresh*time);
+per_pixel_14=rip = 1.92*cos(1.96*thresh*time) - 0.195*cos(3.27*thresh*time) + 0.236*sin(3.25*thresh*time) + 1.5*sin(thresh*time);
+per_pixel_15=crackdown = ((crack*2)*dx_r)*sin(33.75*time);
+per_pixel_16=ripdown = ((rip*2)*dy_r)*sin(5.75*time);
+per_pixel_17=dx = dx + if (above(crack,rip), 2*dx_r*crackdown, -2*dx_r*ripdown)*25;
+per_pixel_18=dy = dy + if (above(rip,crack), 2*dy_r*crackdown, -2*dy_r*ripdown)*25;
diff --git a/InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - State Of Discretion.milk b/InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - State Of Discretion.milk
new file mode 100644
index 00000000..b90eaf5b
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - State Of Discretion.milk
@@ -0,0 +1,103 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.983000
+fVideoEchoZoom=0.998168
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=4
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=12
+nMotionVectorsY=9
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=3.973828
+fWaveScale=1.329466
+fWaveSmoothing=0.450000
+fWaveParam=0.020000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.750000
+fWarpAnimSpeed=0.999998
+fWarpScale=0.994977
+fZoomExponent=0.057600
+fShader=0.950000
+zoom=0.773282
+rot=0.000000
+cx=0.440000
+cy=0.440001
+dx=0.020000
+dy=0.000000
+warp=0.999100
+sx=0.990096
+sy=1.009997
+wave_r=0.350000
+wave_g=0.360000
+wave_b=0.400000
+wave_x=0.510000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.360000
+ob_g=0.500000
+ob_b=0.360001
+ob_a=0.959999
+ib_size=0.010000
+ib_r=0.450000
+ib_g=0.450001
+ib_b=0.500000
+ib_a=0.900000
+per_frame_1=warp=0;
+per_frame_2=old_bass_flop=bass_flop;
+per_frame_3=old_treb_flop=treb_flop;
+per_frame_4=old_mid_flop=mid_flop;
+per_frame_5=chaos=.9+.1*sin(pulse);
+per_frame_6=entropy=if(bnot(entropy),2,if(equal(pulse,-20),1+rand(3),entropy));
+per_frame_7=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*chaos+1.3);
+per_frame_8=bass_flop=abs(bass_flop-equal(bass_thresh,2));
+per_frame_9=treb_thresh=above(treb_att,treb_thresh)*2 + (1-above(treb_att,treb_thresh))*((treb_thresh-1.3)*chaos+1.3);
+per_frame_10=treb_flop=abs(treb_flop-equal(treb_thresh,2));
+per_frame_11=mid_thresh=above(mid_att,mid_thresh)*2 + (1-above(mid_att,mid_thresh))*((mid_thresh-1.3)*chaos+1.3);
+per_frame_12=mid_flop=abs(mid_flop-equal(mid_thresh,2));
+per_frame_13=bass_changed=bnot(equal(old_bass_flop,bass_flop));
+per_frame_14=mid_changed=bnot(equal(old_mid_flop,mid_flop));
+per_frame_15=treb_changed=bnot(equal(old_treb_flop,treb_flop));
+per_frame_16=bass_residual = bass_changed*sin(pulse*bass_thresh*.1*entropy) + bnot(bass_changed)*bass_residual;
+per_frame_17=treb_residual = treb_changed*sin(pulse*treb_thresh*.1*entropy) + bnot(treb_changed)*treb_residual;
+per_frame_18=mid_residual = mid_changed*sin(pulse*mid_thresh*.1*entropy) + bnot(mid_changed)*mid_residual;
+per_frame_19=pulse=if(above(abs(pulse),20),-20,pulse+.2*bor(bor(bass_changed*bnot(treb_changed),treb_changed*bnot(bass_changed))*bnot(mid_changed),mid_changed)+(mid+bass+treb)*entropy*.025);
+per_frame_20=q1=mid_residual;
+per_frame_21=q2=bass_residual;
+per_frame_22=q3=treb_residual;
+per_frame_23=q4=sin(pulse);
+per_frame_24=q5=sin(pulse/2);
+per_frame_25=wave_r=wave_r+.5*bass_residual;
+per_frame_26=wave_r=wave_g+.5*mid_residual;
+per_frame_27=wave_r=wave_b+.5*treb_residual;
+per_frame_28=wave_mystery=mid_residual;
+per_frame_29=ob_r=if(bass_flop,treb_flop,wave_r);
+per_frame_30=ob_b=if(treb_flop,mid_flop,wave_b);
+per_frame_31=ob_g=if(mid_flop,bass_flop,wave_g);
+per_frame_32=ob_a=.03+.02*wave_r;
+per_frame_33=ob_size=.05+.04*treb_residual;
+per_frame_34=ib_r=if(bass_flop,ob_b,ob_g);
+per_frame_35=ib_b=if(treb_flop,ob_g,ob_r);
+per_frame_36=ib_g=if(mid_flop,ob_r,ob_b);
+per_frame_37=ib_a=.03+.02*wave_g;
+per_frame_38=ib_size=.05+.04*bass_residual;
+per_frame_39=ib_r = ib_r + 0.2*sin(time*0.5413);
+per_frame_40=ib_g = ib_g + 0.2*sin(time*0.6459);
+per_frame_41=ib_b = ib_b + 0.2*sin(time*0.4354);
+per_frame_42=rot = rot + 0.040*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_43=zoom=max(0.98, min(0.15+0.8*bass_att, 1.75 ));
+per_pixel_1=radix=if(above(q3,0),min(x,y),max(x,y));
+per_pixel_2=radix=if(above(q2,0),min(radix,rad),max(radix,rad));
+per_pixel_3=rot=if(above(q4,0),rad*.2*q5,0);
+per_pixel_4=zoom=if(above(q2,0),zoom,if(above(q3,0),1+q1*.05,1+.07*cos(radix*10*q1)));
diff --git a/InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - Wrenched Fate.milk b/InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - Wrenched Fate.milk
new file mode 100644
index 00000000..20042ec7
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/StudioMusic & Unchained - Wrenched Fate.milk
@@ -0,0 +1,100 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.999001
+fDecay=0.980000
+fVideoEchoZoom=0.998100
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=5
+bAdditiveWaves=0
+bWaveDots=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=64
+nMotionVectorsY=1
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=13.378749
+fWaveScale=0.717349
+fWaveSmoothing=0.531000
+fWaveParam=0.020000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=1.208100
+fWarpScale=1.263386
+fZoomExponent=0.111607
+fShader=0.509900
+zoom=0.054279
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=1.333300
+sx=0.999901
+sy=0.999901
+wave_r=0.250000
+wave_g=0.350000
+wave_b=0.700000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.500000
+ob_g=0.250000
+ob_b=0.150000
+ob_a=0.970000
+ib_size=0.010000
+ib_r=0.100000
+ib_g=0.300000
+ib_b=0.500000
+ib_a=0.970000
+per_frame_1=warp=0;
+per_frame_2=old_bass_flop=bass_flop;
+per_frame_3=old_treb_flop=treb_flop;
+per_frame_4=old_mid_flop=mid_flop;
+per_frame_5=chaos=.9+.1*sin(pulse);
+per_frame_6=entropy=if(bnot(entropy),2,if(equal(pulse,-20),1+rand(3),entropy));
+per_frame_7=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*chaos+1.3);
+per_frame_8=bass_flop=abs(bass_flop-equal(bass_thresh,2));
+per_frame_9=treb_thresh=above(treb_att,treb_thresh)*2 + (1-above(treb_att,treb_thresh))*((treb_thresh-1.3)*chaos+1.3);
+per_frame_10=treb_flop=abs(treb_flop-equal(treb_thresh,2));
+per_frame_11=mid_thresh=above(mid_att,mid_thresh)*2 + (1-above(mid_att,mid_thresh))*((mid_thresh-1.3)*chaos+1.3);
+per_frame_12=mid_flop=abs(mid_flop-equal(mid_thresh,2));
+per_frame_13=bass_changed=bnot(equal(old_bass_flop,bass_flop));
+per_frame_14=mid_changed=bnot(equal(old_mid_flop,mid_flop));
+per_frame_15=treb_changed=bnot(equal(old_treb_flop,treb_flop));
+per_frame_16=bass_residual = bass_changed*sin(pulse*bass_thresh*.1*entropy) + bnot(bass_changed)*bass_residual;
+per_frame_17=treb_residual = treb_changed*sin(pulse*treb_thresh*.1*entropy) + bnot(treb_changed)*treb_residual;
+per_frame_18=mid_residual = mid_changed*sin(pulse*mid_thresh*.1*entropy) + bnot(mid_changed)*mid_residual;
+per_frame_19=pulse=if(above(abs(pulse),20),-20,pulse+.1*bor(bor(bass_changed,treb_changed),mid_changed)+(mid_thresh+bass_thresh+treb_thresh)*entropy*.025);
+per_frame_20=q1=mid_residual;
+per_frame_21=q2=bass_residual;
+per_frame_22=q3=treb_residual;
+per_frame_23=q4=sin(pulse);
+per_frame_24=q5=sin(pulse/2);
+per_frame_25=wave_r=wave_r+.5*bass_residual;
+per_frame_26=wave_r=wave_g+.5*mid_residual;
+per_frame_27=wave_r=wave_b+.5*treb_residual;
+per_frame_28=wave_mystery=mid_residual;
+per_frame_29=ob_r=if(bass_flop,treb_flop,wave_r);
+per_frame_30=ob_b=if(treb_flop,mid_flop,wave_b);
+per_frame_31=ob_g=if(mid_flop,bass_flop,wave_g);
+per_frame_32=ob_a=.03+.02*wave_r;
+per_frame_33=ob_size=.25+.25*treb_residual;
+per_frame_34=ib_size=.05+.04*bass_residual;
+per_frame_35=ib_r = if(bass_flop,ob_b,.5+ 0.2*sin(time*0.5413));
+per_frame_36=ib_g = if(treb_flop,ob_g,.5 + 0.2*sin(time*0.6459));
+per_frame_37=ib_b = if(mid_flop,ob_r,.5 + 0.2*sin(time*0.4354));
+per_frame_38=rot = rot + 0.04*q1;
+per_frame_39=zoom=max(0.98, 0.2+0.35*bass_thresh);
+per_pixel_1=radix=if(above(q3,0),min(x,y),max(x,y));
+per_pixel_2=radix=if(above(q2,0),min(radix,rad),max(radix,rad));
+per_pixel_3=rot=if(above(q4,0),rad*.2*q5,rot);
+per_pixel_4=zoom=if(above(q2,0),zoom,if(above(q3,0),zoom+q1*.05,zoom+.07*cos(radix*10*q1)));
+per_pixel_5=rot=if(equal(q1,1),rad*(sin(mid+treb)/7),rad*(sin(-mid-treb)/7));
diff --git a/InstallerDependencies/Visuals/projectM/presets/StudioMusic - It's Only Make Believe.milk b/InstallerDependencies/Visuals/projectM/presets/StudioMusic - It's Only Make Believe.milk
new file mode 100644
index 00000000..da60130d
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/StudioMusic - It's Only Make Believe.milk
@@ -0,0 +1,75 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.980000
+fVideoEchoZoom=1.006593
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=7
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=2.865441
+fWaveScale=69.200165
+fWaveSmoothing=0.792000
+fWaveParam=0.020000
+fModWaveAlphaStart=0.980000
+fModWaveAlphaEnd=0.999999
+fWarpAnimSpeed=0.960959
+fWarpScale=6.948194
+fZoomExponent=2.699864
+fShader=0.700000
+zoom=0.012572
+rot=0.000000
+cx=0.500000
+cy=0.500001
+dx=0.000000
+dy=0.000000
+warp=10.040655
+sx=0.999989
+sy=0.999999
+wave_r=0.250000
+wave_g=0.250000
+wave_b=0.250000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.150000
+ob_g=0.350000
+ob_b=0.250000
+ob_a=0.970000
+ib_size=0.010000
+ib_r=0.350000
+ib_g=0.250000
+ib_b=0.150000
+ib_a=0.970000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.050000
+mv_r=0.500000
+mv_g=0.500000
+mv_b=0.500000
+mv_a=0.950000
+per_frame_1=ff = frame/100;
+per_frame_2=wave_r = sin(5*ff/bass)/2+0.5;
+per_frame_3=wave_g = cos(ff/mid)/2+0.5;
+per_frame_4=wave_b = cos(3*ff/treb)/2+0.5;
+per_frame_5=ib_r = ib_r + 0.2*sin(time*0.5413);
+per_frame_6=ib_g = ib_g + 0.2*sin(time*0.6459);
+per_frame_7=ib_b = ib_b + 0.2*sin(time*0.4354);
+per_frame_8=ob_r=wave_r;
+per_frame_9=ob_g=wave_g;
+per_frame_10=ob_b=wave_b;
+per_frame_11=rot = rot + 0.180*( 0.60*sin(0.981*time) + 0.80*sin(0.279*time) );
+per_frame_12=zoom=max(0.98, min(0.15+0.8*bass_att, 1.75 ));
diff --git a/InstallerDependencies/Visuals/projectM/presets/StudioMusic - Numerosity.milk b/InstallerDependencies/Visuals/projectM/presets/StudioMusic - Numerosity.milk
new file mode 100644
index 00000000..6ce7a466
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/StudioMusic - Numerosity.milk
@@ -0,0 +1,74 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.980000
+fVideoEchoZoom=0.330231
+fVideoEchoAlpha=1.000000
+nVideoEchoOrientation=1
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.501800
+fWaveScale=1.297700
+fWaveSmoothing=0.450000
+fWaveParam=0.020000
+fModWaveAlphaStart=1.000000
+fModWaveAlphaEnd=1.000001
+fWarpAnimSpeed=0.517589
+fWarpScale=0.704400
+fZoomExponent=0.347586
+fShader=0.610000
+zoom=0.793914
+rot=0.000000
+cx=0.499900
+cy=0.499900
+dx=0.000000
+dy=0.000000
+warp=0.290273
+sx=0.929000
+sy=0.932617
+wave_r=0.030000
+wave_g=0.030000
+wave_b=0.030000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.500000
+ib_size=0.005000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.500000
+nMotionVectorsX=64.000000
+nMotionVectorsY=2.400000
+mv_dx=0.000000
+mv_dy=-0.100000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = wave_r + 0.400*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+per_frame_2=wave_g = wave_g + 0.400*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+per_frame_3=wave_b = wave_b + 0.400*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+per_frame_4=ib_r = ib_r + 0.2*sin(time*0.5413);
+per_frame_5=ib_g = ib_g + 0.2*sin(time*0.6459);
+per_frame_6=ib_b = ib_b + 0.2*sin(time*0.4354);
+per_frame_7=rot = rot + 0.040*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) );
+per_frame_8=zoom=max(0.98, min(0.15+0.8*bass_att, 1.75 ));
+per_pixel_1=gridx=bnot((x*q7)%2);
+per_pixel_2=gridy=bnot((y*q7)%2);
+per_pixel_3=zoom=zoom+.07*cos(sin(rad*2.14*q3+abs(rad*3.14*gridy))*2.14+rad*sin(q4*2.14+q1))*gridx;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Telek - Flicker.milk b/InstallerDependencies/Visuals/projectM/presets/Telek - Flicker.milk
new file mode 100644
index 00000000..92c2741f
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Telek - Flicker.milk
@@ -0,0 +1,93 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=3
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=0.430333
+fWaveSmoothing=0.630000
+fWaveParam=1.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.001000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.460000
+wave_y=0.005000
+ob_size=0.005000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.060000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=58.752007
+nMotionVectorsY=14.400000
+mv_dx=0.006000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=0.100000
+mv_g=1.000000
+mv_b=0.000000
+mv_a=0.000000
+per_frame_1=bass_x = max(bass_x*.7+max(bass_att-.9,0)*.3,0); //decaying bass max
+per_frame_2=
+per_frame_3=wave_x = ((frame%3-1)*.5*bass_x+1)*wave_x; //spreads flame
+per_frame_4=
+per_frame_5=decay = 3000000+57.75; // Magic 'flame' decay
+per_frame_6=//wave_mystery = sin(time*.2)*.05+1;
+per_frame_7=
+per_frame_8=ob_a = sqr(sqr(sin(time*1)*.25+.25)); // 'ad-lib decay' to black - no ugly artefacts
+per_frame_9=// ^4 to get it up there quick -> min time with decay on.
+per_frame_10=
+per_frame_11=ob_a = ob_a*(1-bass_x); // just so we don't get rid of the wide impressive
+per_frame_12=// flames so quickly
+per_frame_13=
+per_frame_14=monitor = ob_a;
+per_frame_15=
+per_frame_16=//Other decays to try:
+per_frame_17=//300000 + 42.53, 90.63, 43.00 These are all fairly similar, but all are stable (equiv to decay 0.990 -> 1 in terms of speed of fade)
+per_frame_18=//3000000 + 57.75 <<< =:-)
+per_pixel_1=dy = (x+.08*sin(rand(100)))*2%2*-.01-.005;
+per_pixel_2=dy = -.0025*((1-y)*10+rand(5)); //wobble, and faster at top - accelerating like real flames
+per_pixel_3=
+per_pixel_4=dx = rand(20)*.0001*sin(rand(2)-.5); //flicker
+per_pixel_5=dx = dx*sqr(y); //dampens top
+per_pixel_6=//dx = dx*(1-x/2); //slows sides
+per_pixel_7=dx = dx*-.2*(rand(10)-5); //random damper
+per_pixel_8=dx = dx -(x-.5)*.04*(.8-sqr(y)); //drift towards centre
+per_pixel_9=dx = dx + cos(sqr(y-.5)*10-time*1.1)*sqr(1-(y))*.01; //add flutter at top
+per_pixel_10=
+per_pixel_11=// Telek - 26/09/2002
+per_frame_init_1=bass_x = 1;
diff --git a/InstallerDependencies/Visuals/projectM/presets/Telek - Slow Shift Matrix (bb4.5).milk b/InstallerDependencies/Visuals/projectM/presets/Telek - Slow Shift Matrix (bb4.5).milk
new file mode 100644
index 00000000..33bc6280
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/Telek - Slow Shift Matrix (bb4.5).milk
@@ -0,0 +1,80 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=0.900000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=3
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001645
+fWaveScale=0.430333
+fWaveSmoothing=0.630000
+fWaveParam=1.000000
+fModWaveAlphaStart=2.000000
+fModWaveAlphaEnd=2.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.001000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.300000
+ob_a=1.000000
+ib_size=0.100000
+ib_r=1.000000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=48.000000
+mv_dx=-0.941273
+mv_dy=0.426319
+mv_l=5.000000
+mv_r=0.315997
+mv_g=0.078173
+mv_b=0.941976
+mv_a=0.000000
+per_frame_1=bv = bass*.01+.99*bv;
+per_frame_2=tt=tt+bass*.01;
+per_frame_3=tt = if(above(bass*bass_att,4.5),rand(32768),tt);
+per_frame_4=wave_x =-1;
+per_frame_5=dx = .3*sin(tt*.12)+10*sin(tt*.015);
+per_frame_6=dy = .39*sin(tt*.21)+20*sin(tt*.041);
+per_frame_7=rot = 1*sin(tt*.15);
+per_frame_8=cx = sin(tt*.16)*.5+.5;
+per_frame_9=cy = cos(tt*.46)*.5+.5;
+per_frame_10=ib_r = sin(tt*.51)*.5+.5;
+per_frame_11=ib_g = sin(tt*.71)*.5+.5;
+per_frame_12=ib_b = sin(tt*.81)*.5+.5;
+per_frame_13=monitor = tt;
+per_frame_14=
+per_pixel_1=zoom = .8-.2*pow(1-rad,1);
+per_frame_init_1=tt = rand(10000);
+per_frame_init_2=
diff --git a/InstallerDependencies/Visuals/projectM/presets/bmelgren - Godhead.milk b/InstallerDependencies/Visuals/projectM/presets/bmelgren - Godhead.milk
new file mode 100644
index 00000000..7bae5465
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/bmelgren - Godhead.milk
@@ -0,0 +1,65 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.975000
+fVideoEchoZoom=1.006596
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=5
+bAdditiveWaves=1
+bWaveDots=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=1.285749
+fWaveSmoothing=0.900000
+fWaveParam=0.600000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.380217
+rot=0.020000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.198054
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r = bass-1;
+per_frame_2=wave_g = mid-1.2;
+per_frame_3=wave_b = treb-.5;
+per_pixel_1=rot=0.1*pow(ang,3);
+per_pixel_2=zoom=sin(pow(rad,mid))+.8;
diff --git a/InstallerDependencies/Visuals/projectM/presets/bmelgren - Take this highway.milk b/InstallerDependencies/Visuals/projectM/presets/bmelgren - Take this highway.milk
new file mode 100644
index 00000000..3f75694a
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/bmelgren - Take this highway.milk
@@ -0,0 +1,66 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.000000
+fDecay=0.925000
+fVideoEchoZoom=1.006596
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=6
+bAdditiveWaves=1
+bWaveDots=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=2.850142
+fWaveSmoothing=0.360000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.380217
+rot=0.020000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.198054
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.010000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=ff = 0.01*frame;
+per_frame_2=wave_r = 0.5*sin(5*ff/bass)+0.5;
+per_frame_3=wave_g = 0.5*cos(ff/mid)+0.5;
+per_frame_4=wave_b = 0.5*cos(3*ff/treb)+0.5;
+per_pixel_1=rot=0.1*pow(ang,3);
+per_pixel_2=zoom=sin(pow(rad,3))+(.6*mid_att);
diff --git a/InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - brainstem activation.milk b/InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - brainstem activation.milk
new file mode 100644
index 00000000..038cd0bb
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - brainstem activation.milk
@@ -0,0 +1,393 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.140000
+fDecay=0.980000
+fVideoEchoZoom=1.001827
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=7
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=1.285751
+fWaveSmoothing=0.630000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=5.582132
+fWarpScale=2.188900
+fZoomExponent=1.001827
+fShader=1.000000
+zoom=1.009509
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=0.999900
+sy=0.999900
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.020000
+ob_r=0.900000
+ob_g=0.700000
+ob_b=0.100000
+ob_a=0.300000
+ib_size=0.010000
+ib_r=0.700000
+ib_g=0.450000
+ib_b=0.050000
+ib_a=0.300000
+nMotionVectorsX=64.000000
+nMotionVectorsY=48.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.500000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.030000
+wavecode_0_enabled=1
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=1
+wavecode_0_bDrawThick=1
+wavecode_0_bAdditive=1
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=0.400000
+wavecode_0_g=1.000000
+wavecode_0_b=0.300000
+wavecode_0_a=1.000000
+wave_0_per_point1=//left and right angles
+wave_0_per_point2=la=.25+(treb_att*.09)+(.2*sin(time));
+wave_0_per_point3=ra=-.25-(treb*.09)+(.2*cos(time));
+wave_0_per_point4=
+wave_0_per_point5=//left or right?
+wave_0_per_point6=branch=rand(2);
+wave_0_per_point7=
+wave_0_per_point8=//base
+wave_0_per_point9=wx=if(equal(sc,0),.5,wx);
+wave_0_per_point10=wy=if(equal(sc,0),.1,wy);
+wave_0_per_point11=
+wave_0_per_point12=wx=if(equal(sc,1),.5,wx);
+wave_0_per_point13=wy=if(equal(sc,1),.4,wy);
+wave_0_per_point14=
+wave_0_per_point15=//calculate previous branch length
+wave_0_per_point16=d=if(below(sc,2),.3,.7*d+(bass_att*.003));
+wave_0_per_point17=
+wave_0_per_point18=//angle
+wave_0_per_point19=wainc=if(equal(branch,1),la,ra);
+wave_0_per_point20=
+wave_0_per_point21=wa=if(below(sc,2),3.1415927*.5,wa+wainc);
+wave_0_per_point22=
+wave_0_per_point23=//branches
+wave_0_per_point24=wx=if(above(sc,2),wx+cos(wa)*d,wx);
+wave_0_per_point25=wy=if(above(sc,2),wy+sin(wa)*d,wy);
+wave_0_per_point26=
+wave_0_per_point27=//sample count
+wave_0_per_point28=sc=if(equal(sc,10),0,sc+1); //depth setting
+wave_0_per_point29=
+wave_0_per_point30=a=if(below(sc,2),0,.1);
+wave_0_per_point31=
+wave_0_per_point32=x=wx;
+wave_0_per_point33=y=wy;
+wave_0_per_point34=
+wave_0_per_point35=r=treb_att*.65;
+wave_0_per_point36=g=mid_att*.65;
+wave_0_per_point37=b=abs(sin(time*.6));
+wavecode_1_enabled=1
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=1
+wavecode_1_scaling=0.999998
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=0.020000
+wave_1_per_point1=//left and right angles
+wave_1_per_point2=la=.15+(treb_att*.09)+(.2*sin(time));
+wave_1_per_point3=ra=-.15-(treb*.09)+(.2*cos(time));
+wave_1_per_point4=
+wave_1_per_point5=//left or right?
+wave_1_per_point6=branch=rand(2);
+wave_1_per_point7=
+wave_1_per_point8=//base
+wave_1_per_point9=wx=if(equal(sc,0),.5,wx);
+wave_1_per_point10=wy=if(equal(sc,0),.35,wy);
+wave_1_per_point11=
+wave_1_per_point12=wx=if(equal(sc,1),.5,wx);
+wave_1_per_point13=wy=if(equal(sc,1),.4,wy);
+wave_1_per_point14=
+wave_1_per_point15=//calculate previous branch length
+wave_1_per_point16=d=if(below(sc,2),.3,.7*d+(treb_att*.003));
+wave_1_per_point17=
+wave_1_per_point18=//angle
+wave_1_per_point19=wainc=if(equal(branch,1),la,ra);
+wave_1_per_point20=
+wave_1_per_point21=wa=if(below(sc,2),3.1415927*.5,wa+wainc);
+wave_1_per_point22=
+wave_1_per_point23=//branches
+wave_1_per_point24=wx=if(above(sc,2),wx+cos(wa)*d,wx);
+wave_1_per_point25=wy=if(above(sc,2),wy+sin(wa)*d,wy);
+wave_1_per_point26=
+wave_1_per_point27=//sample count
+wave_1_per_point28=sc=if(equal(sc,10),0,sc+1); //depth setting
+wave_1_per_point29=
+wave_1_per_point30=a=if(below(sc,2),0,.04);
+wave_1_per_point31=
+wave_1_per_point32=x=wx;
+wave_1_per_point33=y=wy;
+wave_1_per_point34=
+wave_1_per_point35=r=sin(time);
+wave_1_per_point36=g=sin(time+.23);
+wave_1_per_point37=b=sin(time*.6);
+wavecode_2_enabled=1
+wavecode_2_samples=512
+wavecode_2_sep=0
+wavecode_2_bSpectrum=0
+wavecode_2_bUseDots=1
+wavecode_2_bDrawThick=0
+wavecode_2_bAdditive=1
+wavecode_2_scaling=1.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=0.000000
+wave_2_per_point1=//left and right angles
+wave_2_per_point2=la=.2+(treb_att*.09)+(.2*sin(time));
+wave_2_per_point3=ra=-.2-(treb*.09)+(.2*cos(time));
+wave_2_per_point4=
+wave_2_per_point5=//left or right?
+wave_2_per_point6=branch=rand(2);
+wave_2_per_point7=
+wave_2_per_point8=//base
+wave_2_per_point9=wx=if(equal(sc,0),.5,wx);
+wave_2_per_point10=wy=if(equal(sc,0),.1,wy);
+wave_2_per_point11=
+wave_2_per_point12=wx=if(equal(sc,1),.5,wx);
+wave_2_per_point13=wy=if(equal(sc,1),.4,wy);
+wave_2_per_point14=
+wave_2_per_point15=//calculate previous branch length
+wave_2_per_point16=d=if(below(sc,2),.3,.7*d);
+wave_2_per_point17=
+wave_2_per_point18=//angle
+wave_2_per_point19=wainc=if(equal(branch,1),la,ra);
+wave_2_per_point20=
+wave_2_per_point21=wa=if(below(sc,2),3.1415927*.5,wa+wainc);
+wave_2_per_point22=
+wave_2_per_point23=//branches
+wave_2_per_point24=wx=if(above(sc,2),wx+cos(wa)*d,wx);
+wave_2_per_point25=wy=if(above(sc,2),wy+sin(wa)*d,wy);
+wave_2_per_point26=
+wave_2_per_point27=//sample count
+wave_2_per_point28=sc=if(equal(sc,10),0,sc+1); //depth setting
+wave_2_per_point29=
+wave_2_per_point30=a=if(below(sc,2),0,.1);
+wave_2_per_point31=
+wave_2_per_point32=x=wx;
+wave_2_per_point33=y=wy;
+wavecode_3_enabled=1
+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.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=0.700000
+wavecode_3_g=0.700000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+wave_3_per_point1=//left and right angles
+wave_3_per_point2=la=.5+(treb_att*.09)+(.2*sin(time));
+wave_3_per_point3=ra=-.5-(treb*.09)+(.2*cos(time));
+wave_3_per_point4=
+wave_3_per_point5=//left or right?
+wave_3_per_point6=branch=rand(2);
+wave_3_per_point7=
+wave_3_per_point8=//base
+wave_3_per_point9=wx=if(equal(sc,0),.5,wx);
+wave_3_per_point10=wy=if(equal(sc,0),.1,wy);
+wave_3_per_point11=
+wave_3_per_point12=wx=if(equal(sc,1),.5,wx);
+wave_3_per_point13=wy=if(equal(sc,1),.45,wy);
+wave_3_per_point14=
+wave_3_per_point15=//calculate previous branch length
+wave_3_per_point16=d=if(below(sc,2),.3,.4*d+(treb_att*.003));
+wave_3_per_point17=
+wave_3_per_point18=//angle
+wave_3_per_point19=wainc=if(equal(branch,1),la,ra);
+wave_3_per_point20=
+wave_3_per_point21=wa=if(below(sc,2),3.1415927*-.5,wa+wainc);
+wave_3_per_point22=
+wave_3_per_point23=//branches
+wave_3_per_point24=wx=if(above(sc,2),wx+cos(wa)*d,wx);
+wave_3_per_point25=wy=if(above(sc,2),wy+sin(wa)*d,wy);
+wave_3_per_point26=
+wave_3_per_point27=//sample count
+wave_3_per_point28=sc=if(equal(sc,10),0,sc+1); //depth setting
+wave_3_per_point29=
+wave_3_per_point30=a=if(below(sc,2),0,.02);
+wave_3_per_point31=
+wave_3_per_point32=x=wx;
+wave_3_per_point33=y=wy;
+shapecode_0_enabled=1
+shapecode_0_sides=3
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.506271
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=0.513405
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=0.800000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=ang=time;
+shapecode_1_enabled=1
+shapecode_1_sides=3
+shapecode_1_additive=1
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.650000
+shapecode_1_rad=0.320330
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=2.006753
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=x=(sin(time)*.05)+.5;
+shape_1_per_frame2=
+shape_1_per_frame3=ang=time*.25;
+shape_1_per_frame4=rad=rad+(treb_att*treb_att*.1);
+shape_1_per_frame5=
+shape_1_per_frame6=r=sin(time*.1);
+shape_1_per_frame7=g=sin(time*.25);
+shape_1_per_frame8=b=sin(time*.75);
+shape_1_per_frame9=
+shape_1_per_frame10=r2=bass_att*.65;
+shape_1_per_frame11=g2=mid_att*.65;
+shape_1_per_frame12=b2=treb_att*.65;
+shapecode_2_enabled=1
+shapecode_2_sides=3
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.320000
+shapecode_2_y=0.340000
+shapecode_2_rad=0.364567
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=0.608034
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=ang=time;
+shape_2_per_frame2=
+shape_2_per_frame3=rad=rad+(bass*bass*.1);
+shape_2_per_frame4=
+shape_2_per_frame5=r=sin(time*.2);
+shape_2_per_frame6=g=sin(time*.5);
+shape_2_per_frame7=b=sin(time*1.25);
+shape_2_per_frame8=
+shape_2_per_frame9=r2=bass_att*.65;
+shape_2_per_frame10=g2=mid_att*.65;
+shape_2_per_frame11=b2=treb_att*.65;
+shapecode_3_enabled=0
+shapecode_3_sides=100
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=1
+shapecode_3_x=0.500000
+shapecode_3_y=0.700000
+shapecode_3_rad=0.501256
+shapecode_3_ang=0.188496
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=0.999998
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=1.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=1.000000
+shapecode_3_g2=0.400000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+per_frame_1=ob_r=abs(sin(time));
+per_frame_2=ob_g=abs(sin(time*.05));
+per_pixel_1=//rotation
+per_pixel_2=rb=(above(treb,.7)*rad*sin(time*3)*3);
+per_pixel_3=ra=if(above(rb,0),1,ra-.05);
+per_pixel_4=
+per_pixel_5=ra=if(above(ra,1),1,ra);
+per_pixel_6=ra=if(below(ra,0),0,ra);
+per_pixel_7=
+per_pixel_8=rot=rot+(rb*ra*ra*.1);
+per_pixel_9=
+per_pixel_10=//zoom
+per_pixel_11=zb=(above(bass,.7)*rad*sin(time*2)*2);
+per_pixel_12=za=if(above(zb,0),1,za-.05);
+per_pixel_13=
+per_pixel_14=za=if(above(za,1),1,za);
+per_pixel_15=za=if(below(za,0),0,za);
+per_pixel_16=
+per_pixel_17=zoom=zoom+(zb*za*za*.1);
+per_pixel_18=
+per_pixel_19=dx=dx+(zb*za*za*(1-rad)*.23*above(ra,0));
+per_pixel_20=dy=dy+(y*sin(time)*.01*ang);
diff --git a/InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - crazy diamond.milk b/InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - crazy diamond.milk
new file mode 100644
index 00000000..842b2077
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - crazy diamond.milk
@@ -0,0 +1,267 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.210000
+fDecay=0.945000
+fVideoEchoZoom=0.996628
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=7
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=5.204473
+fWaveScale=0.430332
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=1.110000
+fModWaveAlphaEnd=1.500000
+fWarpAnimSpeed=0.010000
+fWarpScale=1.331000
+fZoomExponent=2.063786
+fShader=1.000000
+zoom=1.374256
+rot=0.580000
+cx=0.500000
+cy=0.500000
+dx=-0.000000
+dy=0.099900
+warp=1.599100
+sx=1.220000
+sy=0.999900
+wave_r=0.750000
+wave_g=0.750000
+wave_b=1.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.015000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.800000
+ib_size=0.210000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=2.400006
+mv_dx=0.020000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=0.800000
+mv_g=0.800000
+mv_b=1.000000
+mv_a=0.100000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=1
+wavecode_0_bDrawThick=1
+wavecode_0_bAdditive=1
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=1
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+wave_1_per_point1=branch=rand(2);
+wave_1_per_point2=
+wave_1_per_point3=//base
+wave_1_per_point4=wx=if(equal(sc,0),.5,wx);
+wave_1_per_point5=wy=if(equal(sc,0),.1,wy);
+wave_1_per_point6=
+wave_1_per_point7=wx=if(equal(sc,1),.5,wx);
+wave_1_per_point8=wy=if(equal(sc,1),.4,wy);
+wave_1_per_point9=
+wave_1_per_point10=//calculate previous branch length
+wave_1_per_point11=d=if(below(sc,2),.3,.7*d);
+wave_1_per_point12=
+wave_1_per_point13=//angle
+wave_1_per_point14=wainc=if(equal(branch,1),.2,-.2);
+wave_1_per_point15=
+wave_1_per_point16=wa=if(below(sc,2),3.1415927*.5,wa+wainc);
+wave_1_per_point17=
+wave_1_per_point18=//branches
+wave_1_per_point19=wx=if(above(sc,2),wx+cos(wa)*d,wx);
+wave_1_per_point20=wy=if(above(sc,2),wy+sin(wa)*d,wy);
+wave_1_per_point21=
+wave_1_per_point22=//sample count
+wave_1_per_point23=sc=if(equal(sc,11),0,sc+1);
+wave_1_per_point24=
+wave_1_per_point25=a=if(below(sc,2),0,.1);
+wave_1_per_point26=
+wave_1_per_point27=x=wx;
+wave_1_per_point28=y=wy;
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=3
+shapecode_0_additive=1
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.542788
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=0.311603
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=ang=time;
+shape_0_per_frame2=
+shape_0_per_frame3=r2=abs(sin(time));
+shape_0_per_frame4=g2=abs(cos(time));
+shape_0_per_frame5=b2=treb_att*.65;
+shape_0_per_frame6=
+shape_0_per_frame7=rad=rad+(bass_att*.1);
+shapecode_1_enabled=1
+shapecode_1_sides=6
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.197883
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.691360
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=r=abs(sin(time*.1));
+shape_1_per_frame2=g=abs(sin(time*.25));
+shape_1_per_frame3=
+shape_1_per_frame4=b2=abs(sin(time*.3));
+shape_1_per_frame5=
+shape_1_per_frame6=x=(sin(time+.23)*.5)+.5;
+shape_1_per_frame7=y=(cos(time*.21)*.5)+.5;
+shape_1_per_frame8=ang=time;
+shapecode_2_enabled=1
+shapecode_2_sides=3
+shapecode_2_additive=1
+shapecode_2_thickOutline=1
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.270481
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=0.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=0.200000
+shapecode_2_b2=1.000000
+shapecode_2_a2=0.100000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=ang=time;
+shape_2_per_frame2=rad=abs(sin(time*.25));
+shape_2_per_frame3=
+shape_2_per_frame4=tex_zoom=bass*treb_att;
+shapecode_3_enabled=1
+shapecode_3_sides=6
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.120321
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=1.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=1.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+shape_3_per_frame1=ang=time;
+shape_3_per_frame2=rad=rad+(treb*.01);
+per_frame_1=sx=sx+bass_att*.04;
+per_frame_2=sy=sy+treb_att*.04;
+per_frame_3=
+per_frame_4=cx=.5+(sin(time)*.2);
+per_frame_5=cy=.5+(sin(time*.3)*.1);
+per_frame_6=
+per_frame_7=rot=rot+(treb*bass*.01);
+per_frame_8=
+per_frame_9=warp=warp+if(above(bass,1.4),bass*8*sin(time*.2),bass);
+per_pixel_1=rot=rot+(1-rad)*sin(time)*.5;
+per_pixel_2=
diff --git a/InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - cthulhus asshole (bad breakfast remix).milk b/InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - cthulhus asshole (bad breakfast remix).milk
new file mode 100644
index 00000000..97388354
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - cthulhus asshole (bad breakfast remix).milk
@@ -0,0 +1,236 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.210000
+fDecay=0.955000
+fVideoEchoZoom=0.996628
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=1.285751
+fWaveSmoothing=0.630000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.691361
+fWarpScale=58.384487
+fZoomExponent=10.591505
+fShader=1.000000
+zoom=0.979819
+rot=1.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.100000
+warp=34.955837
+sx=1.220179
+sy=0.999988
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.005000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.300000
+ib_size=0.005000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.200000
+nMotionVectorsX=21.473322
+nMotionVectorsY=15.907337
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=1
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=1
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=3
+shapecode_0_additive=1
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.542788
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=0.311603
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=0.600000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=ang=time;
+shape_0_per_frame2=
+shape_0_per_frame3=r2=abs(sin(time));
+shape_0_per_frame4=g2=abs(cos(time*.33));
+shape_0_per_frame5=b2=treb_att*.65;
+shape_0_per_frame6=
+shape_0_per_frame7=rad=rad+(bass_att*.1);
+shape_0_per_frame8=
+shape_0_per_frame9=sides=3+int(treb_att*3);
+shape_0_per_frame10=tex_zoom=tex_zoom+(sin(time)*treb*above(treb,1));
+shapecode_1_enabled=0
+shapecode_1_sides=5
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.808142
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=0.905271
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=r=abs(sin(time*.1));
+shape_1_per_frame2=g=abs(sin(time*.25));
+shape_1_per_frame3=
+shape_1_per_frame4=b2=abs(sin(time*.3));
+shape_1_per_frame5=
+shape_1_per_frame6=ang=time;
+shape_1_per_frame7=x=rand(100)*.01;
+shape_1_per_frame8=y=rand(100)*.01;
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=cx=.5+(sin(time)*.2);
+per_frame_2=cy=.5+(sin(time*.3)*.2);
+per_frame_3=
+per_frame_4=ob_b=abs(sin(time*.2));
+per_frame_5=ob_r=abs(sin(time*.1));
+per_frame_6=
+per_frame_7=ib_g=abs(sin(time*.05));
+per_frame_8=
+per_frame_9=rot=sin(time*.05);
+per_pixel_1=rot=rot+(1-rad)*sin(time)*.5;
+per_pixel_2=
diff --git a/InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - cthulhus asshole.milk b/InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - cthulhus asshole.milk
new file mode 100644
index 00000000..16973576
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - cthulhus asshole.milk
@@ -0,0 +1,285 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.210000
+fDecay=0.945000
+fVideoEchoZoom=1.100897
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=1.285751
+fWaveSmoothing=0.630000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=10.141068
+fShader=1.000000
+zoom=0.979819
+rot=1.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.100000
+warp=1.599181
+sx=1.220179
+sy=0.999991
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.100000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.210000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=21.473322
+nMotionVectorsY=15.907337
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=1
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_per_point1=branch=rand(2);
+wave_0_per_point2=
+wave_0_per_point3=//base
+wave_0_per_point4=wx=if(equal(sc,0),.5,wx);
+wave_0_per_point5=wy=if(equal(sc,0),.1,wy);
+wave_0_per_point6=
+wave_0_per_point7=wx=if(equal(sc,1),.5,wx);
+wave_0_per_point8=wy=if(equal(sc,1),.4,wy);
+wave_0_per_point9=
+wave_0_per_point10=//calculate previous branch length
+wave_0_per_point11=d=if(below(sc,2),.3,.7*d);
+wave_0_per_point12=
+wave_0_per_point13=//angle
+wave_0_per_point14=wainc=if(equal(branch,1),.2+(tren*.1),-.2-(treb*.1));
+wave_0_per_point15=
+wave_0_per_point16=wa=if(below(sc,2),3.1415927*.5,wa+wainc);
+wave_0_per_point17=
+wave_0_per_point18=//branches
+wave_0_per_point19=wx=if(above(sc,2),wx+cos(wa)*d,wx);
+wave_0_per_point20=wy=if(above(sc,2),wy+sin(wa)*d,wy);
+wave_0_per_point21=
+wave_0_per_point22=//sample count
+wave_0_per_point23=sc=if(equal(sc,11),0,sc+1);
+wave_0_per_point24=
+wave_0_per_point25=a=if(below(sc,2),0,.1);
+wave_0_per_point26=
+wave_0_per_point27=r=abs(sin(time*.5));
+wave_0_per_point28=g=abs(sin(time*.25));
+wave_0_per_point29=b=treb_att*.65;
+wave_0_per_point30=
+wave_0_per_point31=x=wx;
+wave_0_per_point32=y=wy;
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=1
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+wave_1_per_point1=branch=rand(2);
+wave_1_per_point2=
+wave_1_per_point3=//base
+wave_1_per_point4=wx=if(equal(sc,0),.5,wx);
+wave_1_per_point5=wy=if(equal(sc,0),.1,wy);
+wave_1_per_point6=
+wave_1_per_point7=wx=if(equal(sc,1),.5,wx);
+wave_1_per_point8=wy=if(equal(sc,1),.4,wy);
+wave_1_per_point9=
+wave_1_per_point10=//calculate previous branch length
+wave_1_per_point11=d=if(below(sc,2),.3,.7*d);
+wave_1_per_point12=
+wave_1_per_point13=//angle
+wave_1_per_point14=wainc=if(equal(branch,1),.2,-.2);
+wave_1_per_point15=
+wave_1_per_point16=wa=if(below(sc,2),3.1415927*.5,wa+wainc);
+wave_1_per_point17=
+wave_1_per_point18=//branches
+wave_1_per_point19=wx=if(above(sc,2),wx+cos(wa)*d,wx);
+wave_1_per_point20=wy=if(above(sc,2),wy+sin(wa)*d,wy);
+wave_1_per_point21=
+wave_1_per_point22=//sample count
+wave_1_per_point23=sc=if(equal(sc,11),0,sc+1);
+wave_1_per_point24=
+wave_1_per_point25=a=if(below(sc,2),0,.1);
+wave_1_per_point26=
+wave_1_per_point27=x=wx;
+wave_1_per_point28=y=wy;
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=3
+shapecode_0_additive=1
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.542788
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=0.311603
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=ang=time;
+shape_0_per_frame2=
+shape_0_per_frame3=r2=abs(sin(time));
+shape_0_per_frame4=g2=abs(cos(time));
+shape_0_per_frame5=b2=treb_att*.65;
+shape_0_per_frame6=
+shape_0_per_frame7=rad=rad+(bass_att*.1);
+shapecode_1_enabled=0
+shapecode_1_sides=100
+shapecode_1_additive=1
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=1.621745
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=0.248315
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=0.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=0.050000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shape_1_per_frame1=r=abs(sin(time*.1));
+shape_1_per_frame2=g=abs(sin(time*.25));
+shape_1_per_frame3=
+shape_1_per_frame4=b2=abs(sin(time*.3));
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=sx=sx+bass_att*.04;
+per_frame_2=sy=sy+treb_att*.04;
+per_frame_3=
+per_frame_4=cx=.5+(sin(time)*.2);
+per_frame_5=cy=.5+(sin(time*.3)*.1);
+per_pixel_1=rot=rot+(1-rad)*sin(time)*.5;
+per_pixel_2=
diff --git a/InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - plasma temptation.milk b/InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - plasma temptation.milk
new file mode 100644
index 00000000..4d48c502
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - plasma temptation.milk
@@ -0,0 +1,224 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.950000
+fVideoEchoZoom=1.447720
+fVideoEchoAlpha=0.800000
+nVideoEchoOrientation=0
+nWaveMode=5
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.010000
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=2.000000
+fModWaveAlphaEnd=2.000000
+fWarpAnimSpeed=3.300369
+fWarpScale=2.670993
+fZoomExponent=100.000000
+fShader=1.000000
+zoom=0.819143
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=36.971127
+sx=3.544923
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.500000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=64.000000
+nMotionVectorsY=20.160004
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.400000
+mv_r=1.000000
+mv_g=0.400000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+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.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_per_point1=x=rand(1);
+wave_0_per_point2=y=rand(1);
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=100
+shapecode_0_additive=1
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.100000
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=0.900000
+shapecode_0_g=0.700000
+shapecode_0_b=0.900000
+shapecode_0_a=0.700000
+shapecode_0_r2=1.000000
+shapecode_0_g2=0.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=x=(sin(time)+1)*.5;
+shape_0_per_frame2=y=(bass_att*.5)+(sin(time*.5)*.2);
+shape_0_per_frame3=
+shape_0_per_frame4=ang=time;
+shape_0_per_frame5=rad=bass*.5;
+shapecode_1_enabled=1
+shapecode_1_sides=100
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.808139
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.220183
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=0.500000
+shapecode_1_r2=0.900000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.800000
+shapecode_1_a2=0.500000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shapecode_2_enabled=1
+shapecode_2_sides=100
+shapecode_2_additive=1
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.731599
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=5.026548
+shapecode_2_tex_zoom=0.248318
+shapecode_2_r=0.800000
+shapecode_2_g=0.300000
+shapecode_2_b=0.800000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.100000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=rad=bass*.9;
+shape_2_per_frame2=ang=time;
+shapecode_3_enabled=1
+shapecode_3_sides=100
+shapecode_3_additive=1
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.200000
+shapecode_3_b=0.300000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=0.000000
+shapecode_3_b2=0.100000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=0.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+shape_3_per_frame1=x=(cos((time+.233)*.2)+1)*.5;
+shape_3_per_frame2=y=(sin(time*.1)+1)*.5+(sin(time*.13)*.5);
+shape_3_per_frame3=
+shape_3_per_frame4=rad=treb*.2;
+per_pixel_1=direc=if(above(treb,1.3),direc*-1,direc);
+per_pixel_2=
+per_pixel_3=zoom=zoom+sin(x*treb*mid*.1)*direc*-1;
+per_pixel_4=rot=rot+(cos(y*bass)*x)*direc;
diff --git a/InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - quark matrix.milk b/InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - quark matrix.milk
new file mode 100644
index 00000000..a8fc6090
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/fiShbRaiN - quark matrix.milk
@@ -0,0 +1,270 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.500000
+fVideoEchoZoom=0.996630
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=3
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=1
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.644006
+fWaveScale=0.389575
+fWaveSmoothing=0.630000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.850000
+fModWaveAlphaEnd=1.900000
+fWarpAnimSpeed=1.000000
+fWarpScale=5.053414
+fZoomExponent=1.000000
+fShader=1.000000
+zoom=0.999514
+rot=-0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=-0.000000
+warp=11.202050
+sx=100.000000
+sy=0.972365
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.500000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=6.399996
+nMotionVectorsY=14.400005
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.500000
+mv_r=1.000000
+mv_g=0.100000
+mv_b=0.300000
+mv_a=0.000000
+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=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_per_point1=ma=ma+(above(bass,1)*3.1415*.01*bass);
+wave_0_per_point2=ma=ma-(above(treb,1)*3.1415*.01*treb);
+wave_0_per_point3=ma=ma-.002;
+wave_0_per_point4=
+wave_0_per_point5=mx=mx+(.0002*tan(ma));
+wave_0_per_point6=my=my+(.0002*sin(ma));
+wave_0_per_point7=
+wave_0_per_point8=mx=if(above(mx,.9),(.9-mx),mx);
+wave_0_per_point9=my=if(above(my,.9),(.9-my),my);
+wave_0_per_point10=mx=if(below(mx,.1),(.9+mx),mx);
+wave_0_per_point11=my=if(below(my,.1),(.9+my),my);
+wave_0_per_point12=
+wave_0_per_point13=x=mx;
+wave_0_per_point14=y=my;
+wavecode_1_enabled=1
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=1
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+wave_1_per_point1=ma=ma+(above(bass,1)*3.1415*.05*bass);
+wave_1_per_point2=ma=ma-(above(mid,1)*3.1415*.05*mid);
+wave_1_per_point3=ma=ma-.001;
+wave_1_per_point4=
+wave_1_per_point5=mx=mx+(.0001*cos(ma));
+wave_1_per_point6=my=my+(.0001*tan(ma));
+wave_1_per_point7=
+wave_1_per_point8=mx=if(above(mx,.9),(.9-mx),mx);
+wave_1_per_point9=my=if(above(my,.9),(.9-my),my);
+wave_1_per_point10=mx=if(below(mx,.1),(.9+mx),mx);
+wave_1_per_point11=my=if(below(my,.1),(.9+my),my);
+wave_1_per_point12=
+wave_1_per_point13=x=mx;
+wave_1_per_point14=y=my;
+wavecode_2_enabled=1
+wavecode_2_samples=512
+wavecode_2_sep=0
+wavecode_2_bSpectrum=0
+wavecode_2_bUseDots=0
+wavecode_2_bDrawThick=1
+wavecode_2_bAdditive=0
+wavecode_2_scaling=1.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wave_2_per_point1=ma=ma+(above(mid,1)*3.1415*.01*mid);
+wave_2_per_point2=ma=ma-(above(treb,1)*3.1415*.01*treb);
+wave_2_per_point3=ma=ma+.001;
+wave_2_per_point4=
+wave_2_per_point5=mx=mx+(.0004*cos(ma));
+wave_2_per_point6=my=my+(.0004*tan(ma));
+wave_2_per_point7=
+wave_2_per_point8=mx=if(above(mx,.9),(.9-mx),mx);
+wave_2_per_point9=my=if(above(my,.9),(.9-my),my);
+wave_2_per_point10=mx=if(below(mx,.1),(.9+mx),mx);
+wave_2_per_point11=my=if(below(my,.1),(.9+my),my);
+wave_2_per_point12=
+wave_2_per_point13=x=mx;
+wave_2_per_point14=y=my;
+wavecode_3_enabled=1
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=1
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+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=ma=ma+.001;
+wave_3_per_point4=
+wave_3_per_point5=mx=mx+(.0004*tan(ma));
+wave_3_per_point6=my=my+(.0004*sin(ma));
+wave_3_per_point7=
+wave_3_per_point8=mx=if(above(mx,.9),(.9-mx),mx);
+wave_3_per_point9=my=if(above(my,.9),(.9-my),my);
+wave_3_per_point10=mx=if(below(mx,.1),(.9+mx),mx);
+wave_3_per_point11=my=if(below(my,.1),(.9+my),my);
+wave_3_per_point12=
+wave_3_per_point13=x=mx;
+wave_3_per_point14=y=my;
+shapecode_0_enabled=1
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=1.791418
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.628319
+shapecode_0_tex_zoom=0.369711
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=0.500000
+shapecode_0_r2=0.000000
+shapecode_0_g2=0.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=r=treb;
+shape_0_per_frame2=tex_zoom=treb;
+shape_0_per_frame3=tex_ang=bass*10;
+shapecode_1_enabled=1
+shapecode_1_sides=100
+shapecode_1_additive=1
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=1.256637
+shapecode_1_tex_zoom=0.999996
+shapecode_1_r=0.300000
+shapecode_1_g=0.000000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=rad=mid;
+shapecode_2_enabled=0
+shapecode_2_sides=100
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.808142
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=1.256637
+shapecode_2_tex_zoom=1.220186
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=0.300000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.900000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=tex_zoom=1+(treb*.1);
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=echo_orient=(bass+treb+mid*10%4);
+per_pixel_1=zoom=zoom+((rand(2)*rand(10)*rad*bass*.05)*rad);
diff --git a/InstallerDependencies/Visuals/projectM/presets/nil - Can't Stop the Blithering.milk b/InstallerDependencies/Visuals/projectM/presets/nil - Can't Stop the Blithering.milk
new file mode 100644
index 00000000..26254057
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/nil - Can't Stop the Blithering.milk
@@ -0,0 +1,71 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=0.992000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=4
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=1.096512
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.000000
+fModWaveAlphaEnd=0.780000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=0.473261
+fShader=0.000000
+zoom=0.869963
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.002000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=1.000000
+wave_b=1.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.500000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=1.024000
+nMotionVectorsY=1.008003
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=0.600000
+mv_b=0.000000
+mv_a=0.000000
+per_frame_1=q1=zoom;
+per_frame_2=wave_mystery=sin(3.654*time)*sin(2.765*time);
+per_frame_3=wave_b=sin(bass);
+per_frame_4=wave_r=sin(treb);
+per_frame_5=wave_g=sin(mid);
+per_frame_6=zoom=(bass+q1)/2.2;
+per_frame_7=rot=sin(time*sin(q1))*.1;
+per_pixel_1=zoom=zoom+abs(sin(ang)*.2);
diff --git a/InstallerDependencies/Visuals/projectM/presets/nil - Can't Stop the Cramming.milk b/InstallerDependencies/Visuals/projectM/presets/nil - Can't Stop the Cramming.milk
new file mode 100644
index 00000000..d08c2838
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/nil - Can't Stop the Cramming.milk
@@ -0,0 +1,70 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=0.992000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=4
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=1.096512
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.000000
+fModWaveAlphaEnd=0.780000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=0.473261
+fShader=0.000000
+zoom=0.869963
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.002000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=1.000000
+wave_b=1.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.500000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=1.024000
+nMotionVectorsY=1.008003
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=0.600000
+mv_b=0.000000
+mv_a=0.000000
+per_frame_1=q1=zoom;
+per_frame_2=wave_mystery=sin(3.654*time)*sin(2.765*time);
+per_frame_3=wave_r=sin(bass);
+per_frame_4=wave_g=sin(treb);
+per_frame_5=wave_b=sin(mid);
+per_frame_6=zoom=(bass+q1)/2.2;
+per_pixel_1=zoom=zoom+abs(sin(ang)*.2);
diff --git a/InstallerDependencies/Visuals/projectM/presets/nil - Cid and Lucy.milk b/InstallerDependencies/Visuals/projectM/presets/nil - Cid and Lucy.milk
new file mode 100644
index 00000000..2f6997cb
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/nil - Cid and Lucy.milk
@@ -0,0 +1,68 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=1.022740
+fWaveSmoothing=0.630000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=3.072695
+fShader=0.000000
+zoom=0.999837
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.500000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=12.023998
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+per_frame_1=wave_r=sin(time*bass_att*sin(time*1.543));
+per_frame_2=wave_g=sin(time*1.6432*mid_att*sin(time*1.721));
+per_frame_3=wave_b=sin(time*1.37563*treb_att*sin(time*1.666));
+per_pixel_1=rot=abs(sin(ang*cos(time)*sin(time*1.8232)*.09));
+per_pixel_2=zoom=zoom+sin(rad*sin(time)*sin(time*1.562543)*.3)+.1;
diff --git a/InstallerDependencies/Visuals/projectM/presets/phat_CloseIncouneters.milk b/InstallerDependencies/Visuals/projectM/presets/phat_CloseIncouneters.milk
new file mode 100644
index 00000000..bcad13bc
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/phat_CloseIncouneters.milk
@@ -0,0 +1,270 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.210000
+fDecay=0.500000
+fVideoEchoZoom=1.001828
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=3
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=1
+bDarken=1
+bSolarize=1
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.625316
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.880000
+fModWaveAlphaEnd=1.980000
+fWarpAnimSpeed=0.010284
+fWarpScale=0.010000
+fZoomExponent=0.010000
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=0.988286
+sy=0.953205
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.800000
+ob_b=0.700000
+ob_a=0.000000
+ib_size=0.000000
+ib_r=1.000000
+ib_g=0.000000
+ib_b=0.300000
+ib_a=1.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=0.000000
+mv_g=0.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=256
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=1
+wavecode_0_bAdditive=1
+wavecode_0_scaling=100.000000
+wavecode_0_smoothing=0.900000
+wavecode_0_r=0.000000
+wavecode_0_g=0.700000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_per_point1=x=cos(time)*0.1;
+wave_0_per_point2=y=sin(time)*0.1
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=81.954445
+wavecode_1_smoothing=1.000000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+wave_1_per_frame1=wave_x=1;
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=16
+shapecode_0_additive=0
+shapecode_0_thickOutline=1
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.738907
+shapecode_0_ang=3.141592
+shapecode_0_tex_ang=0.188496
+shapecode_0_tex_zoom=0.931011
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=0.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=ang=sin(time)*6;
+shape_0_per_frame2=var=0.12-(above(bass,0.8)*0.2);
+shape_0_per_frame3=
+shape_0_per_frame4=//x=sin(time/3)/10;
+shape_0_per_frame5=//y=cos(time/3)/10;
+shape_0_per_frame6=g=sin(time/10)*0.1;
+shape_0_per_frame7=r=cos(time/12)*0.2;
+shape_0_per_frame8=b=sin(time/15)*0.3;
+shape_0_per_frame9=g2=cos(time/15)*0.3;
+shape_0_per_frame10=r2=sin(time/20)*0.1;
+shape_0_per_frame11=b2=cos(time/10)*0.2;
+shapecode_1_enabled=1
+shapecode_1_sides=4
+shapecode_1_additive=1
+shapecode_1_thickOutline=1
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.414899
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.628318
+shapecode_1_tex_zoom=5.582129
+shapecode_1_r=0.360000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=0.200000
+shapecode_1_b2=0.600000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=0.000000
+shapecode_1_border_g=0.000000
+shapecode_1_border_b=0.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=ang=cos(time)*6;
+shape_1_per_frame2=sides=20-((bass+mid+treb)/3)*15;
+shape_1_per_frame3=x=cos(time/2)*0.3+0.5;
+shape_1_per_frame4=y=sin(time/2)*0.3+0.5;
+shape_1_per_frame5=r=sin(time/5)*0.8;
+shape_1_per_frame6=g=sin(time/5)*0.879;
+shape_1_per_frame7=b=cos(time/5)*.567;
+shape_1_per_frame8=r2=sin(time/5)*0.8;
+shape_1_per_frame9=g2=cos(time/5)*0.879;
+shape_1_per_frame10=b2=cos(time/5)*567;
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=1
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=1.203211
+shapecode_2_ang=5.026548
+shapecode_2_tex_ang=0.628319
+shapecode_2_tex_zoom=0.189467
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_init_1=mv_x=64;mv_y=48;
+per_frame_init_2=nut=0;
+per_frame_init_3=stp=0;stq=0;
+per_frame_init_4=rtp=0;rtq=0;
+per_frame_init_5=wvr=0;
+per_frame_init_6=decay=0;
+per_frame_init_7=dcsp=0
+per_frame_init_8=
+per_frame_1=decay=0.97;
+per_frame_2=zoom=-.999;
+per_frame_3=rot=sin(time/10)*0.3;
+per_frame_4=ib_b=((sin(time/10))+0.5*0.5)+0.3;
+per_frame_5=ib_g=((cos(time/7)*0.3)+0.5*0.5)+0.3;
+per_frame_6=ib_r=((sin(time/8)*0.3)+0.5*0.5)+0.3;
+per_frame_7=ob_b=(sin((time/8)+0.9)+0.5*0.5)+0.5;
+per_frame_8=ob_g=sin((time/10)+0.1);
+per_frame_9=ob_r=(cos(time/7))+0.3;
+per_frame_10=
+per_pixel_1=xtc=sin(time/10);
+per_pixel_2=
+per_pixel_3=speed=40-above(bass,0.9)*15;
+per_pixel_4=speed=speed+xtc;
+per_pixel_5=
+per_pixel_6=
+per_pixel_7=acid=x*sin(time/10);
+per_pixel_8=morphine=y*cos(time/10);
+per_pixel_9=
+per_pixel_10=dmt=above((treb*treb*treb/3),2.5)*.01;
+per_pixel_11=saliva=above(treb,0.9)*.01;
+per_pixel_12=
+per_pixel_13=cx=dmt*(rad)*0.1;
+per_pixel_14=cy=saliva*(rad)*0.1;
+per_pixel_15=
+per_pixel_16=dx=sin(y*speed)*0.01;
+per_pixel_17=dy=cos(x*speed)*0.01;
+per_pixel_18=
+per_pixel_19=zoom=cos(x*(sin(time/10)*0.1))+(y*(cos(time/10)*0.1));
+per_pixel_20=
+per_pixel_21=warp=-2*(((sin(time/2)*0.5+0.5)*3)*x)+(((cos(time/2)*0.5+0.5)*3)*y)
diff --git a/InstallerDependencies/Visuals/projectM/presets/phat_CloseIncounetersV2.milk b/InstallerDependencies/Visuals/projectM/presets/phat_CloseIncounetersV2.milk
new file mode 100644
index 00000000..fc2aa28d
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/phat_CloseIncounetersV2.milk
@@ -0,0 +1,270 @@
+[preset00]
+fRating=5.000000
+fGammaAdj=1.210000
+fDecay=0.500000
+fVideoEchoZoom=1.001828
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=3
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=1
+bDarken=1
+bSolarize=1
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.625316
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.880000
+fModWaveAlphaEnd=1.980000
+fWarpAnimSpeed=0.010284
+fWarpScale=0.010000
+fZoomExponent=0.010000
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=0.988286
+sy=0.953205
+wave_r=0.000000
+wave_g=0.000000
+wave_b=0.000000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.000000
+ob_g=0.800000
+ob_b=0.700000
+ob_a=0.000000
+ib_size=0.000000
+ib_r=1.000000
+ib_g=0.000000
+ib_b=0.300000
+ib_a=1.000000
+nMotionVectorsX=0.000000
+nMotionVectorsY=0.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=0.000000
+mv_g=0.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=256
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=1
+wavecode_0_bAdditive=1
+wavecode_0_scaling=100.000000
+wavecode_0_smoothing=0.900000
+wavecode_0_r=0.000000
+wavecode_0_g=0.700000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_per_point1=x=cos(time)*0.1;
+wave_0_per_point2=y=sin(time)*0.1
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=81.954445
+wavecode_1_smoothing=1.000000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+wave_1_per_frame1=wave_x=1;
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=16
+shapecode_0_additive=0
+shapecode_0_thickOutline=1
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.738907
+shapecode_0_ang=3.141592
+shapecode_0_tex_ang=0.188496
+shapecode_0_tex_zoom=0.931011
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=0.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=ang=sin(time)*6;
+shape_0_per_frame2=var=0.12-(above(bass,0.8)*0.2);
+shape_0_per_frame3=
+shape_0_per_frame4=//x=sin(time/3)/10;
+shape_0_per_frame5=//y=cos(time/3)/10;
+shape_0_per_frame6=g=sin(time/10)*0.1;
+shape_0_per_frame7=r=cos(time/12)*0.2;
+shape_0_per_frame8=b=sin(time/15)*0.3;
+shape_0_per_frame9=g2=cos(time/15)*0.3;
+shape_0_per_frame10=r2=sin(time/20)*0.1;
+shape_0_per_frame11=b2=cos(time/10)*0.2;
+shapecode_1_enabled=1
+shapecode_1_sides=4
+shapecode_1_additive=1
+shapecode_1_thickOutline=1
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.414899
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.628318
+shapecode_1_tex_zoom=5.582129
+shapecode_1_r=0.360000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=0.200000
+shapecode_1_b2=0.600000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=0.000000
+shapecode_1_border_g=0.000000
+shapecode_1_border_b=0.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=ang=cos(time)*6;
+shape_1_per_frame2=sides=20-((bass+mid+treb)/3)*15;
+shape_1_per_frame3=x=cos(time/2)*0.3+0.5;
+shape_1_per_frame4=y=sin(time/2)*0.3+0.5;
+shape_1_per_frame5=r=sin(time/5)*0.8;
+shape_1_per_frame6=g=sin(time/5)*0.879;
+shape_1_per_frame7=b=cos(time/5)*.567;
+shape_1_per_frame8=r2=sin(time/5)*0.8;
+shape_1_per_frame9=g2=cos(time/5)*0.879;
+shape_1_per_frame10=b2=cos(time/5)*567;
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=1
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=1.203211
+shapecode_2_ang=5.026548
+shapecode_2_tex_ang=0.628319
+shapecode_2_tex_zoom=0.189467
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_init_1=mv_x=64;mv_y=48;
+per_frame_init_2=nut=0;
+per_frame_init_3=stp=0;stq=0;
+per_frame_init_4=rtp=0;rtq=0;
+per_frame_init_5=wvr=0;
+per_frame_init_6=decay=0;
+per_frame_init_7=dcsp=0
+per_frame_init_8=
+per_frame_1=decay=0.98;
+per_frame_2=zoom=-.999;
+per_frame_3=//rot=sin(time/10)*0.3;
+per_frame_4=ib_b=((sin(time/10))+0.5*0.5)+0.3;
+per_frame_5=ib_g=((cos(time/7)*0.3)+0.5*0.5)+0.3;
+per_frame_6=ib_r=((sin(time/8)*0.3)+0.5*0.5)+0.3;
+per_frame_7=ob_b=(sin((time/8)+0.9)+0.5*0.5)+0.5;
+per_frame_8=ob_g=sin((time/10)+0.1);
+per_frame_9=ob_r=(cos(time/7))+0.3;
+per_frame_10=
+per_pixel_1=xtc=sin(time);
+per_pixel_2=
+per_pixel_3=speed=40-above(bass,0.9)*15;
+per_pixel_4=speed=speed+xtc;
+per_pixel_5=
+per_pixel_6=
+per_pixel_7=acid=x*sin(time/10);
+per_pixel_8=morphine=y*cos(time/10);
+per_pixel_9=
+per_pixel_10=dmt=above((treb*treb*treb/3),2.5)*.01;
+per_pixel_11=saliva=above(treb,0.9)*.01;
+per_pixel_12=
+per_pixel_13=cx=dmt*(rad)*0.1;
+per_pixel_14=cy=saliva*(rad)*0.1;
+per_pixel_15=
+per_pixel_16=dx=sin(y*speed)*0.01;
+per_pixel_17=dy=cos(x*speed)*0.01;
+per_pixel_18=
+per_pixel_19=zoom=cos(x*(sin(time/10)*0.1))+(y*(cos(time/10)*0.1));
+per_pixel_20=
+per_pixel_21=warp=-5*(((sin(time/2)*0.5+0.5)*3)*x)+(((cos(time/2)*0.5+0.5)*3)*y)
diff --git a/InstallerDependencies/Visuals/projectM/presets/shifter - feathers (angel wings)_phat_remix.milk b/InstallerDependencies/Visuals/projectM/presets/shifter - feathers (angel wings)_phat_remix.milk
new file mode 100644
index 00000000..b6616e8c
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/shifter - feathers (angel wings)_phat_remix.milk
@@ -0,0 +1,341 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.350000
+fDecay=0.950000
+fVideoEchoZoom=0.999608
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=7
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=1
+bSolarize=0
+bInvert=1
+fWaveAlpha=4.099998
+fWaveScale=1.285751
+fWaveSmoothing=0.630000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999514
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.500000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=1
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=1
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=1
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_per_point1=sp = sample*6.28*8*8*4;
+wave_0_per_point2=vol = (bass_att + mid_att + treb_att)*0.33;
+wave_0_per_point3=vol = 0.2 + 0.5*(value1 + value2);
+wave_0_per_point4=vol = .2;
+wave_0_per_point5=
+wave_0_per_point6=mod = if(below(mid_att,1.8),mid_att+.2,2);
+wave_0_per_point7=
+wave_0_per_point8=ox = 0.5*sin(sp)*sin(sample*3.14)*vol;
+wave_0_per_point9=oy = (sample - 0)*mod;
+wave_0_per_point10=oz = 0.5*cos(sp)*sin(sample*3.14)*vol;
+wave_0_per_point11=
+wave_0_per_point12=xang = time*0.672;
+wave_0_per_point13=axang = 0;
+wave_0_per_point14=yang = time*-1.351;
+wave_0_per_point15=ayang = 0;
+wave_0_per_point16=zang = time*-0.401;
+wave_0_per_point17=azang = 0;
+wave_0_per_point18=fov = 0.6 + 0.2*sin(time);
+wave_0_per_point19=fov = .5;
+wave_0_per_point20=
+wave_0_per_point21=mx = ox*cos(zang) - oy*sin(zang);
+wave_0_per_point22=my = ox*sin(zang) + oy*cos(zang);
+wave_0_per_point23=ox = mx;
+wave_0_per_point24=oy = my;
+wave_0_per_point25=mx = ox*cos(yang) + oz*sin(yang);
+wave_0_per_point26=mz = - ox*sin(yang) + oz*cos(yang);
+wave_0_per_point27=ox = mx;
+wave_0_per_point28=oz = mz;
+wave_0_per_point29=my = oy*cos(xang) - oz*sin(xang);
+wave_0_per_point30=mz = oy*sin(xang) + oz*cos(xang);
+wave_0_per_point31=oy = my;
+wave_0_per_point32=oz = mz;
+wave_0_per_point33=
+wave_0_per_point34=oz = abs(oz) - 2;
+wave_0_per_point35=x = ox*fov/oz + 0.5;
+wave_0_per_point36=x = (x-.5)*0.75 + 0.5;
+wave_0_per_point37=y = oy*fov/oz + 0.5;
+wave_0_per_point38=
+wave_0_per_point39=r = 1 + sin(sp);
+wave_0_per_point40=b = 0.5 + 0.5*sin(sample*1.57);
+wave_0_per_point41=g = 0.5 + 0.5*cos(sample*1.57);
+wave_0_per_point42=a = 0.5 + (oz + 2)*0.25;
+wavecode_1_enabled=1
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=1
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=1
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+wave_1_per_point1=sp = sample*6.28*8*8*4;
+wave_1_per_point2=vol = (bass_att + mid_att + treb_att)*0.33;
+wave_1_per_point3=vol = 0.2 + 0.5*(value1 + value2);
+wave_1_per_point4=vol = .2;
+wave_1_per_point5=
+wave_1_per_point6=mod = if(below(bass_att,1.8),bass_att+.2,2);
+wave_1_per_point7=
+wave_1_per_point8=ox = 0.5*sin(sp)*sin(sample*3.14)*vol;
+wave_1_per_point9=oy = (sample - 0)*mod;
+wave_1_per_point10=oz = 0.5*cos(sp)*sin(sample*3.14)*vol;
+wave_1_per_point11=
+wave_1_per_point12=xang = time*-0.321;
+wave_1_per_point13=axang = 0;
+wave_1_per_point14=yang = time*1.531;
+wave_1_per_point15=ayang = 0;
+wave_1_per_point16=zang = time*-0.101;
+wave_1_per_point17=azang = 0;
+wave_1_per_point18=fov = 0.6 + 0.2*sin(time);
+wave_1_per_point19=fov = .5;
+wave_1_per_point20=
+wave_1_per_point21=mx = ox*cos(zang) - oy*sin(zang);
+wave_1_per_point22=my = ox*sin(zang) + oy*cos(zang);
+wave_1_per_point23=ox = mx;
+wave_1_per_point24=oy = my;
+wave_1_per_point25=mx = ox*cos(yang) + oz*sin(yang);
+wave_1_per_point26=mz = - ox*sin(yang) + oz*cos(yang);
+wave_1_per_point27=ox = mx;
+wave_1_per_point28=oz = mz;
+wave_1_per_point29=my = oy*cos(xang) - oz*sin(xang);
+wave_1_per_point30=mz = oy*sin(xang) + oz*cos(xang);
+wave_1_per_point31=oy = my;
+wave_1_per_point32=oz = mz;
+wave_1_per_point33=
+wave_1_per_point34=oz = abs(oz) - 2;
+wave_1_per_point35=x = ox*fov/oz + 0.5;
+wave_1_per_point36=x = (x-.5)*0.75 + 0.5;
+wave_1_per_point37=y = oy*fov/oz + 0.5;
+wave_1_per_point38=
+wave_1_per_point39=g = 1 + sin(sp);
+wave_1_per_point40=r = 0.5 + 0.5*sin(sample*1.57);
+wave_1_per_point41=b = 0.5 + 0.5*cos(sample*1.57);
+wave_1_per_point42=a = 0.5 + (oz + 2)*0.25;
+wavecode_2_enabled=1
+wavecode_2_samples=512
+wavecode_2_sep=0
+wavecode_2_bSpectrum=1
+wavecode_2_bUseDots=0
+wavecode_2_bDrawThick=1
+wavecode_2_bAdditive=0
+wavecode_2_scaling=1.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wave_2_per_point1=sp = sample*6.28*8*8*4;
+wave_2_per_point2=vol = (bass_att + mid_att + treb_att)*0.33;
+wave_2_per_point3=vol = 0.2 + 0.5*(value1 + value2);
+wave_2_per_point4=vol = .2;
+wave_2_per_point5=
+wave_2_per_point6=mod = if(below(treb_att,1.8),treb_att+.2,2);
+wave_2_per_point7=
+wave_2_per_point8=ox = 0.5*sin(sp)*sin(sample*3.14)*vol;
+wave_2_per_point9=oy = (sample - 0)*mod;
+wave_2_per_point10=oz = 0.5*cos(sp)*sin(sample*3.14)*vol;
+wave_2_per_point11=
+wave_2_per_point12=xang = time*0.221;
+wave_2_per_point13=axang = 0;
+wave_2_per_point14=yang = time*-0.411;
+wave_2_per_point15=ayang = 0;
+wave_2_per_point16=zang = time*1.201;
+wave_2_per_point17=azang = 0;
+wave_2_per_point18=fov = 0.6 + 0.2*sin(time);
+wave_2_per_point19=fov = .5;
+wave_2_per_point20=
+wave_2_per_point21=mx = ox*cos(zang) - oy*sin(zang);
+wave_2_per_point22=my = ox*sin(zang) + oy*cos(zang);
+wave_2_per_point23=ox = mx;
+wave_2_per_point24=oy = my;
+wave_2_per_point25=mx = ox*cos(yang) + oz*sin(yang);
+wave_2_per_point26=mz = - ox*sin(yang) + oz*cos(yang);
+wave_2_per_point27=ox = mx;
+wave_2_per_point28=oz = mz;
+wave_2_per_point29=my = oy*cos(xang) - oz*sin(xang);
+wave_2_per_point30=mz = oy*sin(xang) + oz*cos(xang);
+wave_2_per_point31=oy = my;
+wave_2_per_point32=oz = mz;
+wave_2_per_point33=
+wave_2_per_point34=oz = abs(oz) - 2;
+wave_2_per_point35=x = ox*fov/oz + 0.5;
+wave_2_per_point36=x = (x-.5)*0.75 + 0.5;
+wave_2_per_point37=y = oy*fov/oz + 0.5;
+wave_2_per_point38=
+wave_2_per_point39=b = 1+sin(sp);
+wave_2_per_point40=g = 0.5 + 0.5*sin(sample*1.57);
+wave_2_per_point41=r = 0.5 + 0.5*cos(sample*1.57);
+wave_2_per_point42=a = 0.5 + (oz + 2)*0.25;
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=0
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.100000
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.100000
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=wave_a = 0;
+per_frame_2=decay=.995;
+per_pixel_1=it = 0.3*sin(time*0.2);
+per_pixel_2=radm = rad*0.5;
+per_pixel_3=rot = 0.02*sin((radm+it)*30)*rad;
+per_pixel_4=mod = sin(ang*5);
+per_pixel_5=mod = mod*mod*mod*mod*mod;
+per_pixel_6=zoom = 1 + abs(0.01*mod);
diff --git a/InstallerDependencies/Visuals/projectM/presets/shifter - flashburn.milk b/InstallerDependencies/Visuals/projectM/presets/shifter - flashburn.milk
new file mode 100644
index 00000000..38256fc6
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/shifter - flashburn.milk
@@ -0,0 +1,260 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.995000
+fVideoEchoZoom=0.999608
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=7
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.007768
+fWaveScale=1.285751
+fWaveSmoothing=0.630000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=0.055821
+fShader=0.000000
+zoom=0.970118
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000500
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=15
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.100000
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_init1=set = rand(20);
+shape_0_per_frame1=x = 0.5 + 0.5*(sin(time*1.4)*0.4 + 0.3*sin(time*1.9) + 0.3*sin(time*(1 + set*0.05)));
+shape_0_per_frame2=y = 0.5 + 0.5*(sin(time*1.2)*0.7 + 0.3*sin(time*1.6));
+shape_0_per_frame3=
+shape_0_per_frame4=r = 0.5 + 0.5*sin(time);
+shape_0_per_frame5=g = 0.5 + 0.5*sin(time + 2.094);
+shape_0_per_frame6=b = 0.5 + 0.5*sin(time + 4.188);
+shape_0_per_frame7=
+shape_0_per_frame8=r2 = 0.5 + 0.5*(sin(time*0.4)*0.8 + 0.2*sin(time*0.6));
+shape_0_per_frame9=g2 = 0.5 + 0.5*(sin(time*0.5)*0.5 + 0.5*sin(time*0.4));
+shape_0_per_frame10=b2 = 0.5 + 0.5*(sin(time*0.2)*0.6 + 0.4*sin(time*0.7));
+shape_0_per_frame11=
+shape_0_per_frame12=rad = rad*(bass_att+mid_att+treb_att)/3;
+shapecode_1_enabled=1
+shapecode_1_sides=15
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=x = 0.5 + 0.3*(sin(time*1.4)*0.4 + 0.6*sin(time*1.9));
+shape_1_per_frame2=y = 0.5 + 0.5*(sin(time*1.2)*0.7 + 0.3*sin(time*1.6));
+shape_1_per_frame3=
+shape_1_per_frame4=r = 0.5 + 0.5*sin(time);
+shape_1_per_frame5=g = 0.5 + 0.5*sin(time + 2.094);
+shape_1_per_frame6=b = 0.5 + 0.5*sin(time + 4.188);
+shape_1_per_frame7=
+shape_1_per_frame8=r2 = 0.5 + 0.5*(sin(time*0.4)*0.8 + 0.2*sin(time*0.6));
+shape_1_per_frame9=g2 = 0.5 + 0.5*(sin(time*0.5)*0.5 + 0.5*sin(time*0.4));
+shape_1_per_frame10=b2 = 0.5 + 0.5*(sin(time*0.2)*0.6 + 0.4*sin(time*0.7));
+shape_1_per_frame11=
+shape_1_per_frame12=rad = rad*(bass_att+mid_att+treb_att)/3;
+shapecode_2_enabled=1
+shapecode_2_sides=15
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=x = 0.5 + 0.5*(sin(time*1.4)*0.4 + 0.6*sin(time*1.9));
+shape_2_per_frame2=y = 0.5 + 0.3*(sin(time*1.2)*0.7 + 0.3*sin(time*1.6));
+shape_2_per_frame3=
+shape_2_per_frame4=r = 0.5 + 0.5*sin(time);
+shape_2_per_frame5=g = 0.5 + 0.5*sin(time + 2.094);
+shape_2_per_frame6=b = 0.5 + 0.5*sin(time + 4.188);
+shape_2_per_frame7=
+shape_2_per_frame8=r2 = 0.5 + 0.5*(sin(time*0.4)*0.8 + 0.2*sin(time*0.6));
+shape_2_per_frame9=g2 = 0.5 + 0.5*(sin(time*0.5)*0.5 + 0.5*sin(time*0.4));
+shape_2_per_frame10=b2 = 0.5 + 0.5*(sin(time*0.2)*0.6 + 0.4*sin(time*0.7));
+shape_2_per_frame11=
+shape_2_per_frame12=rad = rad*(bass_att+mid_att+treb_att)/3;
+shapecode_3_enabled=1
+shapecode_3_sides=15
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+shape_3_init1=set = rand(10);
+shape_3_per_frame1=x = 0.5 + 0.3*(sin(time*1.4)*0.4 + 0.6*sin(time*1.9));
+shape_3_per_frame2=y = 0.5 + 0.3*(sin(time*1.2)*0.3 + 0.3*sin(time*1.6) + 0.4*sin(time*(1 + set*0.1)));
+shape_3_per_frame3=
+shape_3_per_frame4=r = 0.6 + 0.4*(sin(time*0.3)*0.8 + 0.2*sin(time*0.5));
+shape_3_per_frame5=g = 0.6 + 0.4*(sin(time*0.3)*0.5 + 0.5*sin(time*0.4));
+shape_3_per_frame6=b = 0.6 + 0.4*(sin(time*0.6)*0.6 + 0.4*sin(time*0.1));
+shape_3_per_frame7=
+shape_3_per_frame8=r2 = 0.5 + 0.5*(sin(time*0.4)*0.8 + 0.2*sin(time*0.6));
+shape_3_per_frame9=g2 = 0.5 + 0.5*(sin(time*0.5)*0.5 + 0.5*sin(time*0.4));
+shape_3_per_frame10=b2 = 0.5 + 0.5*(sin(time*0.2)*0.6 + 0.4*sin(time*0.7));
+shape_3_per_frame11=
+shape_3_per_frame12=rad = rad*(bass_att+mid_att+treb_att)/3;
+per_frame_1=azoom = -.95;
+per_frame_2=decay = decay - .001;
+per_pixel_1=azoom = -0.95 + 0.4*(x-0.5) + 0.4*(y-0.5);
diff --git a/InstallerDependencies/Visuals/projectM/presets/shifter - pinwheel.milk b/InstallerDependencies/Visuals/projectM/presets/shifter - pinwheel.milk
new file mode 100644
index 00000000..7643a7ea
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/shifter - pinwheel.milk
@@ -0,0 +1,273 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.929500
+fVideoEchoZoom=0.999608
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=0
+nWaveMode=0
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=0.972361
+fWaveSmoothing=0.900000
+fWaveParam=0.094000
+fModWaveAlphaStart=1.000000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000158
+fWarpScale=0.241455
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999514
+rot=0.180000
+cx=0.500000
+cy=0.500000
+dx=0.004000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=1.000000
+wave_b=1.000000
+wave_x=1.000000
+wave_y=0.500000
+ob_size=0.030000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.050000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=40
+shapecode_0_additive=0
+shapecode_0_thickOutline=1
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.599571
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=1.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=0.000000
+shapecode_0_border_a=0.000000
+shape_0_init1=bob = 1.5;
+shape_0_init2=ro = 0;
+shape_0_init3=red = rand(20);
+shape_0_per_frame1=vol = 1 + 0.2*((bass_att+treb_att+mid_att)/3);
+shape_0_per_frame2=bob = bob*above(bob,0.01) - 0.01 + 1*(1 - above(bob,0.01));
+shape_0_per_frame3=bob = 0.4 + 0.4*sin(time*0.8);
+shape_0_per_frame4=bob = bob*vol;
+shape_0_per_frame5=rad = bob;
+shape_0_per_frame6=border_1 = 0.4;
+shape_0_per_frame7=sides = 30;
+shape_0_per_frame8=ro = ro + 0.02;
+shape_0_per_frame9=ang = ro;
+shape_0_per_frame10=rad = 0.6;
+shape_0_per_frame11=
+shape_0_per_frame12=sp = red*0.025;
+shape_0_per_frame13=spi = 0.5 - sp;
+shape_0_per_frame14=tm = time*0.1;
+shape_0_per_frame15=border_r = 0.5 + sp*sin(tm*0.6) + spi*cos(tm*1.46);
+shape_0_per_frame16=border_g = 0.5 + sp*sin(tm*1.294) + spi*cos(tm*0.87);
+shape_0_per_frame17=border_b = 0.5 + sp*sin(tm*1.418) + spi*cos(tm*0.76);
+shapecode_1_enabled=1
+shapecode_1_sides=40
+shapecode_1_additive=1
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=0.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=x = 0.5 + 0.5*(sin(time*1.1)*0.3 + 0.7*sin(time*0.5));
+shape_1_per_frame2=x = 0.5 + 0.225*sin(time);
+shape_1_per_frame3=y = 0.5 + 0.3*cos(time);
+shape_1_per_frame4=
+shape_1_per_frame5=rad = rad*mid_att;
+shape_1_per_frame6=r = 0.5 + 0.5*sin(frame*0.5);
+shape_1_per_frame7=b = 0.5 + 0.5*sin(frame*0.5 + 2.094);
+shape_1_per_frame8=g = 0.5 + 0.5*sin(frame*0.5 + 4.188);
+shape_1_per_frame9=
+shapecode_2_enabled=1
+shapecode_2_sides=40
+shapecode_2_additive=1
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=0.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=x = 0.5 + 0.5*(sin(time*1.1)*0.3 + 0.7*sin(time*0.5));
+shape_2_per_frame2=x = 0.5 + 0.225*sin(time + 2.09);
+shape_2_per_frame3=y = 0.5 + 0.3*cos(time + 2.09);
+shape_2_per_frame4=
+shape_2_per_frame5=rad = rad*bass_att;
+shape_2_per_frame6=r = 0.5 + 0.5*sin(frame*0.5);
+shape_2_per_frame7=b = 0.5 + 0.5*sin(frame*0.5 + 2.094);
+shape_2_per_frame8=g = 0.5 + 0.5*sin(frame*0.5 + 4.188);
+shape_2_per_frame9=
+shapecode_3_enabled=1
+shapecode_3_sides=40
+shapecode_3_additive=1
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=1.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=0.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+shape_3_per_frame1=x = 0.5 + 0.5*(sin(time*1.1)*0.3 + 0.7*sin(time*0.5));
+shape_3_per_frame2=x = 0.5 + 0.225*sin(time + 4.19);
+shape_3_per_frame3=y = 0.5 + 0.3*cos(time + 4.19);
+shape_3_per_frame4=
+shape_3_per_frame5=rad = rad*treb_att;
+shape_3_per_frame6=r = 0.5 + 0.5*sin(frame*0.5);
+shape_3_per_frame7=b = 0.5 + 0.5*sin(frame*0.5 + 2.094);
+shape_3_per_frame8=g = 0.5 + 0.5*sin(frame*0.5 + 4.188);
+shape_3_per_frame9=
+per_frame_init_1=red = rand(20);
+per_frame_1=dx = 0;
+per_frame_2=dy = 0;
+per_frame_3=wave_x = 0.5;
+per_frame_4=sx = 1.1;
+per_frame_5=
+per_frame_6=rot = 0.2;
+per_frame_7=
+per_frame_8=wave_a = 0;
+per_frame_9=
+per_frame_10=sp = red*0.025;
+per_frame_11=spi = 0.5 - sp;
+per_frame_12=
+per_frame_13=tm = time*0.1;
+per_frame_14=wave_r = 0.5 + sp*sin(tm*0.6) + spi*cos(tm*1.46);
+per_frame_15=wave_g = 0.5 + sp*sin(tm*1.294) + spi*cos(tm*0.87);
+per_frame_16=wave_b = 0.5 + sp*sin(tm*1.418) + spi*cos(tm*0.76);
+per_pixel_1=st = if(above(bass_att,1),(bass_att-1)*2 + 1,0);
+per_pixel_2=warp = st*1.950*(x-0.5);
diff --git a/InstallerDependencies/Visuals/projectM/presets/shifter - pulsar.milk b/InstallerDependencies/Visuals/projectM/presets/shifter - pulsar.milk
new file mode 100644
index 00000000..76de2fe5
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/shifter - pulsar.milk
@@ -0,0 +1,255 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=0.999609
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=6
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099900
+fWaveScale=0.010000
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999511
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=1.000000
+wave_b=1.000000
+wave_x=1.000000
+wave_y=0.500000
+ob_size=0.100000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.100000
+ib_r=1.000000
+ib_g=1.000000
+ib_b=1.000000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=1
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_per_frame1=r = 0.6 + 0.3*(sin(time*1.21)*ws + sin(time*1.65)*(1 - ws));
+wave_0_per_frame2=g = 0.6 + 0.3*(sin(time*1.78)*ws + sin(time*1.06)*(1 - ws));
+wave_0_per_frame3=b = 0.6 + 0.3*(sin(time*1.32)*ws + sin(time*1.54)*(1 - ws));
+wave_0_per_point1=x = sample;
+wave_0_per_point2=y = 0.9999;
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=40
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.250000
+shapecode_0_rad=0.330000
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=1.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shapecode_1_enabled=1
+shapecode_1_sides=3
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=1.000000
+shapecode_1_rad=1.203212
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=0.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=0.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_init1=ws = r
+shape_1_per_frame1=an = an + 0.05;
+shape_1_per_frame2=ang = an;
+shape_1_per_frame3=sides = 40;
+shape_1_per_frame4=rv = 0.4*(bass_att + mid_att + treb_att)/3;
+shape_1_per_frame5=rad = rv;
+shape_1_per_frame6=r = 0.5 + 0.5*sin(time);
+shape_1_per_frame7=g = 0.5 + 0.5*sin(time + 2.094);
+shape_1_per_frame8=b = 0.5 + 0.5*sin(time + 4.188);
+shapecode_2_enabled=1
+shapecode_2_sides=40
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.900000
+shapecode_2_y=0.899900
+shapecode_2_rad=0.400312
+shapecode_2_ang=1.005310
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=1.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=1.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_init1=ws = rand(1);
+shape_2_per_frame1=r = 0.5 + 0.5*sin(time);
+shape_2_per_frame2=g = 0.5 + 0.5*sin(time + 2.094);
+shape_2_per_frame3=b = 0.5 + 0.5*sin(time + 4.188);
+shapecode_3_enabled=1
+shapecode_3_sides=3
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.970000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=1.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=1.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=1.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+shape_3_init1=ws = rand(1);
+shape_3_per_frame1=rad = rad*(bass_att + treb_att + mid_att)/3;
+per_frame_init_1=wr1 = 1 + rand(0.404);
+per_frame_init_2=wg1 = 1 + rand(0.446);
+per_frame_init_3=wb1 = 1 + rand(0.465);
+per_frame_init_4=wr2 = 1 + rand(0.454);
+per_frame_init_5=wg2 = 1 + rand(0.489);
+per_frame_init_6=wb2 = 1 + rand(0.432);
+per_frame_init_7=ws = rand(1);
+per_frame_init_8=decay = 0;
+per_frame_init_9=dec = 0;
+per_frame_init_10=vl = 0;
+per_frame_1=vol = .3333*(bass_att + mid_att + treb_att);
+per_frame_2=wave_a = 0;
+per_frame_3=dec = dec + 0.1*(1-dec);
+per_frame_4=decay = dec;
+per_frame_5=awarp = 5*above(bass_att,1.4);
+per_frame_6=dy = .07;
+per_frame_7=dx = .01;
+per_frame_8=//ib_a = above(bass_att,1.3);
+per_pixel_1=vl = (bass_att + mid_att + treb_att)/3;
+per_pixel_2=vlv = 1.5 + 0.1*(vl - 1);
+per_pixel_3=arot = 5*if(above(bass_att,1.3),x,x-1);
+per_pixel_4=shiv = -4 + above(bass_att,1)*(bass_att - 1);
+per_pixel_5=split = sin(time);
+per_pixel_6=//shiv = 1;
+per_pixel_7=vol = 1 + 0.5*(bass_att + treb_att + mid_att)/3;
+per_pixel_8=vol = 1.5;
+per_pixel_9=rot = 0.8*(x - y)*vlv;
+per_pixel_10=awarp = y*5;
diff --git a/InstallerDependencies/Visuals/projectM/presets/shifter - snow.milk b/InstallerDependencies/Visuals/projectM/presets/shifter - snow.milk
new file mode 100644
index 00000000..56bcc67e
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/shifter - snow.milk
@@ -0,0 +1,273 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=2.400000
+fDecay=0.949500
+fVideoEchoZoom=1.006596
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=7
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=1.074092
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999514
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=1
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=1
+wavecode_0_bUseDots=1
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.074097
+wavecode_0_smoothing=0.000000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wave_0_per_point1=it = time*2;
+wave_0_per_point2=sp = sample + it*0.1;
+wave_0_per_point3=
+wave_0_per_point4=vl = 1 + 0.5*(treb_att-0.7);
+wave_0_per_point5=
+wave_0_per_point6=my = 0.5 + 0.2*sin(time*0.932)*vl;
+wave_0_per_point7=mx = 0.5 + 0.2*cos(time*0.932)*vl;
+wave_0_per_point8=
+wave_0_per_point9=mod = (value1+value2)/2;
+wave_0_per_point10=
+wave_0_per_point11=y = 0.5 + sample*(my-0.5) + mod;
+wave_0_per_point12=x = 0.5 + sample*(mx-0.5) + mod;
+wave_0_per_point13=
+wave_0_per_point14=aa = 0.6 + 0.4*sin(sp*6.28);
+wave_0_per_point15=bb = aa*(0.6 + 0.4*sin(sp*6.28));
+wave_0_per_point16=cc = bb*(0.6 + 0.4*sin(sp*6.28));
+wave_0_per_point17=r=aa;b=cc;g=bb;
+wavecode_1_enabled=1
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=1
+wavecode_1_bUseDots=1
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.074097
+wavecode_1_smoothing=0.000000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+wave_1_per_point1=it = time*2;
+wave_1_per_point2=sp = sample + it*0.1;
+wave_1_per_point3=
+wave_1_per_point4=vl = 1 + 0.5*(mid_att-0.7);
+wave_1_per_point5=
+wave_1_per_point6=my = 0.5 + 0.2*sin(time*0.654)*vl;
+wave_1_per_point7=mx = 0.5 + 0.2*cos(time*0.654)*vl;
+wave_1_per_point8=
+wave_1_per_point9=mod = (value1+value2)/2;
+wave_1_per_point10=
+wave_1_per_point11=y = 0.5 + sample*(my-0.5) + mod;
+wave_1_per_point12=x = 0.5 + sample*(mx-0.5) + mod;
+wave_1_per_point13=
+wave_1_per_point14=aa = 0.6 + 0.4*sin(sp*6.28);
+wave_1_per_point15=bb = aa*(0.6 + 0.4*sin(sp*6.28));
+wave_1_per_point16=cc = bb*(0.6 + 0.4*sin(sp*6.28));
+wave_1_per_point17=b=aa;g=bb;r=cc;
+wavecode_2_enabled=1
+wavecode_2_samples=512
+wavecode_2_sep=0
+wavecode_2_bSpectrum=1
+wavecode_2_bUseDots=1
+wavecode_2_bDrawThick=0
+wavecode_2_bAdditive=0
+wavecode_2_scaling=1.074096
+wavecode_2_smoothing=0.000000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wave_2_per_point1=it = time*2;
+wave_2_per_point2=sp = sample + it*0.1;
+wave_2_per_point3=
+wave_2_per_point4=vl = 1 + 0.5*(bass_att-0.7);
+wave_2_per_point5=
+wave_2_per_point6=my = 0.5 + 0.2*sin(time*0.378)*vl;
+wave_2_per_point7=mx = 0.5 + 0.2*cos(time*0.378)*vl;
+wave_2_per_point8=
+wave_2_per_point9=mod = (value1+value2)/2;
+wave_2_per_point10=
+wave_2_per_point11=y = 0.5 + sample*(my-0.5) + mod;
+wave_2_per_point12=x = 0.5 + sample*(mx-0.5) + mod;
+wave_2_per_point13=
+wave_2_per_point14=aa = 0.6 + 0.4*sin(sp*6.28);
+wave_2_per_point15=bb = aa*(0.6 + 0.4*sin(sp*6.28));
+wave_2_per_point16=cc = bb*(0.6 + 0.4*sin(sp*6.28));
+wave_2_per_point17=r=aa;b=bb;g=cc;
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=0
+shapecode_0_sides=40
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.150000
+shapecode_0_rad=0.453331
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=1.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.100000
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.100000
+shapecode_2_enabled=0
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=1.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.100000
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=it = it + 0.05;
+per_frame_2=wave_mystery = it;
+per_frame_3=tm = time;
+per_frame_4=aa = 0.6 + 0.4*sin(tm*6.28);
+per_frame_5=bb = aa*(0.6 + 0.4*sin(tm*6.28));
+per_frame_6=cc = bb*(0.6 + 0.4*sin(tm*6.28));
+per_frame_7=wave_b=aa;
+per_frame_8=wave_g=bb;
+per_frame_9=wave_r=cc;
+per_frame_10=wave_a = 0;
+per_pixel_1=modx = (0.5-abs(x-0.5));
+per_pixel_2=mody = (0.5-abs(y-0.5));
+per_pixel_3=rot = 5*modx*mody;
+per_pixel_4=zoom = 1 - 0.1*modx*mody;
+per_pixel_5=zoom=1;rot=0;
diff --git a/InstallerDependencies/Visuals/projectM/presets/shifter - spincycle b.milk b/InstallerDependencies/Visuals/projectM/presets/shifter - spincycle b.milk
new file mode 100644
index 00000000..47bce43b
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/shifter - spincycle b.milk
@@ -0,0 +1,326 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.488281
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=7
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=1
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=1
+bDarken=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=1.285751
+fWaveSmoothing=0.630000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=5.428738
+fShader=0.000000
+zoom=1.009509
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.162174
+sx=1.000000
+sy=1.000000
+wave_r=0.650000
+wave_g=0.650000
+wave_b=0.650000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.010000
+ob_r=0.000000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=1.000000
+ib_size=0.260000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=51
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=1
+wavecode_0_bDrawThick=1
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.327350
+wavecode_0_smoothing=0.820000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=3.000000
+wavecode_0_a=1.000000
+wave_0_per_point1=x = rand(1001)*.001;
+wave_0_per_point2=y = rand(1001)*.001;
+wave_0_per_point3=
+wave_0_per_point4=tm = time*.5 + sample*2;
+wave_0_per_point5=
+wave_0_per_point6=r = .5 + .5*sin(tm*1.132);
+wave_0_per_point7=g = .5 + .5*sin(tm*1.121);
+wave_0_per_point8=b = .5 + .5*sin(tm*1.187);
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=51
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=1
+wavecode_1_bDrawThick=1
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.327350
+wavecode_1_smoothing=0.820000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=3.000000
+wavecode_1_a=1.000000
+wave_1_per_point1=x = rand(1001)*.001;
+wave_1_per_point2=y = rand(1001)*.001;
+wave_1_per_point3=
+wave_1_per_point4=tm = time*.5 + sample*2;
+wave_1_per_point5=
+wave_1_per_point6=r = .5 + .5*sin(tm*1.132);
+wave_1_per_point7=g = .5 + .5*sin(tm*1.121);
+wave_1_per_point8=b = .5 + .5*sin(tm*1.187);
+wavecode_2_enabled=0
+wavecode_2_samples=512
+wavecode_2_sep=51
+wavecode_2_bSpectrum=0
+wavecode_2_bUseDots=1
+wavecode_2_bDrawThick=1
+wavecode_2_bAdditive=0
+wavecode_2_scaling=1.327350
+wavecode_2_smoothing=0.820000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=3.000000
+wavecode_2_a=1.000000
+wave_2_per_point1=x = rand(1001)*.001;
+wave_2_per_point2=y = rand(1001)*.001;
+wave_2_per_point3=
+wave_2_per_point4=tm = time*.5 + sample*2;
+wave_2_per_point5=
+wave_2_per_point6=r = .5 + .5*sin(tm*1.132);
+wave_2_per_point7=g = .5 + .5*sin(tm*1.121);
+wave_2_per_point8=b = .5 + .5*sin(tm*1.187);
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=51
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=1
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=1
+wavecode_3_scaling=1.327350
+wavecode_3_smoothing=0.820000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=3.000000
+wavecode_3_a=1.000000
+wave_3_per_point1=x = rand(1001)*.001;
+wave_3_per_point2=y = rand(1001)*.001;
+wave_3_per_point3=
+wave_3_per_point4=tm = time*.5 + sample*2;
+wave_3_per_point5=
+wave_3_per_point6=r = .5 + .5*sin(tm*1.132);
+wave_3_per_point7=g = .5 + .5*sin(tm*1.121);
+wave_3_per_point8=b = .5 + .5*sin(tm*1.187);
+shapecode_0_enabled=1
+shapecode_0_sides=54
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=0
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.081954
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=0.000000
+shapecode_0_g=0.000000
+shapecode_0_b=0.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=0.000000
+shapecode_0_g2=0.000000
+shapecode_0_b2=0.000000
+shapecode_0_a2=0.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=1.000000
+shapecode_0_border_a=0.000000
+shape_0_per_frame1=x=q1;
+shape_0_per_frame2=y=1-q2;
+shape_0_per_frame3=
+shape_0_per_frame4=rad = treb*.1;
+shapecode_1_enabled=1
+shapecode_1_sides=54
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=0
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.081954
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=0.000000
+shapecode_1_g=0.000000
+shapecode_1_b=0.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=0.000000
+shapecode_1_g2=0.000000
+shapecode_1_b2=0.000000
+shapecode_1_a2=0.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=x=q3;
+shape_1_per_frame2=y=1-q4;
+shape_1_per_frame3=
+shape_1_per_frame4=rad = .1*mid;
+shapecode_2_enabled=1
+shapecode_2_sides=54
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.081954
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=1.000000
+shapecode_2_g=1.000000
+shapecode_2_b=1.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=0.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=x=q5;
+shape_2_per_frame2=y=1-q6;
+shape_2_per_frame3=r = 1;
+shape_2_per_frame4=g = .4 + .4*sin(time*1.342);
+shape_2_per_frame5=b = 0;
+shape_2_per_frame6=
+shape_2_per_frame7=rad = .1*bass;
+shapecode_3_enabled=0
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.100000
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=0.000000
+shapecode_3_b=0.000000
+shapecode_3_a=1.000000
+shapecode_3_r2=0.000000
+shapecode_3_g2=1.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.100000
+per_frame_1=warp = 0;
+per_frame_2=
+per_frame_3=tic = min(time - tin,.1);
+per_frame_4=tin = time;
+per_frame_5=
+per_frame_6=ra = 10;
+per_frame_7=treb_avg = tic*(treb_avg*(1/tic - ra) + ra*treb);
+per_frame_8=mid_avg = tic*(mid_avg*(1/tic - ra) + ra*mid);
+per_frame_9=bass_avg = tic*(bass_avg*(1/tic - ra) + ra*bass);
+per_frame_10=
+per_frame_11=rb = 1;
+per_frame_12=vav = tic*(vav*(1/tic - rb) + rb*(bass+treb+mid)*.33333);
+per_frame_13=
+per_frame_14=tt = tt + tic*treb_avg;
+per_frame_15=mt = mt + tic*mid_avg;
+per_frame_16=bt = bt + tic*bass_avg;
+per_frame_17=vt = vt + tic*(treb_avg+mid_avg+bass_avg)*.33333;
+per_frame_18=
+per_frame_19=sz = .2;
+per_frame_20=
+per_frame_21=q1 = .5 + sz*sin(tt*.629) - sz*sin(tt*.107);
+per_frame_22=q2 = .5 + sz*sin(tt*.987) - sz*sin(tt*.456);
+per_frame_23=
+per_frame_24=q3 = .5 + sz*sin(mt*.654) - sz*sin(mt*.355);
+per_frame_25=q4 = .5 + sz*sin(mt*.548) - sz*sin(mt*.875);
+per_frame_26=
+per_frame_27=q5 = .5 + sz*sin(bt*.687) - sz*sin(bt*.318);
+per_frame_28=q6 = .5 + sz*sin(bt*.465) - sz*sin(bt*.526);
+per_frame_29=
+per_frame_30=
+per_pixel_1=xd = q1-x;
+per_pixel_2=yd = q2-y;
+per_pixel_3=
+per_pixel_4=dis = pow(xd*xd+yd*yd,.5);
+per_pixel_5=des = 1 - dis*.7071068;
+per_pixel_6=des = pow(des,8)*-treb;
+per_pixel_7=an = acos(abs(xd)/dis);
+per_pixel_8=
+per_pixel_9=dx = sign(xd)*.07*cos(an)*des;
+per_pixel_10=dy = sign(yd)*.07*sin(an)*des;
+per_pixel_11=
+per_pixel_12=dy = dy + sign(xd)*treb*.05*cos(an)*des;
+per_pixel_13=dx = dx + sign(yd)*treb*.05*sin(an)*des*-1;
+per_pixel_14=
+per_pixel_15=xd = q3-x;
+per_pixel_16=yd = q4-y;
+per_pixel_17=
+per_pixel_18=dis = pow(xd*xd+yd*yd,.5);
+per_pixel_19=des = 1 - dis*.7071068;
+per_pixel_20=des = pow(des,8)*-mid;
+per_pixel_21=an = acos(abs(xd)/dis);
+per_pixel_22=
+per_pixel_23=dx = dx + sign(xd)*.07*cos(an)*des;
+per_pixel_24=dy = dy + sign(yd)*.07*sin(an)*des;
+per_pixel_25=
+per_pixel_26=dy = dy + sign(xd)*mid*.05*cos(an)*des;
+per_pixel_27=dx = dx + sign(yd)*mid*.05*sin(an)*des*-1;
+per_pixel_28=
+per_pixel_29=xd = q5-x;
+per_pixel_30=yd = q6-y;
+per_pixel_31=
+per_pixel_32=dis = pow(xd*xd+yd*yd,.5);
+per_pixel_33=des = 1 - dis*.7071068;
+per_pixel_34=des = pow(des,8)*-bass;
+per_pixel_35=an = acos(abs(xd)/dis);
+per_pixel_36=
+per_pixel_37=dx = dx + sign(xd)*.07*cos(an)*des;
+per_pixel_38=dy = dy + sign(yd)*.07*sin(an)*des;
+per_pixel_39=
+per_pixel_40=dy = dy + sign(xd)*bass*.05*cos(an)*des;
+per_pixel_41=dx = dx + sign(yd)*bass*.05*sin(an)*des*-1;
+per_pixel_42=
diff --git a/InstallerDependencies/Visuals/projectM/presets/shifter - timepeice.milk b/InstallerDependencies/Visuals/projectM/presets/shifter - timepeice.milk
new file mode 100644
index 00000000..e4865730
--- /dev/null
+++ b/InstallerDependencies/Visuals/projectM/presets/shifter - timepeice.milk
@@ -0,0 +1,264 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=0.999608
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=0
+nWaveMode=6
+bAdditiveWaves=0
+bWaveDots=0
+bWaveThick=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=0
+bSolarize=0
+bInvert=0
+fWaveAlpha=4.099998
+fWaveScale=0.408324
+fWaveSmoothing=0.000000
+fWaveParam=1.000000
+fModWaveAlphaStart=1.000000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000158
+fWarpScale=0.241455
+fZoomExponent=1.000000
+fShader=0.000000
+zoom=0.999514
+rot=0.180000
+cx=0.500000
+cy=0.500000
+dx=0.004000
+dy=0.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=1.000000
+wave_g=1.000000
+wave_b=1.000000
+wave_x=1.000000
+wave_y=0.500000
+ob_size=0.030000
+ob_r=0.010000
+ob_g=0.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.050000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.000000
+mv_dy=0.000000
+mv_l=0.900000
+mv_r=1.000000
+mv_g=1.000000
+mv_b=1.000000
+mv_a=0.000000
+wavecode_0_enabled=0
+wavecode_0_samples=512
+wavecode_0_sep=0
+wavecode_0_bSpectrum=0
+wavecode_0_bUseDots=0
+wavecode_0_bDrawThick=0
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=1.000000
+wavecode_0_g=1.000000
+wavecode_0_b=1.000000
+wavecode_0_a=1.000000
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=0
+wavecode_1_bDrawThick=0
+wavecode_1_bAdditive=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=1.000000
+wavecode_1_g=1.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+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.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=1.000000
+wavecode_2_b=1.000000
+wavecode_2_a=1.000000
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=0
+wavecode_3_bAdditive=0
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=1.000000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+shapecode_0_enabled=1
+shapecode_0_sides=40
+shapecode_0_additive=0
+shapecode_0_thickOutline=1
+shapecode_0_textured=1
+shapecode_0_x=0.500000
+shapecode_0_y=0.500000
+shapecode_0_rad=0.599571
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.000000
+shapecode_0_r=1.000000
+shapecode_0_g=1.000000
+shapecode_0_b=1.000000
+shapecode_0_a=1.000000
+shapecode_0_r2=1.000000
+shapecode_0_g2=1.000000
+shapecode_0_b2=1.000000
+shapecode_0_a2=1.000000
+shapecode_0_border_r=1.000000
+shapecode_0_border_g=1.000000
+shapecode_0_border_b=0.000000
+shapecode_0_border_a=1.000000
+shape_0_init1=bob = 1.5;
+shape_0_init2=ro = 0;
+shape_0_init3=red = rand(10);
+shape_0_per_frame1=vol = 1 + 0.2*((bass_att+treb_att+mid_att)/3);
+shape_0_per_frame2=bob = bob*above(bob,0.01) - 0.01 + 1*(1 - above(bob,0.01));
+shape_0_per_frame3=bob = 0.4 + 0.4*sin(time*0.8);
+shape_0_per_frame4=bob = bob*vol;
+shape_0_per_frame5=rad = bob;
+shape_0_per_frame6=border_1 = 0.4;
+shape_0_per_frame7=sides = 30;
+shape_0_per_frame8=ro = ro + 0.03;
+shape_0_per_frame9=ang = ro;
+shape_0_per_frame10=rad = 1;
+shape_0_per_frame11=
+shape_0_per_frame12=sp = red*0.1*0.015;
+shape_0_per_frame13=spi = 0.3 - sp;
+shape_0_per_frame14=tm = time*0.1;
+shape_0_per_frame15=border_r = 0.6 + sp*sin(tm*0.6) + spi*cos(tm*1.46);
+shape_0_per_frame16=border_g = 0.6 + sp*sin(tm*1.294) + spi*cos(tm*0.87);
+shape_0_per_frame17=border_b = 0.6 + sp*sin(tm*1.418) + spi*cos(tm*0.76);
+shapecode_1_enabled=1
+shapecode_1_sides=40
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.500000
+shapecode_1_y=0.500000
+shapecode_1_rad=0.221671
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.000000
+shapecode_1_r=1.000000
+shapecode_1_g=1.000000
+shapecode_1_b=1.000000
+shapecode_1_a=1.000000
+shapecode_1_r2=1.000000
+shapecode_1_g2=1.000000
+shapecode_1_b2=1.000000
+shapecode_1_a2=1.000000
+shapecode_1_border_r=1.000000
+shapecode_1_border_g=1.000000
+shapecode_1_border_b=1.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=xm = 1 + 0.5*(sin(time*1.1)*0.3 + 0.7*sin(time*0.5));
+shape_1_per_frame2=ym = 1 + 0.5*(sin(time*1.8)*0.6 + 0.4*sin(time*0.315));
+shape_1_per_frame3=x = 0.5 + xm*0.22*sin(time*1.3);
+shape_1_per_frame4=y = 0.5 + ym*0.3*cos(time*1.3);
+shape_1_per_frame5=x = 0.5;
+shape_1_per_frame6=y = 0.8;
+shapecode_2_enabled=1
+shapecode_2_sides=40
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=0
+shapecode_2_x=0.500000
+shapecode_2_y=0.500000
+shapecode_2_rad=0.100000
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.000000
+shapecode_2_r=0.000000
+shapecode_2_g=0.000000
+shapecode_2_b=0.000000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.000000
+shapecode_2_g2=0.000000
+shapecode_2_b2=0.000000
+shapecode_2_a2=0.000000
+shapecode_2_border_r=1.000000
+shapecode_2_border_g=1.000000
+shapecode_2_border_b=1.000000
+shapecode_2_border_a=0.000000
+shape_2_per_frame1=x = 0.5 + 0.5*(sin(time*1.1)*0.3 + 0.7*sin(time*0.5));
+shape_2_per_frame2=x = 0.5 + 1.5*0.22*sin(time + 3.14);
+shape_2_per_frame3=y = 0.5 + 1.5*0.3*cos(time + 3.14);
+shape_2_per_frame4=ar = sin(time*0.9);
+shape_2_per_frame5=ag = sin(time*0.7);
+shape_2_per_frame6=ab = sin(time*1.3);
+shape_2_per_frame7=
+shape_2_per_frame8=arad = rad*(bass_att + mid_att + treb_att)/3;
+shapecode_3_enabled=1
+shapecode_3_sides=40
+shapecode_3_additive=1
+shapecode_3_thickOutline=0
+shapecode_3_textured=0
+shapecode_3_x=0.500000
+shapecode_3_y=0.500000
+shapecode_3_rad=0.270450
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.000000
+shapecode_3_r=1.000000
+shapecode_3_g=1.000000
+shapecode_3_b=1.000000
+shapecode_3_a=0.700000
+shapecode_3_r2=0.000000
+shapecode_3_g2=0.000000
+shapecode_3_b2=0.000000
+shapecode_3_a2=0.000000
+shapecode_3_border_r=1.000000
+shapecode_3_border_g=1.000000
+shapecode_3_border_b=1.000000
+shapecode_3_border_a=0.000000
+shape_3_per_frame1=x = 0.5 + 0.5*(sin(time*1.1)*0.3 + 0.7*sin(time*0.5));
+shape_3_per_frame2=x = 0.5 + 0.22*sin(time);
+shape_3_per_frame3=y = 0.5 + 0.3*cos(time);
+shape_3_per_frame4=x = 0.5;
+shape_3_per_frame5=y = 0.5;
+shape_3_per_frame6=rad = rad*(bass_att + mid_att + treb_att)/3;
+per_frame_init_1=red = rand(20);
+per_frame_1=dx = 0;
+per_frame_2=dy = 0;
+per_frame_3=wave_x = 0.5;
+per_frame_4=sx = 1.1;
+per_frame_5=
+per_frame_6=rot = 0.05;
+per_frame_7=
+per_frame_8=sp = red*0.15*0.05;
+per_frame_9=spi = 0.3 - sp;
+per_frame_10=
+per_frame_11=tm = time*0.1;
+per_frame_12=wave_r = 0.3 + sp*sin(tm*0.6) + spi*cos(tm*1.46);
+per_frame_13=wave_g = 0.3 + sp*sin(tm*1.294) + spi*cos(tm*0.87);
+per_frame_14=wave_b = 0.3 + sp*sin(tm*1.418) + spi*cos(tm*0.76);
+per_pixel_1=st = if(above(bass_att,1),(bass_att-1)*2 + 1,0);
+per_pixel_2=warp = st*1.950*(x-0.5);