From b167f04567212f1a8faba4e8e0511f77947c9221 Mon Sep 17 00:00:00 2001 From: w1z7ard Date: Sat, 17 Feb 2007 23:50:52 +0000 Subject: [PATCH] revised repo structure to "svn style". git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/trunk@133 6778bc44-b910-0410-a7a0-be141de4315d --- libprojectM/AUTHORS | 0 libprojectM/COPYING | 504 +++ libprojectM/ChangeLog | 63 + libprojectM/INSTALL | 9 + libprojectM/Makefile.am | 4 + libprojectM/NEWS | 0 libprojectM/README | 0 libprojectM/autogen.sh | 5 + libprojectM/config.h.in | 168 + libprojectM/configure.ac | 51 + libprojectM/libprojectM.pc.in | 14 + libprojectM/m4/acx_pthread.m4 | 238 ++ libprojectM/m4/ax_check_gl.m4 | 95 + libprojectM/m4/ax_lang_compiler_ms.m4 | 23 + libprojectM/src/Makefile.am | 48 + libprojectM/src/PCM.cc | 304 ++ libprojectM/src/PCM.h | 41 + libprojectM/src/beat_detect.cc | 151 + libprojectM/src/beat_detect.h | 30 + libprojectM/src/browser.cc | 150 + libprojectM/src/browser.h | 38 + libprojectM/src/builtin_funcs.cc | 205 + libprojectM/src/builtin_funcs.h | 60 + libprojectM/src/common.h | 73 + libprojectM/src/compare.h | 28 + libprojectM/src/console_interface.cc | 223 ++ libprojectM/src/console_interface.h | 38 + libprojectM/src/custom_shape.cc | 605 +++ libprojectM/src/custom_shape.h | 38 + libprojectM/src/custom_shape_types.h | 97 + libprojectM/src/custom_wave.cc | 754 ++++ libprojectM/src/custom_wave.h | 45 + libprojectM/src/custom_wave_types.h | 114 + libprojectM/src/editor.cc | 872 +++++ libprojectM/src/editor.h | 46 + libprojectM/src/eval.cc | 685 ++++ libprojectM/src/eval.h | 78 + libprojectM/src/event.h | 155 + libprojectM/src/expr_types.h | 70 + libprojectM/src/fatal.h | 42 + libprojectM/src/fftsg.cc | 3314 +++++++++++++++++ libprojectM/src/fftsg.h | 34 + libprojectM/src/func.cc | 243 ++ libprojectM/src/func.h | 35 + libprojectM/src/func_types.h | 34 + libprojectM/src/glConsole.cc | 1018 +++++ libprojectM/src/glConsole.h | 110 + libprojectM/src/glf.h | 114 + libprojectM/src/idle_preset.h | 31 + libprojectM/src/init_cond.cc | 165 + libprojectM/src/init_cond.h | 35 + libprojectM/src/init_cond_types.h | 33 + libprojectM/src/interface_types.h | 34 + libprojectM/src/menu.cc | 1079 ++++++ libprojectM/src/menu.h | 111 + libprojectM/src/param.cc | 724 ++++ libprojectM/src/param.h | 59 + libprojectM/src/param_types.h | 64 + libprojectM/src/parser.cc | 2308 ++++++++++++ libprojectM/src/parser.h | 53 + libprojectM/src/pbuffer.cc | 401 ++ libprojectM/src/pbuffer.h | 87 + libprojectM/src/per_frame_eqn.cc | 115 + libprojectM/src/per_frame_eqn.h | 32 + libprojectM/src/per_frame_eqn_types.h | 34 + libprojectM/src/per_pixel_eqn.cc | 233 ++ libprojectM/src/per_pixel_eqn.h | 37 + libprojectM/src/per_pixel_eqn_types.h | 49 + libprojectM/src/per_point_types.h | 34 + libprojectM/src/preset.cc | 1030 +++++ libprojectM/src/preset.h | 49 + libprojectM/src/preset_types.h | 67 + libprojectM/src/projectM.cc | 2783 ++++++++++++++ libprojectM/src/projectM.dsp | 381 ++ libprojectM/src/projectM.h | 376 ++ libprojectM/src/projectM.ncb | Bin 0 -> 304128 bytes libprojectM/src/projectM.opt | Bin 0 -> 67584 bytes libprojectM/src/share/config | 22 + libprojectM/src/share/config.fastcomputers | 22 + libprojectM/src/share/config.slowcomputers | 22 + libprojectM/src/share/fonts/Vera.ttf | Bin 0 -> 65932 bytes libprojectM/src/share/fonts/VeraMono.ttf | Bin 0 -> 49224 bytes .../presets/#Rovastar - Cosmic Echoes 2.milk# | 71 + .../share/presets/Aderrasi - Agitator.milk | 69 + ...asi - Aimless (Gravity Directive Mix).milk | 75 + ...Aderrasi - Aimless (Spirogravity Mix).milk | 75 + ...Aderrasi - Airhandler (Menagerie Mix).milk | 77 + .../presets/Aderrasi - Airs (Windy Mix).milk | 82 + ...Anchorpulse (Pulse Of A Ghast II Mix).milk | 84 + ...Aderrasi - Anchorpulse (Verified Mix).milk | 80 + ... Material Science (Pure Splinter Mix).milk | 77 + .../Aderrasi - Antidote (Aqualung Mix).milk | 81 + ...derrasi - Antidote (Side Effects Mix).milk | 79 + .../share/presets/Aderrasi - Antidote.milk | 76 + .../presets/Aderrasi - Antique Abyss.milk | 79 + .../Aderrasi - Arise! (Padded Mix).milk | 80 + .../Aderrasi - Ashes Of Air (Remix).milk | 70 + ...asi - Bitterfeld (Crystal Border Mix).milk | 80 + .../src/share/presets/Aderrasi - Blender.milk | 73 + .../presets/Aderrasi - Bow To Gravity.milk | 85 + .../share/presets/Aderrasi - Brakefreak.milk | 81 + .../share/presets/Aderrasi - Candy Avian.milk | 81 + ... - Causeway Of Dreams (Nightmare Mix).milk | 88 + ...Aderrasi - Causeway Of Dreams (REMix).milk | 81 + .../Aderrasi - Causeway Of Dreams.milk | 79 + ...si - Chromatic Abyss (The Other Side).milk | 70 + .../presets/Aderrasi - Circlefacade.milk | 73 + ...Aderrasi - Contortion (Xenomorph Mix).milk | 84 + .../share/presets/Aderrasi - Contortion.milk | 84 + .../presets/Aderrasi - Crystal Storm.milk | 72 + ...Aderrasi - Dark Matter (Converse Mix).milk | 80 + .../share/presets/Aderrasi - Elastoid.milk | 81 + .../presets/Aderrasi - Floater Society.milk | 82 + .../presets/Aderrasi - Flowing Form.milk | 75 + .../Aderrasi - Making Time (Swamp Mix).milk | 85 + .../share/presets/Aderrasi - Multiviola.milk | 76 + .../presets/Aderrasi - Negative Sun III.milk | 76 + .../Aderrasi - What Cannot Be Undone.milk | 76 + .../presets/Aderrasi - What cannot be.milk | 78 + ...nbow Orb Peacock (Centred Journey Mix.milk | 76 + ...nbow Orb Peacock (Lonely Signal Gone .milk | 70 + ...tultimate Nerual Slipstream (Tweak 2).milk | 63 + ... - Electric Rosebud_Phat_texture_edit.milk | 218 ++ .../src/share/presets/Che - Escape.milk | 118 + .../presets/Che - Terracarbon Stream.milk | 113 + .../CrystalHigh - mad ravetriping.milk | 86 + ...MPR - Random - Changing Polyevolution.milk | 95 + ...lux2]_phat_Multi_shaped2_zoe_colours5.milk | 276 ++ .../presets/Eo.S.+Phat Cool Bug_arm.milk | 238 ++ .../Eo.S.+Phat Cool Bug_arm_textured.milk | 238 ++ ....S.+Phat Fractical_dancer - pulsate B.milk | 250 ++ ...at Fractical_dancer - pulsate box_mix.milk | 247 ++ .../Eo.S.+Phat Fractical_dancer_Peacock.milk | 250 ++ .../presets/Eo.s and PieturP - Starfield.milk | 597 +++ .../presets/EvilJim - Follow the ball.milk | 65 + .../share/presets/EvilJim - Ice Drops.milk | 61 + .../src/share/presets/Fvese - 0 To 60.milk | 81 + .../src/share/presets/Fvese - A Blur.milk | 80 + .../presets/Fvese - Lifesavor Anyone.milk | 67 + .../share/presets/Fvese - New meetings.milk | 88 + .../src/share/presets/Fvese - Quicksand.milk | 78 + .../share/presets/Fvese - Stand Still!.milk | 80 + .../Fvese - The Tunnel (Final Stage Mix).milk | 83 + .../presets/Fvese - Window Reflection 6.milk | 83 + .../Fvese - Zoom Effects (Remix 2).milk | 91 + .../Fvese - Zoom Effects With A Twist 2.milk | 99 + .../Fvese - Zoom Effects With A Twist 3.milk | 99 + .../src/share/presets/Fvese - simple.milk | 77 + ...ss & Rovastar - Notions Of Tonality 2.milk | 90 + ...astar - Tokamak (Naked Intrusion Mix).milk | 80 + .../src/share/presets/Geiss - Blasto.milk | 64 + .../share/presets/Geiss - Cosmic Dust 2.milk | 70 + .../src/share/presets/Geiss - Cruzin'.milk | 59 + .../presets/Geiss - Downward Spiral.milk | 67 + .../presets/Geiss - Dynamic Swirls 1.milk | 68 + .../presets/Geiss - Dynamic Swirls 2.milk | 68 + .../src/share/presets/Geiss - Eddies 2.milk | 78 + .../src/share/presets/Geiss - Eggs.milk | 54 + .../src/share/presets/Geiss - El Cubismo.milk | 55 + .../src/share/presets/Geiss - Feedback 2.milk | 231 ++ .../presets/Geiss - High Dynamic Range.milk | 227 ++ .../Geiss - Octopus Ever Changing.milk | 76 + .../share/presets/Geiss - Octopus Gold.milk | 79 + .../src/share/presets/Geiss - Octopus.milk | 73 + .../presets/Geiss - Oldskool Mellowstyle.milk | 70 + .../src/share/presets/Geiss - Swirlie 1.milk | 75 + .../src/share/presets/Geiss - Swirlie 2.milk | 68 + .../src/share/presets/Geiss - Swirlie 3.milk | 72 + .../src/share/presets/Geiss - Swirlie 4.milk | 74 + ...ss - The Fatty Lumpkin Sunkle Tweaker.milk | 77 + ...s Of Colours (sprouting dimentia mix).milk | 261 ++ ...star - Altars Of Madness 2 (X.42 Mix).milk | 95 + ...t - Unhealthy Love (Idiot's STDs Mix).milk | 112 + .../share/presets/Idiot - MOTIVATION!.milk | 81 + .../Idiot - Texture Boxes (Remix 2).milk | 250 ++ .../Idiot - Texture Boxes (Remix).milk | 251 ++ .../Idiot24-7 - Ascending to heaven 2.milk | 64 + .../Illusion & Che - Return Of The King.milk | 68 + .../presets/Illusion & Che - The Piper.milk | 69 + .../Illusion & Rovastar - Clouded Bottle.milk | 79 + .../Illusion & Unchained - Frozen Eye 1.milk | 77 + ...Illusion & Unchained - Invade My Mind.milk | 110 + .../presets/Illusion - Figure Eight.milk | 80 + .../Jess - Trying To Trap A Twister.milk | 89 + .../Krash & Illusion - Spiral Movement.milk | 88 + ...r - Altars of Madness (Mad Ocean Mix).milk | 92 + ...Phat + Eo.S. Killer Death Bunny Remix.milk | 364 ++ .../Krash & TEcHNO - Rhythmic Mantas.milk | 81 + .../presets/Krash - 3D Shapes Demo 2.milk | 291 ++ .../share/presets/Krash - 3D Shapes Demo.milk | 296 ++ .../share/presets/Krash - Digital Flame.milk | 79 + .../presets/Krash - Dynamic Borders 1.milk | 86 + .../presets/Krash - Framed Geometry.milk | 360 ++ ...ash - Interwoven (Nightmare Weft Mix).milk | 99 + ...War Machine (Shifting Complexity Mix).milk | 90 + .../Krash - Windowframe To Mega Swirl 2.milk | 81 + .../Krash and Rovastar - Rainbow Orb.milk | 72 + .../presets/Mstress & Juppy - Dancer.milk | 403 ++ ...Mstress & Juppy - Dancers In The Dark.milk | 673 ++++ ...ve Impulses (Under Drug Effetcs (Hypn.milk | 287 ++ .../Phat_Eo.S. - our own personal demon.milk | 345 ++ .../share/presets/Phat_Eo.S._Algorithm.milk | 348 ++ .../share/presets/Phat_Eo.S_shoot_em_up.milk | 395 ++ ...astar - What_does_your_soul_look_like.milk | 260 ++ .../Phat_Rovastar_Eo.S. spiral_faces.milk | 345 ++ ...ti colour_ThisIsJustNotResponsible =).milk | 339 ++ ...ope_someone_will_see_this_triping_v2b.milk | 351 ++ ...Pithlit & Illusion - Symetric pattern.milk | 218 ++ .../src/share/presets/Reenen - phoenix.milk | 67 + .../Reenen Geiss - Triple Feedback.milk | 312 ++ ...Geiss - Triple Feedback_phat+eos_edit.milk | 320 ++ ...astar & Aderrasi - Clockwork Organism.milk | 86 + .../Rovastar & Fvese - Deadly Flower.milk | 83 + ...& Fvese - Stranger Minds (Astral Mix).milk | 80 + .../Rovastar & Fvese - Stranger Minds.milk | 74 + ...Dynamic Swirls 3 (Broken Destiny Mix).milk | 90 + ...amic Swirls 3 (Mysticial Awakening Mi.milk | 91 + ... - Dynamic Swirls 3 (Poltergiest Mix).milk | 107 + ... Dynamic Swirls 3 (Twisted Truth Mix).milk | 97 + ...wirls 3 (Voyage Of Twisted Souls Mix).milk | 98 + ...ovastar & Geiss - Hurricane Nightmare.milk | 80 + .../Rovastar & Geiss - Ice Planet.milk | 74 + ...ovastar & Geiss - Notions Of Tonality.milk | 89 + .../presets/Rovastar & Geiss - Octoplasm.milk | 77 + ...ar & Geiss - Octotrip (MultiTrip Mix).milk | 240 ++ .../presets/Rovastar & Geiss - Octotrip.milk | 81 + ...astar & Geiss - Surface (Vectrip Mix).milk | 94 + .../Rovastar & Idiot24-7 - Balk Acid.milk | 77 + .../presets/Rovastar & Rocke - Headspin.milk | 85 + ... StudioMusic - More Cherished Desires.milk | 72 + ...ar & StudioMusic - Twisted Spider Web.milk | 77 + ...ltars of Madness (Rolling Oceans Mix).milk | 122 + .../Rovastar & Telek - Cosmic Fireworks.milk | 214 ++ ...astar & Unchained - Centre Of Gravity.milk | 116 + ...lot - Crystal Ball (Cerimonial Decor).milk | 377 ++ .../Rovastar & Zylot - Narell's Fever.milk | 93 + .../Rovastar & Zylot - Sea Of Zigrot.milk | 68 + ...ion Miles from Earth (Pathfinder Mix).milk | 74 + ...Rovastar - A Million Miles from Earth.milk | 75 + ...arlequin's Madness (Dark Disorder Mix.milk | 239 ++ ...adness (A Million Miles From Earth Mi.milk | 244 ++ ...vastar - Altars Of Madness (Duel Mix).milk | 225 ++ ...r - Altars Of Madness (Surealist Mix).milk | 221 ++ ...ess 4 (Spirit Of Twisted Madness Mix).milk | 94 + .../presets/Rovastar - Altars Of Madness.milk | 217 ++ .../presets/Rovastar - Attacking Freedom.milk | 82 + .../Rovastar - Bellanova (New Wave Mix).milk | 236 ++ .../presets/Rovastar - Chapel Of Ghouls.milk | 284 ++ .../presets/Rovastar - Cosmic Echoes 1.milk | 72 + .../presets/Rovastar - Cosmic Echoes 1.milk~ | 72 + .../presets/Rovastar - Cosmic Echoes 2.milk | 71 + .../presets/Rovastar - Cosmic Echoes 2.milk~ | 71 + ...easing Dreams (Extended Movement Mix).milk | 242 ++ ...asing Dreams (Increasing Memory Mix) .milk | 254 ++ .../presets/Rovastar - Explosive Minds.milk | 72 + ...Eye On Reality (Mega 3 Mix)_phat_edit.milk | 258 ++ .../presets/Rovastar - Forgotten Moon.milk | 74 + ...Fractopia (Fantic Dancing Lights Mix).milk | 236 ++ ... - Fractopia (Focused Childhood Mix ).milk | 248 ++ ...astar - Fractopia (Fractal Havok Mix).milk | 233 ++ .../Rovastar - Fractopia (Upspoken Mix).milk | 263 ++ .../presets/Rovastar - Future Speakers.milk | 280 ++ ...llucinogenic Pyramids (Beat Time Mix).milk | 75 + ...s Dynamic Fractal (Crazed Spiral Mix).milk | 76 + ...astar - Harlequin's Fractal Encounter.milk | 113 + ...tar - Hyperspace (Frozen Rapture Mix).milk | 74 + .../share/presets/Rovastar - Hyperspace.milk | 73 + ...nner Thoughts (Clouded Judgement Mix).milk | 253 ++ ...ar - Inner Thoughts (Dark Secret Mix).milk | 261 ++ ...Inner Thoughts (Distant Memories Mix).milk | 259 ++ ...Inner Thoughts (Frantic Thoughts Mix).milk | 257 ++ ... - Inner Thoughts (Strange Cargo Mix).milk | 260 ++ ... Kalideostars (Altars Of Madness MIx).milk | 209 ++ ...tar - Kalideostars (Round Round Mix).milk | 210 ++ .../presets/Rovastar - Kalideostars.milk | 210 ++ .../presets/Rovastar - Magic Carpet.milk | 74 + .../Rovastar - Multiverse Starfield 1.milk | 71 + .../Rovastar - Multiverse Starfield 3.milk | 69 + .../presets/Rovastar - Pandora's Volcano.milk | 70 + .../presets/Rovastar - Parallel Universe.milk | 83 + .../share/presets/Rovastar - Sea Shells.milk | 243 ++ ...tar - Solarized Space (Space DNA Mix).milk | 236 ++ .../presets/Rovastar - Solarized Space.milk | 107 + ...astar - Space (Twisted Dimension Mix).milk | 108 + .../src/share/presets/Rovastar - Space.milk | 106 + ...r Passion (Enlightment Mix)_Phat_edit.milk | 284 ++ ...star - Sunflower Passion (Simple Mix).milk | 268 ++ .../presets/Rovastar - Sunflower Passion.milk | 272 ++ .../presets/Rovastar - The Awakening.milk | 65 + ...- The Chaos Of Colours (Drifting Mix).milk | 217 ++ .../Rovastar - The Chaos Of Colours.milk | 215 ++ .../presets/Rovastar - The Shroomery.milk | 454 +++ .../presets/Rovastar - Timeless Voyage.milk | 69 + .../presets/Rovastar - Torrid Tales.milk | 79 + .../presets/Rovastar - Twilight Tunnel.milk | 232 ++ ...ar - VooV's Movement (After Dark Mix).milk | 113 + ...allucinogenic Pyramids (Extra Beat Ti.milk | 83 + ...ar and Unchained - Braindance Visions.milk | 69 + ...orce Field Generator (Slowtime Tweak).milk | 80 + .../presets/Rozzor & Aderrasi - Canon.milk | 83 + ...ozzor & Che - Inside The House Of Nil.milk | 86 + ...ar - Oozing Resistance (Waveform Mod).milk | 83 + .../Rozzor & Shreyas - Deeper Aesthetics.milk | 373 ++ ...usic and Unchained - Rapid Alteration.milk | 103 + .../StudioMusic & Unchained - Entity.milk | 103 + ...oMusic & Unchained - Minor Alteration.milk | 99 + ...embering How You Were (Perceived Mix).milk | 110 + ...tudioMusic & Unchained - So Much Love.milk | 287 ++ ...sic & Unchained - State Of Discretion.milk | 103 + ...udioMusic & Unchained - Wrenched Fate.milk | 100 + .../StudioMusic - It's Only Make Believe.milk | 75 + .../presets/StudioMusic - Numerosity.milk | 74 + .../src/share/presets/Telek - Flicker.milk | 93 + .../Telek - Slow Shift Matrix (bb4.5).milk | 80 + .../Unchained & Illusion - Logic Morph.milk | 86 + ...nchained & Rovastar - For The Seagull.milk | 91 + .../Unchained & Rovastar - Luckless.milk | 116 + .../Unchained & Rovastar - Slow Solstice.milk | 100 + .../Unchained & Rovastar - Triptionary.milk | 107 + ... Wormhole Pillars (Hall of Shadows mi.milk | 80 + ...chained & Rovastar - Wormhole Pillars.milk | 80 + .../Unchained & Rovastar - Xen Traffic.milk | 110 + ...Unchained - A Matter Of Taste (Remix).milk | 84 + .../presets/Unchained - Beat Demo 1.0.milk | 91 + .../presets/Unchained - Beat Demo 2.0.milk | 111 + .../presets/Unchained - Beat Demo 2.1.milk | 111 + .../presets/Unchained - Beat Demo 2.2.milk | 109 + .../presets/Unchained - Beat Demo 2.3.milk | 114 + .../presets/Unchained - Cartoon Factory.milk | 116 + .../Unchained - Cranked On Failure.milk | 97 + .../presets/Unchained - Deeper Logic.milk | 98 + .../presets/Unchained - Goo Kung Fu.milk | 75 + .../Unchained - Goofy Beat Detection.milk | 118 + .../presets/Unchained - In Memory Of Peg.milk | 118 + .../presets/Unchained - Jaded Emotion.milk | 75 + .../Unchained - Morat's Final Voyage.milk | 83 + ...rrored Rage) -- Rozzor triangle tweak.milk | 224 ++ .../Unchained - Perverted Dialect.milk | 85 + .../share/presets/Unchained - ReAwoke.milk | 269 ++ .../presets/Unchained - Ribald Ballad.milk | 106 + .../presets/Unchained - Shaping The Grid.milk | 273 ++ ...Subjective Experience Of The Manifold.milk | 119 + .../presets/Unchained - Working the Grid.milk | 120 + .../presets/Zylot - Azirphaeli's Mirror.milk | 71 + ... Of Sound (Abstract Architecture Mix).milk | 218 ++ ...k Of Sound (Fractal Construction Mix).milk | 93 + ...- Crystal Ball (Magical Reaction Mix).milk | 364 ++ .../src/share/presets/Zylot - Dark Wisps.milk | 420 +++ .../Zylot - Digiscape Advanced Processor.milk | 52 + .../share/presets/Zylot - Ether Storm.milk | 65 + .../presets/Zylot - Present For Saddam.milk | 101 + .../src/share/presets/Zylot - String.milk | 275 ++ ...niverse (Collapsed With Artifact Mix).milk | 71 + .../src/share/presets/Zylot - Visionarie.milk | 174 + .../presets/Zylot - light of the path.milk | 65 + .../src/share/presets/bmelgren - Godhead.milk | 65 + .../presets/bmelgren - Take this highway.milk | 66 + .../fiShbRaiN - brainstem activation.milk | 393 ++ .../presets/fiShbRaiN - crazy diamond.milk | 267 ++ ...thulhus asshole (bad breakfast remix).milk | 236 ++ .../presets/fiShbRaiN - cthulhus asshole.milk | 285 ++ .../fiShbRaiN - plasma temptation.milk | 224 ++ .../presets/fiShbRaiN - quark matrix.milk | 270 ++ .../nil - Can't Stop the Blithering.milk | 71 + .../nil - Can't Stop the Cramming.milk | 70 + .../src/share/presets/nil - Cid and Lucy.milk | 68 + .../share/presets/phat_CloseIncouneters.milk | 270 ++ .../presets/phat_CloseIncounetersV2.milk | 270 ++ ...r - feathers (angel wings)_phat_remix.milk | 341 ++ .../share/presets/shifter - flashburn.milk | 260 ++ .../src/share/presets/shifter - pinwheel.milk | 273 ++ .../src/share/presets/shifter - pulsar.milk | 255 ++ .../src/share/presets/shifter - snow.milk | 273 ++ .../share/presets/shifter - spincycle b.milk | 326 ++ .../share/presets/shifter - timepeice.milk | 264 ++ libprojectM/src/splaytree.cc | 682 ++++ libprojectM/src/splaytree.h | 48 + libprojectM/src/splaytree_types.h | 39 + libprojectM/src/timer.cc | 44 + libprojectM/src/timer.h | 49 + libprojectM/src/tree_types.cc | 91 + libprojectM/src/tree_types.h | 36 + libprojectM/src/win32-dirent.cc | 231 ++ libprojectM/src/win32-dirent.h | 51 + libprojectM/src/wipemalloc.cc | 44 + libprojectM/src/wipemalloc.h | 57 + libvisual-projectM/AUTHORS | 51 + libvisual-projectM/COPYING | 340 ++ libvisual-projectM/ChangeLog | 10 + libvisual-projectM/INSTALL | 3 + libvisual-projectM/Makefile.am | 19 + libvisual-projectM/NEWS | 0 libvisual-projectM/README | 17 + libvisual-projectM/actor_projectM.c | 380 ++ libvisual-projectM/autogen.sh | 5 + libvisual-projectM/config.h.in | 131 + libvisual-projectM/configure.ac | 261 ++ libvisual-projectM/libvisual-plugins.spec | 72 + libvisual-projectM/lvtoprojectM.h | 140 + libvisual-projectM/m4/acx_pthread.m4 | 238 ++ libvisual-projectM/m4/ax_check_gl.m4 | 95 + libvisual-projectM/m4/ax_lang_compiler_ms.m4 | 23 + xmms-projectM-pbuffers/AUTHORS | 0 xmms-projectM-pbuffers/COPYING | 340 ++ xmms-projectM-pbuffers/ChangeLog | 0 xmms-projectM-pbuffers/INSTALL | 229 ++ xmms-projectM-pbuffers/Makefile.am | 8 + xmms-projectM-pbuffers/NEWS | 0 xmms-projectM-pbuffers/README | 54 + xmms-projectM-pbuffers/autogen.sh | 5 + xmms-projectM-pbuffers/config.h.in | 97 + xmms-projectM-pbuffers/configure.ac | 184 + xmms-projectM-pbuffers/main.c | 618 +++ xmms-projectM-pbuffers/xtoprojectm.h | 140 + xmms-projectM/AUTHORS | 0 xmms-projectM/COPYING | 340 ++ xmms-projectM/ChangeLog | 1 + xmms-projectM/INSTALL | 229 ++ xmms-projectM/Makefile.am | 8 + xmms-projectM/NEWS | 0 xmms-projectM/README | 54 + xmms-projectM/autogen.sh | 5 + xmms-projectM/config.h.in | 110 + xmms-projectM/configure.ac | 186 + xmms-projectM/m4/acx_pthread.m4 | 238 ++ xmms-projectM/m4/ax_check_gl.m4 | 95 + xmms-projectM/m4/ax_lang_compiler_ms.m4 | 23 + xmms-projectM/main.c | 466 +++ xmms-projectM/sdltoprojectM.h | 148 + xmms-projectM/video_init.c | 198 + xmms-projectM/video_init.h | 5 + 431 files changed, 70749 insertions(+) create mode 100644 libprojectM/AUTHORS create mode 100644 libprojectM/COPYING create mode 100644 libprojectM/ChangeLog create mode 100644 libprojectM/INSTALL create mode 100644 libprojectM/Makefile.am create mode 100644 libprojectM/NEWS create mode 100644 libprojectM/README create mode 100755 libprojectM/autogen.sh create mode 100644 libprojectM/config.h.in create mode 100644 libprojectM/configure.ac create mode 100644 libprojectM/libprojectM.pc.in create mode 100644 libprojectM/m4/acx_pthread.m4 create mode 100644 libprojectM/m4/ax_check_gl.m4 create mode 100644 libprojectM/m4/ax_lang_compiler_ms.m4 create mode 100644 libprojectM/src/Makefile.am create mode 100755 libprojectM/src/PCM.cc create mode 100755 libprojectM/src/PCM.h create mode 100755 libprojectM/src/beat_detect.cc create mode 100755 libprojectM/src/beat_detect.h create mode 100755 libprojectM/src/browser.cc create mode 100755 libprojectM/src/browser.h create mode 100755 libprojectM/src/builtin_funcs.cc create mode 100755 libprojectM/src/builtin_funcs.h create mode 100755 libprojectM/src/common.h create mode 100755 libprojectM/src/compare.h create mode 100755 libprojectM/src/console_interface.cc create mode 100755 libprojectM/src/console_interface.h create mode 100755 libprojectM/src/custom_shape.cc create mode 100755 libprojectM/src/custom_shape.h create mode 100755 libprojectM/src/custom_shape_types.h create mode 100755 libprojectM/src/custom_wave.cc create mode 100755 libprojectM/src/custom_wave.h create mode 100755 libprojectM/src/custom_wave_types.h create mode 100755 libprojectM/src/editor.cc create mode 100755 libprojectM/src/editor.h create mode 100755 libprojectM/src/eval.cc create mode 100755 libprojectM/src/eval.h create mode 100755 libprojectM/src/event.h create mode 100755 libprojectM/src/expr_types.h create mode 100755 libprojectM/src/fatal.h create mode 100755 libprojectM/src/fftsg.cc create mode 100755 libprojectM/src/fftsg.h create mode 100755 libprojectM/src/func.cc create mode 100755 libprojectM/src/func.h create mode 100755 libprojectM/src/func_types.h create mode 100755 libprojectM/src/glConsole.cc create mode 100755 libprojectM/src/glConsole.h create mode 100755 libprojectM/src/glf.h create mode 100755 libprojectM/src/idle_preset.h create mode 100755 libprojectM/src/init_cond.cc create mode 100755 libprojectM/src/init_cond.h create mode 100755 libprojectM/src/init_cond_types.h create mode 100755 libprojectM/src/interface_types.h create mode 100755 libprojectM/src/menu.cc create mode 100755 libprojectM/src/menu.h create mode 100755 libprojectM/src/param.cc create mode 100755 libprojectM/src/param.h create mode 100755 libprojectM/src/param_types.h create mode 100755 libprojectM/src/parser.cc create mode 100755 libprojectM/src/parser.h create mode 100755 libprojectM/src/pbuffer.cc create mode 100755 libprojectM/src/pbuffer.h create mode 100755 libprojectM/src/per_frame_eqn.cc create mode 100755 libprojectM/src/per_frame_eqn.h create mode 100755 libprojectM/src/per_frame_eqn_types.h create mode 100755 libprojectM/src/per_pixel_eqn.cc create mode 100755 libprojectM/src/per_pixel_eqn.h create mode 100755 libprojectM/src/per_pixel_eqn_types.h create mode 100755 libprojectM/src/per_point_types.h create mode 100755 libprojectM/src/preset.cc create mode 100755 libprojectM/src/preset.h create mode 100755 libprojectM/src/preset_types.h create mode 100755 libprojectM/src/projectM.cc create mode 100755 libprojectM/src/projectM.dsp create mode 100755 libprojectM/src/projectM.h create mode 100755 libprojectM/src/projectM.ncb create mode 100755 libprojectM/src/projectM.opt create mode 100644 libprojectM/src/share/config create mode 100644 libprojectM/src/share/config.fastcomputers create mode 100644 libprojectM/src/share/config.slowcomputers create mode 100644 libprojectM/src/share/fonts/Vera.ttf create mode 100644 libprojectM/src/share/fonts/VeraMono.ttf create mode 100755 libprojectM/src/share/presets/#Rovastar - Cosmic Echoes 2.milk# create mode 100755 libprojectM/src/share/presets/Aderrasi - Agitator.milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Aimless (Gravity Directive Mix).milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Aimless (Spirogravity Mix).milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Airhandler (Menagerie Mix).milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Airs (Windy Mix).milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Anchorpulse (Pulse Of A Ghast II Mix).milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Anchorpulse (Verified Mix).milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Anomalous Material Science (Pure Splinter Mix).milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Antidote (Aqualung Mix).milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Antidote (Side Effects Mix).milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Antidote.milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Antique Abyss.milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Arise! (Padded Mix).milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Ashes Of Air (Remix).milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Bitterfeld (Crystal Border Mix).milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Blender.milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Bow To Gravity.milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Brakefreak.milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Candy Avian.milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Causeway Of Dreams (Nightmare Mix).milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Causeway Of Dreams (REMix).milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Causeway Of Dreams.milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Chromatic Abyss (The Other Side).milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Circlefacade.milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Contortion (Xenomorph Mix).milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Contortion.milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Crystal Storm.milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Dark Matter (Converse Mix).milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Elastoid.milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Floater Society.milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Flowing Form.milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Making Time (Swamp Mix).milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Multiviola.milk create mode 100755 libprojectM/src/share/presets/Aderrasi - Negative Sun III.milk create mode 100755 libprojectM/src/share/presets/Aderrasi - What Cannot Be Undone.milk create mode 100755 libprojectM/src/share/presets/Aderrasi - What cannot be.milk create mode 100755 libprojectM/src/share/presets/Bmelgren & Krash - Rainbow Orb Peacock (Centred Journey Mix.milk create mode 100755 libprojectM/src/share/presets/Bmelgren & Krash - Rainbow Orb Peacock (Lonely Signal Gone .milk create mode 100755 libprojectM/src/share/presets/Bmelgren - Pentultimate Nerual Slipstream (Tweak 2).milk create mode 100644 libprojectM/src/share/presets/CatalystTheElder - Electric Rosebud_Phat_texture_edit.milk create mode 100644 libprojectM/src/share/presets/Che - Escape.milk create mode 100755 libprojectM/src/share/presets/Che - Terracarbon Stream.milk create mode 100755 libprojectM/src/share/presets/CrystalHigh - mad ravetriping.milk create mode 100644 libprojectM/src/share/presets/EMPR - Random - Changing Polyevolution.milk create mode 100644 libprojectM/src/share/presets/Eo.S. - skylight a3 [trip colors flux2]_phat_Multi_shaped2_zoe_colours5.milk create mode 100644 libprojectM/src/share/presets/Eo.S.+Phat Cool Bug_arm.milk create mode 100644 libprojectM/src/share/presets/Eo.S.+Phat Cool Bug_arm_textured.milk create mode 100644 libprojectM/src/share/presets/Eo.S.+Phat Fractical_dancer - pulsate B.milk create mode 100644 libprojectM/src/share/presets/Eo.S.+Phat Fractical_dancer - pulsate box_mix.milk create mode 100644 libprojectM/src/share/presets/Eo.S.+Phat Fractical_dancer_Peacock.milk create mode 100644 libprojectM/src/share/presets/Eo.s and PieturP - Starfield.milk create mode 100755 libprojectM/src/share/presets/EvilJim - Follow the ball.milk create mode 100755 libprojectM/src/share/presets/EvilJim - Ice Drops.milk create mode 100755 libprojectM/src/share/presets/Fvese - 0 To 60.milk create mode 100644 libprojectM/src/share/presets/Fvese - A Blur.milk create mode 100644 libprojectM/src/share/presets/Fvese - Lifesavor Anyone.milk create mode 100644 libprojectM/src/share/presets/Fvese - New meetings.milk create mode 100644 libprojectM/src/share/presets/Fvese - Quicksand.milk create mode 100644 libprojectM/src/share/presets/Fvese - Stand Still!.milk create mode 100644 libprojectM/src/share/presets/Fvese - The Tunnel (Final Stage Mix).milk create mode 100755 libprojectM/src/share/presets/Fvese - Window Reflection 6.milk create mode 100644 libprojectM/src/share/presets/Fvese - Zoom Effects (Remix 2).milk create mode 100644 libprojectM/src/share/presets/Fvese - Zoom Effects With A Twist 2.milk create mode 100644 libprojectM/src/share/presets/Fvese - Zoom Effects With A Twist 3.milk create mode 100755 libprojectM/src/share/presets/Fvese - simple.milk create mode 100755 libprojectM/src/share/presets/Geiss & Rovastar - Notions Of Tonality 2.milk create mode 100755 libprojectM/src/share/presets/Geiss & Rovastar - Tokamak (Naked Intrusion Mix).milk create mode 100755 libprojectM/src/share/presets/Geiss - Blasto.milk create mode 100755 libprojectM/src/share/presets/Geiss - Cosmic Dust 2.milk create mode 100755 libprojectM/src/share/presets/Geiss - Cruzin'.milk create mode 100755 libprojectM/src/share/presets/Geiss - Downward Spiral.milk create mode 100755 libprojectM/src/share/presets/Geiss - Dynamic Swirls 1.milk create mode 100755 libprojectM/src/share/presets/Geiss - Dynamic Swirls 2.milk create mode 100755 libprojectM/src/share/presets/Geiss - Eddies 2.milk create mode 100755 libprojectM/src/share/presets/Geiss - Eggs.milk create mode 100755 libprojectM/src/share/presets/Geiss - El Cubismo.milk create mode 100644 libprojectM/src/share/presets/Geiss - Feedback 2.milk create mode 100644 libprojectM/src/share/presets/Geiss - High Dynamic Range.milk create mode 100755 libprojectM/src/share/presets/Geiss - Octopus Ever Changing.milk create mode 100755 libprojectM/src/share/presets/Geiss - Octopus Gold.milk create mode 100755 libprojectM/src/share/presets/Geiss - Octopus.milk create mode 100755 libprojectM/src/share/presets/Geiss - Oldskool Mellowstyle.milk create mode 100755 libprojectM/src/share/presets/Geiss - Swirlie 1.milk create mode 100755 libprojectM/src/share/presets/Geiss - Swirlie 2.milk create mode 100755 libprojectM/src/share/presets/Geiss - Swirlie 3.milk create mode 100755 libprojectM/src/share/presets/Geiss - Swirlie 4.milk create mode 100644 libprojectM/src/share/presets/Geiss - The Fatty Lumpkin Sunkle Tweaker.milk create mode 100644 libprojectM/src/share/presets/Geiss and Rovastar - The Chaos Of Colours (sprouting dimentia mix).milk create mode 100755 libprojectM/src/share/presets/Idiot & Rovastar - Altars Of Madness 2 (X.42 Mix).milk create mode 100755 libprojectM/src/share/presets/Idiot & Zylot - Unhealthy Love (Idiot's STDs Mix).milk create mode 100755 libprojectM/src/share/presets/Idiot - MOTIVATION!.milk create mode 100755 libprojectM/src/share/presets/Idiot - Texture Boxes (Remix 2).milk create mode 100755 libprojectM/src/share/presets/Idiot - Texture Boxes (Remix).milk create mode 100755 libprojectM/src/share/presets/Idiot24-7 - Ascending to heaven 2.milk create mode 100755 libprojectM/src/share/presets/Illusion & Che - Return Of The King.milk create mode 100755 libprojectM/src/share/presets/Illusion & Che - The Piper.milk create mode 100755 libprojectM/src/share/presets/Illusion & Rovastar - Clouded Bottle.milk create mode 100644 libprojectM/src/share/presets/Illusion & Unchained - Frozen Eye 1.milk create mode 100755 libprojectM/src/share/presets/Illusion & Unchained - Invade My Mind.milk create mode 100755 libprojectM/src/share/presets/Illusion - Figure Eight.milk create mode 100644 libprojectM/src/share/presets/Jess - Trying To Trap A Twister.milk create mode 100755 libprojectM/src/share/presets/Krash & Illusion - Spiral Movement.milk create mode 100755 libprojectM/src/share/presets/Krash & Rovastar - Altars of Madness (Mad Ocean Mix).milk create mode 100644 libprojectM/src/share/presets/Krash & Rovastar - Cerebral Demons - Phat + Eo.S. Killer Death Bunny Remix.milk create mode 100755 libprojectM/src/share/presets/Krash & TEcHNO - Rhythmic Mantas.milk create mode 100755 libprojectM/src/share/presets/Krash - 3D Shapes Demo 2.milk create mode 100755 libprojectM/src/share/presets/Krash - 3D Shapes Demo.milk create mode 100755 libprojectM/src/share/presets/Krash - Digital Flame.milk create mode 100755 libprojectM/src/share/presets/Krash - Dynamic Borders 1.milk create mode 100755 libprojectM/src/share/presets/Krash - Framed Geometry.milk create mode 100755 libprojectM/src/share/presets/Krash - Interwoven (Nightmare Weft Mix).milk create mode 100755 libprojectM/src/share/presets/Krash - War Machine (Shifting Complexity Mix).milk create mode 100755 libprojectM/src/share/presets/Krash - Windowframe To Mega Swirl 2.milk create mode 100755 libprojectM/src/share/presets/Krash and Rovastar - Rainbow Orb.milk create mode 100755 libprojectM/src/share/presets/Mstress & Juppy - Dancer.milk create mode 100755 libprojectM/src/share/presets/Mstress & Juppy - Dancers In The Dark.milk create mode 100755 libprojectM/src/share/presets/Mstress - Acoustic Nerve Impulses (Under Drug Effetcs (Hypn.milk create mode 100644 libprojectM/src/share/presets/Phat_Eo.S. - our own personal demon.milk create mode 100644 libprojectM/src/share/presets/Phat_Eo.S._Algorithm.milk create mode 100644 libprojectM/src/share/presets/Phat_Eo.S_shoot_em_up.milk create mode 100644 libprojectM/src/share/presets/Phat_Rovastar - What_does_your_soul_look_like.milk create mode 100644 libprojectM/src/share/presets/Phat_Rovastar_Eo.S. spiral_faces.milk create mode 100644 libprojectM/src/share/presets/Phat_Zylot_Eo.S. spiral_faces_multi colour_ThisIsJustNotResponsible =).milk create mode 100644 libprojectM/src/share/presets/Phat_Zylot_Eo.S._Krash I_hope_someone_will_see_this_triping_v2b.milk create mode 100644 libprojectM/src/share/presets/Pithlit & Illusion - Symetric pattern.milk create mode 100755 libprojectM/src/share/presets/Reenen - phoenix.milk create mode 100644 libprojectM/src/share/presets/Reenen Geiss - Triple Feedback.milk create mode 100644 libprojectM/src/share/presets/Reenen Geiss - Triple Feedback_phat+eos_edit.milk create mode 100755 libprojectM/src/share/presets/Rovastar & Aderrasi - Clockwork Organism.milk create mode 100755 libprojectM/src/share/presets/Rovastar & Fvese - Deadly Flower.milk create mode 100755 libprojectM/src/share/presets/Rovastar & Fvese - Stranger Minds (Astral Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar & Fvese - Stranger Minds.milk create mode 100755 libprojectM/src/share/presets/Rovastar & Geiss - Dynamic Swirls 3 (Broken Destiny Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar & Geiss - Dynamic Swirls 3 (Mysticial Awakening Mi.milk create mode 100755 libprojectM/src/share/presets/Rovastar & Geiss - Dynamic Swirls 3 (Poltergiest Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar & Geiss - Dynamic Swirls 3 (Twisted Truth Mix).milk create mode 100644 libprojectM/src/share/presets/Rovastar & Geiss - Dynamic Swirls 3 (Voyage Of Twisted Souls Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar & Geiss - Hurricane Nightmare.milk create mode 100755 libprojectM/src/share/presets/Rovastar & Geiss - Ice Planet.milk create mode 100755 libprojectM/src/share/presets/Rovastar & Geiss - Notions Of Tonality.milk create mode 100755 libprojectM/src/share/presets/Rovastar & Geiss - Octoplasm.milk create mode 100755 libprojectM/src/share/presets/Rovastar & Geiss - Octotrip (MultiTrip Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar & Geiss - Octotrip.milk create mode 100755 libprojectM/src/share/presets/Rovastar & Geiss - Surface (Vectrip Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar & Idiot24-7 - Balk Acid.milk create mode 100755 libprojectM/src/share/presets/Rovastar & Rocke - Headspin.milk create mode 100755 libprojectM/src/share/presets/Rovastar & StudioMusic - More Cherished Desires.milk create mode 100755 libprojectM/src/share/presets/Rovastar & StudioMusic - Twisted Spider Web.milk create mode 100644 libprojectM/src/share/presets/Rovastar & Telek - Altars of Madness (Rolling Oceans Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar & Telek - Cosmic Fireworks.milk create mode 100755 libprojectM/src/share/presets/Rovastar & Unchained - Centre Of Gravity.milk create mode 100755 libprojectM/src/share/presets/Rovastar & Zylot - Crystal Ball (Cerimonial Decor).milk create mode 100755 libprojectM/src/share/presets/Rovastar & Zylot - Narell's Fever.milk create mode 100755 libprojectM/src/share/presets/Rovastar & Zylot - Sea Of Zigrot.milk create mode 100755 libprojectM/src/share/presets/Rovastar - A Million Miles from Earth (Pathfinder Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar - A Million Miles from Earth.milk create mode 100755 libprojectM/src/share/presets/Rovastar - Altars Of Harlequin's Madness (Dark Disorder Mix.milk create mode 100755 libprojectM/src/share/presets/Rovastar - Altars Of Madness (A Million Miles From Earth Mi.milk create mode 100755 libprojectM/src/share/presets/Rovastar - Altars Of Madness (Duel Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar - Altars Of Madness (Surealist Mix).milk create mode 100644 libprojectM/src/share/presets/Rovastar - Altars Of Madness 4 (Spirit Of Twisted Madness Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar - Altars Of Madness.milk create mode 100644 libprojectM/src/share/presets/Rovastar - Attacking Freedom.milk create mode 100755 libprojectM/src/share/presets/Rovastar - Bellanova (New Wave Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar - Chapel Of Ghouls.milk create mode 100755 libprojectM/src/share/presets/Rovastar - Cosmic Echoes 1.milk create mode 100755 libprojectM/src/share/presets/Rovastar - Cosmic Echoes 1.milk~ create mode 100755 libprojectM/src/share/presets/Rovastar - Cosmic Echoes 2.milk create mode 100755 libprojectM/src/share/presets/Rovastar - Cosmic Echoes 2.milk~ create mode 100755 libprojectM/src/share/presets/Rovastar - Decreasing Dreams (Extended Movement Mix).milk create mode 100644 libprojectM/src/share/presets/Rovastar - Decreasing Dreams (Increasing Memory Mix) .milk create mode 100755 libprojectM/src/share/presets/Rovastar - Explosive Minds.milk create mode 100644 libprojectM/src/share/presets/Rovastar - Eye On Reality (Mega 3 Mix)_phat_edit.milk create mode 100755 libprojectM/src/share/presets/Rovastar - Forgotten Moon.milk create mode 100644 libprojectM/src/share/presets/Rovastar - Fractopia (Fantic Dancing Lights Mix).milk create mode 100644 libprojectM/src/share/presets/Rovastar - Fractopia (Focused Childhood Mix ).milk create mode 100644 libprojectM/src/share/presets/Rovastar - Fractopia (Fractal Havok Mix).milk create mode 100644 libprojectM/src/share/presets/Rovastar - Fractopia (Upspoken Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar - Future Speakers.milk create mode 100755 libprojectM/src/share/presets/Rovastar - Hallucinogenic Pyramids (Beat Time Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar - Harlequin's Dynamic Fractal (Crazed Spiral Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar - Harlequin's Fractal Encounter.milk create mode 100755 libprojectM/src/share/presets/Rovastar - Hyperspace (Frozen Rapture Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar - Hyperspace.milk create mode 100755 libprojectM/src/share/presets/Rovastar - Inner Thoughts (Clouded Judgement Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar - Inner Thoughts (Dark Secret Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar - Inner Thoughts (Distant Memories Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar - Inner Thoughts (Frantic Thoughts Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar - Inner Thoughts (Strange Cargo Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar - Kalideostars (Altars Of Madness MIx).milk create mode 100755 libprojectM/src/share/presets/Rovastar - Kalideostars (Round Round Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar - Kalideostars.milk create mode 100755 libprojectM/src/share/presets/Rovastar - Magic Carpet.milk create mode 100755 libprojectM/src/share/presets/Rovastar - Multiverse Starfield 1.milk create mode 100755 libprojectM/src/share/presets/Rovastar - Multiverse Starfield 3.milk create mode 100755 libprojectM/src/share/presets/Rovastar - Pandora's Volcano.milk create mode 100755 libprojectM/src/share/presets/Rovastar - Parallel Universe.milk create mode 100755 libprojectM/src/share/presets/Rovastar - Sea Shells.milk create mode 100755 libprojectM/src/share/presets/Rovastar - Solarized Space (Space DNA Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar - Solarized Space.milk create mode 100755 libprojectM/src/share/presets/Rovastar - Space (Twisted Dimension Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar - Space.milk create mode 100644 libprojectM/src/share/presets/Rovastar - Sunflower Passion (Enlightment Mix)_Phat_edit.milk create mode 100644 libprojectM/src/share/presets/Rovastar - Sunflower Passion (Simple Mix).milk create mode 100644 libprojectM/src/share/presets/Rovastar - Sunflower Passion.milk create mode 100755 libprojectM/src/share/presets/Rovastar - The Awakening.milk create mode 100755 libprojectM/src/share/presets/Rovastar - The Chaos Of Colours (Drifting Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar - The Chaos Of Colours.milk create mode 100755 libprojectM/src/share/presets/Rovastar - The Shroomery.milk create mode 100644 libprojectM/src/share/presets/Rovastar - Timeless Voyage.milk create mode 100644 libprojectM/src/share/presets/Rovastar - Torrid Tales.milk create mode 100644 libprojectM/src/share/presets/Rovastar - Twilight Tunnel.milk create mode 100644 libprojectM/src/share/presets/Rovastar - VooV's Movement (After Dark Mix).milk create mode 100755 libprojectM/src/share/presets/Rovastar and Krash - Hallucinogenic Pyramids (Extra Beat Ti.milk create mode 100755 libprojectM/src/share/presets/Rovastar and Unchained - Braindance Visions.milk create mode 100755 libprojectM/src/share/presets/Rozzer & Zylot - Force Field Generator (Slowtime Tweak).milk create mode 100755 libprojectM/src/share/presets/Rozzor & Aderrasi - Canon.milk create mode 100755 libprojectM/src/share/presets/Rozzor & Che - Inside The House Of Nil.milk create mode 100755 libprojectM/src/share/presets/Rozzor & Rovastar - Oozing Resistance (Waveform Mod).milk create mode 100644 libprojectM/src/share/presets/Rozzor & Shreyas - Deeper Aesthetics.milk create mode 100644 libprojectM/src/share/presets/Studio Music and Unchained - Rapid Alteration.milk create mode 100755 libprojectM/src/share/presets/StudioMusic & Unchained - Entity.milk create mode 100755 libprojectM/src/share/presets/StudioMusic & Unchained - Minor Alteration.milk create mode 100644 libprojectM/src/share/presets/StudioMusic & Unchained - Remembering How You Were (Perceived Mix).milk create mode 100644 libprojectM/src/share/presets/StudioMusic & Unchained - So Much Love.milk create mode 100755 libprojectM/src/share/presets/StudioMusic & Unchained - State Of Discretion.milk create mode 100755 libprojectM/src/share/presets/StudioMusic & Unchained - Wrenched Fate.milk create mode 100755 libprojectM/src/share/presets/StudioMusic - It's Only Make Believe.milk create mode 100755 libprojectM/src/share/presets/StudioMusic - Numerosity.milk create mode 100755 libprojectM/src/share/presets/Telek - Flicker.milk create mode 100644 libprojectM/src/share/presets/Telek - Slow Shift Matrix (bb4.5).milk create mode 100755 libprojectM/src/share/presets/Unchained & Illusion - Logic Morph.milk create mode 100755 libprojectM/src/share/presets/Unchained & Rovastar - For The Seagull.milk create mode 100644 libprojectM/src/share/presets/Unchained & Rovastar - Luckless.milk create mode 100755 libprojectM/src/share/presets/Unchained & Rovastar - Slow Solstice.milk create mode 100755 libprojectM/src/share/presets/Unchained & Rovastar - Triptionary.milk create mode 100755 libprojectM/src/share/presets/Unchained & Rovastar - Wormhole Pillars (Hall of Shadows mi.milk create mode 100755 libprojectM/src/share/presets/Unchained & Rovastar - Wormhole Pillars.milk create mode 100755 libprojectM/src/share/presets/Unchained & Rovastar - Xen Traffic.milk create mode 100644 libprojectM/src/share/presets/Unchained - A Matter Of Taste (Remix).milk create mode 100755 libprojectM/src/share/presets/Unchained - Beat Demo 1.0.milk create mode 100755 libprojectM/src/share/presets/Unchained - Beat Demo 2.0.milk create mode 100755 libprojectM/src/share/presets/Unchained - Beat Demo 2.1.milk create mode 100755 libprojectM/src/share/presets/Unchained - Beat Demo 2.2.milk create mode 100755 libprojectM/src/share/presets/Unchained - Beat Demo 2.3.milk create mode 100755 libprojectM/src/share/presets/Unchained - Cartoon Factory.milk create mode 100755 libprojectM/src/share/presets/Unchained - Cranked On Failure.milk create mode 100644 libprojectM/src/share/presets/Unchained - Deeper Logic.milk create mode 100755 libprojectM/src/share/presets/Unchained - Goo Kung Fu.milk create mode 100644 libprojectM/src/share/presets/Unchained - Goofy Beat Detection.milk create mode 100755 libprojectM/src/share/presets/Unchained - In Memory Of Peg.milk create mode 100755 libprojectM/src/share/presets/Unchained - Jaded Emotion.milk create mode 100644 libprojectM/src/share/presets/Unchained - Morat's Final Voyage.milk create mode 100644 libprojectM/src/share/presets/Unchained - Painful Plasma (Multi-Wave Mirrored Rage) -- Rozzor triangle tweak.milk create mode 100755 libprojectM/src/share/presets/Unchained - Perverted Dialect.milk create mode 100755 libprojectM/src/share/presets/Unchained - ReAwoke.milk create mode 100755 libprojectM/src/share/presets/Unchained - Ribald Ballad.milk create mode 100755 libprojectM/src/share/presets/Unchained - Shaping The Grid.milk create mode 100755 libprojectM/src/share/presets/Unchained - Subjective Experience Of The Manifold.milk create mode 100755 libprojectM/src/share/presets/Unchained - Working the Grid.milk create mode 100755 libprojectM/src/share/presets/Zylot - Azirphaeli's Mirror.milk create mode 100755 libprojectM/src/share/presets/Zylot - Block Of Sound (Abstract Architecture Mix).milk create mode 100644 libprojectM/src/share/presets/Zylot - Block Of Sound (Fractal Construction Mix).milk create mode 100755 libprojectM/src/share/presets/Zylot - Crystal Ball (Magical Reaction Mix).milk create mode 100644 libprojectM/src/share/presets/Zylot - Dark Wisps.milk create mode 100755 libprojectM/src/share/presets/Zylot - Digiscape Advanced Processor.milk create mode 100755 libprojectM/src/share/presets/Zylot - Ether Storm.milk create mode 100644 libprojectM/src/share/presets/Zylot - Present For Saddam.milk create mode 100755 libprojectM/src/share/presets/Zylot - String.milk create mode 100755 libprojectM/src/share/presets/Zylot - Tangent Universe (Collapsed With Artifact Mix).milk create mode 100755 libprojectM/src/share/presets/Zylot - Visionarie.milk create mode 100755 libprojectM/src/share/presets/Zylot - light of the path.milk create mode 100755 libprojectM/src/share/presets/bmelgren - Godhead.milk create mode 100755 libprojectM/src/share/presets/bmelgren - Take this highway.milk create mode 100644 libprojectM/src/share/presets/fiShbRaiN - brainstem activation.milk create mode 100644 libprojectM/src/share/presets/fiShbRaiN - crazy diamond.milk create mode 100644 libprojectM/src/share/presets/fiShbRaiN - cthulhus asshole (bad breakfast remix).milk create mode 100644 libprojectM/src/share/presets/fiShbRaiN - cthulhus asshole.milk create mode 100644 libprojectM/src/share/presets/fiShbRaiN - plasma temptation.milk create mode 100644 libprojectM/src/share/presets/fiShbRaiN - quark matrix.milk create mode 100644 libprojectM/src/share/presets/nil - Can't Stop the Blithering.milk create mode 100644 libprojectM/src/share/presets/nil - Can't Stop the Cramming.milk create mode 100644 libprojectM/src/share/presets/nil - Cid and Lucy.milk create mode 100644 libprojectM/src/share/presets/phat_CloseIncouneters.milk create mode 100644 libprojectM/src/share/presets/phat_CloseIncounetersV2.milk create mode 100644 libprojectM/src/share/presets/shifter - feathers (angel wings)_phat_remix.milk create mode 100644 libprojectM/src/share/presets/shifter - flashburn.milk create mode 100644 libprojectM/src/share/presets/shifter - pinwheel.milk create mode 100644 libprojectM/src/share/presets/shifter - pulsar.milk create mode 100644 libprojectM/src/share/presets/shifter - snow.milk create mode 100644 libprojectM/src/share/presets/shifter - spincycle b.milk create mode 100644 libprojectM/src/share/presets/shifter - timepeice.milk create mode 100755 libprojectM/src/splaytree.cc create mode 100755 libprojectM/src/splaytree.h create mode 100755 libprojectM/src/splaytree_types.h create mode 100644 libprojectM/src/timer.cc create mode 100644 libprojectM/src/timer.h create mode 100755 libprojectM/src/tree_types.cc create mode 100755 libprojectM/src/tree_types.h create mode 100755 libprojectM/src/win32-dirent.cc create mode 100755 libprojectM/src/win32-dirent.h create mode 100755 libprojectM/src/wipemalloc.cc create mode 100755 libprojectM/src/wipemalloc.h create mode 100644 libvisual-projectM/AUTHORS create mode 100644 libvisual-projectM/COPYING create mode 100644 libvisual-projectM/ChangeLog create mode 100644 libvisual-projectM/INSTALL create mode 100644 libvisual-projectM/Makefile.am create mode 100644 libvisual-projectM/NEWS create mode 100644 libvisual-projectM/README create mode 100644 libvisual-projectM/actor_projectM.c create mode 100755 libvisual-projectM/autogen.sh create mode 100644 libvisual-projectM/config.h.in create mode 100644 libvisual-projectM/configure.ac create mode 100644 libvisual-projectM/libvisual-plugins.spec create mode 100644 libvisual-projectM/lvtoprojectM.h create mode 100644 libvisual-projectM/m4/acx_pthread.m4 create mode 100644 libvisual-projectM/m4/ax_check_gl.m4 create mode 100644 libvisual-projectM/m4/ax_lang_compiler_ms.m4 create mode 100644 xmms-projectM-pbuffers/AUTHORS create mode 100644 xmms-projectM-pbuffers/COPYING create mode 100644 xmms-projectM-pbuffers/ChangeLog create mode 100644 xmms-projectM-pbuffers/INSTALL create mode 100644 xmms-projectM-pbuffers/Makefile.am create mode 100644 xmms-projectM-pbuffers/NEWS create mode 100644 xmms-projectM-pbuffers/README create mode 100755 xmms-projectM-pbuffers/autogen.sh create mode 100644 xmms-projectM-pbuffers/config.h.in create mode 100644 xmms-projectM-pbuffers/configure.ac create mode 100644 xmms-projectM-pbuffers/main.c create mode 100644 xmms-projectM-pbuffers/xtoprojectm.h create mode 100644 xmms-projectM/AUTHORS create mode 100644 xmms-projectM/COPYING create mode 100644 xmms-projectM/ChangeLog create mode 100644 xmms-projectM/INSTALL create mode 100644 xmms-projectM/Makefile.am create mode 100644 xmms-projectM/NEWS create mode 100644 xmms-projectM/README create mode 100755 xmms-projectM/autogen.sh create mode 100644 xmms-projectM/config.h.in create mode 100644 xmms-projectM/configure.ac create mode 100644 xmms-projectM/m4/acx_pthread.m4 create mode 100644 xmms-projectM/m4/ax_check_gl.m4 create mode 100644 xmms-projectM/m4/ax_lang_compiler_ms.m4 create mode 100644 xmms-projectM/main.c create mode 100755 xmms-projectM/sdltoprojectM.h create mode 100644 xmms-projectM/video_init.c create mode 100644 xmms-projectM/video_init.h diff --git a/libprojectM/AUTHORS b/libprojectM/AUTHORS new file mode 100644 index 000000000..e69de29bb diff --git a/libprojectM/COPYING b/libprojectM/COPYING new file mode 100644 index 000000000..5ab7695ab --- /dev/null +++ b/libprojectM/COPYING @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/libprojectM/ChangeLog b/libprojectM/ChangeLog new file mode 100644 index 000000000..ca0cd04a1 --- /dev/null +++ b/libprojectM/ChangeLog @@ -0,0 +1,63 @@ +New for version 0.99 +------------------------------------------------------ +*config file now saved at ~/.projectM/config + +*internal rendering coordinate spaces corrected. (basically, I made some stupid decisions a long time ago, and just fixed them now) + +*xmms plugins close properly via window decorations + +*mouse cursor hidden in xmms-projectM during fullscreen + +*menus should resize relative to the screen size now + +*Fixed numerous compilation bugs + +*when the player changes to a new song, libprojectM will zoom in the title for a few seconds, then blend the title into the vis (ala milkdrop), if the player support sending the title to libprojectM (only xmms-projectM now) + + +New for version 0.98 +------------------------------------------------------ +*projectM has been refactored into a shared library called libprojectM. + -Now compiles as C++ (even though 99% of the code is C) + +*libvisual-projectM now supports libvisual 0.4.0 + +*Preset library updated (~150 new, ~25 removed) + +*Improved Rendering Engine + -rewrote per pixel mathematics + -fixed waveforms 0, 1, and 4 + -fixed Order of drawing (Vectors, Custom Shapes, Custom Waves, Waveform, Borders) + -fixed custom shape rotation and texture parameter bugs + -added support for the bDarkenCenter feature + -added pbuffer support (however, you can't use it yet) + -improved motion vectors when using pbuffers + +*Improved .milk Parser + -corrected behavior of frame, wave, and shape init_eqns + -fixed bug with multiple equations on one line + +*Menu/Help/Display System Improvements + -Replaced GLF with FTGL (TrueType) fonts. + -Added the solarize, brighten, darken, and invert filters to the post-processing menu + -(F4) new Rendering stats display + -(F5) Framerate display fixed + +*New Framerate limiter + +*n0dalus contributed some autotools patches. + +*Chris Byrne of Monstavision contributed: + -3 Memory Leak fixes! + -Performance improvements during PCM input + -Preset index code rewritten to allow presets to be added while projectM is running + +*Hai Zaar helped us clean up the autotools stuff + -Presets/fonts will be stored in $DATADIR/projectM/fonts and /presets + -The config file will be stored in $SYSCONFDIR/projectM + -By default DATADIR is $PREFIX/share and SYSCONFDIR is $PREFIX/etc + so we reccomend you run configure like so: + + ./configure --sysconfdir=/etc + + \ No newline at end of file diff --git a/libprojectM/INSTALL b/libprojectM/INSTALL new file mode 100644 index 000000000..190b933cf --- /dev/null +++ b/libprojectM/INSTALL @@ -0,0 +1,9 @@ +If you just checked out of CVS run './autogen.sh' first. + +If you downloaded a tarball then do this: + +./configure +make +make install (as root) + +projectM will install its presets, fonts, and default config in $DATADIR, which defaults to $PREFIX/share/projectM. So feel free to change these values with the --prefix, or --datadir arguments to ./configure. diff --git a/libprojectM/Makefile.am b/libprojectM/Makefile.am new file mode 100644 index 000000000..9e95c11c2 --- /dev/null +++ b/libprojectM/Makefile.am @@ -0,0 +1,4 @@ +SUBDIRS = src + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libprojectM.pc diff --git a/libprojectM/NEWS b/libprojectM/NEWS new file mode 100644 index 000000000..e69de29bb diff --git a/libprojectM/README b/libprojectM/README new file mode 100644 index 000000000..e69de29bb diff --git a/libprojectM/autogen.sh b/libprojectM/autogen.sh new file mode 100755 index 000000000..19fc2c77f --- /dev/null +++ b/libprojectM/autogen.sh @@ -0,0 +1,5 @@ +#!/bin/sh +aclocal -I m4 +libtoolize --force +autoconf +automake -a diff --git a/libprojectM/config.h.in b/libprojectM/config.h.in new file mode 100644 index 000000000..d221b51fc --- /dev/null +++ b/libprojectM/config.h.in @@ -0,0 +1,168 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if the `closedir' function returns void instead of `int'. */ +#undef CLOSEDIR_VOID + +/* Use the Apple OpenGL framework. */ +#undef HAVE_APPLE_OPENGL_FRAMEWORK + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#undef HAVE_DIRENT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the `floor' function. */ +#undef HAVE_FLOOR + +/* Define to 1 if you have the `fork' function. */ +#undef HAVE_FORK + +/* Define to 1 if you have the `gettimeofday' function. */ +#undef HAVE_GETTIMEOFDAY + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#undef HAVE_MALLOC + +/* Define to 1 if you have the header file. */ +#undef HAVE_MALLOC_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `memset' function. */ +#undef HAVE_MEMSET + +/* Define to 1 if you have the header file, and it defines `DIR'. */ +#undef HAVE_NDIR_H + +/* Define to 1 if you have the `pow' function. */ +#undef HAVE_POW + +/* Define if you have POSIX threads libraries and header files. */ +#undef HAVE_PTHREAD + +/* Define to 1 if you have the `setenv' function. */ +#undef HAVE_SETENV + +/* Define to 1 if you have the `sqrt' function. */ +#undef HAVE_SQRT + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `strcasecmp' function. */ +#undef HAVE_STRCASECMP + +/* Define to 1 if you have the `strchr' function. */ +#undef HAVE_STRCHR + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strstr' function. */ +#undef HAVE_STRSTR + +/* Define to 1 if you have the `strtol' function. */ +#undef HAVE_STRTOL + +/* Define to 1 if you have the `strverscmp' function. */ +#undef HAVE_STRVERSCMP + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#undef HAVE_SYS_DIR_H + +/* Define to 1 if you have the header file, and it defines `DIR'. + */ +#undef HAVE_SYS_NDIR_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `vfork' function. */ +#undef HAVE_VFORK + +/* Define to 1 if you have the header file. */ +#undef HAVE_VFORK_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_WINDOWS_H + +/* Define to 1 if `fork' works. */ +#undef HAVE_WORKING_FORK + +/* Define to 1 if `vfork' works. */ +#undef HAVE_WORKING_VFORK + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to necessary symbol if this constant uses a non-standard name on + your system. */ +#undef PTHREAD_CREATE_JOINABLE + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define to 1 if you can safely include both and . */ +#undef TIME_WITH_SYS_TIME + +/* Version number of package */ +#undef VERSION + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to rpl_malloc if the replacement function should be used. */ +#undef malloc + +/* Define to `int' if does not define. */ +#undef pid_t + +/* Define to `unsigned' if does not define. */ +#undef size_t + +/* Define as `fork' if `vfork' does not work. */ +#undef vfork diff --git a/libprojectM/configure.ac b/libprojectM/configure.ac new file mode 100644 index 000000000..612265a67 --- /dev/null +++ b/libprojectM/configure.ac @@ -0,0 +1,51 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. + +AC_PREREQ(2.57) +AC_INIT(libprojectM, 0.98, psperl@sourceforge.net) +AC_CONFIG_SRCDIR([src/projectM.cc]) +AC_CONFIG_HEADER([config.h]) +AC_PROG_LIBTOOL + +AM_INIT_AUTOMAKE + +# Checks for programs. +AC_PROG_INSTALL + +AC_PROG_CC +AC_PROG_CXX + +AX_CHECK_GL + +# Checks for header files. +AC_HEADER_DIRENT +AC_HEADER_STDC +AC_CHECK_HEADERS([malloc.h stdlib.h string.h sys/time.h unistd.h]) + +# Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_C_INLINE +AC_TYPE_SIZE_T +AC_HEADER_TIME + +# Checks for library functions. +AC_FUNC_CLOSEDIR_VOID +AC_FUNC_FORK +AC_FUNC_MALLOC +AC_FUNC_STRTOD +AC_CHECK_FUNCS([floor gettimeofday memset pow setenv sqrt strcasecmp strchr strstr strtol strverscmp]) + +PKG_CHECK_MODULES(FTGL, ftgl >= 2.0.0, [libft="yes"], [libft="no"]) +if test x$libft = xno; then + AC_MSG_ERROR([*** ftgl not found. + libftgl is needed to build this package./]) +fi +AC_SUBST(FTGL_LIBS) +AC_SUBST(FTGL_CFLAGS) + + + +AC_CONFIG_FILES([Makefile + src/Makefile + libprojectM.pc]) +AC_OUTPUT diff --git a/libprojectM/libprojectM.pc.in b/libprojectM/libprojectM.pc.in new file mode 100644 index 000000000..81a1fc795 --- /dev/null +++ b/libprojectM/libprojectM.pc.in @@ -0,0 +1,14 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ +pkgdatadir=@datadir@/projectM +sysconfdir=@sysconfdir@/projectM + +Name: libprojectM +Version: @VERSION@ +Description: projectM - OpenGL Milkdrop +Requires: +Libs: -L${libdir} +Cflags: -I${includedir} + diff --git a/libprojectM/m4/acx_pthread.m4 b/libprojectM/m4/acx_pthread.m4 new file mode 100644 index 000000000..06af84275 --- /dev/null +++ b/libprojectM/m4/acx_pthread.m4 @@ -0,0 +1,238 @@ +dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +dnl +dnl @summary figure out how to build C programs using POSIX threads +dnl +dnl This macro figures out how to build C programs using POSIX threads. +dnl It sets the PTHREAD_LIBS output variable to the threads library and +dnl linker flags, and the PTHREAD_CFLAGS output variable to any special +dnl C compiler flags that are needed. (The user can also force certain +dnl compiler flags/libs to be tested by setting these environment +dnl variables.) +dnl +dnl Also sets PTHREAD_CC to any special C compiler that is needed for +dnl multi-threaded programs (defaults to the value of CC otherwise). +dnl (This is necessary on AIX to use the special cc_r compiler alias.) +dnl +dnl NOTE: You are assumed to not only compile your program with these +dnl flags, but also link it with them as well. e.g. you should link +dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS +dnl $LIBS +dnl +dnl If you are only building threads programs, you may wish to use +dnl these variables in your default LIBS, CFLAGS, and CC: +dnl +dnl LIBS="$PTHREAD_LIBS $LIBS" +dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +dnl CC="$PTHREAD_CC" +dnl +dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute +dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to +dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). +dnl +dnl ACTION-IF-FOUND is a list of shell commands to run if a threads +dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to +dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the +dnl default action will define HAVE_PTHREAD. +dnl +dnl Please let the authors know if this macro fails on any platform, or +dnl if you have any other suggestions or comments. This macro was based +dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with +dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros +dnl posted by Alejandro Forero Cuervo to the autoconf macro repository. +dnl We are also grateful for the helpful feedback of numerous users. +dnl +dnl @category InstalledPackages +dnl @author Steven G. Johnson +dnl @version 2005-06-15 +dnl @license GPLWithACException + +AC_DEFUN([ACX_PTHREAD], [ +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_LANG_SAVE +AC_LANG_C +acx_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on True64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) + AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) + AC_MSG_RESULT($acx_pthread_ok) + if test x"$acx_pthread_ok" = xno; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items starting with a "-" are +# C compiler flags, and other items are library names, except for "none" +# which indicates that we try without any flags at all, and "pthread-config" +# which is a program returning the flags for the Pth emulation library. + +acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) +# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) +# -pthreads: Solaris/gcc +# -mthreads: Mingw32/gcc, Lynx/gcc +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads too; +# also defines -D_REENTRANT) +# ... -mt is also the pthreads flag for HP/aCC +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case "${host_cpu}-${host_os}" in + *solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (We need to link with -pthreads/-mt/ + # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather + # a function called by this macro, so we could check for that, but + # who knows whether they'll stub that too in a future libc.) So, + # we'll just look for -pthreads and -lpthread first: + + acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" + ;; +esac + +if test x"$acx_pthread_ok" = xno; then +for flag in $acx_pthread_flags; do + + case $flag in + none) + AC_MSG_CHECKING([whether pthreads work without any flags]) + ;; + + -*) + AC_MSG_CHECKING([whether pthreads work with $flag]) + PTHREAD_CFLAGS="$flag" + ;; + + pthread-config) + AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no) + if test x"$acx_pthread_config" = xno; then continue; fi + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + AC_MSG_CHECKING([for the pthreads library -l$flag]) + PTHREAD_LIBS="-l$flag" + ;; + esac + + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + AC_TRY_LINK([#include ], + [pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], + [acx_pthread_ok=yes]) + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + AC_MSG_RESULT($acx_pthread_ok) + if test "x$acx_pthread_ok" = xyes; then + break; + fi + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + +# Various other checks: +if test "x$acx_pthread_ok" = xyes; then + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + AC_MSG_CHECKING([for joinable pthread attribute]) + attr_name=unknown + for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + AC_TRY_LINK([#include ], [int attr=$attr; return attr;], + [attr_name=$attr; break]) + done + AC_MSG_RESULT($attr_name) + if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then + AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, + [Define to necessary symbol if this constant + uses a non-standard name on your system.]) + fi + + AC_MSG_CHECKING([if more special flags are required for pthreads]) + flag=no + case "${host_cpu}-${host_os}" in + *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; + *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; + esac + AC_MSG_RESULT(${flag}) + if test "x$flag" != xno; then + PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" + fi + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + # More AIX lossage: must compile with cc_r + AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC}) +else + PTHREAD_CC="$CC" +fi + +AC_SUBST(PTHREAD_LIBS) +AC_SUBST(PTHREAD_CFLAGS) +AC_SUBST(PTHREAD_CC) + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test x"$acx_pthread_ok" = xyes; then + ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) + : +else + acx_pthread_ok=no + $2 +fi +AC_LANG_RESTORE +])dnl ACX_PTHREAD diff --git a/libprojectM/m4/ax_check_gl.m4 b/libprojectM/m4/ax_check_gl.m4 new file mode 100644 index 000000000..08305c105 --- /dev/null +++ b/libprojectM/m4/ax_check_gl.m4 @@ -0,0 +1,95 @@ +dnl @synopsis AX_CHECK_GL +dnl +dnl Check for an OpenGL implementation. If GL is found, the required +dnl compiler and linker flags are included in the output variables +dnl "GL_CFLAGS" and "GL_LIBS", respectively. This macro adds the +dnl configure option "--with-apple-opengl-framework", which users can +dnl use to indicate that Apple's OpenGL framework should be used on Mac +dnl OS X. If Apple's OpenGL framework is used, the symbol +dnl "HAVE_APPLE_OPENGL_FRAMEWORK" is defined. If no GL implementation +dnl is found, "no_gl" is set to "yes". +dnl +dnl @category InstalledPackages +dnl @author Braden McDaniel +dnl @version 2004-11-15 +dnl @license AllPermissive + +AC_DEFUN([AX_CHECK_GL], +[AC_REQUIRE([AC_PATH_X])dnl +AC_REQUIRE([ACX_PTHREAD])dnl + +# +# There isn't a reliable way to know we should use the Apple OpenGL framework +# without a configure option. A Mac OS X user may have installed an +# alternative GL implementation (e.g., Mesa), which may or may not depend on X. +# +AC_ARG_WITH([apple-opengl-framework], + [AC_HELP_STRING([--with-apple-opengl-framework], + [use Apple OpenGL framework (Mac OS X only)])]) +if test "X$with_apple_opengl_framework" = "Xyes"; then + AC_DEFINE([HAVE_APPLE_OPENGL_FRAMEWORK], [1], + [Use the Apple OpenGL framework.]) + GL_LIBS="-framework OpenGL" +else + AC_LANG_PUSH(C) + + AX_LANG_COMPILER_MS + if test X$ax_compiler_ms = Xno; then + GL_CFLAGS="${PTHREAD_CFLAGS}" + GL_LIBS="${PTHREAD_LIBS} -lm" + fi + + # + # Use x_includes and x_libraries if they have been set (presumably by + # AC_PATH_X). + # + if test "X$no_x" != "Xyes"; then + if test -n "$x_includes"; then + GL_CFLAGS="-I${x_includes} ${GL_CFLAGS}" + fi + if test -n "$x_libraries"; then + GL_LIBS="-L${x_libraries} -lX11 ${GL_LIBS}" + fi + fi + + AC_CHECK_HEADERS([windows.h]) + + AC_CACHE_CHECK([for OpenGL library], [ax_cv_check_gl_libgl], + [ax_cv_check_gl_libgl="no" + ax_save_CPPFLAGS="${CPPFLAGS}" + CPPFLAGS="${GL_CFLAGS} ${CPPFLAGS}" + ax_save_LIBS="${LIBS}" + LIBS="" + ax_check_libs="-lopengl32 -lGL" + for ax_lib in ${ax_check_libs}; do + if test X$ax_compiler_ms = Xyes; then + ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'` + else + ax_try_lib="${ax_lib}" + fi + LIBS="${ax_try_lib} ${GL_LIBS} ${ax_save_LIBS}" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[ +# if HAVE_WINDOWS_H && defined(_WIN32) +# include +# endif +# include ]], + [[glBegin(0)]])], + [ax_cv_check_gl_libgl="${ax_try_lib}"; break]) + done + LIBS=${ax_save_LIBS} + CPPFLAGS=${ax_save_CPPFLAGS}]) + + if test "X${ax_cv_check_gl_libgl}" = "Xno"; then + no_gl="yes" + GL_CFLAGS="" + GL_LIBS="" + else + GL_LIBS="${ax_cv_check_gl_libgl} ${GL_LIBS}" + fi + AC_LANG_POP(C) +fi + +AC_SUBST([GL_CFLAGS]) +AC_SUBST([GL_LIBS]) +])dnl diff --git a/libprojectM/m4/ax_lang_compiler_ms.m4 b/libprojectM/m4/ax_lang_compiler_ms.m4 new file mode 100644 index 000000000..2b3d5a816 --- /dev/null +++ b/libprojectM/m4/ax_lang_compiler_ms.m4 @@ -0,0 +1,23 @@ +dnl @synopsis AX_LANG_COMPILER_MS +dnl +dnl Check whether the compiler for the current language is Microsoft. +dnl +dnl This macro is modeled after _AC_LANG_COMPILER_GNU in the GNU +dnl Autoconf implementation. +dnl +dnl @category InstalledPackages +dnl @author Braden McDaniel +dnl @version 2004-11-15 +dnl @license AllPermissive + +AC_DEFUN([AX_LANG_COMPILER_MS], +[AC_CACHE_CHECK([whether we are using the Microsoft _AC_LANG compiler], + [ax_cv_[]_AC_LANG_ABBREV[]_compiler_ms], +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[#ifndef _MSC_VER + choke me +#endif +]])], + [ax_compiler_ms=yes], + [ax_compiler_ms=no]) +ax_cv_[]_AC_LANG_ABBREV[]_compiler_ms=$ax_compiler_ms +])]) diff --git a/libprojectM/src/Makefile.am b/libprojectM/src/Makefile.am new file mode 100644 index 000000000..88b9f0087 --- /dev/null +++ b/libprojectM/src/Makefile.am @@ -0,0 +1,48 @@ +lib_LTLIBRARIES = libprojectM.la + +libprojectM_la_SOURCES=\ +PCM.cc \ +beat_detect.cc \ +browser.cc \ +builtin_funcs.cc \ +console_interface.cc \ +custom_shape.cc \ +custom_wave.cc \ +editor.cc \ +eval.cc \ +fftsg.cc \ +func.cc \ +glConsole.cc \ +init_cond.cc \ +menu.cc \ +param.cc \ +parser.cc \ +pbuffer.cc \ +per_frame_eqn.cc \ +per_pixel_eqn.cc \ +preset.cc \ +projectM.cc \ +splaytree.cc \ +timer.cc \ +tree_types.cc \ +wipemalloc.cc + +libprojectMincludedir = $(includedir)/projectM +libprojectMinclude_HEADERS = projectM.h pbuffer.h event.h console_interface.h PCM.h + +libprojectM_la_LDFLAGS = -version-info 0:0:0 + +AM_LIBS = @GL_LIBS@ @FTGL_LIBS@ +AM_CXXFLAGS= -DLINUX -D__CPLUSPLUS @GL_CFLAGS@ @FTGL_CFLAGS@ + +libprojectM_la_LIBADD = $(AM_LIBS) + +libprojectMconfigdir = $(datadir)/projectM +libprojectMconfig_DATA = share/config share/config.fastcomputers share/config.slowcomputers + +libprojectMfontdir = $(datadir)/projectM/fonts +libprojectMfont_DATA = share/fonts/*.ttf + +libprojectMpresetdir = $(datadir)/projectM/presets +libprojectMpreset_DATA= share/presets/*.milk + diff --git a/libprojectM/src/PCM.cc b/libprojectM/src/PCM.cc new file mode 100755 index 000000000..437e8a381 --- /dev/null +++ b/libprojectM/src/PCM.cc @@ -0,0 +1,304 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/** + * $Id: PCM.c,v 1.3 2006/03/13 20:35:26 psperl Exp $ + * + * Takes sound data from wherever and hands it back out. + * Returns PCM Data or spectrum data, or the derivative of the PCM data + */ + +#include +#include +#include "wipemalloc.h" +#include "fftsg.h" + + + +float **PCMd; //data structure to store PCM data PCM[channels][maxsamples] +int maxsamples; //size of PCM buffer +int start; //where to add data next + +int *ip; //working space for FFT routines +double *w; //lookup table for FFT routines +int newsamples; //how many new samples + +#ifdef DEBUG +extern FILE *debugFile; +#endif + +//initPCM(int samples) +// +//Initializes the PCM buffer to +// number of samples specified. + +void initPCM(int samples) +{ + int i; + +#ifdef DEBUG + if ( debugFile != NULL ) { + fprintf( debugFile, "initPCM()\n" ); + fflush( debugFile ); + } +#endif + + //Allocate memory for PCM data buffer + PCMd = (float **)wipemalloc(2 * sizeof(float *)); + PCMd[0] = (float *)wipemalloc(samples * sizeof(float)); + PCMd[1] = (float *)wipemalloc(samples * sizeof(float)); + + maxsamples=samples; + newsamples=0; + + //Initialize buffers to 0 + for (i=0;imaxsamples) newsamples=maxsamples; +} + +extern "C" void addPCM16Data(const short* pcm_data, short samples) { + int i, j; + + for (i = 0; i < samples; ++i) { + j=i+start; + PCMd[0][j % maxsamples]=(pcm_data[i * 2 + 0]/16384.0); + PCMd[1][j % maxsamples]=(pcm_data[i * 2 + 1]/16384.0); + } + + start = (start + samples) % maxsamples; + + newsamples+=samples; + if (newsamples>maxsamples) newsamples=maxsamples; +} + + +extern "C" void addPCM16(short PCMdata[2][512]) +{ + int i,j; + int samples=512; + + + for(i=0;imaxsamples) newsamples=maxsamples; +} + + +extern "C" void addPCM8( unsigned char PCMdata[2][512]) +{ + int i,j; + int samples=512; + + + for(i=0;imaxsamples) newsamples=maxsamples; +} + + +//puts sound data requested at provided pointer +// +//samples is number of PCM samples to return +//freq = 0 gives PCM data +//freq = 1 gives FFT data +//smoothing is the smoothing coefficient + +//returned values are normalized from -1 to 1 + +void getPCM(float *PCMdata, int samples, int channel, int freq, float smoothing, int derive) +{ + int i,index; + + index=start-1; + + if (index<0) index=maxsamples+index; + + PCMdata[0]=PCMd[channel][index]; + + for(i=1;i +#include +#include "projectM.h" +#include "beat_detect.h" +#include "wipemalloc.h" + +float beat_buffer[32][80],beat_instant[32],beat_history[32]; +float *beat_val,*beat_att,*beat_variance; +int beat_buffer_pos; + +float vol_buffer[80],vol_instant,vol_history; + +void initBeatDetect() +{ + + int x,y; + + vol_instant=0; + vol_history=0; + + for (y=0;y<80;y++) + { + vol_buffer[y]=0; + } + + beat_buffer_pos=0; + + beat_val=(float *)wipemalloc(32*sizeof(float)); + beat_att=(float *)wipemalloc(32*sizeof(float)); + beat_variance=(float *)wipemalloc(32*sizeof(float)); + + for (x=0;x<32;x++) + { + beat_instant[x]=0; + beat_history[x]=0; + beat_val[x]=1.0; + beat_att[x]=1.0; + beat_variance[x]=0; + for (y=0;y<80;y++) + { + beat_buffer[x][y]=0; + } + } + +} + +void getBeatVals(projectM_t *pm, float *vdataL,float *vdataR) +{ + int linear=0; + int x,y; + float temp2=0; + + vol_instant=0; + + for ( x=0;x<16;x++) + { + + beat_instant[x]=0; + for ( y=linear*2;y<(linear+8+x)*2;y++) + { + beat_instant[x]+=((vdataL[y]*vdataL[y])+(vdataR[y]*vdataR[y]))*(1.0/(8+x)); +// printf( "beat_instant[%d]: %f %f %f\n", x, beat_instant[x], vdataL[y], vdataR[y] ); + vol_instant+=((vdataL[y]*vdataL[y])+(vdataR[y]*vdataR[y]))*(1.0/512.0); + + } + + linear=y/2; + beat_history[x]-=(beat_buffer[x][beat_buffer_pos])*.0125; + beat_buffer[x][beat_buffer_pos]=beat_instant[x]; + beat_history[x]+=(beat_instant[x])*.0125; + + beat_val[x]=(beat_instant[x])/(beat_history[x]); + + beat_att[x]+=(beat_instant[x])/(beat_history[x]); + + + + } + + vol_history-=(vol_buffer[beat_buffer_pos])*.0125; + vol_buffer[beat_buffer_pos]=vol_instant; + vol_history+=(vol_instant)*.0125; + + pm->mid=0; + for(x=1;x<10;x++) + { + pm->mid+=(beat_instant[x]); + temp2+=(beat_history[x]); + + } + + pm->mid=pm->mid/(1.5*temp2); + temp2=0; + pm->treb=0; + for(x=10;x<16;x++) + { + pm->treb+=(beat_instant[x]); + temp2+=(beat_history[x]); + } + pm->treb=pm->treb/(1.5*temp2); +// *vol=vol_instant/(1.5*vol_history); + pm->vol=vol_instant/(1.5*vol_history); + + pm->bass=(beat_instant[0])/(1.5*beat_history[0]); + + pm->treb_att=.6 * pm->treb_att + .4 * pm->treb; + pm->mid_att=.6 * pm->mid_att + .4 * pm->mid; + pm->bass_att=.6 * pm->bass_att + .4 * pm->bass; + // *vol=(beat_instant[3])/(beat_history[3]); + beat_buffer_pos++; + if( beat_buffer_pos>79)beat_buffer_pos=0; + +} +void freeBeatDetect() +{ + free(beat_att); + free(beat_val); + free(beat_variance); + + beat_att = NULL; + beat_val = NULL; + beat_variance = NULL; +} diff --git a/libprojectM/src/beat_detect.h b/libprojectM/src/beat_detect.h new file mode 100755 index 000000000..46f4bc9ca --- /dev/null +++ b/libprojectM/src/beat_detect.h @@ -0,0 +1,30 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _BEAT_DETECT_H +#define _BEAT_DETECT_H + +#include "projectM.h" +void initBeatDetect(); +void getBeatVals( projectM_t *pm, float *vdataL, float *vdataR); +void freeBeatDetect(); + +#endif /** !_BEAT_DETECT_H */ diff --git a/libprojectM/src/browser.cc b/libprojectM/src/browser.cc new file mode 100755 index 000000000..5be54a4c1 --- /dev/null +++ b/libprojectM/src/browser.cc @@ -0,0 +1,150 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +#include +#include +#include +#include "common.h" +#include "fatal.h" + +#include "preset_types.h" +#include "preset.h" + +#include "glConsole.h" + +#include "interface_types.h" + +#include "event.h" + +extern interface_t current_interface; + +gl_console_t * browser_console = NULL; +int active_font2 = 0; +char input_buffer[MAX_PATH_SIZE]; +int buf_pos = 0; + +int loadBrowser() { + + + + if ((browser_console = glConsoleCreate(40, 10, 80, 20, 1, 1, active_font2)) < 0) + return PROJECTM_FAILURE; + + glConsoleSetFGColor(CONSOLE_RED, browser_console); + glConsoleSetBGColor(CONSOLE_BLACK, browser_console); + glConsoleSetFlags(CONSOLE_FLAG_CURSOR_BLINKING | CONSOLE_FLAG_ALWAYS_DRAW_BACKGROUND, browser_console); + glConsoleClearBuffer(browser_console); + + buf_pos = 0; + memset(input_buffer, 0, MAX_PATH_SIZE); + + return PROJECTM_SUCCESS; +} + +int closeBrowser() { + + + active_font2 = 0; + + glConsoleDestroy(browser_console); + browser_console = NULL; + + return PROJECTM_SUCCESS; +} + +void browser_key_handler( projectMEvent event, projectMKeycode keycode, projectMModifier modifier ) { + + char s[2]; + + s[0] = 0; + s[1] = 0; + + + switch( event ) { + case PROJECTM_KEYDOWN: + switch(keycode) { + case PROJECTM_K_UP: + glConsoleMoveCursorUp(browser_console); + break; + case PROJECTM_K_RETURN: + loadPresetByFile(input_buffer); + closeBrowser(); + current_interface = DEFAULT_INTERFACE; + break; + case PROJECTM_K_RIGHT: + glConsoleMoveCursorForward(browser_console); + break; + case PROJECTM_K_LEFT: + printf("CURSOR BACKWARD\n"); + glConsoleMoveCursorBackward(browser_console); + break; + case PROJECTM_K_DOWN: + glConsoleMoveCursorDown(browser_console); + break; + case PROJECTM_K_PAGEUP: + glConsoleAlignCursorUp(browser_console); + break; + case PROJECTM_K_PAGEDOWN: + glConsoleAlignCursorDown(browser_console); + break; + case PROJECTM_K_INSERT: + glConsoleAlignCursorLeft(browser_console); + break; + case PROJECTM_K_DELETE: + glConsoleAlignCursorRight(browser_console); + break; + case PROJECTM_K_LSHIFT: + break; + case PROJECTM_K_RSHIFT: + break; + case PROJECTM_K_CAPSLOCK: + break; + case PROJECTM_K_ESCAPE: + closeBrowser(); + current_interface = DEFAULT_INTERFACE; + break; + + default: /* All regular characters */ + if (buf_pos == MAX_PATH_SIZE) { + buf_pos = 0; + } + input_buffer[buf_pos] = (char)keycode; + if ((modifier == PROJECTM_KMOD_LSHIFT) || (modifier == PROJECTM_KMOD_RSHIFT) || (modifier == PROJECTM_KMOD_CAPS)) + input_buffer[buf_pos] -= 32; + + *s = input_buffer[buf_pos]; + glConsolePrintString(s, browser_console); + buf_pos++; + break; + } + } + + +} + +void refreshBrowser() { + + // glConsoleClearBuffer(browser_console); + // glConsoleSetCursorPos(1, 1, browser_console); + //glConsolePrintString("Enter a file to load:\n", browser_console); + //glConsolePrintString(input_buffer, browser_console); + glConsoleDraw(browser_console); +} + diff --git a/libprojectM/src/browser.h b/libprojectM/src/browser.h new file mode 100755 index 000000000..d7c46a982 --- /dev/null +++ b/libprojectM/src/browser.h @@ -0,0 +1,38 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/** + * $Id: browser.h,v 1.1.1.1 2005/12/23 18:05:03 psperl Exp $ + * + * Browser interface + * + */ + +#ifndef _BROWSER_H +#define _BROWSER_H + +#include "event.h" + +void browser_key_handler( projectMEvent event, projectMKeycode keycode, projectMModifier modifier ); +int loadBrowser(); +int closeBrowser(); +void refreshBrowser(); + +#endif /** !_BROWSER_H */ diff --git a/libprojectM/src/builtin_funcs.cc b/libprojectM/src/builtin_funcs.cc new file mode 100755 index 000000000..eb8091d27 --- /dev/null +++ b/libprojectM/src/builtin_funcs.cc @@ -0,0 +1,205 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#include +#include +#include +#include "projectM.h" + +/* Values to optimize the sigmoid function */ +#define R 32767 +#define RR 65534 + +float int_wrapper(float * arg_list) { + + return floor(arg_list[0]); + +} + + +float sqr_wrapper(float * arg_list) { + + return pow(2, arg_list[0]); +} + + +float sign_wrapper(float * arg_list) { + + return -arg_list[0]; +} + +float min_wrapper(float * arg_list) { + + if (arg_list[0] > arg_list[1]) + return arg_list[1]; + + return arg_list[0]; +} + +float max_wrapper(float * arg_list) { + + if (arg_list[0] > arg_list[1]) + return arg_list[0]; + + return arg_list[1]; +} + +/* consult your AI book */ +float sigmoid_wrapper(float * arg_list) { + return (RR / (1 + exp( -(((float)(arg_list[0])) * arg_list[1]) / R) - R)); +} + + +float bor_wrapper(float * arg_list) { + + return (float)((int)arg_list[0] || (int)arg_list[1]); +} + +float band_wrapper(float * arg_list) { + return (float)((int)arg_list[0] && (int)arg_list[1]); +} + +float bnot_wrapper(float * arg_list) { + return (float)(!(int)arg_list[0]); +} + +float if_wrapper(float * arg_list) { + + if ((int)arg_list[0] == 0) + return arg_list[2]; + return arg_list[1]; +} + + +float rand_wrapper(float * arg_list) { + float l=1; + + // printf("RAND ARG:(%d)\n", (int)arg_list[0]); + if ((int)arg_list[0] > 0) + l = (float)((rand()) % ((int)arg_list[0])); + //printf("VAL: %f\n", l); + return l; +} + +float equal_wrapper(float * arg_list) { + + return (arg_list[0] == arg_list[1]); +} + + +float above_wrapper(float * arg_list) { + + return (arg_list[0] > arg_list[1]); +} + + +float below_wrapper(float * arg_list) { + + return (arg_list[0] < arg_list[1]); +} + +float sin_wrapper(float * arg_list) { + return (sin (arg_list[0])); +} + + +float cos_wrapper(float * arg_list) { + return (cos (arg_list[0])); +} + +float tan_wrapper(float * arg_list) { + return (tan(arg_list[0])); +} + +float asin_wrapper(float * arg_list) { + return (asin (arg_list[0])); +} + +float acos_wrapper(float * arg_list) { + return (acos (arg_list[0])); +} + +float atan_wrapper(float * arg_list) { + return (atan (arg_list[0])); +} + +float atan2_wrapper(float * arg_list) { + return (atan2 (arg_list[0], arg_list[1])); +} + +float pow_wrapper(float * arg_list) { + return (pow (arg_list[0], arg_list[1])); +} + +float exp_wrapper(float * arg_list) { + return (exp(arg_list[0])); +} + +float abs_wrapper(float * arg_list) { + return (fabs(arg_list[0])); +} + +float log_wrapper(float* arg_list) { + return (log (arg_list[0])); +} + +float log10_wrapper(float * arg_list) { + return (log10 (arg_list[0])); +} + +float sqrt_wrapper(float * arg_list) { + return (sqrt (arg_list[0])); +} + + +float nchoosek_wrapper(float * arg_list) { + unsigned long cnm = 1UL; + int i, f; + int n, m; + + n = (int)arg_list[0]; + m = (int)arg_list[1]; + + if (m*2 >n) m = n-m; + for (i=1 ; i <= m; n--, i++) + { + if ((f=n) % i == 0) + f /= i; + else cnm /= i; + cnm *= f; + } + return (float)cnm; +} + + +float fact_wrapper(float * arg_list) { + + + int result = 1; + + int n = (int)arg_list[0]; + + while (n > 1) { + result = result * n; + n--; + } + return (float)result; +} diff --git a/libprojectM/src/builtin_funcs.h b/libprojectM/src/builtin_funcs.h new file mode 100755 index 000000000..c1cb73c36 --- /dev/null +++ b/libprojectM/src/builtin_funcs.h @@ -0,0 +1,60 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/* Wrappers for all the builtin functions + The arg_list pointer is a list of floats. Its + size is equal to the number of arguments the parameter + takes */ + +#ifndef _BUILTIN_FUNCS_H +#define _BUILTIN_FUNCS_H + +inline float below_wrapper(float * arg_list); +inline float above_wrapper(float * arg_list); +inline float equal_wrapper(float * arg_list); +inline float if_wrapper(float * arg_list); +inline float bnot_wrapper(float * arg_list); +inline float rand_wrapper(float * arg_list); +inline float bor_wrapper(float * arg_list); +inline float band_wrapper(float * arg_list); +inline float sigmoid_wrapper(float * arg_list); +inline float max_wrapper(float * arg_list); +inline float min_wrapper(float * arg_list); +inline float sign_wrapper(float * arg_list); +inline float sqr_wrapper(float * arg_list); +inline float int_wrapper(float * arg_list); +inline float nchoosek_wrapper(float * arg_list); +inline float sin_wrapper(float * arg_list); +inline float cos_wrapper(float * arg_list); +inline float tan_wrapper(float * arg_list); +inline float fact_wrapper(float * arg_list); +inline float asin_wrapper(float * arg_list); +inline float acos_wrapper(float * arg_list); +inline float atan_wrapper(float * arg_list); +inline float atan2_wrapper(float * arg_list); + +inline float pow_wrapper(float * arg_list); +inline float exp_wrapper(float * arg_list); +inline float abs_wrapper(float * arg_list); +inline float log_wrapper(float *arg_list); +inline float log10_wrapper(float * arg_list); +inline float sqrt_wrapper(float * arg_list); + +#endif /** !_BUILTIN_FUNCS_H */ diff --git a/libprojectM/src/common.h b/libprojectM/src/common.h new file mode 100755 index 000000000..c66574178 --- /dev/null +++ b/libprojectM/src/common.h @@ -0,0 +1,73 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef COMMON_H +#define COMMON_H + +#ifdef _MSC_VER +# define strcasecmp(s, t) _strcmpi(s, t) +#endif + +#ifdef MACOS +#include +extern FILE *fmemopen(void *buf, size_t len, const char *pMode); +#endif /** MACOS */ + +#define DEFAULT_FONT_PATH "/home/carm/fonts/courier1.glf" +#define MAX_TOKEN_SIZE 512 +#define MAX_PATH_SIZE 4096 + +#define STRING_BUFFER_SIZE 1024*150 +#define STRING_LINE_SIZE 1024 + +#ifndef TRUE +#define TRUE 1 +#endif +#ifndef FALSE +#define FALSE 0 +#endif + +#define PROJECTM_FILE_EXTENSION ".prjm" +#define MILKDROP_FILE_EXTENSION ".milk" + +#define MAX_DOUBLE_SIZE 10000000.0 +#define MIN_DOUBLE_SIZE -10000000.0 + +#define MAX_INT_SIZE 10000000 +#define MIN_INT_SIZE -10000000 + +#define DEFAULT_DOUBLE_IV 0.0 /* default float initial value */ +#define DEFAULT_DOUBLE_LB MIN_DOUBLE_SIZE /* default float lower bound */ +#define DEFAULT_DOUBLE_UB MAX_DOUBLE_SIZE /* default float upper bound */ + +#ifdef DEBUG +#define DWRITE(msg) \ +if ( debugFile != NULL ) {\ + fprintf( debugFile, "%s", msg );\ + fflush( debugFile );\ + } else {\ + printf( "%s", msg );\ + } +#else +#define DWRITE(msg) +#endif /** DWRITE */ + +#endif diff --git a/libprojectM/src/compare.h b/libprojectM/src/compare.h new file mode 100755 index 000000000..e6d670074 --- /dev/null +++ b/libprojectM/src/compare.h @@ -0,0 +1,28 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _COMPARE_H +#define _COMPARE_H + +int compare_int(int * num1, int * num2); +int compare_string(char * string1, char * string2); + +#endif /** !_COMPARE_H */ diff --git a/libprojectM/src/console_interface.cc b/libprojectM/src/console_interface.cc new file mode 100755 index 000000000..990d1ef06 --- /dev/null +++ b/libprojectM/src/console_interface.cc @@ -0,0 +1,223 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#include +#include "projectM.h" +#include "common.h" +#include "fatal.h" +#include "menu.h" +#include "interface_types.h" +#include "console_interface.h" +#include "preset_types.h" +#include "preset.h" +#include "browser.h" +#include "editor.h" +#include "event.h" + +extern preset_t *active_preset; + +interface_t current_interface = DEFAULT_INTERFACE; + +void refreshConsole(void *) { + + switch (current_interface) { + + case MENU_INTERFACE: + refreshMenu(); + break; + case SHELL_INTERFACE: + break; + case EDITOR_INTERFACE: + refreshEditor(); + break; + case DEFAULT_INTERFACE: + break; + case BROWSER_INTERFACE: + refreshBrowser(); + break; + default: + break; + } + +} + +extern "C" void key_handler( projectM_t *PM, projectMEvent event, projectMKeycode keycode, projectMModifier modifier ) { + + switch( event ) { + + + case PROJECTM_KEYDOWN: + + //default_key_handler(); + switch (current_interface) + { + + case MENU_INTERFACE: + menu_key_handler(PM, event, keycode); + break; + case SHELL_INTERFACE: + //shell_key_handler(); + break; + case EDITOR_INTERFACE: + editor_key_handler(event,keycode); + break; + case BROWSER_INTERFACE: + browser_key_handler(event,keycode,modifier); + break; + case DEFAULT_INTERFACE: + default_key_handler(PM,event,keycode); + break; + default: + default_key_handler(PM,event,keycode); + break; + + } + break; + } +} + +void default_key_handler(projectM_t *PM, projectMEvent event, projectMKeycode keycode) { + + + + switch( event ) { + + case PROJECTM_KEYDOWN: + + switch( keycode ) + { + case PROJECTM_K_UP: + PM->beat_sensitivity += 0.25; + if (PM->beat_sensitivity > 5.0) PM->beat_sensitivity = 5.0; + break; + case PROJECTM_K_DOWN: + PM->beat_sensitivity -= 0.25; + if (PM->beat_sensitivity < 0) PM->beat_sensitivity = 0; + break; + case PROJECTM_K_F1: + PM->showhelp++; + PM->showstats=0; + PM->showfps=0; + break; + case PROJECTM_K_F5: + if(PM->showhelp%2==0) PM->showfps++; + break; + case PROJECTM_K_F4: + if(PM->showhelp%2==0) PM->showstats++; + break; + case PROJECTM_K_F3: { + PM->showpreset++; + printf( "F3 pressed: %d\n", PM->showpreset ); + break; + } + case PROJECTM_K_F2: + PM->showtitle++; + break; +#ifndef MACOS + case PROJECTM_K_F9: +#else + case PROJECTM_K_F8: +#endif + PM->studio++; + break; + + case PROJECTM_K_ESCAPE: { +// exit( 1 ); + break; + } + case PROJECTM_K_f: + + break; + case PROJECTM_K_b: + break; + case PROJECTM_K_n: + if (switchPreset(ALPHA_NEXT, HARD_CUT) < 0) { + printf("WARNING: Bad preset file, loading idle preset\n"); + switchToIdlePreset(); + } + break; + case PROJECTM_K_r: + if (switchPreset(RANDOM_NEXT, HARD_CUT) < 0) { + printf("WARNING: Bad preset file, loading idle preset\n"); + switchToIdlePreset(); + } + break; + case PROJECTM_K_p: + if ((switchPreset(ALPHA_PREVIOUS, HARD_CUT)) < 0){ + printf("WARNING: Bad preset file, loading idle preset\n"); + switchToIdlePreset(); + } + break; + case PROJECTM_K_l: + if (PM->noSwitch==0)PM->noSwitch=1; else PM->noSwitch=0; + // current_interface = BROWSER_INTERFACE; + // loadBrowser(); + break; + case PROJECTM_K_e: + current_interface = EDITOR_INTERFACE; + loadEditor(active_preset->per_frame_eqn_string_buffer,(void (*)()) reloadPerFrame, + 80, 24, 140, 60, 0, 0); + break; + case PROJECTM_K_s: + current_interface = EDITOR_INTERFACE; + loadEditor("[FILE NAME HERE]", (void (*)())savePreset, + 50, 1, 100, 5, 0, .92); + case PROJECTM_K_i: +#ifdef DEBUG + fprintf( debugFile, "PROJECTM_K_i\n" ); + fflush( debugFile ); +#endif + PM->doIterative = !PM->doIterative; + break; + case PROJECTM_K_z: + break; + case PROJECTM_K_0: + PM->nWaveMode=0; + break; + case PROJECTM_K_6: + PM->nWaveMode=6; + break; + case PROJECTM_K_7: + PM->nWaveMode=7; + break; + case PROJECTM_K_m: + PM->showhelp=0; + PM->showstats=0; + PM->showfps=0; + current_interface = MENU_INTERFACE; + showMenu(); + break; + case PROJECTM_K_t: + break; + default: + break; + } + } + + + + +} + + + + + diff --git a/libprojectM/src/console_interface.h b/libprojectM/src/console_interface.h new file mode 100755 index 000000000..ae8650856 --- /dev/null +++ b/libprojectM/src/console_interface.h @@ -0,0 +1,38 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/** + * $Id: console_interface.h,v 1.1.1.1 2005/12/23 18:05:03 psperl Exp $ + * + */ + +#ifndef _CONSOLE_INTERFACE_H +#define _CONSOLE_INTERFACE_H + +#include "event.h" + +void default_key_handler(projectM_t *PM, projectMEvent event, projectMKeycode keycode); +void refreshConsole(void*); +#ifdef __CPLUSPLUS +extern "C" void key_handler(projectM_t *PM, projectMEvent event, projectMKeycode keycode, projectMModifier modifier ); +#else +extern void key_handler(projectM_t *PM, projectMEvent event, projectMKeycode keycode, projectMModifier modifier ); +#endif +#endif /** !_CONSOLE_INTERFACE_H */ diff --git a/libprojectM/src/custom_shape.cc b/libprojectM/src/custom_shape.cc new file mode 100755 index 000000000..29bbb74e8 --- /dev/null +++ b/libprojectM/src/custom_shape.cc @@ -0,0 +1,605 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#include +#include +#include + +#include "common.h" +#include "fatal.h" + +#include "param_types.h" +#include "param.h" + +#include "expr_types.h" +#include "eval.h" + +#include "splaytree_types.h" +#include "splaytree.h" +#include "tree_types.h" + +#include "per_frame_eqn_types.h" +#include "per_frame_eqn.h" + +#include "init_cond_types.h" +#include "init_cond.h" + +#include "preset_types.h" + +#include "custom_shape_types.h" +#include "custom_shape.h" + +#include "init_cond_types.h" +#include "init_cond.h" + +#include "wipemalloc.h" + +custom_shape_t * interface_shape = NULL; +int cwave_interface_id = 0; +void eval_custom_shape_init_conds(custom_shape_t * custom_shape); +void load_unspec_init_cond_shape(param_t * param); + +void destroy_param_db_tree_shape(splaytree_t * tree); +void destroy_per_frame_eqn_tree_shape(splaytree_t * tree); +void destroy_per_frame_init_eqn_tree_shape(splaytree_t * tree); +void destroy_init_cond_tree_shape(splaytree_t * tree); + +custom_shape_t * new_custom_shape(int id) { + + custom_shape_t * custom_shape; + param_t * param; + + if ((custom_shape = (custom_shape_t*)wipemalloc(sizeof(custom_shape_t))) == NULL) + return NULL; + + custom_shape->id = id; + custom_shape->per_frame_count = 0; + custom_shape->per_frame_eqn_string_index = 0; + custom_shape->per_frame_init_eqn_string_index = 0; + + /* Initialize tree data structures */ + + if ((custom_shape->param_tree = + create_splaytree( (int (*)(void*,void*))compare_string, (void* (*)(void*)) copy_string,(void (*)(void*)) free_string)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((custom_shape->per_frame_eqn_tree = + create_splaytree((int (*)(void*, void*))compare_int, (void* (*)(void*))copy_int,(void (*)(void*)) free_int)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((custom_shape->init_cond_tree = + create_splaytree((int (*)(void*, void*))compare_string, (void* (*)(void*)) copy_string,(void (*)(void*)) free_string)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((custom_shape->per_frame_init_eqn_tree = + create_splaytree((int (*)(void*, void*)) compare_string, (void* (*)(void*))copy_string, (void (*)(void*))free_string)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + /* Start: Load custom shape parameters */ + + if ((param = new_param_float("r", P_FLAG_NONE, &custom_shape->r, NULL, 1.0, 0.0, .5)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("g", P_FLAG_NONE, &custom_shape->g, NULL, 1.0, 0.0, .5)) == NULL){ + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("b", P_FLAG_NONE, &custom_shape->b, NULL, 1.0, 0.0, .5)) == NULL){ + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("a", P_FLAG_NONE, &custom_shape->a, NULL, 1.0, 0.0, .5)) == NULL){ + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("border_r", P_FLAG_NONE, &custom_shape->border_r, NULL, 1.0, 0.0, .5)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("border_g", P_FLAG_NONE, &custom_shape->border_g, NULL, 1.0, 0.0, .5)) == NULL){ + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("border_b", P_FLAG_NONE, &custom_shape->border_b, NULL, 1.0, 0.0, .5)) == NULL){ + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("border_a", P_FLAG_NONE, &custom_shape->border_a, NULL, 1.0, 0.0, .5)) == NULL){ + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("r2", P_FLAG_NONE, &custom_shape->r2, NULL, 1.0, 0.0, .5)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("g2", P_FLAG_NONE, &custom_shape->g2, NULL, 1.0, 0.0, .5)) == NULL){ + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("b2", P_FLAG_NONE, &custom_shape->b2, NULL, 1.0, 0.0, .5)) == NULL){ + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("a2", P_FLAG_NONE, &custom_shape->a2, NULL, 1.0, 0.0, .5)) == NULL){ + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("x", P_FLAG_NONE, &custom_shape->x, NULL, 1.0, 0.0, .5)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("y", P_FLAG_NONE, &custom_shape->y, NULL, 1.0, 0.0, .5)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_bool("thickOutline", P_FLAG_NONE, &custom_shape->thickOutline, 1, 0, 0)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_bool("enabled", P_FLAG_NONE, &custom_shape->enabled, 1, 0, 0)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_int("sides", P_FLAG_NONE, &custom_shape->sides, 100, 3, 3)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_bool("additive", P_FLAG_NONE, &custom_shape->additive, 1, 0, 0)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_bool("textured", P_FLAG_NONE, &custom_shape->textured, 1, 0, 0)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("rad", P_FLAG_NONE, &custom_shape->radius, NULL, MAX_DOUBLE_SIZE, 0, 0.0)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("ang", P_FLAG_NONE, &custom_shape->ang, NULL, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, 0.0)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("tex_zoom", P_FLAG_NONE, &custom_shape->tex_zoom, NULL, MAX_DOUBLE_SIZE, .00000000001, 0.0)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("tex_ang", P_FLAG_NONE, &custom_shape->tex_ang, NULL, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, 0.0)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + if ((param = new_param_float("t1", P_FLAG_TVAR, &custom_shape->t1, NULL, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, 0.0)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("t2", P_FLAG_TVAR, &custom_shape->t2, NULL, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, 0.0)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("t3", P_FLAG_TVAR, &custom_shape->t3, NULL, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, 0.0)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + if ((param = new_param_float("t4", P_FLAG_TVAR, &custom_shape->t4, NULL, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, 0.0)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + if ((param = new_param_float("t5", P_FLAG_TVAR, &custom_shape->t5, NULL, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, 0.0)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + if ((param = new_param_float("t6", P_FLAG_TVAR, &custom_shape->t6, NULL, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, 0.0)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + if ((param = new_param_float("t7", P_FLAG_TVAR, &custom_shape->t7, NULL, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, 0.0)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + if ((param = new_param_float("t8", P_FLAG_TVAR, &custom_shape->t8, NULL, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, 0.0)) == NULL) { + free_custom_shape(custom_shape); + return NULL; + } + + if (insert_param(param, custom_shape->param_tree) < 0) { + free_custom_shape(custom_shape); + return NULL; + } + + /* End of parameter loading. Note that the read only parameters associated + with custom shapes (ie, sample) are global variables, and not specific to + the custom shape datastructure. */ + + + + return custom_shape; + +} + +void destroy_per_frame_init_eqn_tree_shape(splaytree_t * tree) { + + if (!tree) + return; + + splay_traverse((void (*)(void*))free_init_cond, tree); + destroy_splaytree(tree); + +} + + + +void destroy_init_cond_tree_shape(splaytree_t * tree) { + + if (!tree) + return; + + splay_traverse((void (*)(void*))free_init_cond, tree); + destroy_splaytree(tree); + +} + +void destroy_per_frame_eqn_tree_shape(splaytree_t * tree) { + + + if (!tree) + return; + + splay_traverse((void (*)(void*))free_per_frame_eqn, tree); + destroy_splaytree(tree); + +} + + +void destroy_param_db_tree_shape(splaytree_t * tree) { + + if (!tree) + return; + + splay_traverse((void (*)(void*))free_param, tree); + destroy_splaytree(tree); + +} + +/* Frees a custom shape form object */ +void free_custom_shape(custom_shape_t * custom_shape) { + + if (custom_shape == NULL) + return; + + if (custom_shape->param_tree == NULL) + return; + + destroy_per_frame_eqn_tree_shape(custom_shape->per_frame_eqn_tree); + destroy_init_cond_tree_shape(custom_shape->init_cond_tree); + destroy_param_db_tree_shape(custom_shape->param_tree); + destroy_per_frame_init_eqn_tree_shape(custom_shape->per_frame_init_eqn_tree); + + free(custom_shape); + custom_shape = NULL; + + return; + +} + + +custom_shape_t * find_custom_shape(int id, preset_t * preset, int create_flag) { + + custom_shape_t * custom_shape = NULL; + + if (preset == NULL) + return NULL; + + if ((custom_shape = (custom_shape_t*)splay_find(&id, preset->custom_shape_tree)) == NULL) { + + if (CUSTOM_SHAPE_DEBUG) { printf("find_custom_shape: creating custom shape (id = %d)...", id);fflush(stdout);} + + if (create_flag == FALSE) { + if (CUSTOM_SHAPE_DEBUG) printf("you specified not to (create flag = false), returning null\n"); + return NULL; + } + + if ((custom_shape = new_custom_shape(id)) == NULL) { + if (CUSTOM_SHAPE_DEBUG) printf("failed...out of memory?\n"); + return NULL; + } + + if (CUSTOM_SHAPE_DEBUG) { printf("success.Inserting..."); fflush(stdout);} + + if (splay_insert(custom_shape, &custom_shape->id, preset->custom_shape_tree) < 0) { + if (CUSTOM_SHAPE_DEBUG) printf("failed, probably a duplicated!!\n"); + free_custom_shape(custom_shape); + return NULL; + } + + if (CUSTOM_SHAPE_DEBUG) printf("done.\n"); + } + + return custom_shape; +} + +void evalCustomShapeInitConditions(preset_t *preset) { + splay_traverse((void (*)(void*))eval_custom_shape_init_conds, preset->custom_shape_tree); + +} + + void eval_custom_shape_init_conds(custom_shape_t * custom_shape) { + + splay_traverse((void (*)(void*))eval_init_cond, custom_shape->per_frame_init_eqn_tree); +} + + +void load_unspecified_init_conds_shape(custom_shape_t * custom_shape) { + + interface_shape = custom_shape; + splay_traverse((void (*)(void*))load_unspec_init_cond_shape, interface_shape->param_tree); + interface_shape = NULL; + +} + +void load_unspec_init_cond_shape(param_t * param) { + + init_cond_t * init_cond; + value_t init_val; + + /* Don't count read only parameters as initial conditions */ + if (param->flags & P_FLAG_READONLY) + return; + if (param->flags & P_FLAG_QVAR) + return; + if (param->flags & P_FLAG_TVAR) + return; + if (param->flags & P_FLAG_USERDEF) + return; + + /* If initial condition was not defined by the preset file, force a default one + with the following code */ + if ((init_cond =(init_cond_t*) splay_find(param->name, interface_shape->init_cond_tree)) == NULL) { + + /* Make sure initial condition does not exist in the set of per frame initial equations */ + if ((init_cond = (init_cond_t*)splay_find(param->name, interface_shape->per_frame_init_eqn_tree)) != NULL) + return; + + if (param->type == P_TYPE_BOOL) + init_val.bool_val = 0; + + else if (param->type == P_TYPE_INT) + init_val.int_val = *(int*)param->engine_val; + + else if (param->type == P_TYPE_DOUBLE) + init_val.float_val = *(float*)param->engine_val; + + //printf("%s\n", param->name); + /* Create new initial condition */ + if ((init_cond = new_init_cond(param, init_val)) == NULL) + return; + + /* Insert the initial condition into this presets tree */ + if (splay_insert(init_cond, init_cond->param->name, interface_shape->init_cond_tree) < 0) { + free_init_cond(init_cond); + return; + } + + } + +} + + +/* Interface function. Makes another custom shape the current + concern for per frame / point equations */ +custom_shape_t * nextCustomShape(preset_t *preset) { + + if ((interface_shape = (custom_shape_t*) splay_find(&cwave_interface_id, preset->custom_shape_tree)) == NULL) { + cwave_interface_id = 0; + return NULL; + } + + cwave_interface_id++; + + /* Evaluate all per frame equations associated with this shape */ + splay_traverse((void (*)(void*))eval_init_cond, interface_shape->init_cond_tree); + splay_traverse((void (*)(void*))eval_per_frame_eqn, interface_shape->per_frame_eqn_tree); + + return interface_shape; +} diff --git a/libprojectM/src/custom_shape.h b/libprojectM/src/custom_shape.h new file mode 100755 index 000000000..04ea02ec9 --- /dev/null +++ b/libprojectM/src/custom_shape.h @@ -0,0 +1,38 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _CUSTOM_SHAPE_H +#define _CUSTOM_SHAPE_H + +#define CUSTOM_SHAPE_DEBUG 0 + +#include "expr_types.h" +#include "custom_shape_types.h" +#include "preset_types.h" + +void free_custom_shape(custom_shape_t * custom_shape); +custom_shape_t * new_custom_shape(int id); +custom_shape_t * find_custom_shape(int id, preset_t * preset, int create_flag); +void load_unspecified_init_conds_shape(custom_shape_t * custom_shape); +void evalCustomShapeInitConditions(preset_t *preset); +custom_shape_t * nextCustomShape(preset_t *preset); + +#endif /** !_CUSTOM_SHAPE_H */ diff --git a/libprojectM/src/custom_shape_types.h b/libprojectM/src/custom_shape_types.h new file mode 100755 index 000000000..1033434f1 --- /dev/null +++ b/libprojectM/src/custom_shape_types.h @@ -0,0 +1,97 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _CUSTOM_SHAPE_TYPES_H +#define _CUSTOM_SHAPE_TYPES_H + +#include "common.h" +#include "splaytree_types.h" +#include "expr_types.h" + +typedef struct CUSTOM_SHAPE_T { + + /* Numerical id */ + int id; + int per_frame_count; + + /* Parameter tree associated with this custom shape */ + splaytree_t * param_tree; + + + /* Engine variables */ + int sides; + int thickOutline; + int enabled; + int additive; + int textured; + + float tex_zoom; + float tex_ang; + + float x; /* x position for per point equations */ + float y; /* y position for per point equations */ + float radius; + float ang; + + float r; /* red color value */ + float g; /* green color value */ + float b; /* blue color value */ + float a; /* alpha color value */ + + float r2; /* red color value */ + float g2; /* green color value */ + float b2; /* blue color value */ + float a2; /* alpha color value */ + + float border_r; /* red color value */ + float border_g; /* green color value */ + float border_b; /* blue color value */ + float border_a; /* alpha color value */ + + /* stupid t variables */ + float t1; + float t2; + float t3; + float t4; + float t5; + float t6; + float t7; + float t8; + + /* Data structure to hold per frame / per frame init equations */ + splaytree_t * init_cond_tree; + splaytree_t * per_frame_eqn_tree; + splaytree_t * per_frame_init_eqn_tree; + + /* Denotes the index of the last character for each string buffer */ + int per_frame_eqn_string_index; + int per_frame_init_eqn_string_index; + + /* String buffers for per frame / per frame init equations */ + char per_frame_eqn_string_buffer[STRING_BUFFER_SIZE]; + char per_frame_init_eqn_string_buffer[STRING_BUFFER_SIZE]; + /* Per point equation array */ + + +} custom_shape_t; + + +#endif /** !_CUSTOM_SHAPE_TYPES_H */ diff --git a/libprojectM/src/custom_wave.cc b/libprojectM/src/custom_wave.cc new file mode 100755 index 000000000..9fec1f93e --- /dev/null +++ b/libprojectM/src/custom_wave.cc @@ -0,0 +1,754 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#include +#include +#include + +#include "projectM.h" + +#include "common.h" +#include "fatal.h" + +#include "param_types.h" +#include "param.h" + +#include "expr_types.h" +#include "eval.h" + +#include "splaytree_types.h" +#include "splaytree.h" +#include "tree_types.h" + +#include "per_frame_eqn_types.h" +#include "per_frame_eqn.h" + +#include "init_cond_types.h" +#include "init_cond.h" + +#include "preset_types.h" + +#include "custom_wave_types.h" +#include "custom_wave.h" + +#include "init_cond_types.h" +#include "init_cond.h" + +#include "wipemalloc.h" + +#define MAX_SAMPLE_SIZE 4096 + +extern int mesh_i; + +custom_wave_t * interface_wave = NULL; +int interface_id = 0; +void eval_custom_wave_init_conds(custom_wave_t * custom_wave); +void load_unspec_init_cond(param_t * param); +void destroy_per_point_eqn_tree(splaytree_t * tree); +void destroy_param_db_tree(splaytree_t * tree); +void destroy_per_frame_eqn_tree(splaytree_t * tree); +void destroy_per_frame_init_eqn_tree(splaytree_t * tree); +void destroy_init_cond_tree(splaytree_t * tree); +void evalPerPointEqn(per_point_eqn_t * per_point_eqn); + +custom_wave_t * new_custom_wave(int id) { + + custom_wave_t * custom_wave; + param_t * param; + + if ((custom_wave = (custom_wave_t*)wipemalloc(sizeof(custom_wave_t))) == NULL) + return NULL; + + custom_wave->id = id; + custom_wave->per_frame_count = 0; + + custom_wave->samples = 512; + custom_wave->bSpectrum = 0; + custom_wave->enabled = 1; + custom_wave->sep = 1; + custom_wave->smoothing = 0.0; + custom_wave->bUseDots = 0; + custom_wave->bAdditive = 0; + custom_wave->r = custom_wave->g = custom_wave->b = custom_wave->a = 0.0; + custom_wave->scaling = 1.0; + custom_wave->per_frame_eqn_string_index = 0; + custom_wave->per_frame_init_eqn_string_index = 0; + custom_wave->per_point_eqn_string_index = 0; + + custom_wave->r_mesh = (float*)wipemalloc(MAX_SAMPLE_SIZE*sizeof(float)); + custom_wave->g_mesh = (float*)wipemalloc(MAX_SAMPLE_SIZE*sizeof(float)); + custom_wave->b_mesh = (float*)wipemalloc(MAX_SAMPLE_SIZE*sizeof(float)); + custom_wave->a_mesh = (float*)wipemalloc(MAX_SAMPLE_SIZE*sizeof(float)); + custom_wave->x_mesh = (float*)wipemalloc(MAX_SAMPLE_SIZE*sizeof(float)); + custom_wave->y_mesh = (float*)wipemalloc(MAX_SAMPLE_SIZE*sizeof(float)); + custom_wave->value1 = (float*) wipemalloc(MAX_SAMPLE_SIZE*sizeof(float)); + custom_wave->value2 = (float*)wipemalloc(MAX_SAMPLE_SIZE*sizeof(float)); + custom_wave->sample_mesh = (float*)wipemalloc(MAX_SAMPLE_SIZE*sizeof(float)); + + /* Initialize tree data structures */ + + if ((custom_wave->param_tree = + create_splaytree((int (*)(void*, void*))compare_string, (void* (*)(void*))copy_string, (void (*)(void*))free_string)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((custom_wave->per_point_eqn_tree = + create_splaytree((int (*)(void*, void*))compare_int, (void* (*)(void*))copy_int, (void (*)(void*))free_int)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((custom_wave->per_frame_eqn_tree = + create_splaytree((int (*)(void*, void*))compare_int,(void* (*)(void*)) copy_int,(void (*)(void*)) free_int)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((custom_wave->init_cond_tree = + create_splaytree((int (*)(void*, void*))compare_string, (void*(*)(void*))copy_string,(void (*)(void*)) free_string)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((custom_wave->per_frame_init_eqn_tree = + create_splaytree((int (*)(void*, void*))compare_string, (void*(*)(void*))copy_string, (void (*)(void*))free_string)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + + /* Start: Load custom wave parameters */ + + if ((param = new_param_float("r", P_FLAG_DONT_FREE_MATRIX | P_FLAG_PER_POINT, &custom_wave->r, custom_wave->r_mesh, 1.0, 0.0, .5)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_float("g", P_FLAG_DONT_FREE_MATRIX | P_FLAG_PER_POINT, &custom_wave->g, custom_wave->g_mesh, 1.0, 0.0, .5)) == NULL){ + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_float("b", P_FLAG_DONT_FREE_MATRIX | P_FLAG_PER_POINT, &custom_wave->b, custom_wave->b_mesh, 1.0, 0.0, .5)) == NULL){ + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_float("a", P_FLAG_DONT_FREE_MATRIX | P_FLAG_PER_POINT, &custom_wave->a, custom_wave->a_mesh, 1.0, 0.0, .5)) == NULL){ + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_float("x", P_FLAG_DONT_FREE_MATRIX | P_FLAG_PER_POINT, &custom_wave->x, custom_wave->x_mesh, 1.0, 0.0, .5)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_float("y", P_FLAG_DONT_FREE_MATRIX | P_FLAG_PER_POINT, &custom_wave->y, custom_wave->y_mesh, 1.0, 0.0, .5)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_bool("enabled", P_FLAG_NONE, &custom_wave->enabled, 1, 0, 0)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_int("sep", P_FLAG_NONE, &custom_wave->sep, 100, -100, 0)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_bool("bSpectrum", P_FLAG_NONE, &custom_wave->bSpectrum, 1, 0, 0)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_bool("bDrawThick", P_FLAG_NONE, &custom_wave->bDrawThick, 1, 0, 0)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_bool("bUseDots", P_FLAG_NONE, &custom_wave->bUseDots, 1, 0, 0)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_bool("bAdditive", P_FLAG_NONE, &custom_wave->bAdditive, 1, 0, 0)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_int("samples", P_FLAG_NONE, &custom_wave->samples, 2048, 1, 512)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_float("sample", P_FLAG_READONLY | P_FLAG_DONT_FREE_MATRIX | P_FLAG_ALWAYS_MATRIX | P_FLAG_PER_POINT, + &custom_wave->sample, custom_wave->sample_mesh, 1.0, 0.0, 0.0)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + printf("failed to insert sample\n"); + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_float("value1", P_FLAG_READONLY | P_FLAG_DONT_FREE_MATRIX | P_FLAG_ALWAYS_MATRIX | P_FLAG_PER_POINT, &custom_wave->v1, custom_wave->value1, 1.0, -1.0, 0.0)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_float("value2", P_FLAG_READONLY | P_FLAG_DONT_FREE_MATRIX | P_FLAG_ALWAYS_MATRIX | P_FLAG_PER_POINT, &custom_wave->v2, custom_wave->value2, 1.0, -1.0, 0.0)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_float("smoothing", P_FLAG_NONE, &custom_wave->smoothing, NULL, 1.0, 0.0, 0.0)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_float("scaling", P_FLAG_NONE, &custom_wave->scaling, NULL, MAX_DOUBLE_SIZE, 0.0, 1.0)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_float("t1", P_FLAG_PER_POINT | P_FLAG_TVAR, &custom_wave->t1, NULL, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, 0.0)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_float("t2", P_FLAG_PER_POINT |P_FLAG_TVAR, &custom_wave->t2, NULL, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, 0.0)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_float("t3", P_FLAG_PER_POINT |P_FLAG_TVAR, &custom_wave->t3, NULL, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, 0.0)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + if ((param = new_param_float("t4", P_FLAG_PER_POINT |P_FLAG_TVAR, &custom_wave->t4, NULL, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, 0.0)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + if ((param = new_param_float("t5", P_FLAG_TVAR, &custom_wave->t5, NULL, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, 0.0)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + if ((param = new_param_float("t6", P_FLAG_TVAR | P_FLAG_PER_POINT, &custom_wave->t6, NULL, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, 0.0)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + if ((param = new_param_float("t7", P_FLAG_TVAR | P_FLAG_PER_POINT, &custom_wave->t7, NULL, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, 0.0)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + if ((param = new_param_float("t8", P_FLAG_TVAR | P_FLAG_PER_POINT, &custom_wave->t8, NULL, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, 0.0)) == NULL) { + free_custom_wave(custom_wave); + return NULL; + } + + if (insert_param(param, custom_wave->param_tree) < 0) { + free_custom_wave(custom_wave); + return NULL; + } + + /* End of parameter loading. Note that the read only parameters associated + with custom waves (ie, sample) are global variables, and not specific to + the custom wave datastructure. */ + + + return custom_wave; + +} + +void destroy_per_frame_init_eqn_tree(splaytree_t * tree) { + + if (!tree) + return; + + splay_traverse((void (*)(void*))free_init_cond, tree); + destroy_splaytree(tree); + +} + + +void destroy_per_point_eqn_tree(splaytree_t * tree) { + + if (!tree) + return; + + splay_traverse((void (*)(void*))free_per_point_eqn, tree); + destroy_splaytree(tree); + +} + +void destroy_init_cond_tree(splaytree_t * tree) { + + if (!tree) + return; + + splay_traverse((void (*)(void*))free_init_cond, tree); + destroy_splaytree(tree); + +} + +void destroy_per_frame_eqn_tree(splaytree_t * tree) { + + + if (!tree) + return; + + splay_traverse((void (*)(void*))free_per_frame_eqn, tree); + destroy_splaytree(tree); + +} + + +void destroy_param_db_tree(splaytree_t * tree) { + + if (!tree) + return; + + splay_traverse((void (*)(void*))free_param, tree); + destroy_splaytree(tree); + +} + +/* Frees a custom wave form object */ +void free_custom_wave(custom_wave_t * custom_wave) { + + if (custom_wave == NULL) + return; + + if (custom_wave->param_tree == NULL) + return; + + destroy_per_point_eqn_tree(custom_wave->per_point_eqn_tree); + destroy_per_frame_eqn_tree(custom_wave->per_frame_eqn_tree); + destroy_init_cond_tree(custom_wave->init_cond_tree); + destroy_param_db_tree(custom_wave->param_tree); + destroy_per_frame_init_eqn_tree(custom_wave->per_frame_init_eqn_tree); + + free(custom_wave->r_mesh); + free(custom_wave->g_mesh); + free(custom_wave->b_mesh); + free(custom_wave->a_mesh); + free(custom_wave->x_mesh); + free(custom_wave->y_mesh); + free(custom_wave->value1); + free(custom_wave->value2); + free(custom_wave->sample_mesh); + + custom_wave->r_mesh = NULL; + custom_wave->g_mesh = NULL; + custom_wave->b_mesh = NULL; + custom_wave->a_mesh = NULL; + custom_wave->x_mesh = NULL; + custom_wave->y_mesh = NULL; + custom_wave->value1 = NULL; + custom_wave->value2 = NULL; + custom_wave->sample_mesh = NULL; + + free(custom_wave); + custom_wave = NULL; + + return; + +} + + + +int add_per_point_eqn(char * name, gen_expr_t * gen_expr, custom_wave_t * custom_wave) { + + per_point_eqn_t * per_point_eqn; + int index; + param_t * param = NULL; + + /* Argument checks */ + if (custom_wave == NULL) + return PROJECTM_FAILURE; + if (gen_expr == NULL) + return PROJECTM_FAILURE; + if (name == NULL) + return PROJECTM_FAILURE; + + if (CUSTOM_WAVE_DEBUG) printf("add_per_point_eqn: per pixel equation (name = \"%s\")\n", name); + + /* Search for the parameter so we know what matrix the per pixel equation is referencing */ + + if ((param = find_param_db(name, custom_wave->param_tree, TRUE)) == NULL) { + if (CUSTOM_WAVE_DEBUG) printf("add_per_point_eqn: failed to allocate a new parameter!\n"); + return PROJECTM_FAILURE; + + } + + /* Find most largest index in the splaytree */ + if ((per_point_eqn = (per_point_eqn_t*)splay_find_max(custom_wave->per_point_eqn_tree)) == NULL) + index = 0; + else + index = per_point_eqn->index+1; + + /* Create the per pixel equation given the index, parameter, and general expression */ + if ((per_point_eqn = new_per_point_eqn(index, param, gen_expr)) == NULL) + return PROJECTM_FAILURE; + if (CUSTOM_WAVE_DEBUG) + printf("add_per_point_eqn: created new equation (index = %d) (name = \"%s\")\n", per_point_eqn->index, per_point_eqn->param->name); + /* Insert the per pixel equation into the preset per pixel database */ + if (splay_insert(per_point_eqn, &per_point_eqn->index, custom_wave->per_point_eqn_tree) < 0) { + free_per_point_eqn(per_point_eqn); + return PROJECTM_FAILURE; + } + + /* Done */ + return PROJECTM_SUCCESS; +} + +per_point_eqn_t * new_per_point_eqn(int index, param_t * param, gen_expr_t * gen_expr) { + + per_point_eqn_t * per_point_eqn; + + if (param == NULL) + return NULL; + if (gen_expr == NULL) + return NULL; + + if ((per_point_eqn = (per_point_eqn_t*)wipemalloc(sizeof(per_point_eqn_t))) == NULL) + return NULL; + + + per_point_eqn->index = index; + per_point_eqn->gen_expr = gen_expr; + per_point_eqn->param = param; + return per_point_eqn; +} + + +void free_per_point_eqn(per_point_eqn_t * per_point_eqn) { + + if (per_point_eqn == NULL) + return; + + free_gen_expr(per_point_eqn->gen_expr); + + free(per_point_eqn); + per_point_eqn = NULL; + + return; +} + +custom_wave_t * find_custom_wave(int id, preset_t * preset, int create_flag) { + + custom_wave_t * custom_wave = NULL; + + if (preset == NULL) + return NULL; + + if ((custom_wave = (custom_wave_t*)splay_find(&id, preset->custom_wave_tree)) == NULL) { + + if (CUSTOM_WAVE_DEBUG) { printf("find_custom_wave: creating custom wave (id = %d)...", id);fflush(stdout);} + + if (create_flag == FALSE) { + if (CUSTOM_WAVE_DEBUG) printf("you specified not to (create flag = false), returning null\n"); + return NULL; + } + + if ((custom_wave = new_custom_wave(id)) == NULL) { + if (CUSTOM_WAVE_DEBUG) printf("failed...out of memory?\n"); + return NULL; + } + + if (CUSTOM_WAVE_DEBUG) {printf("success.Inserting..."); fflush(stdout);} + + if (splay_insert(custom_wave, &custom_wave->id, preset->custom_wave_tree) < 0) { + if (CUSTOM_WAVE_DEBUG) printf("failed!\n"); + free_custom_wave(custom_wave); + return NULL; + } + + if (CUSTOM_WAVE_DEBUG) printf("done.\n"); + } + + return custom_wave; +} + +void evalCustomWaveInitConditions(preset_t *preset) { + splay_traverse((void (*)(void*))eval_custom_wave_init_conds, preset->custom_wave_tree); +} + +void eval_custom_wave_init_conds(custom_wave_t * custom_wave) { + + splay_traverse((void (*)(void*))eval_init_cond, custom_wave->per_frame_init_eqn_tree); +} + +/* Interface function. Makes another custom wave the current + concern for per frame / point equations */ +custom_wave_t * nextCustomWave(preset_t *preset) { + + if ((interface_wave = (custom_wave_t*)splay_find(&interface_id, preset->custom_wave_tree)) == NULL) { + interface_id = 0; + return NULL; + } + + interface_id++; + + /* Evaluate all per frame equations associated with this wave */ + splay_traverse((void (*)(void*))eval_init_cond, interface_wave->init_cond_tree); + splay_traverse((void (*)(void*))eval_per_frame_eqn, interface_wave->per_frame_eqn_tree); + return interface_wave; +} + + +void evalPerPointEqns(void *) { + + int x; + + for (x = 0; x < interface_wave->samples; x++) + interface_wave->r_mesh[x] = interface_wave->r; + for (x = 0; x < interface_wave->samples; x++) + interface_wave->g_mesh[x] = interface_wave->g; + for (x = 0; x < interface_wave->samples; x++) + interface_wave->b_mesh[x] = interface_wave->b; + for (x = 0; x < interface_wave->samples; x++) + interface_wave->a_mesh[x] = interface_wave->a; + for (x = 0; x < interface_wave->samples; x++) + interface_wave->x_mesh[x] = interface_wave->x; + for (x = 0; x < interface_wave->samples; x++) + interface_wave->y_mesh[x] = interface_wave->y; + + + /* Evaluate per pixel equations */ + splay_traverse((void (*)(void*))evalPerPointEqn, interface_wave->per_point_eqn_tree); + + /* Reset index */ + mesh_i = -1; +} + +/* Evaluates a per point equation for the current custom wave given by interface_wave ptr */ +void evalPerPointEqn(per_point_eqn_t * per_point_eqn) { + + + int samples, size; + float * param_matrix; + gen_expr_t * eqn_ptr; + + samples = interface_wave->samples; + eqn_ptr = per_point_eqn->gen_expr; + + if (per_point_eqn->param->matrix == NULL) { + if ((param_matrix = (float*) (per_point_eqn->param->matrix = wipemalloc(size = samples*sizeof(float)))) == NULL) + return; + memset(param_matrix, 0, size); + } + else + param_matrix = (float*)per_point_eqn->param->matrix; + + for (mesh_i = 0; mesh_i < samples; mesh_i++) { + param_matrix[mesh_i] = eval_gen_expr(eqn_ptr); + } + + /* Now that this parameter has been referenced with a per + point equation, we let the evaluator know by setting + this flag */ + per_point_eqn->param->matrix_flag = 1; + +} + + +void load_unspecified_init_conds(custom_wave_t * custom_wave) { + + interface_wave = custom_wave; + splay_traverse((void (*)(void*))load_unspec_init_cond, interface_wave->param_tree); + interface_wave = NULL; + +} + +void load_unspec_init_cond(param_t * param) { + + init_cond_t * init_cond; + value_t init_val; + + /* Don't count these parameters as initial conditions */ + if (param->flags & P_FLAG_READONLY) + return; + if (param->flags & P_FLAG_QVAR) + return; + if (param->flags & P_FLAG_TVAR) + return; + if (param->flags & P_FLAG_USERDEF) + return; + + /* If initial condition was not defined by the preset file, force a default one + with the following code */ + if ((init_cond = (init_cond_t*)splay_find(param->name, interface_wave->init_cond_tree)) == NULL) { + + /* Make sure initial condition does not exist in the set of per frame initial equations */ + if ((init_cond = (init_cond_t*)splay_find(param->name, interface_wave->per_frame_init_eqn_tree)) != NULL) + return; + + if (param->type == P_TYPE_BOOL) + init_val.bool_val = 0; + + else if (param->type == P_TYPE_INT) + init_val.int_val = *(int*)param->engine_val; + + else if (param->type == P_TYPE_DOUBLE) + init_val.float_val = *(float*)param->engine_val; + + //printf("%s\n", param->name); + /* Create new initial condition */ + if ((init_cond = new_init_cond(param, init_val)) == NULL) + return; + + /* Insert the initial condition into this presets tree */ + if (splay_insert(init_cond, init_cond->param->name, interface_wave->init_cond_tree) < 0) { + free_init_cond(init_cond); + return; + } + + } + +} diff --git a/libprojectM/src/custom_wave.h b/libprojectM/src/custom_wave.h new file mode 100755 index 000000000..5b08a1c9a --- /dev/null +++ b/libprojectM/src/custom_wave.h @@ -0,0 +1,45 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _CUSTOM_WAVE_H +#define _CUSTOM_WAVE_H + +#define CUSTOM_WAVE_DEBUG 0 + +#include "expr_types.h" +#include "custom_wave_types.h" +#include "preset_types.h" + +void free_custom_wave(custom_wave_t * custom_wave); +custom_wave_t * new_custom_wave(int id); + +void free_per_point_eqn(per_point_eqn_t * per_point_eqn); +per_point_eqn_t * new_per_point_eqn(int index, param_t * param,gen_expr_t * gen_expr); +void reset_per_point_eqn_array(custom_wave_t * custom_wave); +custom_wave_t * find_custom_wave(int id, preset_t * preset, int create_flag); + +int add_per_point_eqn(char * name, gen_expr_t * gen_expr, custom_wave_t * custom_wave); +void evalCustomWaveInitConditions(preset_t *preset); +void evalPerPointEqns(void*); +custom_wave_t * nextCustomWave(preset_t *preset); +void load_unspecified_init_conds(custom_wave_t * custom_wave); + +#endif /** !_CUSTOM_WAVE_H */ diff --git a/libprojectM/src/custom_wave_types.h b/libprojectM/src/custom_wave_types.h new file mode 100755 index 000000000..fc18665fa --- /dev/null +++ b/libprojectM/src/custom_wave_types.h @@ -0,0 +1,114 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _CUSTOM_WAVE_TYPES_H +#define _CUSTOM_WAVE_TYPES_H + +#include "common.h" +#include "splaytree_types.h" +#include "expr_types.h" + +#define X_POINT_OP 0 +#define Y_POINT_OP 1 +#define R_POINT_OP 2 +#define G_POINT_OP 3 +#define B_POINT_OP 4 +#define A_POINT_OP 5 +#define NUM_POINT_OPS 6 + +typedef struct PER_POINT_EQN_T { + int index; + param_t * param; + gen_expr_t * gen_expr; +} per_point_eqn_t; + +typedef struct CUSTOM_WAVE_T { + + /* Numerical id */ + int id; + int per_frame_count; + + /* Parameter tree associated with this custom wave */ + splaytree_t * param_tree; + + + /* Engine variables */ + + float x; /* x position for per point equations */ + float y; /* y position for per point equations */ + float r; /* red color value */ + float g; /* green color value */ + float b; /* blue color value */ + float a; /* alpha color value */ + float * x_mesh; + float * y_mesh; + float * r_mesh; + float * b_mesh; + float * g_mesh; + float * a_mesh; + float * value1; + float * value2; + float * sample_mesh; + + int enabled; /* if nonzero then wave is visible, hidden otherwise */ + int samples; /* number of samples associated with this wave form. Usually powers of 2 */ + float sample; + int bSpectrum; /* spectrum data or pcm data */ + int bUseDots; /* draw wave as dots or lines */ + int bDrawThick; /* draw thicker lines */ + int bAdditive; /* add color values together */ + + float scaling; /* scale factor of waveform */ + float smoothing; /* smooth factor of waveform */ + int sep; /* no idea what this is yet... */ + + /* stupid t variables */ + float t1; + float t2; + float t3; + float t4; + float t5; + float t6; + float t7; + float t8; + float v1,v2; + /* Data structure to hold per frame and per point equations */ + splaytree_t * init_cond_tree; + splaytree_t * per_frame_eqn_tree; + splaytree_t * per_point_eqn_tree; + splaytree_t * per_frame_init_eqn_tree; + + /* Denotes the index of the last character for each string buffer */ + int per_point_eqn_string_index; + int per_frame_eqn_string_index; + int per_frame_init_eqn_string_index; + + /* String buffers for per point and per frame equations */ + char per_point_eqn_string_buffer[STRING_BUFFER_SIZE]; + char per_frame_eqn_string_buffer[STRING_BUFFER_SIZE]; + char per_frame_init_eqn_string_buffer[STRING_BUFFER_SIZE]; + /* Per point equation array */ + gen_expr_t * per_point_eqn_array[NUM_POINT_OPS]; + +} custom_wave_t; + + +#endif /** !_CUSTOM_WAVE_TYPES_H */ diff --git a/libprojectM/src/editor.cc b/libprojectM/src/editor.cc new file mode 100755 index 000000000..b1eb1d053 --- /dev/null +++ b/libprojectM/src/editor.cc @@ -0,0 +1,872 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/* Editor written on top of glConsole */ +#include +#include +#include + +#include "projectM.h" + +#ifdef MACOS +#include +#else +#include +#endif /** MACOS */ +#include "common.h" +#include "fatal.h" +#include "event.h" + +#include "preset_types.h" +#include "preset.h" + +#include "glConsole.h" + +#include "editor.h" +#include "interface_types.h" + +#define MAX_BUFFER_SIZE 50000 +#define KEY_REFRESH_RATE 2 +#define KEY_DELAY_TIME 15 + +extern preset_t *active_preset; +extern interface_t current_interface; + +typedef enum { + OVERWRITE, + INSERT +} edit_mode_t; + +edit_mode_t edit_mode = OVERWRITE; + +void refresh_from_cursor(char * s); +void save_cursor_pos(); +void restore_cursor_pos(); +void writeChar(char c); +void replace_char(char c); +void insert_char(char c); +void shift_buffer_right(); +void insert_newline(); +void shift_buffer_left(); +void delete_newline(); +void complete_refresh(); + +void moveCursorLeft(); +void moveCursorRight(); + +int moveCursorUp(); +int moveCursorDown(); + +int get_prev_newline_dist(); +int get_next_newline_dist(); +int key_delay_cnt = 0; +int move_to_next_newline(); +int move_to_prev_newline(); +void handle_home(); +void handle_end(); +void handle_pageup(); +void handle_pagedown(); + +gl_console_t * editor_console = NULL; +int current_font = 0; +char editor_buffer[MAX_BUFFER_SIZE]; +int key_refresh_cnt = 0; +int cursor_pos = 0; +int backup_pos = -1; +int cursorx = 0; +int cursory = 0; +int key_held_down = 0; +projectMKeycode last_sdl_key = (projectMKeycode) 0; +projectMEvent last_sdl_event; + +void (*callfunc)(void*, void*) = NULL; + +int loadEditor(char * string, void (*func)(), int screen_width, int screen_height, + int scroll_width, int scroll_height, float start_x, float start_y) { + + if (string == NULL) + return PROJECTM_FAILURE; + + + + if ((editor_console = + glConsoleCreate(screen_width, screen_height, scroll_width, scroll_height, start_x, start_y, current_font)) < 0) + return PROJECTM_FAILURE; + + /* Set colors */ + glConsoleSetFGColor(CONSOLE_GREEN, editor_console); + glConsoleSetBGColor(CONSOLE_BLACK, editor_console); + glConsoleSetCursorColor(CONSOLE_RED, editor_console); + + /* Set flags */ + glConsoleSetFlags(CONSOLE_FLAG_CURSOR_BLINKING|CONSOLE_FLAG_ALWAYS_DRAW_BACKGROUND, editor_console); + + /* Clear the console buffer */ + // glConsoleClearBuffer(editor_console); + + /* Print the characters of the passed string, realign cursor to top left */ + glConsolePrintString(string, editor_console); + glConsoleAlignCursorLeft(editor_console); + glConsoleAlignCursorUp(editor_console); + + /* Copy string into editor buffer */ + strncpy(editor_buffer, string, MAX_BUFFER_SIZE-1); + cursor_pos = 0; + + callfunc = (void (*)(void*, void*))func; + backup_pos = -1; + edit_mode = OVERWRITE; + glConsoleSetCursorStyle(BAR_STYLE, editor_console); + return PROJECTM_SUCCESS; +} + +int closeEditor() { + + + current_font = 0; + key_held_down = 0; + + glConsoleDestroy(editor_console); + editor_console = NULL; + callfunc = NULL; + return PROJECTM_SUCCESS; +} + + +void key_helper( projectMKeycode key, projectMEvent event, projectMModifier modifier) { + char c; + + switch(key) { + case PROJECTM_K_INSERT: + if (edit_mode == OVERWRITE) { + edit_mode = INSERT; + glConsoleSetCursorStyle(UNDERLINE_STYLE, editor_console); + } + else { + edit_mode = OVERWRITE; + glConsoleSetCursorStyle(BAR_STYLE, editor_console); + } + break; + case PROJECTM_K_RETURN: + if (modifier== PROJECTM_KMOD_LCTRL) { + callfunc(editor_buffer, active_preset); + } + else { + writeChar('\n'); + } + break; + case PROJECTM_K_LCTRL: + break; + case PROJECTM_K_RIGHT: + moveCursorRight(); + // glConsoleMoveCursorForward(editor_console); + break; + case PROJECTM_K_LEFT: + moveCursorLeft(); + // glConsoleMoveCursorBackward(editor_console); + break; + case PROJECTM_K_UP: + moveCursorUp(); + break; + case PROJECTM_K_DOWN: + moveCursorDown(); + // glConsoleMoveCursorDown(editor_console); + break; + case PROJECTM_K_PAGEUP: + handle_pageup(); + // glConsoleAlignCursorUp(editor_console); + break; + case PROJECTM_K_PAGEDOWN: + handle_pagedown(); + // glConsoleAlignCursorDown(editor_console); + break; + case PROJECTM_K_HOME: + handle_home(); + // glConsoleAlignCursorLeft(editor_console); + break; + case PROJECTM_K_END: + handle_end(); + // glConsoleAlignCursorRight(editor_console); + break; + case PROJECTM_K_LSHIFT: + break; + case PROJECTM_K_RSHIFT: + break; + case PROJECTM_K_CAPSLOCK: + break; + case PROJECTM_K_BACKSPACE: + writeChar('\b'); + break; + + case PROJECTM_K_ESCAPE: + closeEditor(); + current_interface = DEFAULT_INTERFACE; + break; + + default: + /* All regular characters */ + c = (char)key; + + writeChar(c); + break; + } +} + + +void editor_key_handler( projectMEvent event, projectMKeycode keycode ) { + + switch( event ) { + + case PROJECTM_KEYUP: + // printf("KEY UP\n"); + key_held_down = 0; + return; + + case PROJECTM_KEYDOWN: + // printf("KEY DOWN FIRST\n"); + key_held_down = 1; + last_sdl_key = keycode; + last_sdl_event = event; + key_helper(last_sdl_key, event, (projectMModifier)0); + key_delay_cnt = KEY_DELAY_TIME; + return; + + default: + + break; + } + + + + + + +} + +void refreshEditor() { + + /* Refresh the editor console */ + glConsoleDraw(editor_console); + + /* Update keyboard related events */ + if (key_delay_cnt > 0) + key_delay_cnt--; + else if ((key_held_down) && ((key_refresh_cnt % KEY_REFRESH_RATE) == 0)) { + key_helper(last_sdl_key, last_sdl_event, (projectMModifier)0); + } + + key_refresh_cnt++; + +} + +void moveCursorRight() { + + /* Out of bounds check */ + if (cursor_pos >= (MAX_BUFFER_SIZE-1)) + return; + + if (editor_buffer[cursor_pos+1] == 0) + return; + + /* If we are at a new line character jump down to next line */ + if (editor_buffer[cursor_pos] == '\n') { + glConsoleAlignCursorLeft(editor_console); + glConsoleMoveCursorDown(editor_console); + + } + + /* Otherwise just advance cursor forward */ + else + glConsoleMoveCursorForward(editor_console); + + //printf("editor: %c\n", editor_buffer[cursor_pos]); + /* Move cursor forward in editor buffer */ + cursor_pos++; + +} + +void moveCursorLeft() { + + /* Out of bounds check */ + if (cursor_pos <= 0) + return; + + /* If the previous (left) character is a new line jump up a line and all the way to the end of character string */ + if (editor_buffer[cursor_pos-1] == '\n') { + glConsoleMoveCursorUp(editor_console); + glConsoleCursorToNextChar('\n', editor_console); + } + + /* Otherwise just move cursor back a space */ + else + glConsoleMoveCursorBackward(editor_console); + + /* Move cursor forward in editor buffer */ + cursor_pos--; + +} + + +int moveCursorUp() { + + + int dist1, dist2; + int return_flag = PROJECTM_SUCCESS; + + /* We need this distance to: + 1) move the cursor back to the previous new line + 2) position the cursor at the same column on the previous line + */ + + /* Move cursor to previous newline character */ + if (cursor_pos == 0) + return PROJECTM_FAILURE; + + dist1 = move_to_prev_newline(); + + if (cursor_pos == 0) + return_flag = PROJECTM_FAILURE; + else { + moveCursorLeft(); + /* Again move to previous newline */ + dist2 = move_to_prev_newline(); + } + + /* Move cursor forward appropiately, stopping prematurely if new line is reached */ + while ((dist1 > 1) && (editor_buffer[cursor_pos] !='\n') && (cursor_pos <= (MAX_BUFFER_SIZE-1))) { + cursor_pos++; + glConsoleMoveCursorForward(editor_console); + dist1--; + } + + return return_flag; +} + + +int moveCursorDown() { + + int dist1, dist2; + + dist2 = get_prev_newline_dist(); + + //printf("prev new line distance: %d\n", dist2); + /* Move cursor to next line, store the distance + away from the newline. If this distance is + less than (error value) or equal to zero do nothing */ + if ((dist1 = move_to_next_newline()) <= 0) { + return PROJECTM_FAILURE; + } + // printf("distance away from next newline: %d\n", dist1); + while ((cursor_pos != (MAX_BUFFER_SIZE-1)) && (editor_buffer[cursor_pos] != '\n') && (dist2 > 0)) { + cursor_pos++; + glConsoleMoveCursorForward(editor_console); + dist2--; + } + + return PROJECTM_SUCCESS; +; +} + +int get_prev_newline_dist() { + + int cnt = 0; + + if (cursor_pos == 0) + return 0; + + /* If we are already at the newline, then skip the first character + and increment cnt */ + if (editor_buffer[cursor_pos] == '\n') { + /* Top of buffer, return 0 */ + if (cursor_pos == 0) + return 0; + /* Otherwise set count to one */ + cnt++; + } + while (editor_buffer[cursor_pos-cnt] != '\n') { + + /* In this case we are the top of the editor buffer, so stop */ + if ((cursor_pos-cnt) <= 0) + return cnt; + + cnt++; + + } + + //printf("Returning %d\n", cnt-1); + return cnt-1; +} + + +int get_next_newline_dist() { + + int cnt = 0; + + + while (editor_buffer[cursor_pos+cnt] != '\n') { + + /* In this case we have exceeded the cursor buffer, so abort action */ + if ((cursor_pos+cnt) >= (MAX_BUFFER_SIZE-1)) + return 0; + + cnt++; + + } + + return cnt; +} + +/* Moves cursor to next line, returns length away from next one. + If this is the last line, returns 0. + On error returns -1 (PROJECTM_FAILURE) +*/ + +int move_to_next_newline() { + + int cnt = 0; + + + while (editor_buffer[cursor_pos+cnt] != '\n') { + + /* In this case we have exceeded the cursor buffer, so abort action */ + if ((cursor_pos+cnt) >= (MAX_BUFFER_SIZE-1)) + return 0; + + cnt++; + + } + + + /* New line is the last character in buffer, so quit */ + if ((cursor_pos+cnt+1) > (MAX_BUFFER_SIZE-1)) + return 0; + + if (editor_buffer[cursor_pos+cnt+1] == 0) + return 0; + + /* One more time to skip past new line character */ + cnt++; + + /* Now we can move the cursor position accordingly */ + cursor_pos += cnt; + + /* Now move the console cursor to beginning of next line + These functions are smart enough to not exceed the console + without bounds checking */ + glConsoleMoveCursorDown(editor_console); + glConsoleAlignCursorLeft(editor_console); + + /* Finally, return distance cursor was away from the new line */ + return cnt; +} + +/* Moves cursor to previous line, returns length away from previous one. + If this is the first line, returns 0. + On error returns -1 (PROJECTM_FAILURE) + More specifically, the cursor will be exactly at the new line character + of the previous line. + Now its the beginning of the line, not the newline +*/ + +int move_to_prev_newline() { + + int cnt = 0; + + if (editor_buffer[cursor_pos] == '\n') { + if (cursor_pos == 0) + return 0; + else { + cnt++; + glConsoleMoveCursorBackward(editor_console); + } + } + while (((cursor_pos - cnt) > -1) && (editor_buffer[cursor_pos-cnt] != '\n')) { + + + glConsoleMoveCursorBackward(editor_console); + + cnt++; + + } + + //for (i=0;i < cnt; i++) + + + /* New line is the last character in buffer, so quit */ + // if ((cursor_pos-cnt-1) <= 0) + // return 0; + + + /* Now we can move the cursor position accordingly */ + cursor_pos -= cnt-1; + + /* Now move the console cursor to end of previous line + These functions are smart enough to not exceed the console + without bounds checking */ ; + // glConsoleMoveCursorUp(editor_console); + // glConsoleCursorToNextChar('\n', editor_console); + + /* Finally, return distance cursor was away from the new line */ + return cnt; + +} + +void handle_return() { + + +} + + +void handle_backspace() { + + +} + +void handle_home() { + + while ((cursor_pos > 0) && (editor_buffer[cursor_pos-1] != '\n')) { + cursor_pos--; + } + + glConsoleAlignCursorLeft(editor_console); + +} + +void handle_end() { + + while ((cursor_pos < (MAX_BUFFER_SIZE-1)) && (editor_buffer[cursor_pos+1] != 0) && (editor_buffer[cursor_pos] != '\n')) { + cursor_pos++; + glConsoleMoveCursorForward(editor_console); + } + + // glConsoleCursorToNextChar('\n', editor_console); + +} + +void handle_pageup() { + + int dist1; + + dist1 = move_to_prev_newline(); + + while (cursor_pos != 0) + moveCursorLeft(); + + while ((dist1 > 1) && (cursor_pos < (MAX_BUFFER_SIZE-1)) && (editor_buffer[cursor_pos+1] != 0) && (editor_buffer[cursor_pos] != '\n')) { + cursor_pos++; + glConsoleMoveCursorForward(editor_console); + dist1--; + } + +} + + +void handle_pagedown() { + + int dist1; + + dist1 = get_prev_newline_dist(); + + while (cursor_pos < (MAX_BUFFER_SIZE-2) && (editor_buffer[cursor_pos+1] != 0)) + moveCursorRight(); + + move_to_prev_newline(); + moveCursorRight(); + + while ((dist1 > 1) && (cursor_pos < (MAX_BUFFER_SIZE-1)) && (editor_buffer[cursor_pos+1] != 0) && (editor_buffer[cursor_pos] != '\n')) { + cursor_pos++; + glConsoleMoveCursorForward(editor_console); + dist1--; + } + +} + + +/* Writes a character to console and editor according to editor mode */ +void writeChar(char c) { + + switch (edit_mode) { + /* Overwrite mode, replaces cursor character with passed character. + Cursor remains standing */ + case OVERWRITE: + + /* Case on c to catch special characters */ + switch (c) { + + case '\b': /* Backspace */ + // printf("backspace case, overwrite mode:\n"); + /* At beginning of buffer, do nothing */ + if (cursor_pos == 0) + return; + + /* At first character of current line. + Default behavior is to delete the new line, + and squeeze the rest of the editor buffer back one character */ + if (editor_buffer[cursor_pos-1] == '\n') { + delete_newline(); + return; + } + + /* Normal overwrite back space case. + Here the previous character is replaced with a space, + and the cursor moves back one */ + + editor_buffer[--cursor_pos]= ' '; + (editor_console->cursor_ptr-1)->symbol = ' '; + glConsoleMoveCursorBackward(editor_console); + return; + case '\n': /* New line character */ + insert_newline(); + return; + default: /* not a special character, do typical behavior */ + // printf("DEFAULT CASE: char = %c\n", c); + + /* If cursor is sitting on the new line, then we + squeeze the pressed character between the last character + and the new line */ + if (editor_buffer[cursor_pos] == '\n') { + insert_char(c); + return; + } + + /* Otherwise, replace character in editor buffer */ + replace_char(c); + return; + } + + return; + + case INSERT: /* Insert Mode */ + switch (c) { + case '\b': /* Backspace case */ + + + if (editor_buffer[cursor_pos-1] == '\n') { + delete_newline(); + return; + } + + shift_buffer_left(); + cursor_pos--; + glConsoleMoveCursorBackward(editor_console); + refresh_from_cursor(editor_buffer+cursor_pos); + return; + + case '\n': + insert_newline(); + return; + + default: + // printf("insert_char: char = %c\n", c); + insert_char(c); + return; + } + default: /* Shouldn't happen */ + return; + + + + + } + + + + +} + +void delete_newline() { + + + if (cursor_pos == 0) + return; + + /* Move console cursor to previous line's end of character */ + glConsoleMoveCursorUp(editor_console); + glConsoleCursorToNextChar('\n', editor_console); + + shift_buffer_left(); + cursor_pos--; + + /* Lazy unoptimal refresh here */ + complete_refresh(); + return; + + + +} + +/* Refreshes entire console but retains initial cursor position */ +void complete_refresh() { + + int sx, sy; + + glConsoleGetCursorPos(&sx, &sy, editor_console); + + glConsoleSetCursorPos(0, 0, editor_console); + + glConsoleClearBuffer(editor_console); + glConsolePrintString(editor_buffer, editor_console); + glConsoleSetCursorPos(sx, sy, editor_console); + + +} +/* Helper function to insert a newline and adjust the graphical console + accordingly. Behavior is same regardless of edit mode type */ +void insert_newline() { + + + /* End of buffer, deny request */ + if (cursor_pos == (MAX_BUFFER_SIZE-1)) + return; + + shift_buffer_right(); + editor_buffer[cursor_pos] = '\n'; + + /* Lazy unoptimal refresh */ + complete_refresh(); + + cursor_pos++; + glConsoleAlignCursorLeft(editor_console); + glConsoleMoveCursorDown(editor_console); +} + +/* Helper function to insert a character. Updates the console and editor buffer + by inserting character at cursor position with passed argument, and moving + the cursor forward if possible */ +void insert_char(char c) { + + /* End of editor buffer, just replace the character instead */ + if (cursor_pos == (MAX_BUFFER_SIZE-1)) { + editor_buffer[cursor_pos] = c; + editor_console->cursor_ptr->symbol = c; + return; + } + + //printf("EDITOR BUFFER WAS:\n%s\n-----------------------------------\n", editor_buffer+cursor_pos); + + /* Shift contents of editor buffer right */ + shift_buffer_right(); + + + /* Now place the passed character at the desired location */ + editor_buffer[cursor_pos] = c; + + // printf("EDITOR BUFFER IS NOW:\n%s\n-----------------------------------\n", editor_buffer+cursor_pos); + + /* Refresh console from current cursor position */ + refresh_from_cursor(editor_buffer+cursor_pos); + + /* Move cursor forward */ + cursor_pos++; + glConsoleMoveCursorForward(editor_console); + +} + +/* Helper function to replace a character. Updates the console and editor buffer + by replacing character at cursor position with passed argument, and + moving the cursor forward if possible */ +void replace_char(char c) { + + /* End of buffer, replace character but dont go forward */ + if (cursor_pos == (MAX_BUFFER_SIZE-1)) { + editor_buffer[cursor_pos] = c; + editor_console->cursor_ptr->symbol = c; + return; + } + + /* Replace character, move cursor forward one */ + editor_buffer[cursor_pos++] = c; + editor_console->cursor_ptr->symbol = c; + glConsoleMoveCursorForward(editor_console); + +} + + +void save_cursor_pos() { + + backup_pos = cursor_pos; + glConsoleGetCursorPos(&cursorx, &cursory, editor_console); + // printf("cursor_x: %d, cursor_y: %d\n", cursorx, cursory); +} + +void restore_cursor_pos() { + + if (backup_pos == -1) + return; + cursor_pos = backup_pos; + glConsoleSetCursorPos(cursorx, cursory, editor_console); + backup_pos = -1; +} + +/* Primarily for optimization, this function refreshs the editor console from the cursor position onward + rather than the entire screen buffer */ +void refresh_from_cursor(char * s) { + + if (s == NULL) + return; + + save_cursor_pos(); + glConsolePrintString(s, editor_console); + restore_cursor_pos(); +} + + +/* Shifts editor buffer right from current cursor position */ +void shift_buffer_right() { + + int i; + char backup, backup2; + + if (cursor_pos == (MAX_BUFFER_SIZE-1)) + return; + + backup = editor_buffer[cursor_pos]; + + for (i = cursor_pos; i < (MAX_BUFFER_SIZE-1); i++) { + backup2 = editor_buffer[i+1]; + editor_buffer[i+1] = backup; + backup = backup2; + } + +} + +/* Shifts editor buffer left from current position */ +void shift_buffer_left() { + + + int i; + char backup, backup2; + + if (cursor_pos == 0) + return; + + //printf("cursor at: %c\n", editor_buffer[cursor_pos]); + backup = editor_buffer[MAX_BUFFER_SIZE-1]; + + //printf("shift_buffer_left: [before]\n%s\n", editor_buffer); + + for (i = MAX_BUFFER_SIZE-1; i >= cursor_pos; i--) { + backup2 = editor_buffer[i-1]; + editor_buffer[i-1] = backup; + backup = backup2; + } + // printf("shift_buffer_left: [after]\n%s\n", editor_buffer); + +} diff --git a/libprojectM/src/editor.h b/libprojectM/src/editor.h new file mode 100755 index 000000000..34278aba9 --- /dev/null +++ b/libprojectM/src/editor.h @@ -0,0 +1,46 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/** + * $Id: editor.h,v 1.1.1.1 2005/12/23 18:05:00 psperl Exp $ + * + * Editor + * + * $Log: editor.h,v $ + * Revision 1.1.1.1 2005/12/23 18:05:00 psperl + * Imported + * + */ + +#ifndef _EDITOR_H +#define _EDITOR_H + +#include "event.h" + +void editor_key_handler( projectMEvent event, projectMKeycode keycode ); +void key_helper( projectMKeycode key, projectMEvent event, projectMModifier modifier); +int loadEditor(char * s, void (*func)(), int screen_width, int screen_height, + int scroll_width, int scroll_height, float start_x, float start_y); +int closeEditor(); +void refreshEditor(); + + + +#endif /** !_EDITOR_H */ diff --git a/libprojectM/src/eval.cc b/libprojectM/src/eval.cc new file mode 100755 index 000000000..11b033fde --- /dev/null +++ b/libprojectM/src/eval.cc @@ -0,0 +1,685 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/* Evaluation Code */ + +#include +#include +#include "projectM.h" +#include "common.h" +#include "fatal.h" + +#include "param_types.h" +#include "func_types.h" +#include "expr_types.h" +#include "eval.h" +#include "builtin_funcs.h" +#include "wipemalloc.h" +#define EVAL_ERROR -1 + +/* All infix operators (except '=') are prototyped here */ +infix_op_t * infix_add, * infix_minus, * infix_div, * infix_mult, + * infix_or, * infix_and, * infix_mod, * infix_negative, * infix_positive; +int mesh_i=-1, mesh_j=-1; + +static inline float eval_tree_expr(tree_expr_t * tree_expr); +static inline float eval_prefun_expr(prefun_expr_t * prefun_expr); +static inline float eval_val_expr(val_expr_t * val_expr); + + +float eval_gen_expr(gen_expr_t * gen_expr) { + float l; + + if (gen_expr == NULL) + return 0; + + switch(gen_expr->type) { + case VAL_T: + return eval_val_expr((val_expr_t*)(gen_expr->item)); + case PREFUN_T: + l = eval_prefun_expr((prefun_expr_t*)(gen_expr->item)); + //if (EVAL_DEBUG) printf("eval_gen_expr: prefix function return value: %f\n", l); + return l; + case TREE_T: + return eval_tree_expr((tree_expr_t*)(gen_expr->item)); + default: + #ifdef EVAL_DEBUG + printf("eval_gen_expr: general expression matched no cases!\n"); + #endif + return EVAL_ERROR; + } + +} + +/* Evaluates functions in prefix form */ +static inline float eval_prefun_expr(prefun_expr_t * prefun_expr) { + + int i; + float rv; + + + /* This is slightly less than safe, since + who knows if the passed argument is valid. For + speed purposes we'll go with this */ + float *arg_list = (float *)wipemalloc( sizeof( float ) * prefun_expr->num_args ); + + #ifdef EVAL_DEBUG_DOUBLE + printf("fn["); + fflush(stdout); + #endif + /* Evaluate each argument before calling the function itself */ + for (i = 0; i < prefun_expr->num_args; i++) { + arg_list[i] = eval_gen_expr(prefun_expr->expr_list[i]); + #ifdef EVAL_DEBUG_DOUBLE + if (i < (prefun_expr->num_args - 1)) + printf(", "); + fflush(stdout); + #endif + } + + #ifdef EVAL_DEBUG_DOUBLE + printf("]"); + fflush(stdout); + #endif + + /* Now we call the function, passing a list of + floats as its argument */ + + rv = (prefun_expr->func_ptr)(arg_list); + free( arg_list ); + arg_list = NULL; + return rv; +} + +/* Evaluates a value expression */ +static inline float eval_val_expr(val_expr_t * val_expr) { + + /* Shouldn't happen */ + if (val_expr == NULL) + return EVAL_ERROR; + + /* Value is a constant, return the float value */ + if (val_expr->type == CONSTANT_TERM_T) { + #ifdef EVAL_DEBUG + printf("%.4f", val_expr->term.constant); + fflush(stdout); + #endif + return (val_expr->term.constant); + } + + /* Value is variable, dereference it */ + if (val_expr->type == PARAM_TERM_T) { + switch (val_expr->term.param->type) { + + case P_TYPE_BOOL: + #ifdef EVAL_DEBUG + printf("(%s:%.4f)", val_expr->term.param->name, (float)(*((int*)(val_expr->term.param->engine_val)))); + fflush(stdout); + #endif + + + return (float)(*((int*)(val_expr->term.param->engine_val))); + case P_TYPE_INT: + #ifdef EVAL_DEBUG + printf("(%s:%.4f)", val_expr->term.param->name, (float)(*((int*)(val_expr->term.param->engine_val)))); + fflush(stdout); + #endif + + + return (float)(*((int*)(val_expr->term.param->engine_val))); + case P_TYPE_DOUBLE: + #ifdef EVAL_DEBUG_DOUBLE + printf("(%s:%.4f)", val_expr->term.param->name, (*((float*)val_expr->term.param->engine_val))); + fflush(stdout); + #endif + + if (val_expr->term.param->matrix_flag | (val_expr->term.param->flags & P_FLAG_ALWAYS_MATRIX)) { + /** Sanity check the matrix is there... */ + if ( val_expr->term.param->matrix == NULL ) { + printf( "param->matrix == NULL! [%s]\tmesh: %d x %d\n", val_expr->term.param->name, mesh_i, mesh_j ); + return EVAL_ERROR; + } + if (mesh_i >= 0) { + if (mesh_j >= 0) { + return (((float**)val_expr->term.param->matrix)[mesh_i][mesh_j]); + } else { + return (((float*)val_expr->term.param->matrix)[mesh_i]); + } + } + } + return *((float*)(val_expr->term.param->engine_val)); + default: + return EVAL_ERROR; + } + } + /* Unknown type, return failure */ + return PROJECTM_FAILURE; +} + +/* Evaluates an expression tree */ +static inline float eval_tree_expr(tree_expr_t * tree_expr) { + + float left_arg, right_arg; + infix_op_t * infix_op; + + /* Shouldn't happen */ + if (tree_expr == NULL) + return EVAL_ERROR; + + /* A leaf node, evaluate the general expression. If the expression is null as well, return zero */ + if (tree_expr->infix_op == NULL) { + if (tree_expr->gen_expr == NULL) + return 0; + else + return eval_gen_expr(tree_expr->gen_expr); + } + + /* Otherwise, this node is an infix operator. Evaluate + accordingly */ + + infix_op = (infix_op_t*)tree_expr->infix_op; + #ifdef EVAL_DEBUG + printf("("); + fflush(stdout); + #endif + + left_arg = eval_tree_expr(tree_expr->left); + + #ifdef EVAL_DEBUG + + switch (infix_op->type) { + case INFIX_ADD: + printf("+"); + break; + case INFIX_MINUS: + printf("-"); + break; + case INFIX_MULT: + printf("*"); + break; + case INFIX_MOD: + printf("%%"); + break; + case INFIX_OR: + printf("|"); + break; + case INFIX_AND: + printf("&"); + break; + case INFIX_DIV: + printf("/"); + break; + default: + printf("?"); + } + + fflush(stdout); + #endif + + right_arg = eval_tree_expr(tree_expr->right); + + #ifdef EVAL_DEBUG + printf(")"); + fflush(stdout); + #endif + + switch (infix_op->type) { + case INFIX_ADD: + return (left_arg + right_arg); + case INFIX_MINUS: + return (left_arg - right_arg); + case INFIX_MULT: + return (left_arg * right_arg); + case INFIX_MOD: + if ((int)right_arg == 0) { + #ifdef EVAL_DEBUG + printf("eval_tree_expr: modulo zero!\n"); + #endif + return PROJECTM_DIV_BY_ZERO; + } + return ((int)left_arg % (int)right_arg); + case INFIX_OR: + return ((int)left_arg | (int)right_arg); + case INFIX_AND: + return ((int)left_arg & (int)right_arg); + case INFIX_DIV: + if (right_arg == 0) { + #ifdef EVAL_DEBUG + printf("eval_tree_expr: division by zero!\n"); + #endif + return MAX_DOUBLE_SIZE; + } + return (left_arg / right_arg); + default: + #ifdef EVAL_DEBUG + printf("eval_tree_expr: unknown infix operator!\n"); + #endif + return EVAL_ERROR; + } + + return EVAL_ERROR; +} + +/* Converts a float value to a general expression */ +gen_expr_t * const_to_expr(float val) { + + gen_expr_t * gen_expr; + val_expr_t * val_expr; + term_t term; + + term.constant = val; + + if ((val_expr = new_val_expr(CONSTANT_TERM_T, term)) == NULL) + return NULL; + + gen_expr = new_gen_expr(VAL_T, (void*)val_expr); + + if (gen_expr == NULL) { + free_val_expr(val_expr); + } + + return gen_expr; +} + +/* Converts a regular parameter to an expression */ +gen_expr_t * param_to_expr(param_t * param) { + + gen_expr_t * gen_expr = NULL; + val_expr_t * val_expr = NULL; + term_t term; + + if (param == NULL) + return NULL; + + /* This code is still a work in progress. We need + to figure out if the initial condition is used for + each per frame equation or not. I am guessing that + it isn't, and it is thusly implemented this way */ + + /* Current guess of true behavior (08/01/03) note from carm + First try to use the per_pixel_expr (with cloning). + If it is null however, use the engine variable instead. */ + + /* 08/20/03 : Presets are now objects, as well as per pixel equations. This ends up + making the parser handle the case where parameters are essentially per pixel equation + substitutions */ + + + term.param = param; + if ((val_expr = new_val_expr(PARAM_TERM_T, term)) == NULL) + return NULL; + + if ((gen_expr = new_gen_expr(VAL_T, (void*)val_expr)) == NULL) { + free_val_expr(val_expr); + return NULL; + } + return gen_expr; +} + +/* Converts a prefix function to an expression */ +gen_expr_t * prefun_to_expr(float (*func_ptr)(), gen_expr_t ** expr_list, int num_args) { + + gen_expr_t * gen_expr; + prefun_expr_t * prefun_expr; + + + /* Malloc a new prefix function expression */ + prefun_expr = (prefun_expr_t*)wipemalloc(sizeof(prefun_expr_t)); + + if (prefun_expr == NULL) + return NULL; + + prefun_expr->num_args = num_args; + prefun_expr->func_ptr =(float (*)(void*)) func_ptr; + prefun_expr->expr_list = expr_list; + + gen_expr = new_gen_expr(PREFUN_T, (void*)prefun_expr); + + if (gen_expr == NULL) + free_prefun_expr(prefun_expr); + + return gen_expr; +} + +/* Creates a new tree expression */ +tree_expr_t * new_tree_expr(infix_op_t * infix_op, gen_expr_t * gen_expr, tree_expr_t * left, tree_expr_t * right) { + + tree_expr_t * tree_expr; + tree_expr = (tree_expr_t*)wipemalloc(sizeof(tree_expr_t)); + + if (tree_expr == NULL) + return NULL; + tree_expr->infix_op = infix_op; + tree_expr->gen_expr = gen_expr; + tree_expr->left = left; + tree_expr->right = right; + return tree_expr; +} + + +/* Creates a new value expression */ +val_expr_t * new_val_expr(int type, term_t term) { + + val_expr_t * val_expr; + val_expr = (val_expr_t*)wipemalloc(sizeof(val_expr_t)); + + if (val_expr == NULL) + return NULL; + + val_expr->type = type; + val_expr->term = term; + + return val_expr; +} + +/* Creates a new general expression */ +gen_expr_t * new_gen_expr(int type, void * item) { + + gen_expr_t * gen_expr; + + gen_expr = (gen_expr_t*)wipemalloc(sizeof(gen_expr_t)); + if (gen_expr == NULL) + return NULL; + gen_expr->type = type; + gen_expr->item = item; + + return gen_expr; +} + +/* Frees a general expression */ +int free_gen_expr(gen_expr_t * gen_expr) { + + if (gen_expr == NULL) + return PROJECTM_SUCCESS; + + switch (gen_expr->type) { + case VAL_T: + free_val_expr((val_expr_t*)(gen_expr->item)); + break; + case PREFUN_T: + free_prefun_expr((prefun_expr_t*)(gen_expr->item)); + break; + case TREE_T: + free_tree_expr((tree_expr_t*)(gen_expr->item)); + break; + default: + return PROJECTM_FAILURE; + } + + free(gen_expr); + gen_expr = NULL; + return PROJECTM_SUCCESS; + +} + + +/* Frees a function in prefix notation */ +int free_prefun_expr(prefun_expr_t * prefun_expr) { + + int i; + if (prefun_expr == NULL) + return PROJECTM_SUCCESS; + + /* Free every element in expression list */ + for (i = 0 ; i < prefun_expr->num_args; i++) { + free_gen_expr(prefun_expr->expr_list[i]); + } + free(prefun_expr->expr_list); + free(prefun_expr); + prefun_expr = NULL; + return PROJECTM_SUCCESS; +} + +/* Frees values of type VARIABLE and CONSTANT */ +int free_val_expr(val_expr_t * val_expr) { + + if (val_expr == NULL) + return PROJECTM_SUCCESS; + + free(val_expr); + val_expr = NULL; + return PROJECTM_SUCCESS; +} + +/* Frees a tree expression */ +int free_tree_expr(tree_expr_t * tree_expr) { + + if (tree_expr == NULL) + return PROJECTM_SUCCESS; + + /* free left tree */ + free_tree_expr(tree_expr->left); + + /* free general expression object */ + free_gen_expr(tree_expr->gen_expr); + + /* Note that infix operators are always + stored in memory unless the program + exits, so we don't remove them here */ + + /* free right tree */ + free_tree_expr(tree_expr->right); + + + /* finally, free the struct itself */ + free(tree_expr); + tree_expr = NULL; + return PROJECTM_SUCCESS; +} + + + +/* Initializes all infix operators */ +int init_infix_ops() { + + infix_add = new_infix_op(INFIX_ADD, 4); + infix_minus = new_infix_op(INFIX_MINUS, 3); + infix_div = new_infix_op(INFIX_DIV, 2); + infix_or = new_infix_op(INFIX_OR, 5); + infix_and = new_infix_op(INFIX_AND,4); + infix_mod = new_infix_op(INFIX_MOD, 1); + infix_mult = new_infix_op(INFIX_MULT, 2); + + /* Prefix operators */ + infix_positive = new_infix_op(INFIX_ADD, 0); + infix_negative = new_infix_op(INFIX_MINUS, 0); + + return PROJECTM_SUCCESS; +} + +/* Destroys the infix operator list. This should + be done on program exit */ +int destroy_infix_ops() +{ + + free(infix_add); + free(infix_minus); + free(infix_div); + free(infix_or); + free(infix_and); + free(infix_mod); + free(infix_mult); + free(infix_positive); + free(infix_negative); + + infix_add = NULL; + infix_minus = NULL; + infix_div = NULL; + infix_or = NULL; + infix_and = NULL; + infix_mod = NULL; + infix_mult = NULL; + infix_positive = NULL; + infix_negative = NULL; + + return PROJECTM_SUCCESS; +} + +/* Initializes an infix operator */ +infix_op_t * new_infix_op(int type, int precedence) { + + infix_op_t * infix_op; + + infix_op = (infix_op_t*)wipemalloc(sizeof(infix_op_t)); + + if (infix_op == NULL) + return NULL; + + infix_op->type = type; + infix_op->precedence = precedence; + + return infix_op; +} + + + + +/* Clones a general expression */ +gen_expr_t * clone_gen_expr(gen_expr_t * gen_expr) { + + gen_expr_t * new_gen_expr; + val_expr_t * val_expr; + tree_expr_t * tree_expr; + prefun_expr_t * prefun_expr; + + /* Null argument check */ + if (gen_expr == NULL) + return NULL; + + /* Out of memory */ + if ((new_gen_expr = (gen_expr_t*)wipemalloc(sizeof(gen_expr_t))) == NULL) + return NULL; + + /* Case on the type of general expression */ + switch (new_gen_expr->type = gen_expr->type) { + + case VAL_T: /* val expression */ + if ((val_expr = clone_val_expr((val_expr_t*)gen_expr->item)) == NULL) { + free(new_gen_expr); + new_gen_expr = NULL; + return NULL; + } + new_gen_expr->item = (void*)val_expr; + break; + + case PREFUN_T: /* prefix function expression */ + if ((prefun_expr = clone_prefun_expr((prefun_expr_t*)gen_expr->item)) == NULL) { + free(new_gen_expr); + new_gen_expr = NULL; + return NULL; + } + new_gen_expr->item = (void*)prefun_expr; + break; + + case TREE_T: /* tree expression */ + if ((tree_expr = clone_tree_expr((tree_expr_t*)gen_expr->item)) == NULL) { + free(new_gen_expr); + new_gen_expr = NULL; + return NULL; + } + new_gen_expr->item = (void*)tree_expr; + break; + + default: /* unknown type, ut oh.. */ + free(new_gen_expr); + new_gen_expr = NULL; + return NULL; + } + + return new_gen_expr; /* Return the new (cloned) general expression */ +} + + +/* Clones a tree expression */ +tree_expr_t * clone_tree_expr(tree_expr_t * tree_expr) { + + tree_expr_t * new_tree_expr; + + /* Null argument */ + if (tree_expr == NULL) + return NULL; + + /* Out of memory */ + if ((new_tree_expr = (tree_expr_t*)wipemalloc(sizeof(tree_expr_t))) == NULL) + return NULL; + + /* Set each argument in tree_expr_t struct */ + new_tree_expr->infix_op = tree_expr->infix_op; /* infix operators are in shared memory */ + new_tree_expr->gen_expr = clone_gen_expr(tree_expr->gen_expr); /* clone the general expression */ + new_tree_expr->left = clone_tree_expr(tree_expr->left); /* clone the left tree expression */ + new_tree_expr->right = clone_tree_expr(tree_expr->right); /* clone the right tree expression */ + + return new_tree_expr; /* Return the new (cloned) tree expression */ +} + +/* Clones a value expression, currently only passes the pointer to + the value that this object represents, not a pointer to a copy of the value */ +val_expr_t * clone_val_expr(val_expr_t * val_expr) { + + val_expr_t * new_val_expr; + + /* Null argument */ + if (val_expr == NULL) + return NULL; + + /* Allocate space, check for out of memory */ + if ((new_val_expr = (val_expr_t*)wipemalloc(sizeof(val_expr_t))) == NULL) + return NULL; + + /* Set the values in the val_expr_t struct */ + new_val_expr->type = val_expr->type; + new_val_expr->term = val_expr->term; + + /* Return the new (cloned) value expression */ + return new_val_expr; +} + +/* Clones a prefix function with its arguments */ +prefun_expr_t * clone_prefun_expr(prefun_expr_t * prefun_expr) { + + int i; + prefun_expr_t * new_prefun_expr; + + /* Null argument */ + if (prefun_expr == NULL) + return NULL; + + /* Out of memory */ + if ((new_prefun_expr = (prefun_expr_t*)wipemalloc(sizeof(prefun_expr_t))) == NULL) + return NULL; + + /* Set the function argument paired with its number of arguments */ + new_prefun_expr->num_args = prefun_expr->num_args; + new_prefun_expr->func_ptr = prefun_expr->func_ptr; + + /* Allocate space for the expression list pointers */ + if ((new_prefun_expr->expr_list = (gen_expr_t**)wipemalloc(sizeof(gen_expr_t*)*new_prefun_expr->num_args)) == NULL) { + free(new_prefun_expr); + new_prefun_expr = NULL; + return NULL; + } + + /* Now copy each general expression from the argument expression list */ + for (i = 0; i < new_prefun_expr->num_args;i++) + new_prefun_expr->expr_list[i] = clone_gen_expr(prefun_expr->expr_list[i]); + + /* Finally, return the new (cloned) prefix function expression */ + return new_prefun_expr; +} diff --git a/libprojectM/src/eval.h b/libprojectM/src/eval.h new file mode 100755 index 000000000..cb6f1e13d --- /dev/null +++ b/libprojectM/src/eval.h @@ -0,0 +1,78 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +/* eval.h: evaluation functions of expressions */ +#ifndef _EVAL_H +#define _EVAL_H + +#include "projectM.h" +#include "func_types.h" +#include "param_types.h" + +//#define EVAL_DEBUG 0 +//#define EVAL_DEBUG_DOUBLE 2 + +#define VAL_T 1 +#define PREFUN_T 3 +#define TREE_T 4 +#define NONE_T 0 + + +#define CONSTANT_TERM_T 0 +#define PARAM_TERM_T 1 + +#define INFIX_ADD 0 +#define INFIX_MINUS 1 +#define INFIX_MOD 2 +#define INFIX_DIV 3 +#define INFIX_MULT 4 +#define INFIX_OR 5 +#define INFIX_AND 6 + +float eval_gen_expr(gen_expr_t * gen_expr); +inline gen_expr_t * opt_gen_expr(gen_expr_t * gen_expr, int ** param_list); + +gen_expr_t * const_to_expr(float val); +gen_expr_t * param_to_expr(struct PARAM_T * param); +gen_expr_t * prefun_to_expr(float (*func_ptr)(), gen_expr_t ** expr_list, int num_args); + +tree_expr_t * new_tree_expr(infix_op_t * infix_op, gen_expr_t * gen_expr, tree_expr_t * left, tree_expr_t * right); +gen_expr_t * new_gen_expr(int type, void * item); +val_expr_t * new_val_expr(int type, term_t term); + +int free_gen_expr(gen_expr_t * gen_expr); +int free_prefun_expr(prefun_expr_t * prefun_expr); +int free_tree_expr(tree_expr_t * tree_expr); +int free_val_expr(val_expr_t * val_expr); + +infix_op_t * new_infix_op(int type, int precedence); +int init_infix_ops(); +int destroy_infix_ops(); +void reset_engine_vars(); + +gen_expr_t * clone_gen_expr(gen_expr_t * gen_expr); +tree_expr_t * clone_tree_expr(tree_expr_t * tree_expr); +val_expr_t * clone_val_expr(val_expr_t * val_expr); +prefun_expr_t * clone_prefun_expr(prefun_expr_t * prefun_expr); + + + +#endif /** !_EVAL_H */ diff --git a/libprojectM/src/event.h b/libprojectM/src/event.h new file mode 100755 index 000000000..2dc2be80c --- /dev/null +++ b/libprojectM/src/event.h @@ -0,0 +1,155 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/** + * $Id: event.h,v 1.1.1.1 2005/12/23 18:05:03 psperl Exp $ + * + * projectM keycodes. Enables translation from various event schemes such as Win32, SDL + * &c. + * + * $Log: event.h,v $ + * Revision 1.1.1.1 2005/12/23 18:05:03 psperl + * Imported + * + */ + +#ifndef _PROJECTM_EVENT_H +#define _PROJECTM_EVENT_H + +typedef enum { + /** Event types */ + PROJECTM_KEYUP, + PROJECTM_KEYDOWN, + PROJECTM_VIDEORESIZE, + PROJECTM_VIDEOQUIT, + PROJECTM_NONE, + } projectMEvent; + +typedef enum { + /** Keycodes */ + PROJECTM_K_RETURN, + PROJECTM_K_RIGHT, + PROJECTM_K_LEFT, + PROJECTM_K_UP, + PROJECTM_K_DOWN, + PROJECTM_K_PAGEUP, + PROJECTM_K_PAGEDOWN, + PROJECTM_K_INSERT, + PROJECTM_K_DELETE, + PROJECTM_K_ESCAPE, + PROJECTM_K_LSHIFT, + PROJECTM_K_RSHIFT, + PROJECTM_K_CAPSLOCK, + PROJECTM_K_LCTRL, + PROJECTM_K_HOME, + PROJECTM_K_END, + PROJECTM_K_BACKSPACE, + + PROJECTM_K_F1, + PROJECTM_K_F2, + PROJECTM_K_F3, + PROJECTM_K_F4, + PROJECTM_K_F5, + PROJECTM_K_F6, + PROJECTM_K_F7, + PROJECTM_K_F8, + PROJECTM_K_F9, + PROJECTM_K_F10, + PROJECTM_K_F11, + PROJECTM_K_F12, + + PROJECTM_K_0 = 48, + PROJECTM_K_1, + PROJECTM_K_2, + PROJECTM_K_3, + PROJECTM_K_4, + PROJECTM_K_5, + PROJECTM_K_6, + PROJECTM_K_7, + PROJECTM_K_8, + PROJECTM_K_9, + + PROJECTM_K_A = 65, + PROJECTM_K_B, + PROJECTM_K_C, + PROJECTM_K_D, + PROJECTM_K_E, + PROJECTM_K_F, + PROJECTM_K_G, + PROJECTM_K_H, + PROJECTM_K_I, + PROJECTM_K_J, + PROJECTM_K_K, + PROJECTM_K_L, + PROJECTM_K_M, + PROJECTM_K_N, + PROJECTM_K_O, + PROJECTM_K_P, + PROJECTM_K_Q, + PROJECTM_K_R, + PROJECTM_K_S, + PROJECTM_K_T, + PROJECTM_K_U, + PROJECTM_K_V, + PROJECTM_K_W, + PROJECTM_K_X, + PROJECTM_K_Y, + PROJECTM_K_Z, + + PROJECTM_K_a = 97, + PROJECTM_K_b, + PROJECTM_K_c, + PROJECTM_K_d, + PROJECTM_K_e, + PROJECTM_K_f, + PROJECTM_K_g, + PROJECTM_K_h, + PROJECTM_K_i, + PROJECTM_K_j, + PROJECTM_K_k, + PROJECTM_K_l, + PROJECTM_K_m, + PROJECTM_K_n, + PROJECTM_K_o, + PROJECTM_K_p, + PROJECTM_K_q, + PROJECTM_K_r, + PROJECTM_K_s, + PROJECTM_K_t, + PROJECTM_K_u, + PROJECTM_K_v, + PROJECTM_K_w, + PROJECTM_K_x, + PROJECTM_K_y, + PROJECTM_K_z, + PROJECTM_K_NONE, + } projectMKeycode; + +typedef enum { + /** Modifiers */ + PROJECTM_KMOD_LSHIFT, + PROJECTM_KMOD_RSHIFT, + PROJECTM_KMOD_CAPS, + PROJECTM_KMOD_LCTRL, + PROJECTM_KMOD_RCTRL, + } projectMModifier; + +#endif /** !_PROJECTM_EVENT_H */ + diff --git a/libprojectM/src/expr_types.h b/libprojectM/src/expr_types.h new file mode 100755 index 000000000..aeae9eb68 --- /dev/null +++ b/libprojectM/src/expr_types.h @@ -0,0 +1,70 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _EXPR_TYPES_H +#define _EXPR_TYPES_H + +#include "param_types.h" + +#define CONST_STACK_ELEMENT 0 +#define EXPR_STACK_ELEMENT 1 + +/* General Expression Type */ +typedef struct GEN_EXPR_T { + int type; + void * item; +} gen_expr_t; + +typedef union TERM_T { + float constant; /* static variable */ + struct PARAM_T * param; /* pointer to a changing variable */ +} term_t; + +/* Value expression, contains a term union */ +typedef struct VAL_EXPR_T { + int type; + term_t term; +} val_expr_t; + +/* Infix Operator Function */ +typedef struct INFIX_OP_T { + int type; + int precedence; +} infix_op_t; + +/* A binary expression tree ordered by operator precedence */ +typedef struct TREE_EXPR_T { + infix_op_t * infix_op; /* null if leaf */ + gen_expr_t * gen_expr; + struct TREE_EXPR_T * left, * right; +} tree_expr_t; + +/* A function expression in prefix form */ +typedef struct PREFUN_EXPR_T { + float (*func_ptr)(void*); + int num_args; + gen_expr_t ** expr_list; +} prefun_expr_t; + + + + +#endif /** _EXPR_TYPES_H */ diff --git a/libprojectM/src/fatal.h b/libprojectM/src/fatal.h new file mode 100755 index 000000000..d3c612ae8 --- /dev/null +++ b/libprojectM/src/fatal.h @@ -0,0 +1,42 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/** + * $Id: fatal.h,v 1.1.1.1 2005/12/23 18:05:05 psperl Exp $ + * + * Error codes + * + */ + +#ifndef _FATAL_H +#define _FATAL_H + +/* Fatal Error Definitions */ + +#define PROJECTM_OUTOFMEM_ERROR -7; /* out of memory */ +#define PROJECTM_ERROR -1 /* non specific error */ +#define PROJECTM_SUCCESS 1 +#define PROJECTM_FAILURE -1 +#define PROJECTM_PARSE_ERROR -11 +#define PROJECTM_DIV_BY_ZERO -3 +#define PROJECTM_OK 2 + +#endif /** !_FATAL_H */ + diff --git a/libprojectM/src/fftsg.cc b/libprojectM/src/fftsg.cc new file mode 100755 index 000000000..d005f77c5 --- /dev/null +++ b/libprojectM/src/fftsg.cc @@ -0,0 +1,3314 @@ +/* +Fast Fourier/Cosine/Sine Transform + dimension :one + data length :power of 2 + decimation :frequency + radix :split-radix + data :inplace + table :use +functions + cdft: Complex Discrete Fourier Transform + rdft: Real Discrete Fourier Transform + ddct: Discrete Cosine Transform + ddst: Discrete Sine Transform + dfct: Cosine Transform of RDFT (Real Symmetric DFT) + dfst: Sine Transform of RDFT (Real Anti-symmetric DFT) +function prototypes + void cdft(int, int, double *, int *, double *); + void rdft(int, int, double *, int *, double *); + void ddct(int, int, double *, int *, double *); + void ddst(int, int, double *, int *, double *); + void dfct(int, double *, double *, int *, double *); + void dfst(int, double *, double *, int *, double *); +macro definitions + USE_CDFT_PTHREADS : default=not defined + CDFT_THREADS_BEGIN_N : must be >= 512, default=8192 + CDFT_4THREADS_BEGIN_N : must be >= 512, default=65536 + USE_CDFT_WINTHREADS : default=not defined + CDFT_THREADS_BEGIN_N : must be >= 512, default=32768 + CDFT_4THREADS_BEGIN_N : must be >= 512, default=524288 + + +-------- Complex DFT (Discrete Fourier Transform) -------- + [definition] + + X[k] = sum_j=0^n-1 x[j]*exp(2*pi*i*j*k/n), 0<=k + X[k] = sum_j=0^n-1 x[j]*exp(-2*pi*i*j*k/n), 0<=k + ip[0] = 0; // first time only + cdft(2*n, 1, a, ip, w); + + ip[0] = 0; // first time only + cdft(2*n, -1, a, ip, w); + [parameters] + 2*n :data length (int) + n >= 1, n = power of 2 + a[0...2*n-1] :input/output data (double *) + input data + a[2*j] = Re(x[j]), + a[2*j+1] = Im(x[j]), 0<=j= 2+sqrt(n) + strictly, + length of ip >= + 2+(1<<(int)(log(n+0.5)/log(2))/2). + ip[0],ip[1] are pointers of the cos/sin table. + w[0...n/2-1] :cos/sin table (double *) + w[],ip[] are initialized if ip[0] == 0. + [remark] + Inverse of + cdft(2*n, -1, a, ip, w); + is + cdft(2*n, 1, a, ip, w); + for (j = 0; j <= 2 * n - 1; j++) { + a[j] *= 1.0 / n; + } + . + + +-------- Real DFT / Inverse of Real DFT -------- + [definition] + RDFT + R[k] = sum_j=0^n-1 a[j]*cos(2*pi*j*k/n), 0<=k<=n/2 + I[k] = sum_j=0^n-1 a[j]*sin(2*pi*j*k/n), 0 IRDFT (excluding scale) + a[k] = (R[0] + R[n/2]*cos(pi*k))/2 + + sum_j=1^n/2-1 R[j]*cos(2*pi*j*k/n) + + sum_j=1^n/2-1 I[j]*sin(2*pi*j*k/n), 0<=k + ip[0] = 0; // first time only + rdft(n, 1, a, ip, w); + + ip[0] = 0; // first time only + rdft(n, -1, a, ip, w); + [parameters] + n :data length (int) + n >= 2, n = power of 2 + a[0...n-1] :input/output data (double *) + + output data + a[2*k] = R[k], 0<=k + input data + a[2*j] = R[j], 0<=j= 2+sqrt(n/2) + strictly, + length of ip >= + 2+(1<<(int)(log(n/2+0.5)/log(2))/2). + ip[0],ip[1] are pointers of the cos/sin table. + w[0...n/2-1] :cos/sin table (double *) + w[],ip[] are initialized if ip[0] == 0. + [remark] + Inverse of + rdft(n, 1, a, ip, w); + is + rdft(n, -1, a, ip, w); + for (j = 0; j <= n - 1; j++) { + a[j] *= 2.0 / n; + } + . + + +-------- DCT (Discrete Cosine Transform) / Inverse of DCT -------- + [definition] + IDCT (excluding scale) + C[k] = sum_j=0^n-1 a[j]*cos(pi*j*(k+1/2)/n), 0<=k DCT + C[k] = sum_j=0^n-1 a[j]*cos(pi*(j+1/2)*k/n), 0<=k + ip[0] = 0; // first time only + ddct(n, 1, a, ip, w); + + ip[0] = 0; // first time only + ddct(n, -1, a, ip, w); + [parameters] + n :data length (int) + n >= 2, n = power of 2 + a[0...n-1] :input/output data (double *) + output data + a[k] = C[k], 0<=k= 2+sqrt(n/2) + strictly, + length of ip >= + 2+(1<<(int)(log(n/2+0.5)/log(2))/2). + ip[0],ip[1] are pointers of the cos/sin table. + w[0...n*5/4-1] :cos/sin table (double *) + w[],ip[] are initialized if ip[0] == 0. + [remark] + Inverse of + ddct(n, -1, a, ip, w); + is + a[0] *= 0.5; + ddct(n, 1, a, ip, w); + for (j = 0; j <= n - 1; j++) { + a[j] *= 2.0 / n; + } + . + + +-------- DST (Discrete Sine Transform) / Inverse of DST -------- + [definition] + IDST (excluding scale) + S[k] = sum_j=1^n A[j]*sin(pi*j*(k+1/2)/n), 0<=k DST + S[k] = sum_j=0^n-1 a[j]*sin(pi*(j+1/2)*k/n), 0 + ip[0] = 0; // first time only + ddst(n, 1, a, ip, w); + + ip[0] = 0; // first time only + ddst(n, -1, a, ip, w); + [parameters] + n :data length (int) + n >= 2, n = power of 2 + a[0...n-1] :input/output data (double *) + + input data + a[j] = A[j], 0 + output data + a[k] = S[k], 0= 2+sqrt(n/2) + strictly, + length of ip >= + 2+(1<<(int)(log(n/2+0.5)/log(2))/2). + ip[0],ip[1] are pointers of the cos/sin table. + w[0...n*5/4-1] :cos/sin table (double *) + w[],ip[] are initialized if ip[0] == 0. + [remark] + Inverse of + ddst(n, -1, a, ip, w); + is + a[0] *= 0.5; + ddst(n, 1, a, ip, w); + for (j = 0; j <= n - 1; j++) { + a[j] *= 2.0 / n; + } + . + + +-------- Cosine Transform of RDFT (Real Symmetric DFT) -------- + [definition] + C[k] = sum_j=0^n a[j]*cos(pi*j*k/n), 0<=k<=n + [usage] + ip[0] = 0; // first time only + dfct(n, a, t, ip, w); + [parameters] + n :data length - 1 (int) + n >= 2, n = power of 2 + a[0...n] :input/output data (double *) + output data + a[k] = C[k], 0<=k<=n + t[0...n/2] :work area (double *) + ip[0...*] :work area for bit reversal (int *) + length of ip >= 2+sqrt(n/4) + strictly, + length of ip >= + 2+(1<<(int)(log(n/4+0.5)/log(2))/2). + ip[0],ip[1] are pointers of the cos/sin table. + w[0...n*5/8-1] :cos/sin table (double *) + w[],ip[] are initialized if ip[0] == 0. + [remark] + Inverse of + a[0] *= 0.5; + a[n] *= 0.5; + dfct(n, a, t, ip, w); + is + a[0] *= 0.5; + a[n] *= 0.5; + dfct(n, a, t, ip, w); + for (j = 0; j <= n; j++) { + a[j] *= 2.0 / n; + } + . + + +-------- Sine Transform of RDFT (Real Anti-symmetric DFT) -------- + [definition] + S[k] = sum_j=1^n-1 a[j]*sin(pi*j*k/n), 0= 2, n = power of 2 + a[0...n-1] :input/output data (double *) + output data + a[k] = S[k], 0= 2+sqrt(n/4) + strictly, + length of ip >= + 2+(1<<(int)(log(n/4+0.5)/log(2))/2). + ip[0],ip[1] are pointers of the cos/sin table. + w[0...n*5/8-1] :cos/sin table (double *) + w[],ip[] are initialized if ip[0] == 0. + [remark] + Inverse of + dfst(n, a, t, ip, w); + is + dfst(n, a, t, ip, w); + for (j = 1; j <= n - 1; j++) { + a[j] *= 2.0 / n; + } + . + + +Appendix : + The cos/sin table is recalculated when the larger table required. + w[] and ip[] are compatible with all routines. +*/ + + +void cdft(int n, int isgn, double *a, int *ip, double *w) +{ + void makewt(int nw, int *ip, double *w); + void cftfsub(int n, double *a, int *ip, int nw, double *w); + void cftbsub(int n, double *a, int *ip, int nw, double *w); + int nw; + + nw = ip[0]; + if (n > (nw << 2)) { + nw = n >> 2; + makewt(nw, ip, w); + } + if (isgn >= 0) { + cftfsub(n, a, ip, nw, w); + } else { + cftbsub(n, a, ip, nw, w); + } +} + + +void rdft(int n, int isgn, double *a, int *ip, double *w) +{ + void makewt(int nw, int *ip, double *w); + void makect(int nc, int *ip, double *c); + void cftfsub(int n, double *a, int *ip, int nw, double *w); + void cftbsub(int n, double *a, int *ip, int nw, double *w); + void rftfsub(int n, double *a, int nc, double *c); + void rftbsub(int n, double *a, int nc, double *c); + int nw, nc; + double xi; + + nw = ip[0]; + if (n > (nw << 2)) { + nw = n >> 2; + makewt(nw, ip, w); + } + nc = ip[1]; + if (n > (nc << 2)) { + nc = n >> 2; + makect(nc, ip, w + nw); + } + if (isgn >= 0) { + if (n > 4) { + cftfsub(n, a, ip, nw, w); + rftfsub(n, a, nc, w + nw); + } else if (n == 4) { + cftfsub(n, a, ip, nw, w); + } + xi = a[0] - a[1]; + a[0] += a[1]; + a[1] = xi; + } else { + a[1] = 0.5 * (a[0] - a[1]); + a[0] -= a[1]; + if (n > 4) { + rftbsub(n, a, nc, w + nw); + cftbsub(n, a, ip, nw, w); + } else if (n == 4) { + cftbsub(n, a, ip, nw, w); + } + } +} + + +void ddct(int n, int isgn, double *a, int *ip, double *w) +{ + void makewt(int nw, int *ip, double *w); + void makect(int nc, int *ip, double *c); + void cftfsub(int n, double *a, int *ip, int nw, double *w); + void cftbsub(int n, double *a, int *ip, int nw, double *w); + void rftfsub(int n, double *a, int nc, double *c); + void rftbsub(int n, double *a, int nc, double *c); + void dctsub(int n, double *a, int nc, double *c); + int j, nw, nc; + double xr; + + nw = ip[0]; + if (n > (nw << 2)) { + nw = n >> 2; + makewt(nw, ip, w); + } + nc = ip[1]; + if (n > nc) { + nc = n; + makect(nc, ip, w + nw); + } + if (isgn < 0) { + xr = a[n - 1]; + for (j = n - 2; j >= 2; j -= 2) { + a[j + 1] = a[j] - a[j - 1]; + a[j] += a[j - 1]; + } + a[1] = a[0] - xr; + a[0] += xr; + if (n > 4) { + rftbsub(n, a, nc, w + nw); + cftbsub(n, a, ip, nw, w); + } else if (n == 4) { + cftbsub(n, a, ip, nw, w); + } + } + dctsub(n, a, nc, w + nw); + if (isgn >= 0) { + if (n > 4) { + cftfsub(n, a, ip, nw, w); + rftfsub(n, a, nc, w + nw); + } else if (n == 4) { + cftfsub(n, a, ip, nw, w); + } + xr = a[0] - a[1]; + a[0] += a[1]; + for (j = 2; j < n; j += 2) { + a[j - 1] = a[j] - a[j + 1]; + a[j] += a[j + 1]; + } + a[n - 1] = xr; + } +} + + +void ddst(int n, int isgn, double *a, int *ip, double *w) +{ + void makewt(int nw, int *ip, double *w); + void makect(int nc, int *ip, double *c); + void cftfsub(int n, double *a, int *ip, int nw, double *w); + void cftbsub(int n, double *a, int *ip, int nw, double *w); + void rftfsub(int n, double *a, int nc, double *c); + void rftbsub(int n, double *a, int nc, double *c); + void dstsub(int n, double *a, int nc, double *c); + int j, nw, nc; + double xr; + + nw = ip[0]; + if (n > (nw << 2)) { + nw = n >> 2; + makewt(nw, ip, w); + } + nc = ip[1]; + if (n > nc) { + nc = n; + makect(nc, ip, w + nw); + } + if (isgn < 0) { + xr = a[n - 1]; + for (j = n - 2; j >= 2; j -= 2) { + a[j + 1] = -a[j] - a[j - 1]; + a[j] -= a[j - 1]; + } + a[1] = a[0] + xr; + a[0] -= xr; + if (n > 4) { + rftbsub(n, a, nc, w + nw); + cftbsub(n, a, ip, nw, w); + } else if (n == 4) { + cftbsub(n, a, ip, nw, w); + } + } + dstsub(n, a, nc, w + nw); + if (isgn >= 0) { + if (n > 4) { + cftfsub(n, a, ip, nw, w); + rftfsub(n, a, nc, w + nw); + } else if (n == 4) { + cftfsub(n, a, ip, nw, w); + } + xr = a[0] - a[1]; + a[0] += a[1]; + for (j = 2; j < n; j += 2) { + a[j - 1] = -a[j] - a[j + 1]; + a[j] -= a[j + 1]; + } + a[n - 1] = -xr; + } +} + + +void dfct(int n, double *a, double *t, int *ip, double *w) +{ + void makewt(int nw, int *ip, double *w); + void makect(int nc, int *ip, double *c); + void cftfsub(int n, double *a, int *ip, int nw, double *w); + void rftfsub(int n, double *a, int nc, double *c); + void dctsub(int n, double *a, int nc, double *c); + int j, k, l, m, mh, nw, nc; + double xr, xi, yr, yi; + + nw = ip[0]; + if (n > (nw << 3)) { + nw = n >> 3; + makewt(nw, ip, w); + } + nc = ip[1]; + if (n > (nc << 1)) { + nc = n >> 1; + makect(nc, ip, w + nw); + } + m = n >> 1; + yi = a[m]; + xi = a[0] + a[n]; + a[0] -= a[n]; + t[0] = xi - yi; + t[m] = xi + yi; + if (n > 2) { + mh = m >> 1; + for (j = 1; j < mh; j++) { + k = m - j; + xr = a[j] - a[n - j]; + xi = a[j] + a[n - j]; + yr = a[k] - a[n - k]; + yi = a[k] + a[n - k]; + a[j] = xr; + a[k] = yr; + t[j] = xi - yi; + t[k] = xi + yi; + } + t[mh] = a[mh] + a[n - mh]; + a[mh] -= a[n - mh]; + dctsub(m, a, nc, w + nw); + if (m > 4) { + cftfsub(m, a, ip, nw, w); + rftfsub(m, a, nc, w + nw); + } else if (m == 4) { + cftfsub(m, a, ip, nw, w); + } + a[n - 1] = a[0] - a[1]; + a[1] = a[0] + a[1]; + for (j = m - 2; j >= 2; j -= 2) { + a[2 * j + 1] = a[j] + a[j + 1]; + a[2 * j - 1] = a[j] - a[j + 1]; + } + l = 2; + m = mh; + while (m >= 2) { + dctsub(m, t, nc, w + nw); + if (m > 4) { + cftfsub(m, t, ip, nw, w); + rftfsub(m, t, nc, w + nw); + } else if (m == 4) { + cftfsub(m, t, ip, nw, w); + } + a[n - l] = t[0] - t[1]; + a[l] = t[0] + t[1]; + k = 0; + for (j = 2; j < m; j += 2) { + k += l << 2; + a[k - l] = t[j] - t[j + 1]; + a[k + l] = t[j] + t[j + 1]; + } + l <<= 1; + mh = m >> 1; + for (j = 0; j < mh; j++) { + k = m - j; + t[j] = t[m + k] - t[m + j]; + t[k] = t[m + k] + t[m + j]; + } + t[mh] = t[m + mh]; + m = mh; + } + a[l] = t[0]; + a[n] = t[2] - t[1]; + a[0] = t[2] + t[1]; + } else { + a[1] = a[0]; + a[2] = t[0]; + a[0] = t[1]; + } +} + + +void dfst(int n, double *a, double *t, int *ip, double *w) +{ + void makewt(int nw, int *ip, double *w); + void makect(int nc, int *ip, double *c); + void cftfsub(int n, double *a, int *ip, int nw, double *w); + void rftfsub(int n, double *a, int nc, double *c); + void dstsub(int n, double *a, int nc, double *c); + int j, k, l, m, mh, nw, nc; + double xr, xi, yr, yi; + + nw = ip[0]; + if (n > (nw << 3)) { + nw = n >> 3; + makewt(nw, ip, w); + } + nc = ip[1]; + if (n > (nc << 1)) { + nc = n >> 1; + makect(nc, ip, w + nw); + } + if (n > 2) { + m = n >> 1; + mh = m >> 1; + for (j = 1; j < mh; j++) { + k = m - j; + xr = a[j] + a[n - j]; + xi = a[j] - a[n - j]; + yr = a[k] + a[n - k]; + yi = a[k] - a[n - k]; + a[j] = xr; + a[k] = yr; + t[j] = xi + yi; + t[k] = xi - yi; + } + t[0] = a[mh] - a[n - mh]; + a[mh] += a[n - mh]; + a[0] = a[m]; + dstsub(m, a, nc, w + nw); + if (m > 4) { + cftfsub(m, a, ip, nw, w); + rftfsub(m, a, nc, w + nw); + } else if (m == 4) { + cftfsub(m, a, ip, nw, w); + } + a[n - 1] = a[1] - a[0]; + a[1] = a[0] + a[1]; + for (j = m - 2; j >= 2; j -= 2) { + a[2 * j + 1] = a[j] - a[j + 1]; + a[2 * j - 1] = -a[j] - a[j + 1]; + } + l = 2; + m = mh; + while (m >= 2) { + dstsub(m, t, nc, w + nw); + if (m > 4) { + cftfsub(m, t, ip, nw, w); + rftfsub(m, t, nc, w + nw); + } else if (m == 4) { + cftfsub(m, t, ip, nw, w); + } + a[n - l] = t[1] - t[0]; + a[l] = t[0] + t[1]; + k = 0; + for (j = 2; j < m; j += 2) { + k += l << 2; + a[k - l] = -t[j] - t[j + 1]; + a[k + l] = t[j] - t[j + 1]; + } + l <<= 1; + mh = m >> 1; + for (j = 1; j < mh; j++) { + k = m - j; + t[j] = t[m + k] + t[m + j]; + t[k] = t[m + k] - t[m + j]; + } + t[0] = t[m + mh]; + m = mh; + } + a[l] = t[0]; + } + a[0] = 0; +} + + +/* -------- initializing routines -------- */ + + +#include + +void makewt(int nw, int *ip, double *w) +{ + void makeipt(int nw, int *ip); + int j, nwh, nw0, nw1; + double delta, wn4r, wk1r, wk1i, wk3r, wk3i; + + ip[0] = nw; + ip[1] = 1; + if (nw > 2) { + nwh = nw >> 1; + delta = atan(1.0) / nwh; + wn4r = cos(delta * nwh); + w[0] = 1; + w[1] = wn4r; + if (nwh == 4) { + w[2] = cos(delta * 2); + w[3] = sin(delta * 2); + } else if (nwh > 4) { + makeipt(nw, ip); + w[2] = 0.5 / cos(delta * 2); + w[3] = 0.5 / cos(delta * 6); + for (j = 4; j < nwh; j += 4) { + w[j] = cos(delta * j); + w[j + 1] = sin(delta * j); + w[j + 2] = cos(3 * delta * j); + w[j + 3] = -sin(3 * delta * j); + } + } + nw0 = 0; + while (nwh > 2) { + nw1 = nw0 + nwh; + nwh >>= 1; + w[nw1] = 1; + w[nw1 + 1] = wn4r; + if (nwh == 4) { + wk1r = w[nw0 + 4]; + wk1i = w[nw0 + 5]; + w[nw1 + 2] = wk1r; + w[nw1 + 3] = wk1i; + } else if (nwh > 4) { + wk1r = w[nw0 + 4]; + wk3r = w[nw0 + 6]; + w[nw1 + 2] = 0.5 / wk1r; + w[nw1 + 3] = 0.5 / wk3r; + for (j = 4; j < nwh; j += 4) { + wk1r = w[nw0 + 2 * j]; + wk1i = w[nw0 + 2 * j + 1]; + wk3r = w[nw0 + 2 * j + 2]; + wk3i = w[nw0 + 2 * j + 3]; + w[nw1 + j] = wk1r; + w[nw1 + j + 1] = wk1i; + w[nw1 + j + 2] = wk3r; + w[nw1 + j + 3] = wk3i; + } + } + nw0 = nw1; + } + } +} + + +void makeipt(int nw, int *ip) +{ + int j, l, m, m2, p, q; + + ip[2] = 0; + ip[3] = 16; + m = 2; + for (l = nw; l > 32; l >>= 2) { + m2 = m << 1; + q = m2 << 3; + for (j = m; j < m2; j++) { + p = ip[j] << 2; + ip[m + j] = p; + ip[m2 + j] = p + q; + } + m = m2; + } +} + + +void makect(int nc, int *ip, double *c) +{ + int j, nch; + double delta; + + ip[1] = nc; + if (nc > 1) { + nch = nc >> 1; + delta = atan(1.0) / nch; + c[0] = cos(delta * nch); + c[nch] = 0.5 * c[0]; + for (j = 1; j < nch; j++) { + c[j] = 0.5 * cos(delta * j); + c[nc - j] = 0.5 * sin(delta * j); + } + } +} + + +/* -------- child routines -------- */ + + +#ifdef USE_CDFT_PTHREADS +#define USE_CDFT_THREADS +#ifndef CDFT_THREADS_BEGIN_N +#define CDFT_THREADS_BEGIN_N 8192 +#endif +#ifndef CDFT_4THREADS_BEGIN_N +#define CDFT_4THREADS_BEGIN_N 65536 +#endif +#include +#include +#include +#define cdft_thread_t pthread_t +#define cdft_thread_create(thp,func,argp) { \ + if (pthread_create(thp, NULL, func, (void *) argp) != 0) { \ + fprintf(stderr, "cdft thread error\n"); \ + exit(1); \ + } \ +} +#define cdft_thread_wait(th) { \ + if (pthread_join(th, NULL) != 0) { \ + fprintf(stderr, "cdft thread error\n"); \ + exit(1); \ + } \ +} +#endif /* USE_CDFT_PTHREADS */ + + +#ifdef USE_CDFT_WINTHREADS +#define USE_CDFT_THREADS +#ifndef CDFT_THREADS_BEGIN_N +#define CDFT_THREADS_BEGIN_N 32768 +#endif +#ifndef CDFT_4THREADS_BEGIN_N +#define CDFT_4THREADS_BEGIN_N 524288 +#endif +#include +#include +#include +#define cdft_thread_t HANDLE +#define cdft_thread_create(thp,func,argp) { \ + DWORD thid; \ + *(thp) = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) func, (LPVOID) argp, 0, &thid); \ + if (*(thp) == 0) { \ + fprintf(stderr, "cdft thread error\n"); \ + exit(1); \ + } \ +} +#define cdft_thread_wait(th) { \ + WaitForSingleObject(th, INFINITE); \ + CloseHandle(th); \ +} +#endif /* USE_CDFT_WINTHREADS */ + + +void cftfsub(int n, double *a, int *ip, int nw, double *w) +{ + void bitrv2(int n, int *ip, double *a); + void bitrv216(double *a); + void bitrv208(double *a); + void cftf1st(int n, double *a, double *w); + void cftrec4(int n, double *a, int nw, double *w); + void cftleaf(int n, int isplt, double *a, int nw, double *w); + void cftfx41(int n, double *a, int nw, double *w); + void cftf161(double *a, double *w); + void cftf081(double *a, double *w); + void cftf040(double *a); + void cftx020(double *a); +#ifdef USE_CDFT_THREADS + void cftrec4_th(int n, double *a, int nw, double *w); +#endif /* USE_CDFT_THREADS */ + + if (n > 8) { + if (n > 32) { + cftf1st(n, a, &w[nw - (n >> 2)]); +#ifdef USE_CDFT_THREADS + if (n > CDFT_THREADS_BEGIN_N) { + cftrec4_th(n, a, nw, w); + } else +#endif /* USE_CDFT_THREADS */ + if (n > 512) { + cftrec4(n, a, nw, w); + } else if (n > 128) { + cftleaf(n, 1, a, nw, w); + } else { + cftfx41(n, a, nw, w); + } + bitrv2(n, ip, a); + } else if (n == 32) { + cftf161(a, &w[nw - 8]); + bitrv216(a); + } else { + cftf081(a, w); + bitrv208(a); + } + } else if (n == 8) { + cftf040(a); + } else if (n == 4) { + cftx020(a); + } +} + + +void cftbsub(int n, double *a, int *ip, int nw, double *w) +{ + void bitrv2conj(int n, int *ip, double *a); + void bitrv216neg(double *a); + void bitrv208neg(double *a); + void cftb1st(int n, double *a, double *w); + void cftrec4(int n, double *a, int nw, double *w); + void cftleaf(int n, int isplt, double *a, int nw, double *w); + void cftfx41(int n, double *a, int nw, double *w); + void cftf161(double *a, double *w); + void cftf081(double *a, double *w); + void cftb040(double *a); + void cftx020(double *a); +#ifdef USE_CDFT_THREADS + void cftrec4_th(int n, double *a, int nw, double *w); +#endif /* USE_CDFT_THREADS */ + + if (n > 8) { + if (n > 32) { + cftb1st(n, a, &w[nw - (n >> 2)]); +#ifdef USE_CDFT_THREADS + if (n > CDFT_THREADS_BEGIN_N) { + cftrec4_th(n, a, nw, w); + } else +#endif /* USE_CDFT_THREADS */ + if (n > 512) { + cftrec4(n, a, nw, w); + } else if (n > 128) { + cftleaf(n, 1, a, nw, w); + } else { + cftfx41(n, a, nw, w); + } + bitrv2conj(n, ip, a); + } else if (n == 32) { + cftf161(a, &w[nw - 8]); + bitrv216neg(a); + } else { + cftf081(a, w); + bitrv208neg(a); + } + } else if (n == 8) { + cftb040(a); + } else if (n == 4) { + cftx020(a); + } +} + + +void bitrv2(int n, int *ip, double *a) +{ + int j, j1, k, k1, l, m, nh, nm; + double xr, xi, yr, yi; + + m = 1; + for (l = n >> 2; l > 8; l >>= 2) { + m <<= 1; + } + nh = n >> 1; + nm = 4 * m; + if (l == 8) { + for (k = 0; k < m; k++) { + for (j = 0; j < k; j++) { + j1 = 4 * j + 2 * ip[m + k]; + k1 = 4 * k + 2 * ip[m + j]; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 += 2 * nm; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 -= nm; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 += 2 * nm; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nh; + k1 += 2; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nm; + k1 -= 2 * nm; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nm; + k1 += nm; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nm; + k1 -= 2 * nm; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += 2; + k1 += nh; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 += 2 * nm; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 -= nm; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 += 2 * nm; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nh; + k1 -= 2; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nm; + k1 -= 2 * nm; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nm; + k1 += nm; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nm; + k1 -= 2 * nm; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + } + k1 = 4 * k + 2 * ip[m + k]; + j1 = k1 + 2; + k1 += nh; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 += 2 * nm; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 -= nm; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= 2; + k1 -= nh; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nh + 2; + k1 += nh + 2; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nh - nm; + k1 += 2 * nm - 2; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + } + } else { + for (k = 0; k < m; k++) { + for (j = 0; j < k; j++) { + j1 = 4 * j + ip[m + k]; + k1 = 4 * k + ip[m + j]; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 += nm; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nh; + k1 += 2; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nm; + k1 -= nm; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += 2; + k1 += nh; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 += nm; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nh; + k1 -= 2; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nm; + k1 -= nm; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + } + k1 = 4 * k + ip[m + k]; + j1 = k1 + 2; + k1 += nh; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 += nm; + xr = a[j1]; + xi = a[j1 + 1]; + yr = a[k1]; + yi = a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + } + } +} + + +void bitrv2conj(int n, int *ip, double *a) +{ + int j, j1, k, k1, l, m, nh, nm; + double xr, xi, yr, yi; + + m = 1; + for (l = n >> 2; l > 8; l >>= 2) { + m <<= 1; + } + nh = n >> 1; + nm = 4 * m; + if (l == 8) { + for (k = 0; k < m; k++) { + for (j = 0; j < k; j++) { + j1 = 4 * j + 2 * ip[m + k]; + k1 = 4 * k + 2 * ip[m + j]; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 += 2 * nm; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 -= nm; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 += 2 * nm; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nh; + k1 += 2; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nm; + k1 -= 2 * nm; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nm; + k1 += nm; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nm; + k1 -= 2 * nm; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += 2; + k1 += nh; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 += 2 * nm; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 -= nm; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 += 2 * nm; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nh; + k1 -= 2; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nm; + k1 -= 2 * nm; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nm; + k1 += nm; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nm; + k1 -= 2 * nm; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + } + k1 = 4 * k + 2 * ip[m + k]; + j1 = k1 + 2; + k1 += nh; + a[j1 - 1] = -a[j1 - 1]; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + a[k1 + 3] = -a[k1 + 3]; + j1 += nm; + k1 += 2 * nm; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 -= nm; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= 2; + k1 -= nh; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nh + 2; + k1 += nh + 2; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nh - nm; + k1 += 2 * nm - 2; + a[j1 - 1] = -a[j1 - 1]; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + a[k1 + 3] = -a[k1 + 3]; + } + } else { + for (k = 0; k < m; k++) { + for (j = 0; j < k; j++) { + j1 = 4 * j + ip[m + k]; + k1 = 4 * k + ip[m + j]; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 += nm; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nh; + k1 += 2; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nm; + k1 -= nm; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += 2; + k1 += nh; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 += nm; + k1 += nm; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nh; + k1 -= 2; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + j1 -= nm; + k1 -= nm; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + } + k1 = 4 * k + ip[m + k]; + j1 = k1 + 2; + k1 += nh; + a[j1 - 1] = -a[j1 - 1]; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + a[k1 + 3] = -a[k1 + 3]; + j1 += nm; + k1 += nm; + a[j1 - 1] = -a[j1 - 1]; + xr = a[j1]; + xi = -a[j1 + 1]; + yr = a[k1]; + yi = -a[k1 + 1]; + a[j1] = yr; + a[j1 + 1] = yi; + a[k1] = xr; + a[k1 + 1] = xi; + a[k1 + 3] = -a[k1 + 3]; + } + } +} + + +void bitrv216(double *a) +{ + double x1r, x1i, x2r, x2i, x3r, x3i, x4r, x4i, + x5r, x5i, x7r, x7i, x8r, x8i, x10r, x10i, + x11r, x11i, x12r, x12i, x13r, x13i, x14r, x14i; + + x1r = a[2]; + x1i = a[3]; + x2r = a[4]; + x2i = a[5]; + x3r = a[6]; + x3i = a[7]; + x4r = a[8]; + x4i = a[9]; + x5r = a[10]; + x5i = a[11]; + x7r = a[14]; + x7i = a[15]; + x8r = a[16]; + x8i = a[17]; + x10r = a[20]; + x10i = a[21]; + x11r = a[22]; + x11i = a[23]; + x12r = a[24]; + x12i = a[25]; + x13r = a[26]; + x13i = a[27]; + x14r = a[28]; + x14i = a[29]; + a[2] = x8r; + a[3] = x8i; + a[4] = x4r; + a[5] = x4i; + a[6] = x12r; + a[7] = x12i; + a[8] = x2r; + a[9] = x2i; + a[10] = x10r; + a[11] = x10i; + a[14] = x14r; + a[15] = x14i; + a[16] = x1r; + a[17] = x1i; + a[20] = x5r; + a[21] = x5i; + a[22] = x13r; + a[23] = x13i; + a[24] = x3r; + a[25] = x3i; + a[26] = x11r; + a[27] = x11i; + a[28] = x7r; + a[29] = x7i; +} + + +void bitrv216neg(double *a) +{ + double x1r, x1i, x2r, x2i, x3r, x3i, x4r, x4i, + x5r, x5i, x6r, x6i, x7r, x7i, x8r, x8i, + x9r, x9i, x10r, x10i, x11r, x11i, x12r, x12i, + x13r, x13i, x14r, x14i, x15r, x15i; + + x1r = a[2]; + x1i = a[3]; + x2r = a[4]; + x2i = a[5]; + x3r = a[6]; + x3i = a[7]; + x4r = a[8]; + x4i = a[9]; + x5r = a[10]; + x5i = a[11]; + x6r = a[12]; + x6i = a[13]; + x7r = a[14]; + x7i = a[15]; + x8r = a[16]; + x8i = a[17]; + x9r = a[18]; + x9i = a[19]; + x10r = a[20]; + x10i = a[21]; + x11r = a[22]; + x11i = a[23]; + x12r = a[24]; + x12i = a[25]; + x13r = a[26]; + x13i = a[27]; + x14r = a[28]; + x14i = a[29]; + x15r = a[30]; + x15i = a[31]; + a[2] = x15r; + a[3] = x15i; + a[4] = x7r; + a[5] = x7i; + a[6] = x11r; + a[7] = x11i; + a[8] = x3r; + a[9] = x3i; + a[10] = x13r; + a[11] = x13i; + a[12] = x5r; + a[13] = x5i; + a[14] = x9r; + a[15] = x9i; + a[16] = x1r; + a[17] = x1i; + a[18] = x14r; + a[19] = x14i; + a[20] = x6r; + a[21] = x6i; + a[22] = x10r; + a[23] = x10i; + a[24] = x2r; + a[25] = x2i; + a[26] = x12r; + a[27] = x12i; + a[28] = x4r; + a[29] = x4i; + a[30] = x8r; + a[31] = x8i; +} + + +void bitrv208(double *a) +{ + double x1r, x1i, x3r, x3i, x4r, x4i, x6r, x6i; + + x1r = a[2]; + x1i = a[3]; + x3r = a[6]; + x3i = a[7]; + x4r = a[8]; + x4i = a[9]; + x6r = a[12]; + x6i = a[13]; + a[2] = x4r; + a[3] = x4i; + a[6] = x6r; + a[7] = x6i; + a[8] = x1r; + a[9] = x1i; + a[12] = x3r; + a[13] = x3i; +} + + +void bitrv208neg(double *a) +{ + double x1r, x1i, x2r, x2i, x3r, x3i, x4r, x4i, + x5r, x5i, x6r, x6i, x7r, x7i; + + x1r = a[2]; + x1i = a[3]; + x2r = a[4]; + x2i = a[5]; + x3r = a[6]; + x3i = a[7]; + x4r = a[8]; + x4i = a[9]; + x5r = a[10]; + x5i = a[11]; + x6r = a[12]; + x6i = a[13]; + x7r = a[14]; + x7i = a[15]; + a[2] = x7r; + a[3] = x7i; + a[4] = x3r; + a[5] = x3i; + a[6] = x5r; + a[7] = x5i; + a[8] = x1r; + a[9] = x1i; + a[10] = x6r; + a[11] = x6i; + a[12] = x2r; + a[13] = x2i; + a[14] = x4r; + a[15] = x4i; +} + + +void cftf1st(int n, double *a, double *w) +{ + int j, j0, j1, j2, j3, k, m, mh; + double wn4r, csc1, csc3, wk1r, wk1i, wk3r, wk3i, + wd1r, wd1i, wd3r, wd3i; + double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i, + y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i; + + mh = n >> 3; + m = 2 * mh; + j1 = m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[0] + a[j2]; + x0i = a[1] + a[j2 + 1]; + x1r = a[0] - a[j2]; + x1i = a[1] - a[j2 + 1]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + a[0] = x0r + x2r; + a[1] = x0i + x2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i - x2i; + a[j2] = x1r - x3i; + a[j2 + 1] = x1i + x3r; + a[j3] = x1r + x3i; + a[j3 + 1] = x1i - x3r; + wn4r = w[1]; + csc1 = w[2]; + csc3 = w[3]; + wd1r = 1; + wd1i = 0; + wd3r = 1; + wd3i = 0; + k = 0; + for (j = 2; j < mh - 2; j += 4) { + k += 4; + wk1r = csc1 * (wd1r + w[k]); + wk1i = csc1 * (wd1i + w[k + 1]); + wk3r = csc3 * (wd3r + w[k + 2]); + wk3i = csc3 * (wd3i + w[k + 3]); + wd1r = w[k]; + wd1i = w[k + 1]; + wd3r = w[k + 2]; + wd3i = w[k + 3]; + j1 = j + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j] + a[j2]; + x0i = a[j + 1] + a[j2 + 1]; + x1r = a[j] - a[j2]; + x1i = a[j + 1] - a[j2 + 1]; + y0r = a[j + 2] + a[j2 + 2]; + y0i = a[j + 3] + a[j2 + 3]; + y1r = a[j + 2] - a[j2 + 2]; + y1i = a[j + 3] - a[j2 + 3]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + y2r = a[j1 + 2] + a[j3 + 2]; + y2i = a[j1 + 3] + a[j3 + 3]; + y3r = a[j1 + 2] - a[j3 + 2]; + y3i = a[j1 + 3] - a[j3 + 3]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + a[j + 2] = y0r + y2r; + a[j + 3] = y0i + y2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i - x2i; + a[j1 + 2] = y0r - y2r; + a[j1 + 3] = y0i - y2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j2] = wk1r * x0r - wk1i * x0i; + a[j2 + 1] = wk1r * x0i + wk1i * x0r; + x0r = y1r - y3i; + x0i = y1i + y3r; + a[j2 + 2] = wd1r * x0r - wd1i * x0i; + a[j2 + 3] = wd1r * x0i + wd1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3] = wk3r * x0r + wk3i * x0i; + a[j3 + 1] = wk3r * x0i - wk3i * x0r; + x0r = y1r + y3i; + x0i = y1i - y3r; + a[j3 + 2] = wd3r * x0r + wd3i * x0i; + a[j3 + 3] = wd3r * x0i - wd3i * x0r; + j0 = m - j; + j1 = j0 + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j0] + a[j2]; + x0i = a[j0 + 1] + a[j2 + 1]; + x1r = a[j0] - a[j2]; + x1i = a[j0 + 1] - a[j2 + 1]; + y0r = a[j0 - 2] + a[j2 - 2]; + y0i = a[j0 - 1] + a[j2 - 1]; + y1r = a[j0 - 2] - a[j2 - 2]; + y1i = a[j0 - 1] - a[j2 - 1]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + y2r = a[j1 - 2] + a[j3 - 2]; + y2i = a[j1 - 1] + a[j3 - 1]; + y3r = a[j1 - 2] - a[j3 - 2]; + y3i = a[j1 - 1] - a[j3 - 1]; + a[j0] = x0r + x2r; + a[j0 + 1] = x0i + x2i; + a[j0 - 2] = y0r + y2r; + a[j0 - 1] = y0i + y2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i - x2i; + a[j1 - 2] = y0r - y2r; + a[j1 - 1] = y0i - y2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j2] = wk1i * x0r - wk1r * x0i; + a[j2 + 1] = wk1i * x0i + wk1r * x0r; + x0r = y1r - y3i; + x0i = y1i + y3r; + a[j2 - 2] = wd1i * x0r - wd1r * x0i; + a[j2 - 1] = wd1i * x0i + wd1r * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3] = wk3i * x0r + wk3r * x0i; + a[j3 + 1] = wk3i * x0i - wk3r * x0r; + x0r = y1r + y3i; + x0i = y1i - y3r; + a[j3 - 2] = wd3i * x0r + wd3r * x0i; + a[j3 - 1] = wd3i * x0i - wd3r * x0r; + } + wk1r = csc1 * (wd1r + wn4r); + wk1i = csc1 * (wd1i + wn4r); + wk3r = csc3 * (wd3r - wn4r); + wk3i = csc3 * (wd3i - wn4r); + j0 = mh; + j1 = j0 + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j0 - 2] + a[j2 - 2]; + x0i = a[j0 - 1] + a[j2 - 1]; + x1r = a[j0 - 2] - a[j2 - 2]; + x1i = a[j0 - 1] - a[j2 - 1]; + x2r = a[j1 - 2] + a[j3 - 2]; + x2i = a[j1 - 1] + a[j3 - 1]; + x3r = a[j1 - 2] - a[j3 - 2]; + x3i = a[j1 - 1] - a[j3 - 1]; + a[j0 - 2] = x0r + x2r; + a[j0 - 1] = x0i + x2i; + a[j1 - 2] = x0r - x2r; + a[j1 - 1] = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j2 - 2] = wk1r * x0r - wk1i * x0i; + a[j2 - 1] = wk1r * x0i + wk1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3 - 2] = wk3r * x0r + wk3i * x0i; + a[j3 - 1] = wk3r * x0i - wk3i * x0r; + x0r = a[j0] + a[j2]; + x0i = a[j0 + 1] + a[j2 + 1]; + x1r = a[j0] - a[j2]; + x1i = a[j0 + 1] - a[j2 + 1]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + a[j0] = x0r + x2r; + a[j0 + 1] = x0i + x2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j2] = wn4r * (x0r - x0i); + a[j2 + 1] = wn4r * (x0i + x0r); + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3] = -wn4r * (x0r + x0i); + a[j3 + 1] = -wn4r * (x0i - x0r); + x0r = a[j0 + 2] + a[j2 + 2]; + x0i = a[j0 + 3] + a[j2 + 3]; + x1r = a[j0 + 2] - a[j2 + 2]; + x1i = a[j0 + 3] - a[j2 + 3]; + x2r = a[j1 + 2] + a[j3 + 2]; + x2i = a[j1 + 3] + a[j3 + 3]; + x3r = a[j1 + 2] - a[j3 + 2]; + x3i = a[j1 + 3] - a[j3 + 3]; + a[j0 + 2] = x0r + x2r; + a[j0 + 3] = x0i + x2i; + a[j1 + 2] = x0r - x2r; + a[j1 + 3] = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j2 + 2] = wk1i * x0r - wk1r * x0i; + a[j2 + 3] = wk1i * x0i + wk1r * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3 + 2] = wk3i * x0r + wk3r * x0i; + a[j3 + 3] = wk3i * x0i - wk3r * x0r; +} + + +void cftb1st(int n, double *a, double *w) +{ + int j, j0, j1, j2, j3, k, m, mh; + double wn4r, csc1, csc3, wk1r, wk1i, wk3r, wk3i, + wd1r, wd1i, wd3r, wd3i; + double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i, + y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i; + + mh = n >> 3; + m = 2 * mh; + j1 = m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[0] + a[j2]; + x0i = -a[1] - a[j2 + 1]; + x1r = a[0] - a[j2]; + x1i = -a[1] + a[j2 + 1]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + a[0] = x0r + x2r; + a[1] = x0i - x2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i + x2i; + a[j2] = x1r + x3i; + a[j2 + 1] = x1i + x3r; + a[j3] = x1r - x3i; + a[j3 + 1] = x1i - x3r; + wn4r = w[1]; + csc1 = w[2]; + csc3 = w[3]; + wd1r = 1; + wd1i = 0; + wd3r = 1; + wd3i = 0; + k = 0; + for (j = 2; j < mh - 2; j += 4) { + k += 4; + wk1r = csc1 * (wd1r + w[k]); + wk1i = csc1 * (wd1i + w[k + 1]); + wk3r = csc3 * (wd3r + w[k + 2]); + wk3i = csc3 * (wd3i + w[k + 3]); + wd1r = w[k]; + wd1i = w[k + 1]; + wd3r = w[k + 2]; + wd3i = w[k + 3]; + j1 = j + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j] + a[j2]; + x0i = -a[j + 1] - a[j2 + 1]; + x1r = a[j] - a[j2]; + x1i = -a[j + 1] + a[j2 + 1]; + y0r = a[j + 2] + a[j2 + 2]; + y0i = -a[j + 3] - a[j2 + 3]; + y1r = a[j + 2] - a[j2 + 2]; + y1i = -a[j + 3] + a[j2 + 3]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + y2r = a[j1 + 2] + a[j3 + 2]; + y2i = a[j1 + 3] + a[j3 + 3]; + y3r = a[j1 + 2] - a[j3 + 2]; + y3i = a[j1 + 3] - a[j3 + 3]; + a[j] = x0r + x2r; + a[j + 1] = x0i - x2i; + a[j + 2] = y0r + y2r; + a[j + 3] = y0i - y2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i + x2i; + a[j1 + 2] = y0r - y2r; + a[j1 + 3] = y0i + y2i; + x0r = x1r + x3i; + x0i = x1i + x3r; + a[j2] = wk1r * x0r - wk1i * x0i; + a[j2 + 1] = wk1r * x0i + wk1i * x0r; + x0r = y1r + y3i; + x0i = y1i + y3r; + a[j2 + 2] = wd1r * x0r - wd1i * x0i; + a[j2 + 3] = wd1r * x0i + wd1i * x0r; + x0r = x1r - x3i; + x0i = x1i - x3r; + a[j3] = wk3r * x0r + wk3i * x0i; + a[j3 + 1] = wk3r * x0i - wk3i * x0r; + x0r = y1r - y3i; + x0i = y1i - y3r; + a[j3 + 2] = wd3r * x0r + wd3i * x0i; + a[j3 + 3] = wd3r * x0i - wd3i * x0r; + j0 = m - j; + j1 = j0 + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j0] + a[j2]; + x0i = -a[j0 + 1] - a[j2 + 1]; + x1r = a[j0] - a[j2]; + x1i = -a[j0 + 1] + a[j2 + 1]; + y0r = a[j0 - 2] + a[j2 - 2]; + y0i = -a[j0 - 1] - a[j2 - 1]; + y1r = a[j0 - 2] - a[j2 - 2]; + y1i = -a[j0 - 1] + a[j2 - 1]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + y2r = a[j1 - 2] + a[j3 - 2]; + y2i = a[j1 - 1] + a[j3 - 1]; + y3r = a[j1 - 2] - a[j3 - 2]; + y3i = a[j1 - 1] - a[j3 - 1]; + a[j0] = x0r + x2r; + a[j0 + 1] = x0i - x2i; + a[j0 - 2] = y0r + y2r; + a[j0 - 1] = y0i - y2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i + x2i; + a[j1 - 2] = y0r - y2r; + a[j1 - 1] = y0i + y2i; + x0r = x1r + x3i; + x0i = x1i + x3r; + a[j2] = wk1i * x0r - wk1r * x0i; + a[j2 + 1] = wk1i * x0i + wk1r * x0r; + x0r = y1r + y3i; + x0i = y1i + y3r; + a[j2 - 2] = wd1i * x0r - wd1r * x0i; + a[j2 - 1] = wd1i * x0i + wd1r * x0r; + x0r = x1r - x3i; + x0i = x1i - x3r; + a[j3] = wk3i * x0r + wk3r * x0i; + a[j3 + 1] = wk3i * x0i - wk3r * x0r; + x0r = y1r - y3i; + x0i = y1i - y3r; + a[j3 - 2] = wd3i * x0r + wd3r * x0i; + a[j3 - 1] = wd3i * x0i - wd3r * x0r; + } + wk1r = csc1 * (wd1r + wn4r); + wk1i = csc1 * (wd1i + wn4r); + wk3r = csc3 * (wd3r - wn4r); + wk3i = csc3 * (wd3i - wn4r); + j0 = mh; + j1 = j0 + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j0 - 2] + a[j2 - 2]; + x0i = -a[j0 - 1] - a[j2 - 1]; + x1r = a[j0 - 2] - a[j2 - 2]; + x1i = -a[j0 - 1] + a[j2 - 1]; + x2r = a[j1 - 2] + a[j3 - 2]; + x2i = a[j1 - 1] + a[j3 - 1]; + x3r = a[j1 - 2] - a[j3 - 2]; + x3i = a[j1 - 1] - a[j3 - 1]; + a[j0 - 2] = x0r + x2r; + a[j0 - 1] = x0i - x2i; + a[j1 - 2] = x0r - x2r; + a[j1 - 1] = x0i + x2i; + x0r = x1r + x3i; + x0i = x1i + x3r; + a[j2 - 2] = wk1r * x0r - wk1i * x0i; + a[j2 - 1] = wk1r * x0i + wk1i * x0r; + x0r = x1r - x3i; + x0i = x1i - x3r; + a[j3 - 2] = wk3r * x0r + wk3i * x0i; + a[j3 - 1] = wk3r * x0i - wk3i * x0r; + x0r = a[j0] + a[j2]; + x0i = -a[j0 + 1] - a[j2 + 1]; + x1r = a[j0] - a[j2]; + x1i = -a[j0 + 1] + a[j2 + 1]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + a[j0] = x0r + x2r; + a[j0 + 1] = x0i - x2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i + x2i; + x0r = x1r + x3i; + x0i = x1i + x3r; + a[j2] = wn4r * (x0r - x0i); + a[j2 + 1] = wn4r * (x0i + x0r); + x0r = x1r - x3i; + x0i = x1i - x3r; + a[j3] = -wn4r * (x0r + x0i); + a[j3 + 1] = -wn4r * (x0i - x0r); + x0r = a[j0 + 2] + a[j2 + 2]; + x0i = -a[j0 + 3] - a[j2 + 3]; + x1r = a[j0 + 2] - a[j2 + 2]; + x1i = -a[j0 + 3] + a[j2 + 3]; + x2r = a[j1 + 2] + a[j3 + 2]; + x2i = a[j1 + 3] + a[j3 + 3]; + x3r = a[j1 + 2] - a[j3 + 2]; + x3i = a[j1 + 3] - a[j3 + 3]; + a[j0 + 2] = x0r + x2r; + a[j0 + 3] = x0i - x2i; + a[j1 + 2] = x0r - x2r; + a[j1 + 3] = x0i + x2i; + x0r = x1r + x3i; + x0i = x1i + x3r; + a[j2 + 2] = wk1i * x0r - wk1r * x0i; + a[j2 + 3] = wk1i * x0i + wk1r * x0r; + x0r = x1r - x3i; + x0i = x1i - x3r; + a[j3 + 2] = wk3i * x0r + wk3r * x0i; + a[j3 + 3] = wk3i * x0i - wk3r * x0r; +} + + +#ifdef USE_CDFT_THREADS +struct cdft_arg_st { + int n0; + int n; + double *a; + int nw; + double *w; +}; +typedef struct cdft_arg_st cdft_arg_t; + + +void cftrec4_th(int n, double *a, int nw, double *w) +{ + void *cftrec1_th(void *p); + void *cftrec2_th(void *p); + int i, idiv4, m, nthread; + cdft_thread_t th[4]; + cdft_arg_t ag[4]; + + nthread = 2; + idiv4 = 0; + m = n >> 1; + if (n > CDFT_4THREADS_BEGIN_N) { + nthread = 4; + idiv4 = 1; + m >>= 1; + } + for (i = 0; i < nthread; i++) { + ag[i].n0 = n; + ag[i].n = m; + ag[i].a = &a[i * m]; + ag[i].nw = nw; + ag[i].w = w; + if (i != idiv4) { + cdft_thread_create(&th[i], cftrec1_th, &ag[i]); + } else { + cdft_thread_create(&th[i], cftrec2_th, &ag[i]); + } + } + for (i = 0; i < nthread; i++) { + cdft_thread_wait(th[i]); + } +} + + +void *cftrec1_th(void *p) +{ + int cfttree(int n, int j, int k, double *a, int nw, double *w); + void cftleaf(int n, int isplt, double *a, int nw, double *w); + void cftmdl1(int n, double *a, double *w); + int isplt, j, k, m, n, n0, nw; + double *a, *w; + + n0 = ((cdft_arg_t *) p)->n0; + n = ((cdft_arg_t *) p)->n; + a = ((cdft_arg_t *) p)->a; + nw = ((cdft_arg_t *) p)->nw; + w = ((cdft_arg_t *) p)->w; + m = n0; + while (m > 512) { + m >>= 2; + cftmdl1(m, &a[n - m], &w[nw - (m >> 1)]); + } + cftleaf(m, 1, &a[n - m], nw, w); + k = 0; + for (j = n - m; j > 0; j -= m) { + k++; + isplt = cfttree(m, j, k, a, nw, w); + cftleaf(m, isplt, &a[j - m], nw, w); + } + return (void *) 0; +} + + +void *cftrec2_th(void *p) +{ + int cfttree(int n, int j, int k, double *a, int nw, double *w); + void cftleaf(int n, int isplt, double *a, int nw, double *w); + void cftmdl2(int n, double *a, double *w); + int isplt, j, k, m, n, n0, nw; + double *a, *w; + + n0 = ((cdft_arg_t *) p)->n0; + n = ((cdft_arg_t *) p)->n; + a = ((cdft_arg_t *) p)->a; + nw = ((cdft_arg_t *) p)->nw; + w = ((cdft_arg_t *) p)->w; + k = 1; + m = n0; + while (m > 512) { + m >>= 2; + k <<= 2; + cftmdl2(m, &a[n - m], &w[nw - m]); + } + cftleaf(m, 0, &a[n - m], nw, w); + k >>= 1; + for (j = n - m; j > 0; j -= m) { + k++; + isplt = cfttree(m, j, k, a, nw, w); + cftleaf(m, isplt, &a[j - m], nw, w); + } + return (void *) 0; +} +#endif /* USE_CDFT_THREADS */ + + +void cftrec4(int n, double *a, int nw, double *w) +{ + int cfttree(int n, int j, int k, double *a, int nw, double *w); + void cftleaf(int n, int isplt, double *a, int nw, double *w); + void cftmdl1(int n, double *a, double *w); + int isplt, j, k, m; + + m = n; + while (m > 512) { + m >>= 2; + cftmdl1(m, &a[n - m], &w[nw - (m >> 1)]); + } + cftleaf(m, 1, &a[n - m], nw, w); + k = 0; + for (j = n - m; j > 0; j -= m) { + k++; + isplt = cfttree(m, j, k, a, nw, w); + cftleaf(m, isplt, &a[j - m], nw, w); + } +} + + +int cfttree(int n, int j, int k, double *a, int nw, double *w) +{ + void cftmdl1(int n, double *a, double *w); + void cftmdl2(int n, double *a, double *w); + int i, isplt, m; + + if ((k & 3) != 0) { + isplt = k & 1; + if (isplt != 0) { + cftmdl1(n, &a[j - n], &w[nw - (n >> 1)]); + } else { + cftmdl2(n, &a[j - n], &w[nw - n]); + } + } else { + m = n; + for (i = k; (i & 3) == 0; i >>= 2) { + m <<= 2; + } + isplt = i & 1; + if (isplt != 0) { + while (m > 128) { + cftmdl1(m, &a[j - m], &w[nw - (m >> 1)]); + m >>= 2; + } + } else { + while (m > 128) { + cftmdl2(m, &a[j - m], &w[nw - m]); + m >>= 2; + } + } + } + return isplt; +} + + +void cftleaf(int n, int isplt, double *a, int nw, double *w) +{ + void cftmdl1(int n, double *a, double *w); + void cftmdl2(int n, double *a, double *w); + void cftf161(double *a, double *w); + void cftf162(double *a, double *w); + void cftf081(double *a, double *w); + void cftf082(double *a, double *w); + + if (n == 512) { + cftmdl1(128, a, &w[nw - 64]); + cftf161(a, &w[nw - 8]); + cftf162(&a[32], &w[nw - 32]); + cftf161(&a[64], &w[nw - 8]); + cftf161(&a[96], &w[nw - 8]); + cftmdl2(128, &a[128], &w[nw - 128]); + cftf161(&a[128], &w[nw - 8]); + cftf162(&a[160], &w[nw - 32]); + cftf161(&a[192], &w[nw - 8]); + cftf162(&a[224], &w[nw - 32]); + cftmdl1(128, &a[256], &w[nw - 64]); + cftf161(&a[256], &w[nw - 8]); + cftf162(&a[288], &w[nw - 32]); + cftf161(&a[320], &w[nw - 8]); + cftf161(&a[352], &w[nw - 8]); + if (isplt != 0) { + cftmdl1(128, &a[384], &w[nw - 64]); + cftf161(&a[480], &w[nw - 8]); + } else { + cftmdl2(128, &a[384], &w[nw - 128]); + cftf162(&a[480], &w[nw - 32]); + } + cftf161(&a[384], &w[nw - 8]); + cftf162(&a[416], &w[nw - 32]); + cftf161(&a[448], &w[nw - 8]); + } else { + cftmdl1(64, a, &w[nw - 32]); + cftf081(a, &w[nw - 8]); + cftf082(&a[16], &w[nw - 8]); + cftf081(&a[32], &w[nw - 8]); + cftf081(&a[48], &w[nw - 8]); + cftmdl2(64, &a[64], &w[nw - 64]); + cftf081(&a[64], &w[nw - 8]); + cftf082(&a[80], &w[nw - 8]); + cftf081(&a[96], &w[nw - 8]); + cftf082(&a[112], &w[nw - 8]); + cftmdl1(64, &a[128], &w[nw - 32]); + cftf081(&a[128], &w[nw - 8]); + cftf082(&a[144], &w[nw - 8]); + cftf081(&a[160], &w[nw - 8]); + cftf081(&a[176], &w[nw - 8]); + if (isplt != 0) { + cftmdl1(64, &a[192], &w[nw - 32]); + cftf081(&a[240], &w[nw - 8]); + } else { + cftmdl2(64, &a[192], &w[nw - 64]); + cftf082(&a[240], &w[nw - 8]); + } + cftf081(&a[192], &w[nw - 8]); + cftf082(&a[208], &w[nw - 8]); + cftf081(&a[224], &w[nw - 8]); + } +} + + +void cftmdl1(int n, double *a, double *w) +{ + int j, j0, j1, j2, j3, k, m, mh; + double wn4r, wk1r, wk1i, wk3r, wk3i; + double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; + + mh = n >> 3; + m = 2 * mh; + j1 = m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[0] + a[j2]; + x0i = a[1] + a[j2 + 1]; + x1r = a[0] - a[j2]; + x1i = a[1] - a[j2 + 1]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + a[0] = x0r + x2r; + a[1] = x0i + x2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i - x2i; + a[j2] = x1r - x3i; + a[j2 + 1] = x1i + x3r; + a[j3] = x1r + x3i; + a[j3 + 1] = x1i - x3r; + wn4r = w[1]; + k = 0; + for (j = 2; j < mh; j += 2) { + k += 4; + wk1r = w[k]; + wk1i = w[k + 1]; + wk3r = w[k + 2]; + wk3i = w[k + 3]; + j1 = j + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j] + a[j2]; + x0i = a[j + 1] + a[j2 + 1]; + x1r = a[j] - a[j2]; + x1i = a[j + 1] - a[j2 + 1]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + a[j] = x0r + x2r; + a[j + 1] = x0i + x2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j2] = wk1r * x0r - wk1i * x0i; + a[j2 + 1] = wk1r * x0i + wk1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3] = wk3r * x0r + wk3i * x0i; + a[j3 + 1] = wk3r * x0i - wk3i * x0r; + j0 = m - j; + j1 = j0 + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j0] + a[j2]; + x0i = a[j0 + 1] + a[j2 + 1]; + x1r = a[j0] - a[j2]; + x1i = a[j0 + 1] - a[j2 + 1]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + a[j0] = x0r + x2r; + a[j0 + 1] = x0i + x2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j2] = wk1i * x0r - wk1r * x0i; + a[j2 + 1] = wk1i * x0i + wk1r * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3] = wk3i * x0r + wk3r * x0i; + a[j3 + 1] = wk3i * x0i - wk3r * x0r; + } + j0 = mh; + j1 = j0 + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j0] + a[j2]; + x0i = a[j0 + 1] + a[j2 + 1]; + x1r = a[j0] - a[j2]; + x1i = a[j0 + 1] - a[j2 + 1]; + x2r = a[j1] + a[j3]; + x2i = a[j1 + 1] + a[j3 + 1]; + x3r = a[j1] - a[j3]; + x3i = a[j1 + 1] - a[j3 + 1]; + a[j0] = x0r + x2r; + a[j0 + 1] = x0i + x2i; + a[j1] = x0r - x2r; + a[j1 + 1] = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + a[j2] = wn4r * (x0r - x0i); + a[j2 + 1] = wn4r * (x0i + x0r); + x0r = x1r + x3i; + x0i = x1i - x3r; + a[j3] = -wn4r * (x0r + x0i); + a[j3 + 1] = -wn4r * (x0i - x0r); +} + + +void cftmdl2(int n, double *a, double *w) +{ + int j, j0, j1, j2, j3, k, kr, m, mh; + double wn4r, wk1r, wk1i, wk3r, wk3i, wd1r, wd1i, wd3r, wd3i; + double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i, y0r, y0i, y2r, y2i; + + mh = n >> 3; + m = 2 * mh; + wn4r = w[1]; + j1 = m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[0] - a[j2 + 1]; + x0i = a[1] + a[j2]; + x1r = a[0] + a[j2 + 1]; + x1i = a[1] - a[j2]; + x2r = a[j1] - a[j3 + 1]; + x2i = a[j1 + 1] + a[j3]; + x3r = a[j1] + a[j3 + 1]; + x3i = a[j1 + 1] - a[j3]; + y0r = wn4r * (x2r - x2i); + y0i = wn4r * (x2i + x2r); + a[0] = x0r + y0r; + a[1] = x0i + y0i; + a[j1] = x0r - y0r; + a[j1 + 1] = x0i - y0i; + y0r = wn4r * (x3r - x3i); + y0i = wn4r * (x3i + x3r); + a[j2] = x1r - y0i; + a[j2 + 1] = x1i + y0r; + a[j3] = x1r + y0i; + a[j3 + 1] = x1i - y0r; + k = 0; + kr = 2 * m; + for (j = 2; j < mh; j += 2) { + k += 4; + wk1r = w[k]; + wk1i = w[k + 1]; + wk3r = w[k + 2]; + wk3i = w[k + 3]; + kr -= 4; + wd1i = w[kr]; + wd1r = w[kr + 1]; + wd3i = w[kr + 2]; + wd3r = w[kr + 3]; + j1 = j + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j] - a[j2 + 1]; + x0i = a[j + 1] + a[j2]; + x1r = a[j] + a[j2 + 1]; + x1i = a[j + 1] - a[j2]; + x2r = a[j1] - a[j3 + 1]; + x2i = a[j1 + 1] + a[j3]; + x3r = a[j1] + a[j3 + 1]; + x3i = a[j1 + 1] - a[j3]; + y0r = wk1r * x0r - wk1i * x0i; + y0i = wk1r * x0i + wk1i * x0r; + y2r = wd1r * x2r - wd1i * x2i; + y2i = wd1r * x2i + wd1i * x2r; + a[j] = y0r + y2r; + a[j + 1] = y0i + y2i; + a[j1] = y0r - y2r; + a[j1 + 1] = y0i - y2i; + y0r = wk3r * x1r + wk3i * x1i; + y0i = wk3r * x1i - wk3i * x1r; + y2r = wd3r * x3r + wd3i * x3i; + y2i = wd3r * x3i - wd3i * x3r; + a[j2] = y0r + y2r; + a[j2 + 1] = y0i + y2i; + a[j3] = y0r - y2r; + a[j3 + 1] = y0i - y2i; + j0 = m - j; + j1 = j0 + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j0] - a[j2 + 1]; + x0i = a[j0 + 1] + a[j2]; + x1r = a[j0] + a[j2 + 1]; + x1i = a[j0 + 1] - a[j2]; + x2r = a[j1] - a[j3 + 1]; + x2i = a[j1 + 1] + a[j3]; + x3r = a[j1] + a[j3 + 1]; + x3i = a[j1 + 1] - a[j3]; + y0r = wd1i * x0r - wd1r * x0i; + y0i = wd1i * x0i + wd1r * x0r; + y2r = wk1i * x2r - wk1r * x2i; + y2i = wk1i * x2i + wk1r * x2r; + a[j0] = y0r + y2r; + a[j0 + 1] = y0i + y2i; + a[j1] = y0r - y2r; + a[j1 + 1] = y0i - y2i; + y0r = wd3i * x1r + wd3r * x1i; + y0i = wd3i * x1i - wd3r * x1r; + y2r = wk3i * x3r + wk3r * x3i; + y2i = wk3i * x3i - wk3r * x3r; + a[j2] = y0r + y2r; + a[j2 + 1] = y0i + y2i; + a[j3] = y0r - y2r; + a[j3 + 1] = y0i - y2i; + } + wk1r = w[m]; + wk1i = w[m + 1]; + j0 = mh; + j1 = j0 + m; + j2 = j1 + m; + j3 = j2 + m; + x0r = a[j0] - a[j2 + 1]; + x0i = a[j0 + 1] + a[j2]; + x1r = a[j0] + a[j2 + 1]; + x1i = a[j0 + 1] - a[j2]; + x2r = a[j1] - a[j3 + 1]; + x2i = a[j1 + 1] + a[j3]; + x3r = a[j1] + a[j3 + 1]; + x3i = a[j1 + 1] - a[j3]; + y0r = wk1r * x0r - wk1i * x0i; + y0i = wk1r * x0i + wk1i * x0r; + y2r = wk1i * x2r - wk1r * x2i; + y2i = wk1i * x2i + wk1r * x2r; + a[j0] = y0r + y2r; + a[j0 + 1] = y0i + y2i; + a[j1] = y0r - y2r; + a[j1 + 1] = y0i - y2i; + y0r = wk1i * x1r - wk1r * x1i; + y0i = wk1i * x1i + wk1r * x1r; + y2r = wk1r * x3r - wk1i * x3i; + y2i = wk1r * x3i + wk1i * x3r; + a[j2] = y0r - y2r; + a[j2 + 1] = y0i - y2i; + a[j3] = y0r + y2r; + a[j3 + 1] = y0i + y2i; +} + + +void cftfx41(int n, double *a, int nw, double *w) +{ + void cftf161(double *a, double *w); + void cftf162(double *a, double *w); + void cftf081(double *a, double *w); + void cftf082(double *a, double *w); + + if (n == 128) { + cftf161(a, &w[nw - 8]); + cftf162(&a[32], &w[nw - 32]); + cftf161(&a[64], &w[nw - 8]); + cftf161(&a[96], &w[nw - 8]); + } else { + cftf081(a, &w[nw - 8]); + cftf082(&a[16], &w[nw - 8]); + cftf081(&a[32], &w[nw - 8]); + cftf081(&a[48], &w[nw - 8]); + } +} + + +void cftf161(double *a, double *w) +{ + double wn4r, wk1r, wk1i, + x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i, + y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i, + y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i, + y8r, y8i, y9r, y9i, y10r, y10i, y11r, y11i, + y12r, y12i, y13r, y13i, y14r, y14i, y15r, y15i; + + wn4r = w[1]; + wk1r = w[2]; + wk1i = w[3]; + x0r = a[0] + a[16]; + x0i = a[1] + a[17]; + x1r = a[0] - a[16]; + x1i = a[1] - a[17]; + x2r = a[8] + a[24]; + x2i = a[9] + a[25]; + x3r = a[8] - a[24]; + x3i = a[9] - a[25]; + y0r = x0r + x2r; + y0i = x0i + x2i; + y4r = x0r - x2r; + y4i = x0i - x2i; + y8r = x1r - x3i; + y8i = x1i + x3r; + y12r = x1r + x3i; + y12i = x1i - x3r; + x0r = a[2] + a[18]; + x0i = a[3] + a[19]; + x1r = a[2] - a[18]; + x1i = a[3] - a[19]; + x2r = a[10] + a[26]; + x2i = a[11] + a[27]; + x3r = a[10] - a[26]; + x3i = a[11] - a[27]; + y1r = x0r + x2r; + y1i = x0i + x2i; + y5r = x0r - x2r; + y5i = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + y9r = wk1r * x0r - wk1i * x0i; + y9i = wk1r * x0i + wk1i * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + y13r = wk1i * x0r - wk1r * x0i; + y13i = wk1i * x0i + wk1r * x0r; + x0r = a[4] + a[20]; + x0i = a[5] + a[21]; + x1r = a[4] - a[20]; + x1i = a[5] - a[21]; + x2r = a[12] + a[28]; + x2i = a[13] + a[29]; + x3r = a[12] - a[28]; + x3i = a[13] - a[29]; + y2r = x0r + x2r; + y2i = x0i + x2i; + y6r = x0r - x2r; + y6i = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + y10r = wn4r * (x0r - x0i); + y10i = wn4r * (x0i + x0r); + x0r = x1r + x3i; + x0i = x1i - x3r; + y14r = wn4r * (x0r + x0i); + y14i = wn4r * (x0i - x0r); + x0r = a[6] + a[22]; + x0i = a[7] + a[23]; + x1r = a[6] - a[22]; + x1i = a[7] - a[23]; + x2r = a[14] + a[30]; + x2i = a[15] + a[31]; + x3r = a[14] - a[30]; + x3i = a[15] - a[31]; + y3r = x0r + x2r; + y3i = x0i + x2i; + y7r = x0r - x2r; + y7i = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + y11r = wk1i * x0r - wk1r * x0i; + y11i = wk1i * x0i + wk1r * x0r; + x0r = x1r + x3i; + x0i = x1i - x3r; + y15r = wk1r * x0r - wk1i * x0i; + y15i = wk1r * x0i + wk1i * x0r; + x0r = y12r - y14r; + x0i = y12i - y14i; + x1r = y12r + y14r; + x1i = y12i + y14i; + x2r = y13r - y15r; + x2i = y13i - y15i; + x3r = y13r + y15r; + x3i = y13i + y15i; + a[24] = x0r + x2r; + a[25] = x0i + x2i; + a[26] = x0r - x2r; + a[27] = x0i - x2i; + a[28] = x1r - x3i; + a[29] = x1i + x3r; + a[30] = x1r + x3i; + a[31] = x1i - x3r; + x0r = y8r + y10r; + x0i = y8i + y10i; + x1r = y8r - y10r; + x1i = y8i - y10i; + x2r = y9r + y11r; + x2i = y9i + y11i; + x3r = y9r - y11r; + x3i = y9i - y11i; + a[16] = x0r + x2r; + a[17] = x0i + x2i; + a[18] = x0r - x2r; + a[19] = x0i - x2i; + a[20] = x1r - x3i; + a[21] = x1i + x3r; + a[22] = x1r + x3i; + a[23] = x1i - x3r; + x0r = y5r - y7i; + x0i = y5i + y7r; + x2r = wn4r * (x0r - x0i); + x2i = wn4r * (x0i + x0r); + x0r = y5r + y7i; + x0i = y5i - y7r; + x3r = wn4r * (x0r - x0i); + x3i = wn4r * (x0i + x0r); + x0r = y4r - y6i; + x0i = y4i + y6r; + x1r = y4r + y6i; + x1i = y4i - y6r; + a[8] = x0r + x2r; + a[9] = x0i + x2i; + a[10] = x0r - x2r; + a[11] = x0i - x2i; + a[12] = x1r - x3i; + a[13] = x1i + x3r; + a[14] = x1r + x3i; + a[15] = x1i - x3r; + x0r = y0r + y2r; + x0i = y0i + y2i; + x1r = y0r - y2r; + x1i = y0i - y2i; + x2r = y1r + y3r; + x2i = y1i + y3i; + x3r = y1r - y3r; + x3i = y1i - y3i; + a[0] = x0r + x2r; + a[1] = x0i + x2i; + a[2] = x0r - x2r; + a[3] = x0i - x2i; + a[4] = x1r - x3i; + a[5] = x1i + x3r; + a[6] = x1r + x3i; + a[7] = x1i - x3r; +} + + +void cftf162(double *a, double *w) +{ + double wn4r, wk1r, wk1i, wk2r, wk2i, wk3r, wk3i, + x0r, x0i, x1r, x1i, x2r, x2i, + y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i, + y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i, + y8r, y8i, y9r, y9i, y10r, y10i, y11r, y11i, + y12r, y12i, y13r, y13i, y14r, y14i, y15r, y15i; + + wn4r = w[1]; + wk1r = w[4]; + wk1i = w[5]; + wk3r = w[6]; + wk3i = -w[7]; + wk2r = w[8]; + wk2i = w[9]; + x1r = a[0] - a[17]; + x1i = a[1] + a[16]; + x0r = a[8] - a[25]; + x0i = a[9] + a[24]; + x2r = wn4r * (x0r - x0i); + x2i = wn4r * (x0i + x0r); + y0r = x1r + x2r; + y0i = x1i + x2i; + y4r = x1r - x2r; + y4i = x1i - x2i; + x1r = a[0] + a[17]; + x1i = a[1] - a[16]; + x0r = a[8] + a[25]; + x0i = a[9] - a[24]; + x2r = wn4r * (x0r - x0i); + x2i = wn4r * (x0i + x0r); + y8r = x1r - x2i; + y8i = x1i + x2r; + y12r = x1r + x2i; + y12i = x1i - x2r; + x0r = a[2] - a[19]; + x0i = a[3] + a[18]; + x1r = wk1r * x0r - wk1i * x0i; + x1i = wk1r * x0i + wk1i * x0r; + x0r = a[10] - a[27]; + x0i = a[11] + a[26]; + x2r = wk3i * x0r - wk3r * x0i; + x2i = wk3i * x0i + wk3r * x0r; + y1r = x1r + x2r; + y1i = x1i + x2i; + y5r = x1r - x2r; + y5i = x1i - x2i; + x0r = a[2] + a[19]; + x0i = a[3] - a[18]; + x1r = wk3r * x0r - wk3i * x0i; + x1i = wk3r * x0i + wk3i * x0r; + x0r = a[10] + a[27]; + x0i = a[11] - a[26]; + x2r = wk1r * x0r + wk1i * x0i; + x2i = wk1r * x0i - wk1i * x0r; + y9r = x1r - x2r; + y9i = x1i - x2i; + y13r = x1r + x2r; + y13i = x1i + x2i; + x0r = a[4] - a[21]; + x0i = a[5] + a[20]; + x1r = wk2r * x0r - wk2i * x0i; + x1i = wk2r * x0i + wk2i * x0r; + x0r = a[12] - a[29]; + x0i = a[13] + a[28]; + x2r = wk2i * x0r - wk2r * x0i; + x2i = wk2i * x0i + wk2r * x0r; + y2r = x1r + x2r; + y2i = x1i + x2i; + y6r = x1r - x2r; + y6i = x1i - x2i; + x0r = a[4] + a[21]; + x0i = a[5] - a[20]; + x1r = wk2i * x0r - wk2r * x0i; + x1i = wk2i * x0i + wk2r * x0r; + x0r = a[12] + a[29]; + x0i = a[13] - a[28]; + x2r = wk2r * x0r - wk2i * x0i; + x2i = wk2r * x0i + wk2i * x0r; + y10r = x1r - x2r; + y10i = x1i - x2i; + y14r = x1r + x2r; + y14i = x1i + x2i; + x0r = a[6] - a[23]; + x0i = a[7] + a[22]; + x1r = wk3r * x0r - wk3i * x0i; + x1i = wk3r * x0i + wk3i * x0r; + x0r = a[14] - a[31]; + x0i = a[15] + a[30]; + x2r = wk1i * x0r - wk1r * x0i; + x2i = wk1i * x0i + wk1r * x0r; + y3r = x1r + x2r; + y3i = x1i + x2i; + y7r = x1r - x2r; + y7i = x1i - x2i; + x0r = a[6] + a[23]; + x0i = a[7] - a[22]; + x1r = wk1i * x0r + wk1r * x0i; + x1i = wk1i * x0i - wk1r * x0r; + x0r = a[14] + a[31]; + x0i = a[15] - a[30]; + x2r = wk3i * x0r - wk3r * x0i; + x2i = wk3i * x0i + wk3r * x0r; + y11r = x1r + x2r; + y11i = x1i + x2i; + y15r = x1r - x2r; + y15i = x1i - x2i; + x1r = y0r + y2r; + x1i = y0i + y2i; + x2r = y1r + y3r; + x2i = y1i + y3i; + a[0] = x1r + x2r; + a[1] = x1i + x2i; + a[2] = x1r - x2r; + a[3] = x1i - x2i; + x1r = y0r - y2r; + x1i = y0i - y2i; + x2r = y1r - y3r; + x2i = y1i - y3i; + a[4] = x1r - x2i; + a[5] = x1i + x2r; + a[6] = x1r + x2i; + a[7] = x1i - x2r; + x1r = y4r - y6i; + x1i = y4i + y6r; + x0r = y5r - y7i; + x0i = y5i + y7r; + x2r = wn4r * (x0r - x0i); + x2i = wn4r * (x0i + x0r); + a[8] = x1r + x2r; + a[9] = x1i + x2i; + a[10] = x1r - x2r; + a[11] = x1i - x2i; + x1r = y4r + y6i; + x1i = y4i - y6r; + x0r = y5r + y7i; + x0i = y5i - y7r; + x2r = wn4r * (x0r - x0i); + x2i = wn4r * (x0i + x0r); + a[12] = x1r - x2i; + a[13] = x1i + x2r; + a[14] = x1r + x2i; + a[15] = x1i - x2r; + x1r = y8r + y10r; + x1i = y8i + y10i; + x2r = y9r - y11r; + x2i = y9i - y11i; + a[16] = x1r + x2r; + a[17] = x1i + x2i; + a[18] = x1r - x2r; + a[19] = x1i - x2i; + x1r = y8r - y10r; + x1i = y8i - y10i; + x2r = y9r + y11r; + x2i = y9i + y11i; + a[20] = x1r - x2i; + a[21] = x1i + x2r; + a[22] = x1r + x2i; + a[23] = x1i - x2r; + x1r = y12r - y14i; + x1i = y12i + y14r; + x0r = y13r + y15i; + x0i = y13i - y15r; + x2r = wn4r * (x0r - x0i); + x2i = wn4r * (x0i + x0r); + a[24] = x1r + x2r; + a[25] = x1i + x2i; + a[26] = x1r - x2r; + a[27] = x1i - x2i; + x1r = y12r + y14i; + x1i = y12i - y14r; + x0r = y13r - y15i; + x0i = y13i + y15r; + x2r = wn4r * (x0r - x0i); + x2i = wn4r * (x0i + x0r); + a[28] = x1r - x2i; + a[29] = x1i + x2r; + a[30] = x1r + x2i; + a[31] = x1i - x2r; +} + + +void cftf081(double *a, double *w) +{ + double wn4r, x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i, + y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i, + y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i; + + wn4r = w[1]; + x0r = a[0] + a[8]; + x0i = a[1] + a[9]; + x1r = a[0] - a[8]; + x1i = a[1] - a[9]; + x2r = a[4] + a[12]; + x2i = a[5] + a[13]; + x3r = a[4] - a[12]; + x3i = a[5] - a[13]; + y0r = x0r + x2r; + y0i = x0i + x2i; + y2r = x0r - x2r; + y2i = x0i - x2i; + y1r = x1r - x3i; + y1i = x1i + x3r; + y3r = x1r + x3i; + y3i = x1i - x3r; + x0r = a[2] + a[10]; + x0i = a[3] + a[11]; + x1r = a[2] - a[10]; + x1i = a[3] - a[11]; + x2r = a[6] + a[14]; + x2i = a[7] + a[15]; + x3r = a[6] - a[14]; + x3i = a[7] - a[15]; + y4r = x0r + x2r; + y4i = x0i + x2i; + y6r = x0r - x2r; + y6i = x0i - x2i; + x0r = x1r - x3i; + x0i = x1i + x3r; + x2r = x1r + x3i; + x2i = x1i - x3r; + y5r = wn4r * (x0r - x0i); + y5i = wn4r * (x0r + x0i); + y7r = wn4r * (x2r - x2i); + y7i = wn4r * (x2r + x2i); + a[8] = y1r + y5r; + a[9] = y1i + y5i; + a[10] = y1r - y5r; + a[11] = y1i - y5i; + a[12] = y3r - y7i; + a[13] = y3i + y7r; + a[14] = y3r + y7i; + a[15] = y3i - y7r; + a[0] = y0r + y4r; + a[1] = y0i + y4i; + a[2] = y0r - y4r; + a[3] = y0i - y4i; + a[4] = y2r - y6i; + a[5] = y2i + y6r; + a[6] = y2r + y6i; + a[7] = y2i - y6r; +} + + +void cftf082(double *a, double *w) +{ + double wn4r, wk1r, wk1i, x0r, x0i, x1r, x1i, + y0r, y0i, y1r, y1i, y2r, y2i, y3r, y3i, + y4r, y4i, y5r, y5i, y6r, y6i, y7r, y7i; + + wn4r = w[1]; + wk1r = w[2]; + wk1i = w[3]; + y0r = a[0] - a[9]; + y0i = a[1] + a[8]; + y1r = a[0] + a[9]; + y1i = a[1] - a[8]; + x0r = a[4] - a[13]; + x0i = a[5] + a[12]; + y2r = wn4r * (x0r - x0i); + y2i = wn4r * (x0i + x0r); + x0r = a[4] + a[13]; + x0i = a[5] - a[12]; + y3r = wn4r * (x0r - x0i); + y3i = wn4r * (x0i + x0r); + x0r = a[2] - a[11]; + x0i = a[3] + a[10]; + y4r = wk1r * x0r - wk1i * x0i; + y4i = wk1r * x0i + wk1i * x0r; + x0r = a[2] + a[11]; + x0i = a[3] - a[10]; + y5r = wk1i * x0r - wk1r * x0i; + y5i = wk1i * x0i + wk1r * x0r; + x0r = a[6] - a[15]; + x0i = a[7] + a[14]; + y6r = wk1i * x0r - wk1r * x0i; + y6i = wk1i * x0i + wk1r * x0r; + x0r = a[6] + a[15]; + x0i = a[7] - a[14]; + y7r = wk1r * x0r - wk1i * x0i; + y7i = wk1r * x0i + wk1i * x0r; + x0r = y0r + y2r; + x0i = y0i + y2i; + x1r = y4r + y6r; + x1i = y4i + y6i; + a[0] = x0r + x1r; + a[1] = x0i + x1i; + a[2] = x0r - x1r; + a[3] = x0i - x1i; + x0r = y0r - y2r; + x0i = y0i - y2i; + x1r = y4r - y6r; + x1i = y4i - y6i; + a[4] = x0r - x1i; + a[5] = x0i + x1r; + a[6] = x0r + x1i; + a[7] = x0i - x1r; + x0r = y1r - y3i; + x0i = y1i + y3r; + x1r = y5r - y7r; + x1i = y5i - y7i; + a[8] = x0r + x1r; + a[9] = x0i + x1i; + a[10] = x0r - x1r; + a[11] = x0i - x1i; + x0r = y1r + y3i; + x0i = y1i - y3r; + x1r = y5r + y7r; + x1i = y5i + y7i; + a[12] = x0r - x1i; + a[13] = x0i + x1r; + a[14] = x0r + x1i; + a[15] = x0i - x1r; +} + + +void cftf040(double *a) +{ + double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; + + x0r = a[0] + a[4]; + x0i = a[1] + a[5]; + x1r = a[0] - a[4]; + x1i = a[1] - a[5]; + x2r = a[2] + a[6]; + x2i = a[3] + a[7]; + x3r = a[2] - a[6]; + x3i = a[3] - a[7]; + a[0] = x0r + x2r; + a[1] = x0i + x2i; + a[2] = x1r - x3i; + a[3] = x1i + x3r; + a[4] = x0r - x2r; + a[5] = x0i - x2i; + a[6] = x1r + x3i; + a[7] = x1i - x3r; +} + + +void cftb040(double *a) +{ + double x0r, x0i, x1r, x1i, x2r, x2i, x3r, x3i; + + x0r = a[0] + a[4]; + x0i = a[1] + a[5]; + x1r = a[0] - a[4]; + x1i = a[1] - a[5]; + x2r = a[2] + a[6]; + x2i = a[3] + a[7]; + x3r = a[2] - a[6]; + x3i = a[3] - a[7]; + a[0] = x0r + x2r; + a[1] = x0i + x2i; + a[2] = x1r + x3i; + a[3] = x1i - x3r; + a[4] = x0r - x2r; + a[5] = x0i - x2i; + a[6] = x1r - x3i; + a[7] = x1i + x3r; +} + + +void cftx020(double *a) +{ + double x0r, x0i; + + x0r = a[0] - a[2]; + x0i = a[1] - a[3]; + a[0] += a[2]; + a[1] += a[3]; + a[2] = x0r; + a[3] = x0i; +} + + +void rftfsub(int n, double *a, int nc, double *c) +{ + int j, k, kk, ks, m; + double wkr, wki, xr, xi, yr, yi; + + m = n >> 1; + ks = 2 * nc / m; + kk = 0; + for (j = 2; j < m; j += 2) { + k = n - j; + kk += ks; + wkr = 0.5 - c[nc - kk]; + wki = c[kk]; + xr = a[j] - a[k]; + xi = a[j + 1] + a[k + 1]; + yr = wkr * xr - wki * xi; + yi = wkr * xi + wki * xr; + a[j] -= yr; + a[j + 1] -= yi; + a[k] += yr; + a[k + 1] -= yi; + } +} + + +void rftbsub(int n, double *a, int nc, double *c) +{ + int j, k, kk, ks, m; + double wkr, wki, xr, xi, yr, yi; + + m = n >> 1; + ks = 2 * nc / m; + kk = 0; + for (j = 2; j < m; j += 2) { + k = n - j; + kk += ks; + wkr = 0.5 - c[nc - kk]; + wki = c[kk]; + xr = a[j] - a[k]; + xi = a[j + 1] + a[k + 1]; + yr = wkr * xr + wki * xi; + yi = wkr * xi - wki * xr; + a[j] -= yr; + a[j + 1] -= yi; + a[k] += yr; + a[k + 1] -= yi; + } +} + + +void dctsub(int n, double *a, int nc, double *c) +{ + int j, k, kk, ks, m; + double wkr, wki, xr; + + m = n >> 1; + ks = nc / n; + kk = 0; + for (j = 1; j < m; j++) { + k = n - j; + kk += ks; + wkr = c[kk] - c[nc - kk]; + wki = c[kk] + c[nc - kk]; + xr = wki * a[j] - wkr * a[k]; + a[j] = wkr * a[j] + wki * a[k]; + a[k] = xr; + } + a[m] *= c[0]; +} + + +void dstsub(int n, double *a, int nc, double *c) +{ + int j, k, kk, ks, m; + double wkr, wki, xr; + + m = n >> 1; + ks = nc / n; + kk = 0; + for (j = 1; j < m; j++) { + k = n - j; + kk += ks; + wkr = c[kk] - c[nc - kk]; + wki = c[kk] + c[nc - kk]; + xr = wki * a[k] - wkr * a[j]; + a[k] = wkr * a[k] + wki * a[j]; + a[j] = xr; + } + a[m] *= c[0]; +} + diff --git a/libprojectM/src/fftsg.h b/libprojectM/src/fftsg.h new file mode 100755 index 000000000..935914188 --- /dev/null +++ b/libprojectM/src/fftsg.h @@ -0,0 +1,34 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/** + * $Id: fftsg.h,v 1.1.1.1 2005/12/23 18:05:00 psperl Exp $ + * + * Wrapper for rdft() and friends + * + */ + +#ifndef _FFTSG_H +#define _FFTSG_H + +extern void rdft(int n, int isgn, double *a, int *ip, double *w); + +#endif /** !_FFTSG_H */ + diff --git a/libprojectM/src/func.cc b/libprojectM/src/func.cc new file mode 100755 index 000000000..34cb9cbcc --- /dev/null +++ b/libprojectM/src/func.cc @@ -0,0 +1,243 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/* Function management */ + +#include +#include +#include + +#include "common.h" +#include "fatal.h" + +#include "func_types.h" +#include "func.h" + +#include "splaytree_types.h" +#include "splaytree.h" +#include "tree_types.h" +#include "wipemalloc.h" +#include "builtin_funcs.h" + +/* A splay tree of builtin functions */ +splaytree_t * builtin_func_tree; + +/* Private function prototypes */ +int compare_func(char * name, char * name2); +int insert_func(func_t * name); +void * copy_func_key(char * string); + + +void * copy_func_key(char * string) { + + char * clone_string; + + if ((clone_string = (char*)wipemalloc(MAX_TOKEN_SIZE)) == NULL) + return NULL; + + strncpy(clone_string, string, MAX_TOKEN_SIZE-1); + + return (void*)clone_string; +} + + +func_t * create_func (char * name, float (*func_ptr)(float*), int num_args) { + + func_t * func; + func = (func_t*)wipemalloc(sizeof(func_t)); + + if (func == NULL) + return NULL; + + + /* Clear name space */ + memset(func->name, 0, MAX_TOKEN_SIZE); + + /* Copy given name into function structure */ + strncpy(func->name, name, MAX_TOKEN_SIZE); + + /* Assign value pointer */ + func->func_ptr = func_ptr; + func->num_args = num_args; + /* Return instantiated function */ + return func; + +} + +/* Initialize the builtin function database. + Should only be necessary once */ +int init_builtin_func_db() { + int retval; + + builtin_func_tree = create_splaytree((int (*)(void*,void*))compare_string, (void*(*)(void*))copy_string, (void(*)(void*))free_string); + + if (builtin_func_tree == NULL) + return PROJECTM_OUTOFMEM_ERROR; + + retval = load_all_builtin_func(); + return PROJECTM_SUCCESS; +} + + +/* Destroy the builtin function database. + Generally, do this on projectm exit */ +int destroy_builtin_func_db() { + + splay_traverse((void (*)(void*))free_func, builtin_func_tree); + destroy_splaytree(builtin_func_tree); + return PROJECTM_SUCCESS; + +} + +/* Insert a function into the database */ +int insert_func(func_t * func) { + + if (func == NULL) + return PROJECTM_ERROR; + + splay_insert(func, func->name, builtin_func_tree); + + return PROJECTM_SUCCESS; +} + +/* Frees a function type, real complicated... */ +void free_func(func_t * func) { + free(func); + func = NULL; +} + +/* Remove a function from the database */ +int remove_func(func_t * func) { + + if (func == NULL) + return PROJECTM_ERROR; + + splay_delete(func->name, builtin_func_tree); + + return PROJECTM_SUCCESS; +} + +/* Find a function given its name */ +func_t * find_func(char * name) { + + func_t * func = NULL; + + /* First look in the builtin database */ + func = (func_t *)splay_find(name, builtin_func_tree); + + return func; + +} + +/* Compare string name with function name */ +int compare_func(char * name, char * name2) { + + int cmpval; + + /* Uses string comparison function */ + cmpval = strncmp(name, name2, MAX_TOKEN_SIZE-1); + + return cmpval; +} + +/* Loads a builtin function */ +int load_builtin_func(char * name, float (*func_ptr)(float*), int num_args) { + + func_t * func; + int retval; + + /* Create new function */ + func = create_func(name, func_ptr, num_args); + + if (func == NULL) + return PROJECTM_OUTOFMEM_ERROR; + + retval = insert_func(func); + + return retval; + +} + +/* Loads all builtin functions */ +int load_all_builtin_func() { + + + if (load_builtin_func("int", int_wrapper, 1) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("abs", abs_wrapper, 1) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("sin", sin_wrapper, 1) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("cos", cos_wrapper, 1) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("tan", tan_wrapper, 1) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("asin", asin_wrapper, 1) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("acos", acos_wrapper, 1) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("atan", atan_wrapper, 1) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("sqr", sqr_wrapper, 1) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("sqrt", sqrt_wrapper, 1) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("pow", pow_wrapper, 2) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("exp", exp_wrapper, 1) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("log", log_wrapper, 1) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("log10", log10_wrapper, 1) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("sign", sign_wrapper, 1) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("min", min_wrapper, 2) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("max", max_wrapper, 2) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("sigmoid", sigmoid_wrapper, 2) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("atan2", atan2_wrapper, 2) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("rand", rand_wrapper, 1) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("band", band_wrapper, 2) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("bor", bor_wrapper, 2) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("bnot", bnot_wrapper, 1) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("if", if_wrapper, 3) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("equal", equal_wrapper, 2) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("above", above_wrapper, 2) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("below",below_wrapper, 2) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("nchoosek", nchoosek_wrapper, 2) < 0) + return PROJECTM_ERROR; + if (load_builtin_func("fact", fact_wrapper, 1) < 0) + return PROJECTM_ERROR; + + + return PROJECTM_SUCCESS; +} diff --git a/libprojectM/src/func.h b/libprojectM/src/func.h new file mode 100755 index 000000000..f3b067016 --- /dev/null +++ b/libprojectM/src/func.h @@ -0,0 +1,35 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _FUNC_H +#define _FUNC_H + +/* Public Prototypes */ +func_t * create_func (char * name, float (*func_ptr)(float*), int num_args); +int remove_func(func_t * func); +func_t * find_func(char * name); +int init_builtin_func_db(); +int destroy_builtin_func_db(); +int load_all_builtin_func(); +int load_builtin_func(char * name, float (*func_ptr)(float*), int num_args); +void free_func(func_t * func); + +#endif /** !_FUNC_H */ diff --git a/libprojectM/src/func_types.h b/libprojectM/src/func_types.h new file mode 100755 index 000000000..42388bd68 --- /dev/null +++ b/libprojectM/src/func_types.h @@ -0,0 +1,34 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _FUNC_TYPES_H +#define _FUNC_TYPES_H + +#include "common.h" + +/* Function Type */ +typedef struct FUNC_T { + char name[MAX_TOKEN_SIZE]; + float (*func_ptr)(float*); + int num_args; +} func_t; + +#endif /** !_FUNC_TYPES_H */ diff --git a/libprojectM/src/glConsole.cc b/libprojectM/src/glConsole.cc new file mode 100755 index 000000000..2ec6ccee0 --- /dev/null +++ b/libprojectM/src/glConsole.cc @@ -0,0 +1,1018 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/** + * $Id: glConsole.c,v 1.2 2005/12/28 18:51:18 psperl Exp $ + * + * Encapsulation of an OpenGL-based console + * + */ + +#include +#include +#include +#include +#ifdef MACOS +#include +#endif /** MACOS */ +#include + +#include "projectM.h" + +#ifdef MACOS +#include +#else +#include +#endif /** MACOS */ +#include "glConsole.h" +#include "common.h" +#include "fatal.h" + +#include "wipemalloc.h" + +#include +#include + +#define HEIGHT_SPACE 8 /* pixel space between lines */ +#define DEFAULT_CONSOLE_FOREGROUND_COLOR CONSOLE_WHITE +#define DEFAULT_CONSOLE_BACKGROUND_COLOR CONSOLE_BLACK +#define DEFAULT_CURSOR_COLOR CONSOLE_GREEN +#define CURSOR_REFRESH_RATE 10 + +static int gl_console_set_color(color_t color); +int clear_console_screen_buffer(gl_console_t * gl_console); +int clear_console_scroll_buffer(gl_console_t * gl_console); +//float screen_width = 800; +//float screen_height = 600; + +extern FTGLPixmapFont *other_font; +extern projectM_t *PM; +int refresh_count = 0; + + +/* Creates a new console of (width X height) with left corner at + (x, y) */ +gl_console_t * glConsoleCreate(int screen_width, int screen_height, int scroll_width, int scroll_height, + float start_x, float start_y, int Font_Descriptor) { + + console_char_t * buffer; + gl_console_t * gl_console; + + if ((screen_width > MAX_CONSOLE_WIDTH) || (screen_width < 1)) + return NULL; + + if ((screen_height > MAX_CONSOLE_HEIGHT) || (screen_height < 1)) + return NULL; + + if ((gl_console = (gl_console_t*)wipemalloc(sizeof(gl_console_t))) == NULL) + return NULL; + + if ((scroll_height < screen_height)) + return NULL; + + if ((scroll_width < screen_width)) + return NULL; + + if ((buffer = (console_char_t*)wipemalloc(scroll_width*scroll_height*sizeof(console_char_t))) == NULL) + return NULL; + /* Need to know height and width of screen so we can see if the + if x and y are valid, will do later */ + + /* Set struct parameters */ + gl_console->screen_buffer = buffer; + gl_console->font_descriptor = Font_Descriptor; + gl_console->screen_width = screen_width; + gl_console->screen_height = screen_height; + gl_console->scroll_width = scroll_width; + gl_console->scroll_height = scroll_height; + gl_console->start_x = start_x; /* x coordinate of console's upper left corner */ + gl_console->start_y = start_y; /* y coordinate of console's upper left corner */ + gl_console->screen_start_x = gl_console->screen_start_y = 0; + gl_console->screen_x = gl_console->screen_y = 0; /* set cursor positions to zero */ + gl_console->cursor_ptr = buffer; /* start cursor pointer at beginning of buffer */ + gl_console->current_fg = DEFAULT_CONSOLE_FOREGROUND_COLOR; + gl_console->current_bg = DEFAULT_CONSOLE_BACKGROUND_COLOR; + gl_console->scroll_buffer = buffer; + gl_console->cursor_color = DEFAULT_CURSOR_COLOR; + gl_console->cursor_style = BAR_STYLE; + gl_console->flags = 0; + /* Clears the console buffer */ + clear_console_scroll_buffer(gl_console); + + if (GL_CONSOLE_DEBUG) printf("glConsoleCreate: finished initializing\n"); + + /* Finished, return new console */ + return gl_console; +} + +/* Destroy the passed console */ +int glConsoleDestroy(gl_console_t * console) { + + if (console == NULL) + return PROJECTM_FAILURE; + + free(console->scroll_buffer); + free(console); + + console = NULL; + + return PROJECTM_SUCCESS; + +} + + +int glConsoleClearScreen(gl_console_t * console) { + + if (console == NULL) + return PROJECTM_FAILURE; + + clear_console_screen_buffer(console); + + return PROJECTM_SUCCESS; +} + + +int glConsoleClearBuffer(gl_console_t * console) { + + if (console == NULL) + return PROJECTM_FAILURE; + + clear_console_scroll_buffer(console); + glConsoleAlignCursorLeft(console); + glConsoleAlignCursorUp(console); + + return PROJECTM_SUCCESS; +} + +/* Aligns cursor to the next character 'c' */ +int glConsoleCursorToNextChar(char c, gl_console_t * gl_console) { + + console_char_t * endofbuf; + if (gl_console == NULL) + return PROJECTM_FAILURE; + + endofbuf = gl_console->scroll_buffer + (gl_console->scroll_width*gl_console->scroll_height) - 1; + + while ((gl_console->cursor_ptr != endofbuf) && (gl_console->cursor_ptr->symbol != c)) + glConsoleMoveCursorForward(gl_console); + + return PROJECTM_SUCCESS; + +} + +int glConsoleMoveCursorUp(gl_console_t * gl_console) { + + /* Null argument check */ + if (gl_console == NULL) + return PROJECTM_FAILURE; + + /* The screen buffer is at the top and so is the screen cursor */ + if ((gl_console->screen_start_y == 0) && (gl_console->screen_y == 0)) { + + /* Wrap up flag specified, move cursor to bottom of screen */ + if (gl_console->flags & CONSOLE_FLAG_SCROLL_WRAP_UP) { + glConsoleAlignCursorDown(gl_console); + } + + + /* Do nothing instead */ + + } + /* The screen cursor is at the top but not the screen buffer */ + else if (gl_console->screen_y == 0){ + + /* screen_y stays the same, since it scrolls up one */ + + /* Decrement the cursor_ptr by one line */ + gl_console->cursor_ptr -= gl_console->scroll_width; + + /* Decrement starting 'y' position of the screen buffer */ + gl_console->screen_start_y--; + + /* Decrement the screen buffer by one line */ + gl_console->screen_buffer -= gl_console->scroll_width; + + + } + /* General case, not at top or bottoom */ + else { + gl_console->screen_y--; + gl_console->cursor_ptr -= gl_console->scroll_width; + } + + return PROJECTM_SUCCESS; +} + + +int glConsoleMoveCursorDown(gl_console_t * gl_console) { + + /* Null argument check */ + if (gl_console == NULL) + return PROJECTM_FAILURE; + + /* The screen buffer is at the bottom and so is the screen cursor, this may not ever + happen */ + if (gl_console->screen_start_y == (gl_console->scroll_height - gl_console->screen_height)) { + if (gl_console->screen_y == (gl_console->screen_height - 1)) { + // printf("BOTTOM AND END\n"); + /* Wrap down to up enabled */ + if (gl_console->flags & CONSOLE_FLAG_SCROLL_WRAP_DOWN) { + glConsoleAlignCursorUp(gl_console); + } + + /* Otherwise, do nothing */ + } + } + + /* The screen cursor is at the bottom but not the end of the scroll buffer */ + else if (gl_console->screen_y == (gl_console->screen_height - 1)) { + + // printf("BOTTOM BUT NOT END\n"); + /* screen_y stays the same, since it scrolls down one */ + + /* Increment the cursor_ptr by one line */ + gl_console->cursor_ptr += gl_console->scroll_width; + + /* Increment starting 'y' position of the screen buffer */ + gl_console->screen_start_y++; + + /* Increment the screen buffer by one line */ + gl_console->screen_buffer += gl_console->scroll_width; + + + } + + /* General case, not at top or bottoom */ + else { + // printf("GENERAL CASE\n"); + gl_console->screen_y++; + gl_console->cursor_ptr += gl_console->scroll_width; + } + + return PROJECTM_SUCCESS; +} + +/* Move the console forward one character, wrap around is the current behavior */ +int glConsoleMoveCursorForward(gl_console_t * gl_console) { + + /* Null argument check */ + if (gl_console == NULL) + return PROJECTM_FAILURE; + + + /* The case where the end of the screen is reached and the end of the scroll buffer */ + if ((gl_console->screen_start_x + gl_console->screen_width) == (gl_console->scroll_width)) { + if ((gl_console->screen_x) == (gl_console->screen_width - 1)) { + + /* Wrap around to next line if this flag is enabled */ + if (gl_console->flags & CONSOLE_FLAG_SCROLL_WRAP_RIGHT) { + /* Down one and to the left */ + glConsoleMoveCursorDown(gl_console); + glConsoleAlignCursorLeft(gl_console); + } + + /* Otherwise do nothing */ + } + } + + /* The case where the end of the screen is reach, but the not end of the scroll buffer */ + else if (gl_console->screen_x == (gl_console->screen_width - 1)) { + + /* screen_x doesn't change because the whole console is shifted left */ + /* screen_y doesn't change because we haven't reached the end of the scroll buffer */ + + gl_console->cursor_ptr++; /* increment cursor pointer */ + gl_console->screen_buffer++; /* move the screen buffer right one */ + gl_console->screen_start_x++; /* incrementing the start of the screen 'x' variable */ + } + + /* The most common case, no scrolling required. In other words, the cursor is at some + arbitrary non end point position */ + else { + gl_console->screen_x++; /* increment x variable */ + gl_console->cursor_ptr++; /* increment cursor pointer */ + } + + return PROJECTM_SUCCESS; +} + + +/* Moves the cursor backward one space */ +int glConsoleMoveCursorBackward(gl_console_t * gl_console) { + + /* Null argument check */ + if (gl_console == NULL) + return PROJECTM_FAILURE; + + /* The case where the beginning of the screen is reached and the beginning of the scroll buffer */ + if ((gl_console->screen_start_x == 0) && (gl_console->screen_x == 0)) { + if (gl_console->flags & CONSOLE_FLAG_SCROLL_WRAP_LEFT) { + glConsoleMoveCursorUp(gl_console); + glConsoleAlignCursorRight(gl_console); + } + + } + + /* The case where the beginning of the screen is reach, but the not beginning of the scroll buffer */ + else if (gl_console->screen_x == 0) { + gl_console->cursor_ptr--; /* decrement cursor pointer */ + gl_console->screen_buffer--; /* move the screen buffer left one */ + gl_console->screen_start_x--; /* decrement the start of the screen 'x' variable */ + } + + /* The most common case, no scrolling required. In other words, the cursor is at some + arbitrary non end point position */ + else { + gl_console->screen_x--; /* increment x variable */ + gl_console->cursor_ptr--; /* increment cursor pointer */ + } + + /* Finised, return success */ + return PROJECTM_SUCCESS; +} + +/* Sets the cursor position to (x,y) of the passed console */ +int glConsoleSetCursorPos(int x, int y, gl_console_t * gl_console) { + + /* Null argument check */ + if (gl_console == NULL) + return PROJECTM_FAILURE; + + /* Bound checks */ + if ((x < 0) || (x > (gl_console->scroll_width-1))) + return PROJECTM_FAILURE; + + if ((y < 0) || (y > (gl_console->scroll_height-1))) + return PROJECTM_FAILURE; + + + /* Set cursor ptr to new screen location. This variable does not depend on if the + screen needs to be scrolled */ + gl_console->cursor_ptr = gl_console->scroll_buffer + (y * gl_console->scroll_width) + x; + + /* Goal 1: Determine what needs to be changed on the X axis */ + + + /* Case (i): x coordinate is less than the starting screen buffer x coordinate. Must + shift the screen buffer left by difference of the two coordinates */ + if (x < gl_console->screen_start_x) { + // printf("X: case (i)\n"); + + /* Align x offset to new x corodinate */ + gl_console->screen_start_x = x; + + /* Set screen_x to zero because we are left edge aligned in the screen buffer */ + gl_console->screen_x = 0; + + } + + /* Case (ii): x coordinate is greater than farthest screen buffer x coordinate. Must + shift the screen buffer right by difference of the two coordinates */ + else if (x > (gl_console->screen_start_x+gl_console->screen_width-1)) { + // printf("X: case (ii)\n"); + + /* Align end of screen buffer X coordinate space to new x coordinate */ + gl_console->screen_start_x = x - (gl_console->screen_width - 1); + + /* Set screen_x to right edge of screen buffer because we are right aligned to the new x coordinate */ + gl_console->screen_x = gl_console->screen_width - 1; + } + + /* CASE (iii): x coordinate must lie within the current screen buffer rectangle. No need to + shift the screen buffer on the X axis */ + else { + // printf("X: case (iii)\n"); + + /* Set the new screen coordinate to the passed in x coordinate minus the starting screen buffer distance */ + gl_console->screen_x = x - gl_console->screen_start_x; + + } + + + /* Goal 2: Determine what needs to be changed on the Y axis */ + + /* Case (i): y coordinate is less than the starting screen buffer y coordinate. Must + shift the screen buffer up by difference of the two coordinates */ + if (y < gl_console->screen_start_y) { + // printf("Y: case (i) y = %d, start_y = %d\n", y, gl_console->screen_start_y); + + /* Align y offset to new y corodinate */ + gl_console->screen_start_y = y; + + /* Set screen_y to zero because we are top aligned in the screen buffer */ + gl_console->screen_y = 0; + + } + + /* Case (ii): y coordinate is greater than loweest screen buffer y coordinate. Must + shift the screen buffer down by difference of the two coordinates */ + else if (y > (gl_console->screen_start_y+gl_console->screen_height-1)) { + // printf("Y: case (ii)\n"); + + /* Align end of screen buffer Y coordinate space to new y coordinate */ + gl_console->screen_start_y = y - (gl_console->screen_height-1); + + /* Set screen_y to bottom edge of screen buffer because we are bottom aligned to the new y coordinate */ + gl_console->screen_y = gl_console->screen_height - 1; + } + + /* CASE (iii): y coordinate must lie within the current screen buffer rectangle. No need to + shift the screen buffer on the Y axis */ + + else { + // printf("Y: case (iii)\n"); + /* Set the new screen coordinate to the passed in y coordinate minus the starting screen buffer distance */ + gl_console->screen_y = y - gl_console->screen_start_y; + + } + + + /* Re-adjust screen buffer ptr based on computed screen starting coordinates */ + gl_console->screen_buffer = gl_console->scroll_buffer + (gl_console->screen_start_y*gl_console->screen_width) + + gl_console->screen_start_x; + + + return PROJECTM_SUCCESS; +} + +/* Sets 'x' and 'y' to the console coordinates of the current cursor position */ +int glConsoleGetCursorPos(int * x, int * y, gl_console_t * gl_console) { + + /* Null argument check */ + if (gl_console == NULL) + return PROJECTM_FAILURE; + + /* Null arguments passed, bail */ + if ((x == NULL) || (y == NULL)) + return PROJECTM_FAILURE; + + /* Set coordinates with appropiate offset */ + *x = gl_console->screen_x + gl_console->screen_start_x; + *y = gl_console->screen_y + gl_console->screen_start_y; + + return PROJECTM_SUCCESS; +} + +/* Helper function that changes the current color */ +static int gl_console_set_color(color_t color) { + + switch (color) { + + case CONSOLE_BLACK: + glColor4f(0, 0, 0, 1); + break; + case CONSOLE_RED: + glColor4f(1, 0, 0, 1); + break; + case CONSOLE_GREEN: + glColor4f(0, 1, 0, 1); + break; + case CONSOLE_WHITE: + glColor4f(1, 1, 1, 1); + break; + case CONSOLE_BLUE: + glColor4f(0, 0, 1, 1); + break; + case CONSOLE_TRANS: + glColor4f(0, 0, 0, 0); + break; + default: /* hmm, use white I guess */ + glColor4f(1, 1, 1, 1); + } + + return PROJECTM_SUCCESS; +} + +/* Sets the passed console to a new foreground */ +int glConsoleSetFGColor(color_t color, gl_console_t * gl_console) { + + if (gl_console == NULL) + return PROJECTM_FAILURE; + + gl_console->current_fg = color; + + return PROJECTM_SUCCESS; +} + +/* Sets the passed console to a new background */ +int glConsoleSetBGColor(color_t color, gl_console_t * gl_console) { + + if (gl_console == NULL) + return PROJECTM_FAILURE; + + gl_console->current_bg = color; + + return PROJECTM_SUCCESS; +} + +/* Sets the cursor color */ +int glConsoleSetCursorColor(color_t color, gl_console_t * gl_console) { + + if (gl_console == NULL) + return PROJECTM_FAILURE; + + gl_console->cursor_color = color; + + return PROJECTM_SUCCESS; +} + +/* Prints a string starting from the current cursor position */ +int glConsolePrintString(char * s, gl_console_t * gl_console) { + + int len; + int i; + console_char_t console_char; + char symbol; + + /* Null argument checks */ + if (gl_console == NULL) + return PROJECTM_FAILURE; + + if (s == NULL) + return PROJECTM_FAILURE; + + /* Set the console struct to correct fg and bg values. + The character value will change in the for loop */ + console_char.fg_color = gl_console->current_fg; + console_char.bg_color = gl_console->current_bg; + console_char.symbol = 0; + + /* Calculate length of the string */ + len = strlen(s); + + + for (i = 0; i < len; i++) { + + /* Case on the type of character */ + + switch (symbol = *(s+i)) { + + case '\r': + case '\n': + console_char.symbol = symbol; + *gl_console->cursor_ptr = console_char; + glConsoleMoveCursorDown(gl_console); + glConsoleAlignCursorLeft(gl_console); + break; + case '\b': + glConsoleMoveCursorBackward(gl_console); + break; + default: + /* Change the screen_buffer value */ + console_char.symbol = symbol; + *gl_console->cursor_ptr = console_char; + glConsoleMoveCursorForward(gl_console); + + } + } + + return PROJECTM_SUCCESS; +} + + +/* Clears the console screen_buffer, using current fg and bg values */ +int clear_console_screen_buffer(gl_console_t * gl_console) { + + int i, console_size; + console_char_t console_char; + + /* Set console struct to current fg and bg values */ + console_char.fg_color = gl_console->current_fg; + console_char.bg_color = gl_console->current_bg; + console_char.symbol = 0; /* empty symbol */ + + if (gl_console == NULL) + return PROJECTM_FAILURE; + + console_size = gl_console->scroll_width * gl_console->scroll_height; + + for (i = 0; i < console_size; i++) + *(gl_console->screen_buffer + i) = console_char; + + return PROJECTM_SUCCESS; +} + +/* Clears the entire buffer */ +int clear_console_scroll_buffer(gl_console_t * gl_console) { + + int i, console_size; + console_char_t console_char; + + /* Set console struct to current fg and bg values */ + console_char.fg_color = gl_console->current_fg; + console_char.bg_color = gl_console->current_bg; + console_char.symbol = 0; /* empty symbol */ + + if (gl_console == NULL) + return PROJECTM_FAILURE; + + console_size = gl_console->scroll_width * gl_console->scroll_height; + + for (i = 0; i < console_size; i++) + *(gl_console->scroll_buffer + i) = console_char; + + return PROJECTM_SUCCESS; +} + +/* Align the cursor all the way to the right of the passed console */ +int glConsoleAlignCursorRight(gl_console_t * gl_console) { + + /* Null argument check */ + if (gl_console == NULL) + return PROJECTM_FAILURE; + + /* Set the cursor pointer to the rightmost end of the scroll buffer */ + gl_console->cursor_ptr += gl_console->scroll_width - (gl_console->screen_start_x + gl_console->screen_x) - 1; + + /* Move the screen buffer to the farthest right as possible */ + gl_console->screen_buffer += gl_console->scroll_width - gl_console->screen_start_x - gl_console->screen_width; + + /* Set the screen start 'x' value to length of the scroll buffer minus the length + of the screen buffer with a -1 offset to access the array correctly */ + gl_console->screen_start_x = gl_console->scroll_width - gl_console->screen_width; + + /* Set the screen_x cursor value to the screen width length minus an array adjustment offset */ + gl_console->screen_x = gl_console->screen_width - 1; + + + return PROJECTM_SUCCESS; +} + +/* Align the cursor all the way to the right of the passed console */ +int glConsoleAlignCursorLeft(gl_console_t * gl_console) { + + /* Null argument check */ + if (gl_console == NULL) + return PROJECTM_FAILURE; + + /* Set the cursor pointer to the left most end of the scroll buffer */ + gl_console->cursor_ptr -= (gl_console->screen_start_x + gl_console->screen_x); + + /* Set the screen buffer all the way to left */ + gl_console->screen_buffer -= gl_console->screen_start_x; + + /* Set the screen start x to the leftmost end of the scroll buffer */ + gl_console->screen_start_x = 0; + + /* Set the screen_x cursor value to the leftmost end of the screne buffer */ + gl_console->screen_x = 0; + + + /* Finished, return success */ + return PROJECTM_SUCCESS; +} + +/* Align the cursor to the top of the screen of the passed console */ +int glConsoleAlignCursorUp(gl_console_t * gl_console) { + + /* Null argument check */ + if (gl_console == NULL) + return PROJECTM_FAILURE; + + /* Set the cursor pointer to the top of the buffer plus the x offset */ + gl_console->cursor_ptr = gl_console->scroll_buffer + gl_console->screen_start_x + gl_console->screen_x; + + /* Set the screen start y to the top of the scroll buffer */ + gl_console->screen_start_y = 0; + + /* Set the screen_y cursor value to the top of the screen buffer */ + gl_console->screen_y = 0; + + /* Set screen buffer to the top shifted lefted by the screen start value */ + gl_console->screen_buffer = gl_console->scroll_buffer + gl_console->screen_start_x; + + /* Finished, return success */ + return PROJECTM_SUCCESS; +} + + +/* Align the cursor to the top of the screen of the passed console */ +int glConsoleAlignCursorDown(gl_console_t * gl_console) { + + /* Null argument check */ + if (gl_console == NULL) + return PROJECTM_FAILURE; + + /* Set the cursor pointer to the bottom of the buffer plus the x offset */ + gl_console->cursor_ptr = gl_console->scroll_buffer + + ((gl_console->scroll_height-1)*gl_console->scroll_width) + + gl_console->screen_start_x + gl_console->screen_x; + + /* Set the screen start y to the bottom of the scroll buffer mi screen_height */ + gl_console->screen_start_y = gl_console->scroll_height - gl_console->screen_height; + + /* Set the screen_y cursor value to the bottom of the screen buffer */ + gl_console->screen_y = gl_console->screen_height - 1; + + /* Set screen buffer to the bottom minus the height of the screen + shifted left by the screen start value */ + + gl_console->screen_buffer = gl_console->scroll_buffer + + ((gl_console->scroll_height - gl_console->screen_height) + *gl_console->scroll_width) + gl_console->screen_start_x; + + /* Finished, return success */ + return PROJECTM_SUCCESS; +} + + + +int glConsoleDraw( gl_console_t * console) { + + int x,y; + //float minx, miny, maxx, maxy; + char * symbol; + console_char_t * console_char; + float start_x, start_y; + + //REMOVE SOON + //int width=800,height=600; + + + // console->start_x=0; + // console->start_y=1; + + + int width=1; + int height=1; + + + + start_y = -(console->start_y - 1.0); + start_x = console->start_x; + + /* Null argument check */ + if (console == NULL) + return PROJECTM_FAILURE; + + symbol = (char*)wipemalloc(sizeof(char)+1); + *symbol = *(symbol+1) = 0; + + /* First, push the gl matrix to save data */ + glPushMatrix(); + + + /* Start rendering at the console's start position */ + glTranslatef(start_x,start_y,-1); + //glTranslatef(0,0.5,-1); + /* Assign a pointer to the start of the console buffer */ + console_char = console->screen_buffer; + + /* Iterate through entire console buffer, drawing each + character one at a time with appropiate foreground and + background values. May not be the most efficient. */ + + // glScalef(8.0,8.0,0); + + + + float llx; // The bottom left near most ?? in the x axis + float lly; // The bottom left near most ?? in the y axis + float llz; // The bottom left near most ?? in the z axis + float urx; // The top right far most ?? in the x axis + float ury; // The top right far most ?? in the y axis + float urz; // The top right far most ?? in the z axis + float advance; + + + //Figure out size of one console unit + other_font->FaceSize(16*(PM->vh/512.0)); + advance=other_font->Advance("W"); + other_font->BBox("qpg_XT[",llx,lly,llx,urx,ury,urz); + + + float invfix=1.0/512; + llx*=invfix;lly*=invfix;llz*=invfix; + urx*=invfix;ury*=invfix;urz*=invfix; + advance=advance/PM->vw; + + glTranslatef(advance*0.5,lly-ury,0); + + for (y = 0; y < console->screen_height; y++) { + + glPushMatrix(); + char buffer[console->screen_width+1]; + memset( buffer, '\0',sizeof(char) * (console->screen_width+1)); + + + + for (x = 0; x < console->screen_width; x++) { + + console_char = console->screen_buffer + (y*console->scroll_width) + x; + *symbol = console_char->symbol; + + + /* Draw the background color */ + if ((console->flags & CONSOLE_FLAG_ALWAYS_DRAW_BACKGROUND) || (*symbol != 0)) { + + /* Draw the background by drawing a rectangle */ + gl_console_set_color(console_char->bg_color); + glRectf(llx, lly ,llx+advance, ury); + + } + + /* We are at the cursor position. See if the cursor is hidden or not and act accordingly */ + if ((console_char == console->cursor_ptr) && (!(console->flags & CONSOLE_FLAG_CURSOR_HIDDEN))) { + + /* Cursor is not hidden and blinking */ + if (console->flags & CONSOLE_FLAG_CURSOR_BLINKING) { + if (refresh_count % CURSOR_REFRESH_RATE) + gl_console_set_color(console->cursor_color); + else + gl_console_set_color(console_char->bg_color); + } + + /* Cursor is not hidden, and not blinking */ + else { + gl_console_set_color(console->cursor_color); + } + + /* Draw the cursor according to the set style */ + if (console->cursor_style == BAR_STYLE) + glRectf(llx, lly, llx+advance, ury); + else if (console->cursor_style == UNDERLINE_STYLE) { + glRectf(llx, lly, llx+advance, ury); + } + } + + /* The cursor is not here or hidden, draw regular background (OLD COMMENT) */ + + /* Instead of the above, do nothing because we always draw the background before + printing the cursor to the screen */ + else { + +// if ((console->flags & CONSOLE_FLAG_ALWAYS_DRAW_BACKGROUND) || (*symbol != 0)) { + + /* Draw the background by drawing a rectangle */ +// gl_console_set_color(console_char->bg_color); +// glRectf(-0.5, 1.0 ,1.0, -1.0); + + //} + } + + /* If the symbol is nonzero draw it */ + if (*symbol != 0 && *symbol != '\n') { + buffer[x]=*symbol; + //gl_console_set_color(console_char->fg_color); + } + /* Now shift to the right by the size of the character space */ + glTranslatef(advance,0,0); + + // console_char++; + } + + + // glColor4f(0.0,1.0,1.0,1.0); + //glTranslatef(((lly-ury)*console->screen_width),0,0); + //glRasterPos2f(50,-50); + + glPopMatrix(); + + console_char = console->screen_buffer + (y*console->scroll_width + 1); + gl_console_set_color(console_char->fg_color); + glRasterPos2f(0,0); + + other_font->Render(buffer); + + + /* New line, shift down the size of the symbol plus some extra space */ + + + glTranslatef(0,(lly-ury), 0); + } + //glColor4f(1,1,1,1); + + /* Finished, pop the gl matrix and return success */ + glPopMatrix(); + free(symbol); + refresh_count++; + return PROJECTM_SUCCESS; +} + + + +int glConsoleSetFlags(int flags, gl_console_t * gl_console) { + + if (gl_console == NULL) + return PROJECTM_FAILURE; + + gl_console->flags = gl_console->flags | flags; + + return PROJECTM_SUCCESS; +} + +#ifdef NOGOOD +int glConsoleStartShell(gl_console_t * gl_console) { + + int pid1, pid2; + char * s; + char c; + FILE * fs; + + if (gl_console == NULL) + return PROJECTM_FAILURE; + + if ((s = wipemalloc(sizeof(char) + 512)) == NULL) + return PROJECTM_FAILURE; + + memset(s, 0, 512); + +#if !defined(MACOS) && !defined(WIN32) + if ((pid1 = fork()) == 0) { + printf("bash starting\n"); + execve("/bin/bash", NULL, NULL); + printf("bash exiting..\n"); + exit(0); + } + + if ((pid2 = fork()) == 0) { + //fs = fopen("tempfile", "r"); + printf("about to loop on stdout\n"); + while (1) { + //printf("^");//fflush(stdout); + //ungetc(c, stdin); + fread(s, 1, 1, stdout); + *s = 'a'; + //printf("%c", *s);fflush(stdout); + glConsolePrintString(s, gl_console); + } + //fclose(fs); + printf("waiting for pid1 to exit\n"); + waitpid(pid1, NULL, 0); + free(s); + printf("pid1 exited\n"); + return PROJECTM_SUCCESS; + } + + printf("bash should have started\n"); +#endif /** !MACOS */ + return PROJECTM_SUCCESS; +} +#endif +/* Copies the console buffer into a character array */ +int glConsoleCopyBuffer(char * src, int len, gl_console_t * gl_console) { + + int i; + int j = 0; + int size; + char c; + if (src == NULL) + return PROJECTM_FAILURE; + if (len < 0) + return PROJECTM_FAILURE; + if (gl_console == NULL) + return PROJECTM_FAILURE; + + /* Clear the character space */ + memset(src, 0, len); + + size = gl_console->scroll_width*gl_console->scroll_height; + + for (i=0; ((i - j) < len) && (i < size); i++) { + c = (gl_console->scroll_buffer + i)->symbol; + + /* We don't want to accidentally null terminate the string...*/ + if (c != 0) + src[i - j] = c; + else + j++; + + // if (c != 0) + // src[i] = c; + // else + // src[i] = '\n'; + } + + /* Ensure the string actually ends */ + src[len - 1] = 0; + + return PROJECTM_SUCCESS; +} + +/* Sets the cursor draw style */ +int glConsoleSetCursorStyle(int style_num, gl_console_t * gl_console) { + + if (gl_console == NULL) + return PROJECTM_FAILURE; + + gl_console->cursor_style = style_num; + + return PROJECTM_SUCCESS; +} diff --git a/libprojectM/src/glConsole.h b/libprojectM/src/glConsole.h new file mode 100755 index 000000000..eb6a0b630 --- /dev/null +++ b/libprojectM/src/glConsole.h @@ -0,0 +1,110 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _GLCONSOLE_H +#define _GLCONSOLE_H + +#include "glf.h" + +#define GL_CONSOLE_DEBUG 0 +#define MAX_CONSOLE_HEIGHT 500 +#define MAX_CONSOLE_WIDTH 500 + +#define CONSOLE_FLAG_NONE 0 +#define CONSOLE_FLAG_CURSOR_HIDDEN 1 +#define CONSOLE_FLAG_CURSOR_BLINKING (1 << 1) +#define CONSOLE_FLAG_SCROLL_WRAP_RIGHT (1 << 3) +#define CONSOLE_FLAG_SCROLL_WRAP_LEFT (1 << 4) +#define CONSOLE_FLAG_SCROLL_WRAP_UP (1 << 5) +#define CONSOLE_FLAG_SCROLL_WRAP_DOWN (1 << 6) +#define CONSOLE_FLAG_ALWAYS_DRAW_BACKGROUND (1 << 7) + +#define BAR_STYLE 0 +#define UNDERLINE_STYLE 1 + +typedef enum { + CONSOLE_RED, + CONSOLE_BLACK, + CONSOLE_BLUE, + CONSOLE_WHITE, + CONSOLE_GREEN, + CONSOLE_TRANS +} color_t; + +typedef struct CONSOLE_CHAR_T { + char symbol; + color_t fg_color; + color_t bg_color; +} console_char_t; + + +typedef struct GL_CONSOLE_T { + float start_x; + float start_y; + int screen_width; + int screen_height; + int scroll_width; + int scroll_height; + console_char_t * screen_buffer; /* start of current screen buffer */ + console_char_t * scroll_buffer; /* pointer to very top of buffer */ + int font_descriptor; + int screen_x; + int screen_y; + int screen_start_x; + int screen_start_y; + int cursor_style; + color_t current_fg; + color_t current_bg; + color_t cursor_color; + console_char_t * cursor_ptr; /* pointer to position in console buffer */ + short int flags; +} gl_console_t; + +int glConsoleSetFGColor(color_t color, gl_console_t * gl_console); +int glConsoleSetBGColor(color_t color, gl_console_t * gl_console); +int glConsoleSetCursorColor(color_t color, gl_console_t * gl_console); +int glConsoleSetCursorPos(int x, int y, gl_console_t * gl_console); +int glConsoleGetCursorPos(int * x, int * y, gl_console_t * gl_console); +int glConsoleShowCursor(gl_console_t * console); +int glConsoleHideCursor(gl_console_t * console); +int glConsoleDraw( gl_console_t * console); +int glConsoleClearScreen(gl_console_t * console); +int glConsoleClearBuffer(gl_console_t * console); +int glConsolePrintString(char * s, gl_console_t * console); +int glConsoleSetFlags(int flags, gl_console_t * console); +int glConsoleSetCursorStyle(int style_num, gl_console_t * console); +int glConsoleAlignCursorRight(gl_console_t * gl_console); +int glConsoleAlignCursorLeft(gl_console_t * gl_console); +int glConsoleAlignCursorUp(gl_console_t * gl_console); +int glConsoleAlignCursorDown(gl_console_t * gl_console); + +int glConsoleMoveCursorForward(gl_console_t * gl_console); +int glConsoleMoveCursorBackward(gl_console_t * gl_console); +int glConsoleMoveCursorUp(gl_console_t * gl_console); +int glConsoleMoveCursorDown(gl_console_t * gl_console); +int glConsoleStartShell(gl_console_t * gl_console); +int glConsoleCopyBuffer(char * src, int len, gl_console_t * gl_console); +int glConsoleCursorToNextChar(char c, gl_console_t * gl_console); +gl_console_t * glConsoleCreate(int screen_width, int screen_height, int scroll_width, int scroll_height, + float start_x, float start_y, int font_descriptor); +int glConsoleDestroy(gl_console_t * console); + +#endif /** !_GLCONSOLE_H */ diff --git a/libprojectM/src/glf.h b/libprojectM/src/glf.h new file mode 100755 index 000000000..cd982ac49 --- /dev/null +++ b/libprojectM/src/glf.h @@ -0,0 +1,114 @@ +/* +============================================================================== +| GLF Library +| Version 1.0 (Release) +| +| Author: Roman Podobedov +| Email: romka@ut.ee +| WEB: www.ut.ee/~romka +| Date: 17 August 2000 +| +| Copyright (C) 2000, Romka Graphics +| This library is freely distributable without any license or permissions. +| You can use this library in any program (commercial, educational +| or individual), but in each program, where You use this library, You +| should to keep this header (author name and coordinates)! +============================================================================== +*/ +#ifndef GLF_H +#define GLF_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* CONSTANTS */ + +#define GLF_ERROR -1 +#define GLF_OK 0 +#define GLF_YES 1 +#define GLF_NO 2 + +#define GLF_CONSOLE_MESSAGES 10 +#define GLF_TEXTURING 11 +#define GLF_CONTOURING 12 + +#define GLF_LEFT_UP 20 +#define GLF_LEFT_CENTER 21 +#define GLF_LEFT_DOWN 22 +#define GLF_CENTER_UP 23 +#define GLF_CENTER_CENTER 24 +#define GLF_CENTER_DOWN 25 +#define GLF_RIGHT_UP 26 +#define GLF_RIGHT_CENTER 27 +#define GLF_RIGHT_DOWN 28 +#define GLF_CENTER 24 + +/* Console constants */ +#define GLF_CONSOLE_CURSOR 30 + + /* Library initialization (must be called before any usage of library) */ +void glfInit(); + +/* Font loading/unloading functions */ +int glfLoadFont(char *font_name); /* Load font to memory*/ +int glfUnloadFont(); /* Unload font from memory */ +int glfUnloadFontD(int font_descriptor); /* Unload font by font_descriptor */ + +/* Text drawing functions */ +void glfDrawWiredSymbol(char s); /* Draw wired symbol */ +void glfDrawWiredString(char *s); /* Draw wired string */ +void glfDrawSolidSymbol(char s); /* Draw solid symbol */ +void glfDrawSolidString(char *s); /* Draw wired string */ +void glfDraw3DWiredSymbol(char s); /* Draw 3D wired symbol */ +void glfDraw3DWiredString(char *s); /* Draw 3D wired string */ +void glfDraw3DSolidSymbol(char s); /* Draw 3D solid symbol */ +void glfDraw3DSolidString(char *s); /* Draw 3D solid string */ + +/* Text drawing functions by specified font */ +void glfDrawWiredSymbolF(int font_descriptor, char s); +void glfDrawWiredStringF(int font_descriptor, char *s); +void glfDrawSolidSymbolF(int font_descriptor, char s); +void glfDrawSolidStringF(int font_descriptor, char *s); +void glfDraw3DWiredSymbolF(int font_descriptor, char s); +void glfDraw3DWiredStringF(int font_descriptor, char *s); +void glfDraw3DSolidSymbolF(int font_descriptor, char s); +void glfDraw3DSolidStringF(int font_descriptor, char *s); + +/* Text control functions */ +void glfGetStringBoundsF(int fd, char *s, float *minx, float *miny, float *maxx, float *maxy); +void glfGetStringBounds(char *s, float *minx, float *miny, float *maxx, float *maxy); + +void glfSetSymbolSpace(float sp); /* Set space between symbols */ +float glfGetSymbolSpace(); /* Get space between symbols */ +void glfSetSpaceSize(float sp); /* Set space size */ +float glfGetSpaceSize(); /* Get current space size */ + +void glfSetSymbolDepth(float dpth); /* Set depth of 3D symbol */ +float glfGetSymbolDepth(); /* Get depth of 3D symbol */ +int glfSetCurrentFont(int Font_Descriptor); /* Set current font */ +int glfGetCurrentFont(); /* Get current font descriptor */ + +void glfSetAnchorPoint(int anchp); /* Set symbol anchor point */ +void glfSetContourColor(float r, float g, float b, float a); /* Contour color */ +/* Enable/Disable GLF features */ + +void glfEnable(int what); /* Enable GLF feature 'what' */ +void glfDisable(int what); /* Disable GLF feature 'what' */ + +/* Console functions */ +void glfSetConsoleParam(int width, int height); +int glfSetConsoleFont(int Font_Descriptor); +void glfConsoleClear(); +void glfPrint(char *s, int lenght); +void glfPrintString(char *s); +void glfPrintChar(char s); + +void glfConsoleDraw(); +void glfSetCursorBlinkRate(int Rate); + +#ifdef __cplusplus +}; +#endif + +#endif diff --git a/libprojectM/src/idle_preset.h b/libprojectM/src/idle_preset.h new file mode 100755 index 000000000..769d2b10f --- /dev/null +++ b/libprojectM/src/idle_preset.h @@ -0,0 +1,31 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _IDLE_PRESET_H +#define _IDLE_PRESET_H + +#include "preset_types.h" + +#define IDLE_PRESET_STRING "[idlepreset]\n" + +preset_t * idle_preset; + +#endif /** !_IDLE_PRESET_H */ diff --git a/libprojectM/src/init_cond.cc b/libprojectM/src/init_cond.cc new file mode 100755 index 000000000..f6f069c64 --- /dev/null +++ b/libprojectM/src/init_cond.cc @@ -0,0 +1,165 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/* Library functions to manipulate initial condition values */ + +#include +#include +#include + +#include "common.h" +#include "fatal.h" + +#include "param_types.h" +#include "expr_types.h" +#include "init_cond_types.h" +#include "init_cond.h" +#include "wipemalloc.h" +#include "splaytree_types.h" +#include "splaytree.h" +char init_cond_string_buffer[STRING_BUFFER_SIZE]; +int init_cond_string_buffer_index = 0; + + +void init_cond_to_string(init_cond_t * init_cond); + +/* Frees initial condition structure */ +void free_init_cond(init_cond_t * init_cond) { + free(init_cond); + init_cond = NULL; +} + +/* Evaluate an initial conditon */ +void eval_init_cond(init_cond_t * init_cond) { + + if (init_cond == NULL) + return; + + /* Parameter is of boolean type, either a 1 or 0 value integer */ + + /* Set matrix flag to zero. This ensures + its constant value will be used rather than a matrix value + */ + init_cond->param->matrix_flag = 0; + if (init_cond->param->type == P_TYPE_BOOL) { + if (INIT_COND_DEBUG) printf("init_cond: %s = %d (TYPE BOOL)\n", init_cond->param->name, init_cond->init_val.bool_val); + *((int*)init_cond->param->engine_val) = init_cond->init_val.bool_val; + return; + } + + /* Parameter is an integer type, just like C */ + + if (init_cond->param->type == P_TYPE_INT) { + if (INIT_COND_DEBUG) printf("init_cond: %s = %d (TYPE INT)\n", init_cond->param->name, init_cond->init_val.int_val); + *((int*)init_cond->param->engine_val) = init_cond->init_val.int_val; + return; + } + + /* Parameter is of a float type, just like C */ + + if (init_cond->param->type == P_TYPE_DOUBLE) { + if (INIT_COND_DEBUG) { + printf( "init_cond: %s = %f (TYPE DOUBLE) -> %f -> %X -> %X\n", init_cond->param->name, + init_cond->init_val.float_val, *((float *)init_cond->param->engine_val), + init_cond->param, init_cond->param->engine_val ); + } + *((float*)init_cond->param->engine_val) = init_cond->init_val.float_val; + return; + } + + /* Unknown type of parameter */ + return; +} + +/* Creates a new initial condition */ +init_cond_t * new_init_cond(param_t * param, value_t init_val) { + + init_cond_t * init_cond; + + init_cond = (init_cond_t*)wipemalloc(sizeof(init_cond_t)); + + if (init_cond == NULL) + return NULL; + + init_cond->param = param; + init_cond->init_val = init_val; + + if ( INIT_COND_DEBUG ) { + printf( "new_init_cond: %s -> %X -> %X\n", init_cond->param->name, init_cond->param, init_cond->param->engine_val ); + } + + return init_cond; +} + +/* WIP */ +void init_cond_to_string(init_cond_t * init_cond) { + + int string_length; + char string[MAX_TOKEN_SIZE]; + + if (init_cond == NULL) + return; + + /* Create a string "param_name=val" */ + switch (init_cond->param->type) { + + case P_TYPE_BOOL: + sprintf(string, "%s=%d\n", init_cond->param->name, init_cond->init_val.bool_val); + break; + case P_TYPE_INT: + sprintf(string, "%s=%d\n", init_cond->param->name, init_cond->init_val.int_val); + break; + case P_TYPE_DOUBLE: + sprintf(string, "%s=%f\n", init_cond->param->name, init_cond->init_val.float_val); + break; + default: + return; + } + + /* Compute the length of the string */ + string_length = strlen(string); + + /* Buffer overflow check */ + if ((init_cond_string_buffer_index + string_length + 1) > (STRING_BUFFER_SIZE - 1)) + return; + + /* Copy the string into the initial condition string buffer */ + + strncpy(init_cond_string_buffer + init_cond_string_buffer_index, string, string_length); + + /* Increment the string buffer, offset by one for the null terminator, which will be + overwritten by the next call to this function */ + init_cond_string_buffer_index+= string_length + 1; + +} + + +char * create_init_cond_string_buffer(splaytree_t * init_cond_tree) { + + if (init_cond_tree == NULL) + return NULL; + + init_cond_string_buffer_index = 0; + + splay_traverse((void (*)(void*))init_cond_to_string, init_cond_tree); + + return init_cond_string_buffer; + +} diff --git a/libprojectM/src/init_cond.h b/libprojectM/src/init_cond.h new file mode 100755 index 000000000..525deaf44 --- /dev/null +++ b/libprojectM/src/init_cond.h @@ -0,0 +1,35 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _INIT_COND_H +#define _INIT_COND_H + +#define INIT_COND_DEBUG 0 + +#include "param_types.h" +#include "splaytree_types.h" + +void eval_init_cond(init_cond_t * init_cond); +init_cond_t * new_init_cond(param_t * param, value_t init_val); +void free_init_cond(init_cond_t * init_cond); +char * create_init_cond_string_buffer(splaytree_t * init_cond_tree); + +#endif /** !_INIT_COND_H */ diff --git a/libprojectM/src/init_cond_types.h b/libprojectM/src/init_cond_types.h new file mode 100755 index 000000000..c5449a474 --- /dev/null +++ b/libprojectM/src/init_cond_types.h @@ -0,0 +1,33 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _INIT_COND_TYPES_H +#define _INIT_COND_TYPES_H + +#include "param_types.h" +#include "expr_types.h" + +typedef struct INIT_COND_T { + struct PARAM_T * param; + value_t init_val; +} init_cond_t; + +#endif /** !_INIT_COND_TYPES_H */ diff --git a/libprojectM/src/interface_types.h b/libprojectM/src/interface_types.h new file mode 100755 index 000000000..d5ee6df23 --- /dev/null +++ b/libprojectM/src/interface_types.h @@ -0,0 +1,34 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _INTERFACE_TYPES_H +#define _INTERFACE_TYPES_H + +typedef enum { + + MENU_INTERFACE, + SHELL_INTERFACE, + EDITOR_INTERFACE, + DEFAULT_INTERFACE, + BROWSER_INTERFACE +} interface_t; + +#endif /** !_INTERFACE_TYPES_H */ diff --git a/libprojectM/src/menu.cc b/libprojectM/src/menu.cc new file mode 100755 index 000000000..ad8ec5d15 --- /dev/null +++ b/libprojectM/src/menu.cc @@ -0,0 +1,1079 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#include +#include +#include + +#include "projectM.h" + +#ifdef MACOS +#include +#else +#include +#endif /** MACOS */ +#include "common.h" +#include "fatal.h" +#include "param_types.h" +#include "param.h" +#include "interface_types.h" +#include "splaytree_types.h" +#include "splaytree.h" + +#include "init_cond_types.h" +#include "init_cond.h" + +#include "glConsole.h" + +#include "preset_types.h" +#include "preset.h" +#include "editor.h" +#include "menu.h" +#include "wipemalloc.h" + +#define HIGHLIGHT_COLOR 1 +#define DEFAULT_COLOR 0 +#define LOCKED_COLOR 2 + +extern preset_t *active_preset; +extern interface_t current_interface; + +menu_t * load_waveform_menu(); +menu_t * load_augmentations_menu(); +menu_t * load_postprocessing_menu(); +menu_t * load_motion_menu(); +int load_main_menu(); + +int edit_per_frame_init(); +int edit_per_frame_eqn(); +int edit_per_pixel_eqn(); +int run_bash_shell(); + + +int print_menu_item(menu_item_t * menu_item); +int switch_bool_param(param_t * param); +int adj_float_param(param_t * param, adj_t adj); +int adj_int_param(param_t * param, adj_t adj); +int pursue_menu_link(menu_link_t * menu_link); + +int append_menu_item(menu_t * menu, menu_item_t * new_menu_item); + +menu_t * new_menu(menu_t * top_menu); +menu_item_t * new_menu_item(int menu_entry_type, menu_entry_t * menu_entry); +menu_entry_t * new_menu_link(char * print_string, menu_t * menu_ptr); + + +menu_entry_t * new_param_adj(char * print_string, param_t * param); + +menu_entry_t * new_function_mode(char * print_string, int (*func_ptr)()); + +int free_menu_entry(menu_entry_t * menu_entry); +int free_menu_item(menu_item_t * menu_item); +int free_menu(menu_t * menu); + +init_cond_t * get_init_cond(param_t * param); + +int menu_lprint(char * string, int col); +int init_main_menu(); +int destroy_main_menu(); + +int width, height; + +float xmin,ymin,xmax,ymax; + + +value_t saved_init_val; /* backups the value of an initial condition */ + +menu_t * main_menu = NULL; /* Global menu structure */ + +menu_t * active_menu = NULL; /* the currently loaded menu */ + +gl_console_t * menu_console = NULL; + + + +display_state menu_display_state = HIDE; + +int initMenu() { + + + + + + + if (MENU_DEBUG) { + printf("initMenu: loading menu:"); + fflush(stdout); + } + + load_main_menu(); + if (MENU_DEBUG) printf(" [done]\n"); + active_menu = main_menu; + return PROJECTM_SUCCESS; +} + +int showMenu() { + + if ((menu_console = glConsoleCreate(80,24, 81, 25, width*.05, height * .90,0)) == NULL) + return PROJECTM_FAILURE; + + glConsoleSetFlags(CONSOLE_FLAG_CURSOR_HIDDEN|CONSOLE_FLAG_SCROLL_WRAP_DOWN|CONSOLE_FLAG_SCROLL_WRAP_RIGHT, menu_console); + + active_menu = main_menu; + main_menu->start_item = main_menu->selected_item; + menu_display_state = SHOW; + return PROJECTM_SUCCESS; +} + +int hideMenu() { + menu_display_state = HIDE; + active_menu = main_menu; + active_menu->selected_item = active_menu->start_item; + + if (active_menu->locked_item != NULL) { + // if (active_menu->locked_item->menu_entry_type == PARAM_ADJ_TYPE) + // active_menu->locked_item->menu_entry->param_adj.param->init_val = saved_init_val; + active_menu->locked_item = NULL; + } + + glConsoleDestroy(menu_console); + menu_console = NULL; + + return PROJECTM_SUCCESS; +} + +int load_main_menu() { + + menu_t * waveform_menu; + menu_t * augmentations_menu; + menu_t * motion_menu; + menu_t * postprocessing_menu; + + if ((main_menu = new_menu(NULL)) == NULL) + return PROJECTM_OUTOFMEM_ERROR; + + if (MENU_DEBUG) { printf(" [waveform:"); fflush(stdout); } + waveform_menu = load_waveform_menu(); + + if (waveform_menu == NULL) { + free_menu(main_menu); + if (MENU_DEBUG) { printf(" failure]\n"); fflush(stdout); } + return PROJECTM_FAILURE; + } + + if (MENU_DEBUG) { printf(" success]"); fflush(stdout); } + + if (MENU_DEBUG) { printf(" [augmentations:"); fflush(stdout); } + augmentations_menu = load_augmentations_menu(); + + if (augmentations_menu == NULL) { + free_menu(main_menu); + free_menu(waveform_menu); + if (MENU_DEBUG) { printf(" failure]\n"); fflush(stdout); } + return PROJECTM_FAILURE; + } + + if (MENU_DEBUG) { printf(" success]"); fflush(stdout); } + + if (MENU_DEBUG) { printf(" [postprocessing:"); fflush(stdout); } + postprocessing_menu = load_postprocessing_menu(); + + if (postprocessing_menu == NULL) { + free_menu(main_menu); + free_menu(waveform_menu); + free_menu(augmentations_menu); + if (MENU_DEBUG) { printf(" failure]\n"); fflush(stdout); } + return PROJECTM_FAILURE; + } + + if (MENU_DEBUG) { printf(" success]"); fflush(stdout); } + + if (MENU_DEBUG) { printf(" [motion:"); fflush(stdout); } + motion_menu = load_motion_menu(); + + if (motion_menu == NULL) { + free_menu(main_menu); + free_menu(waveform_menu); + free_menu(augmentations_menu); + free_menu(postprocessing_menu); + if (MENU_DEBUG) { printf(" failure]\n"); fflush(stdout); } + return PROJECTM_FAILURE; + } + + if (MENU_DEBUG) { printf(" success]"); fflush(stdout); } + + append_menu_item(main_menu, new_menu_item(MENU_LINK_TYPE, new_menu_link("--waveform", waveform_menu))); + append_menu_item(main_menu, new_menu_item(MENU_LINK_TYPE, new_menu_link("--augmentations", augmentations_menu))); + append_menu_item(main_menu, new_menu_item(MENU_LINK_TYPE, new_menu_link("--motion", motion_menu))); + append_menu_item(main_menu, new_menu_item(MENU_LINK_TYPE, new_menu_link("--post processing, global effects", postprocessing_menu))); + + append_menu_item(main_menu, new_menu_item(FUNCTION_MODE_TYPE, new_function_mode("edit per_frame equations", edit_per_frame_eqn))); + append_menu_item(main_menu, new_menu_item(FUNCTION_MODE_TYPE, new_function_mode("edit per_pixel equations", edit_per_pixel_eqn))); + append_menu_item(main_menu, new_menu_item(FUNCTION_MODE_TYPE, new_function_mode("edit preset initialization code", edit_per_frame_init))); + //append_menu_item(main_menu, new_menu_item(FUNCTION_MODE_TYPE, new_function_mode("bash shell", run_bash_shell))); + + main_menu->selected_item = main_menu->start_item; + + return PROJECTM_SUCCESS; +} + + +menu_t * load_waveform_menu() { + menu_t * waveform_menu; + + if ((waveform_menu = new_menu(main_menu)) == NULL) + return NULL; + append_menu_item(waveform_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("wave type", find_param("nWaveMode", active_preset, P_CREATE)))); + append_menu_item(waveform_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("size", find_param("fWaveScale", active_preset, P_CREATE)))); + append_menu_item(waveform_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("smoothing", find_param("fWaveSmoothing", active_preset, P_CREATE)))); + + append_menu_item(waveform_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("mystery parameter", find_param("wave_mystery", active_preset, P_CREATE)))); + append_menu_item(waveform_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("opacity", find_param("fWaveAlpha", active_preset, P_CREATE)))); + append_menu_item(waveform_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("position (x)", find_param("wave_x", active_preset, P_CREATE)))); + append_menu_item(waveform_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("position (y)", find_param("wave_y", active_preset, P_CREATE)))); + append_menu_item(waveform_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("color (red)", find_param("wave_r", active_preset, P_CREATE)))); + append_menu_item(waveform_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("color (green)", find_param("wave_g", active_preset, P_CREATE)))); + append_menu_item(waveform_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("color (blue)", find_param("wave_b", active_preset, P_CREATE)))); + + append_menu_item(waveform_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("use dots", find_param("bWaveDots", active_preset, P_CREATE)))); + + append_menu_item(waveform_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("draw thick", find_param("bWaveThick", active_preset, P_CREATE)))); + + append_menu_item(waveform_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("modulate opacity by volume", find_param("bModWaveAlphaByVolume", active_preset, P_CREATE)))); + append_menu_item(waveform_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("mod. lower threshold", find_param("fModWaveAlphaStart", active_preset, P_CREATE)))); + append_menu_item(waveform_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("mod. uppper threshold", find_param("fModWaveAlphaEnd", active_preset, P_CREATE)))); + + append_menu_item(waveform_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("additive drawing", find_param("bAdditiveWaves", active_preset, P_CREATE)))); + append_menu_item(waveform_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("color brightening", find_param("bMaximizeWaveColor", active_preset, P_CREATE)))); + waveform_menu->selected_item = waveform_menu->start_item; + + return waveform_menu; +} + + +menu_t * load_augmentations_menu() { + menu_t * augmentations_menu; + + if ((augmentations_menu = new_menu(main_menu)) == NULL) + return NULL; + + append_menu_item(augmentations_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("outer border thickness", find_param("ob_size", active_preset, P_CREATE)))); + append_menu_item(augmentations_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj(" color (red)", find_param("ob_r", active_preset, P_CREATE)))); + append_menu_item(augmentations_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj(" color (green)", find_param("ob_g", active_preset, P_CREATE)))); + append_menu_item(augmentations_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj(" color (blue)", find_param("ob_b", active_preset, P_CREATE)))); + append_menu_item(augmentations_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj(" opacity", find_param("ob_a", active_preset, P_CREATE)))); + + + append_menu_item(augmentations_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("inner border thickness", find_param("ib_size", active_preset, P_CREATE)))); + append_menu_item(augmentations_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj(" color (red)", find_param("ib_r", active_preset, P_CREATE)))); + append_menu_item(augmentations_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj(" color (green)", find_param("ib_g", active_preset, P_CREATE)))); + append_menu_item(augmentations_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj(" color (blue)", find_param("ib_b", active_preset, P_CREATE)))); + append_menu_item(augmentations_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj(" opacity", find_param("ib_a", active_preset, P_CREATE)))); + + append_menu_item(augmentations_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("motion vector opacity", find_param("mv_a", active_preset, P_CREATE)))); + append_menu_item(augmentations_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("num. mot. vector (X)", find_param("mv_x", active_preset, P_CREATE)))); + append_menu_item(augmentations_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("num. mot. vector (Y)", find_param("mv_y", active_preset, P_CREATE)))); + append_menu_item(augmentations_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("offset (X)", find_param("mv_dx", active_preset, P_CREATE)))); + append_menu_item(augmentations_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("offset (Y)", find_param("mv_dy", active_preset, P_CREATE)))); + append_menu_item(augmentations_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("trail length", find_param("mv_l", active_preset, P_CREATE)))); + append_menu_item(augmentations_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("color (red)", find_param("mv_r", active_preset, P_CREATE)))); + append_menu_item(augmentations_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("color (green)", find_param("mv_g", active_preset, P_CREATE)))); + append_menu_item(augmentations_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("color (blue)", find_param("mv_b", active_preset, P_CREATE)))); + + + augmentations_menu->selected_item = augmentations_menu->start_item; + + return augmentations_menu; +} + +/* Loads the motion menu, a sub menu of the main menu */ +menu_t * load_motion_menu() { + menu_t * motion_menu; + + if ((motion_menu = new_menu(main_menu)) == NULL) + return NULL; + + + append_menu_item(motion_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("zoom amount", find_param("zoom", active_preset, P_CREATE)))); + append_menu_item(motion_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("zoom exponent", find_param("zoomexp", active_preset, P_CREATE)))); + append_menu_item(motion_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("rotation amount", find_param("rot", active_preset, P_CREATE)))); + append_menu_item(motion_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("rot., center of (X)", find_param("cx", active_preset, P_CREATE)))); + append_menu_item(motion_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("rot., center of (Y)", find_param("cy", active_preset, P_CREATE)))); + append_menu_item(motion_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("translation (X)", find_param("dx", active_preset, P_CREATE)))); + append_menu_item(motion_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("translation (Y)", find_param("dy", active_preset, P_CREATE)))); + append_menu_item(motion_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("scaling (X)", find_param("sx", active_preset, P_CREATE)))); + append_menu_item(motion_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("scaling (Y)", find_param("sy", active_preset, P_CREATE)))); + + motion_menu->selected_item = motion_menu->start_item; + + return motion_menu; +} + +/* Loads the post processing menu, a sub menu of the main, menu */ +menu_t * load_postprocessing_menu() { + menu_t * postprocessing_menu; + if ((postprocessing_menu = new_menu(main_menu)) == NULL) + return NULL; + + append_menu_item(postprocessing_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("sustain level", find_param("fDecay", active_preset, P_CREATE)))); + + append_menu_item(postprocessing_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("darken center", find_param("bDarkenCenter", active_preset, P_CREATE)))); + + append_menu_item(postprocessing_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("gamma adjustment", find_param("fDecay", active_preset, P_CREATE)))); + append_menu_item(postprocessing_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("video echo: alpha", find_param("fVideoEchoAlpha", active_preset, P_CREATE)))); + append_menu_item(postprocessing_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("video echo: scale", find_param("fVideoEchoZoom", active_preset, P_CREATE)))); + append_menu_item(postprocessing_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("video echo: orientation", find_param("nVideoEchoOrientation", active_preset, P_CREATE)))); + append_menu_item(postprocessing_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("texture wrapping", find_param("bTexWrap", active_preset, P_CREATE)))); + append_menu_item(postprocessing_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("darken filter", find_param("bDarken", active_preset, P_CREATE)))); + append_menu_item(postprocessing_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("brighten filter", find_param("bBrighten", active_preset, P_CREATE)))); + append_menu_item(postprocessing_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("solarize filter", find_param("bSolarize", active_preset, P_CREATE)))); + append_menu_item(postprocessing_menu, new_menu_item(PARAM_ADJ_TYPE, new_param_adj("invert filter", find_param("bInvert", active_preset, P_CREATE)))); + + + postprocessing_menu->selected_item = postprocessing_menu->start_item; + + return postprocessing_menu; +} + +int refreshMenu() { + + menu_item_t * menu_item; + + if (menu_display_state == HIDE) { + return PROJECTM_SUCCESS; + } + + if (menu_display_state == SPECIAL) { + glConsoleDraw(menu_console); + glConsoleClearBuffer(menu_console); + return PROJECTM_SUCCESS; + } + + menu_item = active_menu->start_item; + + glConsoleClearBuffer(menu_console); + + while (menu_item) { + print_menu_item(menu_item); + menu_item = menu_item->down; + } + + glConsoleDraw(menu_console); + return PROJECTM_SUCCESS; +} + +int destroyMenu() { + + if (main_menu != NULL) + free_menu(main_menu); + + main_menu = NULL; + return PROJECTM_SUCCESS; +} + +/* Prints a line to the opengl screen, second entry is the color, work in progress */ +int menu_lprint(char * string, int col) { + + if (active_menu == NULL) + return PROJECTM_FAILURE; + + if (string == NULL) + return PROJECTM_FAILURE; + + if (col == HIGHLIGHT_COLOR) { + glConsoleSetBGColor(CONSOLE_WHITE, menu_console); + glConsoleSetFGColor(CONSOLE_BLUE, menu_console); + } + else if (col == LOCKED_COLOR) { + glConsoleSetBGColor(CONSOLE_WHITE, menu_console); + glConsoleSetFGColor(CONSOLE_RED, menu_console); + } + else { + glConsoleSetBGColor(CONSOLE_BLACK, menu_console); + glConsoleSetFGColor(CONSOLE_WHITE, menu_console); + } + + glConsolePrintString(string, menu_console); + glConsolePrintString("\n", menu_console); + return PROJECTM_SUCCESS; +} + + + +int print_menu_item(menu_item_t * menu_item) { + + param_adj_t param_adj; + char string[MAX_TOKEN_SIZE]; + int col; + init_cond_t * init_cond; + + if (menu_item == NULL) + return PROJECTM_FAILURE; + if (active_menu == NULL) + return PROJECTM_FAILURE; + + if (active_menu->locked_item == menu_item) + col = LOCKED_COLOR; + else if (active_menu->selected_item == menu_item) + col = HIGHLIGHT_COLOR; + else + col = DEFAULT_COLOR; + switch (menu_item->menu_entry_type) { + + case PARAM_ADJ_TYPE: + param_adj = menu_item->menu_entry->param_adj; + + switch(param_adj.param->type) { + + case P_TYPE_BOOL: + + if ((init_cond = get_init_cond(param_adj.param)) == NULL) + sprintf(string, "%s ?", param_adj.print_string); + else if (init_cond->init_val.bool_val) + sprintf(string, "%s [ON]", param_adj.print_string); + else + sprintf(string, "%s [OFF]", param_adj.print_string); + break; + case P_TYPE_INT: + if ((init_cond = get_init_cond(param_adj.param)) == NULL) + sprintf(string, "%s ?", param_adj.print_string); + else + sprintf(string, "%s %d", param_adj.print_string, init_cond->init_val.int_val); + break; + case P_TYPE_DOUBLE: + if ((init_cond = get_init_cond(param_adj.param)) == NULL) + sprintf(string, "%s ?", param_adj.print_string); + else + sprintf(string, "%s %f", param_adj.print_string, init_cond->init_val.float_val); + break; + + default: /* unknown paramater type */ + return PROJECTM_FAILURE; + } + return menu_lprint(string, col); + case FUNCTION_MODE_TYPE: + return menu_lprint(menu_item->menu_entry->function_mode.print_string, col); + case MENU_LINK_TYPE: + return menu_lprint(menu_item->menu_entry->menu_link.print_string, col); + default: + if (MENU_DEBUG) printf("print_menu_item: invalid menu entry type, val = %d\n", + menu_item->menu_entry_type); + return PROJECTM_FAILURE; + } + + return PROJECTM_SUCCESS; +} + +/* switchMenuState: changes to another menu item according to the passed direction */ +int switchMenuState(dir_t dir) { + + menu_item_t * new_menu_item; + param_adj_t param_adj; + init_cond_t * init_cond; + + if (active_menu == NULL) + return PROJECTM_FAILURE; + + /* Case on the direction of the key press */ + switch (dir) { + + case PAGEUP: + if(active_menu->locked_item != NULL) { + if (active_menu->locked_item->menu_entry_type == PARAM_ADJ_TYPE) + return adj_float_param(active_menu->locked_item->menu_entry->param_adj.param, BIG_INC); + } + + /* Force to top of menu */ + active_menu->selected_item = active_menu->start_item; + return PROJECTM_SUCCESS; + case PAGEDOWN: + if(active_menu->locked_item != NULL) { + if (active_menu->locked_item->menu_entry_type == PARAM_ADJ_TYPE) + return adj_float_param(active_menu->locked_item->menu_entry->param_adj.param, BIG_DEC); + } + + /* Force to bottom of menu */ + while((new_menu_item = active_menu->selected_item->down) != NULL) + active_menu->selected_item = new_menu_item; + return PROJECTM_SUCCESS; + + case UP: + if(active_menu->locked_item != NULL) { + if (active_menu->locked_item->menu_entry_type == PARAM_ADJ_TYPE) + return adj_float_param(active_menu->locked_item->menu_entry->param_adj.param, SMALL_INC); + } + + /* Is this the first item of the menu ? */ + if ((new_menu_item = active_menu->selected_item->up) == NULL) + return PROJECTM_SUCCESS; + active_menu->selected_item = new_menu_item; + return PROJECTM_SUCCESS; + case DOWN: + if(active_menu->locked_item != NULL) { + if (active_menu->locked_item->menu_entry_type == PARAM_ADJ_TYPE) + return adj_float_param(active_menu->locked_item->menu_entry->param_adj.param, SMALL_DEC); + } + + /* Is this the last item of the menu ? */ + if ((new_menu_item = active_menu->selected_item->down) == NULL) + return PROJECTM_SUCCESS; + active_menu->selected_item = new_menu_item; + return PROJECTM_SUCCESS; + case LEFT: + /* Left key unlocks the highlighted item */ + if (active_menu->locked_item != NULL) { + /* The left arrow cancels the initial condition adjustment */ + if (active_menu->locked_item->menu_entry_type == PARAM_ADJ_TYPE) { + //active_menu->locked_item->menu_entry->param_adj.param->init_val = saved_init_val; + } + active_menu->locked_item = NULL; + return PROJECTM_SUCCESS; + } + /* Otherwise go up a menu if it isn't the top menu */ + if (active_menu->top_menu == NULL) + return PROJECTM_SUCCESS; + active_menu = active_menu->top_menu; + return PROJECTM_SUCCESS; + case RIGHT: + switch (active_menu->selected_item->menu_entry_type) { + case MENU_LINK_TYPE: + return pursue_menu_link(&active_menu->selected_item->menu_entry->menu_link); + case PARAM_ADJ_TYPE: + param_adj = active_menu->selected_item->menu_entry->param_adj; + + + + if (active_menu->locked_item == NULL) { + + if ((init_cond = get_init_cond(param_adj.param)) == NULL) + return PROJECTM_FAILURE; + + + /* Save previous initial condition value */ + //saved_init_val = init_cond->init_val; + + /* If a bool parameter, just switch its value and quit */ + if (param_adj.param->type == P_TYPE_BOOL) { + init_cond->init_val.bool_val = !init_cond->init_val.bool_val; + return PROJECTM_SUCCESS; + } + + /* Otherwise, lock this parameter so the user can adjust it */ + active_menu->locked_item = active_menu->selected_item; + + } + + /* Unlock the item, but keep the changed initial value intact */ + else { + active_menu->locked_item = NULL; + } + + break; + case FUNCTION_MODE_TYPE: + return active_menu->selected_item->menu_entry->function_mode.func_ptr(); + default: + return PROJECTM_FAILURE; + } + default: + return PROJECTM_FAILURE; +} + +return PROJECTM_SUCCESS; +} + +/* Creates a new menu */ +menu_t * new_menu(menu_t * top_menu) { + + menu_t * menu; + + if ((menu = (menu_t*)wipemalloc(sizeof(menu_t))) == NULL) + return NULL; + + menu->top_menu = top_menu; + menu->start_item = menu->selected_item = NULL; + menu->locked_item = NULL; + return menu; +} + +/* Frees a menu */ +int free_menu(menu_t * menu) { + menu_item_t * menu_item, * backup; + + if (menu == NULL) + return PROJECTM_SUCCESS; + + menu_item = menu->start_item; + + /* Now we free every entry in this menu */ + while (menu_item) { + backup = menu_item->down; + + /* If a menu link, free the sub menu it points to */ + if (menu_item->menu_entry_type == MENU_LINK_TYPE) { + free_menu(menu_item->menu_entry->menu_link.sub_menu); + } + + /* Now free the menu item */ + free_menu_item(menu_item); + + /* Set menu item to the next item in the list */ + menu_item = backup; + } + + /* Finally, we free the menu struct itself */ + free(menu); + menu = NULL; + + /* Finished, return success */ + return PROJECTM_SUCCESS; +} + +/* Creates a new menu link type */ +menu_entry_t * new_menu_link(char * print_string, menu_t * menu_ptr) { + + menu_entry_t * menu_entry; + menu_link_t menu_link; + + /* Argument Checks */ + if (print_string == NULL) + return NULL; + if (menu_ptr == NULL) + return NULL; + + + /* Allocate memory for the menu entry */ + if ((menu_entry = (menu_entry_t*)wipemalloc(sizeof(menu_entry_t))) == NULL) + return NULL; + + + /* Copy the string parameter */ + memset(menu_link.print_string, 0, MAX_TOKEN_SIZE); + strncpy(menu_link.print_string, print_string, MAX_TOKEN_SIZE); + + menu_link.sub_menu = menu_ptr; + + menu_entry->menu_link = menu_link; + + return menu_entry; +} + + +/* Creates a new parameter adjustment entry */ +menu_entry_t * new_param_adj(char * print_string, param_t * param) { + + menu_entry_t * menu_entry; + param_adj_t param_adj; + + /* Argument Checks */ + if (print_string == NULL) + return NULL; + + if (param == NULL) { + if (MENU_DEBUG) printf("new_param_adj: passed a null parameter!\n"); + return NULL; + } + + /* Allocate memory for the menu entry */ + if ((menu_entry = (menu_entry_t*)wipemalloc(sizeof(menu_entry_t))) == NULL) + return NULL; + + /* Copy the string parameter */ + memset(param_adj.print_string, 0, MAX_TOKEN_SIZE); + strncpy(param_adj.print_string, print_string, MAX_TOKEN_SIZE); + + param_adj.param = param; + menu_entry->param_adj = param_adj; + + return menu_entry; +} + +/* Appends a menu item */ +int append_menu_item(menu_t * menu, menu_item_t * new_menu_item) { + + menu_item_t * menu_item; + + /* Argument checks */ + if (menu == NULL) + return PROJECTM_FAILURE; + + if (new_menu_item == NULL) + return PROJECTM_FAILURE; + + + /* Menu is empty, insert here */ + if (menu->start_item == NULL) { + menu->start_item = new_menu_item; + new_menu_item->up = NULL; + return PROJECTM_SUCCESS; + } + + menu_item = menu->start_item; + + /* Traverse down the menu */ + while (menu_item->down) { + menu_item = menu_item->down; + } + + /* Insert the item at the end */ + menu_item->down = new_menu_item; + new_menu_item->up = menu_item; + + return PROJECTM_SUCCESS; + +} + +/* Creates a new menu item, up and down entries are null by default */ +menu_item_t * new_menu_item(int menu_entry_type, menu_entry_t * menu_entry) { + + menu_item_t * menu_item; + + /* Argument check */ + if (menu_entry == NULL) + return NULL; + + /* Out of memory check */ + if ((menu_item = (menu_item_t*)wipemalloc(sizeof(menu_item_t))) == NULL) { + return NULL; + } + + menu_item->menu_entry_type = menu_entry_type; + menu_item->menu_entry = menu_entry; + menu_item->up = NULL; + menu_item->down = NULL; + + return menu_item; +} + +/* Frees a menu item */ +int free_menu_item(menu_item_t * menu_item) { + + if (menu_item == NULL) + return PROJECTM_OK; + + free(menu_item->menu_entry); + free(menu_item); + + menu_item = NULL; + + return PROJECTM_SUCCESS; +} + + +/* Creates a new editor mode */ +menu_entry_t * new_function_mode(char * print_string, int (*func_ptr)()) { + + menu_entry_t * menu_entry; + function_mode_t function_mode; + + /* Argument Checks */ + if (print_string == NULL) + return NULL; + + /* Allocate memory for the menu entry */ + if ((menu_entry = (menu_entry_t*)wipemalloc(sizeof(menu_entry_t))) == NULL) + return NULL; + + + /* Copy the string parameter */ + memset(function_mode.print_string, 0, MAX_TOKEN_SIZE); + strncpy(function_mode.print_string, print_string, MAX_TOKEN_SIZE); + + function_mode.func_ptr = func_ptr; + menu_entry->function_mode = function_mode; + + return menu_entry; +} + + +/* Pursues a link in a menu */ +int pursue_menu_link(menu_link_t * menu_link) { + + if (menu_link == NULL) + return PROJECTM_FAILURE; + + active_menu = menu_link->sub_menu; + + return PROJECTM_SUCCESS; +} + + +int edit_per_pixel_eqn() { + hideMenu(); + current_interface = EDITOR_INTERFACE; + loadEditor(active_preset->per_pixel_eqn_string_buffer,(void (*)()) reloadPerPixel, 80, 24, 140, 60, 0, 0); + return PROJECTM_SUCCESS; +} + +int edit_per_frame_eqn() { + hideMenu(); + current_interface = EDITOR_INTERFACE; + loadEditor(active_preset->per_frame_eqn_string_buffer, (void (*)())reloadPerFrame,80,24,140,60,0,0); + return PROJECTM_SUCCESS; +} + +int edit_per_frame_init() { + hideMenu(); + current_interface = EDITOR_INTERFACE; + loadEditor(active_preset->per_frame_init_eqn_string_buffer,(void (*)()) reloadPerFrameInit,80,24,140,60,0,0); + return PROJECTM_SUCCESS; +} + + +int run_bash_shell() { + + printf("setting menu state to special\n"); + menu_display_state = SPECIAL; + // glConsoleStartShell(menu_console); + + //menu_display_state = SHOW; + + return PROJECTM_SUCCESS; +} + + + +/* Adjust a float parameter */ +int adj_float_param(param_t * param, adj_t adj) { + + float inc_val; + init_cond_t * init_cond = NULL; + + if (param == NULL) + return PROJECTM_FAILURE; + + if (param->type == P_TYPE_INT) + return (adj_int_param(param, adj)); + + if ((init_cond = (init_cond_t*)splay_find(param->name, active_preset->init_cond_tree)) == NULL) + return PROJECTM_FAILURE; + + switch (adj) { + + case VERY_SMALL_INC: + inc_val = .001; + break; + case SMALL_INC: + inc_val = .01; + break; + case BIG_INC: + inc_val = .1; + break; + case VERY_BIG_INC: + inc_val = 1.0; + break; + case VERY_SMALL_DEC: + inc_val = -.001; + break; + case SMALL_DEC: + inc_val = -.01; + break; + case BIG_DEC: + inc_val = -0.1; + break; + case VERY_BIG_DEC: + inc_val = -1.0; + break; + + default: + return PROJECTM_FAILURE; + } + + /* Beyond upper bounds, normalize to maximum value */ + if ((init_cond->init_val.float_val + inc_val) > param->upper_bound.float_val) + init_cond->init_val.float_val = param->upper_bound.float_val; + + else if ((init_cond->init_val.float_val + inc_val) < param->lower_bound.float_val) + init_cond->init_val.float_val = param->lower_bound.float_val; + + else + init_cond->init_val.float_val += inc_val; + + return PROJECTM_SUCCESS; +} + +/* Adjust an integer parameter */ +int adj_int_param(param_t * param, adj_t adj) { + + int inc_val; + init_cond_t * init_cond = NULL; + + if (param == NULL) + return PROJECTM_FAILURE; + + if ((init_cond = (init_cond_t*)splay_find(param->name, active_preset->init_cond_tree)) == NULL) + return PROJECTM_FAILURE; + + switch (adj) { + + + case VERY_SMALL_INC: + inc_val = 1; + break; + case SMALL_INC: + inc_val = 1; + break; + case BIG_INC: + inc_val = 1; + break; + case VERY_BIG_INC: + inc_val = 5; + break; + + case VERY_SMALL_DEC: + inc_val = -1; + break; + case SMALL_DEC: + inc_val = -1; + break; + case BIG_DEC: + inc_val = -1; + break; + case VERY_BIG_DEC: + inc_val = -5; + break; + + default: + return PROJECTM_FAILURE; + } + + /* Beyond upper bounds, normalize to maximum value */ + if ((init_cond->init_val.int_val + inc_val) > param->upper_bound.int_val) + init_cond->init_val.int_val = param->upper_bound.int_val; + + /* Below lower bounds, normalize to lowest value */ + else if ((init_cond->init_val.int_val + inc_val) < param->lower_bound.int_val) + init_cond->init_val.int_val = param->lower_bound.int_val; + + else + init_cond->init_val.int_val += inc_val; + + return PROJECTM_SUCCESS; +} + +void menu_key_handler( projectM_t *PM, projectMEvent event, projectMKeycode key ) { + + switch( event ) { + case PROJECTM_KEYDOWN: + switch(key) + { + case PROJECTM_K_f: + + if (PM->fullscreen==1) + {PM->vw=PM->wvw;PM->vh=PM->wvh;PM->fullscreen=0;} + else{PM->vw=PM->fvw; PM->vh=PM->fvh;PM->fullscreen=1;} + +// init_display(PM->vw,PM->vh,PM->fullscreen); + + + break; + case PROJECTM_K_n: + switchPreset(ALPHA_NEXT, HARD_CUT); + break; + case PROJECTM_K_r: + switchPreset(RANDOM_NEXT, HARD_CUT); + break; + case PROJECTM_K_p: + switchPreset(ALPHA_PREVIOUS, HARD_CUT); + break; + case PROJECTM_K_a: + break; + case PROJECTM_K_z: + break; + case PROJECTM_K_0: + //nWaveMode=0; + break; + case PROJECTM_K_6: + //nWaveMode=6; + break; + case PROJECTM_K_7: + //nWaveMode=7; + break; + case PROJECTM_K_UP: + switchMenuState(UP); + break; + case PROJECTM_K_RETURN: + case PROJECTM_K_RIGHT: + switchMenuState(RIGHT); + break; + case PROJECTM_K_LEFT: + switchMenuState(LEFT); + break; + case PROJECTM_K_DOWN: + switchMenuState(DOWN); + break; + case PROJECTM_K_PAGEUP: + switchMenuState(PAGEUP); + break; + case PROJECTM_K_PAGEDOWN: + switchMenuState(PAGEDOWN); + break; + case PROJECTM_K_ESCAPE: + case PROJECTM_K_m: + hideMenu(); + current_interface = DEFAULT_INTERFACE; + break; + case PROJECTM_K_t: + break; + default: + break; + } + } + + + + +} + +/* Finds / Creates (if necessary) initial condition associated with passed parameter */ +init_cond_t * get_init_cond(param_t * param) { + + init_cond_t * init_cond; + value_t init_val; + + if (param == NULL) + return NULL; + + if ((init_cond = (init_cond_t*)(splay_find(param->name, active_preset->init_cond_tree))) == NULL) { + + if (param->type == P_TYPE_BOOL) + init_val.bool_val = 0; + + else if (param->type == P_TYPE_INT) + init_val.int_val = *(int*)param->engine_val; + + else if (param->type == P_TYPE_DOUBLE) + init_val.float_val = *(float*)param->engine_val; + + /* Create new initial condition */ + if ((init_cond = new_init_cond(param, init_val)) == NULL) + return NULL; + + /* Insert the initial condition into this presets tree */ + if (splay_insert(init_cond, init_cond->param->name, active_preset->init_cond_tree) < 0) { + free_init_cond(init_cond); + return NULL; + } + + } + + return init_cond; + +} diff --git a/libprojectM/src/menu.h b/libprojectM/src/menu.h new file mode 100755 index 000000000..73ef79a6f --- /dev/null +++ b/libprojectM/src/menu.h @@ -0,0 +1,111 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _MENU_H +#define _MENU_H + +#include "event.h" +#include "common.h" +#include "param_types.h" + +#define MENU_DEBUG 0 + +#define PARAM_ADJ_TYPE 0 +#define MENU_LINK_TYPE 1 +#define FUNCTION_MODE_TYPE 2 + +typedef struct MENU_LINK_T { + char print_string[MAX_TOKEN_SIZE]; + struct MENU_T * sub_menu; +} menu_link_t; + +typedef struct PARAM_ADJ_T { + char print_string[MAX_TOKEN_SIZE]; + param_t * param; +} param_adj_t; + +typedef struct FUNCTION_MODE_T { + char print_string[MAX_TOKEN_SIZE]; + int (*func_ptr)(); +} function_mode_t; + +typedef union MENU_ENTRY_T { + menu_link_t menu_link; + param_adj_t param_adj; + function_mode_t function_mode; +} menu_entry_t; + + +typedef struct MENU_ITEM_T { + int menu_entry_type; + menu_entry_t * menu_entry; + struct MENU_ITEM_T * up; + struct MENU_ITEM_T * down; +} menu_item_t; + + +typedef struct MENU_T { + menu_item_t * selected_item; + menu_item_t * start_item; + menu_item_t * locked_item; + struct MENU_T * top_menu; +} menu_t; + +/* Direction types */ +typedef enum { + UP, + DOWN, + LEFT, + RIGHT, + PAGEUP, + PAGEDOWN +} dir_t; + +/* Adjustment types */ +typedef enum { + BIG_INC, + BIG_DEC, + SMALL_INC, + SMALL_DEC, + VERY_BIG_INC, + VERY_BIG_DEC, + VERY_SMALL_INC, + VERY_SMALL_DEC +} adj_t; + +typedef enum { + SHOW, + HIDE, + SPECIAL +} display_state; + + + +int switchMenuState(dir_t dir); + +int initMenu(); +int refreshMenu(); +int clearMenu(); +int showMenu(); +int hideMenu(); +void menu_key_handler( projectM_t *PM, projectMEvent event, projectMKeycode key ); + +#endif /** !_MENU_H */ diff --git a/libprojectM/src/param.cc b/libprojectM/src/param.cc new file mode 100755 index 000000000..e45ca497c --- /dev/null +++ b/libprojectM/src/param.cc @@ -0,0 +1,724 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +/* Basic Parameter Functions */ + +#include +#include +#include +#include +#include "projectM.h" + +#include "fatal.h" +#include "common.h" + +#include "splaytree_types.h" +#include "splaytree.h" +#include "tree_types.h" + +#include "param_types.h" +#include "param.h" + +#include "expr_types.h" +#include "eval.h" +#include "wipemalloc.h" + +extern projectM_t *PM; + +void reset_param(param_t * param); + +int is_valid_param_string(char * string); /* true if string is valid variable or function name */ + + +/* A splay tree of builtin parameters */ +splaytree_t * builtin_param_tree = NULL; + +int insert_param_alt_name(param_t * param, char * alt_name); + +int insert_builtin_param(param_t * param); + +/* Private function prototypes */ +int compare_param(char * name, char * name2); + +int load_builtin_param_float(char * name, void * engine_val, void * matrix, short int flags, + float init_val, float upper_bound, float lower_bound, char * alt_name); + +int load_builtin_param_int(char * name, void * engine_val, short int flags, + int init_val, int upper_bound, int lower_bound, char * alt_name); + +int load_builtin_param_bool(char * name, void * engine_val, short int flags, + int init_val, char * alt_name); + + + +param_t * create_param (char * name, short int type, short int flags, void * engine_val, void * matrix, + value_t default_init_val, value_t upper_bound, value_t lower_bound) { + + param_t * param = NULL; + + param = (param_t*)wipemalloc(sizeof(param_t)); + + if (param == NULL) { + printf("create_param: out of memory!!!\n"); + return NULL; + } + + /* Clear name space, think the strncpy statement makes this redundant */ + //memset(param->name, 0, MAX_TOKEN_SIZE); + + /* Copy given name into parameter structure */ + strncpy(param->name, name, MAX_TOKEN_SIZE-1); + + /* Assign other entries in a constructor like fashion */ + param->type = type; + param->flags = flags; + param->matrix_flag = 0; + param->matrix = matrix; + param->engine_val = engine_val; + param->default_init_val = default_init_val; + //*param->init_val = default_init_val; + param->upper_bound = upper_bound; + param->lower_bound = lower_bound; + + /* Return instantiated parameter */ + return param; + +} + +/* Creates a user defined parameter */ +param_t * create_user_param(char * name) { + + param_t * param; + value_t iv; + value_t ub; + value_t lb; + float * engine_val; + + /* Set initial values to default */ + iv.float_val = DEFAULT_DOUBLE_IV; + ub.float_val = DEFAULT_DOUBLE_UB; + lb.float_val = DEFAULT_DOUBLE_LB; + + /* Argument checks */ + if (name == NULL) + return NULL; + + /* Allocate space for the engine variable */ + if ((engine_val = (float*)wipemalloc(sizeof(float))) == NULL) + return NULL; + + (*engine_val) = iv.float_val; /* set some default init value */ + + /* Create the new user parameter */ + if ((param = create_param(name, P_TYPE_DOUBLE, P_FLAG_USERDEF, engine_val, NULL, iv, ub, lb)) == NULL) { + free(engine_val); + engine_val = NULL; + return NULL; + } + if (PARAM_DEBUG) printf("create_param: \"%s\" initialized\n", param->name); + /* Return the instantiated parameter */ + return param; +} + +/* Initialize the builtin parameter database. + Should only be necessary once */ +int init_builtin_param_db(projectM_t *PM) { + + /* Create the builtin parameter splay tree (go Sleator...) */ + if ((builtin_param_tree = create_splaytree((int (*)(void*,void*))compare_string,(void* (*)(void*)) copy_string, (void (*)(void*))free_string)) == NULL) { + if (PARAM_DEBUG) printf("init_builtin_param_db: failed to initialize database (FATAL)\n"); + return PROJECTM_OUTOFMEM_ERROR; + } + + if (PARAM_DEBUG) { + printf("init_builtin_param: loading database..."); + fflush(stdout); + } + + /* Loads all builtin parameters into the database */ + if (load_all_builtin_param( PM ) < 0) { + if (PARAM_DEBUG) printf("failed loading builtin parameters (FATAL)\n"); + return PROJECTM_ERROR; + } + + if (PARAM_DEBUG) printf("success!\n"); + + /* Finished, no errors */ + return PROJECTM_SUCCESS; +} + +/* Destroy the builtin parameter database. + Generally, do this on projectm exit */ +int destroy_builtin_param_db() { + + splay_traverse((void (*)(void*))free_param, builtin_param_tree); + destroy_splaytree(builtin_param_tree); + builtin_param_tree = NULL; + return PROJECTM_SUCCESS; + +} + + +/* Insert a parameter into the database with an alternate name */ +int insert_param_alt_name(param_t * param, char * alt_name) { + + if (param == NULL) + return PROJECTM_ERROR; + if (alt_name == NULL) + return PROJECTM_ERROR; + + splay_insert_link(alt_name, param->name, builtin_param_tree); + + return PROJECTM_SUCCESS; +} + + +param_t * find_builtin_param(char * name) { + + /* Null argument checks */ + if (name == NULL) + return NULL; + + return (param_t*)splay_find(name, builtin_param_tree); + +} + +/* Find a parameter given its name, will create one if not found */ +param_t * find_param(char * name, preset_t * preset, int flags) { + + param_t * param = NULL; + + /* Null argument checks */ + if (name == NULL) + return NULL; + if (preset == NULL) + return NULL; + + /* First look in the builtin database */ + param = (param_t *)splay_find(name, builtin_param_tree); + + /* If the search failed, check the user database */ + if (param == NULL) { + param = (param_t*)splay_find(name, preset->user_param_tree); + } + /* If it doesn't exist in the user (or builtin) database and + create_flag is set, then make it and insert into the database + */ + + if ((param == NULL) && (flags & P_CREATE)) { + + /* Check if string is valid */ + if (!is_valid_param_string(name)) { + if (PARAM_DEBUG) printf("find_param: invalid parameter name:\"%s\"\n", name); + return NULL; + } + /* Now, create the user defined parameter given the passed name */ + if ((param = create_user_param(name)) == NULL) { + if (PARAM_DEBUG) printf("find_param: failed to create a new user parameter!\n"); + return NULL; + } + /* Finally, insert the new parameter into this preset's proper splaytree */ + if (splay_insert(param, param->name, preset->user_param_tree) < 0) { + if (PARAM_DEBUG) printf("PARAM \"%s\" already exists in user parameter tree!\n", param->name); + free_param(param); + return NULL; + } + + } + + /* Return the found (or created) parameter. Note that if P_CREATE is not set, this could be null */ + return param; + +} + +/* Compare string name with parameter name */ +int compare_param(char * name, char * name2) { + + int cmpval; + printf("am i used\n"); + /* Uses string comparison function */ + cmpval = strncmp(name, name2, MAX_TOKEN_SIZE-1); + + return cmpval; +} + +/* Loads all builtin parameters, limits are also defined here */ +int load_all_builtin_param( projectM_t *pm ) { + + load_builtin_param_float("fRating", (void*)&pm->fRating, NULL, P_FLAG_NONE, 0.0 , 5.0, 0.0, NULL); + load_builtin_param_float("fWaveScale", (void*)&pm->fWaveScale, NULL, P_FLAG_NONE, 0.0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL); + load_builtin_param_float("gamma", (void*)&pm->fGammaAdj, NULL, P_FLAG_NONE, 0.0, MAX_DOUBLE_SIZE, 0, "fGammaAdj"); + load_builtin_param_float("echo_zoom", (void*)&pm->fVideoEchoZoom, NULL, P_FLAG_NONE, 0.0, MAX_DOUBLE_SIZE, 0, "fVideoEchoZoom"); + load_builtin_param_float("echo_alpha", (void*)&pm->fVideoEchoAlpha, NULL, P_FLAG_NONE, 0.0, MAX_DOUBLE_SIZE, 0, "fVideoEchoAlpha"); + load_builtin_param_float("wave_a", (void*)&pm->fWaveAlpha, NULL, P_FLAG_NONE, 0.0, 1.0, 0, "fWaveAlpha"); + load_builtin_param_float("fWaveSmoothing", (void*)&pm->fWaveSmoothing, NULL, P_FLAG_NONE, 0.0, 1.0, -1.0, NULL); + load_builtin_param_float("fModWaveAlphaStart", (void*)&pm->fModWaveAlphaStart, NULL, P_FLAG_NONE, 0.0, 1.0, -1.0, NULL); + load_builtin_param_float("fModWaveAlphaEnd", (void*)&pm->fModWaveAlphaEnd, NULL, P_FLAG_NONE, 0.0, 1.0, -1.0, NULL); + load_builtin_param_float("fWarpAnimSpeed", (void*)&pm->fWarpAnimSpeed, NULL, P_FLAG_NONE, 0.0, 1.0, -1.0, NULL); + // load_builtin_param_float("warp", (void*)&pm->warp, pm->warp_mesh, P_FLAG_NONE, 0.0, MAX_DOUBLE_SIZE, 0, NULL); + + load_builtin_param_float("fShader", (void*)&pm->fShader, NULL, P_FLAG_NONE, 0.0, 1.0, -1.0, NULL); + load_builtin_param_float("decay", (void*)&pm->decay, NULL, P_FLAG_NONE, 0.0, 1.0, 0, "fDecay"); + + load_builtin_param_int("echo_orient", (void*)&pm->nVideoEchoOrientation, P_FLAG_NONE, 0, 3, 0, "nVideoEchoOrientation"); + load_builtin_param_int("wave_mode", (void*)&pm->nWaveMode, P_FLAG_NONE, 0, 7, 0, "nWaveMode"); + + load_builtin_param_bool("wave_additive", (void*)&pm->bAdditiveWaves, P_FLAG_NONE, FALSE, "bAdditiveWaves"); + load_builtin_param_bool("bModWaveAlphaByVolume", (void*)&pm->bModWaveAlphaByVolume, P_FLAG_NONE, FALSE, NULL); + load_builtin_param_bool("wave_brighten", (void*)&pm->bMaximizeWaveColor, P_FLAG_NONE, FALSE, "bMaximizeWaveColor"); + load_builtin_param_bool("wrap", (void*)&pm->bTexWrap, P_FLAG_NONE, FALSE, "bTexWrap"); + load_builtin_param_bool("darken_center", (void*)&pm->bDarkenCenter, P_FLAG_NONE, FALSE, "bDarkenCenter"); + load_builtin_param_bool("bRedBlueStereo", (void*)&pm->bRedBlueStereo, P_FLAG_NONE, FALSE, NULL); + load_builtin_param_bool("brighten", (void*)&pm->bBrighten, P_FLAG_NONE, FALSE, "bBrighten"); + load_builtin_param_bool("darken", (void*)&pm->bDarken, P_FLAG_NONE, FALSE, "bDarken"); + load_builtin_param_bool("solarize", (void*)&pm->bSolarize, P_FLAG_NONE, FALSE, "bSolarize"); + load_builtin_param_bool("invert", (void*)&pm->bInvert, P_FLAG_NONE, FALSE, "bInvert"); + load_builtin_param_bool("bMotionVectorsOn", (void*)&pm->bMotionVectorsOn, P_FLAG_NONE, FALSE, NULL); + load_builtin_param_bool("wave_dots", (void*)&pm->bWaveDots, P_FLAG_NONE, FALSE, "bWaveDots"); + load_builtin_param_bool("wave_thick", (void*)&pm->bWaveThick, P_FLAG_NONE, FALSE, "bWaveThick"); + + + + load_builtin_param_float("zoom", (void*)&pm->zoom, pm->zoom_mesh, P_FLAG_PER_PIXEL |P_FLAG_DONT_FREE_MATRIX, 0.0, MAX_DOUBLE_SIZE, 0, NULL); + load_builtin_param_float("rot", (void*)&pm->rot, pm->rot_mesh, P_FLAG_PER_PIXEL |P_FLAG_DONT_FREE_MATRIX, 0.0, MAX_DOUBLE_SIZE, MIN_DOUBLE_SIZE, NULL); + load_builtin_param_float("zoomexp", (void*)&pm->zoomexp, pm->zoomexp_mesh, P_FLAG_PER_PIXEL |P_FLAG_NONE, 0.0, MAX_DOUBLE_SIZE, 0, "fZoomExponent"); + + load_builtin_param_float("cx", (void*)&pm->cx, pm->cx_mesh, P_FLAG_PER_PIXEL | P_FLAG_DONT_FREE_MATRIX, 0.0, 1.0, 0, NULL); + load_builtin_param_float("cy", (void*)&pm->cy, pm->cy_mesh, P_FLAG_PER_PIXEL | P_FLAG_DONT_FREE_MATRIX, 0.0, 1.0, 0, NULL); + load_builtin_param_float("dx", (void*)&pm->dx, pm->dx_mesh, P_FLAG_PER_PIXEL | P_FLAG_DONT_FREE_MATRIX, 0.0, MAX_DOUBLE_SIZE, MIN_DOUBLE_SIZE, NULL); + load_builtin_param_float("dy", (void*)&pm->dy, pm->dy_mesh, P_FLAG_PER_PIXEL |P_FLAG_DONT_FREE_MATRIX, 0.0, MAX_DOUBLE_SIZE, MIN_DOUBLE_SIZE, NULL); + load_builtin_param_float("sx", (void*)&pm->sx, pm->sx_mesh, P_FLAG_PER_PIXEL |P_FLAG_DONT_FREE_MATRIX, 0.0, MAX_DOUBLE_SIZE, 0, NULL); + load_builtin_param_float("sy", (void*)&pm->sy, pm->sy_mesh, P_FLAG_PER_PIXEL |P_FLAG_DONT_FREE_MATRIX, 0.0, MAX_DOUBLE_SIZE, 0, NULL); + + load_builtin_param_float("wave_r", (void*)&pm->wave_r, NULL, P_FLAG_NONE, 0.0, 1.0, 0.0, NULL); + load_builtin_param_float("wave_g", (void*)&pm->wave_g, NULL, P_FLAG_NONE, 0.0, 1.0, 0.0, NULL); + load_builtin_param_float("wave_b", (void*)&pm->wave_b, NULL, P_FLAG_NONE, 0.0, 1.0, 0.0, NULL); + load_builtin_param_float("wave_x", (void*)&pm->wave_x, NULL, P_FLAG_NONE, 0.0, 1.0, 0.0, NULL); + load_builtin_param_float("wave_y", (void*)&pm->wave_y, NULL, P_FLAG_NONE, 0.0, 1.0, 0.0, NULL); + load_builtin_param_float("wave_mystery", (void*)&pm->wave_mystery, NULL, P_FLAG_NONE, 0.0, 1.0, -1.0, "fWaveParam"); + + load_builtin_param_float("ob_size", (void*)&pm->ob_size, NULL, P_FLAG_NONE, 0.0, 0.5, 0, NULL); + load_builtin_param_float("ob_r", (void*)&pm->ob_r, NULL, P_FLAG_NONE, 0.0, 1.0, 0.0, NULL); + load_builtin_param_float("ob_g", (void*)&pm->ob_g, NULL, P_FLAG_NONE, 0.0, 1.0, 0.0, NULL); + load_builtin_param_float("ob_b", (void*)&pm->ob_b, NULL, P_FLAG_NONE, 0.0, 1.0, 0.0, NULL); + load_builtin_param_float("ob_a", (void*)&pm->ob_a, NULL, P_FLAG_NONE, 0.0, 1.0, 0.0, NULL); + + load_builtin_param_float("ib_size", (void*)&pm->ib_size, NULL,P_FLAG_NONE, 0.0, .5, 0.0, NULL); + load_builtin_param_float("ib_r", (void*)&pm->ib_r, NULL,P_FLAG_NONE, 0.0, 1.0, 0.0, NULL); + load_builtin_param_float("ib_g", (void*)&pm->ib_g, NULL,P_FLAG_NONE, 0.0, 1.0, 0.0, NULL); + load_builtin_param_float("ib_b", (void*)&pm->ib_b, NULL,P_FLAG_NONE, 0.0, 1.0, 0.0, NULL); + load_builtin_param_float("ib_a", (void*)&pm->ib_a, NULL,P_FLAG_NONE, 0.0, 1.0, 0.0, NULL); + + load_builtin_param_float("mv_r", (void*)&pm->mv_r, NULL,P_FLAG_NONE, 0.0, 1.0, 0.0, NULL); + load_builtin_param_float("mv_g", (void*)&pm->mv_g, NULL,P_FLAG_NONE, 0.0, 1.0, 0.0, NULL); + load_builtin_param_float("mv_b", (void*)&pm->mv_b, NULL,P_FLAG_NONE, 0.0, 1.0, 0.0, NULL); + load_builtin_param_float("mv_x", (void*)&pm->mv_x, NULL,P_FLAG_NONE, 0.0, 64.0, 0.0, "nMotionVectorsX"); + load_builtin_param_float("mv_y", (void*)&pm->mv_y, NULL,P_FLAG_NONE, 0.0, 48.0, 0.0, "nMotionVectorsY"); + load_builtin_param_float("mv_l", (void*)&pm->mv_l, NULL,P_FLAG_NONE, 0.0, 5.0, 0.0, NULL); + load_builtin_param_float("mv_dy", (void*)&pm->mv_dy, NULL, P_FLAG_NONE, 0.0, 1.0, -1.0, NULL); + load_builtin_param_float("mv_dx", (void*)&pm->mv_dx, NULL,P_FLAG_NONE, 0.0, 1.0, -1.0, NULL); + load_builtin_param_float("mv_a", (void*)&pm->mv_a, NULL,P_FLAG_NONE, 0.0, 1.0, 0.0, NULL); + + load_builtin_param_float("time", (void*)&pm->Time, NULL,P_FLAG_READONLY, 0.0, MAX_DOUBLE_SIZE, 0.0, NULL); + load_builtin_param_float("bass", (void*)&pm->bass, NULL,P_FLAG_READONLY, 0.0, MAX_DOUBLE_SIZE, 0.0, NULL); + load_builtin_param_float("mid", (void*)&pm->mid, NULL,P_FLAG_READONLY, 0.0, MAX_DOUBLE_SIZE, 0, NULL); + load_builtin_param_float("bass_att", (void*)&pm->bass_att, NULL,P_FLAG_READONLY, 0.0, MAX_DOUBLE_SIZE, 0, NULL); + load_builtin_param_float("mid_att", (void*)&pm->mid_att, NULL,P_FLAG_READONLY, 0.0, MAX_DOUBLE_SIZE, 0, NULL); + load_builtin_param_float("treb_att", (void*)&pm->treb_att, NULL,P_FLAG_READONLY, 0.0, MAX_DOUBLE_SIZE, 0, NULL); + load_builtin_param_int("frame", (void*)&pm->frame, P_FLAG_READONLY, 0, MAX_INT_SIZE, 0, NULL); + load_builtin_param_float("progress", (void*)&pm->progress, NULL,P_FLAG_READONLY, 0.0, 1, 0, NULL); + load_builtin_param_int("fps", (void*)&pm->fps, P_FLAG_NONE, 15, MAX_INT_SIZE, 0, NULL); + + + + load_builtin_param_float("x", (void*)&pm->x_per_pixel, pm->x_mesh, P_FLAG_PER_PIXEL |P_FLAG_ALWAYS_MATRIX | P_FLAG_READONLY | P_FLAG_DONT_FREE_MATRIX, + 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL); + load_builtin_param_float("y", (void*)&pm->y_per_pixel, pm->y_mesh, P_FLAG_PER_PIXEL |P_FLAG_ALWAYS_MATRIX |P_FLAG_READONLY | P_FLAG_DONT_FREE_MATRIX, + 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL); + load_builtin_param_float("ang", (void*)&pm->ang_per_pixel, pm->theta_mesh, P_FLAG_PER_PIXEL |P_FLAG_ALWAYS_MATRIX | P_FLAG_READONLY | P_FLAG_DONT_FREE_MATRIX, + 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL); + load_builtin_param_float("rad", (void*)&pm->rad_per_pixel, pm->rad_mesh, P_FLAG_PER_PIXEL |P_FLAG_ALWAYS_MATRIX | P_FLAG_READONLY | P_FLAG_DONT_FREE_MATRIX, + 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL); + + + load_builtin_param_float("q1", (void*)&pm->q1, NULL, P_FLAG_PER_PIXEL |P_FLAG_QVAR, 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL); + load_builtin_param_float("q2", (void*)&pm->q2, NULL, P_FLAG_PER_PIXEL |P_FLAG_QVAR, 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL); + load_builtin_param_float("q3", (void*)&pm->q3, NULL, P_FLAG_PER_PIXEL |P_FLAG_QVAR, 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL); + load_builtin_param_float("q4", (void*)&pm->q4, NULL, P_FLAG_PER_PIXEL |P_FLAG_QVAR, 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL); + load_builtin_param_float("q5", (void*)&pm->q5, NULL, P_FLAG_PER_PIXEL |P_FLAG_QVAR, 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL); + load_builtin_param_float("q6", (void*)&pm->q6, NULL, P_FLAG_PER_PIXEL |P_FLAG_QVAR, 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL); + load_builtin_param_float("q7", (void*)&pm->q7, NULL, P_FLAG_PER_PIXEL |P_FLAG_QVAR, 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL); + load_builtin_param_float("q8", (void*)&pm->q8, NULL, P_FLAG_PER_PIXEL |P_FLAG_QVAR, 0, MAX_DOUBLE_SIZE, -MAX_DOUBLE_SIZE, NULL); + + + + /* variables added in 1.04 */ + load_builtin_param_int("meshx", (void*)&pm->gx, P_FLAG_READONLY, 32, 96, 8, NULL); + load_builtin_param_int("meshy", (void*)&pm->gy, P_FLAG_READONLY, 24, 72, 6, NULL); + + return PROJECTM_SUCCESS; + +} + +/* Free's a parameter type */ +void free_param(param_t * param) { + int x; + if (param == NULL) + return; + + if (param->flags & P_FLAG_USERDEF) { + free(param->engine_val); + param->engine_val = NULL; + + } + //if (!(param->flags & P_FLAG_DONT_FREE_MATRIX)) { + if (param->matrix && !(param->flags & P_FLAG_DONT_FREE_MATRIX)) { + + if (param->flags & P_FLAG_PER_POINT) { + free(param->matrix); + param->matrix = NULL; + }//FIX THIS NOW XMAS05 + else if (param->flags & P_FLAG_PER_PIXEL) { + for(x = 0; x < PM->gx; x++) + free(((float**)param->matrix)[x]); + free(param->matrix); + param->matrix = NULL; + } + } + + if (PARAM_DEBUG) printf("free_param: freeing \"%s\".\n", param->name); + free(param); + param = NULL; + +} + +/* Loads a float parameter into the builtin database */ +int load_builtin_param_float(char * name, void * engine_val, void * matrix, short int flags, + float init_val, float upper_bound, float lower_bound, char * alt_name) { + + param_t * param = NULL; + value_t iv, ub, lb; + + iv.float_val = init_val; + ub.float_val = upper_bound; + lb.float_val = lower_bound; + + /* Create new parameter of type float */ + if (PARAM_DEBUG == 2) { + printf("load_builtin_param_float: (name \"%s\") (alt_name = \"%s\") ", name, alt_name); + fflush(stdout); + } + + if ((param = create_param(name, P_TYPE_DOUBLE, flags, engine_val, matrix, iv, ub, lb)) == NULL) { + return PROJECTM_OUTOFMEM_ERROR; + } + + if (PARAM_DEBUG == 2) { + printf("created..."); + fflush(stdout); + } + + /* Insert the paremeter into the database */ + + if (insert_builtin_param(param) < 0) { + free_param(param); + return PROJECTM_ERROR; + } + + if (PARAM_DEBUG == 2) { + printf("inserted..."); + fflush(stdout); + } + + /* If this parameter has an alternate name, insert it into the database as link */ + + if (alt_name != NULL) { + insert_param_alt_name(param, alt_name); + + if (PARAM_DEBUG == 2) { + printf("alt_name inserted..."); + fflush(stdout); + } + + + } + + if (PARAM_DEBUG == 2) printf("finished\n"); + /* Finished, return success */ + return PROJECTM_SUCCESS; +} + + + +/* Loads a float parameter into the builtin database */ +param_t * new_param_float(char * name, short int flags, void * engine_val, void * matrix, + float upper_bound, float lower_bound, float init_val) { + + param_t * param; + value_t iv, ub, lb; + + iv.float_val = init_val; + ub.float_val = upper_bound; + lb.float_val = lower_bound; + + if ((param = create_param(name, P_TYPE_DOUBLE, flags, engine_val, matrix,iv, ub, lb)) == NULL) + return NULL; + + + /* Finished, return success */ + return param; +} + + +/* Creates a new parameter of type int */ +param_t * new_param_int(char * name, short int flags, void * engine_val, + int upper_bound, int lower_bound, int init_val) { + + param_t * param; + value_t iv, ub, lb; + + iv.int_val = init_val; + ub.int_val = upper_bound; + lb.int_val = lower_bound; + + if ((param = create_param(name, P_TYPE_INT, flags, engine_val, NULL, iv, ub, lb)) == NULL) + return NULL; + + + /* Finished, return success */ + return param; +} + +/* Creates a new parameter of type bool */ +param_t * new_param_bool(char * name, short int flags, void * engine_val, + int upper_bound, int lower_bound, int init_val) { + + param_t * param; + value_t iv, ub, lb; + + iv.bool_val = init_val; + ub.bool_val = upper_bound; + lb.bool_val = lower_bound; + + if ((param = create_param(name, P_TYPE_BOOL, flags, engine_val, NULL, iv, ub, lb)) == NULL) + return NULL; + + + /* Finished, return success */ + return param; +} + + +/* Loads a integer parameter into the builtin database */ +int load_builtin_param_int(char * name, void * engine_val, short int flags, + int init_val, int upper_bound, int lower_bound, char * alt_name) { + + param_t * param; + value_t iv, ub, lb; + + iv.int_val = init_val; + ub.int_val = upper_bound; + lb.int_val = lower_bound; + + param = create_param(name, P_TYPE_INT, flags, engine_val, NULL, iv, ub, lb); + + if (param == NULL) { + return PROJECTM_OUTOFMEM_ERROR; + } + + if (insert_builtin_param(param) < 0) { + free_param(param); + return PROJECTM_ERROR; + } + + if (alt_name != NULL) { + insert_param_alt_name(param, alt_name); + } + + return PROJECTM_SUCCESS; + +} + +/* Loads a boolean parameter */ +int load_builtin_param_bool(char * name, void * engine_val, short int flags, + int init_val, char * alt_name) { + + param_t * param; + value_t iv, ub, lb; + + iv.int_val = init_val; + ub.int_val = TRUE; + lb.int_val = FALSE; + + param = create_param(name, P_TYPE_BOOL, flags, engine_val, NULL, iv, ub, lb); + + if (param == NULL) { + return PROJECTM_OUTOFMEM_ERROR; + } + + if (insert_builtin_param(param) < 0) { + free_param(param); + return PROJECTM_ERROR; + } + + if (alt_name != NULL) { + insert_param_alt_name(param, alt_name); + } + + return PROJECTM_SUCCESS; + +} + + + + +/* Returns nonzero if the string is valid parameter name */ +int is_valid_param_string(char * string) { + + if (string == NULL) + return FALSE; + + /* This ensures the first character is non numeric */ + if( ((*string) >= 48) && ((*string) <= 57)) + return FALSE; + + /* These probably should never happen */ + if (*string == '.') + return FALSE; + + if (*string == '+') + return FALSE; + + if (*string == '-') + return FALSE; + + /* Could also add checks for other symbols. May do later */ + + return TRUE; + +} + +/* Inserts a parameter into the builtin database */ +int insert_builtin_param(param_t * param) { + + if (param == NULL) + return PROJECTM_FAILURE; + + return splay_insert(param, param->name, builtin_param_tree); +} + +/* Inserts a parameter into the builtin database */ +int insert_param(param_t * param, splaytree_t * database) { + + if (param == NULL) + return PROJECTM_FAILURE; + if (database == NULL) + return PROJECTM_FAILURE; + + return splay_insert(param, param->name, database); +} + + +/* Sets the parameter engine value to value val. + clipping occurs if necessary */ +void set_param(param_t * param, float val) { + + switch (param->type) { + + case P_TYPE_BOOL: + if (val < 0) + *((int*)param->engine_val) = 0; + else if (val > 0) + *((int*)param->engine_val) = 1; + else + *((int*)param->engine_val) = 0; + break; + case P_TYPE_INT: + /* Make sure value is an integer */ + val = floor(val); + if (val < param->lower_bound.int_val) + *((int*)param->engine_val) = param->lower_bound.int_val; + else if (val > param->upper_bound.int_val) + *((int*)param->engine_val) = param->upper_bound.int_val; + else + *((int*)param->engine_val) = val; + break; + case P_TYPE_DOUBLE: + /* Make sure value is an integer */ + + + if (val < param->lower_bound.float_val) + *((float*)param->engine_val) = param->lower_bound.float_val; + else if (val > param->upper_bound.float_val) + *((float*)param->engine_val) = param->upper_bound.float_val; + else + *((float*)param->engine_val) = val; + break; + default: + break; + + } + + return; +} + + + + +/* Search for parameter 'name' in 'database', if create_flag is true, then generate the parameter + and insert it into 'database' */ +param_t * find_param_db(char * name, splaytree_t * database, int create_flag) { + + param_t * param = NULL; + + /* Null argument checks */ + if (name == NULL) + return NULL; + if (database == NULL) + return NULL; + + /* First look in the builtin database */ + param = (param_t *)splay_find(name, database); + + + if (((param = (param_t *)splay_find(name, database)) == NULL) && (create_flag == TRUE)) { + + /* Check if string is valid */ + if (!is_valid_param_string(name)) + return NULL; + + /* Now, create the user defined parameter given the passed name */ + if ((param = create_user_param(name)) == NULL) + return NULL; + + /* Finally, insert the new parameter into this preset's proper splaytree */ + if (splay_insert(param, param->name, database) < 0) { + free_param(param); + return NULL; + } + + } + + /* Return the found (or created) parameter. Note that this could be null */ + return param; + +} + diff --git a/libprojectM/src/param.h b/libprojectM/src/param.h new file mode 100755 index 000000000..f8a0a6a53 --- /dev/null +++ b/libprojectM/src/param.h @@ -0,0 +1,59 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _PARAM_H +#define _PARAM_H + +#include "projectM.h" +#include "preset_types.h" +#include "splaytree_types.h" +/* Debug level, zero for none */ +#define PARAM_DEBUG 0 + +/* Used to store a number of decidable type */ + +/* Function prototypes */ +param_t * create_param (char * name, short int type, short int flags, void * eqn_val, void * matrix, + value_t default_init_val, value_t upper_bound, value_t lower_bound); +param_t * create_user_param(char * name); +int init_builtin_param_db(projectM_t *PM); +int init_user_param_db(); +int destroy_user_param_db(); +int destroy_builtin_param_db(); +void set_param(param_t * param, float val); +int remove_param(param_t * param); +param_t * find_param(char * name, struct PRESET_T * preset, int flags); +void free_param(param_t * param); +int load_all_builtin_param( projectM_t *pm ); +int insert_param(param_t * param, splaytree_t * database); +param_t * find_builtin_param(char * name); +param_t * new_param_float(char * name, short int flags, void * engine_val, void * matrix, + float upper_bound, float lower_bound, float init_val); + +param_t * new_param_int(char * name, short int flags, void * engine_val, + int upper_bound, int lower_bound, int init_val); + +param_t * new_param_bool(char * name, short int flags, void * engine_val, + int upper_bound, int lower_bound, int init_val); + +param_t * find_param_db(char * name, splaytree_t * database, int create_flag); + +#endif /** !_PARAM_H */ diff --git a/libprojectM/src/param_types.h b/libprojectM/src/param_types.h new file mode 100755 index 000000000..2fe16e53a --- /dev/null +++ b/libprojectM/src/param_types.h @@ -0,0 +1,64 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _PARAM_TYPES_H +#define _PARAM_TYPES_H + +#include "expr_types.h" +#include "common.h" + +#define P_CREATE 1 +#define P_NONE 0 + +#define P_TYPE_BOOL 0 +#define P_TYPE_INT 1 +#define P_TYPE_DOUBLE 2 + +#define P_FLAG_NONE 0 +#define P_FLAG_READONLY 1 +#define P_FLAG_USERDEF (1 << 1) +#define P_FLAG_QVAR (1 << 2) +#define P_FLAG_TVAR (1 << 3) +#define P_FLAG_ALWAYS_MATRIX (1 << 4) +#define P_FLAG_DONT_FREE_MATRIX (1 << 5) +#define P_FLAG_PER_PIXEL (1 << 6) +#define P_FLAG_PER_POINT (1 << 7) + +typedef union VALUE_T { + int bool_val; + int int_val; + float float_val; +} value_t; + +/* Parameter Type */ +typedef struct PARAM_T { + char name[MAX_TOKEN_SIZE]; /* name of the parameter, not necessary but useful neverthless */ + short int type; /* parameter number type (int, bool, or float) */ + short int flags; /* read, write, user defined, etc */ + short int matrix_flag; /* for optimization purposes */ + void * engine_val; /* pointer to the engine variable */ + void * matrix; /* per pixel / per point matrix for this variable */ + value_t default_init_val; /* a default initial condition value */ + value_t upper_bound; /* this parameter's upper bound */ + value_t lower_bound; /* this parameter's lower bound */ +} param_t; + +#endif /** !_PARAM_TYPES_H */ diff --git a/libprojectM/src/parser.cc b/libprojectM/src/parser.cc new file mode 100755 index 000000000..fb7f35ee2 --- /dev/null +++ b/libprojectM/src/parser.cc @@ -0,0 +1,2308 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU +* License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/* parser.c */ + +#include +#include +#include + +#include "common.h" +#include "fatal.h" + +#include "splaytree_types.h" +#include "splaytree.h" +#include "tree_types.h" + +#include "expr_types.h" +#include "eval.h" + +#include "param_types.h" +#include "param.h" + +#include "func_types.h" +#include "func.h" + +#include "preset_types.h" +#include "builtin_funcs.h" + +#include "per_pixel_eqn_types.h" +#include "per_pixel_eqn.h" + +#include "init_cond_types.h" +#include "init_cond.h" + +#include "per_frame_eqn_types.h" +#include "per_frame_eqn.h" + +#include "parser.h" + +#include "custom_wave_types.h" +#include "custom_wave.h" + +#include "custom_shape_types.h" +#include "custom_shape.h" + +#include "wipemalloc.h" +/* Strings that prefix (and denote the type of) equations */ + + +#define PER_FRAME_STRING "per_frame_" +#define PER_FRAME_STRING_LENGTH 10 + +#define PER_PIXEL_STRING "per_pixel_" +#define PER_PIXEL_STRING_LENGTH 10 + +#define PER_FRAME_INIT_STRING "per_frame_init_" +#define PER_FRAME_INIT_STRING_LENGTH 15 + +#define WAVECODE_STRING "wavecode_" +#define WAVECODE_STRING_LENGTH 9 + +#define WAVE_STRING "wave_" +#define WAVE_STRING_LENGTH 5 + +#define PER_POINT_STRING "per_point" +#define PER_POINT_STRING_LENGTH 9 + +#define PER_FRAME_STRING_NO_UNDERSCORE "per_frame" +#define PER_FRAME_STRING_NO_UNDERSCORE_LENGTH 9 + +#define SHAPECODE_STRING "shapecode_" +#define SHAPECODE_STRING_LENGTH 10 + +#define SHAPE_STRING "shape_" +#define SHAPE_STRING_LENGTH 6 + +#define SHAPE_INIT_STRING "init" +#define SHAPE_INIT_STRING_LENGTH 4 + +#define WAVE_INIT_STRING "init" +#define WAVE_INIT_STRING_LENGTH 4 + +/* Stores a line of a file as its being parsed */ +char string_line_buffer[STRING_LINE_SIZE]; + +FILE * debugFile = stdout; +/* The current position of the string line buffer (see above) */ +int string_line_buffer_index = 0; + +/* All infix operators (except '=') are prototyped here */ +extern infix_op_t * infix_add, * infix_minus, * infix_div, * infix_mult, + * infix_or, * infix_and, * infix_mod, * infix_positive, * infix_negative; + +/* If the parser reads a line with a custom wave, this pointer is set to + the custom wave of concern */ +custom_wave_t * current_wave = NULL; +custom_shape_t * current_shape = NULL; +/* Counts the number of lines parsed */ +unsigned int line_count = 1; +int per_frame_eqn_count = 0; +int per_frame_init_eqn_count = 0; + +line_mode_t line_mode = NORMAL_LINE_MODE; + + +/// Hack to handle multiple declarations in one line properly. +int last_custom_wave_id = -1; +int last_custom_shape_id = -1; +char last_eqn_type[MAX_TOKEN_SIZE]; + +/* Token enumeration type */ +typedef enum { + + tEOL, /* end of a line, usually a '/n' or '/r' */ + tEOF, /* end of file */ + tLPr, /* ( */ + tRPr, /* ) */ + tLBr, /* [ */ + tRBr, /* ] */ + tEq, /* = */ + tPlus, /* + */ + tMinus, /* - */ + tMult, /* * */ + tMod, /* % */ + tDiv, /* / */ + tOr, /* | */ + tAnd, /* & */ + tComma, /* , */ + tPositive, /* + as a prefix operator */ + tNegative, /* - as a prefix operator */ + tSemiColon, /* ; */ + tStringTooLong, /* special token to indicate an invalid string length */ + tStringBufferFilled /* the string buffer for this line is maxed out */ +} token_t; + + +int get_string_prefix_len(char * string); +tree_expr_t * insert_gen_expr(gen_expr_t * gen_expr, tree_expr_t ** root); +tree_expr_t * insert_infix_op(infix_op_t * infix_op, tree_expr_t ** root); +token_t parseToken(FILE * fs, char * string); +gen_expr_t ** parse_prefix_args(FILE * fs, int num_args, struct PRESET_T * preset); +gen_expr_t * parse_infix_op(FILE * fs, token_t token, tree_expr_t * tree_expr, struct PRESET_T * preset); +gen_expr_t * parse_sign_arg(FILE * fs); +int parse_float(FILE * fs, float * float_ptr); +int parse_int(FILE * fs, int * int_ptr); +int insert_gen_rec(gen_expr_t * gen_expr, tree_expr_t * root); +int insert_infix_rec(infix_op_t * infix_op, tree_expr_t * root); +gen_expr_t * parse_gen_expr(FILE * fs, tree_expr_t * tree_expr, struct PRESET_T * preset); +per_frame_eqn_t * parse_implicit_per_frame_eqn(FILE * fs, char * param_string, int index, struct PRESET_T * preset); +init_cond_t * parse_per_frame_init_eqn(FILE * fs, struct PRESET_T * preset, splaytree_t * database); +int parse_wavecode_prefix(char * token, int * id, char ** var_string); +int parse_wavecode(char * token, FILE * fs, preset_t * preset); +int parse_wave_prefix(char * token, int * id, char ** eqn_string); +int parse_wave_helper(FILE * fs, struct PRESET_T * preset, int id, char * eqn_type, char * init_string); +int parse_shapecode(char * eqn_string, FILE * fs, preset_t * preset); +int parse_shapecode_prefix(char * token, int * id, char ** var_string); + +int parse_wave(char * eqn_string, FILE * fs, preset_t * preset); +int parse_shape(char * eqn_string, FILE * fs, preset_t * preset); +int parse_shape_prefix(char * token, int * id, char ** eqn_string); + +int update_string_buffer(char * buffer, int * index); +int string_to_float(char * string, float * float_ptr); +int parse_shape_per_frame_init_eqn(FILE * fs, custom_shape_t * custom_shape, struct PRESET_T * preset); +int parse_shape_per_frame_eqn(FILE * fs, custom_shape_t * custom_shape, struct PRESET_T * preset); +int parse_wave_per_frame_eqn(FILE * fs, custom_wave_t * custom_wave, struct PRESET_T * preset); +int last_token_size = 0; + + +/* Grabs the next token from the file. The second argument points + to the raw string */ + +token_t parseToken(FILE * fs, char * string) { + + char c; + int i; + + if (string != NULL) + memset(string, 0, MAX_TOKEN_SIZE); + + /* Loop until a delimiter is found, or the maximum string size is found */ + for (i = 0; i < MAX_TOKEN_SIZE;i++) { + c = fgetc(fs); + last_token_size++; + /* If the string line buffer is full, quit */ + if (string_line_buffer_index == (STRING_LINE_SIZE - 1)) + return tStringBufferFilled; + + /* Otherwise add this character to the string line buffer */ + string_line_buffer[string_line_buffer_index++] = c; + /* Now interpret the character */ + switch (c) { + + case '+': + return tPlus; + case '-': + return tMinus; + case '%': + return tMod; + case '/': + + /* check for line comment here */ + if ((c = fgetc(fs)) == '/') { + while(1) { + c = fgetc(fs); + if (c == EOF) { + line_mode = NORMAL_LINE_MODE; + return tEOF; + } + if (c == '\n') { + line_mode = NORMAL_LINE_MODE; + return tEOL; + } + } + + } + + /* Otherwise, just a regular division operator */ + ungetc(c, fs); + return tDiv; + + case '*': + return tMult; + case '|': + return tOr; + case '&': + return tAnd; + case '(': + return tLPr; + case ')': + return tRPr; + case '[': + return tLBr; + case ']': + return tRBr; + case '=': + return tEq; + case '\n': + line_count++; + line_mode = NORMAL_LINE_MODE; + return tEOL; + case ',': + return tComma; + case ';': + return tSemiColon; + case ' ': /* space, skip the character */ + i--; + break; + case EOF: + line_count = 1; + line_mode = NORMAL_LINE_MODE; + return tEOF; + + default: + if (string != NULL) + string[i] = c; + } + + } + + /* String reached maximum length, return special token error */ + return tStringTooLong; + +} + +/* Parse input in the form of "exp, exp, exp, ...)" + Returns a general expression list */ + +gen_expr_t ** parse_prefix_args(FILE * fs, int num_args, struct PRESET_T * preset) { + + int i, j; + gen_expr_t ** expr_list; /* List of arguments to function */ + gen_expr_t * gen_expr; + + /* Malloc the expression list */ + expr_list = (gen_expr_t**)wipemalloc(sizeof(gen_expr_t*)*num_args); + + /* Malloc failed */ + if (expr_list == NULL) + return NULL; + + + i = 0; + + while (i < num_args) { + //if (PARSE_DEBUG) printf("parse_prefix_args: parsing argument %d...\n", i+1); + /* Parse the ith expression in the list */ + if ((gen_expr = parse_gen_expr(fs, NULL, preset)) == NULL) { + //if (PARSE_DEBUG) printf("parse_prefix_args: failed to get parameter # %d for function (LINE %d)\n", i+1, line_count); + for (j = 0; j < i; j++) + free_gen_expr(expr_list[j]); + free(expr_list); + expr_list = NULL; + return NULL; + } + /* Assign entry in expression list */ + expr_list[i++] = gen_expr; + } + + //if (PARSE_DEBUG) printf("parse_prefix_args: finished parsing %d arguments (LINE %d)\n", num_args, line_count); + /* Finally, return the resulting expression list */ + return expr_list; +} + +/* Parses a comment at the top of the file. Stops when left bracket is found */ +int parse_top_comment(FILE * fs) { + + char string[MAX_TOKEN_SIZE]; + token_t token; + + /* Process tokens until left bracket is found */ + while ((token = parseToken(fs, string)) != tLBr) { + if (token == tEOF) + return PROJECTM_PARSE_ERROR; + } + + /* Done, return success */ + return PROJECTM_SUCCESS; +} + +/* Right Bracket is parsed by this function. + puts a new string into name */ +int parse_preset_name(FILE * fs, char * name) { + + token_t token; + + if (name == NULL) + return PROJECTM_FAILURE; + + if ((token = parseToken(fs, name)) != tRBr) + return PROJECTM_PARSE_ERROR; + +#ifdef DEBUG + if (PARSE_DEBUG) fprintf(debugFile,"parse_preset_name: parsed preset (name = \"%s\")\n", name); +#endif + + return PROJECTM_SUCCESS; +} + + +/* Parses per pixel equations */ +int parse_per_pixel_eqn(FILE * fs, preset_t * preset, char * init_string) { + + + char string[MAX_TOKEN_SIZE]; + gen_expr_t * gen_expr; + +#ifdef DEBUG + if (PARSE_DEBUG) fprintf(debugFile,"parse_per_pixel: per_pixel equation parsing start...(LINE %d)\n", line_count); +#endif + +if (init_string != 0) { + strncpy(string, init_string, strlen(init_string)); +} else { + + if (parseToken(fs, string) != tEq) { /* parse per pixel operator name */ +#ifdef DEBUG + if (PARSE_DEBUG) fprintf(debugFile,"parse_per_pixel: equal operator expected after per pixel operator \"%s\", but not found (LINE %d)\n", + string, line_count); +#endif + return PROJECTM_PARSE_ERROR; + } +} + + /* Parse right side of equation as an expression */ + if ((gen_expr = parse_gen_expr(fs, NULL, preset)) == NULL) { +#ifdef DEBUG + if (PARSE_DEBUG) fprintf(debugFile,"parse_per_pixel: equation evaluated to null? (LINE %d)\n", line_count); +#endif + return PROJECTM_PARSE_ERROR; + } + + /* Add the per pixel equation */ + if (add_per_pixel_eqn(string, gen_expr, preset) < 0) { + if (PARSE_DEBUG) printf("parse_per_pixel: no param associated with \"%s\" (LINE %d)", string, line_count); + free_gen_expr(gen_expr); + return PROJECTM_PARSE_ERROR; + } + + return PROJECTM_SUCCESS; +} + +/* Parses an equation line, this function is way too big, should add some helper functions */ +int parse_line(FILE * fs, struct PRESET_T * preset) { + + char eqn_string[MAX_TOKEN_SIZE]; + token_t token; + init_cond_t * init_cond; + per_frame_eqn_t * per_frame_eqn; + //per_frame_eqn_t * per_frame_init_eqn; + + /* Clear the string line buffer */ + memset(string_line_buffer, 0, STRING_LINE_SIZE); + string_line_buffer_index = 0; + + token = parseToken( fs, eqn_string ); + switch (token ) { + + /* Invalid Cases */ + case tRBr: + case tLPr: + case tRPr: + case tComma: + case tLBr: + case tPlus: + case tMinus: + case tMod: + case tMult: + case tOr: + case tAnd: + case tDiv: + + // if (PARSE_DEBUG) printf("parse_line: invalid token found at start of line (LINE %d)\n", line_count); + /* Invalid token found, return a parse error */ + return PROJECTM_PARSE_ERROR; + + + case tEOL: /* Empty line */ + line_mode = NORMAL_LINE_MODE; + return PROJECTM_SUCCESS; + + case tEOF: /* End of File */ + line_mode = NORMAL_LINE_MODE; + line_count = 1; + return EOF; + + case tSemiColon: /* Indicates end of expression */ + return PROJECTM_SUCCESS; + + /* Valid Case, either an initial condition or equation should follow */ + case tEq: + + /* CASE: PER FRAME INIT EQUATION */ + if (!strncmp(eqn_string, PER_FRAME_INIT_STRING, PER_FRAME_INIT_STRING_LENGTH)) { + + //if (PARSE_DEBUG) printf("parse_line: per frame init equation found...(LINE %d)\n", line_count); + + /* Parse the per frame equation */ + if ((init_cond = parse_per_frame_init_eqn(fs, preset, NULL)) == NULL) { + //if (PARSE_DEBUG) printf("parse_line: per frame init equation parsing failed (LINE %d)\n", line_count); + return PROJECTM_PARSE_ERROR; + } + + /* Insert the equation in the per frame equation tree */ + if (splay_insert(init_cond, init_cond->param->name, preset->per_frame_init_eqn_tree) < 0) { + //if (PARSE_DEBUG) printf("parse_line: failed to add a perframe equation (ERROR)\n"); + free_init_cond(init_cond); /* will free the gen expr too */ + return PROJECTM_PARSE_ERROR; + } + + + if (update_string_buffer(preset->per_frame_init_eqn_string_buffer, + &preset->per_frame_init_eqn_string_index) < 0) + { return PROJECTM_FAILURE;} + line_mode = PER_FRAME_INIT_LINE_MODE; + return PROJECTM_SUCCESS; + } + + /* Per frame equation case */ + if (!strncmp(eqn_string, PER_FRAME_STRING, PER_FRAME_STRING_LENGTH)) { + + /* Sometimes per frame equations are implicitly defined without the + per_frame_ prefix. This informs the parser that one could follow */ + line_mode = PER_FRAME_LINE_MODE; + + //if (PARSE_DEBUG) printf("parse_line: per frame equation found...(LINE %d)\n", line_count); + + /* Parse the per frame equation */ + if ((per_frame_eqn = parse_per_frame_eqn(fs, ++per_frame_eqn_count, preset)) == NULL) { + if (PARSE_DEBUG) printf("parse_line: per frame equation parsing failed (LINE %d)\n", line_count); + return PROJECTM_PARSE_ERROR; + } + + /* Insert the equation in the per frame equation tree */ + if (splay_insert(per_frame_eqn, &per_frame_eqn_count, preset->per_frame_eqn_tree) < 0) { + if (PARSE_DEBUG) printf("parse_line: failed to add a perframe equation (ERROR)\n"); + free_per_frame_eqn(per_frame_eqn); /* will free the gen expr too */ + return PROJECTM_PARSE_ERROR; + } + + if (update_string_buffer(preset->per_frame_eqn_string_buffer, + &preset->per_frame_eqn_string_index) < 0) + return PROJECTM_FAILURE; + + + + return PROJECTM_SUCCESS; + + } + + /* Wavecode initial condition case */ + if (!strncmp(eqn_string, WAVECODE_STRING, WAVECODE_STRING_LENGTH)) { + + line_mode = CUSTOM_WAVE_WAVECODE_LINE_MODE; + + //if (PARSE_DEBUG) + // printf("parse_line: wavecode prefix found: \"%s\"\n", eqn_string); + + // printf("string:%d\n", 5); + + //SUPER MYSTERIO-BUG - Don't Remove + printf(""); + + return parse_wavecode(eqn_string, fs, preset); + } + + /* Custom Wave Prefix */ + if ((!strncmp(eqn_string, WAVE_STRING, WAVE_STRING_LENGTH)) && + ((eqn_string[5] >= 48) && (eqn_string[5] <= 57))) { + + // if (PARSE_DEBUG) printf("parse_line wave prefix found: \"%s\"\n", eqn_string); + + return parse_wave(eqn_string, fs, preset); + + } + + + /* Shapecode initial condition case */ + if (!strncmp(eqn_string, SHAPECODE_STRING, SHAPECODE_STRING_LENGTH)) { + + line_mode = CUSTOM_SHAPE_SHAPECODE_LINE_MODE; + + if (PARSE_DEBUG) printf("parse_line: shapecode prefix found: \"%s\"\n", eqn_string); + + return parse_shapecode(eqn_string, fs, preset); + } + + /* Custom Shape Prefix */ + if ((!strncmp(eqn_string, SHAPE_STRING, SHAPE_STRING_LENGTH)) && + ((eqn_string[6] >= 48) && (eqn_string[6] <= 57))) { + + if (PARSE_DEBUG) printf("parse_line shape prefix found: \"%s\"\n", eqn_string); + return parse_shape(eqn_string, fs, preset); + + } + + /* Per pixel equation case */ + if (!strncmp(eqn_string, PER_PIXEL_STRING, PER_PIXEL_STRING_LENGTH)) { + line_mode = PER_PIXEL_LINE_MODE; + + if (parse_per_pixel_eqn(fs, preset, 0) < 0) + return PROJECTM_PARSE_ERROR; + + + if (update_string_buffer(preset->per_pixel_eqn_string_buffer, + &preset->per_pixel_eqn_string_index) < 0) + return PROJECTM_FAILURE; + + if (PARSE_DEBUG) printf("parse_line: finished parsing per pixel equation (LINE %d)\n", line_count); + return PROJECTM_SUCCESS; + } + + /* Sometimes equations are written implicitly in milkdrop files, in the form + + per_frame_1 = p1 = eqn1; p2 = eqn2; p3 = eqn3;..; + + which is analagous to: + + per_frame_1 = p1 = eqn1; per_frame_2 = p2 = eqn2; per_frame_3 = p3 = eqn3; ...; + + The following line mode hack allows such implicit declaration of the + prefix that specifies the equation type. An alternative method + may be to associate each equation line as list of equations separated + by semicolons (and a new line ends the list). Instead, however, a global + variable called "line_mode" specifies the last type of equation found, + and bases any implicitly typed input on this fact + + Note added by Carmelo Piccione (cep@andrew.cmu.edu) 10/19/03 + */ + + /* Per frame line mode previously, try to parse the equation implicitly */ + if (line_mode == PER_FRAME_LINE_MODE) { + if ((per_frame_eqn = parse_implicit_per_frame_eqn(fs, eqn_string, ++per_frame_eqn_count, preset)) == NULL) + return PROJECTM_PARSE_ERROR; + + /* Insert the equation in the per frame equation tree */ + if (splay_insert(per_frame_eqn, &per_frame_eqn_count, preset->per_frame_eqn_tree) < 0) { + if (PARSE_DEBUG) printf("parse_line: failed to add a perframe equation (ERROR)\n"); + free_per_frame_eqn(per_frame_eqn); /* will free the gen expr too */ + return PROJECTM_PARSE_ERROR; + } + + if (update_string_buffer(preset->per_frame_eqn_string_buffer, + &preset->per_frame_eqn_string_index) < 0) + return PROJECTM_FAILURE; + + return PROJECTM_SUCCESS; + + } else if (line_mode == PER_FRAME_INIT_LINE_MODE) { + if (PARSE_DEBUG) printf("parse_line: parsing impliict per frame init eqn)\n"); + if ((init_cond = parse_per_frame_init_eqn(fs, preset, NULL)) == NULL) + return PROJECTM_PARSE_ERROR; + + ++per_frame_init_eqn_count; + + /* Insert the equation in the per frame equation tree */ + if (splay_insert(init_cond, &per_frame_init_eqn_count, preset->per_frame_init_eqn_tree) < 0) { + if (PARSE_DEBUG) printf("parse_line: failed to add a per frame init equation (ERROR)\n"); + free_init_cond(init_cond); /* will free the gen expr too */ + return PROJECTM_PARSE_ERROR; + } + + if (update_string_buffer(preset->per_frame_init_eqn_string_buffer, + &preset->per_frame_init_eqn_string_index) < 0) + return PROJECTM_FAILURE; + + return PROJECTM_SUCCESS; + } else if (line_mode == PER_PIXEL_LINE_MODE) { + + if (PARSE_DEBUG) printf("parse_line: implicit per pixel eqn\n", line_count); + return parse_per_pixel_eqn(fs, preset, eqn_string); + + + } else if (line_mode == CUSTOM_WAVE_PER_POINT_LINE_MODE) { + + if (PARSE_DEBUG) printf("parse_line: implicit cwave ppoint eqn found (LINE %d)\n", line_count); + //int len = strlen(eqn_string); + + + if (parse_wave_helper(fs, preset, last_custom_wave_id, last_eqn_type, eqn_string) < 0) { + if (PARSE_DEBUG) printf("parse_line: failed to parse an implicit custom wave per point eqn\n"); + return PROJECTM_FAILURE; + } + return PROJECTM_SUCCESS; + } else if (line_mode == CUSTOM_WAVE_PER_FRAME_LINE_MODE) { + //Added by PJS. I hope I did it right + custom_wave_t * custom_wave; + + /* Retrieve custom shape associated with this id */ + if ((custom_wave = find_custom_wave(last_custom_wave_id, preset, TRUE)) == NULL) + return PROJECTM_FAILURE; + return parse_wave_per_frame_eqn(fs, custom_wave, preset); + + + } else if (line_mode == CUSTOM_WAVE_WAVECODE_LINE_MODE) { + if (PARSE_DEBUG) printf("unsupported line mode: CUSTOM_WAVE_WAVECODE_LINE_MODE\n"); + return PROJECTM_FAILURE; + } else if (line_mode == CUSTOM_SHAPE_SHAPECODE_LINE_MODE) { + if (PARSE_DEBUG) printf("unsupported line mode: CUSTOM_SHAPE_SHAPECODE_LINE_MODE\n"); + return PROJECTM_FAILURE; + } else if (line_mode == CUSTOM_SHAPE_PER_FRAME_LINE_MODE) { + + custom_shape_t * custom_shape; + + /* Retrieve custom shape associated with this id */ + if ((custom_shape = find_custom_shape(last_custom_shape_id, preset, TRUE)) == NULL) + return PROJECTM_FAILURE; + return parse_shape_per_frame_eqn(fs, custom_shape, preset); + } else if (line_mode == CUSTOM_SHAPE_PER_FRAME_INIT_LINE_MODE) { + + custom_shape_t * custom_shape; + + /* Retrieve custom shape associated with this id */ + if ((custom_shape = find_custom_shape(last_custom_shape_id, preset, TRUE)) == NULL) + return PROJECTM_FAILURE; + + return parse_shape_per_frame_init_eqn(fs, custom_shape, preset); + + } + + //if (PARSE_DEBUG) printf("parse_line: found initial condition: name = \"%s\" (LINE %d)\n", eqn_string, line_count); + + /* Evaluate the initial condition */ + if ((init_cond = parse_init_cond(fs, eqn_string, preset)) == NULL) { + if (PARSE_DEBUG) printf("parse_line: failed to parse initial condition (LINE %d)\n", line_count); + return PROJECTM_PARSE_ERROR; + } + + /* Add equation to initial condition tree */ + if (splay_insert(init_cond, init_cond->param->name, preset->init_cond_tree) < 0) { + if (PARSE_DEBUG) printf("parse_line: failed to add initial condition \"%s\" to equation tree (LINE %d)\n", + init_cond->param->name, line_count); + free_init_cond(init_cond); + return PROJECTM_FAILURE; + } + + /* Finished with initial condition line */ + // if (PARSE_DEBUG) printf("parse_line: initial condition parsed successfully\n"); + + return PROJECTM_SUCCESS; + + /* END INITIAL CONDITIONING PARSING */ + + + default: /* an uncaught type or an error has occurred */ + if (PARSE_DEBUG) printf("parse_line: uncaught case, token val = %d\n", token); + return PROJECTM_PARSE_ERROR; + } + + /* Because of the default in the case statement, + control flow should never actually reach here */ + return PROJECTM_PARSE_ERROR; +} + + + +/* Parses a general expression, this function is the meat of the parser */ +gen_expr_t * parse_gen_expr (FILE * fs, tree_expr_t * tree_expr, struct PRESET_T * preset) { + + int i; + char string[MAX_TOKEN_SIZE]; + token_t token; + gen_expr_t * gen_expr; + float val; + param_t * param = NULL; + func_t * func; + gen_expr_t ** expr_list; + + switch (token = parseToken(fs,string)) { + /* Left Parentice Case */ + case tLPr: + + /* CASE 1 (Left Parentice): See if the previous string before this parentice is a function name */ + if ((func = find_func(string)) != NULL) { + if (PARSE_DEBUG) printf("parse_gen_expr: found prefix function (name = %s) (LINE %d)\n", func->name, line_count); + + /* Parse the functions arguments */ + if ((expr_list = parse_prefix_args(fs, func->num_args, preset)) == NULL) { + if (PARSE_DEBUG) printf("parse_prefix_args: failed to generate an expresion list! (LINE %d) \n", line_count); + free_tree_expr(tree_expr); + return NULL; + } + + /* Convert function to expression */ + if ((gen_expr = prefun_to_expr((float (*)())func->func_ptr, expr_list, func->num_args)) == NULL) { + if (PARSE_DEBUG) printf("parse_prefix_args: failed to convert prefix function to general expression (LINE %d) \n", + line_count); + free_tree_expr(tree_expr); + for (i = 0; i < func->num_args;i++) + free_gen_expr(expr_list[i]); + free(expr_list); + expr_list = NULL; + return NULL; + } + + + + token = parseToken(fs, string); + + if (*string != 0) { + if (PARSE_DEBUG) printf("parse_prefix_args: empty string expected, but not found...(LINE %d)\n", line_count); + /* continue anyway for now, could be implicit multiplication */ + } + + return parse_infix_op(fs, token, insert_gen_expr(gen_expr, &tree_expr), preset); + } + + + /* Case 2: (Left Parentice), a string coupled with a left parentice. Either an error or implicit + multiplication operator. For now treat it as an error */ + if (*string != 0) { + if (PARSE_DEBUG) printf("parse_gen_expr: implicit multiplication case unimplemented!\n"); + free_tree_expr(tree_expr); + return NULL; + } + + /* CASE 3 (Left Parentice): the following is enclosed parentices to change order + of operations. So we create a new expression tree */ + + if ((gen_expr = parse_gen_expr(fs, NULL, preset)) == NULL) { + //if (PARSE_DEBUG) printf("parse_gen_expr: found left parentice, but failed to create new expression tree \n"); + free_tree_expr(tree_expr); + return NULL; + } + + if (PARSE_DEBUG) printf("parse_gen_expr: finished enclosed expression tree...\n"); + token = parseToken(fs, string); + return parse_infix_op(fs, token, insert_gen_expr(gen_expr, &tree_expr), preset); + + /* Plus is a prefix operator check */ + case tPlus: + if (*string == 0) { + + //if (PARSE_DEBUG) printf("parse_gen_expr: plus used as prefix (LINE %d)\n", line_count); + + /* Treat prefix plus as implict 0 preceding operator */ + gen_expr = const_to_expr(0); + + return parse_infix_op(fs, tPositive, insert_gen_expr(gen_expr, &tree_expr), preset); + } + + /* Minus is a prefix operator check */ + case tMinus: + if (*string == 0) { + + /* Use the negative infix operator, but first add an implicit zero to the operator tree */ + gen_expr = const_to_expr(0); + //return parse_gen_expr(fs, insert_gen_expr(gen_expr, &tree_expr), preset); + return parse_infix_op(fs, tNegative, insert_gen_expr(gen_expr, &tree_expr), preset); + } + + /* All the following cases are strings followed by an infix operator or terminal */ + case tRPr: + case tEOL: + case tEOF: + case tSemiColon: + case tComma: + + /* CASE 1 (terminal): string is empty, but not null. Not sure if this will actually happen + any more. */ + if (*string == 0) { + //if (PARSE_DEBUG) printf("parse_gen_expr: empty string coupled with terminal (LINE %d) \n", line_count); + return parse_infix_op(fs, token, tree_expr, preset); + + } + + default: + + /* CASE 0: Empty string, parse error */ + if (*string == 0) { + if (PARSE_DEBUG) printf("parse_gen_expr: empty string coupled with infix op (ERROR!) (LINE %d) \n", line_count); + free_tree_expr(tree_expr); + return NULL; + } + + /* CASE 1: Check if string is a just a floating point number */ + if (string_to_float(string, &val) != PROJECTM_PARSE_ERROR) { + if ((gen_expr = const_to_expr(val)) == NULL) { + free_tree_expr(tree_expr); + return NULL; + } + + /* Parse the rest of the line */ + return parse_infix_op(fs, token, insert_gen_expr(gen_expr, &tree_expr), preset); + + } + + + /* CASE 4: custom shape variable */ + if (current_shape != NULL) { + if ((param = find_param_db(string, current_shape->param_tree, FALSE)) == NULL) { + if ((param = find_builtin_param(string)) == NULL) + if ((param = find_param_db(string, current_shape->param_tree, TRUE)) == NULL) { + free_tree_expr(tree_expr); + return NULL; + } + } + + if (PARSE_DEBUG) { + printf("parse_gen_expr: custom shape parameter (name = %s)... ", param->name); + fflush(stdout); + } + + /* Convert parameter to an expression */ + if ((gen_expr = param_to_expr(param)) == NULL) { + free_tree_expr(tree_expr); + return NULL; + } + + //if (PARSE_DEBUG) printf("converted to expression (LINE %d)\n", line_count); + + /* Parse the rest of the line */ + return parse_infix_op(fs, token, insert_gen_expr(gen_expr, &tree_expr), preset); + } + + /* CASE 5: custom wave variable */ + if (current_wave != NULL) { + if ((param = find_param_db(string, current_wave->param_tree, FALSE)) == NULL) { + if ((param = find_builtin_param(string)) == NULL) + if ((param = find_param_db(string, current_wave->param_tree, TRUE)) == NULL) { + free_tree_expr(tree_expr); + return NULL; + } + + } + + if (PARSE_DEBUG) { + printf("parse_gen_expr: custom wave parameter (name = %s)... ", param->name); + fflush(stdout); + } + + /* Convert parameter to an expression */ + if ((gen_expr = param_to_expr(param)) == NULL) { + free_tree_expr(tree_expr); + return NULL; + } + + if (PARSE_DEBUG) printf("converted to expression (LINE %d)\n", line_count); + + /* Parse the rest of the line */ + return parse_infix_op(fs, token, insert_gen_expr(gen_expr, &tree_expr), preset); + + } + + /* CASE 6: regular parameter. Will be created if necessary and the string has no invalid characters */ + if ((param = find_param(string, preset, P_CREATE)) != NULL) { + + if (PARSE_DEBUG) { + printf("parse_gen_expr: parameter (name = %s)... ", param->name); + fflush(stdout); + } + + /* Convert parameter to an expression */ + if ((gen_expr = param_to_expr(param)) == NULL) { + free_tree_expr(tree_expr); + return NULL; + } + + if (PARSE_DEBUG) printf("converted to expression (LINE %d)\n", line_count); + + /* Parse the rest of the line */ + return parse_infix_op(fs, token, insert_gen_expr(gen_expr, &tree_expr), preset); + + } + + /* CASE 7: Bad string, give up */ + if (PARSE_DEBUG) printf("parse_gen_expr: syntax error [string = \"%s\"] (LINE %d)\n", string, line_count); + free_tree_expr(tree_expr); + return NULL; + } +} + + + +/* Inserts expressions into tree according to operator precedence. + If root is null, a new tree is created, with gen_expr as only element */ + +tree_expr_t * insert_infix_op(infix_op_t * infix_op, tree_expr_t **root) { + + tree_expr_t * new_root; + + /* Sanity check */ + if (infix_op == NULL) + return NULL; + + /* The root is null, so make this operator + the new root */ + + if (*root == NULL) { + new_root = new_tree_expr(infix_op, NULL, NULL, NULL); + *root = new_root; + return new_root; + } + + /* The root node is not an infix function, + so we make this infix operator the new root */ + + if ((*root)->infix_op == NULL) { + new_root = new_tree_expr(infix_op, NULL, *root, NULL); + (*root) = new_root; + return new_root; + } + + /* The root is an infix function. If the precedence + of the item to be inserted is greater than the root's + precedence, then make gen_expr the root */ + + if (infix_op->precedence > (*root)->infix_op->precedence) { + new_root = new_tree_expr(infix_op, NULL, *root, NULL); + (*root) = new_root; + return new_root; + } + + /* If control flow reaches here, use a recursive helper + with the knowledge that the root is higher precedence + than the item to be inserted */ + + insert_infix_rec(infix_op, *root); + return *root; + +} + + +tree_expr_t * insert_gen_expr(gen_expr_t * gen_expr, tree_expr_t ** root) { + + tree_expr_t * new_root; + + /* If someone foolishly passes a null + pointer to insert, return the original tree */ + + if (gen_expr == NULL) { + return *root; + } + + /* If the root is null, generate a new expression tree, + using the passed expression as the root element */ + + if (*root == NULL) { + new_root = new_tree_expr(NULL, gen_expr, NULL, NULL); + *root = new_root; + return new_root; + } + + + /* Otherwise. the new element definitely will not replace the current root. + Use a recursive helper function to do insertion */ + + insert_gen_rec(gen_expr, *root); + return *root; +} + +/* A recursive helper function to insert general expression elements into the operator tree */ +int insert_gen_rec(gen_expr_t * gen_expr, tree_expr_t * root) { + + /* Trivial Case: root is null */ + + if (root == NULL) { + ////if (PARSE_DEBUG) printf("insert_gen_rec: root is null, returning failure\n"); + return PROJECTM_FAILURE; + } + + + /* The current node's left pointer is null, and this + current node is an infix operator, so insert the + general expression at the left pointer */ + + if ((root->left == NULL) && (root->infix_op != NULL)) { + root->left = new_tree_expr(NULL, gen_expr, NULL, NULL); + return PROJECTM_SUCCESS; + } + + /* The current node's right pointer is null, and this + current node is an infix operator, so insert the + general expression at the right pointer */ + + if ((root->right == NULL) && (root->infix_op != NULL)) { + root->right = new_tree_expr(NULL, gen_expr, NULL, NULL); + return PROJECTM_SUCCESS; + } + + /* Otherwise recurse down to the left. If + this succeeds then return. If it fails, try + recursing down to the right */ + + if (insert_gen_rec(gen_expr, root->left) == PROJECTM_FAILURE) + return insert_gen_rec(gen_expr, root->right); + + /* Impossible for control flow to reach here, but in + the world of C programming, who knows... */ + //if (PARSE_DEBUG) printf("insert_gen_rec: should never reach here!\n"); + return PROJECTM_FAILURE; +} + + +/* A recursive helper function to insert infix arguments by operator precedence */ +int insert_infix_rec(infix_op_t * infix_op, tree_expr_t * root) { + + /* Shouldn't happen, implies a parse error */ + + if (root == NULL) + return PROJECTM_FAILURE; + + /* Also shouldn't happen, also implies a (different) parse error */ + + if (root->infix_op == NULL) + return PROJECTM_FAILURE; + + /* Left tree is empty, attach this operator to it. + I don't think this will ever happen */ + if (root->left == NULL) { + root->left = new_tree_expr(infix_op, NULL, root->left, NULL); + return PROJECTM_SUCCESS; + } + + /* Right tree is empty, attach this operator to it */ + if (root->right == NULL) { + root->right = new_tree_expr(infix_op, NULL, root->right, NULL); + return PROJECTM_SUCCESS; + } + + /* The left element can now be ignored, since there is no way for this + operator to use those expressions */ + + /* If the right element is not an infix operator, + then insert the expression here, attaching the old right branch + to the left of the new expression */ + + if (root->right->infix_op == NULL) { + root->right = new_tree_expr(infix_op, NULL, root->right, NULL); + return PROJECTM_SUCCESS; + } + + /* Traverse deeper if the inserting operator precedence is less than the + the root's right operator precedence */ + if (infix_op->precedence < root->right->infix_op->precedence) + return insert_infix_rec(infix_op, root->right); + + /* Otherwise, insert the operator here */ + + root->right = new_tree_expr(infix_op, NULL, root->right, NULL); + return PROJECTM_SUCCESS; + +} + +/* Parses an infix operator */ +gen_expr_t * parse_infix_op(FILE * fs, token_t token, tree_expr_t * tree_expr, struct PRESET_T * preset) { + + gen_expr_t * gen_expr; + + switch (token) { + /* All the infix operators */ + case tPlus: + //if (PARSE_DEBUG) printf("parse_infix_op: found addition operator (LINE %d)\n", line_count); + return parse_gen_expr(fs, insert_infix_op(infix_add, &tree_expr), preset); + case tMinus: + //if (PARSE_DEBUG) printf("parse_infix_op: found subtraction operator (LINE %d)\n", line_count); + return parse_gen_expr(fs, insert_infix_op(infix_minus, &tree_expr), preset); + case tMult: + //if (PARSE_DEBUG) printf("parse_infix_op: found multiplication operator (LINE %d)\n", line_count); + return parse_gen_expr(fs, insert_infix_op(infix_mult, &tree_expr), preset); + case tDiv: + //if (PARSE_DEBUG) printf("parse_infix_op: found division operator (LINE %d)\n", line_count); + return parse_gen_expr(fs, insert_infix_op(infix_div, &tree_expr), preset); + case tMod: + //if (PARSE_DEBUG) printf("parse_infix_op: found modulo operator (LINE %d)\n", line_count); + return parse_gen_expr(fs, insert_infix_op(infix_mod, &tree_expr), preset); + case tOr: + //if (PARSE_DEBUG) printf("parse_infix_op: found bitwise or operator (LINE %d)\n", line_count); + return parse_gen_expr(fs, insert_infix_op(infix_or, &tree_expr), preset); + case tAnd: + //if (PARSE_DEBUG) printf("parse_infix_op: found bitwise and operator (LINE %d)\n", line_count); + return parse_gen_expr(fs, insert_infix_op(infix_and, &tree_expr), preset); + case tPositive: + //if (PARSE_DEBUG) printf("parse_infix_op: found positive operator (LINE %d)\n", line_count); + return parse_gen_expr(fs, insert_infix_op(infix_positive, &tree_expr), preset); + case tNegative: + //if (PARSE_DEBUG) printf("parse_infix_op: found negative operator (LINE %d)\n", line_count); + return parse_gen_expr(fs, insert_infix_op(infix_negative, &tree_expr), preset); + + case tEOL: + case tEOF: + case tSemiColon: + case tRPr: + case tComma: + //if (PARSE_DEBUG) printf("parse_infix_op: terminal found (LINE %d)\n", line_count); + gen_expr = new_gen_expr(TREE_T, (void*)tree_expr); + return gen_expr; + default: + //if (PARSE_DEBUG) printf("parse_infix_op: operator or terminal expected, but not found (LINE %d)\n", line_count); + free_tree_expr(tree_expr); + return NULL; + } + + /* Will never happen */ + return NULL; + +} + +/* Parses an integer, checks for +/- prefix */ +int parse_int(FILE * fs, int * int_ptr) { + +char string[MAX_TOKEN_SIZE]; + token_t token; + int sign; + char * end_ptr = " "; + + token = parseToken(fs, string); + + + switch (token) { + case tMinus: + sign = -1; + token = parseToken(fs, string); + break; + case tPlus: + sign = 1; + token = parseToken(fs, string); + break; + default: + sign = 1; + break; + } + + + if (string[0] == 0) + return PROJECTM_PARSE_ERROR; + + /* Convert the string to an integer. *end_ptr + should end up pointing to null terminator of 'string' + if the conversion was successful. */ + // printf("STRING: \"%s\"\n", string); + + (*int_ptr) = sign*strtol(string, &end_ptr, 10); + + /* If end pointer is a return character or null terminator, all is well */ + if ((*end_ptr == '\r') || (*end_ptr == '\0')) + return PROJECTM_SUCCESS; + + return PROJECTM_PARSE_ERROR; + +} +/* Parses a floating point number */ +int string_to_float(char * string, float * float_ptr) { + + char ** error_ptr; + + if (*string == 0) + return PROJECTM_PARSE_ERROR; + + error_ptr = (char**)wipemalloc(sizeof(char**)); + + (*float_ptr) = strtod(string, error_ptr); + + /* These imply a succesful parse of the string */ + if ((**error_ptr == '\0') || (**error_ptr == '\r')) { + free(error_ptr); + error_ptr = NULL; + return PROJECTM_SUCCESS; + } + + (*float_ptr) = 0; + free(error_ptr); + error_ptr = NULL; + return PROJECTM_PARSE_ERROR; +} + +/* Parses a floating point number */ +int parse_float(FILE * fs, float * float_ptr) { + + char string[MAX_TOKEN_SIZE]; + char ** error_ptr; + token_t token; + int sign; + + error_ptr =(char**) wipemalloc(sizeof(char**)); + + token = parseToken(fs, string); + + switch (token) { + case tMinus: + sign = -1; + token = parseToken(fs, string); + break; + case tPlus: + sign = 1; + token = parseToken(fs, string); + break; + default: + sign = 1; + } + + if (string[0] == 0) { + free(error_ptr); + error_ptr = NULL; + return PROJECTM_PARSE_ERROR; + } + + (*float_ptr) = sign*strtod(string, error_ptr); + + /* No conversion was performed */ + if ((**error_ptr == '\0') || (**error_ptr == '\r')) { + free(error_ptr); + error_ptr = NULL; + return PROJECTM_SUCCESS; + } + + //if (PARSE_DEBUG) printf("parse_float: float conversion failed for string \"%s\"\n", string); + + (*float_ptr) = 0; + free(error_ptr); + error_ptr = NULL; + return PROJECTM_PARSE_ERROR; + + + +} + +/* Parses a per frame equation. That is, interprets a stream of data as a per frame equation */ +per_frame_eqn_t * parse_per_frame_eqn(FILE * fs, int index, struct PRESET_T * preset) { + + char string[MAX_TOKEN_SIZE]; + param_t * param; + per_frame_eqn_t * per_frame_eqn; + gen_expr_t * gen_expr; + + if (parseToken(fs, string) != tEq) { + //if (PARSE_DEBUG) printf("parse_per_frame_eqn: no equal sign after string \"%s\" (LINE %d)\n", string, line_count); + return NULL; + } + + /* Find the parameter associated with the string, create one if necessary */ + if ((param = find_param(string, preset, P_CREATE)) == NULL) { + return NULL; + } + + /* Make sure parameter is writable */ + if (param->flags & P_FLAG_READONLY) { + //if (PARSE_DEBUG) printf("parse_per_frame_eqn: parameter %s is marked as read only (LINE %d)\n", param->name, line_count); + return NULL; + } + + /* Parse right side of equation as an expression */ + if ((gen_expr = parse_gen_expr(fs, NULL, preset)) == NULL) { + //if (PARSE_DEBUG) printf("parse_per_frame_eqn: equation evaluated to null (LINE %d)\n", line_count); + return NULL; + } + + //if (PARSE_DEBUG) printf("parse_per_frame_eqn: finished per frame equation evaluation (LINE %d)\n", line_count); + + /* Create a new per frame equation */ + if ((per_frame_eqn = new_per_frame_eqn(index, param, gen_expr)) == NULL) { + //if (PARSE_DEBUG) printf("parse_per_frame_eqn: failed to create a new per frame eqn, out of memory?\n"); + free_gen_expr(gen_expr); + return NULL; + } + + //if (PARSE_DEBUG) printf("parse_per_frame_eqn: per_frame eqn parsed succesfully\n"); + + return per_frame_eqn; +} + +/* Parses an 'implicit' per frame equation. That is, interprets a stream of data as a per frame equation without a prefix */ +per_frame_eqn_t * parse_implicit_per_frame_eqn(FILE * fs, char * param_string, int index, struct PRESET_T * preset) { + + param_t * param; + per_frame_eqn_t * per_frame_eqn; + gen_expr_t * gen_expr; + + if (fs == NULL) + return NULL; + if (param_string == NULL) + return NULL; + if (preset == NULL) + return NULL; + + //rintf("param string: %s\n", param_string); + /* Find the parameter associated with the string, create one if necessary */ + if ((param = find_param(param_string, preset, P_CREATE)) == NULL) { + return NULL; + } + + //printf("parse_implicit_per_frame_eqn: param is %s\n", param->name); + + /* Make sure parameter is writable */ + if (param->flags & P_FLAG_READONLY) { + //if (PARSE_DEBUG) printf("parse_implicit_per_frame_eqn: parameter %s is marked as read only (LINE %d)\n", param->name, line_count); + return NULL; + } + + /* Parse right side of equation as an expression */ + if ((gen_expr = parse_gen_expr(fs, NULL, preset)) == NULL) { + //if (PARSE_DEBUG) printf("parse_implicit_per_frame_eqn: equation evaluated to null (LINE %d)\n", line_count); + return NULL; + } + + //if (PARSE_DEBUG) printf("parse_implicit_per_frame_eqn: finished per frame equation evaluation (LINE %d)\n", line_count); + + /* Create a new per frame equation */ + if ((per_frame_eqn = new_per_frame_eqn(index, param, gen_expr)) == NULL) { + //if (PARSE_DEBUG) printf("parse_implicit_per_frame_eqn: failed to create a new per frame eqn, out of memory?\n"); + free_gen_expr(gen_expr); + return NULL; + } + + //if (PARSE_DEBUG) printf("parse_implicit_per_frame_eqn: per_frame eqn parsed succesfully\n"); + + return per_frame_eqn; +} + +/* Parses an initial condition */ +init_cond_t * parse_init_cond(FILE * fs, char * name, struct PRESET_T * preset) { + + param_t * param; + value_t init_val; + init_cond_t * init_cond; + + if (name == NULL) + return NULL; + if (preset == NULL) + return NULL; + + /* Search for the paramater in the database, creating it if necessary */ + if ((param = find_param(name, preset, P_CREATE)) == NULL) { + return NULL; + } + + //if (PARSE_DEBUG) printf("parse_init_cond: parameter = \"%s\" (LINE %d)\n", param->name, line_count); + + if (param->flags & P_FLAG_READONLY) { + //if (PARSE_DEBUG) printf("parse_init_cond: builtin parameter \"%s\" marked as read only!\n", param->name); + return NULL; + } + + /* At this point, a parameter has been created or was found + in the database. */ + + //if (PARSE_DEBUG) printf("parse_init_cond: parsing initial condition value... (LINE %d)\n", line_count); + + /* integer value (boolean is an integer in C) */ + if ((param->type == P_TYPE_INT) || (param->type == P_TYPE_BOOL)) { + if ((parse_int(fs, (int*)&init_val.int_val)) == PROJECTM_PARSE_ERROR) { + //if (PARSE_DEBUG) printf("parse_init_cond: error parsing integer!\n"); + return NULL; + } + } + + /* float value */ + else if (param->type == P_TYPE_DOUBLE) { + if ((parse_float(fs, (float*)&init_val.float_val)) == PROJECTM_PARSE_ERROR) { + //if (PARSE_DEBUG) printf("parse_init_cond: error parsing float!\n"); + return NULL; + } + } + + /* Unknown value */ + else { + //if (PARSE_DEBUG) printf("parse_init_cond: unknown parameter type!\n"); + return NULL; + } + + /* Create new initial condition */ + if ((init_cond = new_init_cond(param, init_val)) == NULL) { + //if (PARSE_DEBUG) printf("parse_init_cond: new_init_cond failed!\n"); + return NULL; + } + + /* Finished */ + return init_cond; +} + +/* Parses a per frame init equation, not sure if this works right now */ +init_cond_t * parse_per_frame_init_eqn(FILE * fs, struct PRESET_T * preset, splaytree_t * database) { + + char name[MAX_TOKEN_SIZE]; + param_t * param = NULL; + value_t init_val; + init_cond_t * init_cond; + gen_expr_t * gen_expr; + float val; + token_t token; + + + if (preset == NULL) + return NULL; + if (fs == NULL) + return NULL; + + if ((token = parseToken(fs, name)) != tEq) + return NULL; + + + /* If a database was specified,then use find_param_db instead */ + if ((database != NULL) && ((param = find_param_db(name, database, TRUE)) == NULL)) { + return NULL; + } + + /* Otherwise use the builtin parameter and user databases. This is confusing. Sorry. */ + if ((param == NULL) && ((param = find_param(name, preset, P_CREATE)) == NULL)) { + return NULL; + } + + if (PARSE_DEBUG) printf("parse_per_frame_init_eqn: parameter = \"%s\" (LINE %d)\n", param->name, line_count); + + if (param->flags & P_FLAG_READONLY) { + //if (PARSE_DEBUG) printf("pars_per_frame_init_eqn: builtin parameter \"%s\" marked as read only!\n", param->name); + return NULL; + } + + /* At this point, a parameter has been created or was found + in the database. */ + + if (PARSE_DEBUG) printf("parse_per_frame_init_eqn: parsing right hand side of per frame init equation.. (LINE %d)\n", line_count); + + if ((gen_expr = parse_gen_expr(fs, NULL, preset)) == NULL) { + if (PARSE_DEBUG) printf("parse_per_frame_init_eqn: failed to parse general expresion!\n"); + return NULL; + } + + /* Compute initial condition value */ + val = eval_gen_expr(gen_expr); + + /* Free the general expression now that we are done with it */ + free_gen_expr(gen_expr); + + /* integer value (boolean is an integer in C) */ + if ((param->type == P_TYPE_INT) || (param->type == P_TYPE_BOOL)) { + init_val.int_val = (int)val; + } + + /* float value */ + else if (param->type == P_TYPE_DOUBLE) { + init_val.float_val = val; + } + + /* Unknown value */ + else { + if (PARSE_DEBUG) printf("pase_per_frame_init_eqn: unknown parameter type!\n"); + return NULL; + } + + + /* Create new initial condition */ + if ((init_cond = new_init_cond(param, init_val)) == NULL) { + if (PARSE_DEBUG) printf("parse_per_frame_init_eqn: new_init_cond failed!\n"); + return NULL; + } + + + /* Finished */ + return init_cond; +} + +int parse_wavecode(char * token, FILE * fs, preset_t * preset) { + + char * var_string; + init_cond_t * init_cond; + custom_wave_t * custom_wave; + int id; + value_t init_val; + param_t * param; + + /* Null argument checks */ + if (preset == NULL) + return PROJECTM_FAILURE; + if (fs == NULL) + return PROJECTM_FAILURE; + if (token == NULL) + return PROJECTM_FAILURE; + + /* token should be in the form wavecode_N_var, such as wavecode_1_samples */ + + /* Get id and variable name from token string */ + if (parse_wavecode_prefix(token, &id, &var_string) < 0) + return PROJECTM_PARSE_ERROR; + + //if (PARSE_DEBUG) printf("parse_wavecode: wavecode id = %d, parameter = \"%s\"\n", id, var_string); + + /* Retrieve custom wave information from preset. The 3rd argument + if true creates a custom wave if one does not exist */ + if ((custom_wave = find_custom_wave(id, preset, TRUE)) == NULL) { + //if (PARSE_DEBUG) printf("parse_wavecode: failed to load (or create) custom wave (id = %d)!\n", id); + return PROJECTM_FAILURE; + } + //if (PARSE_DEBUG) printf("parse_wavecode: custom wave found (id = %d)\n", custom_wave->id); + + /* Retrieve parameter from this custom waves parameter db */ + if ((param = find_param_db(var_string, custom_wave->param_tree, TRUE)) == NULL) + return PROJECTM_FAILURE; + + //if (PARSE_DEBUG) printf("parse_wavecode: custom wave parameter found (name = %s)\n", param->name); + + /* integer value (boolean is an integer in C) */ + if ((param->type == P_TYPE_INT) || (param->type == P_TYPE_BOOL)) { + if ((parse_int(fs, (int*)&init_val.int_val)) == PROJECTM_PARSE_ERROR) { + //if (PARSE_DEBUG) printf("parse_wavecode: error parsing integer!\n"); + return PROJECTM_PARSE_ERROR; + } + } + + /* float value */ + else if (param->type == P_TYPE_DOUBLE) { + if ((parse_float(fs, (float*)&init_val.float_val)) == PROJECTM_PARSE_ERROR) { + //if (PARSE_DEBUG) printf("parse_wavecode: error parsing float!\n"); + return PROJECTM_PARSE_ERROR; + } + } + + /* Unknown value */ + else { + //if (PARSE_DEBUG) printf("parse_wavecode: unknown parameter type!\n"); + return PROJECTM_PARSE_ERROR; + } + + /* Create new initial condition */ + if ((init_cond = new_init_cond(param, init_val)) == NULL) { + //if (PARSE_DEBUG) printf("parse_wavecode: new_init_cond failed!\n"); + return PROJECTM_FAILURE; + } + + if (splay_insert(init_cond, param->name, custom_wave->init_cond_tree) < 0) { + free_init_cond(init_cond); + return PROJECTM_PARSE_ERROR; + } + + line_mode = CUSTOM_WAVE_WAVECODE_LINE_MODE; + + //if (PARSE_DEBUG) printf("parse_wavecode: [success]\n"); + return PROJECTM_SUCCESS; +} + +int parse_shapecode(char * token, FILE * fs, preset_t * preset) { + + char * var_string; + init_cond_t * init_cond; + custom_shape_t * custom_shape; + int id; + value_t init_val; + param_t * param; + + /* Null argument checks */ + if (preset == NULL) + return PROJECTM_FAILURE; + if (fs == NULL) + return PROJECTM_FAILURE; + if (token == NULL) + return PROJECTM_FAILURE; + + /* token should be in the form shapecode_N_var, such as shapecode_1_samples */ + + /* Get id and variable name from token string */ + if (parse_shapecode_prefix(token, &id, &var_string) < 0) + return PROJECTM_PARSE_ERROR; + + last_custom_shape_id = id; + + //if (PARSE_DEBUG) printf("parse_shapecode: shapecode id = %d, parameter = \"%s\"\n", id, var_string); + + /* Retrieve custom shape information from preset. The 3rd argument + if true creates a custom shape if one does not exist */ + if ((custom_shape = find_custom_shape(id, preset, TRUE)) == NULL) { + //if (PARSE_DEBUG) printf("parse_shapecode: failed to load (or create) custom shape (id = %d)!\n", id); + return PROJECTM_FAILURE; + } + //if (PARSE_DEBUG) printf("parse_shapecode: custom shape found (id = %d)\n", custom_shape->id); + + /* Retrieve parameter from this custom shapes parameter db */ + if ((param = find_param_db(var_string, custom_shape->param_tree, TRUE)) == NULL) { + //if (PARSE_DEBUG) printf("parse_shapecode: failed to create parameter.\n"); + return PROJECTM_FAILURE; + } + //if (PARSE_DEBUG) printf("parse_shapecode: custom shape parameter found (name = %s)\n", param->name); + + /* integer value (boolean is an integer in C) */ + if ((param->type == P_TYPE_INT) || (param->type == P_TYPE_BOOL)) { + if ((parse_int(fs, (int*)&init_val.int_val)) == PROJECTM_PARSE_ERROR) { + //if (PARSE_DEBUG) printf("parse_shapecode: error parsing integer!\n"); + return PROJECTM_PARSE_ERROR; + } + } + + /* float value */ + else if (param->type == P_TYPE_DOUBLE) { + if ((parse_float(fs, (float*)&init_val.float_val)) == PROJECTM_PARSE_ERROR) { + //if (PARSE_DEBUG) printf("parse_shapecode: error parsing float!\n"); + return PROJECTM_PARSE_ERROR; + } + } + + /* Unknown value */ + else { + //if (PARSE_DEBUG) printf("parse_shapecode: unknown parameter type!\n"); + return PROJECTM_PARSE_ERROR; + } + + /* Create new initial condition */ + if ((init_cond = new_init_cond(param, init_val)) == NULL) { + //if (PARSE_DEBUG) printf("parse_shapecode: new_init_cond failed!\n"); + return PROJECTM_FAILURE; + } + + if (splay_insert(init_cond, param->name, custom_shape->init_cond_tree) < 0) { + free_init_cond(init_cond); + //if (PARSE_DEBUG) printf("parse_shapecode: initial condition already set, not reinserting it (param = \"%s\")\n", param->name); + return PROJECTM_PARSE_ERROR; + } + line_mode = CUSTOM_SHAPE_SHAPECODE_LINE_MODE; + + //if (PARSE_DEBUG) printf("parse_shapecode: [success]\n"); + return PROJECTM_SUCCESS; +} + + +int parse_wavecode_prefix(char * token, int * id, char ** var_string) { + + int len, i, j; + + if (token == NULL) + return PROJECTM_FAILURE; + /* + if (*var_string == NULL) + return PROJECTM_FAILURE; + */ + if (id == NULL) + return PROJECTM_FAILURE; + + len = strlen(token); + + /* Move pointer passed "wavecode_" prefix */ + if (len <= WAVECODE_STRING_LENGTH) + return PROJECTM_FAILURE; + i = WAVECODE_STRING_LENGTH; + j = 0; + (*id) = 0; + + /* This loop grabs the integer id for this custom wave */ + while ((i < len) && (token[i] >= 48) && (token[i] <= 57)) { + if (j >= MAX_TOKEN_SIZE) + return PROJECTM_FAILURE; + + (*id) = 10*(*id) + (token[i]-48); + j++; + i++; + } + + + if (i > (len - 2)) + return PROJECTM_FAILURE; + + *var_string = token + i + 1; + + return PROJECTM_SUCCESS; + +} + + +int parse_shapecode_prefix(char * token, int * id, char ** var_string) { + + int len, i, j; + + if (token == NULL) + return PROJECTM_FAILURE; + /* + if (*var_string == NULL) + return PROJECTM_FAILURE; + */ + if (id == NULL) + return PROJECTM_FAILURE; + + len = strlen(token); + + /* Move pointer passed "shapecode_" prefix */ + if (len <= SHAPECODE_STRING_LENGTH) + return PROJECTM_FAILURE; + i = SHAPECODE_STRING_LENGTH; + j = 0; + (*id) = 0; + + /* This loop grabs the integer id for this custom shape */ + while ((i < len) && (token[i] >= 48) && (token[i] <= 57)) { + if (j >= MAX_TOKEN_SIZE) + return PROJECTM_FAILURE; + + (*id) = 10*(*id) + (token[i]-48); + j++; + i++; + } + + + if (i > (len - 2)) + return PROJECTM_FAILURE; + + *var_string = token + i + 1; + + return PROJECTM_SUCCESS; + +} + +int parse_wave_prefix(char * token, int * id, char ** eqn_string) { + + int len, i, j; + + if (token == NULL) + return PROJECTM_FAILURE; + if (eqn_string == NULL) + return PROJECTM_FAILURE; + if (id == NULL) + return PROJECTM_FAILURE; + + len = strlen(token); + + if (len <= WAVE_STRING_LENGTH) + return PROJECTM_FAILURE; + + + i = WAVE_STRING_LENGTH; + j = 0; + (*id) = 0; + + /* This loop grabs the integer id for this custom wave */ + while ((i < len) && (token[i] >= 48) && (token[i] <= 57)) { + if (j >= MAX_TOKEN_SIZE) + return PROJECTM_FAILURE; + + (*id) = 10*(*id) + (token[i]-48); + j++; + i++; + } + + if (i > (len - 2)) + return PROJECTM_FAILURE; + + *eqn_string = token + i + 1; + + if (PARSE_DEBUG) printf("parse_wave_prefix: prefix = %s\n (LINE %d)", *eqn_string, line_count); + return PROJECTM_SUCCESS; + +} + +int parse_shape_prefix(char * token, int * id, char ** eqn_string) { + + int len, i, j; + + if (token == NULL) + return PROJECTM_FAILURE; + if (eqn_string == NULL) + return PROJECTM_FAILURE; + if (id == NULL) + return PROJECTM_FAILURE; + + len = strlen(token); + + if (len <= SHAPE_STRING_LENGTH) + return PROJECTM_FAILURE; + + + i = SHAPE_STRING_LENGTH; + j = 0; + (*id) = 0; + + /* This loop grabs the integer id for this custom wave */ + while ((i < len) && (token[i] >= 48) && (token[i] <= 57)) { + if (j >= MAX_TOKEN_SIZE) + return PROJECTM_FAILURE; + + (*id) = 10*(*id) + (token[i]-48); + j++; + i++; + } + + if (i > (len - 2)) + return PROJECTM_FAILURE; + + *eqn_string = token + i + 1; + + return PROJECTM_SUCCESS; + +} + +/* Parses custom wave equations */ +int parse_wave(char * token, FILE * fs, preset_t * preset) { + + int id; + char * eqn_type; + + if (PARSE_DEBUG) printf("parse_wave:begin\n"); + + if (token == NULL) + return PROJECTM_FAILURE; + if (fs == NULL) + return PROJECTM_FAILURE; + if (preset == NULL) + return PROJECTM_FAILURE; + + /* Grab custom wave id and equation type (per frame or per point) from string token */ + if (parse_wave_prefix(token, &id, &eqn_type) < 0) { + if (PARSE_DEBUG) printf("parse_wave: syntax error in custom wave prefix!\n"); + return PROJECTM_FAILURE; + } + + int last_custom_wave_id = id; + strncpy(last_eqn_type, eqn_type, MAX_TOKEN_SIZE); + + return parse_wave_helper(fs, preset, id, eqn_type, 0); + +} + +int parse_wave_helper(FILE * fs, struct PRESET_T * preset, int id, char * eqn_type, char * init_string) { + + param_t * param; + gen_expr_t * gen_expr; + char string[MAX_TOKEN_SIZE]; + per_frame_eqn_t * per_frame_eqn; + custom_wave_t * custom_wave; + init_cond_t * init_cond; + + /* Retrieve custom wave associated with this id */ + if ((custom_wave = find_custom_wave(id, preset, TRUE)) == NULL) { + if (PARSE_DEBUG) printf("parse_wave_helper: custom wave id %d not found!\n", id); + return PROJECTM_FAILURE; + } + + /* per frame init equation case */ + if (!strncmp(eqn_type, WAVE_INIT_STRING, WAVE_INIT_STRING_LENGTH)) { + + if (PARSE_DEBUG) printf("parse_wave_helper (per frame init): [begin] (LINE %d)\n", line_count); + + /* Parse the per frame init equation */ + if ((init_cond = parse_per_frame_init_eqn(fs, preset, custom_wave->param_tree)) == NULL) { + if (PARSE_DEBUG) printf("parse_wave_helper (per frame init): equation parsing failed (LINE %d)\n", line_count); + return PROJECTM_PARSE_ERROR; + } + + /* Insert the equation in the per frame equation tree */ + if (splay_insert(init_cond, init_cond->param->name, custom_wave->per_frame_init_eqn_tree) < 0) { + if (PARSE_DEBUG) printf("parse_wave_helper (per frame init): failed to add equation (ERROR)\n"); + free_init_cond(init_cond); /* will free the gen expr too */ + return PROJECTM_FAILURE; + } + + if (update_string_buffer(custom_wave->per_frame_init_eqn_string_buffer, + &custom_wave->per_frame_init_eqn_string_index) < 0) { + if (PARSE_DEBUG) printf("parse_wave_helper: failed to update string buffer (LINE %d)\n", line_count); + return PROJECTM_FAILURE; + } + line_mode = CUSTOM_WAVE_PER_FRAME_INIT_LINE_MODE; + + return PROJECTM_SUCCESS; + + } + + /* per frame equation case */ + if (!strncmp(eqn_type, PER_FRAME_STRING_NO_UNDERSCORE, PER_FRAME_STRING_NO_UNDERSCORE_LENGTH)) { + + if (PARSE_DEBUG) printf("parse_wave_helper (per_frame): [start] (custom wave id = %d)\n", custom_wave->id); + + if (parseToken(fs, string) != tEq) { + //if (PARSE_DEBUG) printf("parse_wave (per_frame): no equal sign after string \"%s\" (LINE %d)\n", string, line_count); + return PROJECTM_PARSE_ERROR; + } + + /* Find the parameter associated with the string in the custom wave database */ + if ((param = find_param_db(string, custom_wave->param_tree, TRUE)) == NULL) { + //if (PARSE_DEBUG) printf("parse_wave (per_frame): parameter \"%s\" not found or cannot be wipemalloc'ed!!\n", string); + return PROJECTM_FAILURE; + } + + + /* Make sure parameter is writable */ + if (param->flags & P_FLAG_READONLY) { + //if (PARSE_DEBUG) printf("parse_wave (per_frame): parameter %s is marked as read only (LINE %d)\n", param->name, line_count); + return PROJECTM_FAILURE; + } + + /* Parse right side of equation as an expression */ + + current_wave = custom_wave; + if ((gen_expr = parse_gen_expr(fs, NULL, preset)) == NULL) { + //if (PARSE_DEBUG) printf("parse_wave (per_frame): equation evaluated to null (LINE %d)\n", line_count); + current_wave = NULL; + return PROJECTM_PARSE_ERROR; + + } + + current_wave = NULL; + + //if (PARSE_DEBUG) printf("parse_wave (per_frame): [finished parsing equation] (LINE %d)\n", line_count); + + /* Create a new per frame equation */ + if ((per_frame_eqn = new_per_frame_eqn(custom_wave->per_frame_count++, param, gen_expr)) == NULL) { + //if (PARSE_DEBUG) printf("parse_wave (per_frame): failed to create a new per frame eqn, out of memory?\n"); + free_gen_expr(gen_expr); + return PROJECTM_FAILURE; + } + + if (splay_insert(per_frame_eqn, &per_frame_eqn->index, custom_wave->per_frame_eqn_tree) < 0) { + free_per_frame_eqn(per_frame_eqn); + return PROJECTM_FAILURE; + } + + //if (PARSE_DEBUG) printf("parse_wave (per_frame): equation %d associated with custom wave %d [success]\n", + // per_frame_eqn->index, custom_wave->id); + + + /* Need to add stuff to string buffer so the editor can read the equations. + Why not make a nice little helper function for this? - here it is: */ + + if (update_string_buffer(custom_wave->per_frame_eqn_string_buffer, &custom_wave->per_frame_eqn_string_index) < 0) + return PROJECTM_FAILURE; + + line_mode = CUSTOM_WAVE_PER_FRAME_LINE_MODE; + return PROJECTM_SUCCESS; + } + + + /* per point equation case */ + if (!strncmp(eqn_type, PER_POINT_STRING, PER_POINT_STRING_LENGTH)) { + + if (PARSE_DEBUG) printf("parse_wave_helper (per_point): per_pixel equation parsing start...(LINE %d)\n", line_count); + + /// HACK the parse_line code already parsed the per_pixel variable name. This handles that case + /// Parser needs reworked. Don't have time for it. So this is the result. + if (init_string) + strncpy(string, init_string, strlen(init_string)); + else { + if (parseToken(fs, string) != tEq) { /* parse per pixel operator name */ + if (PARSE_DEBUG) printf("parse_wave_helper (per_point): equal operator missing after per pixel operator. Last token = \"%s\" (LINE %d)\n", string, line_count); + + return PROJECTM_PARSE_ERROR; + } + } + + /* Parse right side of equation as an expression */ + current_wave = custom_wave; + if ((gen_expr = parse_gen_expr(fs, NULL, preset)) == NULL) { + if (PARSE_DEBUG) printf("parse_wave_helper (per_point): equation evaluated to null? (LINE %d)\n", line_count); + + return PROJECTM_PARSE_ERROR; + } + current_wave = NULL; + + /* Add the per point equation */ + if (add_per_point_eqn(string, gen_expr, custom_wave) < 0) { + free_gen_expr(gen_expr); + + return PROJECTM_PARSE_ERROR; + } + + + if (update_string_buffer(custom_wave->per_point_eqn_string_buffer, &custom_wave->per_point_eqn_string_index) < 0) + return PROJECTM_FAILURE; + + line_mode = CUSTOM_WAVE_PER_POINT_LINE_MODE; + if (PARSE_DEBUG) printf("parse_wave_helper (per_point): [finished] (custom wave id = %d)\n", custom_wave->id); + return PROJECTM_SUCCESS; + } + + return PROJECTM_FAILURE; +} + +/* Parses custom shape equations */ +int parse_shape(char * token, FILE * fs, preset_t * preset) { + + int id; + char * eqn_type; + char string[MAX_TOKEN_SIZE]; + custom_shape_t * custom_shape; + init_cond_t * init_cond; + + if (token == NULL) + + return PROJECTM_FAILURE; + if (fs == NULL) + return PROJECTM_FAILURE; + if (preset == NULL) + return PROJECTM_FAILURE; + + /* Grab custom shape id and equation type (per frame or per point) from string token */ + if (parse_shape_prefix(token, &id, &eqn_type) < 0) { + //if (PARSE_DEBUG) printf("parse_shape: syntax error in custom shape prefix!\n"); + return PROJECTM_PARSE_ERROR; + } + + /* Retrieve custom shape associated with this id */ + if ((custom_shape = find_custom_shape(id, preset, TRUE)) == NULL) + return PROJECTM_FAILURE; + + + /* per frame init equation case */ + if (!strncmp(eqn_type, SHAPE_INIT_STRING, SHAPE_INIT_STRING_LENGTH)) { + return parse_shape_per_frame_init_eqn(fs, custom_shape, preset); + } + + /* per frame equation case */ + if (!strncmp(eqn_type, PER_FRAME_STRING_NO_UNDERSCORE, PER_FRAME_STRING_NO_UNDERSCORE_LENGTH)) { + return parse_shape_per_frame_eqn(fs, custom_shape, preset); + } + + + /* Syntax error, return parse error */ + return PROJECTM_PARSE_ERROR; +} + +/* Helper function to update the string buffers used by the editor */ +int update_string_buffer(char * buffer, int * index) { + + int string_length; + int skip_size; + + if (!buffer) + return PROJECTM_FAILURE; + if (!index) + return PROJECTM_FAILURE; + + + /* If the string line buffer used by the parser is already full then quit */ + if (string_line_buffer_index == (STRING_LINE_SIZE-1)) + return PROJECTM_FAILURE; + + if ((skip_size = get_string_prefix_len(string_line_buffer)) == PROJECTM_FAILURE) + return PROJECTM_FAILURE; + + string_line_buffer[string_line_buffer_index++] = '\n'; + + // string_length = strlen(string_line_buffer + strlen(eqn_string)+1); + if (skip_size >= STRING_LINE_SIZE) + return PROJECTM_FAILURE; + + string_length = strlen(string_line_buffer + skip_size); + + if (skip_size > (STRING_LINE_SIZE-1)) + return PROJECTM_FAILURE; + + /* Add line to string buffer */ + strncpy(buffer + (*index), + string_line_buffer + skip_size, string_length); + + /* Buffer full, quit */ + if ((*index) > (STRING_BUFFER_SIZE - 1)) { + //if (PARSE_DEBUG) printf("update_string_buffer: string buffer full!\n"); + return PROJECTM_FAILURE; + } + + /* Otherwise, increment string index by the added string length */ + (*index)+=string_length; + + return PROJECTM_SUCCESS; + +} + + +/* Helper function: returns the length of the prefix portion in the line + buffer (the passed string here). In other words, given + the string 'per_frame_1 = x = ....', return the length of 'per_frame_1 = ' + Returns -1 if syntax error +*/ + +int get_string_prefix_len(char * string) { + + int i = 0; + + /* Null argument check */ + if (string == NULL) + return PROJECTM_FAILURE; + + + /* First find the equal sign */ + while (string[i] != '=') { + if (string[i] == 0) + return PROJECTM_FAILURE; + i++; + } + + /* If the string already ends at the next char then give up */ + if (string[i+1] == 0) + return PROJECTM_FAILURE; + + /* Move past the equal sign */ + i++; + + /* Now found the start of the LHS variable, ie skip the spaces */ + while(string[i] == ' ') { + i++; + } + + /* If this is the end of the string then its a syntax error */ + if (string[i] == 0) + return PROJECTM_FAILURE; + + /* Finished succesfully, return the length */ + return i; +} + +int parse_shape_per_frame_init_eqn(FILE * fs, custom_shape_t * custom_shape, struct PRESET_T * preset) { + init_cond_t * init_cond; + + //if (PARSE_DEBUG) printf("parse_shape (per frame init): [begin] (LINE %d)\n", line_count); + + /* Parse the per frame equation */ + if ((init_cond = parse_per_frame_init_eqn(fs, preset, custom_shape->param_tree)) == NULL) { + //if (PARSE_DEBUG) printf("parse_shape (per frame init): equation parsing failed (LINE %d)\n", line_count); + return PROJECTM_PARSE_ERROR; + } + + /* Insert the equation in the per frame equation tree */ + if (splay_insert(init_cond, init_cond->param->name, custom_shape->per_frame_init_eqn_tree) < 0) { + //if (PARSE_DEBUG) printf("parse_shape (per frame init): failed to add equation (ERROR)\n"); + free_init_cond(init_cond); /* will free the gen expr too */ + return PROJECTM_PARSE_ERROR; + } + + if (update_string_buffer(custom_shape->per_frame_init_eqn_string_buffer, + &custom_shape->per_frame_init_eqn_string_index) < 0) + return PROJECTM_FAILURE; + + line_mode = CUSTOM_SHAPE_PER_FRAME_INIT_LINE_MODE; + return PROJECTM_SUCCESS; + } + +int parse_shape_per_frame_eqn(FILE * fs, custom_shape_t * custom_shape, struct PRESET_T * preset) { + +param_t * param; +gen_expr_t * gen_expr; +per_frame_eqn_t * per_frame_eqn; + +char string[MAX_TOKEN_SIZE]; + +//if (PARSE_DEBUG) printf("parse_shape (per_frame): [start] (custom shape id = %d)\n", custom_shape->id); + + if (parseToken(fs, string) != tEq) { + //if (PARSE_DEBUG) printf("parse_shape (per_frame): no equal sign after string \"%s\" (LINE %d)\n", string, line_count); + return PROJECTM_PARSE_ERROR; + } + + /* Find the parameter associated with the string in the custom shape database */ + if ((param = find_param_db(string, custom_shape->param_tree, TRUE)) == NULL) { + //if (PARSE_DEBUG) printf("parse_shape (per_frame): parameter \"%s\" not found or cannot be wipemalloc'ed!!\n", string); + return PROJECTM_FAILURE; + } + + + /* Make sure parameter is writable */ + if (param->flags & P_FLAG_READONLY) { + //if (PARSE_DEBUG) printf("parse_shape (per_frame): parameter %s is marked as read only (LINE %d)\n", param->name, line_count); + return PROJECTM_FAILURE; + } + + /* Parse right side of equation as an expression */ + + current_shape = custom_shape; + if ((gen_expr = parse_gen_expr(fs, NULL, preset)) == NULL) { + //if (PARSE_DEBUG) printf("parse_shape (per_frame): equation evaluated to null (LINE %d)\n", line_count); + current_shape = NULL; + return PROJECTM_PARSE_ERROR; + } + + current_shape = NULL; + + //if (PARSE_DEBUG) printf("parse_shape (per_frame): [finished parsing equation] (LINE %d)\n", line_count); + + /* Create a new per frame equation */ + if ((per_frame_eqn = new_per_frame_eqn(custom_shape->per_frame_count++, param, gen_expr)) == NULL) { + //if (PARSE_DEBUG) printf("parse_shape (per_frame): failed to create a new per frame eqn, out of memory?\n"); + free_gen_expr(gen_expr); + return PROJECTM_FAILURE; + } + + if (splay_insert(per_frame_eqn, &per_frame_eqn->index, custom_shape->per_frame_eqn_tree) < 0) { + free_per_frame_eqn(per_frame_eqn); + return PROJECTM_FAILURE; + } + + //if (PARSE_DEBUG) printf("parse_shape (per_frame): equation %d associated with custom shape %d [success]\n", + // per_frame_eqn->index, custom_shape->id); + + + /* Need to add stuff to string buffer so the editor can read the equations. + Why not make a nice little helper function for this? - here it is: */ + + if (update_string_buffer(custom_shape->per_frame_eqn_string_buffer, &custom_shape->per_frame_eqn_string_index) < 0) + return PROJECTM_FAILURE; + + line_mode = CUSTOM_SHAPE_PER_FRAME_LINE_MODE; + return PROJECTM_SUCCESS; +} + +int parse_wave_per_frame_eqn(FILE * fs, custom_wave_t * custom_wave, struct PRESET_T * preset) { + +param_t * param; +gen_expr_t * gen_expr; +per_frame_eqn_t * per_frame_eqn; + +char string[MAX_TOKEN_SIZE]; + +//if (PARSE_DEBUG) printf("parse_shape (per_frame): [start] (custom shape id = %d)\n", custom_shape->id); + + if (parseToken(fs, string) != tEq) { + //if (PARSE_DEBUG) printf("parse_shape (per_frame): no equal sign after string \"%s\" (LINE %d)\n", string, line_count); + return PROJECTM_PARSE_ERROR; + } + + /* Find the parameter associated with the string in the custom shape database */ + if ((param = find_param_db(string, custom_wave->param_tree, TRUE)) == NULL) { + //if (PARSE_DEBUG) printf("parse_shape (per_frame): parameter \"%s\" not found or cannot be wipemalloc'ed!!\n", string); + return PROJECTM_FAILURE; + } + + + /* Make sure parameter is writable */ + if (param->flags & P_FLAG_READONLY) { + //if (PARSE_DEBUG) printf("parse_shape (per_frame): parameter %s is marked as read only (LINE %d)\n", param->name, line_count); + return PROJECTM_FAILURE; + } + + /* Parse right side of equation as an expression */ + + current_wave = custom_wave; + if ((gen_expr = parse_gen_expr(fs, NULL, preset)) == NULL) { + //if (PARSE_DEBUG) printf("parse_shape (per_frame): equation evaluated to null (LINE %d)\n", line_count); + current_wave = NULL; + return PROJECTM_PARSE_ERROR; + } + + current_wave = NULL; + + //if (PARSE_DEBUG) printf("parse_shape (per_frame): [finished parsing equation] (LINE %d)\n", line_count); + + /* Create a new per frame equation */ + if ((per_frame_eqn = new_per_frame_eqn(custom_wave->per_frame_count++, param, gen_expr)) == NULL) { + //if (PARSE_DEBUG) printf("parse_shape (per_frame): failed to create a new per frame eqn, out of memory?\n"); + free_gen_expr(gen_expr); + return PROJECTM_FAILURE; + } + + if (splay_insert(per_frame_eqn, &per_frame_eqn->index, custom_wave->per_frame_eqn_tree) < 0) { + free_per_frame_eqn(per_frame_eqn); + return PROJECTM_FAILURE; + } + + //if (PARSE_DEBUG) printf("parse_shape (per_frame): equation %d associated with custom shape %d [success]\n", + // per_frame_eqn->index, custom_shape->id); + + + /* Need to add stuff to string buffer so the editor can read the equations. + Why not make a nice little helper function for this? - here it is: */ + + if (update_string_buffer(custom_wave->per_frame_eqn_string_buffer, &custom_wave->per_frame_eqn_string_index) < 0) + return PROJECTM_FAILURE; + + line_mode = CUSTOM_WAVE_PER_FRAME_LINE_MODE; + return PROJECTM_SUCCESS; +} diff --git a/libprojectM/src/parser.h b/libprojectM/src/parser.h new file mode 100755 index 000000000..9b53d8b7b --- /dev/null +++ b/libprojectM/src/parser.h @@ -0,0 +1,53 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _PARSER_H +#define _PARSER_H + +#define PARSE_DEBUG 0 +#include "expr_types.h" +#include "per_frame_eqn_types.h" +#include "init_cond_types.h" +#include "preset_types.h" + +per_frame_eqn_t * parse_per_frame_eqn(FILE * fs, int index, struct PRESET_T * preset); +int parse_per_pixel_eqn(FILE * fs, preset_t * preset, char * init_string); +init_cond_t * parse_init_cond(FILE * fs, char * name, struct PRESET_T * preset); +int parse_preset_name(FILE * fs, char * name); +int parse_top_comment(FILE * fs); +int parse_line(FILE * fs, struct PRESET_T * preset); + +typedef enum { + NORMAL_LINE_MODE, + PER_FRAME_LINE_MODE, + PER_PIXEL_LINE_MODE, + PER_FRAME_INIT_LINE_MODE, + INIT_COND_LINE_MODE, + CUSTOM_WAVE_PER_POINT_LINE_MODE, + CUSTOM_WAVE_PER_FRAME_LINE_MODE, + CUSTOM_WAVE_WAVECODE_LINE_MODE, + CUSTOM_SHAPE_SHAPECODE_LINE_MODE, + CUSTOM_SHAPE_PER_FRAME_LINE_MODE, + CUSTOM_SHAPE_PER_FRAME_INIT_LINE_MODE, + CUSTOM_WAVE_PER_FRAME_INIT_LINE_MODE +} line_mode_t; + +#endif /** !_PARSER_H */ diff --git a/libprojectM/src/pbuffer.cc b/libprojectM/src/pbuffer.cc new file mode 100755 index 000000000..f22f1bdd9 --- /dev/null +++ b/libprojectM/src/pbuffer.cc @@ -0,0 +1,401 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/** + * $Id: pbuffer.c,v 1.1.1.1 2005/12/23 18:05:00 psperl Exp $ + * + * Render target methods + */ + +#include +//#include +#include "pbuffer.h" + +#ifdef MACOS +#include +#endif /** MACOS */ + + +#ifdef DEBUG +extern FILE *debugFile; +#endif /** DEBUG */ + + + +/** Creates new pbuffers */ +void createPBuffers( int width, int height, RenderTarget *target ) { + + int mindim = 0; + int origtexsize = 0; + +#ifdef LINUX + + if(target->usePbuffers) + { + glGenTextures( 1, &target->textureID[0] ); + + glBindTexture( GL_TEXTURE_2D, target->textureID[0] ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + target->texsize,target->texsize, + 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); + + return; + } + +#endif + +#ifdef MACOS +#ifdef MACOSX_10_3 + /** PBuffers are only supported in MacOS X 10.3+ */ + AGLPbuffer pbuffer, pbuffer2; + AGLPixelFormat pixelFormat; + AGLContext context; + GLint attrib[] = + { AGL_RGBA, AGL_PIXEL_SIZE, 32, AGL_ACCELERATED, AGL_NONE }; + + pixelFormat = aglChoosePixelFormat( NULL, 0, attrib ); + if ( pixelFormat == NULL ) { + + goto fallback; + } else { + + } + + /** Fetch the original context for rendering directly */ + /** Only AGL can be used, otherwise, it'll fall back to texhack */ + /** Try AGL first */ + target->origContext = (void *)aglGetCurrentContext(); + if ( target->origContext == NULL ) { + /** Try NSGL */ +// target->origContext = (void *)nsglGetCurrentContext(); + target->origContext = NULL; + if ( target->origContext == NULL ) { + /** Try CGL */ + target->origContext = (void *)CGLGetCurrentContext(); + if ( target->origContext != NULL ) { + target->origContext = NULL; + target->origContextType = CGL_CONTEXT; + } + } else { + target->origContext = NULL; + target->origContextType = NSGL_CONTEXT; + } + } else { + target->origContextType = AGL_CONTEXT; + } + + /** + * If we can't stash the original context for switching, don't use + * pbuffers + */ + if ( target->origContext == NULL ) { + + goto fallback; + } else { + + } + + context = aglCreateContext( pixelFormat, target->origContext ); + if ( context == NULL ) { + + aglDestroyPixelFormat( pixelFormat ); + goto fallback; + } else { + aglDestroyPixelFormat( pixelFormat ); + + } + + /** Stash the context and pbuffer */ + target->pbufferContext = (void *)context; + + /** Create the pass1 pbuffer */ + aglCreatePBuffer( target->texsize, target->texsize, GL_TEXTURE_2D, + GL_RGBA, 0, &pbuffer ); + if ( pbuffer == NULL ) { + + } else { + target->pbuffer = pbuffer; + + } + + /** Finally, bind the target texture ID */ + aglSetCurrentContext( target->origContext ); + glGenTextures( 2, &target->textureID[0] ); + + glBindTexture( GL_TEXTURE_2D, target->textureID[0] ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST ); + + if ( aglTexImagePBuffer( target->origContext, target->pbuffer, GL_FRONT ) == 0 ) { + + } + glBindTexture( GL_TEXTURE_2D, 0 ); + + glBindTexture( GL_TEXTURE_2D, target->textureID[1] ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); + glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); + glTexImage2D(GL_TEXTURE_2D, + 0, + GL_RGB, + target->texsize, target->texsize, + 0, + GL_RGB, + GL_UNSIGNED_BYTE, + NULL); + glBindTexture( GL_TEXTURE_2D, 0 ); + + glBindTexture( GL_TEXTURE_2D, target->textureID[0] ); + + return; + +#endif /** MACOSX_10_3 */ + + goto fallback; + +#else +#endif /** !MACOS */ + + /** Successful creation */ + // return; + +fallback: +#ifdef DEBUG + if ( debugFile != NULL ) { + fprintf( debugFile, "using teximage hack fallback\n" ); + fflush( debugFile ); + } +#endif + + /** Fallback pbuffer creation via teximage hack */ + /** Check the texture size against the viewport size */ + /** If the viewport is smaller, then we'll need to scale the texture size down */ + /** If the viewport is larger, scale it up */ + mindim = width < height ? width : height; + origtexsize = target->texsize; + target->texsize = nearestPower2( mindim, SCALE_MINIFY ); + + /* Create the texture that will be bound to the render target */ + if ( glIsTexture( target->textureID[0] ) ) { +#ifdef DEBUG + if ( debugFile != NULL ) { + fprintf( debugFile, "texture already exists\n" ); + fflush( debugFile ); + } +#endif + if ( target->texsize != origtexsize ) { +#ifdef DEBUG + if ( debugFile != NULL ) { + fprintf( debugFile, "deleting existing texture due to resize\n" ); + fflush( debugFile ); + } +#endif + glDeleteTextures( 1, &target->textureID[0] ); + } + } + + if ( !glIsTexture( target->textureID[0] ) ) { + glGenTextures(1, &target->textureID[0] ); + +#ifdef DEBUG + if ( debugFile != NULL ) { + fprintf( debugFile, "allocate texture: %d\ttexsize: %d x %d\n", + target->textureID[0], target->texsize, target->texsize ); + fflush( debugFile ); + } +#endif + glBindTexture(GL_TEXTURE_2D, target->textureID[0] ); + //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + + glTexImage2D(GL_TEXTURE_2D, + 0, + 3, + target->texsize, target->texsize, + 0, + GL_RGB, + GL_UNSIGNED_BYTE, + NULL); + } + return; + } + +/** Destroys the pbuffer */ + +/** Locks the pbuffer */ +void lockPBuffer( RenderTarget *target, PBufferPass pass ) { + +#ifdef LINUX + if(target->usePbuffers) + { + void (*lock)(void)= NULL; + lock=target->lock_func; + (*lock)(); + } + +#endif + +#ifdef MACOS + if ( target->pbufferContext != NULL && + target->pbuffer != NULL ) { + GLint vs; +#ifdef DEBUG + if ( debugFile != NULL ) { + fprintf( debugFile, "-> locking pbuffer: %d\n", pass ); + fflush( debugFile ); + } +#endif + if ( !aglSetCurrentContext( (AGLContext)target->pbufferContext ) ) { +#ifdef DEBUG + if ( debugFile != NULL ) { + fprintf( debugFile, "lockPBuffer(): failed to set context\n" ); + fflush( debugFile ); + } +#endif + } + vs = aglGetVirtualScreen ( (AGLContext)target->origContext ); + if ( pass == PBUFFER_PASS1 ) { + aglSetPBuffer( (AGLContext)target->pbufferContext, (AGLPbuffer)target->pbuffer, 0, 0, vs ); +// glBindTexture( GL_TEXTURE_2D, target->textureID[0] ); + } + } +#endif + } + +/** Unlocks the pbuffer */ +void unlockPBuffer( RenderTarget *target ) { + +#ifdef LINUX + + glCopyTexSubImage2D( GL_TEXTURE_2D,0, 0, 0, 0, 0,target->texsize, target->texsize ); + if(target->usePbuffers) + { + void (*unlock)(void)= NULL; + unlock=target->unlock_func; + (*unlock)(); + + } +return; +#endif + +#ifdef MACOS + if ( target->pbufferContext != NULL && + target->pbuffer != NULL ) { +#ifdef DEBUG + if ( debugFile != NULL ) { + fprintf( debugFile, "<- unlocking pbuffer\n" ); + fflush( debugFile ); + } +#endif + /** Flush the pbuffer */ + glFlush(); + + /** Reset the texture ID to the pbuffer */ + glBindTexture( GL_TEXTURE_2D, target->textureID[0] ); + glBindTexture( GL_TEXTURE_2D, 0 ); + glBindTexture( GL_TEXTURE_2D, target->textureID[1] ); + glCopyTexSubImage2D( GL_TEXTURE_2D, + 0, 0, 0, 0, 0, + target->texsize, target->texsize ); + glBindTexture( GL_TEXTURE_2D, 0 ); + glBindTexture( GL_TEXTURE_2D, target->textureID[0] ); + + /** Reset the OpenGL context to the original context */ + aglSetCurrentContext( NULL ); + if ( target->origContext != NULL ) { + if ( !aglSetCurrentContext( target->origContext ) ) { +#ifdef DEBUG + if ( debugFile != NULL ) { + fprintf( debugFile, "failed to setting origContext current\n" ); + fflush( debugFile ); + } +#endif + } else { +#ifdef DEBUG + if ( debugFile != NULL ) { + fprintf( debugFile, "setting origContext current\n" ); + fflush( debugFile ); + } +#endif + } + } + + + return; + } +#endif + + /** Fallback texture path */ + glCopyTexSubImage2D( GL_TEXTURE_2D, + 0, 0, 0, 0, 0, + target->texsize, target->texsize ); + } + +/** + * Calculates the nearest power of two to the given number using the + * appropriate rule + */ +int nearestPower2( int value, TextureScale scaleRule ) { + + int x = value; + int power = 0; + +#ifdef DEBUG + if ( debugFile != NULL ) { + fprintf( debugFile, "nearestPower2(): %d\n", value ); + fflush( debugFile ); + } +#endif + + while ( ( x & 0x01 ) != 1 ) { + x >>= 1; + } + + if ( x == 1 ) { + return value; + } else { + x = value; + while ( x != 0 ) { + x >>= 1; + power++; + } + switch ( scaleRule ) { + case SCALE_NEAREST: + if ( ( ( 1 << power ) - value ) <= ( value - ( 1 << ( power - 1 ) ) ) ) { + return 1 << power; + } else { + return 1 << ( power - 1 ); + } + case SCALE_MAGNIFY: + return 1 << power; + case SCALE_MINIFY: + return 1 << ( power - 1 ); + default: + break; + } + } + return 0; + } + + diff --git a/libprojectM/src/pbuffer.h b/libprojectM/src/pbuffer.h new file mode 100755 index 000000000..0ad8716ab --- /dev/null +++ b/libprojectM/src/pbuffer.h @@ -0,0 +1,87 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/** + * $Id: pbuffer.h,v 1.1.1.1 2005/12/23 18:05:00 psperl Exp $ + * + * Opaque render target + * + */ + +#ifndef _RENDERTARGET_H +#define _RENDERTARGET_H + +#ifdef MACOS +#include +#endif /** MACOS */ + +#ifdef WIN32 +#include +#include +#endif /** WIN32 */ + +#ifdef LINUX +#include +#include +#endif + +typedef enum { SCALE_NEAREST, SCALE_MAGNIFY, SCALE_MINIFY } TextureScale; +typedef enum { + AGL_CONTEXT, + CGL_CONTEXT, + NSGL_CONTEXT, + GLX_CONTEXT, + WGL_CONTEXT, + } ContextType; + +typedef enum { PBUFFER_PASS1, PBUFFER_PASS2 } PBufferPass; + +typedef struct RENDERTARGET { + + /** Texture size */ + int texsize; + + /** Application context */ + ContextType origContextType; + + int usePbuffers; + +#ifdef LINUX + void (*lock_func)(void); + void (*unlock_func)(void); +#endif + + /** Opaque pbuffer context and pbuffer */ +#ifdef MACOS + void *origContext; + void *pbufferContext; + void *pbuffer; +#endif + + /** Render target texture ID for non-pbuffer systems */ + GLuint textureID[2]; + } RenderTarget; + +extern void createPBuffers( int width, int height, RenderTarget *target ); +extern void lockPBuffer( RenderTarget *target, PBufferPass pass ); +extern void unlockPBuffer( RenderTarget *target ); +extern int nearestPower2( int value, TextureScale scaleRule ); + +#endif /** !_RENDERTARGET_H */ diff --git a/libprojectM/src/per_frame_eqn.cc b/libprojectM/src/per_frame_eqn.cc new file mode 100755 index 000000000..46131a4eb --- /dev/null +++ b/libprojectM/src/per_frame_eqn.cc @@ -0,0 +1,115 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#include +#include +#include + +#include "fatal.h" +#include "common.h" + +#include "param.h" +#include "per_frame_eqn_types.h" +#include "per_frame_eqn.h" + +#include "expr_types.h" +#include "eval.h" + +#include "wipemalloc.h" + +/* Evaluate an equation */ +void eval_per_frame_eqn(per_frame_eqn_t * per_frame_eqn) { + + if (per_frame_eqn == NULL) + return; + + if (PER_FRAME_EQN_DEBUG) { + printf("per_frame_%d=%s= ", per_frame_eqn->index, per_frame_eqn->param->name); + fflush(stdout); + } + + //*((float*)per_frame_eqn->param->engine_val) = eval_gen_expr(per_frame_eqn->gen_expr); + set_param(per_frame_eqn->param, eval_gen_expr(per_frame_eqn->gen_expr)); + if (PER_FRAME_EQN_DEBUG) printf(" = %.4f\n", *((float*)per_frame_eqn->param->engine_val)); + +} + +/* +void eval_per_frame_init_eqn(per_frame_eqn_t * per_frame_eqn) { + + float val; + init_cond_t * init_cond; + if (per_frame_eqn == NULL) + return; + + if (PER_FRAME_EQN_DEBUG) { + printf("per_frame_init: %s = ", per_frame_eqn->param->name); + fflush(stdout); + } + + + val = *((float*)per_frame_eqn->param->engine_val) = eval_gen_expr(per_frame_eqn->gen_expr); + if (PER_FRAME_EQN_DEBUG) printf(" = %f\n", *((float*)per_frame_eqn->param->engine_val)); + + if (per_frame_eqn->param->flags & P_FLAG_QVAR) { + + per_frame_eqn->param->init_val.float_val = val; + if ((init_cond = new_init_cond(per_frame_eqn->param)) == NULL) + return; + + if ((list_append(init_cond_list, init_cond)) < 0) { + free_init_cond(init_cond); + return; + } + } +} +*/ + +/* Frees perframe equation structure */ +void free_per_frame_eqn(per_frame_eqn_t * per_frame_eqn) { + + if (per_frame_eqn == NULL) + return; + + free_gen_expr(per_frame_eqn->gen_expr); + free(per_frame_eqn); + per_frame_eqn = NULL; +} + +/* Create a new per frame equation */ +per_frame_eqn_t * new_per_frame_eqn(int index, param_t * param, gen_expr_t * gen_expr) { + + per_frame_eqn_t * per_frame_eqn; + + per_frame_eqn = (per_frame_eqn_t*)wipemalloc(sizeof(per_frame_eqn_t)); + + if (per_frame_eqn == NULL) + return NULL; + + per_frame_eqn->param = param; + per_frame_eqn->gen_expr = gen_expr; + per_frame_eqn->index = index; + /* Set per frame eqn name */ + // memset(per_frame_eqn->name, 0, MAX_TOKEN_SIZE); + //strncpy(per_frame_eqn->name, name, MAX_TOKEN_SIZE-1); + return per_frame_eqn; + +} diff --git a/libprojectM/src/per_frame_eqn.h b/libprojectM/src/per_frame_eqn.h new file mode 100755 index 000000000..3cbadbadc --- /dev/null +++ b/libprojectM/src/per_frame_eqn.h @@ -0,0 +1,32 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _PER_FRAME_EQN_H +#define _PER_FRAME_EQN_H + +#define PER_FRAME_EQN_DEBUG 0 + +per_frame_eqn_t * new_per_frame_eqn(int index, param_t * param, struct GEN_EXPR_T * gen_expr); +void eval_per_frame_eqn(per_frame_eqn_t * per_frame_eqn); +void free_per_frame_eqn(per_frame_eqn_t * per_frame_eqn); +void eval_per_frame_init_eqn(per_frame_eqn_t * per_frame_eqn); + +#endif /** !_PER_FRAME_EQN_H */ diff --git a/libprojectM/src/per_frame_eqn_types.h b/libprojectM/src/per_frame_eqn_types.h new file mode 100755 index 000000000..9986a405d --- /dev/null +++ b/libprojectM/src/per_frame_eqn_types.h @@ -0,0 +1,34 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _PER_FRAME_EQN_TYPES_H +#define _PER_FRAME_EQN_TYPES_H + +#include "param_types.h" +#include "expr_types.h" + +typedef struct PER_FRAME_EQN_T { + int index; + struct PARAM_T * param; /* parameter to be assigned a value */ + struct GEN_EXPR_T * gen_expr; /* expression that paremeter is equal to */ +} per_frame_eqn_t; + +#endif /** !_PER_FRAME_EQN_TYPES_H */ diff --git a/libprojectM/src/per_pixel_eqn.cc b/libprojectM/src/per_pixel_eqn.cc new file mode 100755 index 000000000..beb962912 --- /dev/null +++ b/libprojectM/src/per_pixel_eqn.cc @@ -0,0 +1,233 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#include +#include +#include + +#include "projectM.h" + +#include "fatal.h" +#include "common.h" + +#include "expr_types.h" +#include "eval.h" + +#include "splaytree_types.h" +#include "splaytree.h" + +#include "param_types.h" +#include "param.h" + +#include "per_pixel_eqn.h" +#include "per_pixel_eqn_types.h" + +#include "wipemalloc.h" + +extern preset_t *active_preset; +extern projectM_t *PM; +extern int mesh_i; +extern int mesh_j; + +/* Evaluates a per pixel equation */ +void evalPerPixelEqn( per_pixel_eqn_t * per_pixel_eqn) { + + float ** param_matrix = NULL; + gen_expr_t * eqn_ptr = NULL; + int x,y; + + eqn_ptr = per_pixel_eqn->gen_expr; + if (per_pixel_eqn->param->matrix == NULL) { + if (PER_PIXEL_EQN_DEBUG) printf("evalPerPixelEqn: [begin initializing matrix] (index = %d) (name = %s)\n", + per_pixel_eqn->index, per_pixel_eqn->param->name); + + param_matrix = (float**)wipemalloc(PM->gx*sizeof(float*)); + per_pixel_eqn->param->matrix = param_matrix; + + for(x = 0; x < PM->gx; x++) + param_matrix[x] = (float *)wipemalloc(PM->gy * sizeof(float)); + + for (x = 0; x < PM->gx; x++) + for (y = 0; y < PM->gy; y++) + param_matrix[x][y] = 0.0; + + if (per_pixel_eqn->param->name == NULL) + printf("null parameter?\n"); + + // printf("PARAM MATRIX: \"%s\" initialized.\n", per_pixel_eqn->param->name); + } + else + param_matrix = (float**)per_pixel_eqn->param->matrix; + + if (eqn_ptr == NULL || param_matrix == NULL ) + printf("something is seriously wrong...\n"); + for (mesh_i = 0; mesh_i < PM->gx; mesh_i++) { + for (mesh_j = 0; mesh_j < PM->gy; mesh_j++) { + param_matrix[mesh_i][mesh_j] = eval_gen_expr(eqn_ptr); + } + } + + /* Now that this parameter has been referenced with a per + pixel equation, we let the evaluator know by setting + this flag */ + per_pixel_eqn->param->matrix_flag = 1; + per_pixel_eqn->param->flags |= P_FLAG_PER_PIXEL; +} + + void evalPerPixelEqns(preset_t *preset) { + + /* Evaluate all per pixel equations using splay traversal */ + splay_traverse((void (*)(void*))evalPerPixelEqn, preset->per_pixel_eqn_tree); + + /* Set mesh i / j values to -1 so engine vars are used by default again */ + mesh_i = mesh_j = -1; + +} +/* Adds a per pixel equation according to its string name. This + will be used only by the parser */ + +int add_per_pixel_eqn(char * name, gen_expr_t * gen_expr, preset_t * preset) { + + per_pixel_eqn_t * per_pixel_eqn; + int index; + param_t * param = NULL; + + /* Argument checks */ + if (preset == NULL) + return PROJECTM_FAILURE; + if (gen_expr == NULL) + return PROJECTM_FAILURE; + if (name == NULL) + return PROJECTM_FAILURE; + + if (PER_PIXEL_EQN_DEBUG) printf("add_per_pixel_eqn: per pixel equation (name = \"%s\")\n", name); + + if (!strncmp(name, "dx", strlen("dx"))) + preset->per_pixel_flag[DX_OP] = TRUE; + else if (!strncmp(name, "dy", strlen("dy"))) + preset->per_pixel_flag[DY_OP] = TRUE; + else if (!strncmp(name, "cx", strlen("cx"))) + preset->per_pixel_flag[CX_OP] = TRUE; + else if (!strncmp(name, "cy", strlen("cy"))) + preset->per_pixel_flag[CX_OP] = TRUE; + else if (!strncmp(name, "zoom", strlen("zoom"))) + preset->per_pixel_flag[ZOOM_OP] = TRUE; + else if (!strncmp(name, "zoomexp", strlen("zoomexp"))) + preset->per_pixel_flag[ZOOMEXP_OP] = TRUE; + else if (!strncmp(name, "rot", strlen("rot"))) + preset->per_pixel_flag[ROT_OP] = TRUE; + else if (!strncmp(name, "sx", strlen("sx"))) + preset->per_pixel_flag[SX_OP] = TRUE; + else if (!strncmp(name, "sy", strlen("sy"))) + preset->per_pixel_flag[SY_OP] = TRUE; + + + /* Search for the parameter so we know what matrix the per pixel equation is referencing */ + + param = find_param(name, preset, TRUE); + if ( !param ) { + if (PER_PIXEL_EQN_DEBUG) printf("add_per_pixel_eqn: failed to allocate a new parameter!\n"); + return PROJECTM_FAILURE; + } + +/** + if ( !param->matrix ) { + if (PER_PIXEL_EQN_DEBUG) printf( "add_per_pixel_eqn: failed to locate param matrix\n" ); + return PROJECTM_FAILURE; + } +*/ + + /* Find most largest index in the splaytree */ + // if ((per_pixel_eqn = splay_find_max(PM->active_preset->per_pixel_eqn_tree)) == NULL) + // index = 0; + // else + index = splay_size(preset->per_pixel_eqn_tree); + + /* Create the per pixel equation given the index, parameter, and general expression */ + if ((per_pixel_eqn = new_per_pixel_eqn(index, param, gen_expr)) == NULL) { + if (PER_PIXEL_EQN_DEBUG) printf("add_per_pixel_eqn: failed to create new per pixel equation!\n"); + return PROJECTM_FAILURE; + + } + + if (PER_PIXEL_EQN_DEBUG) printf("add_per_pixel_eqn: new equation (index = %d,matrix=%X) (param = \"%s\")\n", + per_pixel_eqn->index, per_pixel_eqn->param->matrix, per_pixel_eqn->param->name); + /* Insert the per pixel equation into the preset per pixel database */ + if (splay_insert(per_pixel_eqn, &per_pixel_eqn->index, preset->per_pixel_eqn_tree) < 0) { + free_per_pixel_eqn(per_pixel_eqn); + printf("failed to add per pixel eqn!\n"); + return PROJECTM_FAILURE; + } + + /* Done */ + return PROJECTM_SUCCESS; +} + +per_pixel_eqn_t * new_per_pixel_eqn(int index, param_t * param, gen_expr_t * gen_expr) { + + per_pixel_eqn_t * per_pixel_eqn; + + if (index < 0) + return NULL; + if (param == NULL) + return NULL; + if (gen_expr == NULL) + return NULL; + + if ((per_pixel_eqn = (per_pixel_eqn_t*)wipemalloc(sizeof(per_pixel_eqn_t))) == NULL) + return NULL; + + + per_pixel_eqn->index = index; + per_pixel_eqn->param = param; + per_pixel_eqn->gen_expr = gen_expr; + + return per_pixel_eqn; +} + + +void free_per_pixel_eqn(per_pixel_eqn_t * per_pixel_eqn) { + + if (per_pixel_eqn == NULL) + return; + + free_gen_expr(per_pixel_eqn->gen_expr); + + free(per_pixel_eqn); + per_pixel_eqn = NULL; + + return; +} + +int isPerPixelEqn(int op) { + + return active_preset->per_pixel_flag[op]; + +} + + int resetPerPixelEqnFlags(preset_t * preset) { + int i; + + for (i = 0; i < NUM_OPS;i++) + preset->per_pixel_flag[i] = FALSE; + + return PROJECTM_SUCCESS; +} diff --git a/libprojectM/src/per_pixel_eqn.h b/libprojectM/src/per_pixel_eqn.h new file mode 100755 index 000000000..71d2f6010 --- /dev/null +++ b/libprojectM/src/per_pixel_eqn.h @@ -0,0 +1,37 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _PER_PIXEL_EQN_H +#define _PER_PIXEL_EQN_H + +#include "expr_types.h" +#include "preset_types.h" + +#define PER_PIXEL_EQN_DEBUG 0 + + void evalPerPixelEqns(preset_t *preset); + int isPerPixelEqn(int index); +int add_per_pixel_eqn(char * name, gen_expr_t * gen_expr, struct PRESET_T * preset); +void free_per_pixel_eqn(per_pixel_eqn_t * per_pixel_eqn); +per_pixel_eqn_t * new_per_pixel_eqn(int index, param_t * param, gen_expr_t * gen_expr); + int resetPerPixelEqnFlags(); + +#endif /** !_PER_PIXEL_EQN_H */ diff --git a/libprojectM/src/per_pixel_eqn_types.h b/libprojectM/src/per_pixel_eqn_types.h new file mode 100755 index 000000000..206341875 --- /dev/null +++ b/libprojectM/src/per_pixel_eqn_types.h @@ -0,0 +1,49 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _PER_PIXEL_EQN_TYPES_H +#define _PER_PIXEL_EQN_TYPES_H + +/* This is sort of ugly, but it is also the fastest way to access the per pixel equations */ +#include "common.h" +#include "expr_types.h" + +typedef struct PER_PIXEL_EQN_T { + int index; /* used for splay tree ordering. */ + int flags; /* primarily to specify if this variable is user-defined */ + param_t * param; + gen_expr_t * gen_expr; +} per_pixel_eqn_t; + + +#define ZOOM_OP 0 +#define ZOOMEXP_OP 1 +#define ROT_OP 2 +#define CX_OP 3 +#define CY_OP 4 +#define SX_OP 5 +#define SY_OP 6 +#define DX_OP 7 +#define DY_OP 8 +#define WARP_OP 9 +#define NUM_OPS 10 /* obviously, this number is dependent on the number of existing per pixel operations */ + +#endif /** !_PER_PIXEL_EQN_TYPES_H */ diff --git a/libprojectM/src/per_point_types.h b/libprojectM/src/per_point_types.h new file mode 100755 index 000000000..810a00052 --- /dev/null +++ b/libprojectM/src/per_point_types.h @@ -0,0 +1,34 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _PER_POINT_EQN_TYPES_H +#define _PER_POINT_EQN_TYPES_H + +#include "custom_wave_types.h" + +typedef struct PER_POINT_EQN { + + custom_wave_t * custom_wave; + + +} per_point_eqn_t; + +#endif /** !_PER_POINT_EQN_TYPES_H */ diff --git a/libprojectM/src/preset.cc b/libprojectM/src/preset.cc new file mode 100755 index 000000000..e2d592e87 --- /dev/null +++ b/libprojectM/src/preset.cc @@ -0,0 +1,1030 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#include +#include +#include +#ifdef WIN32 +#include "win32-dirent.h" +#else +#include +#endif /** WIN32 */ +#include + +#include "projectM.h" + +#include "common.h" +#include "fatal.h" + +#include "preset_types.h" +#include "preset.h" + +#include "parser.h" + +#include "expr_types.h" +#include "eval.h" + +#include "splaytree_types.h" +#include "splaytree.h" +#include "tree_types.h" + +#include "per_frame_eqn_types.h" +#include "per_frame_eqn.h" + +#include "per_pixel_eqn_types.h" +#include "per_pixel_eqn.h" + +#include "init_cond_types.h" +#include "init_cond.h" + +#include "param_types.h" +#include "param.h" + +#include "func_types.h" +#include "func.h" + +#include "custom_wave_types.h" +#include "custom_wave.h" + +#include "custom_shape_types.h" +#include "custom_shape.h" + +#include "idle_preset.h" +#include "wipemalloc.h" + +/* The maximum number of preset names loaded into buffer */ +#define MAX_PRESETS_IN_DIR 50000 +extern projectM_t *PM; + +extern int per_frame_eqn_count; +extern int per_frame_init_eqn_count; +//extern int custom_per_frame_eqn_count; + +extern splaytree_t * builtin_param_tree; + +extern preset_t *active_preset; +extern preset_t *old_preset; +extern line_mode_t line_mode; + +preset_t *preset_hack; + + +FILE * write_stream = NULL; + + +int preset_index = -1; + +preset_t * load_preset(const char * pathname); +int is_valid_extension(const struct dirent* ent); +int load_preset_file(const char * pathname, preset_t * preset); +int close_preset(preset_t * preset); + +int write_preset_name(FILE * fs); +int write_per_pixel_equations(FILE * fs); +int write_per_frame_equations(FILE * fs); +int write_per_frame_init_equations(FILE * fs); +int write_init_conditions(FILE * fs); +void load_init_cond(param_t * param); +void load_init_conditions( preset_t *preset); +void write_init(init_cond_t * init_cond); +int init_idle_preset(); +int destroy_idle_preset(); +void load_custom_wave_init_conditions(preset_t *preset); +void load_custom_wave_init(custom_wave_t * custom_wave); + +void load_custom_shape_init_conditions(preset_t *preset); +void load_custom_shape_init(custom_shape_t * custom_shape); + +/* loadPresetDir: opens the directory buffer + denoted by 'dir' to load presets */ + +int loadPresetDir(char * dir) { + /* we no longer do anything here and instead look in PM->presetURL in switchPreset + this allows us to find new preset files on the fly */ + + /* Start the prefix index right before the first entry, so next preset + starts at the top of the list */ +//#define PRESET_KLUDGE +#ifndef PRESET_KLUDGE + preset_index = -1; +#else + /** KLUDGE */ + preset_index = 30; +#endif + + /* Start the first preset */ + switchPreset(RANDOM_NEXT, HARD_CUT); + + return PROJECTM_SUCCESS; +} + +/* closePresetDir: closes the current + preset directory buffer */ + +int closePresetDir() { + + /* because we don't open we don't have to close ;) */ + destroyPresetLoader(); + + return PROJECTM_SUCCESS; +} + +/* switchPreset: loads the next preset from the directory stream. + loadPresetDir() must be called first. This is a + sequential load function */ + +int switchPreset(switch_mode_t switch_mode, int cut_type) { + + preset_t * new_preset = 0; + + int switch_index; + int sindex = 0; + int slen = 0; + +#ifdef DEBUG + if ( debugFile != NULL ) { + fprintf( debugFile, "switchPreset(): in\n" ); + fflush( debugFile ); + } +#endif + + switch (switch_mode) { + case ALPHA_NEXT: + preset_index = switch_index = preset_index + 1; + break; + case ALPHA_PREVIOUS: + preset_index = switch_index = preset_index - 1; + break; + case RANDOM_NEXT: + switch_index = rand(); + break; + case RESTART_ACTIVE: + switch_index = preset_index; + break; + default: + return PROJECTM_FAILURE; + } + + // iterate through the presetURL directory looking for the next entry + { + struct dirent** entries; + int dir_size = scandir(PM->presetURL, &entries, is_valid_extension, alphasort); + if (dir_size > 0) { + int i; + + switch_index %= dir_size; + if (switch_index < 0) switch_index += dir_size; + + for (i = 0; i < dir_size; ++i) { + if (switch_index == i) { + // matching entry + const size_t len = strlen(PM->presetURL); + char* path = (char *) malloc(len + strlen(entries[i]->d_name) + 2); + if (path) { + strcpy(path, PM->presetURL); + if (len && ((path[len - 1] != '/')||(path[len - 1] != '\\'))) { + strcat(path + len, "/"); + } + strcat(path + len, entries[i]->d_name); + + new_preset = load_preset(path); + free(path); + + // we must keep iterating to free the remaining entries + } + } + free(entries[i]); + } + free(entries); + } + } + + if (!new_preset) { + switchToIdlePreset(); + return PROJECTM_ERROR; + } + + + /* Closes a preset currently loaded, if any */ + if ((active_preset != NULL) && (active_preset != idle_preset)) { + close_preset(active_preset); + } + + /* Sets global active_preset pointer */ + active_preset = new_preset; + +#ifndef PANTS + /** Split out the preset name from the path */ + slen = strlen( new_preset->file_path ); + sindex = slen; + while ( new_preset->file_path[sindex] != WIN32_PATH_SEPARATOR && + new_preset->file_path[sindex] != UNIX_PATH_SEPARATOR && sindex > 0 ) { + sindex--; + } + sindex++; + if ( PM->presetName != NULL ) { + free( PM->presetName ); + PM->presetName = NULL; + } + PM->presetName = (char *)wipemalloc( sizeof( char ) * (slen - sindex + 1) ); + strncpy( PM->presetName, new_preset->file_path + sindex, slen - sindex ); + PM->presetName[slen - sindex] = '\0'; +#endif + + /* Reinitialize the engine variables to sane defaults */ + projectM_resetengine( PM ); + + /* Add any missing initial conditions */ + load_init_conditions(active_preset); + + /* Add any missing initial conditions for each wave */ + load_custom_wave_init_conditions(active_preset); + +/* Add any missing initial conditions for each shape */ + load_custom_shape_init_conditions(active_preset); + + /* Need to evaluate the initial conditions once */ + evalInitConditions(active_preset); + evalCustomWaveInitConditions(active_preset); + evalCustomShapeInitConditions(active_preset); + // evalInitPerFrameEquations(); + return PROJECTM_SUCCESS; +} + +/* Loads a specific preset by absolute path */ +int loadPresetByFile(char * filename) { + + preset_t * new_preset; + + /* Finally, load the preset using its actual path */ + if ((new_preset = load_preset(filename)) == NULL) { +#ifdef PRESET_DEBUG + printf("loadPresetByFile: failed to load preset!\n"); +#endif + return PROJECTM_ERROR; + } + + /* Closes a preset currently loaded, if any */ + if ((active_preset != NULL) && (active_preset != idle_preset)) + close_preset(active_preset); + + /* Sets active preset global pointer */ + active_preset = new_preset; + + /* Reinitialize engine variables */ + projectM_resetengine( PM); + + + /* Add any missing initial conditions for each wave */ + load_custom_wave_init_conditions(active_preset); + + /* Add any missing initial conditions for each wave */ + load_custom_shape_init_conditions(active_preset); + + /* Add any missing initial conditions */ + load_init_conditions(active_preset); + + /* Need to do this once for menu */ + evalInitConditions(active_preset); + // evalPerFrameInitEquations(); + return PROJECTM_SUCCESS; + +} + +int init_idle_preset() { + + preset_t * preset; + /* Initialize idle preset struct */ + if ((preset = (preset_t*)wipemalloc(sizeof(preset_t))) == NULL) + return PROJECTM_FAILURE; + + + strncpy(preset->name, "idlepreset", strlen("idlepreset")); + + /* Initialize equation trees */ + preset->init_cond_tree = create_splaytree((int (*)(void*,void*))compare_string, (void*(*)(void*))copy_string, (void(*)(void*))free_string); + preset->user_param_tree = create_splaytree((int (*)(void*,void*))compare_string,(void*(*)(void*)) copy_string, (void(*)(void*))free_string); + preset->per_frame_eqn_tree = create_splaytree((int (*)(void*,void*))compare_int,(void*(*)(void*)) copy_int, (void(*)(void*))free_int); + preset->per_pixel_eqn_tree = create_splaytree((int (*)(void*,void*))compare_int, (void*(*)(void*))copy_int, (void(*)(void*))free_int); + preset->per_frame_init_eqn_tree = create_splaytree((int (*)(void*,void*))compare_string,(void*(*)(void*)) copy_string, (void(*)(void*))free_string); + preset->custom_wave_tree = create_splaytree((int (*)(void*,void*))compare_int, (void*(*)(void*))copy_int, (void(*)(void*))free_int); + preset->custom_shape_tree = create_splaytree((int (*)(void*,void*))compare_int,(void*(*)(void*)) copy_int, (void(*)(void*))free_int); + + /* Set file path to dummy name */ + strncpy(preset->file_path, "IDLE PRESET", MAX_PATH_SIZE-1); + + /* Set initial index values */ + preset->per_pixel_eqn_string_index = 0; + preset->per_frame_eqn_string_index = 0; + preset->per_frame_init_eqn_string_index = 0; + memset(preset->per_pixel_flag, 0, sizeof(int)*NUM_OPS); + + /* Clear string buffers */ + memset(preset->per_pixel_eqn_string_buffer, 0, STRING_BUFFER_SIZE); + memset(preset->per_frame_eqn_string_buffer, 0, STRING_BUFFER_SIZE); + memset(preset->per_frame_init_eqn_string_buffer, 0, STRING_BUFFER_SIZE); + + idle_preset = preset; + + return PROJECTM_SUCCESS; +} + +int destroy_idle_preset() { + + return close_preset(idle_preset); + +} + +/* initPresetLoader: initializes the preset + loading library. this should be done before + any parsing */ +int initPresetLoader(projectM_t *PM) { + + /* Initializes the builtin parameter database */ + init_builtin_param_db(PM); + + /* Initializes the builtin function database */ + init_builtin_func_db(); + + /* Initializes all infix operators */ + init_infix_ops(); + + /* Set the seed to the current time in seconds */ + srand(time(NULL)); + + /* Initialize the 'idle' preset */ + init_idle_preset(); + + + + projectM_resetengine( PM); + +// active_preset = idle_preset; + PM->presetName = NULL; + switchToIdlePreset(); + load_init_conditions(active_preset); + + /* Done */ +#ifdef PRESET_DEBUG + printf("initPresetLoader: finished\n"); +#endif + return PROJECTM_SUCCESS; +} + +/* Sort of experimental code here. This switches + to a hard coded preset. Useful if preset directory + was not properly loaded, or a preset fails to parse */ + +void switchToIdlePreset() { + + if ( idle_preset == NULL ) { + return; + } + + /* Idle Preset already activated */ + if (active_preset == idle_preset) + return; + + + /* Close active preset */ + if (active_preset != NULL) + close_preset(active_preset); + + /* Sets global active_preset pointer */ + active_preset = idle_preset; + + /** Stash the preset name */ + if ( PM->presetName != NULL ) { + free( PM->presetName ); + } + PM->presetName = (char *)wipemalloc( sizeof( char ) * 5 ); + strncpy( PM->presetName, "IDLE", 4 ); + PM->presetName[4] = '\0'; + + /* Reinitialize the engine variables to sane defaults */ + projectM_resetengine( PM); + + /* Add any missing initial conditions */ + load_init_conditions(active_preset); + + /* Need to evaluate the initial conditions once */ + evalInitConditions(active_preset); + +} + +/* destroyPresetLoader: closes the preset + loading library. This should be done when + projectM does cleanup */ + +int destroyPresetLoader() { + + if ((active_preset != NULL) && (active_preset != idle_preset)) { + close_preset(active_preset); + } + + active_preset = NULL; + + destroy_idle_preset(); + destroy_builtin_param_db(); + destroy_builtin_func_db(); + destroy_infix_ops(); + + return PROJECTM_SUCCESS; + +} + +/* load_preset_file: private function that loads a specific preset denoted + by the given pathname */ +int load_preset_file(const char * pathname, preset_t * preset) { + FILE * fs; + int retval; + int lineno; + + if (pathname == NULL) + return PROJECTM_FAILURE; + if (preset == NULL) + return PROJECTM_FAILURE; + + /* Open the file corresponding to pathname */ + if ((fs = fopen(pathname, "rb")) == 0) { +#if defined(PRESET_DEBUG) && defined(DEBUG) + if ( debugFile != NULL ) { + fprintf( debugFile,"load_preset_file: loading of file %s failed!\n", pathname); + } +#endif + return PROJECTM_ERROR; + } + +#if defined(PRESET_DEBUG) && defined(DEBUG) + if ( debugFile != NULL ) { + fprintf( debugFile,"load_preset_file: file stream \"%s\" opened successfully\n", pathname); + } +#endif + + /* Parse any comments */ + if (parse_top_comment(fs) < 0) { +#if defined(PRESET_DEBUG) && defined(DEBUG) + if ( debugFile != NULL ) { + fprintf(debugFile,"load_preset_file: no left bracket found...\n"); + } +#endif + fclose(fs); + return PROJECTM_FAILURE; + } + + /* Parse the preset name and a left bracket */ + if (parse_preset_name(fs, preset->name) < 0) { +#if defined(PRESET_DEBUG) && defined(DEBUG) + if ( debugFile != NULL ) { + fprintf(debugFile,"load_preset_file: loading of preset name in file \"%s\" failed\n", pathname); + } +#endif + fclose(fs); + return PROJECTM_ERROR; + } + +#if defined(PRESET_DEBUG) && defined(DEBUG) + if ( debugFile != NULL ) { + fprintf(debugFile,"load_preset_file: preset \"%s\" parsed\n", preset->name); + } +#endif + + /* Parse each line until end of file */ + lineno = 0; +#if defined(PRESET_DEBUG) && defined(DEBUG) + if ( debugFile != NULL ) { + fprintf(debugFile,"load_preset_file: beginning line parsing...\n"); + } +#endif + while ((retval = parse_line(fs, preset)) != EOF) { + if (retval == PROJECTM_PARSE_ERROR) { + line_mode = NORMAL_LINE_MODE; +#if defined(PRESET_DEBUG) && defined(DEBUG) + if ( debugFile != NULL ) { + fprintf(debugFile,"load_preset_file: parse error in file \"%s\": line %d\n", pathname,lineno); + } +#endif + } + lineno++; + } + +#if defined(PRESET_DEBUG) && defined(DEBUG) + if ( debugFile != NULL ) { + fprintf(debugFile,"load_preset_file: finished line parsing successfully\n"); + fflush( debugFile ); + } +#endif + + /* Now the preset has been loaded. + Evaluation calls can be made at appropiate + times in the frame loop */ + + fclose(fs); + +#if defined(PRESET_DEBUG) && defined(DEBUG) + if ( debugFile != NULL ) { + fprintf(debugFile,"load_preset_file: file \"%s\" closed, preset ready\n", pathname); + } +#endif + return PROJECTM_SUCCESS; + +} + +void evalInitConditions(preset_t *preset) { + splay_traverse((void (*)(void*))eval_init_cond, preset->per_frame_init_eqn_tree); + +} + +void evalPerFrameEquations(preset_t *preset) { + splay_traverse((void (*)(void*))eval_init_cond, preset->init_cond_tree); + splay_traverse((void (*)(void*))eval_per_frame_eqn, preset->per_frame_eqn_tree); +} + +/* Returns nonzero if string 'name' contains .milk or + (the better) .prjm extension. Not a very strong function currently */ +int is_valid_extension(const struct dirent* ent) { + const char* ext = 0; + + if (!ent) return FALSE; + + ext = strrchr(ent->d_name, '.'); + if (!ext) ext = ent->d_name; + + if (0 == strcasecmp(ext, MILKDROP_FILE_EXTENSION)) return TRUE; + if (0 == strcasecmp(ext, PROJECTM_FILE_EXTENSION)) return TRUE; + + return FALSE; +} + +/* Private function to close a preset file */ +int close_preset(preset_t * preset) { + +#if defined(PRESET_DEBUG) && defined(DEBUG) + if ( debugFile != NULL ) { + fprintf( debugFile, "close_preset(): in\n" ); + fflush( debugFile ); + } +#endif + + if (preset == NULL) + return PROJECTM_FAILURE; + + splay_traverse((void (*)(void*))free_init_cond, preset->init_cond_tree); + destroy_splaytree(preset->init_cond_tree); + + splay_traverse((void (*)(void*))free_init_cond, preset->per_frame_init_eqn_tree); + destroy_splaytree(preset->per_frame_init_eqn_tree); + + splay_traverse((void (*)(void*))free_per_pixel_eqn, preset->per_pixel_eqn_tree); + destroy_splaytree(preset->per_pixel_eqn_tree); + + splay_traverse((void (*)(void*))free_per_frame_eqn, preset->per_frame_eqn_tree); + destroy_splaytree(preset->per_frame_eqn_tree); + + splay_traverse((void (*)(void*))free_param, preset->user_param_tree); + destroy_splaytree(preset->user_param_tree); + + splay_traverse((void (*)(void*))free_custom_wave, preset->custom_wave_tree); + destroy_splaytree(preset->custom_wave_tree); + + splay_traverse((void (*)(void*))free_custom_shape, preset->custom_shape_tree); + destroy_splaytree(preset->custom_shape_tree); + + free(preset); + preset = NULL; + +#if defined(PRESET_DEBUG) && defined(DEBUG) + if ( debugFile != NULL ) { + fprintf( debugFile, "close_preset(): out\n" ); + fflush( debugFile ); + } +#endif + + return PROJECTM_SUCCESS; + +} + +void reloadPerPixel(char *s, preset_t * preset) { + + int slen; + + if (s == NULL) + return; + + if (preset == NULL) + return; + + /* Clear previous per pixel equations */ + splay_traverse((void (*)(void*))free_per_pixel_eqn, preset->per_pixel_eqn_tree); + destroy_splaytree(preset->per_pixel_eqn_tree); + preset->per_pixel_eqn_tree = create_splaytree((int (*)(void*,void*))compare_int, (void* (*)(void*))copy_int, (void (*)(void*))free_int); + + /* Convert string to a stream */ +#if !defined(MACOS) && !defined(WIN32) + { + FILE* fs = fmemopen (s, strlen(s), "r"); + char c; + + while ((c = fgetc(fs)) != EOF) { + ungetc(c, fs); + parse_per_pixel_eqn(fs, preset, 0); + } + + fclose(fs); + } +#else +printf( "reloadPerPixel()\n" ); +#endif + + /* Clear string space */ + memset(preset->per_pixel_eqn_string_buffer, 0, STRING_BUFFER_SIZE); + + /* Compute length of string */ + slen = strlen(s); + + /* Copy new string into buffer */ + strncpy(preset->per_pixel_eqn_string_buffer, s, slen); + + /* Yet again no bounds checking */ + preset->per_pixel_eqn_string_index = slen; + + /* Finished */ + + return; +} + +/* Obviously unwritten */ +void reloadPerFrameInit(char *s, preset_t * preset) { + +} + +void reloadPerFrame(char * s, preset_t * preset) { + + int slen; + int eqn_count = 1; + + if (s == NULL) + return; + + if (preset == NULL) + return; + + /* Clear previous per frame equations */ + splay_traverse((void (*)(void*))free_per_frame_eqn, preset->per_frame_eqn_tree); + destroy_splaytree(preset->per_frame_eqn_tree); + preset->per_frame_eqn_tree = create_splaytree((int (*)(void*,void*))compare_int,(void* (*)(void*)) copy_int, (void (*)(void*))free_int); + + /* Convert string to a stream */ +#if !defined(MACOS) && !defined(WIN32) + { + FILE* fs = fmemopen (s, strlen(s), "r"); + char c; + + while ((c = fgetc(fs)) != EOF) { + per_frame_eqn_t * per_frame; + ungetc(c, fs); + if ((per_frame = parse_per_frame_eqn(fs, eqn_count, preset)) != NULL) { + splay_insert(per_frame, &eqn_count, preset->per_frame_eqn_tree); + eqn_count++; + } + } + fclose(fs); + } +#else +printf( "reloadPerFrame()\n" ); +#endif + + /* Clear string space */ + memset(preset->per_frame_eqn_string_buffer, 0, STRING_BUFFER_SIZE); + + /* Compute length of string */ + slen = strlen(s); + + /* Copy new string into buffer */ + strncpy(preset->per_frame_eqn_string_buffer, s, slen); + + /* Yet again no bounds checking */ + preset->per_frame_eqn_string_index = slen; + + /* Finished */ + printf("reloadPerFrame: %d eqns parsed succesfully\n", eqn_count-1); + return; + +} + +preset_t * load_preset(const char * pathname) { + + preset_t * preset; + + printf( "loading preset from '%s'\n", pathname ); + + /* Initialize preset struct */ + if ((preset = (preset_t*)wipemalloc(sizeof(preset_t))) == NULL) + return NULL; + + /* Initialize equation trees */ + preset->init_cond_tree = create_splaytree((int (*)(void*,void*))compare_string, (void* (*)(void*))copy_string, (void (*)(void*))free_string); + preset->user_param_tree = create_splaytree((int (*)(void*,void*))compare_string,(void* (*)(void*)) copy_string, (void (*)(void*))free_string); + preset->per_frame_eqn_tree = create_splaytree((int (*)(void*,void*))compare_int,(void* (*)(void*)) copy_int, (void (*)(void*)) free_int); + preset->per_pixel_eqn_tree = create_splaytree((int (*)(void*,void*))compare_int,(void* (*)(void*)) copy_int, (void (*)(void*)) free_int); + preset->per_frame_init_eqn_tree = create_splaytree((int (*)(void*,void*))compare_string,(void* (*)(void*)) copy_string, (void (*)(void*)) free_string); + preset->custom_wave_tree = create_splaytree((int (*)(void*,void*))compare_int, (void* (*)(void*))copy_int, (void (*)(void*)) free_int); + preset->custom_shape_tree = create_splaytree((int (*)(void*,void*))compare_int, (void* (*)(void*))copy_int, (void (*)(void*)) free_int); + + memset(preset->per_pixel_flag, 0, sizeof(int)*NUM_OPS); + + /* Copy file path */ + if ( pathname == NULL ) { + close_preset( preset ); + return NULL; + } + strncpy(preset->file_path, pathname, MAX_PATH_SIZE-1); + + /* Set initial index values */ + preset->per_pixel_eqn_string_index = 0; + preset->per_frame_eqn_string_index = 0; + preset->per_frame_init_eqn_string_index = 0; + + + /* Clear string buffers */ + memset(preset->per_pixel_eqn_string_buffer, 0, STRING_BUFFER_SIZE); + memset(preset->per_frame_eqn_string_buffer, 0, STRING_BUFFER_SIZE); + memset(preset->per_frame_init_eqn_string_buffer, 0, STRING_BUFFER_SIZE); + + + if (load_preset_file(pathname, preset) < 0) { +#ifdef PRESET_DEBUG + if (PRESET_DEBUG) printf("load_preset: failed to load file \"%s\"\n", pathname); +#endif + close_preset(preset); + return NULL; + } + + /* It's kind of ugly to reset these values here. Should definitely be placed in the parser somewhere */ + per_frame_eqn_count = 0; + per_frame_init_eqn_count = 0; + + /* Finished, return new preset */ + return preset; +} + +void savePreset(char * filename) { + + FILE * fs; + + if (filename == NULL) + return; + + /* Open the file corresponding to pathname */ + if ((fs = fopen(filename, "w+")) == 0) { +#ifdef PRESET_DEBUG + if (PRESET_DEBUG) printf("savePreset: failed to create filename \"%s\"!\n", filename); +#endif + return; + } + + write_stream = fs; + + if (write_preset_name(fs) < 0) { + write_stream = NULL; + fclose(fs); + return; + } + + if (write_init_conditions(fs) < 0) { + write_stream = NULL; + fclose(fs); + return; + } + + if (write_per_frame_init_equations(fs) < 0) { + write_stream = NULL; + fclose(fs); + return; + } + + if (write_per_frame_equations(fs) < 0) { + write_stream = NULL; + fclose(fs); + return; + } + + if (write_per_pixel_equations(fs) < 0) { + write_stream = NULL; + fclose(fs); + return; + } + + write_stream = NULL; + fclose(fs); + +} + +int write_preset_name(FILE * fs) { + + char s[256]; + int len; + + memset(s, 0, 256); + + if (fs == NULL) + return PROJECTM_FAILURE; + + /* Format the preset name in a string */ + sprintf(s, "[%s]\n", active_preset->name); + + len = strlen(s); + + /* Write preset name to file stream */ + if (fwrite(s, 1, len, fs) != len) + return PROJECTM_FAILURE; + + return PROJECTM_SUCCESS; + +} + +int write_init_conditions(FILE * fs) { + + if (fs == NULL) + return PROJECTM_FAILURE; + if (active_preset == NULL) + return PROJECTM_FAILURE; + + + splay_traverse( (void (*)(void*))write_init, active_preset->init_cond_tree); + + return PROJECTM_SUCCESS; +} + +void write_init(init_cond_t * init_cond) { + + char s[512]; + int len; + + if (write_stream == NULL) + return; + + memset(s, 0, 512); + + if (init_cond->param->type == P_TYPE_BOOL) + sprintf(s, "%s=%d\n", init_cond->param->name, init_cond->init_val.bool_val); + + else if (init_cond->param->type == P_TYPE_INT) + sprintf(s, "%s=%d\n", init_cond->param->name, init_cond->init_val.int_val); + + else if (init_cond->param->type == P_TYPE_DOUBLE) + sprintf(s, "%s=%f\n", init_cond->param->name, init_cond->init_val.float_val); + + else { printf("write_init: unknown parameter type!\n"); return; } + + len = strlen(s); + + if ((fwrite(s, 1, len, write_stream)) != len) + printf("write_init: failed writing to file stream! Out of disk space?\n"); + +} + + +int write_per_frame_init_equations(FILE * fs) { + + int len; + + if (fs == NULL) + return PROJECTM_FAILURE; + if (active_preset == NULL) + return PROJECTM_FAILURE; + + len = strlen(active_preset->per_frame_init_eqn_string_buffer); + + if (fwrite(active_preset->per_frame_init_eqn_string_buffer, 1, len, fs) != len) + return PROJECTM_FAILURE; + + return PROJECTM_SUCCESS; +} + + +int write_per_frame_equations(FILE * fs) { + + int len; + + if (fs == NULL) + return PROJECTM_FAILURE; + if (active_preset == NULL) + return PROJECTM_FAILURE; + + len = strlen(active_preset->per_frame_eqn_string_buffer); + + if (fwrite(active_preset->per_frame_eqn_string_buffer, 1, len, fs) != len) + return PROJECTM_FAILURE; + + return PROJECTM_SUCCESS; +} + + +int write_per_pixel_equations(FILE * fs) { + + int len; + + if (fs == NULL) + return PROJECTM_FAILURE; + if (active_preset == NULL) + return PROJECTM_FAILURE; + + len = strlen(active_preset->per_pixel_eqn_string_buffer); + + if (fwrite(active_preset->per_pixel_eqn_string_buffer, 1, len, fs) != len) + return PROJECTM_FAILURE; + + return PROJECTM_SUCCESS; +} + + +void load_init_conditions(preset_t *preset) { + preset_hack=preset; + splay_traverse( (void (*)(void*))load_init_cond, builtin_param_tree); + + +} + +void load_init_cond(param_t * param) { + + init_cond_t * init_cond; + value_t init_val; + + /* Don't count read only parameters as initial conditions */ + if (param->flags & P_FLAG_READONLY) + return; + + /* If initial condition was not defined by the preset file, force a default one + with the following code */ + if ((init_cond = (init_cond_t*)(splay_find(param->name, preset_hack->init_cond_tree))) == NULL) { + + /* Make sure initial condition does not exist in the set of per frame initial equations */ + if ((init_cond = (init_cond_t*)(splay_find(param->name, preset_hack->per_frame_init_eqn_tree))) != NULL) + return; + + if (param->type == P_TYPE_BOOL) + init_val.bool_val = 0; + + else if (param->type == P_TYPE_INT) + init_val.int_val = *(int*)param->engine_val; + + else if (param->type == P_TYPE_DOUBLE) + init_val.float_val = *(float*)param->engine_val; + + /* Create new initial condition */ + if ((init_cond = new_init_cond(param, init_val)) == NULL) + return; + + /* Insert the initial condition into this presets tree */ + if (splay_insert(init_cond, init_cond->param->name, preset_hack->init_cond_tree) < 0) { + free_init_cond(init_cond); + return; + } + + } + +} + +void load_custom_wave_init_conditions(preset_t *preset) { + + splay_traverse((void (*)(void*))load_custom_wave_init, preset->custom_wave_tree); + +} + +void load_custom_wave_init(custom_wave_t * custom_wave) { + + load_unspecified_init_conds(custom_wave); + +} + + +void load_custom_shape_init_conditions(preset_t *preset) { + + splay_traverse((void (*)(void*))load_custom_shape_init, preset->custom_shape_tree); + +} + +void load_custom_shape_init(custom_shape_t * custom_shape) { + + load_unspecified_init_conds_shape(custom_shape); + +} diff --git a/libprojectM/src/preset.h b/libprojectM/src/preset.h new file mode 100755 index 000000000..6a632d183 --- /dev/null +++ b/libprojectM/src/preset.h @@ -0,0 +1,49 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _PRESET_H +#define _PRESET_H + +//#define PRESET_DEBUG 2 /* 0 for no debugging, 1 for normal, 2 for insane */ + +#define HARD_CUT 0 +#define SOFT_CUT 1 + +#include "preset_types.h" +#include "projectM.h" + +void evalInitConditions(preset_t *preset); +void evalPerFrameEquations(preset_t *preset); + +int switchPreset(switch_mode_t switch_mode, int cut_type); +void switchToIdlePreset(); +int loadPresetDir(char * dir); +int closePresetDir(); +int initPresetLoader(projectM_t *PM); +int destroyPresetLoader(); +int loadPresetByFile(char * filename); +void reloadPerFrame(char * s, preset_t * preset); +void reloadPerFrameInit(char *s, preset_t * preset); +void reloadPerPixel(char *s, preset_t * preset); +void savePreset(char * name); + + +#endif /** !_PRESET_H */ diff --git a/libprojectM/src/preset_types.h b/libprojectM/src/preset_types.h new file mode 100755 index 000000000..f001fa87b --- /dev/null +++ b/libprojectM/src/preset_types.h @@ -0,0 +1,67 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _PRESET_TYPES_H +#define _PRESET_TYPES_H + +#include "splaytree_types.h" +#include "expr_types.h" +#include "per_pixel_eqn_types.h" +#include "per_frame_eqn_types.h" +#include "custom_shape_types.h" +#include "custom_wave_types.h" + + +typedef enum { + ALPHA_NEXT, + ALPHA_PREVIOUS, + RANDOM_NEXT, + RESTART_ACTIVE, +} switch_mode_t; + +typedef struct PRESET_T { + + char name[MAX_TOKEN_SIZE]; /* preset name as parsed in file */ + char file_path[MAX_PATH_SIZE]; /* Points to the preset file name */ + + int per_pixel_eqn_string_index; + int per_frame_eqn_string_index; + int per_frame_init_eqn_string_index; + + int per_pixel_flag[NUM_OPS]; + char per_pixel_eqn_string_buffer[STRING_BUFFER_SIZE]; + char per_frame_eqn_string_buffer[STRING_BUFFER_SIZE]; + char per_frame_init_eqn_string_buffer[STRING_BUFFER_SIZE]; + + /* Data structures that contain equation and initial condition information */ + splaytree_t * per_frame_eqn_tree; /* per frame equations */ + splaytree_t * per_pixel_eqn_tree; /* per pixel equation tree */ + gen_expr_t * per_pixel_eqn_array[NUM_OPS]; /* per pixel equation array */ + splaytree_t * per_frame_init_eqn_tree; /* per frame initial equations */ + splaytree_t * init_cond_tree; /* initial conditions */ + splaytree_t * user_param_tree; /* user parameter splay tree */ + + splaytree_t * custom_wave_tree; /* custom wave forms for this preset */ + splaytree_t * custom_shape_tree; /* custom shapes for this preset */ + +} preset_t; + +#endif /** !_PRESET_TYPES_H */ diff --git a/libprojectM/src/projectM.cc b/libprojectM/src/projectM.cc new file mode 100755 index 000000000..7e11887a8 --- /dev/null +++ b/libprojectM/src/projectM.cc @@ -0,0 +1,2783 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + + +#include +#include + +#include +#include +#include + +#include "wipemalloc.h" +#include "fatal.h" +#include "common.h" + +#include "timer.h" + +//#include +#include "projectM.h" +#include "beat_detect.h" + +#include "preset_types.h" +#include "preset.h" +#include "per_pixel_eqn_types.h" +#include "per_pixel_eqn.h" +#include "interface_types.h" +#include "console_interface.h" +#include "menu.h" +#include "PCM.h" //Sound data handler (buffering, FFT, etc.) +#include "custom_wave_types.h" +#include "custom_wave.h" +#include "custom_shape_types.h" +#include "custom_shape.h" +#include "pbuffer.h" + +preset_t *active_preset; +preset_t *old_preset; +projectM_t *PM; + +FTGLPixmapFont *title_font; +FTGLPixmapFont *other_font; +FTGLPolygonFont *poly_font; + +/** Renders a single frame */ +void renderFrame( projectM_t *pm ) { + +#ifdef DEBUG +char fname[1024]; +FILE *f = NULL; +int index = 0; +int x, y; +#endif + +// printf("Start of loop at %d\n",timestart); + + pm->mspf=(int)(1000.0/(float)pm->fps); //milliseconds per frame + pm->totalframes++; //total amount of frames since startup + +#ifndef WIN32 + pm->Time = getTicks( &pm->startTime ) * 0.001; +#else + pm->Time = getTicks( pm->startTime ) * 0.001; +#endif /** !WIN32 */ + + pm->frame++; //number of frames for current preset + pm->progress= pm->frame/(float)pm->avgtime; +#ifdef DEBUG2 +fprintf( debugFile, "frame: %d\tprogress: %f\tavgtime: %d\n", pm->frame, pm->progress, pm->avgtime ); +fflush( debugFile ); +#endif + if (pm->progress>1.0) pm->progress=1.0; +// printf("start:%d at:%d min:%d stop:%d on:%d %d\n",startframe, frame frame-startframe,avgtime, noSwitch,progress); + + //evalInitConditions(active_preset); + evalPerFrameEquations(active_preset); + + //evalCustomWaveInitConditions(active_preset); + //evalCustomShapeInitConditions(active_preset); + +// printf("%f %d\n",Time,frame); + + reset_per_pixel_matrices( pm ); + + pm->numsamples = getPCMnew(pm->pcmdataR,1,0,pm->fWaveSmoothing,0,0); + getPCMnew(pm->pcmdataL,0,0,pm->fWaveSmoothing,0,1); + getPCM(pm->vdataL,512,0,1,0,0); + getPCM(pm->vdataR,512,1,1,0,0); + + pm->bass_old = pm->bass; + pm->bass=0;pm->mid=0;pm->treb=0; + + getBeatVals(pm,pm->vdataL,pm->vdataR); +// printf("=== %f %f %f %f ===\n",pm->vol,pm->bass,pm->mid,pm->treb); + + if (pm->noSwitch==0) { + pm->nohard--; + if((pm->bass-pm->bass_old>pm->beat_sensitivity || + pm->frame>pm->avgtime ) && pm->nohard<0) + { +// printf("%f %d %d\n", pm->bass-pm->bass_old,pm->frame,pm->avgtime); + switchPreset(RANDOM_NEXT, HARD_CUT); + pm->nohard=pm->fps*5; + } + } + + pm->count++; + +#ifdef DEBUG2 + fprintf( debugFile, "start Pass 1 \n" ); + fflush( debugFile ); +#endif + + //BEGIN PASS 1 + // + //This pass is used to render our texture + //the texture is drawn to a subsection of the framebuffer + //and then we perform our manipulations on it + //in pass 2 we will copy the texture into texture memory + + if ( pm->renderTarget != NULL ) { + lockPBuffer( pm->renderTarget, PBUFFER_PASS1 ); + } + + // glPushAttrib( GL_ALL_ATTRIB_BITS ); /* Overkill, but safe */ + + glViewport( 0, 0, pm->renderTarget->texsize, pm->renderTarget->texsize ); + + glBindTexture( GL_TEXTURE_2D,pm->renderTarget->textureID[0] ); + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); + glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); + + glMatrixMode( GL_MODELVIEW ); + glPushMatrix(); + glLoadIdentity(); + + glMatrixMode( GL_PROJECTION ); + glPushMatrix(); + glLoadIdentity(); + glOrtho(0.0, 1, 0.0, 1,10,40); + +#ifdef DEBUG2 + if ( debugFile != NULL ) { + fprintf( debugFile, "renderFrame: renderTarget->texsize: %d x %d\n", pm->renderTarget->texsize, pm->renderTarget->texsize ); + fflush( debugFile ); + } +#endif + + if ( pm->doPerPixelEffects ) { + do_per_pixel_math( pm ); + } + + if(pm->renderTarget->usePbuffers) + { + draw_motion_vectors( pm ); //draw motion vectors + unlockPBuffer( pm->renderTarget); + lockPBuffer( pm->renderTarget, PBUFFER_PASS1 ); + } + do_per_frame( pm ); //apply per-frame effects + render_interpolation( pm ); //apply per-pixel effects + + draw_title_to_texture( pm ); //draw title to texture + + if(!pm->renderTarget->usePbuffers) draw_motion_vectors( pm ); //draw motion vectors + draw_shapes( pm ); + draw_custom_waves( pm ); + draw_waveform( pm ); + if(pm->bDarkenCenter)darken_center( pm ); + draw_borders( pm ); //draw borders + + /** Restore original view state */ + glMatrixMode( GL_MODELVIEW ); + glPopMatrix(); + + glMatrixMode( GL_PROJECTION ); + glPopMatrix(); + + /** Restore all original attributes */ + // glPopAttrib(); + glFlush(); + + if ( pm->renderTarget != NULL ) { + unlockPBuffer( pm->renderTarget ); + } + + /** Reset the viewport size */ + glViewport( 0, 0, pm->vw, pm->vh ); + + if ( pm->renderTarget ) { + glBindTexture( GL_TEXTURE_2D, pm->renderTarget->textureID[0] ); + } + + //BEGIN PASS 2 + // + //end of texture rendering + //now we copy the texture from the framebuffer to + //video texture memory and render fullscreen on a quad surface. + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + glOrtho(-0.5, 0.5, -0.5,0.5,10,40); + + glLineWidth( pm->renderTarget->texsize < 512 ? 1 : pm->renderTarget->texsize/512.0); + if(pm->studio%2)render_texture_to_studio( pm ); + else render_texture_to_screen( pm ); + + // glClear(GL_COLOR_BUFFER_BIT); + //render_Studio(); + + //preset editing menu + glMatrixMode(GL_MODELVIEW); + + glTranslated(-0.5,-0.5,-1); + refreshConsole( pm ); + draw_title_to_screen( pm ); + if(pm->showhelp%2)draw_help( pm ); + if(pm->showtitle%2)draw_title( pm ); + if(pm->showfps%2)draw_fps( pm, pm->realfps); + if(pm->showpreset%2)draw_preset( pm ); + if(pm->showstats%2)draw_stats( pm ); + glTranslatef(0.5 ,0.5,1); + + /** Frame-rate limiter */ + /** Compute once per preset */ + if (pm->count%100==0) + { + pm->realfps=100.0/((getTicks(&pm->startTime)-pm->fpsstart)/1000); + pm->fpsstart=getTicks(&pm->startTime); + } + + int timediff = getTicks(&pm->startTime)-pm->timestart; + + if ( timediff < pm->mspf) + { + // printf("%s:",pm->mspf-timediff); + if ( usleep( (unsigned int)( pm->mspf-timediff ) * 1000 ) != 0 ) + { + } + } + pm->timestart=getTicks(&pm->startTime); + +} + + +extern "C" void projectM_reset( projectM_t *pm ) { + +#ifdef DEBUG + if ( debugFile != NULL ) { + fprintf( debugFile, "projectM_reset(): in\n" ); + fflush( debugFile ); + } +#endif + active_preset = NULL; + PM=pm; + + pm->presetURL = NULL; + pm->fontURL = NULL; + + /** Default variable settings */ + pm->hasInit = 0; + + pm->noSwitch = 0; + pm->pcmframes = 1; + pm->freqframes = 0; + pm->totalframes = 1; + + pm->showfps = 0; + pm->showtitle = 0; + pm->showpreset = 0; + pm->showhelp = 0; + pm->showstats = 0; + pm->studio = 0; + + + + /** Allocate a new render target */ +#ifdef PANTS + if ( pm->renderTarget ) { + if ( pm->renderTarget->renderTarget ) { + /** Free existing */ + free( pm->renderTarget->renderTarget ); + pm->renderTarget->renderTarget = NULL; + } + free( pm->renderTarget ); + pm->renderTarget = NULL; + } +#endif + pm->renderTarget = (RenderTarget *)wipemalloc( sizeof( RenderTarget ) ); + +#ifdef MACOS + pm->renderTarget->origContext = NULL; + pm->renderTarget->pbufferContext = NULL; + pm->renderTarget->pbuffer = NULL; +#endif + + /** Configurable engine variables */ + pm->renderTarget->texsize = 512; + pm->fvw = 800; + pm->fvh = 600; + pm->wvw = 512; + pm->wvh = 512; + pm->fullscreen = 0; + + /** Configurable mesh size */ + pm->gx = 48; + pm->gy = 36; + + /** PCM data */ + pm->maxsamples = 2048; + pm->numsamples = 0; + pm->pcmdataL = NULL; + pm->pcmdataR = NULL; + + + /** Frames per preset */ + pm->avgtime = 500; + + pm->title = NULL; + + /** Other stuff... */ + pm->correction = 0; + pm->vol = 0; + + /** Per pixel equation variables */ + pm->gridx = NULL; + pm->gridy = NULL; + pm->origtheta = NULL; + pm->origrad = NULL; + pm->origx = NULL; + pm->origy = NULL; + + /** More other stuff */ + pm->mspf = 0; + pm->timed = 0; + pm->timestart = 0; + pm->nohard = 0; + pm->count = 0; + pm->realfps = 0; + pm->fpsstart = 0; + + projectM_resetengine( pm ); + } + +extern "C" void projectM_init( projectM_t *pm ) { + PM=pm; + /** Reset fonts */ + title_font = NULL; + other_font = NULL; + poly_font = NULL; + /** Initialise engine variables */ + projectM_initengine( pm ); + + + DWRITE("projectM plugin: Initializing\n"); + + /** Initialise start time */ +#ifndef WIN32 + gettimeofday(&pm->startTime, NULL); +#else + pm->startTime = GetTickCount(); +#endif /** !WIN32 */ + + /** Nullify frame stash */ + pm->fbuffer = NULL; + + /** Initialise per-pixel matrix calculations */ + init_per_pixel_matrices( pm ); + + /* Preset loading function */ + initPresetLoader(pm); + if ( loadPresetDir( pm->presetURL ) == PROJECTM_ERROR ) { + switchToIdlePreset(); + } + +#ifdef PANTS + /* Load default preset directory */ +#ifdef MACOS2 + /** Probe the bundle for info */ + CFBundleRef bundle = CFBundleGetMainBundle(); + char msg[1024]; + sprintf( msg, "bundle: %X\n", bundle ); + DWRITE( msg ); + if ( bundle != NULL ) { + CFPlugInRef pluginRef = CFBundleGetPlugIn( bundle ); + if ( pluginRef != NULL ) { +#ifdef DEBUG + if ( debugFile != NULL ) { + fprintf( debugFile, "located plugin ref\n" ); + fflush( debugFile ); + } +#endif + } else { +#ifdef DEBUG + if ( debugFile != NULL ) { + fprintf( debugFile, "failed to find plugin ref\n" ); + fflush( debugFile ); + } +#endif + } + + CFURLRef bundleURL = CFBundleCopyBundleURL( bundle ); + if ( bundleURL == NULL ) { +#ifdef DEBUG + if ( debugFile != NULL ) { + fprintf( debugFile, "bundleURL failed\n" ); + fflush( debugFile ); + } +#endif + } else { +#ifdef DEBUG + if ( debugFile != NULL ) { + fprintf( debugFile, "bundleURL OK\n" ); + fflush( debugFile ); + } +#endif + } + char *bundleName = + (char *)CFStringGetCStringPtr( CFURLGetString( bundleURL ), kCFStringEncodingMacRoman ); +#ifdef DEBUG + if ( debugFile != NULL ) { + fprintf( debugFile, "bundleURL: %s\n", bundleName ); + fflush( debugFile ); + } +#endif + +#ifdef PANTS + presetURL = CFBundleCopyResourceURL( bundle, purl, NULL, NULL ); + if ( presetURL != NULL ) { + pm->presetURL = (char *)CFStringGetCStringPtr( CFURLCopyPath( presetURL ), kCFStringEncodingMacRoman); + sprintf( msg, "Preset: %s\n", pm->presetURL ); + DWRITE( msg ); + printf( msg ); + + /** Stash the short preset name */ + + } else { + DWRITE( "Failed to probe 'presets' bundle ref\n" ); + pm->presetURL = NULL; + } + + fontURL = CFBundleCopyResourceURL( bundle, furl, NULL, NULL ); + if ( fontURL != NULL ) { + pm->fontURL = (char *)CFStringGetCStringPtr( CFURLCopyPath( fontURL ), kCFStringEncodingMacRoman); + sprintf( msg, "Font: %s\n", pm->fontURL ); + DWRITE( msg ); + printf( msg ); + } else { + DWRITE( "Failed to probe 'fonts' bundle ref\n" ); + pm->fontURL = NULL; + } +#endif + } + + /** Sanity check */ + if ( bundle == NULL || pm->presetURL == NULL || pm->fontURL == NULL ) { + sprintf( msg, "defaulting presets\n" ); + DWRITE( msg ); + pm->fontURL = (char *)wipemalloc( sizeof( char ) * 512 ); +// strcpy( pm->fontURL, "../../fonts/" ); + strcpy( pm->fontURL, "/Users/descarte/tmp/projectM/fonts" ); + pm->fontURL[34] = '\0'; +// loadPresetDir( "../../presets/" ); + loadPresetDir( "/Users/descarte/tmp/projectM/presets_projectM" ); + } else { + printf( "PresetDir: %s\n", pm->presetURL ); + loadPresetDir( pm->presetURL ); + } +#else + if ( pm->presetURL == NULL || pm->fontURL == NULL ) { + char msg[1024]; + sprintf( msg, "defaulting presets\n" ); + DWRITE( msg ); + pm->fontURL = (char *)wipemalloc( sizeof( char ) * 512 ); +#ifdef WIN32 + strcpy( pm->fontURL, "c:\\tmp\\projectM\\fonts" ); + pm->fontURL[24] = '\0'; +#else + strcpy( pm->fontURL, "/Users/descarte/tmp/projectM/fonts" ); + pm->fontURL[34] = '\0'; + fprintf( debugFile, "loading font URL directly: %s\n", pm->fontURL ); + fflush( debugFile ); +#endif +#ifdef WIN32 + loadPresetDir( "c:\\tmp\\projectM\\presets_projectM" ); +#else + loadPresetDir( "/Users/descarte/tmp/projectM/presets_projectM" ); +#endif + } else { + printf( "PresetDir: %s\n", pm->presetURL ); + loadPresetDir( pm->presetURL ); + } + +#endif +#endif /** PANTS */ + +printf( "pre init_display()\n" ); + +printf( "post init_display()\n" ); + + pm->mspf=(int)(1000.0/(float)pm->fps); + + + + //create off-screen pbuffer (or not if unsupported) +// CreateRenderTarget(pm->renderTarget->texsize, &pm->textureID, &pm->renderTarget); +printf( "post CreaterenderTarget\n" ); + + pm->drawtitle=0; + + + /** Allocate PCM data structures */ + pm->pcmdataL=(float *)wipemalloc(pm->maxsamples*sizeof(float)); + pm->pcmdataR=(float *)wipemalloc(pm->maxsamples*sizeof(float)); + + initMenu(); +DWRITE( "post initMenu()\n" ); + + printf("mesh: %d %d\n", pm->gx,pm->gy ); + printf( "maxsamples: %d\n", pm->maxsamples ); + + initPCM(pm->maxsamples); + initBeatDetect(); +DWRITE( "post PCM init\n" ); + + pm->avgtime=pm->fps*20; + + pm->hasInit = 1; + + + createPBuffers( pm->renderTarget->texsize, pm->renderTarget->texsize , pm->renderTarget ); + +printf( "exiting projectM_init()\n" ); +} + +void free_per_pixel_matrices( projectM_t *pm ) +{ + int x; + + for(x = 0; x < pm->gx; x++) + { + + free(pm->gridx[x]); + free(pm->gridy[x]); + free(pm->origtheta[x]); + free(pm->origrad[x]); + free(pm->origx[x]); + free(pm->origy[x]); + free(pm->origx2[x]); + free(pm->origy2[x]); + free(pm->x_mesh[x]); + free(pm->y_mesh[x]); + free(pm->rad_mesh[x]); + free(pm->theta_mesh[x]); + + } + + + free(pm->origx); + free(pm->origy); + free(pm->origx2); + free(pm->origy2); + free(pm->gridx); + free(pm->gridy); + free(pm->x_mesh); + free(pm->y_mesh); + free(pm->rad_mesh); + free(pm->theta_mesh); + + pm->origx = NULL; + pm->origy = NULL; + pm->origx2 = NULL; + pm->origy2 = NULL; + pm->gridx = NULL; + pm->gridy = NULL; + pm->x_mesh = NULL; + pm->y_mesh = NULL; + pm->rad_mesh = NULL; + pm->theta_mesh = NULL; +} + + +void init_per_pixel_matrices( projectM_t *pm ) +{ + int x,y; + + pm->gridx=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->gridx[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } + pm->gridy=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->gridy[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } + pm->origtheta=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->origtheta[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } + pm->origrad=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->origrad[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } + pm->origx=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->origx[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } + pm->origy=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->origy[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } + pm->origx2=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->origx2[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } +pm->origy2=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->origy2[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } + pm->x_mesh=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->x_mesh[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } + pm->y_mesh=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->y_mesh[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + + } + pm->rad_mesh=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->rad_mesh[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } + pm->theta_mesh=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->theta_mesh[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } + pm->sx_mesh=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->sx_mesh[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } + pm->sy_mesh=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->sy_mesh[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } + pm->dx_mesh=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->dx_mesh[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } + pm->dy_mesh=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->dy_mesh[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } + pm->cx_mesh=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->cx_mesh[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } + pm->cy_mesh=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->cy_mesh[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } + pm->zoom_mesh=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->zoom_mesh[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } + pm->zoomexp_mesh=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->zoomexp_mesh[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } + pm->rot_mesh=(float **)wipemalloc(pm->gx * sizeof(float *)); + for(x = 0; x < pm->gx; x++) + { + pm->rot_mesh[x] = (float *)wipemalloc(pm->gy * sizeof(float)); + } + + + + //initialize reference grid values + for (x=0;xgx;x++) + { + for(y=0;ygy;y++) + { + pm->origx[x][y]=x/(float)(pm->gx-1); + pm->origy[x][y]=-((y/(float)(pm->gy-1))-1); + pm->origrad[x][y]=hypot((pm->origx[x][y]-.5)*2,(pm->origy[x][y]-.5)*2) * .7071067; + pm->origtheta[x][y]=atan2(((pm->origy[x][y]-.5)*2),((pm->origx[x][y]-.5)*2)); + pm->gridx[x][y]=pm->origx[x][y]*pm->renderTarget->texsize; + pm->gridy[x][y]=pm->origy[x][y]*pm->renderTarget->texsize; + pm->origx2[x][y]=( pm->origx[x][y]-.5)*2; + pm->origy2[x][y]=( pm->origy[x][y]-.5)*2; + }} +} + + + +//calculate matrices for per_pixel +void do_per_pixel_math( projectM_t *pm ) +{ + int x,y; + float fZoom2,fZoom2Inv; + + evalPerPixelEqns(active_preset); + + + + if(!isPerPixelEqn(CX_OP)) + { + for (x=0;xgx;x++){ + + for(y=0;ygy;y++){ + pm->cx_mesh[x][y]=pm->cx; + } + + } + } + + if(!isPerPixelEqn(CY_OP)) + { + for (x=0;xgx;x++){ + for(y=0;ygy;y++){ + pm->cy_mesh[x][y]=pm->cy; + }} + } + + if(!isPerPixelEqn(SX_OP)) + { + for (x=0;xgx;x++){ + for(y=0;ygy;y++){ + pm->sx_mesh[x][y]=pm->sx; + }} + } + + if(!isPerPixelEqn(SY_OP)) + { + for (x=0;xgx;x++){ + for(y=0;ygy;y++){ + pm->sy_mesh[x][y]=pm->sy; + }} + } + + if(!isPerPixelEqn(ZOOM_OP)) + { + for (x=0;xgx;x++){ + for(y=0;ygy;y++){ + pm->zoom_mesh[x][y]=pm->zoom; + }} + } + + if(!isPerPixelEqn(ZOOMEXP_OP)) + { + for (x=0;xgx;x++){ + for(y=0;ygy;y++){ + pm->zoomexp_mesh[x][y]=pm->zoomexp; + }} + } + + if(!isPerPixelEqn(ROT_OP)) + { + for (x=0;xgx;x++){ + for(y=0;ygy;y++){ + pm->rot_mesh[x][y]=pm->rot; + } + } + } + + /* + for (x=0;xgx;x++){ + for(y=0;ygy;y++){ + pm->x_mesh[x][y]=(pm->x_mesh[x][y]-.5)*2; + } + } + + for (x=0;xgx;x++){ + for(y=0;ygy;y++){ + pm->y_mesh[x][y]=(pm->y_mesh[x][y]-.5)*2; + } + } + */ + + for (x=0;xgx;x++){ + for(y=0;ygy;y++){ + fZoom2 = powf( pm->zoom_mesh[x][y], powf( pm->zoomexp_mesh[x][y], pm->rad_mesh[x][y]*2.0f - 1.0f)); + fZoom2Inv = 1.0f/fZoom2; + pm->x_mesh[x][y]= pm->origx2[x][y]*0.5f*fZoom2Inv + 0.5f; + pm->y_mesh[x][y]= pm->origy2[x][y]*0.5f*fZoom2Inv + 0.5f; + } + } + + for (x=0;xgx;x++){ + for(y=0;ygy;y++){ + pm->x_mesh[x][y] = ( pm->x_mesh[x][y] - pm->cx_mesh[x][y])/pm->sx_mesh[x][y] + pm->cx_mesh[x][y]; + } + } + + for (x=0;xgx;x++){ + for(y=0;ygy;y++){ + pm->y_mesh[x][y] = ( pm->y_mesh[x][y] - pm->cy_mesh[x][y])/pm->sy_mesh[x][y] + pm->cy_mesh[x][y]; + } + } + + + for (x=0;xgx;x++){ + for(y=0;ygy;y++){ + float u2 = pm->x_mesh[x][y] - pm->cx_mesh[x][y]; + float v2 = pm->y_mesh[x][y] - pm->cy_mesh[x][y]; + + float cos_rot = cosf(pm->rot_mesh[x][y]); + float sin_rot = sinf(pm->rot_mesh[x][y]); + + pm->x_mesh[x][y] = u2*cos_rot - v2*sin_rot + pm->cx_mesh[x][y]; + pm->y_mesh[x][y] = u2*sin_rot + v2*cos_rot + pm->cy_mesh[x][y]; + + } + } + + if(isPerPixelEqn(DX_OP)) + { + for (x=0;xgx;x++){ + for(y=0;ygy;y++){ + pm->x_mesh[x][y] -= pm->dx_mesh[x][y]; + } + } + } + + if(isPerPixelEqn(DY_OP)) + { + for (x=0;xgx;x++){ + for(y=0;ygy;y++){ + pm->y_mesh[x][y] -= pm->dy_mesh[x][y]; + } + } + + } + +} + +void reset_per_pixel_matrices( projectM_t *pm ) +{ + int x,y; + /* + for (x=0;xgx;x++) + { + memcpy(pm->x_mesh[x],pm->origx[x],sizeof(float)*pm->gy); + } + for (x=0;xgx;x++) + { + memcpy(pm->y_mesh[x],pm->origy[x],sizeof(float)*pm->gy); + } + for (x=0;xgx;x++) + { + memcpy(pm->rad_mesh[x],pm->origrad[x],sizeof(float)*pm->gy); + } + for (x=0;xgx;x++) + { + memcpy(pm->theta_mesh[x],pm->origtheta[x],sizeof(float)*pm->gy); + } + */ + + for (x=0;xgx;x++) + { + for(y=0;ygy;y++) + { + pm->x_mesh[x][y]=pm->origx[x][y]; + pm->y_mesh[x][y]=pm->origy[x][y]; + pm->rad_mesh[x][y]=pm->origrad[x][y]; + pm->theta_mesh[x][y]=pm->origtheta[x][y]; + } + } + + //memcpy(pm->x_mesh,pm->origx,sizeof(float)*pm->gy*pm->gx); + //memcpy(pm->y_mesh,pm->origy,sizeof(float)*pm->gy*pm->gx); + //memcpy(pm->rad_mesh,pm->origrad,sizeof(float)*pm->gy*pm->gx); + //memcpy(pm->theta_mesh,pm->origtheta,sizeof(float)*pm->gy*pm->gx); + } + +void rescale_per_pixel_matrices( projectM_t *pm ) { + + int x, y; + + for ( x = 0 ; x < pm->gx ; x++ ) { + for ( y = 0 ; y < pm->gy ; y++ ) { + pm->gridx[x][y]=pm->origx[x][y]; + pm->gridy[x][y]=pm->origy[x][y]; + + } + } + } + +void draw_custom_waves( projectM_t *pm ) +{ + int x; + + custom_wave_t *wavecode; + glPointSize(pm->renderTarget->texsize < 512 ? 1 : pm->renderTarget->texsize/512); + + while ((wavecode = nextCustomWave(active_preset)) != NULL) + { + + if(wavecode->enabled==1) + { + + if (wavecode->bAdditive==0) glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + else glBlendFunc(GL_SRC_ALPHA, GL_ONE); + if (wavecode->bDrawThick==1) glLineWidth(pm->renderTarget->texsize < 512 ? 1 : 2*pm->renderTarget->texsize/512); + + getPCM(wavecode->value1,wavecode->samples,0,wavecode->bSpectrum,wavecode->smoothing,0); + getPCM(wavecode->value2,wavecode->samples,1,wavecode->bSpectrum,wavecode->smoothing,0); + // printf("%f\n",pcmL[0]); + + float mult=wavecode->scaling*pm->fWaveScale*(wavecode->bSpectrum ? 0.015f :1.0f); + + for(x=0;xsamples;x++) + {wavecode->value1[x]*=mult;} + + for(x=0;xsamples;x++) + {wavecode->value2[x]*=mult;} + + for(x=0;xsamples;x++) + {wavecode->sample_mesh[x]=((float)x)/((float)(wavecode->samples-1));} + + // printf("mid inner loop\n"); + evalPerPointEqns(active_preset); + + //put drawing code here + if (wavecode->bUseDots==1) glBegin(GL_POINTS); + else glBegin(GL_LINE_STRIP); + + for(x=0;xsamples;x++) + { + + glColor4f(wavecode->r_mesh[x],wavecode->g_mesh[x],wavecode->b_mesh[x],wavecode->a_mesh[x]); + glVertex3f(wavecode->x_mesh[x],-(wavecode->y_mesh[x]-1),-1); + } + glEnd(); + glPointSize(pm->renderTarget->texsize < 512 ? 1 : pm->renderTarget->texsize/512); + glLineWidth(pm->renderTarget->texsize < 512 ? 1 : pm->renderTarget->texsize/512); + glDisable(GL_LINE_STIPPLE); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + // glPopMatrix(); + + } + + } +} + +void darken_center( projectM_t *pm ) +{ + int unit=0.05f; + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glTranslatef(0.5,0.5, 0); + + glBegin(GL_TRIANGLE_FAN); + glColor4f(0,0,0,3.0f/32.0f); + glVertex3f(0,0,-1); + glColor4f(0,0,0,-1); + glVertex3f(-unit,0,-1); + glVertex3f(0,-unit,-1); + glVertex3f(unit,0,-1); + glVertex3f(0,unit,-1); + glVertex3f(-unit,0,-1); + glEnd(); + + glPopMatrix(); +} + +void draw_shapes( projectM_t *pm ) +{ + int i; + + float theta; + float radius; + + custom_shape_t *shapecode; + + float pi = 3.14159265; + float start,inc,xval,yval; + + float t; + + // more=isMoreCustomWave(); + // printf("not inner loop\n"); + + while ((shapecode = nextCustomShape(active_preset)) != NULL) + { + + if(shapecode->enabled==1) + { + // printf("drawing shape %f\n",shapecode->ang); + shapecode->y=-((shapecode->y)-1); + radius=.5; + shapecode->radius=shapecode->radius*(.707*.707*.707*1.04); + //Additive Drawing or Overwrite + if (shapecode->additive==0) glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + else glBlendFunc(GL_SRC_ALPHA, GL_ONE); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + + if(pm->correction) + { + glTranslatef(0.5,0.5, 0); + glScalef(1.0,pm->vw/(float)pm->vh,1.0); + glTranslatef(-0.5 ,-0.5,0); + } + + + xval=shapecode->x; + yval=shapecode->y; + + if (shapecode->textured) + { + glMatrixMode(GL_TEXTURE); + glPushMatrix(); + glLoadIdentity(); + //glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + //glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + + //glTranslatef(.5,.5, 0); + //if (pm->correction) glScalef(1,pm->vw/(float)pm->vh,1); + + //glRotatef((shapecode->tex_ang*360/6.280), 0, 0, 1); + + //glScalef(1/(shapecode->tex_zoom),1/(shapecode->tex_zoom),1); + + // glScalef(1,vh/(float)vw,1); + //glTranslatef((-.5) ,(-.5),0); + // glScalef(1,pm->vw/(float)pm->vh,1); + glEnable(GL_TEXTURE_2D); + + + glBegin(GL_TRIANGLE_FAN); + glColor4f(0.0,0.0,0.0,shapecode->a); + //glColor4f(shapecode->r,shapecode->g,shapecode->b,shapecode->a); + + glTexCoord2f(.5,.5); + glVertex3f(xval,yval,-1); + //glColor4f(shapecode->r2,shapecode->g2,shapecode->b2,shapecode->a2); + glColor4f(0.0,0.0,0.0,shapecode->a2); + + for ( i=1;isides+2;i++) + { + + // theta+=inc; + // glColor4f(shapecode->r2,shapecode->g2,shapecode->b2,shapecode->a2); + //glTexCoord2f(radius*cos(theta)+.5 ,radius*sin(theta)+.5 ); + //glVertex3f(shapecode->radius*cos(theta)+xval,shapecode->radius*sin(theta)+yval,-1); + t = (i-1)/(float)shapecode->sides; + + glTexCoord2f( 0.5f + 0.5f*cosf(t*3.1415927f*2 + shapecode->tex_ang + 3.1415927f*0.25f)/shapecode->tex_zoom, 0.5f + 0.5f*sinf(t*3.1415927f*2 + shapecode->tex_ang + 3.1415927f*0.25f)/shapecode->tex_zoom); + glVertex3f(shapecode->radius*cosf(t*3.1415927f*2 + shapecode->ang + 3.1415927f*0.25f)+xval, shapecode->radius*sinf(t*3.1415927f*2 + shapecode->ang + 3.1415927f*0.25f)+yval,-1); + } + glEnd(); + + + + + glDisable(GL_TEXTURE_2D); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); + } + else{//Untextured (use color values) + //printf("untextured %f %f %f @:%f,%f %f %f\n",shapecode->a2,shapecode->a,shapecode->border_a, shapecode->x,shapecode->y,shapecode->radius,shapecode->ang); + //draw first n-1 triangular pieces + glBegin(GL_TRIANGLE_FAN); + + glColor4f(shapecode->r,shapecode->g,shapecode->b,shapecode->a); + + // glTexCoord2f(.5,.5); + glVertex3f(xval,yval,-1); + glColor4f(shapecode->r2,shapecode->g2,shapecode->b2,shapecode->a2); + + for ( i=1;isides+2;i++) + { + + //theta+=inc; + // glColor4f(shapecode->r2,shapecode->g2,shapecode->b2,shapecode->a2); + // glTexCoord2f(radius*cos(theta)+.5 ,radius*sin(theta)+.5 ); + //glVertex3f(shapecode->radius*cos(theta)+xval,shapecode->radius*sin(theta)+yval,-1); + + t = (i-1)/(float)shapecode->sides; + + glVertex3f(shapecode->radius*cosf(t*3.1415927f*2 + shapecode->ang + 3.1415927f*0.25f)+xval, shapecode->radius*sinf(t*3.1415927f*2 + shapecode->ang + 3.1415927f*0.25f)+yval,-1); + } + glEnd(); + + + } + if (pm->bWaveThick==1) glLineWidth(pm->renderTarget->texsize < 512 ? 1 : 2*pm->renderTarget->texsize/512); + glBegin(GL_LINE_LOOP); + glColor4f(shapecode->border_r,shapecode->border_g,shapecode->border_b,shapecode->border_a); + for ( i=1;isides+1;i++) + { + + t = (i-1)/(float)shapecode->sides; + + glVertex3f(shapecode->radius*cosf(t*3.1415927f*2 + shapecode->ang + 3.1415927f*0.25f)+xval, shapecode->radius*sinf(t*3.1415927f*2 + shapecode->ang + 3.1415927f*0.25f)+yval,-1); + + //theta+=inc; + //glVertex3f(shapecode->radius*cos(theta)+xval,shapecode->radius*sin(theta)+yval,-1); + } + glEnd(); + if (pm->bWaveThick==1) glLineWidth(pm->renderTarget->texsize < 512 ? 1 : pm->renderTarget->texsize/512); + + glPopMatrix(); + } + } + +} + + +void draw_waveform( projectM_t *pm ) +{ + + int x; + + float r,theta; + + float offset,scale,dy2_adj; + + float co; + + float wave_x_temp=0; + float wave_y_temp=0; + float dy_adj; + float xx,yy; + + float cos_rot; + float sin_rot; + + modulate_opacity_by_volume(pm); + maximize_colors(pm); + + if(pm->bWaveDots==1) glEnable(GL_LINE_STIPPLE); + + offset=pm->wave_x-.5; + scale=505.0/512.0; + + + + + //Thick wave drawing + if (pm->bWaveThick==1) glLineWidth( (pm->renderTarget->texsize < 512 ) ? 1 : 2*pm->renderTarget->texsize/512); + + //Additive wave drawing (vice overwrite) + if (pm->bAdditiveWaves==0) glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + else glBlendFunc(GL_SRC_ALPHA, GL_ONE); + + switch(pm->nWaveMode) + { + + case 8://monitor + + glPushMatrix(); + + glTranslatef(0.5,0.5, 0); + glRotated(-pm->wave_mystery*90,0,0,1); + + glTranslatef(-0.5,-0.825, 0); + + /* + for (x=0;x<16;x++) + { + glBegin(GL_LINE_STRIP); + glColor4f(1.0-(x/15.0),.5,x/15.0,1.0); + glVertex3f((pm->totalframes%256)*2*scale, -pm->beat_val[x]*pm->fWaveScale+renderTarget->texsize*wave_y,-1); + glColor4f(.5,.5,.5,1.0); + glVertex3f((pm->totalframes%256)*2*scale, pm->renderTarget->texsize*pm->wave_y,-1); + glColor4f(1.0,1.0,0,1.0); + //glVertex3f((pm->totalframes%256)*scale*2, pm->beat_val_att[x]*pm->fWaveScale+pm->renderTarget->texsize*pm->wave_y,-1); + glEnd(); + + glTranslatef(0,pm->renderTarget->texsize*(1/36.0), 0); + } + */ + + glTranslatef(0,(1/18.0), 0); + + + glBegin(GL_LINE_STRIP); + glColor4f(1.0,1.0,0.5,1.0); + glVertex3f((pm->totalframes%256)*2*scale, pm->treb_att*5*pm->fWaveScale+pm->wave_y,-1); + glColor4f(.2,.2,.2,1.0); + glVertex3f((pm->totalframes%256)*2*scale, pm->wave_y,-1); + glColor4f(1.0,1.0,0,1.0); + glVertex3f((pm->totalframes%256)*scale*2, pm->treb*-5*pm->fWaveScale+pm->wave_y,-1); + glEnd(); + + glTranslatef(0,.075, 0); + glBegin(GL_LINE_STRIP); + glColor4f(0,1.0,0.0,1.0); + glVertex3f((pm->totalframes%256)*2*scale, pm->mid_att*5*pm->fWaveScale+pm->wave_y,-1); + glColor4f(.2,.2,.2,1.0); + glVertex3f((pm->totalframes%256)*2*scale, pm->wave_y,-1); + glColor4f(.5,1.0,.5,1.0); + glVertex3f((pm->totalframes%256)*scale*2, pm->mid*-5*pm->fWaveScale+pm->wave_y,-1); + glEnd(); + + + glTranslatef(0,.075, 0); + glBegin(GL_LINE_STRIP); + glColor4f(1.0,0,0,1.0); + glVertex3f((pm->totalframes%256)*2*scale, pm->bass_att*5*pm->fWaveScale+pm->wave_y,-1); + glColor4f(.2,.2,.2,1.0); + glVertex3f((pm->totalframes%256)*2*scale, pm->wave_y,-1); + glColor4f(1.0,.5,.5,1.0); + glVertex3f((pm->totalframes%256)*scale*2, pm->bass*-5*pm->fWaveScale+pm->wave_y,-1); + glEnd(); + + + glPopMatrix(); + break; + + case 0://circular waveforms + // float co; + // glPushMatrix(); + /* + if(pm->correction) + { + glTranslatef(pm->renderTarget->texsize*.5,pm->renderTarget->texsize*.5, 0); + glScalef(1.0,pm->vw/(float)pm->vh,1.0); + glTranslatef((-pm->renderTarget->texsize*.5) ,(-pm->renderTarget->texsize*.5),0); + } + */ + pm->wave_y=-1*(pm->wave_y-1.0); + + glBegin(GL_LINE_STRIP); + + for ( x=0;xnumsamples;x++) + { float inv_nverts_minus_one = 1.0f/(float)(pm->numsamples); + //co= -(fabs(x-((pm->numsamples*.5)-1))/pm->numsamples)+1; + // printf("%d %f\n",x,co); + //theta=x*(6.28/pm->numsamples); + //r= ((1+2*pm->wave_mystery)*(pm->renderTarget->texsize/5.0)+ + // ( co*pm->pcmdataL[x]+ (1-co)*pm->pcmdataL[-(x-(pm->numsamples-1))]) + // *25*pm->fWaveScale); + r=(0.5 + 0.4f*.12*pm->pcmdataR[x]*pm->fWaveScale + pm->wave_mystery)*.5; + theta=(x)*inv_nverts_minus_one*6.28f + pm->Time*0.2f; + /* + if (x < 51) + { + float mix = x/51.0; + mix = 0.5f - 0.5f*cosf(mix * 3.1416f); + float rad_2 = 0.5f + 0.4f*.12*pm->pcmdataR[x]*pm->fWaveScale + pm->wave_mystery; + r = rad_2*(1.0f-mix) + r*(mix); + } + */ + glVertex3f((r*cos(theta)+pm->wave_x), (r*sin(theta)+pm->wave_y),-1); + } + + // r= ( (1+2*pm->wave_mystery)*(pm->renderTarget->texsize/5.0)+ + // (0.5*pm->pcmdataL[0]+ 0.5*pm->pcmdataL[pm->numsamples-1]) + // *20*pm->fWaveScale); + + //glVertex3f(r*cos(0)+(pm->wave_x*pm->renderTarget->texsize),r*sin(0)+(pm->wave_y*pm->renderTarget->texsize),-1); + + glEnd(); + /* + glBegin(GL_LINE_LOOP); + + for ( x=0;x<(512/pcmbreak);x++) + { + theta=(blockstart+x)*((6.28*pcmbreak)/512.0); + r= ((1+2*pm->wave_mystery)*(pm->renderTarget->texsize/5.0)+fdata_buffer[fbuffer][0][blockstart+x]*.0025*pm->fWaveScale); + + glVertex3f(r*cos(theta)+(pm->wave_x*pm->renderTarget->texsize),r*sin(theta)+(wave_y*pm->renderTarget->texsize),-1); + } + glEnd(); + */ + //glPopMatrix(); + + break; + + case 1://circularly moving waveform + // float co; + glPushMatrix(); + + glTranslatef(.5,.5, 0); + glScalef(1.0,pm->vw/(float)pm->vh,1.0); + glTranslatef((-.5) ,(-.5),0); + + pm->wave_y=-1*(pm->wave_y-1.0); + + glBegin(GL_LINE_STRIP); + //theta=(frame%512)*(6.28/512.0); + + for ( x=1;x<(512-32);x++) + { + //co= -(abs(x-255)/512.0)+1; + // printf("%d %f\n",x,co); + //theta=((pm->frame%256)*(2*6.28/512.0))+pm->pcmdataL[x]*.2*pm->fWaveScale; + //r= ((1+2*pm->wave_mystery)*(pm->renderTarget->texsize/5.0)+ + // (pm->pcmdataL[x]-pm->pcmdataL[x-1])*80*pm->fWaveScale); + theta=pm->pcmdataL[x+32]*0.06*pm->fWaveScale * 1.57 + pm->Time*2.3; + r=(0.53 + 0.43*pm->pcmdataR[x]*0.12*pm->fWaveScale+ pm->wave_mystery)*.5; + + glVertex3f((r*cos(theta)+pm->wave_x),(r*sin(theta)+pm->wave_y),-1); + } + + glEnd(); + /* + pm->wave_y=-1*(pm->wave_y-1.0); + wave_x_temp=(pm->wave_x*.75)+.125; + wave_x_temp=-(wave_x_temp-1); + + glBegin(GL_LINE_STRIP); + + + + for (x=0; x<512-32; x++) + { + float rad = (.53 + 0.43*pm->pcmdataR[x]) + pm->wave_mystery; + float ang = pm->pcmdataL[x+32] * 1.57f + pm->Time*2.3f; + glVertex3f((rad*cosf(ang)*.2*scale*pm->fWaveScale + wave_x_temp)*pm->renderTarget->texsize,(rad*sinf(ang)*pm->fWaveScale*.2*scale + pm->wave_y)*pm->renderTarget->texsize,-1); + + } + glEnd(); + */ + glPopMatrix(); + + break; + + case 2://EXPERIMENTAL + + glPushMatrix(); + + + pm->wave_y=-1*(pm->wave_y-1.0); + + + glBegin(GL_LINE_STRIP); + + for (x=0; x<512-32; x++) + { + + glVertex3f((pm->pcmdataR[x]*pm->fWaveScale*0.5 + pm->wave_x),( (pm->pcmdataL[x+32]*pm->fWaveScale*0.5 + pm->wave_y)),-1); + + } + glEnd(); + + + glPopMatrix(); + break; + + case 3://EXPERIMENTAL + glPushMatrix(); + + pm->wave_y=-1*(pm->wave_y-1.0); + //wave_x_temp=(pm->wave_x*.75)+.125; + //wave_x_temp=-(wave_x_temp-1); + + + + glBegin(GL_LINE_STRIP); + + for (x=0; x<512-32; x++) + { + + glVertex3f((pm->pcmdataR[x] * pm->fWaveScale*0.5 + pm->wave_x),( (pm->pcmdataL[x+32]*pm->fWaveScale*0.5 + pm->wave_y)),-1); + + } + glEnd(); + + glPopMatrix(); + break; + + case 4://single x-axis derivative waveform + { + glPushMatrix(); + pm->wave_y=-1*(pm->wave_y-1.0); + glTranslatef(.5,.5, 0); + glRotated(-pm->wave_mystery*90,0,0,1); + glTranslatef(-.5,-.5, 0); + + float w1 = 0.45f + 0.5f*(pm->wave_mystery*0.5f + 0.5f); + float w2 = 1.0f - w1; + float xx[512],yy[512]; + + glBegin(GL_LINE_STRIP); + for (int i=0; i<512; i++) + { + xx[i] = -1.0f + 2.0f*(i/512.0) + pm->wave_x; + yy[i] =0.4* pm->pcmdataL[i]*0.47f*pm->fWaveScale + pm->wave_y; + xx[i] += 0.4*pm->pcmdataR[i]*0.44f*pm->fWaveScale; + + if (i>1) + { + xx[i] = xx[i]*w2 + w1*(xx[i-1]*2.0f - xx[i-2]); + yy[i] = yy[i]*w2 + w1*(yy[i-1]*2.0f - yy[i-2]); + } + glVertex3f(xx[i],yy[i],-1); + } + + glEnd(); + + /* + pm->wave_x=(pm->wave_x*.75)+.125; + pm->wave_x=-(pm->wave_x-1); + glBegin(GL_LINE_STRIP); + + for ( x=1;x<512;x++) + { + dy_adj= pm->pcmdataL[x]*20*pm->fWaveScale-pm->pcmdataL[x-1]*20*pm->fWaveScale; + glVertex3f((x*(pm->renderTarget->texsize/512))+dy_adj, pm->pcmdataL[x]*20*pm->fWaveScale+pm->renderTarget->texsize*pm->wave_x,-1); + } + glEnd(); + */ + glPopMatrix(); + } + break; + + case 5://EXPERIMENTAL + glPushMatrix(); + + + + pm->wave_y=-1*(pm->wave_y-1.0); + + cos_rot = cosf(pm->Time*0.3f); + sin_rot = sinf(pm->Time*0.3f); + + glBegin(GL_LINE_STRIP); + + for (x=0; x<512; x++) + { + float x0 = (pm->pcmdataR[x]*pm->pcmdataL[x+32] + pm->pcmdataL[x+32]*pm->pcmdataR[x]); + float y0 = (pm->pcmdataR[x]*pm->pcmdataR[x] - pm->pcmdataL[x+32]*pm->pcmdataL[x+32]); + glVertex3f(((x0*cos_rot - y0*sin_rot)*pm->fWaveScale*0.5 + pm->wave_x),( (x0*sin_rot + y0*cos_rot)*pm->fWaveScale*0.5 + pm->wave_y) ,-1); + + } + glEnd(); + + + + glPopMatrix(); + break; + + case 6://single waveform + + + glTranslatef(0,0, -1); + + //glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + // glLoadIdentity(); + + glTranslatef(.5,.5, 0); + glRotated(-pm->wave_mystery*90,0,0,1); + + wave_x_temp=-2*0.4142*(fabs(fabs(pm->wave_mystery)-.5)-.5); + glScalef(1.0+wave_x_temp,1.0,1.0); + glTranslatef(-.5,-.5, 0); + wave_x_temp=-1*(pm->wave_x-1.0); + + glBegin(GL_LINE_STRIP); + // wave_x_temp=(wave_x*.75)+.125; + // wave_x_temp=-(wave_x_temp-1); + for ( x=0;xnumsamples;x++) + { + + //glVertex3f(x*scale, fdata_buffer[fbuffer][0][blockstart+x]*.0012*fWaveScale+renderTarget->texsize*wave_x_temp,-1); + glVertex3f(x/(float)pm->numsamples, pm->pcmdataR[x]*.04*pm->fWaveScale+wave_x_temp,-1); + + //glVertex3f(x*scale, renderTarget->texsize*wave_y_temp,-1); + } + // printf("%f %f\n",renderTarget->texsize*wave_y_temp,wave_y_temp); + glEnd(); + glPopMatrix(); + break; + + case 7://dual waveforms + + glPushMatrix(); + + glTranslatef(.5,.5, 0); + glRotated(-pm->wave_mystery*90,0,0,1); + + wave_x_temp=-2*0.4142*(fabs(fabs(pm->wave_mystery)-.5)-.5); + glScalef(1.0+wave_x_temp,1.0,1.0); + glTranslatef(-.5,-.5, 0); + + wave_y_temp=-1*(pm->wave_x-1); + + glBegin(GL_LINE_STRIP); + + for ( x=0;xnumsamples;x++) + { + + glVertex3f(x/(float)pm->numsamples, pm->pcmdataL[x]*.04*pm->fWaveScale+(wave_y_temp+(pm->wave_y*pm->wave_y*.5)),-1); + } + glEnd(); + + glBegin(GL_LINE_STRIP); + + + for ( x=0;xnumsamples;x++) + { + + glVertex3f(x/(float)pm->numsamples, pm->pcmdataR[x]*.04*pm->fWaveScale+(wave_y_temp-(pm->wave_y*pm->wave_y*.5)),-1); + } + glEnd(); + glPopMatrix(); + break; + + default: + glBegin(GL_LINE_LOOP); + + for ( x=0;x<512;x++) + { + theta=(x)*(6.28/512.0); + r= (0.2+pm->pcmdataL[x]*.002); + + glVertex3f(r*cos(theta)+pm->wave_x,r*sin(theta)+pm->wave_y,-1); + } + glEnd(); + +glBegin(GL_LINE_STRIP); + + for ( x=0;x<512;x++) + { + glVertex3f(x*scale, pm->pcmdataL[x]*.04*pm->fWaveScale+((pm->wave_x+.1)),-1); + } + glEnd(); + + glBegin(GL_LINE_STRIP); + + for ( x=0;x<512;x++) + { + glVertex3f(x*scale, pm->pcmdataR[x]*.04*pm->fWaveScale+((pm->wave_x-.1)),-1); + + } + glEnd(); + break; + if (pm->bWaveThick==1) glLineWidth( (pm->renderTarget->texsize < 512) ? 1 : 2*pm->renderTarget->texsize/512); +} + glLineWidth( pm->renderTarget->texsize < 512 ? 1 : pm->renderTarget->texsize/512); + glDisable(GL_LINE_STIPPLE); +} + +void maximize_colors( projectM_t *pm ) +{ + + float wave_r_switch=0,wave_g_switch=0,wave_b_switch=0; + //wave color brightening + // + //forces max color value to 1.0 and scales + // the rest accordingly + if(pm->nWaveMode==2 || pm->nWaveMode==5) + { + switch(pm->renderTarget->texsize) + { + case 256: pm->wave_o *= 0.07f; break; + case 512: pm->wave_o *= 0.09f; break; + case 1024: pm->wave_o *= 0.11f; break; + case 2048: pm->wave_o *= 0.13f; break; + } + } + + else if(pm->nWaveMode==3) + { + switch(pm->renderTarget->texsize) + { + case 256: pm->wave_o *= 0.075f; break; + case 512: pm->wave_o *= 0.15f; break; + case 1024: pm->wave_o *= 0.22f; break; + case 2048: pm->wave_o *= 0.33f; break; + } + pm->wave_o*=1.3f; + pm->wave_o*=powf(pm->treb ,2.0f); + } + + if (pm->bMaximizeWaveColor==1) + { + if(pm->wave_r>=pm->wave_g && pm->wave_r>=pm->wave_b) //red brightest + { + wave_b_switch=pm->wave_b*(1/pm->wave_r); + wave_g_switch=pm->wave_g*(1/pm->wave_r); + wave_r_switch=1.0; + } + else if (pm->wave_b>=pm->wave_g && pm->wave_b>=pm->wave_r) //blue brightest + { + wave_r_switch=pm->wave_r*(1/pm->wave_b); + wave_g_switch=pm->wave_g*(1/pm->wave_b); + wave_b_switch=1.0; + + } + + else if (pm->wave_g>=pm->wave_b && pm->wave_g>=pm->wave_r) //green brightest + { + wave_b_switch=pm->wave_b*(1/pm->wave_g); + wave_r_switch=pm->wave_r*(1/pm->wave_g); + wave_g_switch=1.0; + } + + + glColor4f(wave_r_switch, wave_g_switch, wave_b_switch, pm->wave_o); + } + else + { + glColor4f(pm->wave_r, pm->wave_g, pm->wave_b, pm->wave_o); + } + +} + + +void modulate_opacity_by_volume( projectM_t *pm ) + +{ + //modulate volume by opacity + // + //set an upper and lower bound and linearly + //calculate the opacity from 0=lower to 1=upper + //based on current volume + + + if (pm->bModWaveAlphaByVolume==1) + {if (pm->vol<=pm->fModWaveAlphaStart) pm->wave_o=0.0; + else if (pm->vol>=pm->fModWaveAlphaEnd) pm->wave_o=pm->fWaveAlpha; + else pm->wave_o=pm->fWaveAlpha*((pm->vol-pm->fModWaveAlphaStart)/(pm->fModWaveAlphaEnd-pm->fModWaveAlphaStart));} + else pm->wave_o=pm->fWaveAlpha; +} + +void draw_motion_vectors( projectM_t *pm ) + +{ + int x,y; + + float offsetx=pm->mv_dx, intervalx=1.0/(float)pm->mv_x; + float offsety=pm->mv_dy, intervaly=1.0/(float)pm->mv_y; + //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glPointSize(pm->mv_l); + glColor4f(pm->mv_r, pm->mv_g, pm->mv_b, pm->mv_a); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + glTranslated(0, 0, -9); + + glBegin(GL_POINTS); + for (x=0;xmv_x;x++){ + for(y=0;ymv_y;y++){ + glVertex3f(offsetx+x*intervalx,offsety+y*intervaly,-1); + }} + + glEnd(); + glPopMatrix(); +} + + +void draw_borders( projectM_t *pm ) +{ + //Draw Borders + float of=pm->ob_size*.5; + float iff=pm->ib_size*.5; + float texof=1.0-of; + + //no additive drawing for borders + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glTranslatef(0,0,-1); + + glColor4d(pm->ob_r,pm->ob_g,pm->ob_b,pm->ob_a); + + glRectd(0,0,of,1); + glRectd(of,0,texof,of); + glRectd(texof,0,1,1); + glRectd(of,1,texof,texof); + glColor4d(pm->ib_r,pm->ib_g,pm->ib_b,pm->ib_a); + glRectd(of,of,of+iff,texof); + glRectd(of+iff,of,texof-iff,of+iff); + glRectd(texof-iff,of,texof,texof); + glRectd(of+iff,texof,texof-iff,texof-iff); + +} + + + +void draw_title_to_texture( projectM_t *pm ) +{ + + if (pm->drawtitle>80) + // if(1) + { + glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ZERO); + glColor4f(1.0,1.0,1.0,1.0); + glPushMatrix(); + + glTranslatef(0,0.5, -1); + + glScalef(0.0025,-0.0025,30*.0025); + //glTranslatef(0,0, 1.0); + poly_font->FaceSize( 22); + + glRasterPos2f(0.0, 0.0); + + if ( pm->title != NULL ) { + poly_font->Render(pm->title ); + } else { + poly_font->Render("Unknown" ); + } + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + glPopMatrix(); + pm->drawtitle=0; + } + +} + +void draw_title_to_screen( projectM_t *pm ) +{ + + if(pm->drawtitle>0) + { + float easein = ((80-pm->drawtitle)*.0125); + float easein2 = easein * easein; + float easein3 = .0025/((-easein2)+1.0); + + glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ZERO); + glColor4f(1.0,1.0,1.0,1.0); + glPushMatrix(); + + + //glTranslatef(pm->vw*.5,pm->vh*.5 , -1.0); + glTranslatef(0,0.5 , -1.0); + + glScalef(easein3,easein3,30*.0025); + + glRotatef(easein2*360,1,0,0); + + + //glTranslatef(-.5*pm->vw,0, 0.0); + + //poly_font->Depth(1.0); + poly_font->FaceSize(22); + + glRasterPos2f(0.0, 0.0); + if ( pm->title != NULL ) { + poly_font->Render(pm->title ); + } else { + poly_font->Render("Unknown" ); + } + // poly_font->Depth(0.0); + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + glPopMatrix(); + + pm->drawtitle++; + + } +} + +void draw_title( projectM_t *pm ) +{ + //glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ZERO); + + glColor4f(1.0,1.0,1.0,1.0); + // glPushMatrix(); + // glTranslatef(pm->vw*.001,pm->vh*.03, -1); + // glScalef(pm->vw*.015,pm->vh*.025,0); + + glRasterPos2f(0.01, 0.05); + title_font->FaceSize( 20*(pm->vh/512.0)); + + if ( pm->title != NULL ) { + title_font->Render(pm->title ); + } else { + title_font->Render("Unknown" ); + } + // glPopMatrix(); + //glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + + +} +void draw_preset( projectM_t *pm ) +{ + //glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ZERO); + + glColor4f(1.0,1.0,1.0,1.0); + // glPushMatrix(); + //glTranslatef(pm->vw*.001,pm->vh*-.01, -1); + //glScalef(pm->vw*.003,pm->vh*.004,0); + + + glRasterPos2f(0.01, 0.01); + + title_font->FaceSize(12*(pm->vh/512.0)); + if(pm->noSwitch) title_font->Render("[LOCKED] " ); + title_font->FaceSize(20*(pm->vh/512.0)); + title_font->Render(pm->presetName ); + + + + //glPopMatrix(); + // glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + +} + +void draw_help( projectM_t *pm ) +{ //glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ZERO); + + glColor4f(1.0,1.0,1.0,1.0); + glPushMatrix(); + glTranslatef(0,1, 0); + //glScalef(pm->vw*.02,pm->vh*.02 ,0); + + + title_font->FaceSize( 18*(pm->vh/512.0)); + + glRasterPos2f(0.01, -0.05); + title_font->Render("Help"); + + glRasterPos2f(0.01, -0.09); + title_font->Render("----------------------------"); + + glRasterPos2f(0.01, -0.13); + title_font->Render("F1: This help menu"); + + glRasterPos2f(0.01, -0.17); + title_font->Render("F2: Show song title"); + + glRasterPos2f(0.01, -0.21); + title_font->Render("F3: Show preset name"); + + glRasterPos2f(0.01, -0.25); + title_font->Render("F4: Show Rendering Settings"); + + glRasterPos2f(0.01, -0.29); + title_font->Render("F5: Show FPS"); + + glRasterPos2f(0.01, -0.35); + title_font->Render("F: Fullscreen"); + + glRasterPos2f(0.01, -0.39); + title_font->Render("L: Lock/Unlock Preset"); + + glRasterPos2f(0.01, -0.43); + title_font->Render("M: Show Menu"); + + glRasterPos2f(0.01, -0.49); + title_font->Render("R: Random preset"); + + glRasterPos2f(0.01, -0.53); + title_font->Render("N: Next preset"); + + glRasterPos2f(0.01, -0.57); + title_font->Render("P: Previous preset"); + + glPopMatrix(); + // glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + +} +void draw_stats( projectM_t *pm) +{ + char buffer[128]; + float offset= (pm->showfps%2 ? -0.05 : 0.0); + // glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ZERO); + + glColor4f(1.0,1.0,1.0,1.0); + glPushMatrix(); + glTranslatef(0.01,1, 0); + glRasterPos2f(0, -.05+offset); + other_font->FaceSize(18*(pm->vh/512.0)); + + sprintf( buffer, " texsize: %d", pm->renderTarget->texsize); + other_font->Render(buffer); + + glRasterPos2f(0, -.09+offset); + other_font->Render((pm->renderTarget->usePbuffers ? "pbuffers: on" : "pbuffers: off")); + + glRasterPos2f(0, -.13+offset); + sprintf( buffer, " mesh: %dx%d", pm->gx,pm->gy); + other_font->Render(buffer); + + glPopMatrix(); + // glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + + +} +void draw_fps( projectM_t *pm, float realfps) +{ + char bufferfps[20]; + sprintf( bufferfps, "%.1f fps", realfps); + // glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ZERO); + + glColor4f(1.0,1.0,1.0,1.0); + glPushMatrix(); + glTranslatef(0.01,1, 0); + glRasterPos2f(0, -0.05); + title_font->FaceSize(20*(pm->vh/512.0)); + title_font->Render(bufferfps); + + glPopMatrix(); + // glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + + +} +//Here we render the interpolated mesh, and then apply the texture to it. +//Well, we actually do the inverse, but its all the same. +void render_interpolation( projectM_t *pm ) +{ + + int x,y; + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslated(0, 0, -9); + + glColor4f(0.0, 0.0, 0.0,pm->decay); + + glEnable(GL_TEXTURE_2D); + glBindTexture( GL_TEXTURE_2D, pm->renderTarget->textureID[0] ); + glLoadIdentity(); + glTranslated(0, 0, -9); +#ifdef MACOS + + /** Bind the stashed texture */ + if ( pm->renderTarget->pbuffer != NULL ) { + glBindTexture( GL_TEXTURE_2D, pm->renderTarget->textureID[0] ); +#ifdef DEBUG + if ( glGetError() ) { + fprintf( debugFile, "failed to bind texture\n" ); + fflush( debugFile ); + } +#endif + } +#endif + + for (x=0;xgx - 1;x++){ + glBegin(GL_TRIANGLE_STRIP); + for(y=0;ygy;y++){ + glTexCoord4f(pm->x_mesh[x][y], pm->y_mesh[x][y],-1,1); + glVertex4f(pm->gridx[x][y], pm->gridy[x][y],-1,1); + glTexCoord4f(pm->x_mesh[x+1][y], pm->y_mesh[x+1][y],-1,1); + glVertex4f(pm->gridx[x+1][y], pm->gridy[x+1][y],-1,1); + } + glEnd(); + } + +#ifdef MACOS + /** Re-bind the pbuffer */ + if ( pm->renderTarget->pbuffer != NULL ) { + glBindTexture( GL_TEXTURE_2D, pm->renderTarget->textureID[0] ); + } +#endif + + glDisable(GL_TEXTURE_2D); + } + +void do_per_frame( projectM_t *pm ) +{ + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslated(0, 0, -9); + //Texture wrapping( clamp vs. wrap) + if (pm->bTexWrap==0){ + glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);} + else{ glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);} + + + // glRasterPos2i(0,0); + // glClear(GL_COLOR_BUFFER_BIT); + // glColor4d(0.0, 0.0, 0.0,1.0); + + // glMatrixMode(GL_TEXTURE); + // glLoadIdentity(); + + glRasterPos2i(0,0); + glClear(GL_COLOR_BUFFER_BIT); + glColor4d(0.0, 0.0, 0.0,1.0); + + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + + /* + glTranslatef(pm->cx,pm->cy, 0); + if(pm->correction) glScalef(1,pm->vw/(float)pm->vh,1); + + if(!isPerPixelEqn(ROT_OP)) { + // printf("ROTATING: rot = %f\n", rot); + glRotatef(pm->rot*90, 0, 0, 1); + } + if(!isPerPixelEqn(SX_OP)) glScalef(1/pm->sx,1,1); + if(!isPerPixelEqn(SY_OP)) glScalef(1,1/pm->sy,1); + + if(pm->correction)glScalef(1,pm->vh/(float)pm->vw,1); + glTranslatef((-pm->cx) ,(-pm->cy),0); + */ + + if(!isPerPixelEqn(DX_OP)) glTranslatef(-pm->dx,0,0); + if(!isPerPixelEqn(DY_OP)) glTranslatef(0 ,-pm->dy,0); + +} + + +//Actually draws the texture to the screen +// +//The Video Echo effect is also applied here +void render_texture_to_screen( projectM_t *pm ) +{ + int flipx=1,flipy=1; + glBindTexture( GL_TEXTURE_2D,pm->renderTarget->textureID[0] ); + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0, 0, -9); + + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); + glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); + + // glClear(GL_ACCUM_BUFFER_BIT); + glColor4d(0.0, 0.0, 0.0,1.0f); + + glBegin(GL_QUADS); + glVertex4d(-0.5,-0.5,-1,1); + glVertex4d(-0.5, 0.5,-1,1); + glVertex4d(0.5, 0.5,-1,1); + glVertex4d(0.5, -0.5,-1,1); + glEnd(); + + + + // glBindTexture( GL_TEXTURE_2D, tex2 ); + glEnable(GL_TEXTURE_2D); + glBindTexture( GL_TEXTURE_2D, pm->renderTarget->textureID[0] ); +// glBindTexture( GL_TEXTURE_2D, pm->renderTarget->textureID ); + + // glAccum(GL_LOAD,0); + // if (bDarken==1) glBlendFunc(GL_SRC_COLOR,GL_ZERO); + + //Draw giant rectangle and texture it with our texture! + glBegin(GL_QUADS); + glTexCoord4d(0, 1,0,1); glVertex4d(-0.5,-0.5,-1,1); + glTexCoord4d(0, 0,0,1); glVertex4d(-0.5, 0.5,-1,1); + glTexCoord4d(1, 0,0,1); glVertex4d(0.5, 0.5,-1,1); + glTexCoord4d(1, 1,0,1); glVertex4d(0.5, -0.5,-1,1); + glEnd(); + + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + + // if (bDarken==1) glBlendFunc(GL_SRC_COLOR,GL_ONE_MINUS_SRC_ALPHA); + + // if (bDarken==1) { glAccum(GL_ACCUM,1-fVideoEchoAlpha); glBlendFunc(GL_SRC_COLOR,GL_ZERO); } + + glMatrixMode(GL_TEXTURE); + + //draw video echo + glColor4f(0.0, 0.0, 0.0,pm->fVideoEchoAlpha); + glTranslatef(.5,.5,0); + glScalef(1.0/pm->fVideoEchoZoom,1.0/pm->fVideoEchoZoom,1); + glTranslatef(-.5,-.5,0); + + switch (((int)pm->nVideoEchoOrientation)) + { + case 0: flipx=1;flipy=1;break; + case 1: flipx=-1;flipy=1;break; + case 2: flipx=1;flipy=-1;break; + case 3: flipx=-1;flipy=-1;break; + default: flipx=1;flipy=1; break; + } + glBegin(GL_QUADS); + glTexCoord4d(0, 1,0,1); glVertex4f(-0.5*flipx,-0.5*flipy,-1,1); + glTexCoord4d(0, 0,0,1); glVertex4f(-0.5*flipx, 0.5*flipy,-1,1); + glTexCoord4d(1, 0,0,1); glVertex4f(0.5*flipx, 0.5*flipy,-1,1); + glTexCoord4d(1, 1,0,1); glVertex4f(0.5*flipx, -0.5*flipy,-1,1); + glEnd(); + + + glDisable(GL_TEXTURE_2D); + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + + + if (pm->bBrighten==1) + { + glColor4f(1.0, 1.0, 1.0,1.0); + glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ZERO); + glBegin(GL_QUADS); + glVertex4f(-0.5*flipx,-0.5*flipy,-1,1); + glVertex4f(-0.5*flipx, 0.5*flipy,-1,1); + glVertex4f(0.5*flipx, 0.5*flipy,-1,1); + glVertex4f(0.5*flipx, -0.5*flipy,-1,1); + glEnd(); + glBlendFunc(GL_ZERO, GL_DST_COLOR); + glBegin(GL_QUADS); + glVertex4f(-0.5*flipx,-0.5*flipy,-1,1); + glVertex4f(-0.5*flipx, 0.5*flipy,-1,1); + glVertex4f(0.5*flipx, 0.5*flipy,-1,1); + glVertex4f(0.5*flipx, -0.5*flipy,-1,1); + glEnd(); + glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ZERO); + glBegin(GL_QUADS); + glVertex4f(-0.5*flipx,-0.5*flipy,-1,1); + glVertex4f(-0.5*flipx, 0.5*flipy,-1,1); + glVertex4f(0.5*flipx, 0.5*flipy,-1,1); + glVertex4f(0.5*flipx, -0.5*flipy,-1,1); + glEnd(); + + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + + } + + if (pm->bDarken==1) + { + + glColor4f(1.0, 1.0, 1.0,1.0); + glBlendFunc(GL_ZERO,GL_DST_COLOR); + glBegin(GL_QUADS); + glVertex4f(-0.5*flipx,-0.5*flipy,-1,1); + glVertex4f(-0.5*flipx, 0.5*flipy,-1,1); + glVertex4f(0.5*flipx, 0.5*flipy,-1,1); + glVertex4f(0.5*flipx, -0.5*flipy,-1,1); + glEnd(); + + + + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + + } + + + if (pm->bSolarize==1) + { + + glColor4f(1.0, 1.0, 1.0,1.0); + glBlendFunc(GL_ZERO,GL_ONE_MINUS_DST_COLOR); + glBegin(GL_QUADS); + glVertex4f(-0.5*flipx,-0.5*flipy,-1,1); + glVertex4f(-0.5*flipx, 0.5*flipy,-1,1); + glVertex4f(0.5*flipx, 0.5*flipy,-1,1); + glVertex4f(0.5*flipx, -0.5*flipy,-1,1); + glEnd(); + glBlendFunc(GL_DST_COLOR,GL_ONE); + glBegin(GL_QUADS); + glVertex4f(-0.5*flipx,-0.5*flipy,-1,1); + glVertex4f(-0.5*flipx, 0.5*flipy,-1,1); + glVertex4f(0.5*flipx, 0.5*flipy,-1,1); + glVertex4f(0.5*flipx, -0.5*flipy,-1,1); + glEnd(); + + + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + + } + + if (pm->bInvert==1) + { + glColor4f(1.0, 1.0, 1.0,1.0); + glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ZERO); + glBegin(GL_QUADS); + glVertex4f(-0.5*flipx,-0.5*flipy,-1,1); + glVertex4f(-0.5*flipx, 0.5*flipy,-1,1); + glVertex4f(0.5*flipx, 0.5*flipy,-1,1); + glVertex4f(0.5*flipx, -0.5*flipy,-1,1); + glEnd(); + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + } + +} +void render_texture_to_studio( projectM_t *pm ) +{ + int x,y; + int flipx=1,flipy=1; + + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glTranslatef(0, 0, -9); + + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); + glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); + + // glClear(GL_ACCUM_BUFFER_BIT); + glColor4f(0.0, 0.0, 0.0,0.04); + + + glBegin(GL_QUADS); + glVertex4d(-0.5,-0.5,-1,1); + glVertex4d(-0.5, 0.5,-1,1); + glVertex4d(0.5, 0.5,-1,1); + glVertex4d(0.5, -0.5,-1,1); + glEnd(); + + + glColor4f(0.0, 0.0, 0.0,1.0); + + glBegin(GL_QUADS); + glVertex4d(-0.5,0,-1,1); + glVertex4d(-0.5, 0.5,-1,1); + glVertex4d(0.5, 0.5,-1,1); + glVertex4d(0.5, 0,-1,1); + glEnd(); + + glBegin(GL_QUADS); + glVertex4d(0,-0.5,-1,1); + glVertex4d(0, 0.5,-1,1); + glVertex4d(0.5, 0.5,-1,1); + glVertex4d(0.5, -0.5,-1,1); + glEnd(); + + glPushMatrix(); + glTranslatef(.25, .25, 0); + glScalef(.5,.5,1); + + glEnable(GL_TEXTURE_2D); + + + //Draw giant rectangle and texture it with our texture! + glBegin(GL_QUADS); + glTexCoord4d(0, 1,0,1); glVertex4d(-0.5,-0.5,-1,1); + glTexCoord4d(0, 0,0,1); glVertex4d(-0.5, 0.5,-1,1); + glTexCoord4d(1, 0,0,1); glVertex4d(0.5, 0.5,-1,1); + glTexCoord4d(1, 1,0,1); glVertex4d(0.5, -0.5,-1,1); + glEnd(); + + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + + + glMatrixMode(GL_TEXTURE); + + //draw video echo + glColor4f(0.0, 0.0, 0.0,pm->fVideoEchoAlpha); + glTranslated(.5,.5,0); + glScaled(1/pm->fVideoEchoZoom,1/pm->fVideoEchoZoom,1); + glTranslated(-.5,-.5,0); + + switch (((int)pm->nVideoEchoOrientation)) + { + case 0: flipx=1;flipy=1;break; + case 1: flipx=-1;flipy=1;break; + case 2: flipx=1;flipy=-1;break; + case 3: flipx=-1;flipy=-1;break; + default: flipx=1;flipy=1; break; + } + glBegin(GL_QUADS); + glTexCoord4d(0, 1,0,1); glVertex4f(-0.5*flipx,-0.5*flipy,-1,1); + glTexCoord4d(0, 0,0,1); glVertex4f(-0.5*flipx, 0.5*flipy,-1,1); + glTexCoord4d(1, 0,0,1); glVertex4f(0.5*flipx, 0.5*flipy,-1,1); + glTexCoord4d(1, 1,0,1); glVertex4f(0.5*flipx, -0.5*flipy,-1,1); + glEnd(); + + + //glDisable(GL_TEXTURE_2D); + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + + // if (bDarken==1) { glAccum(GL_ACCUM,fVideoEchoAlpha); glAccum(GL_RETURN,1);} + + + if (pm->bInvert==1) + { + glColor4f(1.0, 1.0, 1.0,1.0); + glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ZERO); + glBegin(GL_QUADS); + glVertex4f(-0.5*flipx,-0.5*flipy,-1,1); + glVertex4f(-0.5*flipx, 0.5*flipy,-1,1); + glVertex4f(0.5*flipx, 0.5*flipy,-1,1); + glVertex4f(0.5*flipx, -0.5*flipy,-1,1); + glEnd(); + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + } + + // glTranslated(.5,.5,0); + // glScaled(1/fVideoEchoZoom,1/fVideoEchoZoom,1); + // glTranslated(-.5,-.5,0); + //glTranslatef(0,.5*vh,0); + + /** Per-pixel mesh display -- bottom-right corner */ + //glBlendFunc(GL_ONE_MINUS_DST_COLOR,GL_ZERO); + + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); + glPushMatrix(); + glTranslatef(.25, -.25, 0); + glScalef(.5,.5,1); + glColor4f(1.0,1.0,1.0,1.0); + + for (x=0;xgx;x++){ + glBegin(GL_LINE_STRIP); + for(y=0;ygy;y++){ + glVertex4f((pm->x_mesh[x][y]-.5), (pm->y_mesh[x][y]-.5),-1,1); + //glVertex4f((origx[x+1][y]-.5) * vw, (origy[x+1][y]-.5) *vh ,-1,1); + } + glEnd(); + } + + for (y=0;ygy;y++){ + glBegin(GL_LINE_STRIP); + for(x=0;xgx;x++){ + glVertex4f((pm->x_mesh[x][y]-.5), (pm->y_mesh[x][y]-.5),-1,1); + //glVertex4f((origx[x+1][y]-.5) * vw, (origy[x+1][y]-.5) *vh ,-1,1); + } + glEnd(); + } + + /* + for (x=0;xgx-1;x++){ + glBegin(GL_POINTS); + for(y=0;ygy;y++){ + glVertex4f((pm->origx[x][y]-.5)* pm->vw, (pm->origy[x][y]-.5)*pm->vh,-1,1); + glVertex4f((pm->origx[x+1][y]-.5) * pm->vw, (pm->origy[x+1][y]-.5) *pm->vh ,-1,1); + } + glEnd(); + } + */ + // glTranslated(-.5,-.5,0); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + + /** Waveform display -- bottom-left */ + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glTranslatef(-.5,0, 0); + + glTranslatef(0,-0.10, 0); + glBegin(GL_LINE_STRIP); + glColor4f(0,1.0,1.0,1.0); + glVertex3f((((pm->totalframes%256)/551.0)), pm->treb_att*-7,-1); + glColor4f(1.0,1.0,1.0,1.0); + glVertex3f((((pm->totalframes%256)/551.0)),0 ,-1); + glColor4f(.5,1.0,1.0,1.0); + glVertex3f((((pm->totalframes%256)/551.0)), pm->treb*7,-1); + glEnd(); + + glTranslatef(0,-0.13, 0); + glBegin(GL_LINE_STRIP); + glColor4f(0,1.0,0.0,1.0); + glVertex3f((((pm->totalframes%256)/551.0)), pm->mid_att*-7,-1); + glColor4f(1.0,1.0,1.0,1.0); + glVertex3f((((pm->totalframes%256)/551.0)),0 ,-1); + glColor4f(.5,1.0,0.0,0.5); + glVertex3f((((pm->totalframes%256)/551.0)), pm->mid*7,-1); + glEnd(); + + + glTranslatef(0,-0.13, 0); + glBegin(GL_LINE_STRIP); + glColor4f(1.0,0.0,0.0,1.0); + glVertex3f((((pm->totalframes%256)/551.0)), pm->bass_att*-7,-1); + glColor4f(1.0,1.0,1.0,1.0); + glVertex3f((((pm->totalframes%256)/551.0)),0 ,-1); + glColor4f(.7,0.2,0.2,1.0); + glVertex3f((((pm->totalframes%256)/551.0)), pm->bass*7,-1); + glEnd(); + + glTranslatef(0,-0.13, 0); + glBegin(GL_LINES); + + glColor4f(1.0,1.0,1.0,1.0); + glVertex3f((((pm->totalframes%256)/551.0)),0 ,-1); + glColor4f(1.0,0.6,1.0,1.0); + glVertex3f((((pm->totalframes%256)/551.0)), pm->vol*7,-1); + glEnd(); + + glPopMatrix(); + + glDisable(GL_TEXTURE_2D); +} + + +void projectM_initengine( projectM_t *pm ) { + +/* PER FRAME CONSTANTS BEGIN */ + pm->zoom=1.0; + pm->zoomexp= 1.0; + pm->rot= 0.0; + pm->warp= 0.0; + + pm->sx= 1.0; + pm->sy= 1.0; + pm->dx= 0.0; + pm->dy= 0.0; + pm->cx= 0.5; + pm->cy= 0.5; + + pm->decay=.98; + + pm->wave_r= 1.0; + pm->wave_g= 0.2; + pm->wave_b= 0.0; + pm->wave_x= 0.5; + pm->wave_y= 0.5; + pm->wave_mystery= 0.0; + + pm->ob_size= 0.0; + pm->ob_r= 0.0; + pm->ob_g= 0.0; + pm->ob_b= 0.0; + pm->ob_a= 0.0; + + pm->ib_size = 0.0; + pm->ib_r = 0.0; + pm->ib_g = 0.0; + pm->ib_b = 0.0; + pm->ib_a = 0.0; + + pm->mv_a = 0.0; + pm->mv_r = 0.0; + pm->mv_g = 0.0; + pm->mv_b = 0.0; + pm->mv_l = 1.0; + pm->mv_x = 16.0; + pm->mv_y = 12.0; + pm->mv_dy = 0.02; + pm->mv_dx = 0.02; + + pm->meshx = 0; + pm->meshy = 0; + + pm->Time = 0; + pm->treb = 0; + pm->mid = 0; + pm->bass = 0; + pm->bass_old = 0; + pm->treb_att = 0; + pm->beat_sensitivity = 8.00; + pm->mid_att = 0; + pm->bass_att = 0; + pm->progress = 0; + pm->frame = 0; + + pm->avgtime = 600; +//bass_thresh = 0; + +/* PER_FRAME CONSTANTS END */ + pm->fRating = 0; + pm->fGammaAdj = 1.0; + pm->fVideoEchoZoom = 1.0; + pm->fVideoEchoAlpha = 0; + pm->nVideoEchoOrientation = 0; + + pm->nWaveMode = 7; + pm->bAdditiveWaves = 0; + pm->bWaveDots = 0; + pm->bWaveThick = 0; + pm->bModWaveAlphaByVolume = 0; + pm->bMaximizeWaveColor = 0; + pm->bTexWrap = 0; + pm->bDarkenCenter = 0; + pm->bRedBlueStereo = 0; + pm->bBrighten = 0; + pm->bDarken = 0; + pm->bSolarize = 0; + pm->bInvert = 0; + pm->bMotionVectorsOn = 1; + + pm->fWaveAlpha =1.0; + pm->fWaveScale = 1.0; + pm->fWaveSmoothing = 0; + pm->fWaveParam = 0; + pm->fModWaveAlphaStart = 0; + pm->fModWaveAlphaEnd = 0; + pm->fWarpAnimSpeed = 0; + pm->fWarpScale = 0; + pm->fShader = 0; + + +/* PER_PIXEL CONSTANTS BEGIN */ +pm->x_per_pixel = 0; +pm->y_per_pixel = 0; +pm->rad_per_pixel = 0; +pm->ang_per_pixel = 0; + +/* PER_PIXEL CONSTANT END */ + + +/* Q AND T VARIABLES START */ + +pm->q1 = 0; +pm->q2 = 0; +pm->q3 = 0; +pm->q4 = 0; +pm->q5 = 0; +pm->q6 = 0; +pm->q7 = 0; +pm->q8 = 0; + + +/* Q AND T VARIABLES END */ + +//per pixel meshes + pm->zoom_mesh = NULL; + pm->zoomexp_mesh = NULL; + pm->rot_mesh = NULL; + + + pm->sx_mesh = NULL; + pm->sy_mesh = NULL; + pm->dx_mesh = NULL; + pm->dy_mesh = NULL; + pm->cx_mesh = NULL; + pm->cy_mesh = NULL; + + pm->x_mesh = NULL; + pm->y_mesh = NULL; + pm->rad_mesh = NULL; + pm->theta_mesh = NULL; + +//custom wave per point meshes + } + +/* Reinitializes the engine variables to a default (conservative and sane) value */ +void projectM_resetengine( projectM_t *pm ) { + + pm->doPerPixelEffects = 1; + pm->doIterative = 1; + + pm->zoom=1.0; + pm->zoomexp= 1.0; + pm->rot= 0.0; + pm->warp= 0.0; + + pm->sx= 1.0; + pm->sy= 1.0; + pm->dx= 0.0; + pm->dy= 0.0; + pm->cx= 0.5; + pm->cy= 0.5; + + pm->decay=.98; + + pm->wave_r= 1.0; + pm->wave_g= 0.2; + pm->wave_b= 0.0; + pm->wave_x= 0.5; + pm->wave_y= 0.5; + pm->wave_mystery= 0.0; + + pm->ob_size= 0.0; + pm->ob_r= 0.0; + pm->ob_g= 0.0; + pm->ob_b= 0.0; + pm->ob_a= 0.0; + + pm->ib_size = 0.0; + pm->ib_r = 0.0; + pm->ib_g = 0.0; + pm->ib_b = 0.0; + pm->ib_a = 0.0; + + pm->mv_a = 0.0; + pm->mv_r = 0.0; + pm->mv_g = 0.0; + pm->mv_b = 0.0; + pm->mv_l = 1.0; + pm->mv_x = 16.0; + pm->mv_y = 12.0; + pm->mv_dy = 0.02; + pm->mv_dx = 0.02; + + pm->meshx = 0; + pm->meshy = 0; + + pm->Time = 0; + pm->treb = 0; + pm->mid = 0; + pm->bass = 0; + pm->treb_att = 0; + pm->mid_att = 0; + pm->bass_att = 0; + pm->progress = 0; + pm->frame = 0; + +// bass_thresh = 0; + +/* PER_FRAME CONSTANTS END */ + pm->fRating = 0; + pm->fGammaAdj = 1.0; + pm->fVideoEchoZoom = 1.0; + pm->fVideoEchoAlpha = 0; + pm->nVideoEchoOrientation = 0; + + pm->nWaveMode = 7; + pm->bAdditiveWaves = 0; + pm->bWaveDots = 0; + pm->bWaveThick = 0; + pm->bModWaveAlphaByVolume = 0; + pm->bMaximizeWaveColor = 0; + pm->bTexWrap = 0; + pm->bDarkenCenter = 0; + pm->bRedBlueStereo = 0; + pm->bBrighten = 0; + pm->bDarken = 0; + pm->bSolarize = 0; + pm->bInvert = 0; + pm->bMotionVectorsOn = 1; + + pm->fWaveAlpha =1.0; + pm->fWaveScale = 1.0; + pm->fWaveSmoothing = 0; + pm->fWaveParam = 0; + pm->fModWaveAlphaStart = 0; + pm->fModWaveAlphaEnd = 0; + pm->fWarpAnimSpeed = 0; + pm->fWarpScale = 0; + pm->fShader = 0; + + +/* PER_PIXEL CONSTANTS BEGIN */ + pm->x_per_pixel = 0; + pm->y_per_pixel = 0; + pm->rad_per_pixel = 0; + pm->ang_per_pixel = 0; + +/* PER_PIXEL CONSTANT END */ + + +/* Q VARIABLES START */ + + pm->q1 = 0; + pm->q2 = 0; + pm->q3 = 0; + pm->q4 = 0; + pm->q5 = 0; + pm->q6 = 0; + pm->q7 = 0; + pm->q8 = 0; + + + /* Q VARIABLES END */ +} + +/** Resets OpenGL state */ +extern "C" void projectM_resetGL( projectM_t *pm, int w, int h ) { + + char path[1024]; + int mindim, origtexsize; + +#ifdef DEBUG + if ( debugFile != NULL ) { + fprintf( debugFile, "projectM_resetGL(): in: %d x %d\n", w, h ); + fflush( debugFile ); + } +#endif + + /** Stash the new dimensions */ + pm->vw = w; + pm->vh = h; + +#ifdef LINUX + if (!pm->renderTarget->usePbuffers) + { + createPBuffers(w,h,pm->renderTarget); + } +#endif + + if ( pm->fbuffer != NULL ) { + free( pm->fbuffer ); + } + pm->fbuffer = + (GLubyte *)malloc( sizeof( GLubyte ) * pm->renderTarget->texsize * pm->renderTarget->texsize * 3 ); + + /* Our shading model--Gouraud (smooth). */ + glShadeModel( GL_SMOOTH); + /* Culling. */ + // glCullFace( GL_BACK ); + // glFrontFace( GL_CCW ); + // glEnable( GL_CULL_FACE ); + /* Set the clear color. */ + glClearColor( 0, 0, 0, 0 ); + /* Setup our viewport. */ + glViewport( 0, 0, w, h ); + /* + * Change to the projection matrix and set + * our viewing volume. + */ + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + + // gluOrtho2D(0.0, (GLfloat) width, 0.0, (GLfloat) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + // glFrustum(0.0, height, 0.0,width,10,40); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + glDrawBuffer(GL_BACK); + glReadBuffer(GL_BACK); + glEnable(GL_BLEND); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + + glEnable( GL_LINE_SMOOTH ); + glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); + + glEnable(GL_POINT_SMOOTH); + + // glCopyTexImage2D(GL_TEXTURE_2D,0,GL_RGB,0,0,renderTarget->texsize,renderTarget->texsize,0); + //glCopyTexSubImage2D(GL_TEXTURE_2D,0,0,0,0,0,renderTarget->texsize,renderTarget->texsize); + glLineStipple(2, 0xAAAA); + + /** (Re)create the offscreen for pass 1 */ + + + rescale_per_pixel_matrices( pm ); + + /** Load TTF font **/ + + + + /**f Load the standard fonts */ + if ( title_font == NULL && other_font == NULL ) { + + + sprintf( path, "%s%cVera.ttf", pm->fontURL, PATH_SEPARATOR ); + title_font = new FTGLPixmapFont(path); + poly_font = new FTGLPolygonFont(path); + sprintf( path, "%s%cVeraMono.ttf", pm->fontURL, PATH_SEPARATOR ); + other_font = new FTGLPixmapFont(path); + + + } + } + +/** Sets the title to display */ +void projectM_setTitle( projectM_t *pm, char *title ) { + /* + if (strcmp(pm->title, title)!=0) + {printf("new title\n"); + pm->drawtitle=1; + + if ( pm->title != NULL ) { + free( pm->title ); + pm->title = NULL; + } + + pm->title = (char *)wipemalloc( sizeof( char ) * ( strlen( title ) + 1 ) ); + strcpy( pm->title, title ); + + } + */ +} diff --git a/libprojectM/src/projectM.dsp b/libprojectM/src/projectM.dsp new file mode 100755 index 000000000..06efa3d37 --- /dev/null +++ b/libprojectM/src/projectM.dsp @@ -0,0 +1,381 @@ +# Microsoft Developer Studio Project File - Name="projectM" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Static Library" 0x0104 + +CFG=projectM - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "projectM.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "projectM.mak" CFG="projectM - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "projectM - Win32 Release" (based on "Win32 (x86) Static Library") +!MESSAGE "projectM - Win32 Debug" (based on "Win32 (x86) Static Library") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "projectM - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c +# ADD BASE RSC /l 0x409 /d "NDEBUG" +# ADD RSC /l 0x409 /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ELSEIF "$(CFG)" == "projectM - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /D "DEBUG" /FD /GZ /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x409 /d "_DEBUG" +# ADD RSC /l 0x409 /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LIB32=link.exe -lib +# ADD BASE LIB32 /nologo +# ADD LIB32 /nologo + +!ENDIF + +# Begin Target + +# Name "projectM - Win32 Release" +# Name "projectM - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\beat_detect.c +# End Source File +# Begin Source File + +SOURCE=.\browser.c +# End Source File +# Begin Source File + +SOURCE=.\builtin_funcs.c +# End Source File +# Begin Source File + +SOURCE=.\console_interface.c +# End Source File +# Begin Source File + +SOURCE=.\custom_shape.c +# End Source File +# Begin Source File + +SOURCE=.\custom_wave.c +# End Source File +# Begin Source File + +SOURCE=.\editor.c +# End Source File +# Begin Source File + +SOURCE=.\eval.c +# End Source File +# Begin Source File + +SOURCE=.\fftsg.c +# End Source File +# Begin Source File + +SOURCE=.\func.c +# End Source File +# Begin Source File + +SOURCE=.\glConsole.c +# End Source File +# Begin Source File + +SOURCE=.\glf.c +# End Source File +# Begin Source File + +SOURCE=.\init_cond.c +# End Source File +# Begin Source File + +SOURCE=.\menu.c +# End Source File +# Begin Source File + +SOURCE=.\param.c +# End Source File +# Begin Source File + +SOURCE=.\parser.c +# End Source File +# Begin Source File + +SOURCE=.\PCM.c +# End Source File +# Begin Source File + +SOURCE=.\per_frame_eqn.c +# End Source File +# Begin Source File + +SOURCE=.\per_pixel_eqn.c +# End Source File +# Begin Source File + +SOURCE=.\preset.c +# End Source File +# Begin Source File + +SOURCE=.\projectm.c +# End Source File +# Begin Source File + +SOURCE=.\pbuffer.c +# End Source File +# Begin Source File + +SOURCE=.\splaytree.c +# End Source File +# Begin Source File + +SOURCE=.\timer.c +# End Source File +# Begin Source File + +SOURCE=.\tree_types.c +# End Source File +# Begin Source File + +SOURCE=".\win32-dirent.c" +# End Source File +# Begin Source File + +SOURCE=.\wipemalloc.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\beat_detect.h +# End Source File +# Begin Source File + +SOURCE=.\browser.h +# End Source File +# Begin Source File + +SOURCE=.\builtin_funcs.h +# End Source File +# Begin Source File + +SOURCE=.\common.h +# End Source File +# Begin Source File + +SOURCE=.\compare.h +# End Source File +# Begin Source File + +SOURCE=.\config.h +# End Source File +# Begin Source File + +SOURCE=.\console_interface.h +# End Source File +# Begin Source File + +SOURCE=.\custom_shape.h +# End Source File +# Begin Source File + +SOURCE=.\custom_shape_types.h +# End Source File +# Begin Source File + +SOURCE=.\custom_wave.h +# End Source File +# Begin Source File + +SOURCE=.\custom_wave_types.h +# End Source File +# Begin Source File + +SOURCE=.\editor.h +# End Source File +# Begin Source File + +SOURCE=.\eval.h +# End Source File +# Begin Source File + +SOURCE=.\event.h +# End Source File +# Begin Source File + +SOURCE=.\expr_types.h +# End Source File +# Begin Source File + +SOURCE=.\fatal.h +# End Source File +# Begin Source File + +SOURCE=.\fftsg.h +# End Source File +# Begin Source File + +SOURCE=.\func.h +# End Source File +# Begin Source File + +SOURCE=.\func_types.h +# End Source File +# Begin Source File + +SOURCE=.\glConsole.h +# End Source File +# Begin Source File + +SOURCE=.\glf.h +# End Source File +# Begin Source File + +SOURCE=.\idle_preset.h +# End Source File +# Begin Source File + +SOURCE=.\init_cond.h +# End Source File +# Begin Source File + +SOURCE=.\init_cond_types.h +# End Source File +# Begin Source File + +SOURCE=.\interface_types.h +# End Source File +# Begin Source File + +SOURCE=.\menu.h +# End Source File +# Begin Source File + +SOURCE=.\param.h +# End Source File +# Begin Source File + +SOURCE=.\param_types.h +# End Source File +# Begin Source File + +SOURCE=.\parser.h +# End Source File +# Begin Source File + +SOURCE=.\PCM.h +# End Source File +# Begin Source File + +SOURCE=.\per_frame_eqn.h +# End Source File +# Begin Source File + +SOURCE=.\per_frame_eqn_types.h +# End Source File +# Begin Source File + +SOURCE=.\per_pixel_eqn.h +# End Source File +# Begin Source File + +SOURCE=.\per_pixel_eqn_types.h +# End Source File +# Begin Source File + +SOURCE=.\per_point_types.h +# End Source File +# Begin Source File + +SOURCE=.\preset.h +# End Source File +# Begin Source File + +SOURCE=.\preset_types.h +# End Source File +# Begin Source File + +SOURCE=.\projectM.h +# End Source File +# Begin Source File + +SOURCE=.\pbuffer.h +# End Source File +# Begin Source File + +SOURCE=.\splaytree.h +# End Source File +# Begin Source File + +SOURCE=.\splaytree_types.h +# End Source File +# Begin Source File + +SOURCE=.\timer.h +# End Source File +# Begin Source File + +SOURCE=.\tree_types.h +# End Source File +# Begin Source File + +SOURCE=".\win32-dirent.h" +# End Source File +# Begin Source File + +SOURCE=.\wipemalloc.h +# End Source File +# End Group +# End Target +# End Project diff --git a/libprojectM/src/projectM.h b/libprojectM/src/projectM.h new file mode 100755 index 000000000..f3fc889fe --- /dev/null +++ b/libprojectM/src/projectM.h @@ -0,0 +1,376 @@ +/* + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/** + * $Id: projectM.h,v 1.1.1.1 2005/12/23 18:05:11 psperl Exp $ + * + * Encapsulation of ProjectM engine + * + */ + +#ifndef _PROJECTM_H +#define _PROJECTM_H + +#include +#include +#include + +#ifdef MACOS +#include +#include +#include +#else +#ifdef WIN32 +#include +#endif /** WIN32 */ +#include +#include +#endif /** MACOS */ +#ifdef WIN32 +#define inline +#endif /** WIN32 */ +#ifndef WIN32 +#include +#else +#endif /** !WIN32 */ + +#include "pbuffer.h" + +//#include + +#ifdef WIN32 +#pragma warning (disable:4244) +#pragma warning (disable:4305) +#endif /** WIN32 */ + +#ifdef MACOS +#define inline +#endif + +/** KEEP THIS UP TO DATE! */ +#define PROJECTM_VERSION "0.99" +#define PROJECTM_TITLE "projectM 0.99" + +#ifdef MACOS +#define kTVisualPluginName "\pprojectM" +#define kTVisualPluginCreator 'hook' + +#define kTVisualPluginMajorVersion 1 +#define kTVisualPluginMinorVersion 0 +#define kTVisualPluginReleaseStage finalStage +#define kTVisualPluginNonFinalRelease 0 +#endif + +/** Per-platform path separators */ +#define WIN32_PATH_SEPARATOR '\\' +#define UNIX_PATH_SEPARATOR '/' +#ifdef WIN32 +#define PATH_SEPARATOR WIN32_PATH_SEPARATOR +#else +#define PATH_SEPARATOR UNIX_PATH_SEPARATOR +#endif /** WIN32 */ + +/** External debug file */ +#ifdef DEBUG +extern FILE *debugFile; +#endif + +/** Thread state */ +typedef enum { GO, STOP } PMThreadState; + +typedef struct PROJECTM { + + char *presetURL; + char *presetName; + char *fontURL; + + int hasInit; + + int noSwitch; + int pcmframes; + int freqframes; + int totalframes; + + int showfps; + int showtitle; + int showpreset; + int showhelp; + int showstats; + + int studio; + + GLubyte *fbuffer; + + + +#ifndef WIN32 + /* The first ticks value of the application */ + struct timeval startTime; +#else + long startTime; +#endif /** !WIN32 */ + float Time; + + /** Render target texture ID */ + RenderTarget *renderTarget; + + char disp[80]; + + float wave_o; + + //int texsize=1024; //size of texture to do actual graphics + int fvw; //fullscreen dimensions + int fvh; + int wvw; //windowed dimensions + int wvh; + int vw; //runtime dimensions + int vh; + int fullscreen; + + int maxsamples; //size of PCM buffer + int numsamples; //size of new PCM info + float *pcmdataL; //holder for most recent pcm data + float *pcmdataR; //holder for most recent pcm data + + int avgtime; //# frames per preset + + char *title; + int drawtitle; + + int correction; + + float vol; + + //per pixel equation variables + float **gridx; //grid containing interpolated mesh + float **gridy; + float **origtheta; //grid containing interpolated mesh reference values + float **origrad; + float **origx; //original mesh + float **origy; + float **origx2; //original mesh + float **origy2; + + /** Timing information */ + int mspf; + int timed; + int timestart; + int nohard; + int count; + float realfps, + fpsstart; + + /** PCM data */ + float vdataL[512]; //holders for FFT data (spectrum) + float vdataR[512]; + + /** Various toggles */ + int doPerPixelEffects; + int doIterative; + + /** ENGINE VARIABLES */ + /** From engine_vars.h */ + char preset_name[256]; + + /* PER FRAME CONSTANTS BEGIN */ + float zoom; + float zoomexp; + float rot; + float warp; + + float sx; + float sy; + float dx; + float dy; + float cx; + float cy; + + int gy; + int gx; + + float decay; + + float wave_r; + float wave_g; + float wave_b; + float wave_x; + float wave_y; + float wave_mystery; + + float ob_size; + float ob_r; + float ob_g; + float ob_b; + float ob_a; + + float ib_size; + float ib_r; + float ib_g; + float ib_b; + float ib_a; + + int meshx; + int meshy; + + float mv_a ; + float mv_r ; + float mv_g ; + float mv_b ; + float mv_l; + float mv_x; + float mv_y; + float mv_dy; + float mv_dx; + + float treb ; + float mid ; + float bass ; + float bass_old ; + float beat_sensitivity; + float treb_att ; + float mid_att ; + float bass_att ; + float progress ; + int frame ; + + /* PER_FRAME CONSTANTS END */ + + /* PER_PIXEL CONSTANTS BEGIN */ + + float x_per_pixel; + float y_per_pixel; + float rad_per_pixel; + float ang_per_pixel; + + /* PER_PIXEL CONSTANT END */ + + + float fRating; + float fGammaAdj; + float fVideoEchoZoom; + float fVideoEchoAlpha; + + int nVideoEchoOrientation; + int nWaveMode; + int bAdditiveWaves; + int bWaveDots; + int bWaveThick; + int bModWaveAlphaByVolume; + int bMaximizeWaveColor; + int bTexWrap; + int bDarkenCenter; + int bRedBlueStereo; + int bBrighten; + int bDarken; + int bSolarize; + int bInvert; + int bMotionVectorsOn; + int fps; + + float fWaveAlpha ; + float fWaveScale; + float fWaveSmoothing; + float fWaveParam; + float fModWaveAlphaStart; + float fModWaveAlphaEnd; + float fWarpAnimSpeed; + float fWarpScale; + float fShader; + + + /* Q VARIABLES START */ + + float q1; + float q2; + float q3; + float q4; + float q5; + float q6; + float q7; + float q8; + + + /* Q VARIABLES END */ + + float **zoom_mesh; + float **zoomexp_mesh; + float **rot_mesh; + + float **sx_mesh; + float **sy_mesh; + float **dx_mesh; + float **dy_mesh; + float **cx_mesh; + float **cy_mesh; + + float **x_mesh; + float **y_mesh; + float **rad_mesh; + float **theta_mesh; + } projectM_t; + +/** Functions */ +#ifdef __CPLUSPLUS +extern "C" void projectM_init(projectM_t *pm); +extern "C" void projectM_reset( projectM_t *pm ); +extern "C" void projectM_resetGL( projectM_t *pm, int width, int height ); +extern "C" void projectM_setTitle( projectM_t *pm, char *title ); +extern "C" void renderFrame(projectM_t *pm); +#else +extern void projectM_init(projectM_t *pm); +extern void projectM_reset( projectM_t *pm ); +extern void projectM_resetGL( projectM_t *pm, int width, int height ); +extern void projectM_setTitle( projectM_t *pm, char *title ); +extern void renderFrame(projectM_t *pm); +#endif + +void projectM_initengine(projectM_t *pm); +void projectM_resetengine(projectM_t *pm); +extern void draw_help(projectM_t *pm); +extern void draw_fps(projectM_t *pm,float fps); +extern void draw_preset(projectM_t *pm); +extern void draw_title(projectM_t *pm); +extern void draw_stats(projectM_t *pm); + +extern void modulate_opacity_by_volume(projectM_t *pm); +extern void maximize_colors(projectM_t *pm); +extern void do_per_pixel_math(projectM_t *pm); +extern void do_per_frame(projectM_t *pm); +extern void render_texture_to_studio(projectM_t *pm); +extern void darken_center(projectM_t *pm); + +extern void render_interpolation(projectM_t *pm); +extern void render_texture_to_screen(projectM_t *pm); +extern void render_texture_to_studio(projectM_t *pm); +extern void draw_motion_vectors(projectM_t *pm); +extern void draw_borders(projectM_t *pm); +extern void draw_shapes(projectM_t *pm); +extern void draw_waveform(projectM_t *pm); +extern void draw_custom_waves(projectM_t *pm); + +extern void draw_title_to_screen(projectM_t *pm); +extern void draw_title_to_texture(projectM_t *pm); +extern void get_title(projectM_t *pm); + +extern void reset_per_pixel_matrices(projectM_t *pm); +extern void init_per_pixel_matrices(projectM_t *pm); +extern void rescale_per_pixel_matrices(projectM_t *pm); + +#endif /** !_PROJECTM_H */ diff --git a/libprojectM/src/projectM.ncb b/libprojectM/src/projectM.ncb new file mode 100755 index 0000000000000000000000000000000000000000..1df98747a2b1e82e555bb4e127e9bbc1dc271d8e GIT binary patch literal 304128 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

b{;yf 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 CL+QQ% literal 0 HcmV?d00001 diff --git a/libprojectM/src/share/config b/libprojectM/src/share/config new file mode 100644 index 000000000..bf066ae2f --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/config.fastcomputers b/libprojectM/src/share/config.fastcomputers new file mode 100644 index 000000000..736118cd8 --- /dev/null +++ b/libprojectM/src/share/config.fastcomputers @@ -0,0 +1,22 @@ +projectM Config file (ONLY CHANGE THE NUMBERS!!!!!!) +------------------------------------------------------ +Texture Size (Must be power of 2) [256,512,1024,2048, etc] +1024 +Grid X Dimension (Higher is Better but much slower) 12-60 +40 +Grid Y Dimension (Higher is Better but much slower) 8-45 +30 +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-60 is realisitc +60 +Fullscreen on Startup (1=yes, 0=no) +0 +X Server to Display projectM default is ":0.0" +:0.0 diff --git a/libprojectM/src/share/config.slowcomputers b/libprojectM/src/share/config.slowcomputers new file mode 100644 index 000000000..14aa4ff57 --- /dev/null +++ b/libprojectM/src/share/config.slowcomputers @@ -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 +24 +Grid Y Dimension (Higher is Better but much slower) 8-45 +18 +Windowed Width (Initial window width) +400 +Windowed Height (Initial window width) +300 +Fullscreen Width (set to your native screen resolution) +800 +Fullscreen Height (set to your native screen resolution) +600 +FPS (Higher the Better) 30-60 is realisitc +30 +Fullscreen on Startup (1=yes, 0=no) +0 +X Server to Display projectM default is ":0.0" +:0.0 diff --git a/libprojectM/src/share/fonts/Vera.ttf b/libprojectM/src/share/fonts/Vera.ttf new file mode 100644 index 0000000000000000000000000000000000000000..58cd6b5e61eff273e920942e28041f8ddcf1e1b5 GIT binary patch literal 65932 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

B-* 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 literal 0 HcmV?d00001 diff --git a/libprojectM/src/share/presets/#Rovastar - Cosmic Echoes 2.milk# b/libprojectM/src/share/presets/#Rovastar - Cosmic Echoes 2.milk# new file mode 100755 index 000000000..f60983453 --- /dev/null +++ b/libprojectM/src/share/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 +bSolnarize=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/libprojectM/src/share/presets/Aderrasi - Agitator.milk b/libprojectM/src/share/presets/Aderrasi - Agitator.milk new file mode 100755 index 000000000..11f469e0e --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Aimless (Gravity Directive Mix).milk b/libprojectM/src/share/presets/Aderrasi - Aimless (Gravity Directive Mix).milk new file mode 100755 index 000000000..f0f74572e --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Aimless (Spirogravity Mix).milk b/libprojectM/src/share/presets/Aderrasi - Aimless (Spirogravity Mix).milk new file mode 100755 index 000000000..f0f74572e --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Airhandler (Menagerie Mix).milk b/libprojectM/src/share/presets/Aderrasi - Airhandler (Menagerie Mix).milk new file mode 100755 index 000000000..b918ff2a5 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Airs (Windy Mix).milk b/libprojectM/src/share/presets/Aderrasi - Airs (Windy Mix).milk new file mode 100755 index 000000000..7d9c2ee5c --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Anchorpulse (Pulse Of A Ghast II Mix).milk b/libprojectM/src/share/presets/Aderrasi - Anchorpulse (Pulse Of A Ghast II Mix).milk new file mode 100755 index 000000000..ef8257651 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Anchorpulse (Verified Mix).milk b/libprojectM/src/share/presets/Aderrasi - Anchorpulse (Verified Mix).milk new file mode 100755 index 000000000..8d60b5d46 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Anomalous Material Science (Pure Splinter Mix).milk b/libprojectM/src/share/presets/Aderrasi - Anomalous Material Science (Pure Splinter Mix).milk new file mode 100755 index 000000000..8b97981d3 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Antidote (Aqualung Mix).milk b/libprojectM/src/share/presets/Aderrasi - Antidote (Aqualung Mix).milk new file mode 100755 index 000000000..7a009c003 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Antidote (Side Effects Mix).milk b/libprojectM/src/share/presets/Aderrasi - Antidote (Side Effects Mix).milk new file mode 100755 index 000000000..3758912f0 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Antidote.milk b/libprojectM/src/share/presets/Aderrasi - Antidote.milk new file mode 100755 index 000000000..a7ff1eb7b --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Antique Abyss.milk b/libprojectM/src/share/presets/Aderrasi - Antique Abyss.milk new file mode 100755 index 000000000..e2b93bf5a --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Arise! (Padded Mix).milk b/libprojectM/src/share/presets/Aderrasi - Arise! (Padded Mix).milk new file mode 100755 index 000000000..9a98e79e8 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Ashes Of Air (Remix).milk b/libprojectM/src/share/presets/Aderrasi - Ashes Of Air (Remix).milk new file mode 100755 index 000000000..ed1777b79 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Bitterfeld (Crystal Border Mix).milk b/libprojectM/src/share/presets/Aderrasi - Bitterfeld (Crystal Border Mix).milk new file mode 100755 index 000000000..79a2f22de --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Blender.milk b/libprojectM/src/share/presets/Aderrasi - Blender.milk new file mode 100755 index 000000000..806b4c12d --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Bow To Gravity.milk b/libprojectM/src/share/presets/Aderrasi - Bow To Gravity.milk new file mode 100755 index 000000000..9eb205a56 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Brakefreak.milk b/libprojectM/src/share/presets/Aderrasi - Brakefreak.milk new file mode 100755 index 000000000..506a3e3a0 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Candy Avian.milk b/libprojectM/src/share/presets/Aderrasi - Candy Avian.milk new file mode 100755 index 000000000..88082ba2b --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Causeway Of Dreams (Nightmare Mix).milk b/libprojectM/src/share/presets/Aderrasi - Causeway Of Dreams (Nightmare Mix).milk new file mode 100755 index 000000000..1b9a1944c --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Causeway Of Dreams (REMix).milk b/libprojectM/src/share/presets/Aderrasi - Causeway Of Dreams (REMix).milk new file mode 100755 index 000000000..dbfe5efd2 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Causeway Of Dreams.milk b/libprojectM/src/share/presets/Aderrasi - Causeway Of Dreams.milk new file mode 100755 index 000000000..9d834ee59 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Chromatic Abyss (The Other Side).milk b/libprojectM/src/share/presets/Aderrasi - Chromatic Abyss (The Other Side).milk new file mode 100755 index 000000000..410138673 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Circlefacade.milk b/libprojectM/src/share/presets/Aderrasi - Circlefacade.milk new file mode 100755 index 000000000..2a84c3d16 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Contortion (Xenomorph Mix).milk b/libprojectM/src/share/presets/Aderrasi - Contortion (Xenomorph Mix).milk new file mode 100755 index 000000000..6c1f3210e --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Contortion.milk b/libprojectM/src/share/presets/Aderrasi - Contortion.milk new file mode 100755 index 000000000..9dc61251a --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Crystal Storm.milk b/libprojectM/src/share/presets/Aderrasi - Crystal Storm.milk new file mode 100755 index 000000000..19f17b347 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Dark Matter (Converse Mix).milk b/libprojectM/src/share/presets/Aderrasi - Dark Matter (Converse Mix).milk new file mode 100755 index 000000000..d2ed71bd7 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Elastoid.milk b/libprojectM/src/share/presets/Aderrasi - Elastoid.milk new file mode 100755 index 000000000..9eaec2b8b --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Floater Society.milk b/libprojectM/src/share/presets/Aderrasi - Floater Society.milk new file mode 100755 index 000000000..218f6cf1d --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Flowing Form.milk b/libprojectM/src/share/presets/Aderrasi - Flowing Form.milk new file mode 100755 index 000000000..8d1a11fbd --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Making Time (Swamp Mix).milk b/libprojectM/src/share/presets/Aderrasi - Making Time (Swamp Mix).milk new file mode 100755 index 000000000..25e03b429 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Multiviola.milk b/libprojectM/src/share/presets/Aderrasi - Multiviola.milk new file mode 100755 index 000000000..4fadfe125 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - Negative Sun III.milk b/libprojectM/src/share/presets/Aderrasi - Negative Sun III.milk new file mode 100755 index 000000000..7244d5ac2 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - What Cannot Be Undone.milk b/libprojectM/src/share/presets/Aderrasi - What Cannot Be Undone.milk new file mode 100755 index 000000000..d8e8a6543 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Aderrasi - What cannot be.milk b/libprojectM/src/share/presets/Aderrasi - What cannot be.milk new file mode 100755 index 000000000..c8d2ec417 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Bmelgren & Krash - Rainbow Orb Peacock (Centred Journey Mix.milk b/libprojectM/src/share/presets/Bmelgren & Krash - Rainbow Orb Peacock (Centred Journey Mix.milk new file mode 100755 index 000000000..0e0016ce3 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Bmelgren & Krash - Rainbow Orb Peacock (Lonely Signal Gone .milk b/libprojectM/src/share/presets/Bmelgren & Krash - Rainbow Orb Peacock (Lonely Signal Gone .milk new file mode 100755 index 000000000..20511f507 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Bmelgren - Pentultimate Nerual Slipstream (Tweak 2).milk b/libprojectM/src/share/presets/Bmelgren - Pentultimate Nerual Slipstream (Tweak 2).milk new file mode 100755 index 000000000..6f1256145 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/CatalystTheElder - Electric Rosebud_Phat_texture_edit.milk b/libprojectM/src/share/presets/CatalystTheElder - Electric Rosebud_Phat_texture_edit.milk new file mode 100644 index 000000000..0beaf0a04 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Che - Escape.milk b/libprojectM/src/share/presets/Che - Escape.milk new file mode 100644 index 000000000..27a6e7287 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Che - Terracarbon Stream.milk b/libprojectM/src/share/presets/Che - Terracarbon Stream.milk new file mode 100755 index 000000000..8cb021583 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/CrystalHigh - mad ravetriping.milk b/libprojectM/src/share/presets/CrystalHigh - mad ravetriping.milk new file mode 100755 index 000000000..7d1afe391 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/EMPR - Random - Changing Polyevolution.milk b/libprojectM/src/share/presets/EMPR - Random - Changing Polyevolution.milk new file mode 100644 index 000000000..0457c67b6 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Eo.S. - skylight a3 [trip colors flux2]_phat_Multi_shaped2_zoe_colours5.milk b/libprojectM/src/share/presets/Eo.S. - skylight a3 [trip colors flux2]_phat_Multi_shaped2_zoe_colours5.milk new file mode 100644 index 000000000..96f2dae93 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Eo.S.+Phat Cool Bug_arm.milk b/libprojectM/src/share/presets/Eo.S.+Phat Cool Bug_arm.milk new file mode 100644 index 000000000..c89e98544 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Eo.S.+Phat Cool Bug_arm_textured.milk b/libprojectM/src/share/presets/Eo.S.+Phat Cool Bug_arm_textured.milk new file mode 100644 index 000000000..d6e8ff55a --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Eo.S.+Phat Fractical_dancer - pulsate B.milk b/libprojectM/src/share/presets/Eo.S.+Phat Fractical_dancer - pulsate B.milk new file mode 100644 index 000000000..7d69b6f8c --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Eo.S.+Phat Fractical_dancer - pulsate box_mix.milk b/libprojectM/src/share/presets/Eo.S.+Phat Fractical_dancer - pulsate box_mix.milk new file mode 100644 index 000000000..35d80ffc5 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Eo.S.+Phat Fractical_dancer_Peacock.milk b/libprojectM/src/share/presets/Eo.S.+Phat Fractical_dancer_Peacock.milk new file mode 100644 index 000000000..dc1372321 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Eo.s and PieturP - Starfield.milk b/libprojectM/src/share/presets/Eo.s and PieturP - Starfield.milk new file mode 100644 index 000000000..8a1bd229f --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/EvilJim - Follow the ball.milk b/libprojectM/src/share/presets/EvilJim - Follow the ball.milk new file mode 100755 index 000000000..acc49b76b --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/EvilJim - Ice Drops.milk b/libprojectM/src/share/presets/EvilJim - Ice Drops.milk new file mode 100755 index 000000000..e92096aec --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Fvese - 0 To 60.milk b/libprojectM/src/share/presets/Fvese - 0 To 60.milk new file mode 100755 index 000000000..e0b8a1571 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Fvese - A Blur.milk b/libprojectM/src/share/presets/Fvese - A Blur.milk new file mode 100644 index 000000000..befc1b086 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Fvese - Lifesavor Anyone.milk b/libprojectM/src/share/presets/Fvese - Lifesavor Anyone.milk new file mode 100644 index 000000000..958bb3edc --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Fvese - New meetings.milk b/libprojectM/src/share/presets/Fvese - New meetings.milk new file mode 100644 index 000000000..c31a6f003 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Fvese - Quicksand.milk b/libprojectM/src/share/presets/Fvese - Quicksand.milk new file mode 100644 index 000000000..0254b824e --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Fvese - Stand Still!.milk b/libprojectM/src/share/presets/Fvese - Stand Still!.milk new file mode 100644 index 000000000..921b53d8c --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Fvese - The Tunnel (Final Stage Mix).milk b/libprojectM/src/share/presets/Fvese - The Tunnel (Final Stage Mix).milk new file mode 100644 index 000000000..3d9711654 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Fvese - Window Reflection 6.milk b/libprojectM/src/share/presets/Fvese - Window Reflection 6.milk new file mode 100755 index 000000000..e88b133f8 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Fvese - Zoom Effects (Remix 2).milk b/libprojectM/src/share/presets/Fvese - Zoom Effects (Remix 2).milk new file mode 100644 index 000000000..07908af0c --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Fvese - Zoom Effects With A Twist 2.milk b/libprojectM/src/share/presets/Fvese - Zoom Effects With A Twist 2.milk new file mode 100644 index 000000000..72cfa1c81 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Fvese - Zoom Effects With A Twist 3.milk b/libprojectM/src/share/presets/Fvese - Zoom Effects With A Twist 3.milk new file mode 100644 index 000000000..8f7aa605f --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Fvese - simple.milk b/libprojectM/src/share/presets/Fvese - simple.milk new file mode 100755 index 000000000..321be3ecf --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss & Rovastar - Notions Of Tonality 2.milk b/libprojectM/src/share/presets/Geiss & Rovastar - Notions Of Tonality 2.milk new file mode 100755 index 000000000..2dffed2f8 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss & Rovastar - Tokamak (Naked Intrusion Mix).milk b/libprojectM/src/share/presets/Geiss & Rovastar - Tokamak (Naked Intrusion Mix).milk new file mode 100755 index 000000000..15e4c433b --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - Blasto.milk b/libprojectM/src/share/presets/Geiss - Blasto.milk new file mode 100755 index 000000000..9296f2203 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - Cosmic Dust 2.milk b/libprojectM/src/share/presets/Geiss - Cosmic Dust 2.milk new file mode 100755 index 000000000..3b8f0112b --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - Cruzin'.milk b/libprojectM/src/share/presets/Geiss - Cruzin'.milk new file mode 100755 index 000000000..d9ee7c032 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - Downward Spiral.milk b/libprojectM/src/share/presets/Geiss - Downward Spiral.milk new file mode 100755 index 000000000..503ad03ca --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - Dynamic Swirls 1.milk b/libprojectM/src/share/presets/Geiss - Dynamic Swirls 1.milk new file mode 100755 index 000000000..db5ae5bfd --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - Dynamic Swirls 2.milk b/libprojectM/src/share/presets/Geiss - Dynamic Swirls 2.milk new file mode 100755 index 000000000..1b893b92d --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - Eddies 2.milk b/libprojectM/src/share/presets/Geiss - Eddies 2.milk new file mode 100755 index 000000000..da69cfd1f --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - Eggs.milk b/libprojectM/src/share/presets/Geiss - Eggs.milk new file mode 100755 index 000000000..efda8e433 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - El Cubismo.milk b/libprojectM/src/share/presets/Geiss - El Cubismo.milk new file mode 100755 index 000000000..822f71e45 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - Feedback 2.milk b/libprojectM/src/share/presets/Geiss - Feedback 2.milk new file mode 100644 index 000000000..386b9ec18 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - High Dynamic Range.milk b/libprojectM/src/share/presets/Geiss - High Dynamic Range.milk new file mode 100644 index 000000000..09381943a --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - Octopus Ever Changing.milk b/libprojectM/src/share/presets/Geiss - Octopus Ever Changing.milk new file mode 100755 index 000000000..132a43d41 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - Octopus Gold.milk b/libprojectM/src/share/presets/Geiss - Octopus Gold.milk new file mode 100755 index 000000000..4996a300d --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - Octopus.milk b/libprojectM/src/share/presets/Geiss - Octopus.milk new file mode 100755 index 000000000..11d2ea88e --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - Oldskool Mellowstyle.milk b/libprojectM/src/share/presets/Geiss - Oldskool Mellowstyle.milk new file mode 100755 index 000000000..2770cdb42 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - Swirlie 1.milk b/libprojectM/src/share/presets/Geiss - Swirlie 1.milk new file mode 100755 index 000000000..1baddce87 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - Swirlie 2.milk b/libprojectM/src/share/presets/Geiss - Swirlie 2.milk new file mode 100755 index 000000000..4783c9abb --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - Swirlie 3.milk b/libprojectM/src/share/presets/Geiss - Swirlie 3.milk new file mode 100755 index 000000000..9068bb333 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - Swirlie 4.milk b/libprojectM/src/share/presets/Geiss - Swirlie 4.milk new file mode 100755 index 000000000..f7679989c --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss - The Fatty Lumpkin Sunkle Tweaker.milk b/libprojectM/src/share/presets/Geiss - The Fatty Lumpkin Sunkle Tweaker.milk new file mode 100644 index 000000000..d5c13f91c --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Geiss and Rovastar - The Chaos Of Colours (sprouting dimentia mix).milk b/libprojectM/src/share/presets/Geiss and Rovastar - The Chaos Of Colours (sprouting dimentia mix).milk new file mode 100644 index 000000000..3364d0fac --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Idiot & Rovastar - Altars Of Madness 2 (X.42 Mix).milk b/libprojectM/src/share/presets/Idiot & Rovastar - Altars Of Madness 2 (X.42 Mix).milk new file mode 100755 index 000000000..19b9a5a42 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Idiot & Zylot - Unhealthy Love (Idiot's STDs Mix).milk b/libprojectM/src/share/presets/Idiot & Zylot - Unhealthy Love (Idiot's STDs Mix).milk new file mode 100755 index 000000000..4f7d6f970 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Idiot - MOTIVATION!.milk b/libprojectM/src/share/presets/Idiot - MOTIVATION!.milk new file mode 100755 index 000000000..21d1c4366 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Idiot - Texture Boxes (Remix 2).milk b/libprojectM/src/share/presets/Idiot - Texture Boxes (Remix 2).milk new file mode 100755 index 000000000..13ae4078e --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Idiot - Texture Boxes (Remix).milk b/libprojectM/src/share/presets/Idiot - Texture Boxes (Remix).milk new file mode 100755 index 000000000..b096d71ed --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Idiot24-7 - Ascending to heaven 2.milk b/libprojectM/src/share/presets/Idiot24-7 - Ascending to heaven 2.milk new file mode 100755 index 000000000..dad85ca54 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Illusion & Che - Return Of The King.milk b/libprojectM/src/share/presets/Illusion & Che - Return Of The King.milk new file mode 100755 index 000000000..f4c6d2e3c --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Illusion & Che - The Piper.milk b/libprojectM/src/share/presets/Illusion & Che - The Piper.milk new file mode 100755 index 000000000..0b2e148ff --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Illusion & Rovastar - Clouded Bottle.milk b/libprojectM/src/share/presets/Illusion & Rovastar - Clouded Bottle.milk new file mode 100755 index 000000000..902410f79 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Illusion & Unchained - Frozen Eye 1.milk b/libprojectM/src/share/presets/Illusion & Unchained - Frozen Eye 1.milk new file mode 100644 index 000000000..05c1de83a --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Illusion & Unchained - Invade My Mind.milk b/libprojectM/src/share/presets/Illusion & Unchained - Invade My Mind.milk new file mode 100755 index 000000000..b0eb46225 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Illusion - Figure Eight.milk b/libprojectM/src/share/presets/Illusion - Figure Eight.milk new file mode 100755 index 000000000..e6172120f --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Jess - Trying To Trap A Twister.milk b/libprojectM/src/share/presets/Jess - Trying To Trap A Twister.milk new file mode 100644 index 000000000..a1c278482 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Krash & Illusion - Spiral Movement.milk b/libprojectM/src/share/presets/Krash & Illusion - Spiral Movement.milk new file mode 100755 index 000000000..4ec497593 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Krash & Rovastar - Altars of Madness (Mad Ocean Mix).milk b/libprojectM/src/share/presets/Krash & Rovastar - Altars of Madness (Mad Ocean Mix).milk new file mode 100755 index 000000000..323829a5d --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Krash & Rovastar - Cerebral Demons - Phat + Eo.S. Killer Death Bunny Remix.milk b/libprojectM/src/share/presets/Krash & Rovastar - Cerebral Demons - Phat + Eo.S. Killer Death Bunny Remix.milk new file mode 100644 index 000000000..814c7a907 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Krash & TEcHNO - Rhythmic Mantas.milk b/libprojectM/src/share/presets/Krash & TEcHNO - Rhythmic Mantas.milk new file mode 100755 index 000000000..9b775d4b5 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Krash - 3D Shapes Demo 2.milk b/libprojectM/src/share/presets/Krash - 3D Shapes Demo 2.milk new file mode 100755 index 000000000..2ee593584 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Krash - 3D Shapes Demo.milk b/libprojectM/src/share/presets/Krash - 3D Shapes Demo.milk new file mode 100755 index 000000000..37ac81c09 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Krash - Digital Flame.milk b/libprojectM/src/share/presets/Krash - Digital Flame.milk new file mode 100755 index 000000000..a52a6ea43 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Krash - Dynamic Borders 1.milk b/libprojectM/src/share/presets/Krash - Dynamic Borders 1.milk new file mode 100755 index 000000000..987445b76 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Krash - Framed Geometry.milk b/libprojectM/src/share/presets/Krash - Framed Geometry.milk new file mode 100755 index 000000000..2d9c612fb --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Krash - Interwoven (Nightmare Weft Mix).milk b/libprojectM/src/share/presets/Krash - Interwoven (Nightmare Weft Mix).milk new file mode 100755 index 000000000..508bc9459 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Krash - War Machine (Shifting Complexity Mix).milk b/libprojectM/src/share/presets/Krash - War Machine (Shifting Complexity Mix).milk new file mode 100755 index 000000000..512a54fb6 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Krash - Windowframe To Mega Swirl 2.milk b/libprojectM/src/share/presets/Krash - Windowframe To Mega Swirl 2.milk new file mode 100755 index 000000000..1788d4627 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Krash and Rovastar - Rainbow Orb.milk b/libprojectM/src/share/presets/Krash and Rovastar - Rainbow Orb.milk new file mode 100755 index 000000000..7032dc64b --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Mstress & Juppy - Dancer.milk b/libprojectM/src/share/presets/Mstress & Juppy - Dancer.milk new file mode 100755 index 000000000..2b0df35f5 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Mstress & Juppy - Dancers In The Dark.milk b/libprojectM/src/share/presets/Mstress & Juppy - Dancers In The Dark.milk new file mode 100755 index 000000000..ded178a07 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Mstress - Acoustic Nerve Impulses (Under Drug Effetcs (Hypn.milk b/libprojectM/src/share/presets/Mstress - Acoustic Nerve Impulses (Under Drug Effetcs (Hypn.milk new file mode 100755 index 000000000..b40061a51 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Phat_Eo.S. - our own personal demon.milk b/libprojectM/src/share/presets/Phat_Eo.S. - our own personal demon.milk new file mode 100644 index 000000000..644513ef5 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Phat_Eo.S._Algorithm.milk b/libprojectM/src/share/presets/Phat_Eo.S._Algorithm.milk new file mode 100644 index 000000000..5f1254995 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Phat_Eo.S_shoot_em_up.milk b/libprojectM/src/share/presets/Phat_Eo.S_shoot_em_up.milk new file mode 100644 index 000000000..312b8eed9 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Phat_Rovastar - What_does_your_soul_look_like.milk b/libprojectM/src/share/presets/Phat_Rovastar - What_does_your_soul_look_like.milk new file mode 100644 index 000000000..ec4f23a8e --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Phat_Rovastar_Eo.S. spiral_faces.milk b/libprojectM/src/share/presets/Phat_Rovastar_Eo.S. spiral_faces.milk new file mode 100644 index 000000000..ebc9877f9 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Phat_Zylot_Eo.S. spiral_faces_multi colour_ThisIsJustNotResponsible =).milk b/libprojectM/src/share/presets/Phat_Zylot_Eo.S. spiral_faces_multi colour_ThisIsJustNotResponsible =).milk new file mode 100644 index 000000000..7c387bebe --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Phat_Zylot_Eo.S._Krash I_hope_someone_will_see_this_triping_v2b.milk b/libprojectM/src/share/presets/Phat_Zylot_Eo.S._Krash I_hope_someone_will_see_this_triping_v2b.milk new file mode 100644 index 000000000..1e12133db --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Pithlit & Illusion - Symetric pattern.milk b/libprojectM/src/share/presets/Pithlit & Illusion - Symetric pattern.milk new file mode 100644 index 000000000..b3f7f9ae8 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Reenen - phoenix.milk b/libprojectM/src/share/presets/Reenen - phoenix.milk new file mode 100755 index 000000000..df28a56ed --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Reenen Geiss - Triple Feedback.milk b/libprojectM/src/share/presets/Reenen Geiss - Triple Feedback.milk new file mode 100644 index 000000000..5dc834a64 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Reenen Geiss - Triple Feedback_phat+eos_edit.milk b/libprojectM/src/share/presets/Reenen Geiss - Triple Feedback_phat+eos_edit.milk new file mode 100644 index 000000000..c232827c5 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Aderrasi - Clockwork Organism.milk b/libprojectM/src/share/presets/Rovastar & Aderrasi - Clockwork Organism.milk new file mode 100755 index 000000000..c4ebdc272 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Fvese - Deadly Flower.milk b/libprojectM/src/share/presets/Rovastar & Fvese - Deadly Flower.milk new file mode 100755 index 000000000..95ba4ef7d --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Fvese - Stranger Minds (Astral Mix).milk b/libprojectM/src/share/presets/Rovastar & Fvese - Stranger Minds (Astral Mix).milk new file mode 100755 index 000000000..c533b91de --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Fvese - Stranger Minds.milk b/libprojectM/src/share/presets/Rovastar & Fvese - Stranger Minds.milk new file mode 100755 index 000000000..3ec921504 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Geiss - Dynamic Swirls 3 (Broken Destiny Mix).milk b/libprojectM/src/share/presets/Rovastar & Geiss - Dynamic Swirls 3 (Broken Destiny Mix).milk new file mode 100755 index 000000000..059b2d3fb --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Geiss - Dynamic Swirls 3 (Mysticial Awakening Mi.milk b/libprojectM/src/share/presets/Rovastar & Geiss - Dynamic Swirls 3 (Mysticial Awakening Mi.milk new file mode 100755 index 000000000..76464fe3a --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Geiss - Dynamic Swirls 3 (Poltergiest Mix).milk b/libprojectM/src/share/presets/Rovastar & Geiss - Dynamic Swirls 3 (Poltergiest Mix).milk new file mode 100755 index 000000000..096b432a9 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Geiss - Dynamic Swirls 3 (Twisted Truth Mix).milk b/libprojectM/src/share/presets/Rovastar & Geiss - Dynamic Swirls 3 (Twisted Truth Mix).milk new file mode 100755 index 000000000..318c9e29f --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Geiss - Dynamic Swirls 3 (Voyage Of Twisted Souls Mix).milk b/libprojectM/src/share/presets/Rovastar & Geiss - Dynamic Swirls 3 (Voyage Of Twisted Souls Mix).milk new file mode 100644 index 000000000..fa1f85f9b --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Geiss - Hurricane Nightmare.milk b/libprojectM/src/share/presets/Rovastar & Geiss - Hurricane Nightmare.milk new file mode 100755 index 000000000..a1e767532 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Geiss - Ice Planet.milk b/libprojectM/src/share/presets/Rovastar & Geiss - Ice Planet.milk new file mode 100755 index 000000000..dac382b9a --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Geiss - Notions Of Tonality.milk b/libprojectM/src/share/presets/Rovastar & Geiss - Notions Of Tonality.milk new file mode 100755 index 000000000..52adfc543 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Geiss - Octoplasm.milk b/libprojectM/src/share/presets/Rovastar & Geiss - Octoplasm.milk new file mode 100755 index 000000000..cbcfc4975 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Geiss - Octotrip (MultiTrip Mix).milk b/libprojectM/src/share/presets/Rovastar & Geiss - Octotrip (MultiTrip Mix).milk new file mode 100755 index 000000000..392f82ff1 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Geiss - Octotrip.milk b/libprojectM/src/share/presets/Rovastar & Geiss - Octotrip.milk new file mode 100755 index 000000000..fe2debe0e --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Geiss - Surface (Vectrip Mix).milk b/libprojectM/src/share/presets/Rovastar & Geiss - Surface (Vectrip Mix).milk new file mode 100755 index 000000000..8121eb436 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Idiot24-7 - Balk Acid.milk b/libprojectM/src/share/presets/Rovastar & Idiot24-7 - Balk Acid.milk new file mode 100755 index 000000000..5637231c6 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Rocke - Headspin.milk b/libprojectM/src/share/presets/Rovastar & Rocke - Headspin.milk new file mode 100755 index 000000000..b3dc98319 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & StudioMusic - More Cherished Desires.milk b/libprojectM/src/share/presets/Rovastar & StudioMusic - More Cherished Desires.milk new file mode 100755 index 000000000..787987910 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & StudioMusic - Twisted Spider Web.milk b/libprojectM/src/share/presets/Rovastar & StudioMusic - Twisted Spider Web.milk new file mode 100755 index 000000000..d13342ce4 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Telek - Altars of Madness (Rolling Oceans Mix).milk b/libprojectM/src/share/presets/Rovastar & Telek - Altars of Madness (Rolling Oceans Mix).milk new file mode 100644 index 000000000..6cad5d07e --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Telek - Cosmic Fireworks.milk b/libprojectM/src/share/presets/Rovastar & Telek - Cosmic Fireworks.milk new file mode 100755 index 000000000..99cc446bd --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Unchained - Centre Of Gravity.milk b/libprojectM/src/share/presets/Rovastar & Unchained - Centre Of Gravity.milk new file mode 100755 index 000000000..e66c93d23 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Zylot - Crystal Ball (Cerimonial Decor).milk b/libprojectM/src/share/presets/Rovastar & Zylot - Crystal Ball (Cerimonial Decor).milk new file mode 100755 index 000000000..0d08602ba --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Zylot - Narell's Fever.milk b/libprojectM/src/share/presets/Rovastar & Zylot - Narell's Fever.milk new file mode 100755 index 000000000..74b1419c8 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar & Zylot - Sea Of Zigrot.milk b/libprojectM/src/share/presets/Rovastar & Zylot - Sea Of Zigrot.milk new file mode 100755 index 000000000..9f97832a4 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - A Million Miles from Earth (Pathfinder Mix).milk b/libprojectM/src/share/presets/Rovastar - A Million Miles from Earth (Pathfinder Mix).milk new file mode 100755 index 000000000..a9eea02a3 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - A Million Miles from Earth.milk b/libprojectM/src/share/presets/Rovastar - A Million Miles from Earth.milk new file mode 100755 index 000000000..b1f57b07a --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Altars Of Harlequin's Madness (Dark Disorder Mix.milk b/libprojectM/src/share/presets/Rovastar - Altars Of Harlequin's Madness (Dark Disorder Mix.milk new file mode 100755 index 000000000..7bb7476cb --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Altars Of Madness (A Million Miles From Earth Mi.milk b/libprojectM/src/share/presets/Rovastar - Altars Of Madness (A Million Miles From Earth Mi.milk new file mode 100755 index 000000000..c0a375add --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Altars Of Madness (Duel Mix).milk b/libprojectM/src/share/presets/Rovastar - Altars Of Madness (Duel Mix).milk new file mode 100755 index 000000000..0151860db --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Altars Of Madness (Surealist Mix).milk b/libprojectM/src/share/presets/Rovastar - Altars Of Madness (Surealist Mix).milk new file mode 100755 index 000000000..696514cf4 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Altars Of Madness 4 (Spirit Of Twisted Madness Mix).milk b/libprojectM/src/share/presets/Rovastar - Altars Of Madness 4 (Spirit Of Twisted Madness Mix).milk new file mode 100644 index 000000000..d9259a390 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Altars Of Madness.milk b/libprojectM/src/share/presets/Rovastar - Altars Of Madness.milk new file mode 100755 index 000000000..19a59ee9b --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Attacking Freedom.milk b/libprojectM/src/share/presets/Rovastar - Attacking Freedom.milk new file mode 100644 index 000000000..2dda1bd42 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Bellanova (New Wave Mix).milk b/libprojectM/src/share/presets/Rovastar - Bellanova (New Wave Mix).milk new file mode 100755 index 000000000..4d8556c1b --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Chapel Of Ghouls.milk b/libprojectM/src/share/presets/Rovastar - Chapel Of Ghouls.milk new file mode 100755 index 000000000..f00a26e87 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Cosmic Echoes 1.milk b/libprojectM/src/share/presets/Rovastar - Cosmic Echoes 1.milk new file mode 100755 index 000000000..b9d952cc3 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Cosmic Echoes 1.milk~ b/libprojectM/src/share/presets/Rovastar - Cosmic Echoes 1.milk~ new file mode 100755 index 000000000..9932326d2 --- /dev/null +++ b/libprojectM/src/share/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=6 +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=1.000000 +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.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/libprojectM/src/share/presets/Rovastar - Cosmic Echoes 2.milk b/libprojectM/src/share/presets/Rovastar - Cosmic Echoes 2.milk new file mode 100755 index 000000000..af865229d --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Cosmic Echoes 2.milk~ b/libprojectM/src/share/presets/Rovastar - Cosmic Echoes 2.milk~ new file mode 100755 index 000000000..e52e602e9 --- /dev/null +++ b/libprojectM/src/share/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=6 +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.000000 +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.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/libprojectM/src/share/presets/Rovastar - Decreasing Dreams (Extended Movement Mix).milk b/libprojectM/src/share/presets/Rovastar - Decreasing Dreams (Extended Movement Mix).milk new file mode 100755 index 000000000..120ac932e --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Decreasing Dreams (Increasing Memory Mix) .milk b/libprojectM/src/share/presets/Rovastar - Decreasing Dreams (Increasing Memory Mix) .milk new file mode 100644 index 000000000..dbf17a9ca --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Explosive Minds.milk b/libprojectM/src/share/presets/Rovastar - Explosive Minds.milk new file mode 100755 index 000000000..a0a949312 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Eye On Reality (Mega 3 Mix)_phat_edit.milk b/libprojectM/src/share/presets/Rovastar - Eye On Reality (Mega 3 Mix)_phat_edit.milk new file mode 100644 index 000000000..8986405eb --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Forgotten Moon.milk b/libprojectM/src/share/presets/Rovastar - Forgotten Moon.milk new file mode 100755 index 000000000..cdeea8631 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Fractopia (Fantic Dancing Lights Mix).milk b/libprojectM/src/share/presets/Rovastar - Fractopia (Fantic Dancing Lights Mix).milk new file mode 100644 index 000000000..967352093 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Fractopia (Focused Childhood Mix ).milk b/libprojectM/src/share/presets/Rovastar - Fractopia (Focused Childhood Mix ).milk new file mode 100644 index 000000000..4fac89106 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Fractopia (Fractal Havok Mix).milk b/libprojectM/src/share/presets/Rovastar - Fractopia (Fractal Havok Mix).milk new file mode 100644 index 000000000..7d4ca322a --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Fractopia (Upspoken Mix).milk b/libprojectM/src/share/presets/Rovastar - Fractopia (Upspoken Mix).milk new file mode 100644 index 000000000..31ede31cd --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Future Speakers.milk b/libprojectM/src/share/presets/Rovastar - Future Speakers.milk new file mode 100755 index 000000000..12dd0bdd7 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Hallucinogenic Pyramids (Beat Time Mix).milk b/libprojectM/src/share/presets/Rovastar - Hallucinogenic Pyramids (Beat Time Mix).milk new file mode 100755 index 000000000..18bdb258b --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Harlequin's Dynamic Fractal (Crazed Spiral Mix).milk b/libprojectM/src/share/presets/Rovastar - Harlequin's Dynamic Fractal (Crazed Spiral Mix).milk new file mode 100755 index 000000000..759450570 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Harlequin's Fractal Encounter.milk b/libprojectM/src/share/presets/Rovastar - Harlequin's Fractal Encounter.milk new file mode 100755 index 000000000..ec0d29490 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Hyperspace (Frozen Rapture Mix).milk b/libprojectM/src/share/presets/Rovastar - Hyperspace (Frozen Rapture Mix).milk new file mode 100755 index 000000000..5e647ecde --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Hyperspace.milk b/libprojectM/src/share/presets/Rovastar - Hyperspace.milk new file mode 100755 index 000000000..f691879f8 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Inner Thoughts (Clouded Judgement Mix).milk b/libprojectM/src/share/presets/Rovastar - Inner Thoughts (Clouded Judgement Mix).milk new file mode 100755 index 000000000..a749f5ed6 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Inner Thoughts (Dark Secret Mix).milk b/libprojectM/src/share/presets/Rovastar - Inner Thoughts (Dark Secret Mix).milk new file mode 100755 index 000000000..fa28a1d18 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Inner Thoughts (Distant Memories Mix).milk b/libprojectM/src/share/presets/Rovastar - Inner Thoughts (Distant Memories Mix).milk new file mode 100755 index 000000000..3b706ea67 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Inner Thoughts (Frantic Thoughts Mix).milk b/libprojectM/src/share/presets/Rovastar - Inner Thoughts (Frantic Thoughts Mix).milk new file mode 100755 index 000000000..14e251c55 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Inner Thoughts (Strange Cargo Mix).milk b/libprojectM/src/share/presets/Rovastar - Inner Thoughts (Strange Cargo Mix).milk new file mode 100755 index 000000000..cfe206fef --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Kalideostars (Altars Of Madness MIx).milk b/libprojectM/src/share/presets/Rovastar - Kalideostars (Altars Of Madness MIx).milk new file mode 100755 index 000000000..fedfbdfc8 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Kalideostars (Round Round Mix).milk b/libprojectM/src/share/presets/Rovastar - Kalideostars (Round Round Mix).milk new file mode 100755 index 000000000..57f5f3471 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Kalideostars.milk b/libprojectM/src/share/presets/Rovastar - Kalideostars.milk new file mode 100755 index 000000000..f4677a5b2 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Magic Carpet.milk b/libprojectM/src/share/presets/Rovastar - Magic Carpet.milk new file mode 100755 index 000000000..4f9784757 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Multiverse Starfield 1.milk b/libprojectM/src/share/presets/Rovastar - Multiverse Starfield 1.milk new file mode 100755 index 000000000..eb0efd6a7 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Multiverse Starfield 3.milk b/libprojectM/src/share/presets/Rovastar - Multiverse Starfield 3.milk new file mode 100755 index 000000000..3875df446 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Pandora's Volcano.milk b/libprojectM/src/share/presets/Rovastar - Pandora's Volcano.milk new file mode 100755 index 000000000..83ac6f6d6 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Parallel Universe.milk b/libprojectM/src/share/presets/Rovastar - Parallel Universe.milk new file mode 100755 index 000000000..a1c6dd203 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Sea Shells.milk b/libprojectM/src/share/presets/Rovastar - Sea Shells.milk new file mode 100755 index 000000000..82be1335b --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Solarized Space (Space DNA Mix).milk b/libprojectM/src/share/presets/Rovastar - Solarized Space (Space DNA Mix).milk new file mode 100755 index 000000000..8dff43353 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Solarized Space.milk b/libprojectM/src/share/presets/Rovastar - Solarized Space.milk new file mode 100755 index 000000000..662efaf24 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Space (Twisted Dimension Mix).milk b/libprojectM/src/share/presets/Rovastar - Space (Twisted Dimension Mix).milk new file mode 100755 index 000000000..88f973e84 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Space.milk b/libprojectM/src/share/presets/Rovastar - Space.milk new file mode 100755 index 000000000..001298edd --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Sunflower Passion (Enlightment Mix)_Phat_edit.milk b/libprojectM/src/share/presets/Rovastar - Sunflower Passion (Enlightment Mix)_Phat_edit.milk new file mode 100644 index 000000000..c4cecedcb --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Sunflower Passion (Simple Mix).milk b/libprojectM/src/share/presets/Rovastar - Sunflower Passion (Simple Mix).milk new file mode 100644 index 000000000..98209f689 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Sunflower Passion.milk b/libprojectM/src/share/presets/Rovastar - Sunflower Passion.milk new file mode 100644 index 000000000..fa9da9bce --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - The Awakening.milk b/libprojectM/src/share/presets/Rovastar - The Awakening.milk new file mode 100755 index 000000000..4aa3e8dfd --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - The Chaos Of Colours (Drifting Mix).milk b/libprojectM/src/share/presets/Rovastar - The Chaos Of Colours (Drifting Mix).milk new file mode 100755 index 000000000..765fd87b2 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - The Chaos Of Colours.milk b/libprojectM/src/share/presets/Rovastar - The Chaos Of Colours.milk new file mode 100755 index 000000000..240700f1d --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - The Shroomery.milk b/libprojectM/src/share/presets/Rovastar - The Shroomery.milk new file mode 100755 index 000000000..53ae0d371 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Timeless Voyage.milk b/libprojectM/src/share/presets/Rovastar - Timeless Voyage.milk new file mode 100644 index 000000000..8de247289 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Torrid Tales.milk b/libprojectM/src/share/presets/Rovastar - Torrid Tales.milk new file mode 100644 index 000000000..60fcc68b1 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - Twilight Tunnel.milk b/libprojectM/src/share/presets/Rovastar - Twilight Tunnel.milk new file mode 100644 index 000000000..a0d4bf902 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar - VooV's Movement (After Dark Mix).milk b/libprojectM/src/share/presets/Rovastar - VooV's Movement (After Dark Mix).milk new file mode 100644 index 000000000..959b555f0 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar and Krash - Hallucinogenic Pyramids (Extra Beat Ti.milk b/libprojectM/src/share/presets/Rovastar and Krash - Hallucinogenic Pyramids (Extra Beat Ti.milk new file mode 100755 index 000000000..a6fb42dce --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rovastar and Unchained - Braindance Visions.milk b/libprojectM/src/share/presets/Rovastar and Unchained - Braindance Visions.milk new file mode 100755 index 000000000..d19e48ba2 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rozzer & Zylot - Force Field Generator (Slowtime Tweak).milk b/libprojectM/src/share/presets/Rozzer & Zylot - Force Field Generator (Slowtime Tweak).milk new file mode 100755 index 000000000..f88798dde --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rozzor & Aderrasi - Canon.milk b/libprojectM/src/share/presets/Rozzor & Aderrasi - Canon.milk new file mode 100755 index 000000000..b48a214b6 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rozzor & Che - Inside The House Of Nil.milk b/libprojectM/src/share/presets/Rozzor & Che - Inside The House Of Nil.milk new file mode 100755 index 000000000..1f95a6ad4 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rozzor & Rovastar - Oozing Resistance (Waveform Mod).milk b/libprojectM/src/share/presets/Rozzor & Rovastar - Oozing Resistance (Waveform Mod).milk new file mode 100755 index 000000000..efb1d6600 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Rozzor & Shreyas - Deeper Aesthetics.milk b/libprojectM/src/share/presets/Rozzor & Shreyas - Deeper Aesthetics.milk new file mode 100644 index 000000000..bbec0b813 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Studio Music and Unchained - Rapid Alteration.milk b/libprojectM/src/share/presets/Studio Music and Unchained - Rapid Alteration.milk new file mode 100644 index 000000000..4b532f714 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/StudioMusic & Unchained - Entity.milk b/libprojectM/src/share/presets/StudioMusic & Unchained - Entity.milk new file mode 100755 index 000000000..0d1835e95 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/StudioMusic & Unchained - Minor Alteration.milk b/libprojectM/src/share/presets/StudioMusic & Unchained - Minor Alteration.milk new file mode 100755 index 000000000..72f8dfd9a --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/StudioMusic & Unchained - Remembering How You Were (Perceived Mix).milk b/libprojectM/src/share/presets/StudioMusic & Unchained - Remembering How You Were (Perceived Mix).milk new file mode 100644 index 000000000..dcdafa9dd --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/StudioMusic & Unchained - So Much Love.milk b/libprojectM/src/share/presets/StudioMusic & Unchained - So Much Love.milk new file mode 100644 index 000000000..056781bcf --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/StudioMusic & Unchained - State Of Discretion.milk b/libprojectM/src/share/presets/StudioMusic & Unchained - State Of Discretion.milk new file mode 100755 index 000000000..b90eaf5b2 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/StudioMusic & Unchained - Wrenched Fate.milk b/libprojectM/src/share/presets/StudioMusic & Unchained - Wrenched Fate.milk new file mode 100755 index 000000000..20042ec7e --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/StudioMusic - It's Only Make Believe.milk b/libprojectM/src/share/presets/StudioMusic - It's Only Make Believe.milk new file mode 100755 index 000000000..da60130d8 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/StudioMusic - Numerosity.milk b/libprojectM/src/share/presets/StudioMusic - Numerosity.milk new file mode 100755 index 000000000..6ce7a4668 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Telek - Flicker.milk b/libprojectM/src/share/presets/Telek - Flicker.milk new file mode 100755 index 000000000..92c2741fd --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Telek - Slow Shift Matrix (bb4.5).milk b/libprojectM/src/share/presets/Telek - Slow Shift Matrix (bb4.5).milk new file mode 100644 index 000000000..33bc62805 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/Unchained & Illusion - Logic Morph.milk b/libprojectM/src/share/presets/Unchained & Illusion - Logic Morph.milk new file mode 100755 index 000000000..67877affe --- /dev/null +++ b/libprojectM/src/share/presets/Unchained & Illusion - Logic Morph.milk @@ -0,0 +1,86 @@ +[preset00] +fRating=3.000000 +fGammaAdj=2.000000 +fDecay=0.980000 +fVideoEchoZoom=1.006490 +fVideoEchoAlpha=0.500000 +nVideoEchoOrientation=3 +nWaveMode=1 +bAdditiveWaves=1 +bWaveDots=0 +bModWaveAlphaByVolume=1 +bMaximizeWaveColor=0 +bTexWrap=1 +bDarkenCenter=0 +bMotionVectorsOn=0 +bRedBlueStereo=0 +nMotionVectorsX=2 +nMotionVectorsY=1 +bBrighten=0 +bDarken=0 +bSolarize=0 +bInvert=0 +fWaveAlpha=0.968100 +fWaveScale=0.706300 +fWaveSmoothing=0.000000 +fWaveParam=-0.000000 +fModWaveAlphaStart=0.550000 +fModWaveAlphaEnd=1.150000 +fWarpAnimSpeed=1.530000 +fWarpScale=1.731000 +fZoomExponent=1.208145 +fShader=0.000000 +zoom=1.000223 +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.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.301000 +ib_r=0.250000 +ib_g=0.250000 +ib_b=0.250000 +ib_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=rot = rot + 0.030*( 0.60*sin(0.381*time) + 0.40*sin(0.479*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=zoom=zoom+0.05+0.05*sin(time*0.133); +per_frame_8=decay=decay-0.01*(frame%2); +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=q1=dx_residual; +per_frame_15=q2=dy_residual; +per_frame_16=rot=rot+(dy_residual-dx_residual)*4; +per_frame_17=cy=cy+dy_residual*4; +per_frame_18=cx=cx+dx_residual*4; +per_frame_19=wave_x=wave_x+dx_residual*10; +per_frame_20=wave_y=wave_y+dy_residual*10; +per_frame_21=ob_r=wave_g; +per_frame_22=ob_g=wave_b; +per_frame_23=ob_b=wave_r; +per_frame_24=ib_r=wave_b; +per_frame_25=ib_g=wave_r; +per_frame_26=ib_b=wave_g; +per_frame_27=ob_size=dy_residual; +per_frame_28=ib_size=dx_residual; +per_pixel_1=zoom=1-zoom*rad*sin(time)*(q1+q2)*cos(rad*20*sin(time*.5))*10; +per_pixel_2=rot=rot-(1-zoom); diff --git a/libprojectM/src/share/presets/Unchained & Rovastar - For The Seagull.milk b/libprojectM/src/share/presets/Unchained & Rovastar - For The Seagull.milk new file mode 100755 index 000000000..eda6f7a5d --- /dev/null +++ b/libprojectM/src/share/presets/Unchained & Rovastar - For The Seagull.milk @@ -0,0 +1,91 @@ +[preset00] +fRating=3.000000 +fGammaAdj=1.000000 +fDecay=0.980000 +fVideoEchoZoom=0.999838 +fVideoEchoAlpha=0.500000 +nVideoEchoOrientation=2 +nWaveMode=7 +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=35.318443 +fWaveScale=0.010000 +fWaveSmoothing=0.792000 +fWaveParam=-1.000000 +fModWaveAlphaStart=0.750000 +fModWaveAlphaEnd=0.970000 +fWarpAnimSpeed=1.444800 +fWarpScale=86.134796 +fZoomExponent=1.030300 +fShader=0.500000 +zoom=0.992400 +rot=0.000000 +cx=1.069900 +cy=1.069999 +dx=0.000000 +dy=0.000000 +warp=1.307431 +sx=1.000000 +sy=1.000000 +wave_r=0.250000 +wave_g=0.260000 +wave_b=0.270000 +wave_x=0.500000 +wave_y=0.500000 +ob_size=0.010000 +ob_r=0.500000 +ob_g=0.000000 +ob_b=0.000000 +ob_a=0.100000 +ib_size=0.010000 +ib_r=0.250000 +ib_g=0.250000 +ib_b=0.250000 +ib_a=1.000000 +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=1.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=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3); +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.3)*0.96+1.3); +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.3)*0.96+1.3); +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=pulse=if(above(abs(pulse),20),-20,pulse+.1*bor(bor(bass_changed*bnot(treb_changed),treb_changed*bnot(bass_changed))*bnot(mid_changed),mid_changed))+(bass+mid+treb)*.025; +per_frame_15=wave_b=if(treb_changed,1,if(mid_changed,.45,-.45))*q4; +per_frame_16=wave_g=if(bass_changed,.1,bass_flop); +per_frame_17=wave_r=if(mid_flop,1,.5*q2*treb_flop); +per_frame_18=ib_b=ib_b+.5*sin(pulse); +per_frame_19=ib_g=ib_g+5*sin(pulse*.8); +per_frame_20=ib_r=ib_r+5*sin(pulse*.8); +per_frame_21=ob_b=wave_r; +per_frame_22=ob_g=wave_b; +per_frame_23=ob_r=wave_g; +per_frame_24=wave_mystery=sin(pulse); +per_frame_25=q1=pulse; +per_frame_26=mv_y = 1.25; +per_pixel_1=rot = rot + 0.04*( 0.60*sin(0.381*time) + 0.40*sin(0.579*time) )+ if(above(q1,0),sin(rad)/30,sin(1-rad)/30); +per_pixel_2=zoom = zoom + 0.013*( 0.60*sin(0.339*time) + 0.40*sin(0.276*time) ) + if(above(sin(1.123*time/4),0),sin(1-rad)/40,-sin(rad*q1)/40); diff --git a/libprojectM/src/share/presets/Unchained & Rovastar - Luckless.milk b/libprojectM/src/share/presets/Unchained & Rovastar - Luckless.milk new file mode 100644 index 000000000..08657c1df --- /dev/null +++ b/libprojectM/src/share/presets/Unchained & Rovastar - Luckless.milk @@ -0,0 +1,116 @@ +[preset00] +fRating=2.000000 +fGammaAdj=1.000000 +fDecay=1.000000 +fVideoEchoZoom=0.999400 +fVideoEchoAlpha=0.500000 +nVideoEchoOrientation=3 +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=1.059269 +fWaveScale=0.653093 +fWaveSmoothing=0.270000 +fWaveParam=-0.380000 +fModWaveAlphaStart=0.750000 +fModWaveAlphaEnd=0.950000 +fWarpAnimSpeed=5.995790 +fWarpScale=1.331000 +fZoomExponent=1.000000 +fShader=0.000000 +zoom=0.619082 +rot=0.001900 +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.005000 +ob_r=0.000000 +ob_g=0.000000 +ob_b=0.000000 +ob_a=1.000000 +ib_size=0.010000 +ib_r=0.500000 +ib_g=0.900000 +ib_b=0.500000 +ib_a=1.000000 +nMotionVectorsX=24.959999 +nMotionVectorsY=19.199999 +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=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(equal(pulse,-20),1+bass_flop+treb_flop+mid_flop+rand(2),entropy); +per_frame_7=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.6)*chaos+1.6); +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.6)*chaos+1.6); +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.6)*chaos+1.6); +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*3) + bnot(bass_changed)*bass_residual; +per_frame_17=treb_residual = treb_changed*sin(pulse*3) + bnot(treb_changed)*treb_residual; +per_frame_18=mid_residual = mid_changed*sin(pulse*3) + bnot(mid_changed)*mid_residual; +per_frame_19=pulse=if(above(abs(pulse),20),-20,pulse+(bass_thresh+mid_thresh+treb_thresh)*.018); +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=cos(pulse*(.5+.1*entropy)); +per_frame_25=q6=sin(pulse*(.5+pow(.25,entropy))); +per_frame_26=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_27=q8=entropy; +per_frame_28=ob_r=.4+.4*sin(time*2.157+q6); +per_frame_29=ob_b=.8+.2*sin(time*1.689+q5); +per_frame_30=ob_g=.6+.4*sin(time*.413+q4); +per_frame_31=ib_r=.5+.5*cos(time*1.2+q1*.1); +per_frame_32=ib_b=.4+.4*cos(time*2.811+q2*.1); +per_frame_33=ib_g=.4+.4*cos(time*1.666+q3*.1); +per_frame_34=ib_size=.1+.05*q2; +per_frame_35=ob_size=.03+.02*sin(time*2.321+q2*.2); +per_frame_36=ob_a=.6+.4*q3; +per_frame_37=ib_a=.9+.1*sin(q2*.3+q4+q1*.5); +per_frame_38=mv_r=mv_r+.5*sin(q4+time*.678); +per_frame_39=mv_b=mv_b+.5*sin(q4+time*.789); +per_frame_40=mv_g=mv_g+.5*sin(q5+time*.456); +per_frame_41=mv_a=.2+.2*sin(time*1.178+q5*1.14); +per_frame_42=rot=0; +per_frame_43=wave_r=.6+.4*sin(q1+time*2.183); +per_frame_44=wave_b=.6+.4*sin(q2+time*1.211); +per_frame_45=wave_g=.6+.4*sin(q3+time*1.541); +per_frame_46=wave_mystery=wave_mystery+.5*sin(time*2.18+q6); +per_frame_47=wave_x=wave_x+.3*sin(time*.811)+.005*(frame%3); +per_frame_48=wave_y=wave_y+.3*sin(time*.788)+.005*(frame%3); +per_frame_49=wave_a=3+sin(time*1.414)+q3; +per_frame_50=wave_mode=q7; +per_frame_51=zoom=zoom+.1*sin(time*.8); +per_pixel_1=rot = rot + if(below(sin(ang+sin(rad+.5*q4)*5), q6), -rot, 0.5*sin((rad+.5*q1)*4*q5)); +per_pixel_2=zoom=zoom+rot*q3; diff --git a/libprojectM/src/share/presets/Unchained & Rovastar - Slow Solstice.milk b/libprojectM/src/share/presets/Unchained & Rovastar - Slow Solstice.milk new file mode 100755 index 000000000..bfd4a2646 --- /dev/null +++ b/libprojectM/src/share/presets/Unchained & Rovastar - Slow Solstice.milk @@ -0,0 +1,100 @@ +[preset00] +fRating=3.000000 +fGammaAdj=2.000000 +fDecay=0.989000 +fVideoEchoZoom=1.006593 +fVideoEchoAlpha=0.500000 +nVideoEchoOrientation=3 +nWaveMode=7 +bAdditiveWaves=0 +bWaveDots=1 +bWaveThick=0 +bModWaveAlphaByVolume=0 +bMaximizeWaveColor=1 +bTexWrap=0 +bDarkenCenter=0 +bRedBlueStereo=0 +bBrighten=0 +bDarken=0 +bSolarize=1 +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 +nMotionVectorsX=3.200000 +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=chaos=.9+.1*sin(pulse-beat); +per_frame_2=entropy=if(bnot(entropy),2,if(equal(pulse,-20)*above(beat,0),1+rand(5),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_changed-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_changed-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_changed-equal(mid_thresh,2)); +per_frame_9=pulse=if(above(abs(pulse),20),-20,pulse+(mid+bass+treb)*.025); +per_frame_10=beat=if(above(abs(beat),20),-20,beat+.1*chaos*bor(bor(bass_changed,treb_changed),mid_changed)); +per_frame_11=q3=sin(pulse); +per_frame_12=q2=sin(pulse+beat); +per_frame_13=q4=sin(beat); +per_frame_14=q5=entropy; +per_frame_15=q1=(1+1*above(q2,0))*(1+2*above(q3,0))*(1+4*mid_changed*above(q3,0))*(1+6*above(q4,0))*(1+10*bass_changed*above(q4,0))*(1+12*above(q5,3))*(1+16*treb_changed*above(q2,0)); +per_frame_16=wave_r=.5+.2*bnot(q1%2)-.2*bnot(q1%3)+.3*q3*bnot(q1%13); +per_frame_17=wave_g=.5+.2*bnot(q1%5)-.2*bnot(q1%13)+.3*q4*bnot(q1%7); +per_frame_18=wave_b=if(bnot(q1%6),.8+.2*q4,.5+.5*q2); +per_frame_19=ob_r=ob_r+.2*q2+.3*bnot(q1%13)*q3; +per_frame_20=ob_b=ob_b-.1*bnot(q1%105)-.4*q2; +per_frame_21=ob_g=ob_g+.5*sin(pulse*.4*entropy); +per_frame_22=ob_a=.07+.05*q3; +per_frame_23=ob_size=.01*entropy*bnot(q1%6); +per_frame_24=ib_r=ib_r+.2*q1-.3*bnot(q1%3)*q4; +per_frame_25=ib_b=ib_b-.2*bnot(q1%17)-.3*q2+.2*bnot(q1%11); +per_frame_26=ib_g=ib_g+.5*sin(pulse*.35*entropy); +per_frame_27=ib_a=.07+.05*q3*q4; +per_frame_28=ib_size=.005+.005*q3; +per_frame_29=zoom_fade=if(bnot(q1%2),zoom_fade-(zoom_fade-.92)/2,zoom_fade-bnot(q1%5)*.02*q4+bnot(q1%2)*.02*q3-bnot(q1%11)*.04*q2); +per_frame_30=zoom=zoom_fade; +per_frame_31=rot_fade=if(bnot(q1%7),rot_fade-(rot_fade-.1*q3)/2-.03*bnot(q1%13),rot_fade-.02*bnot(q1%11)+.02*bnot(q1%3)+.03*bnot(q1%35)); +per_frame_32=rot=rot_fade; +per_frame_33=cx=cx+.1*bnot(q1%39)+.07*bnot(q1%13)*q3-.2*bnot(q1%55)*q4; +per_frame_34=wave_x=wave_x+.1*q3+.2*q4*bnot(q1%2); +per_frame_35=wave_mystery=wave_x-.5; +per_pixel_1=zoom = zoom + rad/10 + abs(sin(ang-rad)/10) +q4/10; +per_pixel_2=rot = rot + treb*.001 + sin(treb+rad)/33 -q3/8; diff --git a/libprojectM/src/share/presets/Unchained & Rovastar - Triptionary.milk b/libprojectM/src/share/presets/Unchained & Rovastar - Triptionary.milk new file mode 100755 index 000000000..ecfc0e71d --- /dev/null +++ b/libprojectM/src/share/presets/Unchained & Rovastar - Triptionary.milk @@ -0,0 +1,107 @@ +[preset00] +fRating=3.000000 +fGammaAdj=1.000000 +fDecay=0.900000 +fVideoEchoZoom=1.000000 +fVideoEchoAlpha=0.500000 +nVideoEchoOrientation=1 +nWaveMode=7 +bAdditiveWaves=1 +bWaveDots=0 +bModWaveAlphaByVolume=0 +bMaximizeWaveColor=0 +bTexWrap=0 +bDarkenCenter=0 +bRedBlueStereo=0 +bBrighten=0 +bDarken=0 +bSolarize=0 +bInvert=0 +fWaveAlpha=1.849581 +fWaveScale=7.858094 +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=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.400000 +ob_size=0.001500 +ob_r=0.010000 +ob_g=0.000000 +ob_b=0.000000 +ob_a=1.000000 +ib_size=0.017500 +ib_r=1.000000 +ib_g=0.000000 +ib_b=0.000000 +ib_a=1.000000 +nMotionVectorsX=0.000000 +nMotionVectorsY=0.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=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(beat); +per_frame_6=entropy=if(bnot(entropy),2,if(equal(pulse,-3.14),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*.1*entropy) + bnot(bass_changed)*bass_residual; +per_frame_17=treb_residual = treb_changed*sin(pulse*.1*entropy) + bnot(treb_changed)*treb_residual; +per_frame_18=mid_residual = mid_changed*sin(pulse*.1*entropy) + bnot(mid_changed)*mid_residual; +per_frame_19=pulse=if(above(abs(pulse),3.14),-3.14,pulse+(bass_thresh+mid_thresh+treb_thresh)*.052); +per_frame_20=beat=if(above(abs(beat),3.14),-3.14,beat+(bass+treb+mid)*.052); +per_frame_21=q1=mid_residual; +per_frame_22=q2=bass_residual; +per_frame_23=q3=treb_residual; +per_frame_24=q4=sin(pulse); +per_frame_25=q5=sin(beat); +per_frame_26=wave_r=wave_r+.5*bass_residual; +per_frame_27=wave_g=wave_g+.5*mid_residual; +per_frame_28=wave_b=wave_b+.5*treb_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=.05+.05*cos(wave_r+pulse*.03); +per_frame_33=ob_size=.2+.2*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_size=ob_size*cos(wave_g+pulse*0.4)*.5; +per_frame_38=mv_a=.5+.5*q5; +per_frame_39=mv_x=abs(beat*10)*entropy; +per_frame_40=mv_y=mv_x; +per_frame_41=mv_r=wave_b; +per_frame_42=mv_b=wave_g; +per_frame_43=mv_g=wave_r; +per_frame_44=wave_x = 0.5+sin(2*time)/8; +per_frame_45=wave_y = 0.5-cos(3*time)/6; +per_frame_46=wave_mystery=q5; +per_pixel_1=zoom = 1- log(sqrt(2)-rad)/20 - 0.1*sin(rad)- 0.09*cos(1-rad); +per_pixel_2=rot = log(sqrt(2)-rad)/3- 0.1*cos(time+rad*0.123) - 0.08*sin(time-(1-rad)); diff --git a/libprojectM/src/share/presets/Unchained & Rovastar - Wormhole Pillars (Hall of Shadows mi.milk b/libprojectM/src/share/presets/Unchained & Rovastar - Wormhole Pillars (Hall of Shadows mi.milk new file mode 100755 index 000000000..d31673efb --- /dev/null +++ b/libprojectM/src/share/presets/Unchained & Rovastar - Wormhole Pillars (Hall of Shadows mi.milk @@ -0,0 +1,80 @@ +[preset00] +fRating=3.000000 +fGammaAdj=1.000000 +fDecay=1.000000 +fVideoEchoZoom=1.000000 +fVideoEchoAlpha=0.000000 +nVideoEchoOrientation=0 +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=0.999996 +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=24.959999 +nMotionVectorsY=19.199999 +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 +per_frame_1=warp = 0; +per_frame_2=wave_r = 0.5 + 0.5*sin(time*0.894); +per_frame_3=wave_g = 0.5 + 0.5*sin(time*1.14); +per_frame_4=wave_b = 0.5 + 0.5*sin(3-bass_att); +per_frame_5=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*(0.9+.1*sin(time*2.8))+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=q1 = 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); +per_frame_13=decay=.995+.004*sin(time*.369)+.001*sin(time*1.54); +per_pixel_1=zoom = zoom -0.01*q1*rad; +per_pixel_2=zoomexp = 1+0.2*(rad-0.2*q1); +per_pixel_3=sx=sx-cos(y*(6.28+3.14*sin(time)))*(.009+.003*sin(time*2.18))*sin(time*.3); +per_pixel_4=rot=sin(x*3.14)*.001*sin(time*.67); diff --git a/libprojectM/src/share/presets/Unchained & Rovastar - Wormhole Pillars.milk b/libprojectM/src/share/presets/Unchained & Rovastar - Wormhole Pillars.milk new file mode 100755 index 000000000..701da9033 --- /dev/null +++ b/libprojectM/src/share/presets/Unchained & Rovastar - Wormhole Pillars.milk @@ -0,0 +1,80 @@ +[preset00] +fRating=3.000000 +fGammaAdj=1.000000 +fDecay=1.000000 +fVideoEchoZoom=1.000000 +fVideoEchoAlpha=0.000000 +nVideoEchoOrientation=0 +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=0.999996 +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=24.959999 +nMotionVectorsY=19.199999 +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 +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.2*(1-bass); +per_frame_5=thresh = above(bass_att,thresh)*2+(1-above(bass_att,thresh))*((thresh-1.3)*(0.9+.1*sin(time*2.8))+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=q1 = 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); +per_frame_13=decay=.997+.003*sin(time*.369); +per_pixel_1=zoom = zoom -0.01*q1*rad; +per_pixel_2=zoomexp = 1+0.2*(rad-0.2*q1); +per_pixel_3=sx=sx-cos(y*(6.28+3.14*sin(time)))*.005; +per_pixel_4=rot=sin(x*3.14)*.01*q1; diff --git a/libprojectM/src/share/presets/Unchained & Rovastar - Xen Traffic.milk b/libprojectM/src/share/presets/Unchained & Rovastar - Xen Traffic.milk new file mode 100755 index 000000000..6cb997c4b --- /dev/null +++ b/libprojectM/src/share/presets/Unchained & Rovastar - Xen Traffic.milk @@ -0,0 +1,110 @@ +[preset00] +fRating=2.000000 +fGammaAdj=1.000000 +fDecay=0.975000 +fVideoEchoZoom=0.999993 +fVideoEchoAlpha=0.500000 +nVideoEchoOrientation=3 +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=1.741913 +fWaveScale=0.502368 +fWaveSmoothing=0.360000 +fWaveParam=-0.280000 +fModWaveAlphaStart=0.750000 +fModWaveAlphaEnd=0.950000 +fWarpAnimSpeed=1.000000 +fWarpScale=1.000000 +fZoomExponent=1.000000 +fShader=0.000000 +zoom=0.942044 +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=0.920000 +ib_size=0.004000 +ib_r=0.400000 +ib_g=0.400000 +ib_b=0.000000 +ib_a=1.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=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(beat); +per_frame_6=entropy=if(bnot(entropy),2,if(equal(pulse,-3.14),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*.1*entropy) + bnot(bass_changed)*bass_residual; +per_frame_17=treb_residual = treb_changed*sin(pulse*.1*entropy) + bnot(treb_changed)*treb_residual; +per_frame_18=mid_residual = mid_changed*sin(pulse*.1*entropy) + bnot(mid_changed)*mid_residual; +per_frame_19=pulse=if(above(abs(pulse),3.14),-3.14,pulse+(bass_thresh+mid_thresh+treb_thresh)*.052); +per_frame_20=beat=if(above(abs(beat),3.14),-3.14,beat+(bass+treb+mid)*.01); +per_frame_21=q1=mid_residual; +per_frame_22=q2=bass_residual; +per_frame_23=q3=treb_residual; +per_frame_24=q4=sin(pulse); +per_frame_25=q5=sin(beat); +per_frame_26=mv_r=mv_r+.5*bass_residual; +per_frame_27=mv_g=mv_g+.5*mid_residual; +per_frame_28=mv_b=mv_b+.5*treb_residual; +per_frame_29=mv_a=1.1-(ob_a+ib_a)*chaos*.5; +per_frame_30=mv_x=abs(beat*10)*entropy; +per_frame_31=mv_y=abs(pulse*10)*entropy; +per_frame_32=mv_l=entropy*(q4-q5); +per_frame_33=wave_r=0.8+0.2*bass_flop*mv_g; +per_frame_34=wave_g=0.3+0.3*mid_flop*mv_b; +per_frame_35=wave_b=0.4+0.3*0.1*treb_flop*mv_r; +per_frame_36=ob_r=0.1 + 0.1*sin(time*1.143)+0.2*mv_g; +per_frame_37=ob_g=0.3 + 0.3*sin(time*0.897)+0.3*mv_b; +per_frame_38=ob_b=0.2+0.5*mv_r; +per_frame_39=treb_effect = max(max(treb, treb_att)-1.2,0); +per_frame_40=mid_effect = max(max(mid,mid_att)-1.2,0); +per_frame_41=ib_r = 1 - ob_b; +per_frame_42=ib_g = 1- mv_g; +per_frame_43=ib_b = 0.5*mv_b + 0.5*ob_b; +per_frame_44=ib_a = if(above(treb_effect,0), if(above(mid_effect,0),1,0),0); +per_pixel_1=bass_effect = max(max(bass,bass_att)-1.18,0); +per_pixel_2=grid=rad*10%(above(q1,q4)+above(q2,q5)+above(q3,q4)) + (sqrt(2)-rad)*10%(above(q1,q5)+above(q2,q4)+above(q3,q5))*q1; +per_pixel_3=rot=if(grid,.12*cos(rad*3.14+x*q1*3.14+y*q2*3.14)*(q5+q4),0); +per_pixel_4=zoom=zoom-bnot(grid)*atan2(x*q3*3.14,y*q5*3.14)*.14*(x*2-1)+0.12*bass_effect; +per_pixel_5=sx=sx+.2*q1*sin(x*1.6)*-grid; +per_pixel_6=sy=sy+.2*q2*sin(y*1.6)*(1-grid); diff --git a/libprojectM/src/share/presets/Unchained - A Matter Of Taste (Remix).milk b/libprojectM/src/share/presets/Unchained - A Matter Of Taste (Remix).milk new file mode 100644 index 000000000..d2b1f53c9 --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - A Matter Of Taste (Remix).milk @@ -0,0 +1,84 @@ +[preset00] +fRating=3.000000 +fGammaAdj=2.000000 +fDecay=0.993000 +fVideoEchoZoom=0.996620 +fVideoEchoAlpha=0.500000 +nVideoEchoOrientation=3 +nWaveMode=0 +bAdditiveWaves=1 +bWaveDots=0 +bModWaveAlphaByVolume=0 +bMaximizeWaveColor=0 +bTexWrap=1 +bDarkenCenter=0 +bMotionVectorsOn=0 +bRedBlueStereo=0 +nMotionVectorsX=12 +nMotionVectorsY=9 +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=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=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=wave_r=wave_g+.5*mid_residual; +per_frame_21=wave_r=wave_b+.5*treb_residual; +per_frame_22=zoom=zoom-.0035*q1; +per_frame_23=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/libprojectM/src/share/presets/Unchained - Beat Demo 1.0.milk b/libprojectM/src/share/presets/Unchained - Beat Demo 1.0.milk new file mode 100755 index 000000000..daf588131 --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - Beat Demo 1.0.milk @@ -0,0 +1,91 @@ +[preset00] +fRating=3.000000 +fGammaAdj=2.000000 +fDecay=0.981000 +fVideoEchoZoom=1.006440 +fVideoEchoAlpha=0.500000 +nVideoEchoOrientation=3 +nWaveMode=5 +bAdditiveWaves=1 +bWaveDots=0 +bModWaveAlphaByVolume=0 +bMaximizeWaveColor=0 +bTexWrap=0 +bDarkenCenter=0 +bMotionVectorsOn=0 +bRedBlueStereo=0 +nMotionVectorsX=12 +nMotionVectorsY=9 +bBrighten=0 +bDarken=1 +bSolarize=0 +bInvert=0 +fWaveAlpha=1.868299 +fWaveScale=2.781641 +fWaveSmoothing=0.540000 +fWaveParam=0.200000 +fModWaveAlphaStart=0.950000 +fModWaveAlphaEnd=0.750000 +fWarpAnimSpeed=1.000000 +fWarpScale=1.000000 +fZoomExponent=1.008151 +fShader=0.200000 +zoom=0.999800 +rot=0.000000 +cx=0.470000 +cy=0.500000 +dx=0.005000 +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.500000 +ob_g=0.500000 +ob_b=0.500000 +ob_a=0.000000 +ib_size=0.000000 +ib_r=0.500000 +ib_g=0.500000 +ib_b=0.500000 +ib_a=0.000000 +per_frame_1=warp=0; +per_frame_2=chaos=.9+.1*sin(pulse-beat); +per_frame_3=entropy=if(bnot(entropy),2,if(equal(pulse,-20)*above(beat,0),1+rand(5),entropy)); +per_frame_4=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*chaos+1.3); +per_frame_5=bass_changed=abs(bass_changed-equal(bass_thresh,2)); +per_frame_6=treb_thresh=above(treb_att,treb_thresh)*2 + (1-above(treb_att,treb_thresh))*((treb_thresh-1.3)*chaos+1.3); +per_frame_7=treb_changed=abs(treb_changed-equal(treb_thresh,2)); +per_frame_8=mid_thresh=above(mid_att,mid_thresh)*2 + (1-above(mid_att,mid_thresh))*((mid_thresh-1.3)*chaos+1.3); +per_frame_9=mid_changed=abs(mid_changed-equal(mid_thresh,2)); +per_frame_10=pulse=if(above(abs(pulse),20),-20,pulse+(mid+bass+treb)*.025); +per_frame_11=beat=if(above(abs(beat),20),-20,beat+.1*chaos*bor(bor(bass_changed,treb_changed),mid_changed)); +per_frame_12=q3=sin(pulse); +per_frame_13=q2=sin(pulse+beat); +per_frame_14=q4=sin(beat); +per_frame_15=q5=entropy; +per_frame_16=q1=(1+1*above(q2,0))*(1+2*above(q3,0))*(1+4*mid_changed*above(q3,0))*(1+6*above(q4,0))*(1+10*bass_changed*above(q4,0))*(1+12*above(q5,3))*(1+16*treb_changed*above(q2,0)); +per_frame_17=wave_r=.5+.2*bnot(q1%2)-.2*bnot(q1%3)+.3*q3*bnot(q1%13); +per_frame_18=wave_g=.5+.2*bnot(q1%5)-.2*bnot(q1%13)+.3*q4*bnot(q1%7); +per_frame_19=wave_b=if(bnot(q1%6),.8+.2*q4,.5+.5*q2); +per_frame_20=ob_r=ob_r+.2*q2+.3*bnot(q1%13)*q3; +per_frame_21=ob_b=ob_b-.1*bnot(q1%105)-.4*q2; +per_frame_22=ob_g=ob_g+.5*sin(pulse*.4*entropy); +per_frame_23=ob_a=.07+.05*q3; +per_frame_24=ob_size=.01*entropy*bnot(q1%6); +per_frame_25=ib_r=ib_r+.2*q1-.3*bnot(q1%3)*q4; +per_frame_26=ib_b=ib_b-.2*bnot(q1%17)-.3*q2+.2*bnot(q1%11); +per_frame_27=ib_g=ib_g+.5*sin(pulse*.35*entropy); +per_frame_28=ib_a=.07+.05*q3*q4; +per_frame_29=ib_size=.005+.005*q3; +per_frame_30=zoom_fade=if(bnot(q1%2),zoom_fade-(zoom_fade-.97)/2,zoom_fade-bnot(q1%5)*.02*q4+bnot(q1%2)*.02*q3-bnot(q1%11)*.04*q2); +per_frame_31=zoom=zoom_fade; +per_frame_32=rot_fade=if(bnot(q1%7),rot_fade-(rot_fade-.1*q3)/2-.03*bnot(q1%13),rot_fade-.02*bnot(q1%11)+.02*bnot(q1%3)+.03*bnot(q1%35)); +per_frame_33=rot=rot_fade; +per_frame_34=cx=cx+.1*bnot(q1%39)+.07*bnot(q1%13)*q3-.2*bnot(q1%55)*q4; +per_frame_35=wave_x=wave_x+.1*q3+.2*q4*bnot(q1%2); diff --git a/libprojectM/src/share/presets/Unchained - Beat Demo 2.0.milk b/libprojectM/src/share/presets/Unchained - Beat Demo 2.0.milk new file mode 100755 index 000000000..bfeaad8c2 --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - Beat Demo 2.0.milk @@ -0,0 +1,111 @@ +[preset00] +fRating=3.000000 +fGammaAdj=1.000000 +fDecay=0.990000 +fVideoEchoZoom=1.000000 +fVideoEchoAlpha=1.000000 +nVideoEchoOrientation=0 +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=0.818016 +fWaveScale=0.653093 +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.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=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*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_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=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=zoom=zoom+.1*q4; +per_frame_41=rot=.2*q5; +per_frame_42=wave_mystery=.5*q6; +per_frame_43=cx=cx+.5*q1; +per_frame_44=cy=cy+.5*q2; +per_frame_45=warp=bnot(q7%2); +per_frame_46=echo_zoom=1+.5*q3; +per_frame_47=echo_orientation=q8%4; +per_frame_48=wave_mode=q8%7; diff --git a/libprojectM/src/share/presets/Unchained - Beat Demo 2.1.milk b/libprojectM/src/share/presets/Unchained - Beat Demo 2.1.milk new file mode 100755 index 000000000..57a22921e --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - Beat Demo 2.1.milk @@ -0,0 +1,111 @@ +[preset00] +fRating=3.000000 +fGammaAdj=1.000000 +fDecay=0.990000 +fVideoEchoZoom=1.000000 +fVideoEchoAlpha=1.000000 +nVideoEchoOrientation=0 +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=0.818016 +fWaveScale=0.653093 +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.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=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*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_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=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=cx=cx+.5*q1; +per_frame_42=cy=cy+.5*q2; +per_frame_43=warp=bnot(q7%2); +per_frame_44=echo_zoom=1+.5*q3; +per_frame_45=echo_orientation=q8%4; +per_frame_46=wave_mode=q8%7; +per_pixel_1=zoom=zoom+.3*sin(y*3.14*q4); +per_pixel_2=rot=rot*cos(x*3.14*q5); diff --git a/libprojectM/src/share/presets/Unchained - Beat Demo 2.2.milk b/libprojectM/src/share/presets/Unchained - Beat Demo 2.2.milk new file mode 100755 index 000000000..69791ad83 --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - Beat Demo 2.2.milk @@ -0,0 +1,109 @@ +[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=0 +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=1.000000 +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=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*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_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=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_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(q6,0),rad*.2*q5,.2*q5*sin(rad*2.133*q7)); +per_pixel_4=zoom=if(above(q2,0),zoom,if(above(q3,0),1+.07*sin(q4*.2*radix),1+.07*cos(radix*10*q4))); diff --git a/libprojectM/src/share/presets/Unchained - Beat Demo 2.3.milk b/libprojectM/src/share/presets/Unchained - Beat Demo 2.3.milk new file mode 100755 index 000000000..4edeea625 --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - Beat Demo 2.3.milk @@ -0,0 +1,114 @@ +[preset00] +fRating=3.000000 +fGammaAdj=1.000000 +fDecay=0.993000 +fVideoEchoZoom=1.000000 +fVideoEchoAlpha=0.500000 +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=0.818016 +fWaveScale=0.653093 +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.018281 +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=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*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_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=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=decay=.98+q8*.001; +per_frame_44=monitor=q8; +per_pixel_1=c1=x*q1+sin(ang)*q4; +per_pixel_2=c2=y*q2+sin(ang)*q6; +per_pixel_3=c3=rad*q3; +per_pixel_4=radix=if(above(q5,0),min(c1,c2),max(c1,c2)); +per_pixel_5=radix=if(above(q6,0),min(radix,c3),max(radix,c3)); +per_pixel_6=rot=if(above(q6,0),rad*.2*q5,.2*q5*sin(rad*2.133*q7)); +per_pixel_7=zoom=if(below(abs(q1),.5),zoom,if(below(abs(q2),.5),1+.07*sin(q4*3.14*radix),1+.07*sin(radix*q8*q4*1.618))); diff --git a/libprojectM/src/share/presets/Unchained - Cartoon Factory.milk b/libprojectM/src/share/presets/Unchained - Cartoon Factory.milk new file mode 100755 index 000000000..5fa131d42 --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - Cartoon Factory.milk @@ -0,0 +1,116 @@ +[preset00] +fRating=4.000000 +fGammaAdj=1.000000 +fDecay=0.990000 +fVideoEchoZoom=0.999600 +fVideoEchoAlpha=1.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=7.014853 +fWaveScale=0.098608 +fWaveSmoothing=0.810000 +fWaveParam=-0.400000 +fModWaveAlphaStart=0.750000 +fModWaveAlphaEnd=0.950000 +fWarpAnimSpeed=5.995790 +fWarpScale=1.331000 +fZoomExponent=1.000000 +fShader=0.000000 +zoom=0.502500 +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.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=1.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=1.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(equal(pulse,-20),1+bass_flop+treb_flop+mid_flop+rand(2),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) + bnot(bass_changed)*bass_residual; +per_frame_17=treb_residual = treb_changed*sin(pulse) + bnot(treb_changed)*treb_residual; +per_frame_18=mid_residual = mid_changed*sin(pulse) + bnot(mid_changed)*mid_residual; +per_frame_19=pulse=if(above(abs(pulse),20),-20,pulse+(bass_thresh+mid_thresh+treb_thresh)*.032); +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=cos(pulse/2+q1); +per_frame_25=q6=sin(q1*3.14+q2*3.14+q3*3.14); +per_frame_26=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_27=q8=entropy; +per_frame_28=wave_r=.5+.5*sin(q1+abs(q4*2.14)); +per_frame_29=wave_b=.5+.5*sin(q2+abs(q5*2.14)); +per_frame_30=wave_g=.5+.5*sin(q3+abs(q6*2.14)); +per_frame_31=ob_r=ob_r+ob_r*sin(q1+q2*2.14); +per_frame_32=ob_b=ob_b+ob_b*sin(q2+q3*2.14); +per_frame_33=ob_g=ob_g+ob_g*sin(q3+q1*2.14); +per_frame_34=ib_r=ib_r+ib_r*cos(q5+q1*2.14); +per_frame_35=ib_b=ib_b+ib_*cos(q5+q2*2.14); +per_frame_36=ib_g=ib_g+ib_g*cos(q5+q3*2.14); +per_frame_37=ob_a=.25+.25*sin(q2+q3*2.14); +per_frame_38=ib_a=.25+.25*sin(q2*2.14+q3); +per_frame_39=ob_size=.1+.1*sin(q3*3+q1); +per_frame_40=ib_size=.15+.05*sin(q1*3+q3); +per_frame_41=mv_r=mv_r+.5*sin(q4+q5*6*q1); +per_frame_42=mv_b=mv_b+.5*sin(q4+q5*6*q2); +per_frame_43=mv_g=mv_g+.5*sin(q5+q5*6*q3); +per_frame_44=mv_a=mv_a+mv_a*sin(q2+q3+q5*1.14); +per_frame_45=mv_l=.1*q8; +per_frame_46=mv_x=q8*q7; +per_frame_47=mv_y=q8*q7; +per_frame_48=wave_mystery=wave_mystery+.25*sin(time*q4); +per_frame_49=echo_zoom=1+.2*q1+.2*q5+.3*q4; +per_frame_50=echo_orientation=q7%3; +per_pixel_1=dx=sin(pow(x,2)*3.14*q3); +per_pixel_2=dy=sin(pow(y,2)*3.14*q2); +per_pixel_3=rot=sin(rad*3.14*q1); diff --git a/libprojectM/src/share/presets/Unchained - Cranked On Failure.milk b/libprojectM/src/share/presets/Unchained - Cranked On Failure.milk new file mode 100755 index 000000000..e5711779c --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - Cranked On Failure.milk @@ -0,0 +1,97 @@ +[preset00] +fRating=2.000000 +fGammaAdj=2.000000 +fDecay=0.980000 +fVideoEchoZoom=0.998169 +fVideoEchoAlpha=0.500000 +nVideoEchoOrientation=3 +nWaveMode=0 +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=0.320553 +fWaveScale=100.000000 +fWaveSmoothing=0.450000 +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=1.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*.1*entropy) + bnot(bass_changed)*bass_residual; +per_frame_17=treb_residual = treb_changed*sin(pulse*.1*entropy) + bnot(treb_changed)*treb_residual; +per_frame_18=mid_residual = mid_changed*sin(pulse*.1*entropy) + bnot(mid_changed)*mid_residual; +per_frame_19=pulse=if(above(abs(pulse),20),-20,pulse+(bass_thresh+mid+thresh+treb_thresh)*.052+-(bass+treb+mid)*.01); +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=.05+.05*cos(wave_r+pulse*.03); +per_frame_33=ob_size=.2+.2*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_size=ob_size*cos(wave_g+pulse*0.4)*.5; +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+.3*sin(radix*3.14*(q1+q2+q3))); +per_pixel_4=zoom=if(above(q2,0),zoom-cos(radix*3.14*q2)*.1,if(above(q3,0),1+q1*.05,1+.07*cos(radix*10*q1))); diff --git a/libprojectM/src/share/presets/Unchained - Deeper Logic.milk b/libprojectM/src/share/presets/Unchained - Deeper Logic.milk new file mode 100644 index 000000000..d5f0f2bbc --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - Deeper Logic.milk @@ -0,0 +1,98 @@ +[preset00] +fRating=2.000000 +fGammaAdj=2.000000 +fDecay=0.980000 +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.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 +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/libprojectM/src/share/presets/Unchained - Goo Kung Fu.milk b/libprojectM/src/share/presets/Unchained - Goo Kung Fu.milk new file mode 100755 index 000000000..5d50a1387 --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - Goo Kung Fu.milk @@ -0,0 +1,75 @@ +[preset00] +fRating=2.000000 +fGammaAdj=2.000000 +fDecay=0.974000 +fVideoEchoZoom=1.000000 +fVideoEchoAlpha=0.500000 +nVideoEchoOrientation=0 +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=1.000000 +fWaveScale=1.074092 +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.010000 +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 +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_r = wave_r + 0.25*(0.6*sin(0.784*time) + 0.4*sin(0.986*time)); +per_frame_3=wave_g = wave_g + 0.25*(0.6*sin(0.671*time) + 0.4*sin(1.164*time)); +per_frame_4=wave_b = wave_b + 0.25*(0.6*sin(1.423*time) + 0.4*sin(0.687*time)); +per_frame_5=zoom=zoom+mid_att*.1; +per_pixel_1=timer_a=10*sin(time); +per_pixel_2=timer_b=10*sin(time*.5); +per_pixel_3=ripple_x=cos(x*timer_a-timer_b)*bass_att; +per_pixel_4=ripple_y=cos(y*timer_a-timer_b)*treb_att; +per_pixel_5=ripple_r=cos(rad*timer_b-timer_a)*mid_att; +per_pixel_6=ripple=ripple_x+ripple_y+ripple_r; +per_pixel_7=zoom=zoom+ripple*.1; diff --git a/libprojectM/src/share/presets/Unchained - Goofy Beat Detection.milk b/libprojectM/src/share/presets/Unchained - Goofy Beat Detection.milk new file mode 100644 index 000000000..5aae92f80 --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - Goofy Beat Detection.milk @@ -0,0 +1,118 @@ +[preset00] +fRating=2.000000 +fGammaAdj=1.000000 +fDecay=0.992000 +fVideoEchoZoom=0.999400 +fVideoEchoAlpha=0.500000 +nVideoEchoOrientation=3 +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=1.059200 +fWaveScale=0.653093 +fWaveSmoothing=0.270000 +fWaveParam=-0.380000 +fModWaveAlphaStart=0.750000 +fModWaveAlphaEnd=0.950000 +fWarpAnimSpeed=5.995790 +fWarpScale=1.331000 +fZoomExponent=1.000000 +fShader=0.000000 +zoom=1.008000 +rot=0.001900 +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.005000 +ob_r=0.000000 +ob_g=0.000000 +ob_b=0.000000 +ob_a=1.000000 +ib_size=0.010000 +ib_r=0.500000 +ib_g=0.900000 +ib_b=0.500000 +ib_a=1.000000 +nMotionVectorsX=24.959999 +nMotionVectorsY=19.199999 +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=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(equal(pulse,-20),1+bass_flop+treb_flop+mid_flop+rand(2),entropy); +per_frame_7=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.6)*chaos+1.6); +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.6)*chaos+1.6); +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.6)*chaos+1.6); +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*3) + bnot(bass_changed)*bass_residual; +per_frame_17=treb_residual = treb_changed*sin(pulse*3) + bnot(treb_changed)*treb_residual; +per_frame_18=mid_residual = mid_changed*sin(pulse*3) + bnot(mid_changed)*mid_residual; +per_frame_19=pulse=if(above(abs(pulse),20),-20,pulse+(bass_thresh+mid_thresh+treb_thresh)*.018); +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=cos(pulse*(.5+.1*entropy)); +per_frame_25=q6=sin(pulse*(.5+pow(.25,entropy))); +per_frame_26=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_27=q8=entropy; +per_frame_28=ob_r=.4+.4*sin(time*2.157+q6); +per_frame_29=ob_b=.8+.2*sin(time*1.689+q5); +per_frame_30=ob_g=.6+.4*sin(time*.413+q4); +per_frame_31=ib_r=.5+.5*cos(time*1.2+q1*.1); +per_frame_32=ib_b=.4+.4*cos(time*2.811+q2*.1); +per_frame_33=ib_g=.4+.4*cos(time*1.666+q3*.1); +per_frame_34=ib_size=.05+.03*q2; +per_frame_35=ob_size=.03+.02*sin(time*2.321+q2*.2); +per_frame_36=ob_a=.6+.4*q3; +per_frame_37=ib_a=.9+.1*sin(q2*.3+q4+q1*.5); +per_frame_38=mv_r=mv_r+.5*sin(q4+time*.678); +per_frame_39=mv_b=mv_b+.5*sin(q4+time*.789); +per_frame_40=mv_g=mv_g+.5*sin(q5+time*.456); +per_frame_41=mv_a=.2+.2*sin(time*1.178+q5*1.14); +per_frame_42=rot=0; +per_frame_43=wave_r=.6+.4*sin(q1+time*2.183); +per_frame_44=wave_b=.6+.4*sin(q2+time*1.211); +per_frame_45=wave_g=.6+.4*sin(q3+time*1.541); +per_frame_46=wave_mystery=wave_mystery+.5*sin(time*2.18+q6); +per_frame_47=wave_x=wave_x+.3*sin(time*.811)+.005*(frame%3); +per_frame_48=wave_y=wave_y+.3*sin(time*.788)+.005*(frame%3); +per_frame_49=wave_a=3+sin(time*1.414)+q3; +per_frame_50=wave_mode=q7; +per_frame_51=zoom=1+.7*sin(time*1.51); +per_pixel_1=rot=if(above(q4,0),rad*.2*q5,sin(rad*(q4+q3))); +per_pixel_2=zoom=if(above(q2,0),zoom+(1-zoom)*rot*cos(rad*3.14*q2),if(above(q3,0)*above(x,.5+.5*q5),zoom+(1-zoom)*sin(q1*rot*3.14),zoom+(1-zoom)*cos(rad*10*q6))); +per_pixel_3=dx=above(q1,0)*sin(rad*.5*q2); +per_pixel_4=dy=above(q3,0)*sin(rad*.5*q3); diff --git a/libprojectM/src/share/presets/Unchained - In Memory Of Peg.milk b/libprojectM/src/share/presets/Unchained - In Memory Of Peg.milk new file mode 100755 index 000000000..f3cf36d9f --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - In Memory Of Peg.milk @@ -0,0 +1,118 @@ +[preset00] +fRating=3.000000 +fGammaAdj=1.000000 +fDecay=0.990000 +fVideoEchoZoom=1.104060 +fVideoEchoAlpha=1.000000 +nVideoEchoOrientation=0 +nWaveMode=7 +bAdditiveWaves=1 +bWaveDots=0 +bWaveThick=1 +bModWaveAlphaByVolume=0 +bMaximizeWaveColor=0 +bTexWrap=1 +bDarkenCenter=0 +bRedBlueStereo=0 +bBrighten=1 +bDarken=1 +bSolarize=0 +bInvert=1 +fWaveAlpha=1.059269 +fWaveScale=0.653093 +fWaveSmoothing=0.270000 +fWaveParam=-0.380000 +fModWaveAlphaStart=0.750000 +fModWaveAlphaEnd=0.950000 +fWarpAnimSpeed=5.995790 +fWarpScale=1.331000 +fZoomExponent=1.000000 +fShader=0.000000 +zoom=0.998400 +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=1.000000 +wave_g=1.000000 +wave_b=1.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.500000 +ib_g=0.900000 +ib_b=0.500000 +ib_a=1.000000 +nMotionVectorsX=24.959999 +nMotionVectorsY=19.199999 +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=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(equal(pulse,-20),1+bass_flop+treb_flop+mid_flop+rand(2),entropy); +per_frame_7=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.6)*chaos+1.6); +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.6)*chaos+1.6); +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.6)*chaos+1.6); +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*3) + bnot(bass_changed)*bass_residual; +per_frame_17=treb_residual = treb_changed*sin(pulse*3) + bnot(treb_changed)*treb_residual; +per_frame_18=mid_residual = mid_changed*sin(pulse*3) + bnot(mid_changed)*mid_residual; +per_frame_19=pulse=if(above(abs(pulse),20),-20,pulse+(bass_thresh+mid_thresh+treb_thresh)*.018); +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=cos(pulse*(.5+.1*entropy)); +per_frame_25=q6=sin(pulse*(.5+pow(.25,entropy))); +per_frame_26=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_27=q8=entropy; +per_frame_28=ob_r=.2+.1*sin(time*2.157+q6); +per_frame_29=ob_b=.2+.1*sin(time*1.689+q5); +per_frame_30=ob_g=.2+.1*sin(time*.413+q4); +per_frame_31=ib_r=.8+.2*cos(time*1.2+q1*.1); +per_frame_32=ib_b=.2+.2*cos(time*2.811+q2*.1); +per_frame_33=ib_g=.7+.3*cos(time*1.666+q3*.1); +per_frame_34=ib_size=.03+.02*q2; +per_frame_35=ob_size=.03+.02*sin(time*2.321+q2*.2); +per_frame_36=ob_a=.75+.25*q3; +per_frame_37=ib_a=.8+.2*sin(q2*.3+q4+q1*.5); +per_frame_38=mv_r=mv_r+.5*sin(q4+time*.678); +per_frame_39=mv_b=mv_b+.5*sin(q4+time*.789); +per_frame_40=mv_g=mv_g+.5*sin(q5+time*.456); +per_frame_41=mv_a=.2+.2*sin(time*1.178+q5*1.14); +per_frame_42=rot=0; +per_frame_43=wave_r=.6+.4*sin(q1+time*2.183); +per_frame_44=wave_b=.6+.4*sin(q2+time*1.211); +per_frame_45=wave_g=.6+.4*sin(q3+time*1.541); +per_frame_46=wave_mystery=wave_mystery+.3*sin(time*2.18+q6); +per_frame_47=wave_x=wave_x+.3*sin(time*.811)+.005*(frame%3); +per_frame_48=wave_y=wave_y+.3*sin(time*.788)+.005*(frame%3); +per_frame_49=wave_a=3+sin(time*1.414)+q3; +per_frame_50=zoom=zoom+.5*sin(time*1.69); +per_pixel_1=xx=(x-.5+.03*q5+.1*y*q6+.1*sin(time*.322))*2; +per_pixel_2=yy=(y-.5+.03*q6+.1*x*q5+.1*sin(time*.427))*2; +per_pixel_3=dx=sin(xx); +per_pixel_4=dy=sin(yy); +per_pixel_5=rot=sin(rad*(xx*q4+yy*q5+1.7*q6)); diff --git a/libprojectM/src/share/presets/Unchained - Jaded Emotion.milk b/libprojectM/src/share/presets/Unchained - Jaded Emotion.milk new file mode 100755 index 000000000..fa422ed75 --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - Jaded Emotion.milk @@ -0,0 +1,75 @@ +[preset00] +fRating=2.000000 +fGammaAdj=2.000000 +fDecay=0.980000 +fVideoEchoZoom=0.996630 +fVideoEchoAlpha=0.000000 +nVideoEchoOrientation=0 +nWaveMode=3 +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.005729 +fWaveScale=7.184967 +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.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.250000 +ib_r=0.500000 +ib_g=0.500000 +ib_b=0.500000 +ib_a=0.100000 +per_frame_1=warp = 0; +per_frame_2=wave_r = wave_r + bass*.5; +per_frame_3=wave_g = wave_g + treb*.5; +per_frame_4=wave_b = wave_b + mid*.5; +per_frame_5=ib_r = ib_r + .4*sin(time*.222); +per_frame_6=ib_g = ib_g + .4*sin(time*.333); +per_frame_7=ib_b = ib_b + .4*sin(time*.111); +per_frame_8=ib_a = ib_a + .05*sin(time*.555); +per_frame_9=ib_size = ib_size + .24*sin(time*.444); +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=cx_residual = equal(bass_thresh,2)*0.016*sin(time*7) + (1-equal(bass_thresh,2))*cx_residual; +per_frame_12=treb_thresh = above(treb_att,treb_thresh)*2 + (1-above(treb_att,treb_thresh))*((treb_thresh-1.3)*0.96+1.3); +per_frame_13=cy_residual = equal(treb_thresh,2)*0.016*sin(time*7) + (1-equal(treb_thresh,2))*cy_residual; +per_frame_14=mid_thresh = above(mid_att,mid_thresh)*2 + (1-above(mid_att,mid_thresh))*((mid_thresh-1.3)*0.96+1.3); +per_frame_15=rot_residual = equal(mid_thresh,2)*0.016*sin(time*7) + (1-equal(mid_thresh,2))*rot_residual; +per_frame_16=cx=cx_residual+sin(time*.888); +per_frame_17=cy=cy_residual+sin(time*.999); +per_frame_18=rot=rot_residual*3; +per_pixel_1=zoom=zoom+cos(rad*10*sin(time*.666))*.07; diff --git a/libprojectM/src/share/presets/Unchained - Morat's Final Voyage.milk b/libprojectM/src/share/presets/Unchained - Morat's Final Voyage.milk new file mode 100644 index 000000000..f00c28e37 --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - Morat's Final Voyage.milk @@ -0,0 +1,83 @@ +[preset00] +fRating=2.000000 +fGammaAdj=2.000000 +fDecay=0.980000 +fVideoEchoZoom=1.001825 +fVideoEchoAlpha=0.500000 +nVideoEchoOrientation=3 +nWaveMode=2 +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=0.976151 +fWaveScale=0.931000 +fWaveSmoothing=0.180000 +fWaveParam=-0.320000 +fModWaveAlphaStart=0.750000 +fModWaveAlphaEnd=0.950000 +fWarpAnimSpeed=1.000000 +fWarpScale=1.000000 +fZoomExponent=2.300000 +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.500000 +ob_g=0.500000 +ob_b=0.500000 +ob_a=1.000000 +ib_size=0.010000 +ib_r=0.500000 +ib_g=0.500000 +ib_b=0.500000 +ib_a=1.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=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.3)*0.96+1.3); +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.3)*0.96+1.3); +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.3)*0.96+1.3); +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=pulse=if(above(abs(pulse),5000),-5000,pulse+mid_att*.1*bor(bor(bass_changed*bnot(treb_changed),treb_changed*bnot(bass_changed))*bnot(mid_changed),mid_changed)); +per_frame_15=wave_b=if(treb_changed,1,if(mid_changed,.45,-.45))*q4; +per_frame_16=wave_g=if(bass_changed,.1,bass_flop); +per_frame_17=wave_r=if(mid_flop,1,.5*q2*treb_flop); +per_frame_18=ib_b=ib_b+.5*sin(pulse); +per_frame_19=ib_g=ib_g+5*sin(pulse*.8); +per_frame_20=ib_r=ib_r+5*sin(pulse*.8); +per_frame_21=ob_b=wave_r; +per_frame_22=ob_g=wave_b; +per_frame_23=ob_r=wave_g; +per_frame_24=wave_mystery=sin(pulse); +per_frame_25=q1=pulse; +per_pixel_1=zoom=zoom-cos(x*10*sin(time+q1*.9)-10*sin(time+q1))*.1-sin(rad*10*sin(time+q1*.5))*.1; +per_pixel_2=rot=rot+abs(1-zoom)*sin(time+q1)*2; diff --git a/libprojectM/src/share/presets/Unchained - Painful Plasma (Multi-Wave Mirrored Rage) -- Rozzor triangle tweak.milk b/libprojectM/src/share/presets/Unchained - Painful Plasma (Multi-Wave Mirrored Rage) -- Rozzor triangle tweak.milk new file mode 100644 index 000000000..d6127c783 --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - Painful Plasma (Multi-Wave Mirrored Rage) -- Rozzor triangle tweak.milk @@ -0,0 +1,224 @@ +[preset00] +fRating=3.000000 +fGammaAdj=2.000000 +fDecay=0.960000 +fVideoEchoZoom=1.000000 +fVideoEchoAlpha=0.500000 +nVideoEchoOrientation=1 +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.224562 +fWaveSmoothing=0.000000 +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.700000 +wave_x=0.600000 +wave_y=0.500000 +ob_size=0.500000 +ob_r=0.030000 +ob_g=0.150000 +ob_b=0.250000 +ob_a=0.020000 +ib_size=0.500000 +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 +wavecode_0_enabled=1 +wavecode_0_samples=512 +wavecode_0_sep=0 +wavecode_0_bSpectrum=1 +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=0.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=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=1 +shapecode_1_sides=3 +shapecode_1_additive=0 +shapecode_1_thickOutline=1 +shapecode_1_x=0.500000 +shapecode_1_y=0.500000 +shapecode_1_rad=0.250000 +shapecode_1_ang=0.000000 +shapecode_1_r=1.000000 +shapecode_1_g=0.000000 +shapecode_1_b=0.000000 +shapecode_1_a=0.100000 +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.400000 +shape_1_per_frame1=ang = time*1.4; +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(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=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=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*.1*entropy) + bnot(bass_changed)*bass_residual; +per_frame_17=treb_residual = treb_changed*sin(pulse*.1*entropy) + bnot(treb_changed)*treb_residual; +per_frame_18=mid_residual = mid_changed*sin(pulse*.1*entropy) + bnot(mid_changed)*mid_residual; +per_frame_19=pulse=if(above(abs(pulse),20),-20,pulse+(bass_thresh+mid+thresh+treb_thresh)*.052+-(bass+treb+mid)*.01); +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=.05+.05*cos(wave_r+pulse*.03); +per_frame_33=ob_size=.2+.2*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_size=ob_size*cos(wave_g+pulse*0.4)*.5; +per_frame_38=mv_a=q1; +per_frame_39=mv_x=rand(30); +per_frame_40=mv_y=rand(30); +per_frame_41=mv_r=wave_b; +per_frame_42=mv_b=wave_g; +per_frame_43=mv_g=wave_r; +per_frame_44=wave_mode=4+4*q4; +per_pixel_1=newx = x - abs(q1); +per_pixel_2=newy = y - abs(q2); +per_pixel_3=newrad = sqrt((newx)*(newx)+0.5625*(newy)*(newy))*2; +per_pixel_4=newzoom = pow(1.03, 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 = zoom+.07*cos(x*10*q3); +per_pixel_9=rot = rot * (zoom-1); diff --git a/libprojectM/src/share/presets/Unchained - Perverted Dialect.milk b/libprojectM/src/share/presets/Unchained - Perverted Dialect.milk new file mode 100755 index 000000000..139c324e9 --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - Perverted Dialect.milk @@ -0,0 +1,85 @@ +[preset00] +fRating=4.000000 +fGammaAdj=2.000000 +fDecay=0.983000 +fVideoEchoZoom=1.006596 +fVideoEchoAlpha=0.000000 +nVideoEchoOrientation=3 +nWaveMode=3 +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=0.800000 +fWaveScale=2.047093 +fWaveSmoothing=0.750000 +fWaveParam=0.000000 +fModWaveAlphaStart=0.750000 +fModWaveAlphaEnd=0.950000 +fWarpAnimSpeed=1.000000 +fWarpScale=1.000000 +fZoomExponent=3.394161 +fShader=0.000000 +zoom=1.008148 +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=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=warp = 0; +per_frame_2=wave_r = wave_r + if(above(bass_att,1.4),1,.49*sin(time*2)); +per_frame_3=wave_g = wave_g + if(above(bass_att,1.4),0,if(above(treb_att,1.4),1,.49*sin(time*3))); +per_frame_4=wave_b = wave_b + if(above(treb_att,1.4),0,.49*sin(time)); +per_frame_5=timer_base=.5; +per_frame_6=q1=sin(time*timer_base*4); +per_frame_7=q2=sin(time*timer_base*2); +per_frame_8=q3=sin(time*timer_base); +per_frame_9=rot=if(above(q1,0),if(above(q2,0),.1,-.1),0); +per_frame_10=zoom=zoom+.05*q2+.05*q1; +per_frame_11=wave_mystery=wave_mystery+.7*q1+.3*q2; +per_frame_12=wave_size=wave_size+0.5*q3; +per_frame_13=cx=cx+.2*q1; +per_frame_14=cy=cy+.2*q3; +per_pixel_1=centerx = .5; +per_pixel_2=centery = .5; +per_pixel_3=crad = abs(rad-.5)*q2; +per_pixel_4=grid=abs(x*10-5)%2 + abs(y*10-5)%2; +per_pixel_5=sx_temp = if(equal(grid,0),if(above(x,centerx),sx - crad - centerx,sx + crad - centerx),sx); +per_pixel_6=sy_temp = if(equal(grid,0),if(above(y,centery),sy - crad - centery,sy + crad - centery),sy); +per_pixel_7=sx=if(below(q1,0),sx-sx_temp*q2*.1,sx); +per_pixel_8=sy=if(below(q1,0),sy-sx_temp*q2*.1,sy); diff --git a/libprojectM/src/share/presets/Unchained - ReAwoke.milk b/libprojectM/src/share/presets/Unchained - ReAwoke.milk new file mode 100755 index 000000000..47efb3b35 --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - ReAwoke.milk @@ -0,0 +1,269 @@ +[preset00] +fRating=3.000000 +fGammaAdj=1.000000 +fDecay=1.000000 +fVideoEchoZoom=0.999489 +fVideoEchoAlpha=0.500000 +nVideoEchoOrientation=3 +nWaveMode=7 +bAdditiveWaves=0 +bWaveDots=0 +bWaveThick=1 +bModWaveAlphaByVolume=0 +bMaximizeWaveColor=0 +bTexWrap=0 +bDarkenCenter=0 +bRedBlueStereo=0 +bBrighten=0 +bDarken=1 +bSolarize=0 +bInvert=0 +fWaveAlpha=1.059269 +fWaveScale=0.653093 +fWaveSmoothing=0.270000 +fWaveParam=-0.380000 +fModWaveAlphaStart=0.750000 +fModWaveAlphaEnd=0.950000 +fWarpAnimSpeed=5.995790 +fWarpScale=1.331000 +fZoomExponent=1.000000 +fShader=0.000000 +zoom=0.337423 +rot=0.001900 +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.005000 +ob_r=0.000000 +ob_g=0.000000 +ob_b=0.000000 +ob_a=1.000000 +ib_size=0.010000 +ib_r=0.500000 +ib_g=0.900000 +ib_b=0.500000 +ib_a=1.000000 +nMotionVectorsX=24.959999 +nMotionVectorsY=19.199999 +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 +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=1 +shapecode_0_x=0.500000 +shapecode_0_y=0.500000 +shapecode_0_rad=0.776608 +shapecode_0_ang=0.628319 +shapecode_0_tex_ang=3.141593 +shapecode_0_tex_zoom=0.408391 +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=.5+.05*q4; +shape_0_per_frame2=y=.5+.05*q5; +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(equal(pulse,-20),1+bass_flop+treb_flop+mid_flop+rand(2),entropy); +per_frame_7=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.6)*chaos+1.6); +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.6)*chaos+1.6); +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.6)*chaos+1.6); +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*3) + bnot(bass_changed)*bass_residual; +per_frame_17=treb_residual = treb_changed*sin(pulse*3) + bnot(treb_changed)*treb_residual; +per_frame_18=mid_residual = mid_changed*sin(pulse*3) + bnot(mid_changed)*mid_residual; +per_frame_19=pulse=if(above(abs(pulse),20),-20,pulse+(bass_thresh+mid_thresh+treb_thresh)*.018); +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=cos(pulse*(.5+.1*entropy)); +per_frame_25=q6=sin(pulse*(.5+pow(.25,entropy))); +per_frame_26=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_27=q8=entropy; +per_frame_28=ob_r=.2+.1*sin(time*2.157+q6); +per_frame_29=ob_b=.2+.1*sin(time*1.689+q5); +per_frame_30=ob_g=.2+.1*sin(time*.413+q4); +per_frame_31=ib_r=.8+.2*cos(time*1.2+q1*.1); +per_frame_32=ib_b=.2+.2*cos(time*2.811+q2*.1); +per_frame_33=ib_g=.7+.3*cos(time*1.666+q3*.1); +per_frame_34=ib_size=.1+.05*q2; +per_frame_35=ob_size=.03+.02*sin(time*2.321+q2*.2); +per_frame_36=ob_a=.75+.25*q3; +per_frame_37=ib_a=.8+.2*sin(q2*.3+q4+q1*.5); +per_frame_38=mv_r=mv_r+.5*sin(q4+time*.678); +per_frame_39=mv_b=mv_b+.5*sin(q4+time*.789); +per_frame_40=mv_g=mv_g+.5*sin(q5+time*.456); +per_frame_41=mv_a=.2+.2*sin(time*1.178+q5*1.14); +per_frame_42=rot=0; +per_frame_43=wave_r=.6+.4*sin(q1+time*2.183); +per_frame_44=wave_b=.6+.4*sin(q2+time*1.211); +per_frame_45=wave_g=.6+.4*sin(q3+time*1.541); +per_frame_46=wave_mystery=wave_mystery+.5*sin(time*2.18+q6); +per_frame_47=wave_x=wave_x+.3*sin(time*.811)+.005*(frame%3); +per_frame_48=wave_y=wave_y+.3*sin(time*.788)+.005*(frame%3); +per_frame_49=wave_a=3+sin(time*1.414)+q3; +per_frame_50=zoom=zoom+.03*sin(time*.8); +per_frame_51=wave_mode=q8%2; +per_pixel_1=xx=(x-.5+.03*q5+.1*y*q6+.1*sin(time*.322))*2; +per_pixel_2=yy=(y-.5+.03*q6+.1*x*q5+.1*sin(time*.427))*2; +per_pixel_3=dx=sin(xx); +per_pixel_4=dy=sin(yy); +per_pixel_5=radix=if(above(q3,0),min(xx,yy),max(xx,yy)); +per_pixel_6=radix=if(above(q2,0),min(radix,rad),max(radix,rad)); +per_pixel_7=rot=sin(rad*(xx*q4+yy*q5+radix*q6)); +per_pixel_8=cx=cx+xx; +per_pixel_9=cy=cy+yy; diff --git a/libprojectM/src/share/presets/Unchained - Ribald Ballad.milk b/libprojectM/src/share/presets/Unchained - Ribald Ballad.milk new file mode 100755 index 000000000..f60c1e6ca --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - Ribald Ballad.milk @@ -0,0 +1,106 @@ +[preset00] +fRating=3.000000 +fGammaAdj=1.000000 +fDecay=0.991000 +fVideoEchoZoom=1.008149 +fVideoEchoAlpha=0.500000 +nVideoEchoOrientation=3 +nWaveMode=7 +bAdditiveWaves=1 +bWaveDots=0 +bModWaveAlphaByVolume=0 +bMaximizeWaveColor=0 +bTexWrap=1 +bDarkenCenter=0 +bRedBlueStereo=0 +bBrighten=0 +bDarken=0 +bSolarize=0 +bInvert=0 +fWaveAlpha=3.160929 +fWaveScale=3.394157 +fWaveSmoothing=0.540000 +fWaveParam=0.000000 +fModWaveAlphaStart=0.750000 +fModWaveAlphaEnd=0.950000 +fWarpAnimSpeed=1.000000 +fWarpScale=1.772000 +fZoomExponent=1.960000 +fShader=0.070000 +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=1.000000 +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=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*.1*entropy) + bnot(bass_changed)*bass_residual; +per_frame_17=treb_residual = treb_changed*sin(pulse*.1*entropy) + bnot(treb_changed)*treb_residual; +per_frame_18=mid_residual = mid_changed*sin(pulse*.1*entropy) + bnot(mid_changed)*mid_residual; +per_frame_19=pulse=if(above(abs(pulse),20),-20,pulse+(bass_thresh+mid+thresh+treb_thresh)*.035-(bass+treb+mid)*.01); +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=.05+.05*cos(wave_r+pulse*.03); +per_frame_33=ob_size=.2+.2*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_size=ob_size*cos(wave_g+pulse*0.4)*.5; +per_frame_38=mv_a=.5+.5*q4; +per_frame_39=mv_x=bass_flop*(15+q2*15); +per_frame_40=mv_y=bass_flop*(15+q3*15); +per_frame_41=mv_r=wave_b; +per_frame_42=mv_b=wave_g; +per_frame_43=mv_g=wave_r; +per_frame_44=cx=cx+sin(pulse*q3)*.1; +per_frame_45=cy=cy+sin(pulse*q2)*.1; +per_pixel_1=rot=if(above(q4,0),rad*.2*q5,rot+.3*sin(ang*3.14*(q1+q2+q3))); +per_pixel_2=zoom=if(above(q2,0),zoom-cos(rad*3.14*q2)*.1,if(above(q3,0),1+q1*.05,1+.07*cos(ang*10*q1))); diff --git a/libprojectM/src/share/presets/Unchained - Shaping The Grid.milk b/libprojectM/src/share/presets/Unchained - Shaping The Grid.milk new file mode 100755 index 000000000..dc4496935 --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - Shaping The Grid.milk @@ -0,0 +1,273 @@ +[preset00] +fRating=3.000000 +fGammaAdj=1.000000 +fDecay=0.985000 +fVideoEchoZoom=1.000000 +fVideoEchoAlpha=0.500000 +nVideoEchoOrientation=3 +nWaveMode=0 +bAdditiveWaves=0 +bWaveDots=0 +bWaveThick=1 +bModWaveAlphaByVolume=0 +bMaximizeWaveColor=0 +bTexWrap=1 +bDarkenCenter=0 +bRedBlueStereo=0 +bBrighten=0 +bDarken=1 +bSolarize=1 +bInvert=0 +fWaveAlpha=0.625316 +fWaveScale=1.187274 +fWaveSmoothing=0.000000 +fWaveParam=0.000000 +fModWaveAlphaStart=0.710000 +fModWaveAlphaEnd=1.300000 +fWarpAnimSpeed=1.000000 +fWarpScale=1.331000 +fZoomExponent=0.999700 +fShader=0.030000 +zoom=0.960496 +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.500000 +ob_r=0.500000 +ob_g=0.500000 +ob_b=0.500000 +ob_a=0.000000 +ib_size=0.500000 +ib_r=0.500000 +ib_g=0.500000 +ib_b=0.500000 +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.500000 +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=1 +shapecode_0_textured=0 +shapecode_0_x=0.650000 +shapecode_0_y=0.500000 +shapecode_0_rad=0.605500 +shapecode_0_ang=0.000000 +shapecode_0_tex_ang=0.628319 +shapecode_0_tex_zoom=1.816695 +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=0.000000 +shapecode_0_border_g=0.000000 +shapecode_0_border_b=0.000000 +shapecode_0_border_a=1.000000 +shape_0_per_frame1=ang=3.14+3.14*q1; +shape_0_per_frame2=x=.5+.1*q2; +shape_0_per_frame3=y=.5+.1*q3; +shape_0_per_frame4=sides=3+q6; +shape_0_per_frame5=rad=.5+.5*q4; +shape_0_per_frame6=textured=above(q6,3); +shape_0_per_frame7=border_r=1-rad; +shape_0_per_frame8=border_b=rad-.01*sides; +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=entropy=2; +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=.1+.1*sin(pulse); +per_frame_6=bass_thresh =if(above(bass_att,bass_thresh),3,bass_thresh-chaos); +per_frame_7=bass_flop=abs(bass_flop-equal(bass_thresh,3)); +per_frame_8=treb_thresh=if(above(treb_att,treb_thresh),3,treb_thresh-chaos); +per_frame_9=treb_flop=abs(treb_flop-equal(treb_thresh,3)); +per_frame_10=mid_thresh=if(above(mid_att,mid_thresh),3,mid_thresh-chaos); +per_frame_11=mid_flop=abs(mid_flop-equal(mid_thresh,3)); +per_frame_12=bass_changed=bnot(equal(old_bass_flop,bass_flop)); +per_frame_13=mid_changed=bnot(equal(old_mid_flop,mid_flop)); +per_frame_14=treb_changed=bnot(equal(old_treb_flop,treb_flop)); +per_frame_15=bass_residual = bass_changed*sin(pulse*3) + bnot(bass_changed)*bass_residual; +per_frame_16=treb_residual = treb_changed*sin(pulse*3) + bnot(treb_changed)*treb_residual; +per_frame_17=mid_residual = mid_changed*sin(pulse*3) + bnot(mid_changed)*mid_residual; +per_frame_18=pulse=if(above(abs(pulse),3.14),-3.14,pulse+(bass_thresh+mid_thresh+treb_thresh)*.032); +per_frame_19=entropy=if(equal(pulse,-3.14),bass_flop+mid_flop+treb_flop+rand(5),entropy); +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=cos(pulse/2+q1); +per_frame_25=q6=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=q7=entropy; +per_frame_27=q8=sin(q6*q1+q7*q2); +per_frame_28=zoom=zoom+.02*q8; +per_frame_29=wave_mystery=sin(q1+q5); +per_frame_30=wave_r=wave_r+.5*sin(q1+q2*2+q4*2.1); +per_frame_31=wave_b=wave_b+.5*sin(q2+q3*2+q4*2.2); +per_frame_32=wave_g=wave_g+.5*sin(q3+q1*2+q4*2.3); +per_frame_33=ob_r=if(bass_flop,ob_r+.5*sin(q1+q3*1.14+q2),wave_b); +per_frame_34=ob_b=if(treb_flop,ob_b+.5*sin(q2+q1*1.14+q3),wave_g); +per_frame_35=ob_g=if(mid_flop,ob_g+.5*sin(q3+q2*1.14+q1),wave_r); +per_frame_36=ib_r=if(bass_flop,ob_b,ib_r+.5*cos(q5+q1*2.14)); +per_frame_37=ib_b=if(treb_flop,ob_g,ib_b+.5*cos(q5+q2*2.14)); +per_frame_38=ib_g=if(mid_flop,ob_r,ib_g+.5*cos(q5+q3*2.14)); +per_frame_39=mv_r=mv_r+.5*sin(q4+q5*1.14*q1); +per_frame_40=mv_b=mv_b+.5*sin(q4+q5*1.14*q2); +per_frame_41=mv_g=mv_g+.5*sin(q5+q5*1.14*q3); +per_frame_42=ob_a=.25+.25*sin(q2+q3*2.14); +per_frame_43=ib_a=.5+.5*sin(q2*2.14+q3); +per_frame_44=mv_a=mv_a+mv_a*sin(q3*2.14+q2); +per_frame_45=ob_size=.1+.1*sin(q3*3+q1); +per_frame_46=ib_size=ib_size*.5+ib_size*.25*sin(q1*3+q3); +per_frame_47=wave_mode=q6+above(q4,0)+above(q5,0); +per_frame_48=wave_mystery=sin(q3*1.14+q1*1.14+q2); +per_frame_49=mv_l=(q6*q7)*q2; +per_frame_50=wave_x=wave_x+.1*q7*q4; +per_frame_51=wave_y=wave_y+.1*q6*q5; +per_frame_52=mv_x=q6*q7; +per_frame_53=mv_y=q6*q7; +per_frame_54=monitor=q1; +per_pixel_1=grid=(x*q7*3)%2+above(y,.5+.25)*above(q6,4); +per_pixel_2=zoom=zoom+.07*cos(sin(rad*2.14*q3+abs(rad-.1*grid))*2.14+rad*sin(q4*2.14+q1))*bnot(grid); +per_pixel_3=rot=.05*equal(grid,0)*cos(rad*2.14*q2+q3)*(q2+q3); diff --git a/libprojectM/src/share/presets/Unchained - Subjective Experience Of The Manifold.milk b/libprojectM/src/share/presets/Unchained - Subjective Experience Of The Manifold.milk new file mode 100755 index 000000000..21ecf1f8c --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - Subjective Experience Of The Manifold.milk @@ -0,0 +1,119 @@ +[preset00] +fRating=3.000000 +fGammaAdj=1.000000 +fDecay=1.000000 +fVideoEchoZoom=0.999496 +fVideoEchoAlpha=1.000000 +nVideoEchoOrientation=0 +nWaveMode=0 +bAdditiveWaves=1 +bWaveDots=0 +bWaveThick=1 +bModWaveAlphaByVolume=0 +bMaximizeWaveColor=0 +bTexWrap=1 +bDarkenCenter=0 +bRedBlueStereo=0 +bBrighten=0 +bDarken=1 +bSolarize=0 +bInvert=0 +fWaveAlpha=1.059269 +fWaveScale=0.653093 +fWaveSmoothing=0.090000 +fWaveParam=0.000000 +fModWaveAlphaStart=0.750000 +fModWaveAlphaEnd=0.950000 +fWarpAnimSpeed=5.995790 +fWarpScale=1.331000 +fZoomExponent=1.000000 +fShader=0.000000 +zoom=0.998400 +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=1.000000 +wave_g=1.000000 +wave_b=1.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.500000 +ib_g=0.900000 +ib_b=0.500000 +ib_a=1.000000 +nMotionVectorsX=24.959999 +nMotionVectorsY=19.199999 +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=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(equal(pulse,-20),1+bass_flop+treb_flop+mid_flop+rand(2),entropy); +per_frame_7=bass_thresh = above(bass_att,bass_thresh)*2 + (1-above(bass_att,bass_thresh))*((bass_thresh-1.6)*chaos+1.6); +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.6)*chaos+1.6); +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.6)*chaos+1.6); +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*3) + bnot(bass_changed)*bass_residual; +per_frame_17=treb_residual = treb_changed*sin(pulse*3) + bnot(treb_changed)*treb_residual; +per_frame_18=mid_residual = mid_changed*sin(pulse*3) + bnot(mid_changed)*mid_residual; +per_frame_19=pulse=if(above(abs(pulse),20),-20,pulse+(bass_thresh+mid_thresh+treb_thresh)*.008); +per_frame_20=q1=mid_residual; +per_frame_21=q2=bass_residual; +per_frame_22=q3=treb_residual; +per_frame_23=q4=sin(pulse*q1); +per_frame_24=q5=cos(pulse/2+q1); +per_frame_25=q6=sin(q1*1.14+q2*1.14+q3*1.14); +per_frame_26=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_27=q8=entropy; +per_frame_28=ob_r=.2+.2*sin(time*2.157); +per_frame_29=ob_b=.2+.2*sin(time*1.689); +per_frame_30=ob_g=.2+.2*sin(time*1.413); +per_frame_31=ib_r=.8+.2*cos(time*1.2+q1*.1); +per_frame_32=ib_b=.2+.2*cos(time*2.811+q2*.1); +per_frame_33=ib_g=.7+.3*cos(time*1.666+q3*.1); +per_frame_34=ib_size=.03+.02*q2; +per_frame_35=ob_size=.03+.02*sin(time*2.321+q2*.2); +per_frame_36=ob_a=.75+.25*q3; +per_frame_37=ib_a=.8+.2*sin(q2*.3+q4+q1*.5); +per_frame_38=mv_r=mv_r+.5*sin(q4+time*.678); +per_frame_39=mv_b=mv_b+.5*sin(q4+time*.789); +per_frame_40=mv_g=mv_g+.5*sin(q5+time*.456); +per_frame_41=mv_a=.2+.2*sin(time*1.178+q5*1.14); +per_frame_42=rot=0; +per_frame_43=echo_zoom=1+.08*q1+.08*q2+.06*q3+.16*cos(time*.681); +per_frame_44=wave_r=.5+.5*sin(q1+time*2.183); +per_frame_45=wave_b=.5+.5*sin(q2+time*1.211); +per_frame_46=wave_g=.5+.5*sin(q3+time*1.541); +per_frame_47=wave_mystery=wave_mystery+.5*sin(time*3+q6); +per_frame_48=wave_x=wave_x+.3*sin(time*.811)+.005*(frame%3); +per_frame_49=wave_y=wave_y+.3*sin(time*.788)+.005*(frame%3); +per_frame_50=wave_mode=q8%3; +per_frame_51=wave_a=3+sin(time*1.414)+q3; +per_pixel_1=xx=x-.5+.03*q5+.1*y*q6+.1*sin(time*.322); +per_pixel_2=yy=y-.5+.03*q6+.1*x*q5+.1*sin(time*.427); +per_pixel_3=dx=sin(xx*2); +per_pixel_4=dy=sin(yy*2); +per_pixel_5=rot=sin(rad*1.4+.3*q4); diff --git a/libprojectM/src/share/presets/Unchained - Working the Grid.milk b/libprojectM/src/share/presets/Unchained - Working the Grid.milk new file mode 100755 index 000000000..f18d7d7d3 --- /dev/null +++ b/libprojectM/src/share/presets/Unchained - Working the Grid.milk @@ -0,0 +1,120 @@ +[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=1 +bModWaveAlphaByVolume=0 +bMaximizeWaveColor=0 +bTexWrap=1 +bDarkenCenter=0 +bRedBlueStereo=0 +bBrighten=0 +bDarken=1 +bSolarize=0 +bInvert=0 +fWaveAlpha=0.625316 +fWaveScale=1.187274 +fWaveSmoothing=0.000000 +fWaveParam=0.000000 +fModWaveAlphaStart=0.710000 +fModWaveAlphaEnd=1.300000 +fWarpAnimSpeed=1.000000 +fWarpScale=1.331000 +fZoomExponent=0.999700 +fShader=0.030000 +zoom=0.960496 +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.500000 +ob_r=0.500000 +ob_g=0.500000 +ob_b=0.500000 +ob_a=0.000000 +ib_size=0.500000 +ib_r=0.500000 +ib_g=0.500000 +ib_b=0.500000 +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.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(equal(pulse,-20),1+bass_flop+treb_flop+mid_flop+rand(2),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*.1*entropy) + bnot(bass_changed)*bass_residual; +per_frame_17=treb_residual = treb_changed*sin(pulse*.1*entropy) + bnot(treb_changed)*treb_residual; +per_frame_18=mid_residual = mid_changed*sin(pulse*.1*entropy) + bnot(mid_changed)*mid_residual; +per_frame_19=pulse=if(above(abs(pulse),20),-20,pulse+(bass_thresh+mid_thresh+treb_thresh)*.032); +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=cos(pulse/2+q1); +per_frame_25=q6=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=q7=entropy; +per_frame_27=q8=sin(q6*q1+q7*q2); +per_frame_28=zoom=zoom+.02*q8; +per_frame_29=wave_mystery=sin(q1+q5); +per_frame_30=wave_r=wave_r+.5*sin(q1+q2*2+q4*2.1); +per_frame_31=wave_b=wave_b+.5*sin(q2+q3*2+q4*2.2); +per_frame_32=wave_g=wave_g+.5*sin(q3+q1*2+q4*2.3); +per_frame_33=ob_r=if(bass_flop,ob_r+.5*sin(q1+q3*1.14+q2),wave_b); +per_frame_34=ob_b=if(treb_flop,ob_b+.5*sin(q2+q1*1.14+q3),wave_g); +per_frame_35=ob_g=if(mid_flop,ob_g+.5*sin(q3+q2*1.14+q1),wave_r); +per_frame_36=ib_r=if(bass_flop,ob_b,ib_r+.5*cos(q5+q1*2.14)); +per_frame_37=ib_b=if(treb_flop,ob_g,ib_b+.5*cos(q5+q2*2.14)); +per_frame_38=ib_g=if(mid_flop,ob_r,ib_g+.5*cos(q5+q3*2.14)); +per_frame_39=mv_r=mv_r+.5*sin(q4+q5*1.14*q1); +per_frame_40=mv_b=mv_b+.5*sin(q4+q5*1.14*q2); +per_frame_41=mv_g=mv_g+.5*sin(q5+q5*1.14*q3); +per_frame_42=ob_a=.25+.25*sin(q2+q3*2.14); +per_frame_43=ib_a=.5+.5*sin(q2*2.14+q3); +per_frame_44=mv_a=mv_a+mv_a*sin(q3*2.14+q2); +per_frame_45=ob_size=.1+.1*sin(q3*3+q1); +per_frame_46=ib_size=ib_size*.5+ib_size*.25*sin(q1*3+q3); +per_frame_47=wave_mode=q6+above(q4,0)+above(q5,0); +per_frame_48=wave_mystery=sin(q3*1.14+q1*1.14+q2); +per_frame_49=mv_l=(q6*q7)*q2; +per_frame_50=wave_x=wave_x+.1*q7*q4; +per_frame_51=wave_y=wave_y+.1*q6*q5; +per_frame_52=mv_x=q6*q7; +per_frame_53=mv_y=q6*q7; +per_pixel_1=grid=(x*q7*3)%2+above(y,.5+.25)*above(q6,4); +per_pixel_2=zoom=zoom+.07*cos(sin(rad*2.14*q3+abs(rad-.1*grid))*2.14+rad*sin(q4*2.14+q1))*bnot(grid); +per_pixel_3=rot=.05*equal(grid,0)*cos(rad*2.14*q2+q3)*(q2+q3); +per_frame_init_1=entropy=2; diff --git a/libprojectM/src/share/presets/Zylot - Azirphaeli's Mirror.milk b/libprojectM/src/share/presets/Zylot - Azirphaeli's Mirror.milk new file mode 100755 index 000000000..956f07d2b --- /dev/null +++ b/libprojectM/src/share/presets/Zylot - Azirphaeli's Mirror.milk @@ -0,0 +1,71 @@ +[preset00] +fRating=4.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=1 +bDarkenCenter=1 +bRedBlueStereo=0 +bBrighten=0 +bDarken=0 +bSolarize=0 +bInvert=0 +fWaveAlpha=2.163847 +fWaveScale=0.591235 +fWaveSmoothing=0.000000 +fWaveParam=-0.440000 +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.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=0.000000 +nMotionVectorsY=0.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=1.000000 +per_frame_1=warp = 0; +per_frame_2=ob_a = 1; +per_frame_3=ob_r = (bass*.3); +per_pixel_1=zoom = pow(rad+(0&bass*.5),2); +per_pixel_2=zoom = if(below(zoom,.5),.5,zoom); +per_pixel_3=rot = sin(time)*rad; +per_pixel_4=dx = .01*sin(time*.77); +per_pixel_5=dy = .01*cos(time*.33); diff --git a/libprojectM/src/share/presets/Zylot - Block Of Sound (Abstract Architecture Mix).milk b/libprojectM/src/share/presets/Zylot - Block Of Sound (Abstract Architecture Mix).milk new file mode 100755 index 000000000..bf36f49d2 --- /dev/null +++ b/libprojectM/src/share/presets/Zylot - Block Of Sound (Abstract Architecture Mix).milk @@ -0,0 +1,218 @@ +[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=1 +bModWaveAlphaByVolume=0 +bMaximizeWaveColor=0 +bTexWrap=1 +bDarkenCenter=0 +bRedBlueStereo=0 +bBrighten=0 +bDarken=0 +bSolarize=0 +bInvert=0 +fWaveAlpha=0.001000 +fWaveScale=0.124746 +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.500000 +wave_g=0.500000 +wave_b=0.500000 +wave_x=0.030000 +wave_y=0.960000 +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 +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.100000 +shapecode_0_ang=0.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=1.000000 +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_per_frame1=ang = ang + 10*sin(time*.8); +shape_0_per_frame2=vol = 0.167*(bass+mid+att); +shape_0_per_frame3=xamptarg = if(equal(frame%15,0),min(0.5*vol*bass_att,0.5),xamptarg); +shape_0_per_frame4=xamp = xamp + 0.5*(xamptarg-xamp); +shape_0_per_frame5=xdir = if(above(abs(xpos),xamp),-sign(xpos),if(below(abs(xspeed),0.1),2*above(xpos,0)-1,xdir)); +shape_0_per_frame6=xspeed = xspeed + xdir*xamp - xpos - xspeed*0.055*below(abs(xpos),xamp); +shape_0_per_frame7=xpos = xpos + 0.001*xspeed; +shape_0_per_frame8=yamptarg = if(equal(frame%15,0),min(0.3*vol*treb_att,0.5),yamptarg); +shape_0_per_frame9=yamp = yamp + 0.5*(yamptarg-yamp); +shape_0_per_frame10=ydir = if(above(abs(ypos),yamp),-sign(ypos),if(below(abs(yspeed),0.1),2*above(ypos,0)-1,ydir)); +shape_0_per_frame11=yspeed = yspeed + ydir*yamp - ypos - yspeed*0.055*below(abs(ypos),yamp); +shape_0_per_frame12=ypos = ypos + 0.001*yspeed; +shape_0_per_frame13=x = centerx; +shape_0_per_frame14=y = abs(centery-1); +shape_0_per_frame15=centerx = 1.75*xpos + 0.5; +shape_0_per_frame16=centery = 1.75*ypos + 0.5; +shape_0_per_frame17=r2 = .5+.2*sin(time*.666); +shape_0_per_frame18=g2 = .5+.2*sin(time*.555); +shape_0_per_frame19=b2 = .5+.2*sin(time*.777); +shape_0_per_frame20=rad = rad + bass*.1; +shape_0_per_frame21=border_r = bass*.3; +shape_0_per_frame22=border_g = treb*.3; +shape_0_per_frame23=border_b = mis*.3; +shape_0_per_frame24=r = if(above(bass,1.3),1,0); +shape_0_per_frame25=g = if(above(bass,1.3),1,0); +shape_0_per_frame26=b = if(above(bass,1.3),1,0); +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=vol = 0.167*(bass+mid+att); +per_frame_3=xamptarg = if(equal(frame%15,0),min(0.5*vol*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.3*vol*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=wave_x = centerx; +per_frame_14=wave_y = abs(centery-1); +per_frame_15=centerx = 1.75*xpos + 0.5; +per_frame_16=centery = 1.75*ypos + 0.5; +per_frame_17=q1 = centerx; +per_frame_18=q2 = centery; +per_frame_19=q3 = .06 + bass*.04; +per_frame_20=wave_r = bass*.3; +per_frame_21=wave_g = treb*.3; +per_frame_22=wave_b = mid*.3; +per_pixel_1=zoom = if(above(x,q1 - q3),if(below(x,q1 + q3),if(above(y,q2 - q3),if(below(y,q2 + q3),1,.94+ze),.94+ze),.94+ze),.94+ze); +per_pixel_2=zoomerx = if(above(x,q1),.01,-.01); +per_pixel_3=zoomery = if(above(y,q2),.01,-.01); +per_pixel_4=dx = if(above(x,q1 - q3),if(below(x,q1 + q3),if(above(y,q2 - q3),if(below(y,q2 + q3),zoomerx,.7+dxe),.7+dxe),.7+dxe),.7+dxe); +per_pixel_5=dy = if(above(x,q1 - q3),if(below(x,q1 + q3),if(above(y,q2 - q3),if(below(y,q2 + q3),zoomery,.7+dye),.7+dye),.7+dye),.7+dye); +per_pixel_6=dxe = .2 + .2*sin(time*.444); +per_pixel_7=dye = .2+.2*cos(time*.222); +per_pixel_8=ze = .04*sin(time*.777); diff --git a/libprojectM/src/share/presets/Zylot - Block Of Sound (Fractal Construction Mix).milk b/libprojectM/src/share/presets/Zylot - Block Of Sound (Fractal Construction Mix).milk new file mode 100644 index 000000000..b9a458e04 --- /dev/null +++ b/libprojectM/src/share/presets/Zylot - Block Of Sound (Fractal Construction Mix).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=1 +bModWaveAlphaByVolume=0 +bMaximizeWaveColor=0 +bTexWrap=1 +bDarkenCenter=0 +bRedBlueStereo=0 +bBrighten=0 +bDarken=0 +bSolarize=0 +bInvert=0 +fWaveAlpha=3.558724 +fWaveScale=0.124746 +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.500000 +wave_g=0.500000 +wave_b=0.500000 +wave_x=0.030000 +wave_y=0.960000 +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=vol = 0.167*(bass+mid+att); +per_frame_3=xamptarg = if(equal(frame%15,0),min(0.5*vol*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.3*vol*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=wave_x = centerx; +per_frame_14=wave_y = abs(centery-1); +per_frame_15=centerx = 1.75*xpos + 0.5; +per_frame_16=centery = 1.75*ypos + 0.5; +per_frame_17=q1 = centerx; +per_frame_18=q2 = centery; +per_frame_19=q3 = .06 + bass*.04; +per_frame_20=wave_r = bass*.3; +per_frame_21=wave_g = treb*.3; +per_frame_22=wave_b = mid*.3; +per_pixel_1=zoom = if(above(x,q1 - q3),if(below(x,q1 + q3),if(above(y,q2 - q3),if(below(y,q2 + q3),1,.94+ze),.94+ze),.94+ze),.94+ze); +per_pixel_2=zoomerx = if(above(x,q1),.01,-.01); +per_pixel_3=zoomery = if(above(y,q2),.01,-.01); +per_pixel_4=dx = if(above(x,q1 - q3),if(below(x,q1 + q3),if(above(y,q2 - q3),if(below(y,q2 + q3),zoomerx,.7+dxe),.7+dxe),.7+dxe),.7+dxe); +per_pixel_5=dy = if(above(x,q1 - q3),if(below(x,q1 + q3),if(above(y,q2 - q3),if(below(y,q2 + q3),zoomery,.7+dye),.7+dye),.7+dye),.7+dye); +per_pixel_6=dxe = .2 + .2*sin(time*.444); +per_pixel_7=dye = .2+.2*cos(time*.222); +per_pixel_8=ze = .04*sin(time*.777); diff --git a/libprojectM/src/share/presets/Zylot - Crystal Ball (Magical Reaction Mix).milk b/libprojectM/src/share/presets/Zylot - Crystal Ball (Magical Reaction Mix).milk new file mode 100755 index 000000000..7dfb3a8c0 --- /dev/null +++ b/libprojectM/src/share/presets/Zylot - Crystal Ball (Magical Reaction Mix).milk @@ -0,0 +1,364 @@ +[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=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=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=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=//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=0 +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=rad = rad + sin(time); +shape_0_per_frame2=r2 = bass; +shape_0_per_frame3=g2 = treb; +shape_0_per_frame4=b2 = mid; +shape_0_per_frame5=r = if(above(bass+mid+treb/3,6),1,0); +shape_0_per_frame6=g = if(above(bass+mid+treb/3,6),1,0); +shape_0_per_frame7=b = if(above(bass+mid+treb/3,6),1,0); +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=rad = .55; +shape_1_per_frame2=r = min(1,max(0,r + 0.1*sin(time*0.417 + 1))); +shape_1_per_frame3=g = min(1,max(0,g + 0.1*sin(time*0.391 + 2))); +shape_1_per_frame4=b = min(1,max(0,b + 0.1*sin(time*0.432 + 4))); +shape_1_per_frame5=r2 = min(1,max(0,r2 + 0.1*sin(time*0.457 + 3))); +shape_1_per_frame6=g2 = min(1,max(0,g2 + 0.1*sin(time*0.437 + 5))); +shape_1_per_frame7=b2 = min(1,max(0,b2 + 0.1*sin(time*0.484 + 6))); +shape_1_per_frame8=ang = ang-cos(time*.02); +shape_1_per_frame9=x = .5 + .1*sin(time*.11); +shape_1_per_frame10=y = .5 + .1*sin(time*.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.500000 +shapecode_2_y=0.500000 +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.800000 +shapecode_2_r2=1.000000 +shapecode_2_g2=1.000000 +shapecode_2_b2=1.000000 +shapecode_2_a2=0.800000 +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 = .750 + .1*sin(time*.02); +shape_2_per_frame2=r = min(1,max(0,r + 0.1*sin(time*0.417 + 1))); +shape_2_per_frame3=g = min(1,max(0,g + 0.1*sin(time*0.391 + 2))); +shape_2_per_frame4=b = min(1,max(0,b + 0.1*sin(time*0.432 + 4))); +shape_2_per_frame5=r2 = min(1,max(0,r2 + 0.1*sin(time*0.457 + 3))); +shape_2_per_frame6=g2 = min(1,max(0,g2 + 0.1*sin(time*0.437 + 5))); +shape_2_per_frame7=b2 = min(1,max(0,b2 + 0.1*sin(time*0.484 + 6))); +shape_2_per_frame8=ang = ang+4*sin(time*.2); +shape_2_per_frame9=x = .5 + .1*cos(time*.11); +shape_2_per_frame10=y = .5 + .1*cos(time*.51); +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_a=0; diff --git a/libprojectM/src/share/presets/Zylot - Dark Wisps.milk b/libprojectM/src/share/presets/Zylot - Dark Wisps.milk new file mode 100644 index 000000000..b85e4b095 --- /dev/null +++ b/libprojectM/src/share/presets/Zylot - Dark Wisps.milk @@ -0,0 +1,420 @@ +[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=1 +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.300000 +ob_g=0.300000 +ob_b=0.300000 +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.920000 +mv_dx=0.000000 +mv_dy=0.000000 +mv_l=5.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=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=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=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(t8*nsample)); +wave_1_per_point9=y1 = (1*cos(t8*nsample)); +wave_1_per_point10=z1 = 1.5*sin((0&sample)); +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+5; +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 = 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; +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.217303 +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_init1=speedc=0; +shape_0_init2=trebc=0; +shape_0_init3=radc=0; +shape_0_per_frame1=x = .5+radc*sin(speedc); +shape_0_per_frame2=y = .5+radc*cos(speedc); +shape_0_per_frame3= +shape_0_per_frame4=radc = if(above(bass*.3,radc),radc+.01,radc-.01); +shape_0_per_frame5=radc = if(below(radc,0),0,radc); +shape_0_per_frame6= +shape_0_per_frame7=trebc = if(above(treb*.05,trebc),trebc+.0005,trebc-.0005); +shape_0_per_frame8=trebc = if(below(trebc,0),0,trebc); +shape_0_per_frame9= +shape_0_per_frame10=speedc = speedc + trebc; +shape_0_per_frame11= +shape_0_per_frame12=r = bass; +shape_0_per_frame13=g = treb; +shape_0_per_frame14=b = mid; +shapecode_1_enabled=1 +shapecode_1_sides=100 +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.215152 +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=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_init1=speedc=0; +shape_1_init2=trebc=0; +shape_1_init3=radc=0; +shape_1_per_frame1=x = .5+radc*sin(speedc+q1); +shape_1_per_frame2=y = .5+radc*cos(speedc+q1); +shape_1_per_frame3= +shape_1_per_frame4=radc = if(above(bass*.3,radc),radc+.01,radc-.01); +shape_1_per_frame5=radc = if(below(radc,0),0,radc); +shape_1_per_frame6= +shape_1_per_frame7=trebc = if(above(treb*.05,trebc),trebc+.0005,trebc-.0005); +shape_1_per_frame8=trebc = if(below(trebc,0),0,trebc); +shape_1_per_frame9= +shape_1_per_frame10=speedc = speedc + trebc; +shape_1_per_frame11= +shape_1_per_frame12=r = bass; +shape_1_per_frame13=g = treb; +shape_1_per_frame14=b = mid; +shapecode_2_enabled=1 +shapecode_2_sides=100 +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.215152 +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=0.000000 +shapecode_2_border_r=0.000000 +shapecode_2_border_g=0.000000 +shapecode_2_border_b=0.000000 +shapecode_2_border_a=0.000000 +shape_2_init1=speedc=0; +shape_2_init2=trebc=0; +shape_2_init3=radc=0; +shape_2_per_frame1=x = .5+radc*sin(speedc+(q1*2)); +shape_2_per_frame2=y = .5+radc*cos(speedc+(q1*2)); +shape_2_per_frame3= +shape_2_per_frame4=radc = if(above(bass*.3,radc),radc+.01,radc-.01); +shape_2_per_frame5=radc = if(below(radc,0),0,radc); +shape_2_per_frame6= +shape_2_per_frame7=trebc = if(above(treb*.05,trebc),trebc+.0005,trebc-.0005); +shape_2_per_frame8=trebc = if(below(trebc,0),0,trebc); +shape_2_per_frame9= +shape_2_per_frame10=speedc = speedc + trebc; +shape_2_per_frame11= +shape_2_per_frame12=r = bass; +shape_2_per_frame13=g = treb; +shape_2_per_frame14=b = mid; +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.215152 +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=0.000000 +shapecode_3_border_r=0.000000 +shapecode_3_border_g=0.000000 +shapecode_3_border_b=0.000000 +shapecode_3_border_a=0.000000 +shape_3_init1=speedc=0; +shape_3_init2=trebc=0; +shape_3_init3=radc=0; +shape_3_per_frame1=x = .5+radc*sin(speedc+(q1*3)); +shape_3_per_frame2=y = .5+radc*cos(speedc+(q1*3)); +shape_3_per_frame3= +shape_3_per_frame4=radc = if(above(bass*.3,radc),radc+.01,radc-.01); +shape_3_per_frame5=radc = if(below(radc,0),0,radc); +shape_3_per_frame6= +shape_3_per_frame7=trebc = if(above(treb*.05,trebc),trebc+.0005,trebc-.0005); +shape_3_per_frame8=trebc = if(below(trebc,0),0,trebc); +shape_3_per_frame9= +shape_3_per_frame10=speedc = speedc + trebc; +shape_3_per_frame11= +shape_3_per_frame12=r = bass; +shape_3_per_frame13=g = treb; +shape_3_per_frame14=b = mid; +per_frame_init_1=space = 3+(rand(80)*.1); +per_frame_1=warp=0; +per_frame_2=wave_a=0; +per_frame_3= +per_frame_4=zoom = zoom-.1+(bass*.1); +per_frame_5= +per_frame_6=q1=space; +per_frame_7=dx = .04*sin(time); +per_frame_8=dy = .04*sin(time*.6677); diff --git a/libprojectM/src/share/presets/Zylot - Digiscape Advanced Processor.milk b/libprojectM/src/share/presets/Zylot - Digiscape Advanced Processor.milk new file mode 100755 index 000000000..e101282a7 --- /dev/null +++ b/libprojectM/src/share/presets/Zylot - Digiscape Advanced Processor.milk @@ -0,0 +1,52 @@ +[preset00] +fGammaAdj=2.000000 +fDecay=0.900001 +fVideoEchoZoom=2.000000 +fVideoEchoAlpha=0.000000 +nVideoEchoOrientation=0 +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=0 +fWaveAlpha=5.053452 +fWaveScale=2.448587 +fWaveSmoothing=0.900000 +fWaveParam=0.000000 +fModWaveAlphaStart=0.750000 +fModWaveAlphaEnd=0.950000 +fWarpAnimSpeed=0.010000 +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.500000 +wave_b=0.500000 +wave_x=0.499900 +wave_y=0.499900 +per_frame_1=wave_r = wave_r + .3*sin(time*.222); +per_frame_2=wave_g = wave_g + .3*sin(time*.123); +per_frame_3=wave_b = wave_b + .3*sin(time*.444); +per_frame_4=decay = .9 + .1*sin(time*.01); +per_pixel_1=dx = dx - .08*tan(time + (x)*47); +per_pixel_2=dy = .01*sin((-time*.22 + (y+.5))); +fRating=2.000000 diff --git a/libprojectM/src/share/presets/Zylot - Ether Storm.milk b/libprojectM/src/share/presets/Zylot - Ether Storm.milk new file mode 100755 index 000000000..989b73574 --- /dev/null +++ b/libprojectM/src/share/presets/Zylot - Ether Storm.milk @@ -0,0 +1,65 @@ +[preset00] +fRating=5.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=0 +bDarkenCenter=0 +bMotionVectorsOn=0 +bRedBlueStereo=0 +nMotionVectorsX=12 +nMotionVectorsY=9 +bBrighten=0 +bDarken=0 +bSolarize=0 +bInvert=0 +fWaveAlpha=1.958904 +fWaveScale=0.550447 +fWaveSmoothing=0.360000 +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.500000 +wave_b=0.500000 +wave_x=0.500000 +wave_y=0.500000 +ob_size=0.310000 +ob_r=0.300000 +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=dx = dx - .001; +per_frame_2=dy = dy - .001; +per_frame_3=wave_r = wave_r + .5*sin(time*.666); +per_frame_4=wave_g = wave_g + .5*sin(time*.777); +per_frame_5=wave_b = wave_b + .5*sin(time*.888); +per_pixel_1=dx = if(above(y,.7),001.*asin((x-.5)*(y-.7)),dx); +per_pixel_2=dx = if(below(y,.3),001.*-asin((x-.5)*(y-.3)),dx); +per_pixel_3=dy = (y-.5)*.05; +per_pixel_4=warp = dx*50; \ No newline at end of file diff --git a/libprojectM/src/share/presets/Zylot - Present For Saddam.milk b/libprojectM/src/share/presets/Zylot - Present For Saddam.milk new file mode 100644 index 000000000..05263df7d --- /dev/null +++ b/libprojectM/src/share/presets/Zylot - Present For Saddam.milk @@ -0,0 +1,101 @@ +[preset00] +fRating=5.000000 +fGammaAdj=1.700000 +fDecay=0.980000 +fVideoEchoZoom=2.000000 +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.078276 +fWaveScale=0.274297 +fWaveSmoothing=0.750000 +fWaveParam=-0.480000 +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.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=1.000000 +mv_g=1.000000 +mv_b=1.000000 +mv_a=0.000000 +per_frame_1=warp = 0; +per_frame_2=wave_x = locx; +per_frame_3=wave_y = if(below(locy,.01),.01,locy); +per_frame_4=wave_r = if(equal(expt2,0),.6,1); +per_frame_5=wave_g = .6; +per_frame_6=wave_b = if(equal(expt2,0),.6,.05); +per_frame_7=wave_mode = if(equal(expt2,0),2,0); +per_frame_8=locx=locx-xspeed; +per_frame_9=locy=if(below(locy,.02),.01,locy-yspeed); +per_frame_10=xspeed = if(below(locy,.01),0,xspeed - (xspeed)*.03); +per_frame_11=yspeed = if(below(locy,.01),0,yspeed+(yspeed)*.03); +per_frame_12=decay = if(below(locy,.02),.94,.4); +per_frame_13=expt = if(below(locy,.011),if(below(expt,0.001),0,expt-.01),expt); +per_frame_14=expt2 = if(equal(expt,0),if(below(expt2,0.001),0,expt2-.01),expt2); +per_frame_15=q1 = locx; +per_frame_16=q2 = locy; +per_frame_17=q3 = expt; +per_frame_18=q4 = expt2; +per_frame_19=monitor = timer; +per_frame_20=timer = if(above(timer,.01),timer-.01,6); +per_frame_21=yspeed = if(below(timer,.012),.02,yspeed); +per_frame_22=xspeed = if(below(timer,.012),rand(200)*.0001,xspeed); +per_frame_23=locy = if(below(timer,.012),1,locy); +per_frame_24=locx = if(below(timer,.012),(rand(80)+20)*.01,locx); +per_frame_25=expt = if(below(timer,.012),.5,expt); +per_frame_26=expt2 = if(below(timer,.012),1,expt2); +per_pixel_1=randomn = rand(100)*.006; +per_pixel_2=xcenter = q1; +per_pixel_3=ycenter = abs(q2-1); +per_pixel_4=dx = if(below(q2,.011),if(equal(q3,0),if(equal(q4,0),dx + (x - xcenter)*.03,dx + (x - xcenter)*.1),dx + (x - xcenter)*randomn),0); +per_pixel_5=dy = if(below(q2,.011),if(equal(q3,0),if(equal(q4,0),dy + (y - ycenter)*.06*bass,dy + (y - ycenter)*.1),dy + (y - ycenter)*randomn),0); +per_frame_init_1=yspeed = .02; +per_frame_init_2=xspeed = rand(200)*.0001; +per_frame_init_3=locy = 1; +per_frame_init_4=locx = (rand(80)+20)*.01; +per_frame_init_5=expt = .5; +per_frame_init_6=expt2 = 1; +per_frame_init_7=timer = 6; diff --git a/libprojectM/src/share/presets/Zylot - String.milk b/libprojectM/src/share/presets/Zylot - String.milk new file mode 100755 index 000000000..76004ec39 --- /dev/null +++ b/libprojectM/src/share/presets/Zylot - String.milk @@ -0,0 +1,275 @@ +[preset00] +fRating=3.000000 +fGammaAdj=1.000000 +fDecay=0.997000 +fVideoEchoZoom=0.996629 +fVideoEchoAlpha=0.000000 +nVideoEchoOrientation=1 +nWaveMode=6 +bAdditiveWaves=0 +bWaveDots=0 +bWaveThick=1 +bModWaveAlphaByVolume=0 +bMaximizeWaveColor=0 +bTexWrap=1 +bDarkenCenter=0 +bRedBlueStereo=0 +bBrighten=0 +bDarken=1 +bSolarize=0 +bInvert=0 +fWaveAlpha=0.527792 +fWaveScale=0.034344 +fWaveSmoothing=0.270000 +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.000000 +wave_g=0.700000 +wave_b=1.000000 +wave_x=0.100000 +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=1.000000 +ib_g=1.000000 +ib_b=1.000000 +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=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=2.987785 +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_init1=t1 = (rand(100)*.01)+.5; +wave_0_init2=t2 = (rand(100)*.01)+.5; +wave_0_init3=t3 = (rand(40)*.01)+.1; +wave_0_init4=inc = 1; +wave_0_per_frame1=inc = if(below(inc,1),inc+.01,if(above(bass,1.5),0,1)); +wave_0_per_frame2= +wave_0_per_frame3=t7 = inc; +wave_0_per_point1=x =.5 + t3 * sin(sample*6.28+time*t1); +wave_0_per_point2=y =.5 + .2 * cos(sample*6.28+time*t2)+sample; +wave_0_per_point3= +wave_0_per_point4=a = if(below(sample,.1),abs(sample*-1)*10,1); +wave_0_per_point5= +wave_0_per_point6=r = if(above(sample,t7-.01),if(below(sample,t7+.01),1,1),1); +wave_0_per_point7=g = if(above(sample,t7-.01),if(below(sample,t7+.01),0,1),1); +wave_0_per_point8=b = if(above(sample,t7-.01),if(below(sample,t7+.01),0,1),1); +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=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_init1=t1 = (rand(100)*.01)+.5; +wave_1_init2=t2 = (rand(100)*.01)+.5; +wave_1_init3=t3 = (rand(40)*.01)+.1; +wave_1_init4=inc = 1; +wave_1_per_frame1=inc = if(below(inc,1),inc+.01,if(above(treb,1.5),0,1)); +wave_1_per_frame2= +wave_1_per_frame3=t7 = inc; +wave_1_per_point1=x =.5 + t3 * sin(sample*6.28+time*t1); +wave_1_per_point2=y =.5 + .2 * cos(sample*6.28+time*t2)+sample; +wave_1_per_point3= +wave_1_per_point4=a = if(below(sample,.1),abs(sample*-1)*10,1); +wave_1_per_point5= +wave_1_per_point6=r = if(above(sample,t7-.01),if(below(sample,t7+.01),0,1),1); +wave_1_per_point7=g = if(above(sample,t7-.01),if(below(sample,t7+.01),.75,1),1); +wave_1_per_point8=b = if(above(sample,t7-.01),if(below(sample,t7+.01),0,1),1); +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_init1=t1 = (rand(100)*.01)+.5; +wave_2_init2=t2 = (rand(100)*.01)+.5; +wave_2_init3=t3 = (rand(40)*.01)+.1; +wave_2_init4=inc = 1; +wave_2_init5=speed = 0; +wave_2_per_frame1=inc = if(below(inc,1),inc+.01,if(above(mid,1.5),0,1)); +wave_2_per_frame2= +wave_2_per_frame3=t7 = inc; +wave_2_per_point1=x =.5 + t3 * sin(sample*6.28+time*t1); +wave_2_per_point2=y =.5 + .2 * cos(sample*6.28+time*t2)+sample; +wave_2_per_point3= +wave_2_per_point4=a = if(below(sample,.1),abs(sample*-1)*10,1); +wave_2_per_point5= +wave_2_per_point6=r = if(above(sample,t7-.01),if(below(sample,t7+.01),0,1),1); +wave_2_per_point7=g = if(above(sample,t7-.01),if(below(sample,t7+.01),0,1),1); +wave_2_per_point8=b = if(above(sample,t7-.01),if(below(sample,t7+.01),1,1),1); +wavecode_3_enabled=1 +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 +wave_3_init1=t1 = (rand(100)*.01)+.5; +wave_3_init2=t2 = (rand(100)*.01)+.5; +wave_3_init3=t3 = (rand(40)*.01)+.1; +wave_3_init4=inc = 1; +wave_3_per_frame1=inc = if(below(inc,1),inc+.01,if(above(bass+mid+treb,4.5),0,1)); +wave_3_per_frame2= +wave_3_per_frame3=t7 = inc; +wave_3_per_point1=x =.5 + t3 * sin(sample*6.28+time*t1); +wave_3_per_point2=y =.5 + .2 * cos(sample*6.28+time*t2)+sample; +wave_3_per_point3= +wave_3_per_point4=a = if(below(sample,.1),abs(sample*-1)*10,1); +wave_3_per_point5= +wave_3_per_point6=r = if(above(sample,t7-.01),if(below(sample,t7+.01),0,1),1); +wave_3_per_point7=g = if(above(sample,t7-.01),if(below(sample,t7+.01),0,1),1); +wave_3_per_point8=b = if(above(sample,t7-.01),if(below(sample,t7+.01),0,1),1); +shapecode_0_enabled=0 +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.340000 +shapecode_0_ang=0.530000 +shapecode_0_tex_ang=0.000000 +shapecode_0_tex_zoom=1.000000 +shapecode_0_r=0.560000 +shapecode_0_g=0.360000 +shapecode_0_b=0.000000 +shapecode_0_a=1.000000 +shapecode_0_r2=0.900000 +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=0.000000 +shapecode_0_border_b=0.000000 +shapecode_0_border_a=0.000000 +shape_0_per_frame1=ang = ang + time; +shapecode_1_enabled=0 +shapecode_1_sides=3 +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.410000 +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.800000 +shapecode_1_b=0.700000 +shapecode_1_a=1.000000 +shapecode_1_r2=0.000000 +shapecode_1_g2=0.400000 +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=ang = ang - time*.333; +shapecode_2_enabled=0 +shapecode_2_sides=3 +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.210000 +shapecode_2_ang=0.000000 +shapecode_2_tex_ang=0.000000 +shapecode_2_tex_zoom=1.000000 +shapecode_2_r=0.840000 +shapecode_2_g=0.000000 +shapecode_2_b=0.000000 +shapecode_2_a=1.000000 +shapecode_2_r2=1.000000 +shapecode_2_g2=0.580000 +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 = ang + time*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=warp = 0; +per_frame_2=decay = .92; +per_pixel_1=dy = if(above(y,.9),.0 +per_pixel_2=1,0); diff --git a/libprojectM/src/share/presets/Zylot - Tangent Universe (Collapsed With Artifact Mix).milk b/libprojectM/src/share/presets/Zylot - Tangent Universe (Collapsed With Artifact Mix).milk new file mode 100755 index 000000000..3340fb386 --- /dev/null +++ b/libprojectM/src/share/presets/Zylot - Tangent Universe (Collapsed With Artifact Mix).milk @@ -0,0 +1,71 @@ +[preset00] +fRating=3.000000 +fGammaAdj=2.000000 +fDecay=0.980000 +fVideoEchoZoom=2.000000 +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=3.221673 +fWaveScale=1.104617 +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.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=warp = 0; +per_frame_2=wave_r = wave_r + if(above(bass,1),.5*cos(.33*time),.5*sin(.33*time)); +per_frame_3=wave_g = wave_g + if(above(bass,1),.5*cos(.55*time),.5*sin(.55*time)); +per_frame_4=wave_b = wave_b + if(above(bass,1),.5*cos(.44*time),.5*sin(.44*time)); +per_frame_5=wave_mystery = if(above(10*time%2,0),.5*sin(time)-.5,0); +per_pixel_1=zoom =-zoom + .1*sin(rad+tan(ang*5+(time*3)))*.1; +per_pixel_2=dx = rand(2)*.01; +per_pixel_3=dy = rand(2)*.01; diff --git a/libprojectM/src/share/presets/Zylot - Visionarie.milk b/libprojectM/src/share/presets/Zylot - Visionarie.milk new file mode 100755 index 000000000..84992bc06 --- /dev/null +++ b/libprojectM/src/share/presets/Zylot - Visionarie.milk @@ -0,0 +1,174 @@ +[preset00] +fRating=3.000000 +fGammaAdj=1.000000 +fDecay=0.997000 +fVideoEchoZoom=0.996629 +fVideoEchoAlpha=0.000000 +nVideoEchoOrientation=1 +nWaveMode=0 +bAdditiveWaves=0 +bWaveDots=0 +bWaveThick=1 +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.270000 +fWaveParam=-0.380000 +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=1.000000 +ib_g=1.000000 +ib_b=1.000000 +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=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_point1=x = .5 + (bass*.2)*sin(sample*2*(time*10)); +wave_0_per_point2=y = .5 + (bass*.2)*cos(sample*2*(time*10)); +wave_0_per_point3=r = sample; +wave_0_per_point4=g = x; +wave_0_per_point5=b = y; +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=0 +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.340000 +shapecode_0_ang=0.530000 +shapecode_0_r=0.560000 +shapecode_0_g=0.360000 +shapecode_0_b=0.000000 +shapecode_0_a=1.000000 +shapecode_0_r2=0.900000 +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=0.000000 +shapecode_0_border_b=0.000000 +shapecode_0_border_a=0.000000 +shape_0_per_frame1=ang = ang + time; +shapecode_1_enabled=0 +shapecode_1_sides=3 +shapecode_1_additive=0 +shapecode_1_thickOutline=0 +shapecode_1_x=0.500000 +shapecode_1_y=0.500000 +shapecode_1_rad=0.410000 +shapecode_1_ang=0.000000 +shapecode_1_r=0.000000 +shapecode_1_g=0.800000 +shapecode_1_b=0.700000 +shapecode_1_a=1.000000 +shapecode_1_r2=0.000000 +shapecode_1_g2=0.400000 +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=ang = ang - time*.333; +shapecode_2_enabled=0 +shapecode_2_sides=3 +shapecode_2_additive=0 +shapecode_2_thickOutline=0 +shapecode_2_x=0.500000 +shapecode_2_y=0.500000 +shapecode_2_rad=0.210000 +shapecode_2_ang=0.000000 +shapecode_2_r=0.840000 +shapecode_2_g=0.000000 +shapecode_2_b=0.000000 +shapecode_2_a=1.000000 +shapecode_2_r2=1.000000 +shapecode_2_g2=0.580000 +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 = ang + time*4; +per_frame_1=warp = 0; +per_frame_2=decay = .92; +per_pixel_1=zoom = zoom + .1; +per_pixel_2=rot = rot + rad*.1; diff --git a/libprojectM/src/share/presets/Zylot - light of the path.milk b/libprojectM/src/share/presets/Zylot - light of the path.milk new file mode 100755 index 000000000..79850f6dd --- /dev/null +++ b/libprojectM/src/share/presets/Zylot - light of the path.milk @@ -0,0 +1,65 @@ +[preset00] +fRating=5.000000 +fGammaAdj=2.000000 +fDecay=0.980000 +fVideoEchoZoom=2.000000 +fVideoEchoAlpha=0.000000 +nVideoEchoOrientation=0 +nWaveMode=3 +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=0.800000 +fWaveScale=1.000000 +fWaveSmoothing=0.750000 +fWaveParam=-0.440000 +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.070000 +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=dx = dx - .001; +per_frame_2=dy = dy - .001; +per_frame_3=warp = 0; +per_frame_4=wave_r = wave_r + .2*sin(time*1.33)+bass*.3; +per_frame_5=wave_g = wave_g + .2*sin(time)+treb*.3; +per_frame_6=wave_b = wave_b + .2*sin(time*.988)+mid*.3; +per_pixel_1=zoomlv = .1*sin(ang*1000+time)+.05; +per_pixel_2=zoom = zoom + zoomlv; +per_pixel_3=dx = zoomlv; diff --git a/libprojectM/src/share/presets/bmelgren - Godhead.milk b/libprojectM/src/share/presets/bmelgren - Godhead.milk new file mode 100755 index 000000000..7bae5465a --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/bmelgren - Take this highway.milk b/libprojectM/src/share/presets/bmelgren - Take this highway.milk new file mode 100755 index 000000000..3f75694a4 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/fiShbRaiN - brainstem activation.milk b/libprojectM/src/share/presets/fiShbRaiN - brainstem activation.milk new file mode 100644 index 000000000..038cd0bbe --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/fiShbRaiN - crazy diamond.milk b/libprojectM/src/share/presets/fiShbRaiN - crazy diamond.milk new file mode 100644 index 000000000..842b20779 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/fiShbRaiN - cthulhus asshole (bad breakfast remix).milk b/libprojectM/src/share/presets/fiShbRaiN - cthulhus asshole (bad breakfast remix).milk new file mode 100644 index 000000000..973883545 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/fiShbRaiN - cthulhus asshole.milk b/libprojectM/src/share/presets/fiShbRaiN - cthulhus asshole.milk new file mode 100644 index 000000000..169735764 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/fiShbRaiN - plasma temptation.milk b/libprojectM/src/share/presets/fiShbRaiN - plasma temptation.milk new file mode 100644 index 000000000..4d48c502e --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/fiShbRaiN - quark matrix.milk b/libprojectM/src/share/presets/fiShbRaiN - quark matrix.milk new file mode 100644 index 000000000..a8fc6090f --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/nil - Can't Stop the Blithering.milk b/libprojectM/src/share/presets/nil - Can't Stop the Blithering.milk new file mode 100644 index 000000000..26254057c --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/nil - Can't Stop the Cramming.milk b/libprojectM/src/share/presets/nil - Can't Stop the Cramming.milk new file mode 100644 index 000000000..d08c28384 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/nil - Cid and Lucy.milk b/libprojectM/src/share/presets/nil - Cid and Lucy.milk new file mode 100644 index 000000000..2f6997cb5 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/phat_CloseIncouneters.milk b/libprojectM/src/share/presets/phat_CloseIncouneters.milk new file mode 100644 index 000000000..bcad13bc5 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/phat_CloseIncounetersV2.milk b/libprojectM/src/share/presets/phat_CloseIncounetersV2.milk new file mode 100644 index 000000000..fc2aa28d3 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/shifter - feathers (angel wings)_phat_remix.milk b/libprojectM/src/share/presets/shifter - feathers (angel wings)_phat_remix.milk new file mode 100644 index 000000000..b6616e8c9 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/shifter - flashburn.milk b/libprojectM/src/share/presets/shifter - flashburn.milk new file mode 100644 index 000000000..38256fc68 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/shifter - pinwheel.milk b/libprojectM/src/share/presets/shifter - pinwheel.milk new file mode 100644 index 000000000..7643a7eab --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/shifter - pulsar.milk b/libprojectM/src/share/presets/shifter - pulsar.milk new file mode 100644 index 000000000..76de2fe55 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/shifter - snow.milk b/libprojectM/src/share/presets/shifter - snow.milk new file mode 100644 index 000000000..56bcc67ee --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/shifter - spincycle b.milk b/libprojectM/src/share/presets/shifter - spincycle b.milk new file mode 100644 index 000000000..47bce43b3 --- /dev/null +++ b/libprojectM/src/share/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/libprojectM/src/share/presets/shifter - timepeice.milk b/libprojectM/src/share/presets/shifter - timepeice.milk new file mode 100644 index 000000000..e48657307 --- /dev/null +++ b/libprojectM/src/share/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); diff --git a/libprojectM/src/splaytree.cc b/libprojectM/src/splaytree.cc new file mode 100755 index 000000000..03a761ce3 --- /dev/null +++ b/libprojectM/src/splaytree.cc @@ -0,0 +1,682 @@ +/* + An implementation of top-down splaying + D. Sleator + March 1992 + + "Splay trees", or "self-adjusting search trees" are a simple and + efficient data structure for storing an ordered set. The data + structure consists of a binary tree, without parent pointers, and no + additional fields. It allows searching, insertion, deletion, + deletemin, deletemax, splitting, joining, and many other operations, + all with amortized logarithmic performance. Since the trees adapt to + the sequence of requests, their performance on real access patterns is + typically even better. Splay trees are described in a number of texts + and papers [1,2,3,4,5]. + + The code here is adapted from simple top-down splay, at the bottom of + page 669 of [3]. It can be obtained via anonymous ftp from + spade.pc.cs.cmu.edu in directory /usr/sleator/public. + + The chief modification here is that the splay operation works even if the + item being splayed is not in the tree, and even if the tree root of the + tree is NULL. So the line: + + t = splay(i, t); + + causes it to search for item with key i in the tree rooted at t. If it's + there, it is splayed to the root. If it isn't there, then the node put + at the root is the last one before NULL that would have been reached in a + normal binary search for i. (It's a neighbor of i in the tree.) This + allows many other operations to be easily implemented, as shown below. + + [1] "Fundamentals of data structures in C", Horowitz, Sahni, + and Anderson-Freed, Computer Science Press, pp 542-547. + + [2] "Data Structures and Their Algorithms", Lewis and Denenberg, + Harper Collins, 1991, pp 243-251. + [3] "Self-adjusting Binary Search Trees" Sleator and Tarjan, + JACM Volume 32, No 3, July 1985, pp 652-686. + [4] "Data Structure and Algorithm Analysis", Mark Weiss, + Benjamin Cummins, 1992, pp 119-130. + [5] "Data Structures, Algorithms, and Performance", Derick Wood, + Addison-Wesley, 1993, pp 367-375. + + The following code was written by Daniel Sleator, and is released + in the public domain. It has been heavily modified by Carmelo Piccione, + (carmelo.piccione@gmail.com), to suit personal needs, +*/ + +#include +#include +#include + +#include "projectM.h" + +#include "common.h" +#include "fatal.h" + +#include "splaytree_types.h" +#include "splaytree.h" + + + +static splaynode_t * splay (void * key, splaynode_t * t, int * match_type, int (*compare)(void *, void*)); +static int free_splaynode(splaynode_t * splaynode, void (*free_key)(void*)); + void splay_traverse_helper (void (*func_ptr)(void *), splaynode_t * splaynode); +static splaynode_t * splay_delete_helper(void * key, splaynode_t * t, int (*compare)(void*,void*), void (*free_key)(void *)); +static void splay_find_above_min_helper(void * max_key, void ** closest_key, splaynode_t * root, int (*compare)(void*,void*)); +static void splay_find_below_max_helper(void * max_key, void ** closest_key, splaynode_t * root, int (*compare)(void*,void*)); +static splaynode_t * new_splaynode(int type, void * key, void * data); +static int splay_insert_node(splaynode_t * splaynode, splaytree_t * splaytree); +static int splay_rec_size(splaynode_t * splaynode); + +/* Creates a splay tree given a compare key function, copy key function, and free key function. + Ah yes, the wonders of procedural programming */ + splaytree_t * create_splaytree(int (*compare)(void *,void*), void * (*copy_key)(void *), void (*free_key)(void*)) { + + splaytree_t * splaytree; + + /* Allocate memory for the splaytree struct */ + if ((splaytree = (splaytree_t*)malloc(sizeof(splaytree_t))) == NULL) + return NULL; + + /* Set struct entries */ + splaytree->root = NULL; + splaytree->compare = compare; + splaytree->copy_key = copy_key; + splaytree->free_key = free_key; + + /* Return instantiated splay tree */ + return splaytree; +} + +/* Destroys a splay tree */ + int destroy_splaytree(splaytree_t * splaytree) { + + /* Null argument check */ + if (splaytree == NULL) + return PROJECTM_FAILURE; + + /* Recursively free all splaynodes in tree */ + free_splaynode(splaytree->root, splaytree->free_key); + + /* Free the splaytree struct itself */ + free(splaytree); + + /* Done, return success */ + return PROJECTM_SUCCESS; + +} + +/* Recursively free all the splaynodes */ +static int free_splaynode(splaynode_t * splaynode, void (*free_key)(void*)) { + + /* Ok if this happens, a recursive base case */ + if (splaynode == NULL) + return PROJECTM_SUCCESS; + + /* Free left node */ + free_splaynode(splaynode->left, free_key); + + /* Free right node */ + free_splaynode(splaynode->right, free_key); + + /* Free this node's key */ + free_key(splaynode->key); + + /* Note that the data pointers are not freed here. + Should be freed with a splay traversal function */ + + /* Free the splaynode structure itself */ + free(splaynode); + + /* Finished, return success */ + return PROJECTM_SUCCESS; + +} + +/* Traverses the entire splay tree with the given function func_ptr */ + void splay_traverse(void (*func_ptr)(void*), splaytree_t * splaytree) { + + /* Null argument check */ + + if (splaytree == NULL) + return; + if (func_ptr == NULL) + return; + + /* Call recursive helper function */ + splay_traverse_helper(func_ptr, splaytree->root); + + return; +} + +/* Helper function to traverse the entire splaytree */ + void splay_traverse_helper (void (*func_ptr)(void *), splaynode_t * splaynode) { + + /* Normal if this happens, its a base case of recursion */ + if (splaynode == NULL) + return; + + /* Recursively traverse to the left */ + splay_traverse_helper(func_ptr, splaynode->left); + + + /* Node is a of regular type, so its ok to perform the function on it */ + if (splaynode->type == REGULAR_NODE_TYPE) + func_ptr(splaynode->data); + + /* Node is of symbolic link type, do nothing */ + else if (splaynode->type == SYMBOLIC_NODE_TYPE) + ; + + /* Unknown node type */ + else + ; + + /* Recursively traverse to the right */ + splay_traverse_helper(func_ptr, splaynode->right); + + /* Done */ + return; +} + +/* Find the node corresponding to the given key in splaytree, return its data pointer */ + void * splay_find(void * key, splaytree_t * splaytree) { + + splaynode_t * splaynode; + int match_type; + + if (key == NULL) + return NULL; + + if (splaytree == NULL) + return NULL; + + splaynode = splaytree->root; + + /* Bring the targeted splay node to the top of the splaytree */ + splaynode = splay(key, splaynode, &match_type, splaytree->compare); + splaytree->root = splaynode; + + + /* We only want perfect matches, so return null when match isn't perfect */ + if (match_type == CLOSEST_MATCH) + return NULL; + + /* This shouldn't happen because of the match type check, but whatever */ + if (splaytree->root == NULL) + return NULL; + + /* Node is a regular type, return its data pointer */ + if (splaytree->root->type == REGULAR_NODE_TYPE) /* regular node */ + return splaytree->root->data; + + /* If the node is a symlink, pursue one link */ + if (splaytree->root->type == SYMBOLIC_NODE_TYPE) /* symbolic node */ + return ((splaynode_t*)splaytree->root->data)->data; + + + /* Unknown type */ + return NULL; +} + +/* Gets the splaynode that the given key points to */ + splaynode_t * get_splaynode_of(void * key, splaytree_t * splaytree) { + + splaynode_t * splaynode; + int match_type; + + /* Null argument checks */ + if (splaytree == NULL) + return NULL; + + if (key == NULL) + return NULL; + + splaynode = splaytree->root; + + /* Find the splaynode */ + splaynode = splay(key, splaynode, &match_type, splaytree->compare); + splaytree->root = splaynode; + + /* Only perfect matches are valid */ + if (match_type == CLOSEST_MATCH) + return NULL; + + /* Return the perfect match splay node */ + return splaynode; +} + +/* Finds the desired node, and changes the tree such that it is the root */ +static splaynode_t * splay (void * key, splaynode_t * t, int * match_type, int (*compare)(void*,void*)) { + +/* Simple top down splay, not requiring key to be in the tree t. + What it does is described above. */ + + splaynode_t N, *l, *r, *y; + *match_type = CLOSEST_MATCH; + + if (t == NULL) return t; + N.left = N.right = NULL; + l = r = &N; + + for (;;) { + if (compare(key, t->key) < 0) { + if (t->left == NULL) break; + if (compare(key, t->left->key) < 0) { + y = t->left; /* rotate right */ + t->left = y->right; + y->right = t; + t = y; + if (t->left == NULL) break; + } + r->left = t; /* link right */ + r = t; + t = t->left; + } else if (compare(key, t->key) > 0) { + if (t->right == NULL) break; + if (compare(key, t->right->key) > 0) { + y = t->right; /* rotate left */ + t->right = y->left; + y->left = t; + t = y; + if (t->right == NULL) break; + } + l->right = t; /* link left */ + l = t; + t = t->right; + } else { + *match_type = PERFECT_MATCH; + break; + } + } + l->right = t->left; /* assemble */ + r->left = t->right; + t->left = N.right; + t->right = N.left; + + return t; + + //return NULL; +} + +/* Deletes a splay node from a splay tree. If the node doesn't exist + then nothing happens */ + int splay_delete(void * key, splaytree_t * splaytree) { + + splaynode_t * splaynode; + + /* Use helper function to delete the node and return the resulting tree */ + if ((splaynode = splay_delete_helper(key, splaytree->root, splaytree->compare, splaytree->free_key)) == NULL) + return PROJECTM_FAILURE; + + /* Set new splaytree root equal to the returned splaynode after deletion */ + splaytree->root = splaynode; + + /* Finished, no errors */ + return PROJECTM_SUCCESS; +} + +/* Deletes a splay node */ +static splaynode_t * splay_delete_helper(void * key, splaynode_t * splaynode, int (*compare)(void*,void*), void (*free_key)(void*)) { + + splaynode_t * new_root; + int match_type; + + /* Argument check */ + if (splaynode == NULL) + return NULL; + + splaynode = splay(key, splaynode, &match_type, compare); + + /* If entry wasn't found, quit here */ + if (match_type == CLOSEST_MATCH) + return NULL; + + /* If the targeted node's left pointer is null, then set the new root + equal to the splaynode's right child */ + if (splaynode->left == NULL) { + new_root = splaynode->right; + } + + /* Otherwise, do something I don't currently understand */ + else { + new_root = splay(key, splaynode->left, &match_type, compare); + new_root->right = splaynode->right; + } + + /* Set splay nodes children pointers to null */ + splaynode->left = splaynode->right = NULL; + + /* Free the splaynode (and only this node since its children are now empty */ + free_splaynode(splaynode, free_key); + + /* Return the resulting tree */ + return new_root; + +} + +/* Create a new splay node type */ +static splaynode_t * new_splaynode(int type, void * key, void * data) { + splaynode_t * splaynode; + /* Argument checks */ + if (data == NULL) + return NULL; + + if (key == NULL) + return NULL; + + /* Creates the new splay node struct */ + if ((splaynode = (splaynode_t*)malloc(sizeof(splaynode_t))) == NULL) + return NULL; + + splaynode->data = data; + splaynode->type = type; + splaynode->key = key; + + /* Return the new splay node */ + return splaynode; +} + +/* Inserts a link into the splay tree */ + int splay_insert_link(void * alias_key, void * orig_key, splaytree_t * splaytree) { + + splaynode_t * splaynode, * data_node; + void * key_clone; + + /* Null arguments */ + if (splaytree == NULL) + return PROJECTM_FAILURE; + + if (alias_key == NULL) + return PROJECTM_FAILURE; + + if (orig_key == NULL) + return PROJECTM_FAILURE; + + /* Find the splaynode corresponding to the original key */ + if ((data_node = get_splaynode_of(orig_key, splaytree)) == NULL) + return PROJECTM_FAILURE; + + /* Create a new splay node of symbolic link type */ + if ((splaynode = new_splaynode(SYMBOLIC_NODE_TYPE, (key_clone = splaytree->copy_key(alias_key)), data_node)) == NULL) { + splaytree->free_key(key_clone); + return PROJECTM_OUTOFMEM_ERROR; + } + + /* Insert the splaynode into the given splaytree */ + if ((splay_insert_node(splaynode, splaytree)) < 0) { + splaynode->left=splaynode->right = NULL; + free_splaynode(splaynode, splaytree->free_key); + return PROJECTM_FAILURE; + } + + /* Done, return success */ + return PROJECTM_SUCCESS; +} + +/* Inserts 'data' into the 'splaytree' paired with the passed 'key' */ + int splay_insert(void * data, void * key, splaytree_t * splaytree) { + + splaynode_t * splaynode; + void * key_clone; + + /* Null argument checks */ + if (splaytree == NULL) { + return PROJECTM_FAILURE; + } + + if (key == NULL) { + printf ("splay_insert: null key as argument, returning failure\n"); + return PROJECTM_FAILURE; + } + /* Clone the key argument */ + key_clone = splaytree->copy_key(key); + + /* Create a new splaynode (of regular type) */ + if ((splaynode = new_splaynode(REGULAR_NODE_TYPE, key_clone, data)) == NULL) { + splaytree->free_key(key_clone); + printf ("splay_insert: out of memory?\n"); + return PROJECTM_OUTOFMEM_ERROR; + } + + + /* Inserts the splaynode into the splaytree */ + if (splay_insert_node(splaynode, splaytree) < 0) { + printf ("splay_insert: failed to insert node.\n"); + splaynode->left=splaynode->right=NULL; + free_splaynode(splaynode, splaytree->free_key); + return PROJECTM_FAILURE; + } + + + return PROJECTM_SUCCESS; +} + +/* Helper function to insert splaynodes into the splaytree */ +static int splay_insert_node(splaynode_t * splaynode, splaytree_t * splaytree) { + int match_type; + int cmpval; + void * key; + splaynode_t * t; + + /* Null argument checks */ + if (splaytree == NULL) + return PROJECTM_FAILURE; + + if (splaynode == NULL) + return PROJECTM_FAILURE; + + key = splaynode->key; + + t = splaytree->root; + + + /* Root is null, insert splaynode here */ + if (t == NULL) { + splaynode->left = splaynode->right = NULL; + splaytree->root = splaynode; + return PROJECTM_SUCCESS; + + } + + t = splay(key, t, &match_type, splaytree->compare); + + if ((cmpval = splaytree->compare(key,t->key)) < 0) { + splaynode->left = t->left; + splaynode->right = t; + t->left = NULL; + splaytree->root = splaynode; + return PROJECTM_SUCCESS; + + } + + else if (cmpval > 0) { + splaynode->right = t->right; + splaynode->left = t; + t->right = NULL; + splaytree->root = splaynode; + return PROJECTM_SUCCESS; + } + + /* Item already exists in tree, don't reinsert */ + else { + printf("splay_insert_node: duplicate key detected, ignoring...\n"); + return PROJECTM_FAILURE; + } +} + +/* Returns the 'maximum' key that is less than the given key in the splaytree */ + void * splay_find_below_max(void * key, splaytree_t * splaytree) { + + void * closest_key; + + if (splaytree == NULL) + return NULL; + if (splaytree->root == NULL) + return NULL; + if (key == NULL) + return NULL; + + closest_key = NULL; + + splay_find_below_max_helper(key, &closest_key, splaytree->root, splaytree->compare); + + if (closest_key == NULL) return NULL; + return splay_find(closest_key, splaytree); +} + + +/* Returns the 'minimum' key that is greater than the given key in the splaytree */ + void * splay_find_above_min(void * key, splaytree_t * splaytree) { + + void * closest_key; + + if (splaytree == NULL) + return NULL; + if (splaytree->root == NULL) + return NULL; + if (key == NULL) + return NULL; + closest_key = NULL; + + splay_find_above_min_helper(key, &closest_key, splaytree->root, splaytree->compare); + + if (closest_key == NULL) { + return NULL; + } + + return splay_find(closest_key, splaytree); +} + +/* Helper function */ +static void splay_find_below_max_helper(void * min_key, void ** closest_key, splaynode_t * root, int (*compare)(void*,void*)) { + + /* Empty root, return*/ + if (root == NULL) + return; + + /* The root key is less than the previously found closest key. + Also try to make the key non null if the value is less than the max key */ + + if ((*closest_key == NULL) || (compare(root->key, *closest_key) < 0)) { + + /* The root key is less than the given max key, so this is the + smallest change from the given max key */ + if (compare(root->key, min_key) > 0) { + + *closest_key = root->key; + + /* Look right again in case even a greater key exists that is + still less than the given max key */ + splay_find_below_max_helper(min_key, closest_key, root->left, compare); + } + + /* The root key is greater than the given max key, and greater than + the closest key, so search left */ + else { + splay_find_below_max_helper(min_key, closest_key, root->right, compare); + } + } + + /* The root key is less than the found closest key, search right */ + else { + splay_find_below_max_helper(min_key, closest_key, root->left, compare); + } + +} + +/* Helper function */ +static void splay_find_above_min_helper(void * max_key, void ** closest_key, splaynode_t * root, int (*compare)(void *,void*)) { + + /* Empty root, stop */ + if (root == NULL) + return; + + /* The root key is greater than the previously found closest key. + Also try to make the key non null if the value is less than the min key */ + + if ((*closest_key == NULL) || (compare(root->key, *closest_key) > 0)) { + + /* The root key is greater than the given min key, so this is the + smallest change from the given min key */ + if (compare(root->key, max_key) < 0) { + + *closest_key = root->key; + + /* Look left again in case even a smaller key exists that is + still greater than the given min key */ + splay_find_above_min_helper(max_key, closest_key, root->right, compare); + } + + /* The root key is less than the given min key, and less than + the closest key, so search right */ + else { + splay_find_above_min_helper(max_key, closest_key, root->left, compare); + } + } + + /* The root key is greater than the found closest key, search left */ + else { + splay_find_above_min_helper(max_key, closest_key, root->right, compare); + } +} + +/* Find the minimum entry of the splay tree */ + void * splay_find_min(splaytree_t * t) { + + splaynode_t * splaynode; + + if (t == NULL) + return NULL; + if (t->root == NULL) + return NULL; + + splaynode = t->root; + + while (splaynode->left != NULL) + splaynode= splaynode->left; + + return splaynode->data; +} + + +/* Find the maximum entry of the splay tree */ + void * splay_find_max(splaytree_t * t) { + + splaynode_t * splaynode; + + if (t == NULL) + return NULL; + if (t->root == NULL) + return NULL; + + splaynode = t->root; + + while (splaynode->right != NULL) { + printf("data:%d\n", *(int*)splaynode->key); + splaynode = splaynode->right; + } + return splaynode->data; +} + +int splay_size(splaytree_t * t) { + + if (t == NULL) + return 0; + if (t->root == NULL) + return 0; + + return splay_rec_size(t->root); + +} + +static int splay_rec_size(splaynode_t * splaynode) { + + if (!splaynode) + return 0; + + return 1 + splay_rec_size(splaynode->left) + splay_rec_size(splaynode->right); + +} diff --git a/libprojectM/src/splaytree.h b/libprojectM/src/splaytree.h new file mode 100755 index 000000000..65c04b56a --- /dev/null +++ b/libprojectM/src/splaytree.h @@ -0,0 +1,48 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _SPLAYTREE_H +#define _SPLAYTREE_H + +#define REGULAR_NODE_TYPE 0 +#define SYMBOLIC_NODE_TYPE 1 + +#define PERFECT_MATCH 0 +#define CLOSEST_MATCH 1 + +#include "projectM.h" + + void * splay_find(void * key, splaytree_t * t); + int splay_insert(void * data, void * key, splaytree_t * t); + int splay_insert_link(void * alias_key, void * orig_key, splaytree_t * splaytree); + int splay_delete(void * key, splaytree_t * splaytree); +int splay_size(splaytree_t * t); + splaytree_t * create_splaytree(int (*compare)(void*,void*), void * (*copy_key)(void*), void (*free_key)(void*)); + int destroy_splaytree(splaytree_t * splaytree); + void splay_traverse(void (*func_ptr)(void*), splaytree_t * splaytree); +void splay_traverse_helper (void (*func_ptr)(void*), splaynode_t * splaynode); + splaynode_t * get_splaynode_of(void * key, splaytree_t * splaytree); + void * splay_find_above_min(void * key, splaytree_t * root); + void * splay_find_below_max(void * key, splaytree_t * root); + void * splay_find_min(splaytree_t * t); + void * splay_find_max(splaytree_t * t); + +#endif /** !_SPLAYTREE_H */ diff --git a/libprojectM/src/splaytree_types.h b/libprojectM/src/splaytree_types.h new file mode 100755 index 000000000..7227f9156 --- /dev/null +++ b/libprojectM/src/splaytree_types.h @@ -0,0 +1,39 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _SPLAYTREE_TYPES_H +#define _SPLAYTREE_TYPES_H + +typedef struct SPLAYNODE_T { + int type; + struct SPLAYNODE_T * left, * right; + void * data; + void * key; +} splaynode_t; + +typedef struct SPLAYTREE_T { + splaynode_t * root; + int (*compare)(void*,void*); + void * (*copy_key)(void *); + void (*free_key)(void*); +} splaytree_t; + +#endif /** !_SPLAYTREE_TYPES_H */ diff --git a/libprojectM/src/timer.cc b/libprojectM/src/timer.cc new file mode 100644 index 000000000..e9e1dafc7 --- /dev/null +++ b/libprojectM/src/timer.cc @@ -0,0 +1,44 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/** + * $Id: timer.c,v 1.1.1.1 2005/12/23 18:05:05 psperl Exp $ + * + * Platform-independent timer + */ + +#include "timer.h" +#include + +#ifndef WIN32 +/** Get number of ticks since the given timestamp */ +unsigned int getTicks( struct timeval *start ) { + struct timeval now; + unsigned int ticks; + + gettimeofday(&now, NULL); + ticks=(now.tv_sec-start->tv_sec)*1000+(now.tv_usec-start->tv_usec)/1000; + return(ticks); + } +#else +unsigned int getTicks( long start ) { + return GetTickCount() - start; + } +#endif /** !WIN32 */ diff --git a/libprojectM/src/timer.h b/libprojectM/src/timer.h new file mode 100644 index 000000000..11da5bfb4 --- /dev/null +++ b/libprojectM/src/timer.h @@ -0,0 +1,49 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/** + * $Id: timer.h,v 1.1.1.1 2005/12/23 18:05:00 psperl Exp $ + * + * Platform-independent timer + * + * $Log: timer.h,v $ + * Revision 1.1.1.1 2005/12/23 18:05:00 psperl + * Imported + * + * Revision 1.2 2004/10/05 09:19:40 cvs + * Fixed header include defines + * + * Revision 1.1.1.1 2004/10/04 12:56:00 cvs + * Imported + * + */ + +#ifndef _TIMER_H +#define _TIMER_H + +#ifndef WIN32 +#include +unsigned int getTicks( struct timeval *start ); +#else +#include +unsigned int getTicks( long start ); +#endif /** !WIN32 */ + +#endif /** _TIMER_H */ diff --git a/libprojectM/src/tree_types.cc b/libprojectM/src/tree_types.cc new file mode 100755 index 000000000..3f3a8ed2f --- /dev/null +++ b/libprojectM/src/tree_types.cc @@ -0,0 +1,91 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#include +#include +#include +#include "common.h" +#include "wipemalloc.h" + +/* Compares integer value numbers in 32 bit range */ +int compare_int(int * num1, int * num2) { + + if ((*num1) < (*num2)) + return -1; + if ((*num1) > (*num2)) + return 1; + + return 0; +} + +/* Compares strings in lexographical order */ +int compare_string(char * str1, char * str2) { + + // printf("comparing \"%s\" to \"%s\"\n", str1, str2); + //return strcmp(str1, str2); + return strncmp(str1, str2, MAX_TOKEN_SIZE-1); + +} + +/* Compares a string in version order. That is, file1 < file2 < file10 */ +int compare_string_version(char * str1, char * str2) { + + return strcmp( str1, str2 ); +#ifdef MACOS + return strverscmp(str1, str2); +#endif +} + + +void free_int(int * num) { + free(num); +} + + +void free_string(char * string) { + + free(string); +} + +void * copy_int(int * num) { + + int * new_num; + + if ((new_num = (int*)wipemalloc(sizeof(int))) == NULL) + return NULL; + + *new_num = *num; + + return (void*)new_num; +} + + +void * copy_string(char * string) { + + char * new_string; + + if ((new_string = (char*)wipemalloc(MAX_TOKEN_SIZE)) == NULL) + return NULL; + + strncpy(new_string, string, MAX_TOKEN_SIZE-1); + + return (void*)new_string; +} diff --git a/libprojectM/src/tree_types.h b/libprojectM/src/tree_types.h new file mode 100755 index 000000000..4060f1314 --- /dev/null +++ b/libprojectM/src/tree_types.h @@ -0,0 +1,36 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ + +#ifndef _TREE_TYPES_H +#define _TREE_TYPES_H + +int compare_int(int * num1, int * num2); +int compare_string(char * str1, char * str2); + +void free_int(int * num); +void free_string(char * string); + +void * copy_int(int * num); +void * copy_string(char * string); + +void * compare_string_version(char * str1, char * str2); + +#endif /** !_TREE_TYPES_H */ diff --git a/libprojectM/src/win32-dirent.cc b/libprojectM/src/win32-dirent.cc new file mode 100755 index 000000000..c5f8d4c64 --- /dev/null +++ b/libprojectM/src/win32-dirent.cc @@ -0,0 +1,231 @@ +/* + + Implementation of POSIX directory browsing functions and types for Win32. + + Author: Kevlin Henney (kevlin@acm.org, kevlin@curbralan.com) + History: Created March 1997. Updated June 2003. + Rights: See end of file. + +*/ + +#include "win32-dirent.h" +#include +#include /* _findfirst and _findnext set errno iff they return -1 */ +#include +#include + +#ifdef __cplusplus +extern "C" +{ +#endif + +struct DIR +{ + long handle; /* -1 for failed rewind */ + struct _finddata_t info; + struct dirent result; /* d_name null iff first time */ + char *name; /* null-terminated char string */ +}; + +DIR *opendir(const char *name) +{ + DIR *dir = 0; + + if(name && name[0]) + { + size_t base_length = strlen(name); + const char *all = /* search pattern must end with suitable wildcard */ + strchr("/\\", name[base_length - 1]) ? "*" : "/*"; + + if((dir = (DIR *) malloc(sizeof *dir)) != 0 && + (dir->name = (char *) malloc(base_length + strlen(all) + 1)) != 0) + { + strcat(strcpy(dir->name, name), all); + + if((dir->handle = (long) _findfirst(dir->name, &dir->info)) != -1) + { + dir->result.d_name = 0; + } + else /* rollback */ + { + free(dir->name); + free(dir); + dir = 0; + } + } + else /* rollback */ + { + free(dir); + dir = 0; + errno = ENOMEM; + } + } + else + { + errno = EINVAL; + } + + return dir; +} + +int closedir(DIR *dir) +{ + int result = -1; + + if(dir) + { + if(dir->handle != -1) + { + result = _findclose(dir->handle); + } + + free(dir->name); + free(dir); + } + + if(result == -1) /* map all errors to EBADF */ + { + errno = EBADF; + } + + return result; +} + +struct dirent *readdir(DIR *dir) +{ + struct dirent *result = 0; + + if(dir && dir->handle != -1) + { + if(!dir->result.d_name || _findnext(dir->handle, &dir->info) != -1) + { + result = &dir->result; + result->d_name = dir->info.name; + } + } + else + { + errno = EBADF; + } + + return result; +} + +void rewinddir(DIR *dir) +{ + if(dir && dir->handle != -1) + { + _findclose(dir->handle); + dir->handle = (long) _findfirst(dir->name, &dir->info); + dir->result.d_name = 0; + } + else + { + errno = EBADF; + } +} + +// helper for scandir below +static void scandir_free_dir_entries(struct dirent*** namelist, int entries) { + int i; + if (!*namelist) return; + for (i = 0; i < entries; ++i) { + free((*namelist)[i]); + } + free(*namelist); + *namelist = 0; +} + +// returns the number of directory entries select or -1 if an error occurs +int scandir( + const char* dir, + struct dirent*** namelist, + int(*filter)(const struct dirent*), + int(*compar)(const void*, const void*) +) { + int entries = 0; + int max_entries = 512; // assume 2*512 = 1024 entries (used for allocation) + DIR* d; + + *namelist = 0; + + // open directory + d = opendir(dir); + if (!d) return -1; + + // iterate + while (1) { + struct dirent* ent = readdir(d); + if (!ent) break; + + // add if no filter or filter returns non-zero + if (filter && (0 == filter(ent))) continue; + + // resize our buffer if there is not enough room + if (!*namelist || entries >= max_entries) { + struct dirent** new_entries; + + max_entries *= 2; + new_entries = realloc(*namelist, max_entries); + if (!new_entries) { + scandir_free_dir_entries(namelist, entries); + closedir(d); + errno = ENOMEM; + return -1; + } + + *namelist = new_entries; + } + + // allocate new entry + (*namelist)[entries] = malloc(sizeof(struct dirent) + strlen(ent->d_name) + 1); + if (!(*namelist)[entries]) { + scandir_free_dir_entries(namelist, entries); + closedir(d); + errno = ENOMEM; + return -1; + } + + // copy entry info + *(*namelist)[entries] = *ent; + + // and then we tack the string onto the end + { + char* dest = (char*)((*namelist)[entries]) + sizeof(struct dirent); + strcpy(dest, ent->d_name); + (*namelist)[entries]->d_name = dest; + } + + ++entries; + } + + // sort + if (*namelist && compar) qsort(*namelist, entries, sizeof((*namelist)[0]), compar); + + return entries; +} + +int alphasort(const void* lhs, const void* rhs) { + const struct dirent* lhs_ent = *(struct dirent**)lhs; + const struct dirent* rhs_ent = *(struct dirent**)rhs; + return _strcmpi(lhs_ent->d_name, rhs_ent->d_name); +} + +#ifdef __cplusplus +} +#endif + +/* + + Copyright Kevlin Henney, 1997, 2003. All rights reserved. + + Permission to use, copy, modify, and distribute this software and its + documentation for any purpose is hereby granted without fee, provided + that this copyright and permissions notice appear in all copies and + derivatives. + + This software is supplied "as is" without express or implied warranty. + + But that said, if there are any problems please get in touch. + +*/ diff --git a/libprojectM/src/win32-dirent.h b/libprojectM/src/win32-dirent.h new file mode 100755 index 000000000..274d8b27d --- /dev/null +++ b/libprojectM/src/win32-dirent.h @@ -0,0 +1,51 @@ + +#ifndef DIRENT_INCLUDED +#define DIRENT_INCLUDED + +/* + + Declaration of POSIX directory browsing functions and types for Win32. + + Author: Kevlin Henney (kevlin@acm.org, kevlin@curbralan.com) + History: Created March 1997. Updated June 2003. + Rights: See end of file. + +*/ + +#ifdef __cplusplus +extern "C" +{ +#endif + +typedef struct DIR DIR; + +struct dirent +{ + char *d_name; +}; + +DIR *opendir(const char *); +int closedir(DIR *); +struct dirent *readdir(DIR *); +void rewinddir(DIR *); + +/* + + Copyright Kevlin Henney, 1997, 2003. All rights reserved. + + Permission to use, copy, modify, and distribute this software and its + documentation for any purpose is hereby granted without fee, provided + that this copyright and permissions notice appear in all copies and + derivatives. + + This software is supplied "as is" without express or implied warranty. + + But that said, if there are any problems please get in touch. + +*/ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/libprojectM/src/wipemalloc.cc b/libprojectM/src/wipemalloc.cc new file mode 100755 index 000000000..14bcf7816 --- /dev/null +++ b/libprojectM/src/wipemalloc.cc @@ -0,0 +1,44 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/** + * $Id: wipemalloc.c,v 1.1.1.1 2005/12/23 18:05:05 psperl Exp $ + * + * Clean memory allocator + */ + +#include "wipemalloc.h" + + void *wipemalloc( size_t count ) { + void *mem = malloc( count ); + if ( mem != NULL ) { + memset( mem, 0, count ); + } else { + printf( "wipemalloc() failed to allocate %d bytes\n", (int)count ); + } + return mem; + } + +/** Safe memory deallocator */ + void wipefree( void *ptr ) { + if ( ptr != NULL ) { + free( ptr ); + } + } diff --git a/libprojectM/src/wipemalloc.h b/libprojectM/src/wipemalloc.h new file mode 100755 index 000000000..3a7e524d4 --- /dev/null +++ b/libprojectM/src/wipemalloc.h @@ -0,0 +1,57 @@ +/** + * projectM -- Milkdrop-esque visualisation SDK + * Copyright (C)2003-2004 projectM Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * See 'LICENSE.txt' included within this release + * + */ +/** + * $Id: wipemalloc.h,v 1.1.1.1 2005/12/23 18:05:03 psperl Exp $ + * + * Contains an inline function which can replace malloc() that also + * call memset( ..., 0, sizeof( ... ) ) on the allocated block for + * safe initialization + * + */ + +#ifndef _WIPEMALLOC_H +#define _WIPEMALLOC_H + +#ifndef MACOS +#ifndef HAVE_AIX /** AIX has malloc() defined in a strange place... */ +#ifdef WIN32 +#include +#endif +#include +#include +#else +#include +#endif /** !HAVE_AIX */ +#else +#include +#include +#endif /** !MACOS */ +#include + +#if defined(WIN32) && !defined(inline) +#define inline +#endif + +/** Safe memory allocator */ + void *wipemalloc( size_t count ); + void wipefree( void *ptr ); + +#endif /** !_WIPEMALLOC_H */ diff --git a/libvisual-projectM/AUTHORS b/libvisual-projectM/AUTHORS new file mode 100644 index 000000000..040d29c3c --- /dev/null +++ b/libvisual-projectM/AUTHORS @@ -0,0 +1,51 @@ +Main author, project leader: +Dennis Smit + +Developers: +Duilio J. Protti +Vitaly V. Bursov +Gustavo Sverzut Barbieri (From freevo) + +The original JESS work: +Remi Arquier + +The original Infinity work: +Julien Carme + +The original lv_gltest work, which is the gl analyzer from xmms: +Peter Alm, Mikael Alm, Olle Hallnas, Thomas Nilsson and 4Front Technologies + +Nebulus: +Current maintainer, port to libvisual, cleanups, fixes, additions by: +Dennis Smit + +The previous maintainer and hackers: +Pascal Brochart +tunnel effect derived from the tides of time by +Mirko Teran-Ravnikar +child effect derived from the star child demo by +Andreas Gustafsson +energy effect derived from the tesla demo by +Konrad "Yoghurt" Zagorowicz (sunflower) +knot effect derived from the knot another torus demo +by Jan Horn +tentacles derived from the biohazard demo by +Jan Horn +spectrum analyzer derived from the spectrum plugin +by the XMMS team +face effect derived from the radial blur demo by +Dario Corno / Jeff Molofee and converted to delphi +by Jan Horn +twist effect derived from the twisting cylinder by +Andreas Gustafsson +beat detection written by Steve Kirkendall + +Delphi/C | C++/C conversion by Pascal Brochart + +Corona: +Richard Asbury +Linux port by: Jean-Christophe Hoelt + +Many thanks for quality suggestions and input: +Jean-Christophe Hoelt (Goom2 main author) + diff --git a/libvisual-projectM/COPYING b/libvisual-projectM/COPYING new file mode 100644 index 000000000..d60c31a97 --- /dev/null +++ b/libvisual-projectM/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/libvisual-projectM/ChangeLog b/libvisual-projectM/ChangeLog new file mode 100644 index 000000000..acf242b64 --- /dev/null +++ b/libvisual-projectM/ChangeLog @@ -0,0 +1,10 @@ +2006-01-31 Dennis Smit + + * actor_projectM.c: Again API updates, and set the GL attribs. + + * main.c: Removed (This was an xmms plugin file). + +2006-01-24 Dennis Smit + + * actor_projectM.c: Updated api to the new libvisual API stuff. + diff --git a/libvisual-projectM/INSTALL b/libvisual-projectM/INSTALL new file mode 100644 index 000000000..855f060f5 --- /dev/null +++ b/libvisual-projectM/INSTALL @@ -0,0 +1,3 @@ +If from CVS, run autogen.sh first. + + ./configure, make, make install. diff --git a/libvisual-projectM/Makefile.am b/libvisual-projectM/Makefile.am new file mode 100644 index 000000000..25675d283 --- /dev/null +++ b/libvisual-projectM/Makefile.am @@ -0,0 +1,19 @@ +## Process this file with automake to generate a Makefile.in + +lib_LTLIBRARIES = $(PROJECTM) + +EXTRA_LTLIBRARIES = actor_projectM.la + +libdir = @LIBVISUAL_PLUGINS_BASE_DIR@/actor + +LIBS = -L. -L$(prefix)/lib @LIBVISUAL_LIBS@ @FTGL_LIBS@ -lprojectM -lGL -lGLU + +AM_CFLAGS = @LIBVISUAL_CFLAGS@ -DLINUX + +INCLUDES = $(all_includes) \ + -I$(top_srcdir) -I/usr/include + +actor_projectM_la_LDFLAGS = -rpath $(libdir) -module -avoid-version + +actor_projectM_la_SOURCES = actor_projectM.c + diff --git a/libvisual-projectM/NEWS b/libvisual-projectM/NEWS new file mode 100644 index 000000000..e69de29bb diff --git a/libvisual-projectM/README b/libvisual-projectM/README new file mode 100644 index 000000000..965dfd3d9 --- /dev/null +++ b/libvisual-projectM/README @@ -0,0 +1,17 @@ +Go to src/projectM and run make to compile the projectM library, then do the standard ./configure, make , make install here in lv-xmms. + +Configuration: + ./configure + To set a prefix use --prefix, other options can be seen by + using ./configure --help + +Building: + make + This will compile the plugins + +Installing: + make install + This will install the plugins + + + diff --git a/libvisual-projectM/actor_projectM.c b/libvisual-projectM/actor_projectM.c new file mode 100644 index 000000000..6f4abb663 --- /dev/null +++ b/libvisual-projectM/actor_projectM.c @@ -0,0 +1,380 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include "lvtoprojectM.h" + +#if HAVE_CONFIG_H +#include +#endif +#define CONFIG_FILE "/config" +#define PRESETS_DIR "/presets" +#define FONTS_DIR "/fonts" + +void read_config(); + +int texsize=512; +int gx=32,gy=24; +int wvw=512,wvh=512; +int fvw=1024,fvh=768; +int fps=60, fullscreen=0; + +projectM_t *globalPM; + +/* Private context sensitive data goes here, */ +typedef struct { + projectM_t *PM; +} ProjectmPrivate; + +int lv_projectm_init (VisPluginData *plugin); +int lv_projectm_cleanup (VisPluginData *plugin); +int lv_projectm_requisition (VisPluginData *plugin, int *width, int *height); +int lv_projectm_dimension (VisPluginData *plugin, VisVideo *video, int width, int height); +int lv_projectm_events (VisPluginData *plugin, VisEventQueue *events); +VisPalette *lv_projectm_palette (VisPluginData *plugin); +int lv_projectm_render (VisPluginData *plugin, VisVideo *video, VisAudio *audio); + +VISUAL_PLUGIN_API_VERSION_VALIDATOR + +/* Main plugin stuff */ +/* The get_plugin_info function provides the libvisual plugin registry, and plugin loader + * with the very basic plugin information */ +const VisPluginInfo *get_plugin_info (int *count) +{ + /* Initialize the plugin specific data structure + * with pointers to the functions that represent + * the plugin interface it's implementation, more info: + * http://libvisual.sourceforge.net/newdocs/docs/html/struct__VisActorPlugin.html */ + static VisActorPlugin actor[] = {{ + .requisition = lv_projectm_requisition, + .palette = lv_projectm_palette, + .render = lv_projectm_render, + .vidoptions.depth = VISUAL_VIDEO_DEPTH_GL /* We want GL clearly */ + }}; + + /* This is the non plugin specific data structure, containing + * general informatie about the plugin itself, more info: + * http://libvisual.sourceforge.net/newdocs/docs/html/struct__VisPluginInfo.html */ + static const VisPluginInfo info[] = {{ + .type = VISUAL_PLUGIN_TYPE_ACTOR, + + .plugname = "projectm", + .name = "libvisual ProjectM", + .author = "Peter Sperl", + .version = "0.98", + .about = "projectM", + .help = "", + + .init = lv_projectm_init, + .cleanup = lv_projectm_cleanup, + .events = lv_projectm_events, + + .plugin = (void *) &actor[0] + }}; + + *count = sizeof (info) / sizeof (*info); + + VISUAL_VIDEO_ATTRIBUTE_OPTIONS_GL_ENTRY(actor[0].vidoptions, VISUAL_GL_ATTRIBUTE_ALPHA_SIZE, 8); + VISUAL_VIDEO_ATTRIBUTE_OPTIONS_GL_ENTRY(actor[0].vidoptions, VISUAL_GL_ATTRIBUTE_DEPTH_SIZE, 16); + VISUAL_VIDEO_ATTRIBUTE_OPTIONS_GL_ENTRY(actor[0].vidoptions, VISUAL_GL_ATTRIBUTE_DOUBLEBUFFER, 1); + + VISUAL_VIDEO_ATTRIBUTE_OPTIONS_GL_ENTRY(actor[0].vidoptions, VISUAL_GL_ATTRIBUTE_RED_SIZE, 8); + VISUAL_VIDEO_ATTRIBUTE_OPTIONS_GL_ENTRY(actor[0].vidoptions, VISUAL_GL_ATTRIBUTE_GREEN_SIZE, 8); + VISUAL_VIDEO_ATTRIBUTE_OPTIONS_GL_ENTRY(actor[0].vidoptions, VISUAL_GL_ATTRIBUTE_BLUE_SIZE, 8); + + return info; +} + +/* This function is called before we really start rendering, it's the init function */ +int lv_projectm_init (VisPluginData *plugin) +{ + char projectM_data[1024]; + ProjectmPrivate *priv; + + read_config(); + /* Allocate the projectm private data structure, and register it as a private */ + priv = visual_mem_new0 (ProjectmPrivate, 1); + visual_object_set_private (VISUAL_OBJECT (plugin), priv); + + globalPM = visual_mem_new0 (projectM_t, 1); + projectM_reset( globalPM ); + + globalPM->fullscreen = 0; //fullscreen; + globalPM->renderTarget->texsize = texsize; + globalPM->renderTarget->usePbuffers = 0; + globalPM->gx=gx; + globalPM->gy=gy; + globalPM->fps=fps; + + + strcpy(projectM_data, PROJECTM_DATADIR); + strcpy(projectM_data+strlen(PROJECTM_DATADIR), FONTS_DIR); + projectM_data[strlen(PROJECTM_DATADIR)+strlen(FONTS_DIR)]='\0'; + + globalPM->fontURL = (char *)malloc( sizeof( char ) * 512 ); + strcpy( globalPM->fontURL, projectM_data ); + + strcpy(projectM_data+strlen(PROJECTM_DATADIR), PRESETS_DIR); + projectM_data[strlen(PROJECTM_DATADIR)+strlen(PRESETS_DIR)]='\0'; + + globalPM->presetURL = (char *)malloc( sizeof( char ) * 512 ); + strcpy( globalPM->presetURL, projectM_data ); + + projectM_init( globalPM ); + + projectM_resetGL( globalPM, wvw, wvh ); + + return 0; +} + +int lv_projectm_cleanup (VisPluginData *plugin) +{ + ProjectmPrivate *priv = visual_object_get_private (VISUAL_OBJECT (plugin)); + + /* Cleanup, and thus also free our private */ + visual_mem_free (priv); + visual_mem_free (globalPM); + return 0; +} + +/* This is used to ask a plugin if it can handle a certain size, and if not, to + * set the size it wants by putting a value in width, height that represents the + * required size */ +int lv_projectm_requisition (VisPluginData *plugin, int *width, int *height) +{ + int reqw, reqh; + + /* Size negotiate with the window */ + reqw = *width; + reqh = *height; + + if (reqw < 64) + reqw = 64; + + if (reqh < 64) + reqh = 64; + + *width = reqw; + *height = reqh; + + return 0; +} + +int lv_projectm_dimension (VisPluginData *plugin, VisVideo *video, int width, int height) +{ + ProjectmPrivate *priv = visual_object_get_private (VISUAL_OBJECT (plugin)); + + visual_video_set_dimension (video, width, height); + + projectM_resetGL( globalPM, width, height ); + + return 0; +} + +/* This is the main event loop, where all kind of events can be handled, more information + * regarding these can be found at: + * http://libvisual.sourceforge.net/newdocs/docs/html/union__VisEvent.html + */ +int lv_projectm_events (VisPluginData *plugin, VisEventQueue *events) +{ + ProjectmPrivate *priv = visual_object_get_private (VISUAL_OBJECT (plugin)); + VisEvent ev; + VisParamEntry *param; + + projectMEvent evt; + projectMKeycode key; + projectMModifier mod; + + while (visual_event_queue_poll (events, &ev)) + { + switch (ev.type) + { + case VISUAL_EVENT_KEYUP: + + evt = lv2pmEvent( ev.type ); + key = lv2pmKeycode( ev.event.keyboard.keysym.sym ); + mod = lv2pmModifier( ev.event.keyboard.keysym.mod ); + key_handler(globalPM, PROJECTM_KEYDOWN, key,mod); + + break; + case VISUAL_EVENT_RESIZE: + lv_projectm_dimension (plugin, ev.event.resize.video, + ev.event.resize.width, ev.event.resize.height); + break; + + default: /* to avoid warnings */ + break; + } + } + + return 0; +} + +/* Using this function we can update the palette when we're in 8bits mode, which + * we aren't with projectm, so just ignore :) */ +VisPalette *lv_projectm_palette (VisPluginData *plugin) +{ + return NULL; +} + +/* This is where the real rendering happens! This function is what we call, many times + * a second to get our graphical frames. */ +int lv_projectm_render (VisPluginData *plugin, VisVideo *video, VisAudio *audio) +{ + ProjectmPrivate *priv = visual_object_get_private (VISUAL_OBJECT (plugin)); + VisBuffer pcmb; + float pcm[2][512]; + //short pcms[2][512]; + int i; + + visual_buffer_set_data_pair (&pcmb, pcm[0], sizeof (pcm[0])); + visual_audio_get_sample (audio, &pcmb, VISUAL_AUDIO_CHANNEL_LEFT); + + visual_buffer_set_data_pair (&pcmb, pcm[1], sizeof (pcm[1])); + visual_audio_get_sample (audio, &pcmb, VISUAL_AUDIO_CHANNEL_RIGHT); + + /* + for (i = 0; i < 512; i++) { + pcms[0][i] = pcm[0][i] * 32768.0; + pcms[1][i] = pcm[1][i] * 32768.0; + } + + addPCM16Data(pcms,512); + */ + + addPCMfloat(pcm,512); + renderFrame( globalPM ); + + return 0; +} + + + +void read_config() +{ + + int n; + + char num[80]; + FILE *in; + FILE *out; + + char* home; + char projectM_home[1024]; + char projectM_config[1024]; + + strcpy(projectM_config, PROJECTM_DATADIR); + strcpy(projectM_config+strlen(PROJECTM_DATADIR), CONFIG_FILE); + projectM_config[strlen(PROJECTM_DATADIR)+strlen(CONFIG_FILE)]='\0'; + + home=getenv("HOME"); + strcpy(projectM_home, home); + strcpy(projectM_home+strlen(home), "/.projectM/config"); + projectM_home[strlen(home)+strlen("/.projectM/config")]='\0'; + + + if ((in = fopen(projectM_home, "r")) != 0) + { + printf("reading ~/.projectM/config \n"); + } + else + { + printf("trying to create ~/.projectM/config \n"); + + strcpy(projectM_home, home); + strcpy(projectM_home+strlen(home), "/.projectM"); + projectM_home[strlen(home)+strlen("/.projectM")]='\0'; + mkdir(projectM_home,0755); + + strcpy(projectM_home, home); + strcpy(projectM_home+strlen(home), "/.projectM/config"); + projectM_home[strlen(home)+strlen("/.projectM/config")]='\0'; + + if((out = fopen(projectM_home,"w"))!=0) + { + + if ((in = fopen(projectM_config, "r")) != 0) + { + + while(fgets(num,80,in)!=NULL) + { + fputs(num,out); + } + fclose(in); + fclose(out); + + + if ((in = fopen(projectM_home, "r")) != 0) + { printf("created ~/.projectM/config successfully\n"); } + else{printf("This shouldn't happen, using implementation defualts\n");return;} + } + else{printf("Cannot find projectM default config, using implementation defaults\n");return;} + } + else + { + printf("Cannot create ~/.projectM/config, using default config file\n"); + if ((in = fopen(projectM_config, "r")) != 0) + { printf("Successfully opened default config file\n");} + else{ printf("Using implementation defaults, your system is really messed up, I'm suprised we even got this far\n"); return;} + + } + + } + + + + fgets(num, 80, in); fgets(num, 80, in); fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &texsize); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &gx); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &gy); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &wvw); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &wvh); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &fvw); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &fvh); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &fps); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &fullscreen); + /* + fgets(num, 80, in); + fgets(num, 80, in); + + n=0; + while (num[n]!=' ' && num[n]!='\n' && n < 80 && num[n]!=EOF) + { + disp[n]=num[n]; + n++; + } + disp[n]=0; + + + // sprintf(disp,"%s",num ); + setenv("DISPLAY",disp,1); + printf("%s %d\n", disp,strlen(disp)); + setenv("LD_PRELOAD", "/usr/lib/tls/libGL.so.1.0.4496", 1); + */ + fclose(in); + +} diff --git a/libvisual-projectM/autogen.sh b/libvisual-projectM/autogen.sh new file mode 100755 index 000000000..19fc2c77f --- /dev/null +++ b/libvisual-projectM/autogen.sh @@ -0,0 +1,5 @@ +#!/bin/sh +aclocal -I m4 +libtoolize --force +autoconf +automake -a diff --git a/libvisual-projectM/config.h.in b/libvisual-projectM/config.h.in new file mode 100644 index 000000000..2cd86da39 --- /dev/null +++ b/libvisual-projectM/config.h.in @@ -0,0 +1,131 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the `floor' function. */ +#undef HAVE_FLOOR + +/* Define to 1 if you have the `getpagesize' function. */ +#undef HAVE_GETPAGESIZE + +/* Define to 1 if you have the `gettimeofday' function. */ +#undef HAVE_GETTIMEOFDAY + +/* Define to 1 if you have the header file. */ +#undef HAVE_GL_GLX_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_GL_GL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#undef HAVE_MALLOC + +/* Define to 1 if you have the `memmove' function. */ +#undef HAVE_MEMMOVE + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `memset' function. */ +#undef HAVE_MEMSET + +/* Define to 1 if you have a working `mmap' system call. */ +#undef HAVE_MMAP + +/* Define to 1 if you have the `pow' function. */ +#undef HAVE_POW + +/* Define to 1 if you have the `sqrt' function. */ +#undef HAVE_SQRT + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_X11_EXTENSIONS_XF86VMODE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_X11_KEYSYM_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_X11_XLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_X11_XUTIL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_X11_X_H + +/* XF86VidMode is available */ +#undef HAVE_XF86VMODE + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* libprojectM data dir */ +#undef PROJECTM_DATADIR + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define to 1 if you can safely include both and . */ +#undef TIME_WITH_SYS_TIME + +/* Version number of package */ +#undef VERSION + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to rpl_malloc if the replacement function should be used. */ +#undef malloc diff --git a/libvisual-projectM/configure.ac b/libvisual-projectM/configure.ac new file mode 100644 index 000000000..e25577a39 --- /dev/null +++ b/libvisual-projectM/configure.ac @@ -0,0 +1,261 @@ +# Process this file with autoconf to produce a configure script. + +AC_PREREQ(2.57) +AC_INIT(Libvisual projectM, 0.98, psperl@sourceforge.net) +AM_INIT_AUTOMAKE([1.7.0 dist-bzip2]) + +AC_CONFIG_SRCDIR([config.h.in]) +AC_CONFIG_HEADER([config.h]) + +# Checks for programs. +AC_PROG_CC +AC_PROG_CXX +AC_PROG_INSTALL +AC_PROG_LN_S + +AC_DISABLE_STATIC +AC_PROG_LIBTOOL + +AC_PATH_PROG(PKG_CONFIG, [pkg-config], [no]) +if test x$PKG_CONFIG = xno ; then + AC_MSG_ERROR([*** pkg-config not found. See http://www.freedesktop.org/software/pkgconfig/]) +fi + +if $PKG_CONFIG --atleast-pkgconfig-version 0.14 ; then + : +else + AC_MSG_ERROR([*** pkg-config too old; version 0.14 or better required.]) +fi + +# Checks for libraries. +build_actor="" + + +PKG_CHECK_MODULES(LIBPROJECTM, libprojectM >= 0.0.0, [libprjM="yes"], [libprjM="no"]) +if test x$libprjM = xno; then + AC_MSG_ERROR([*** libprojectM not found. + libprojectM is needed to build this package. + You can download libprojectM at http://xmms-projectM.sf.net/]) +fi +AC_SUBST(LIBPROJECTM_LIBS) +AC_SUBST(LIBPROJECTM_CFLAGS) + + # define some paths macros about libprojectM +AC_DEFINE_UNQUOTED([PROJECTM_SYSCONFDIR],"`pkg-config --variable=sysconfdir libprojectM`",[libprojectM configuration dir]) +AC_DEFINE_UNQUOTED([PROJECTM_DATADIR],"`pkg-config --variable=pkgdatadir libprojectM`",[libprojectM data dir]) + + +PKG_CHECK_MODULES(LIBVISUAL, libvisual-0.4 >= 0.4.0, [libvis="yes"], [libvis="no"]) +if test x$libvis = xno; then + AC_MSG_ERROR([*** libvisual not found. + libvisual is needed to build this package. + You can download libvisual at http://libvisual.sf.net/]) +fi +AC_SUBST(LIBVISUAL_LIBS) +AC_SUBST(LIBVISUAL_CFLAGS) + +PKG_CHECK_MODULES(FTGL, ftgl >= 2.0.0, [libft="yes"], [libft="no"]) +if test x$libft = xno; then + AC_MSG_ERROR([*** ftgl not found. + libftgl is needed to build this package./]) +fi +AC_SUBST(FTGL_LIBS) +AC_SUBST(FTGL_CFLAGS) + +AC_PATH_X + +opengl=no +if test x$have_x = xyes ; then + + test x$x_libraries != x && LDFLAGS="$LDFLAGS -Wl,-rpath,$x_libraries -L$x_libraries" + test x$x_includes != x && CPPFLAGS="$CPPFLAGS -I$x_includes" + + AC_CHECK_HEADERS([\ + X11/keysym.h \ + X11/X.h \ + X11/Xlib.h \ + X11/Xutil.h], [], [ + AC_MSG_ERROR([Required X11 headers not found.]) + ]) + + AC_CHECK_HEADERS([\ + GL/gl.h \ + GL/glx.h], [have_gl_headers=yes], [have_gl_headers=no]) + + if test x$have_gl_headers = xyes ; then + AC_CHECK_LIB([GL], [glBegin], [have_lib_gl=yes], [have_lib_gl=no]) + else + have_lib_gl=no + fi + + opengl=$have_lib_gl + + AM_CONDITIONAL(HAVE_LIB_GL, test x$have_lib_gl = xyes) + + XF86VM_LIB= + AC_CHECK_HEADERS([\ + X11/extensions/xf86vmode.h], [ + AC_CHECK_LIB([Xxf86vm], [XF86VidModeSwitchToMode], [ + AC_DEFINE(HAVE_XF86VMODE, [], [XF86VidMode is available]) + XF86VM_LIB=-lXxf86vm + xf86vm=yes + ], [xf86vm=no]) ], [], + [[#include + ]]) + + AC_SUBST(XF86VM_LIB) + AM_CONDITIONAL(HAVE_XF86VMODE, test x$xf86vm = xyes) +else + opengl=no +fi + +AM_CONDITIONAL(HAVE_X, test x$have_x = xyes) + + +# Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +# Checks for header files. +AC_HEADER_TIME +AC_CHECK_HEADERS([fcntl.h unistd.h stdlib.h string.h sys/time.h]) +AC_C_INLINE + +# Checks for library functions. +AC_FUNC_MALLOC +AC_CHECK_FUNCS([floor gettimeofday memmove memset pow sqrt]) +AC_CHECK_FUNC([munmap], lv_have_munmap=yes, lv_have_munmap=no) +AC_FUNC_MMAP + +AC_ARG_ENABLE([projectm], + AC_HELP_STRING([--disable-projectm], + [Do not build projectm plugin @<:@default=enabled@:>@]), + [lvprojectm=$enableval], + [lvprojectm=yes]) +AC_MSG_CHECKING([whether to build lv_projectm plugin]) +if test x$lvprojectm = xyes; then + AC_MSG_RESULT([yes]) + if test x$opengl = xyes; then + build_actor="$build_actor actor_projectm" + AC_SUBST([PROJECTM], ['actor_projectM.la']) + else + AC_MSG_WARN([*** No OpenGL found. + projectm plugin will not be built.]) + build_actor="$build_actor actor_projectm" + AC_SUBST([PROJECTM], ['actor_projectM.la']) + fi +else + AC_MSG_RESULT([no]) +fi + +# +# Build paramaters +# + +DEBUG_CFLAGS="" + +AC_ARG_ENABLE([profiling], + AC_HELP_STRING([--enable-profiling], + [Enable emision of profile data to be used by gprof @<:@default=disabled@:>@]), + [profiling=$enableval], + [profiling=no]) +AC_MSG_CHECKING([wheter to enable profiling]) +if test x$profiling = xyes; then + AC_MSG_RESULT([yes]) + DEBUG_CFLAGS="$DEBUG_CFLAGS -pg" +else + AC_MSG_RESULT([no]) +fi + +AC_ARG_ENABLE([debug], + AC_HELP_STRING([--enable-debug], + [Enable debug @<:@default=disabled@:>@]), + [debug=$enableval], + [debug=no]) +AC_MSG_CHECKING([whether to enable debug]) +if test "$debug" = yes; then + AC_MSG_RESULT([yes]) + DEBUG_CFLAGS="$DEBUG_CFLAGS -ggdb3" + DEBUG_CFLAGS="$DEBUG_CFLAGS -Wall -Wmissing-braces -Wimplicit -Wunused" + DEBUG_CFLAGS="$DEBUG_CFLAGS -Wmissing-prototypes -Wno-unused-variable" +else + AC_MSG_RESULT([no]) +fi +AC_SUBST(DEBUG_CFLAGS) + +AC_ARG_ENABLE([extra-optimization], + AC_HELP_STRING([--enable-extra-optimization], + [Enable extra optimizations @<:@default=disabled@:>@]), + [extra_opt=$enableval], + [extra_opt=no]) +AC_MSG_CHECKING([wheter to enable extra optimizations]) +if test x$extra_opt = xyes; then + AC_MSG_RESULT([yes]) + OPT_CFLAGS="-O3 -fexpensive-optimizations" +else + AC_MSG_RESULT([no]) + if test x$debug = xyes; then + OPT_CFLAGS="-O0" + else + OPT_CFLAGS="" + fi +fi +AC_SUBST(OPT_CFLAGS) + +AC_SUBST(CFLAGS, "${CFLAGS} ${DEBUG_CFLAGS} ${OPT_CFLAGS}") +AC_SUBST(CXXFLAGS, "${CFLAGS} ${DEBUG_CFLAGS} ${OPT_CFLAGS}") + +AC_ARG_WITH([plugins_base_dir], + AC_HELP_STRING([--with-plugins_base_dir="dir"], + [Install plugins to this base directory. Defaults to Libvisual's base dir ]), +dnl ' # fix string coloring ;) + [plugins_base_dir=$withval], + [plugins_base_dir=]) + +AC_MSG_CHECKING([where to install plugins]) + +if test -z "$plugins_base_dir"; then + plugins_base_dir=`$PKG_CONFIG --variable=pluginsbasedir libvisual-0.4` + AC_MSG_RESULT([$plugins_base_dir]) +else + if test -d "$plugins_base_dir"; then + AC_MSG_RESULT([$plugins_base_dir]) + else + AC_MSG_RESULT([not found]) + AC_MSG_ERROR([Specified plugins base directory "$plugins_base_dir" is not accesible!]) + exit 1 + fi +fi + +LIBVISUAL_PLUGINS_BASE_DIR="$plugins_base_dir" +AC_SUBST(LIBVISUAL_PLUGINS_BASE_DIR) + +libs_dynamic_loader="-ldl" +AC_SUBST(LIBS_DYNAMIC_LOADER, "$libs_dynamic_loader") + +AC_SUBST(DATADIR, "$datadir") + +AC_CONFIG_FILES([ + Makefile +]) + + +AC_OUTPUT + +echo " +================================================ +LIBVISUAL-PROJECTM, THE PROJECTM PLUGIN FOR LIBVISUAL $VERSION +================================================ + +Packages found: +libvisual: : ${libvis} + +Plugins being build: +actor: : ${build_actor} + +Libvisual plugin data dir: : ${prefix}/share + +Build options: +install path : $plugins_base_dir +source code location: : ${srcdir} +compiler: : ${CC} +" + diff --git a/libvisual-projectM/libvisual-plugins.spec b/libvisual-projectM/libvisual-plugins.spec new file mode 100644 index 000000000..cfb27ec00 --- /dev/null +++ b/libvisual-projectM/libvisual-plugins.spec @@ -0,0 +1,72 @@ +%define my_build yjl.0.testing.1 + +Summary: Plugins for use with libvisual +Name: libvisual-plugins +Epoch: 0 +Version: 0.2.0 +Release: 0.%{epoch}.%my_build +License: GPL +Group: Applications/Multimedia +URL: http://libvisual.sourceforge.net/v2/ +Source0: %{name}-%{version}.tar.bz2 +Packager: Michael A. Peters +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root +BuildRequires: libvisual-devel +BuildRequires: xorg-x11-devel +BuildRequires: alsa-lib-devel +BuildRequires: esound-devel +BuildRequires: pango-devel +Requires: libvisual +Requires: alsa-lib +Requires: esound +Requires: pango + + +%description +This package contains several plugins for libvisual + +%prep +%setup -q + +%build +%configure +%__make + +%install +rm -rf $RPM_BUILD_ROOT + +%makeinstall + +# fix plugins +if [ ! -d %buildroot%_libdir/libvisual ]; then + mkdir -p %buildroot%_libdir/libvisual + #actor + mkdir -p %buildroot%_libdir/libvisual/actor + mv %buildroot%_libdir/actor* %buildroot%_libdir/libvisual/actor/ + mkdir -p %buildroot%_libdir/libvisual/input + mv %buildroot%_libdir/input* %buildroot%_libdir/libvisual/input/ + mkdir -p %buildroot%_libdir/libvisual/morph + mv %buildroot%_libdir/morph* %buildroot%_libdir/libvisual/morph/ +fi + +%clean +rm -rf $RPM_BUILD_ROOT + + +%files +%defattr(-,root,root,-) +%doc AUTHORS ChangeLog COPYING NEWS README TODO +%_libdir/libvisual/actor +%_libdir/libvisual/input +%_libdir/libvisual/morph +%_datadir/libvisual/actor +%_datadir/libvisual-plugins + +%changelog +* Mon Jan 31 2005 Michael A. Peters +- testing pre 0.2.0 release + +* Mon Nov 15 2004 Michael A. Peters +- Initial build. + + diff --git a/libvisual-projectM/lvtoprojectM.h b/libvisual-projectM/lvtoprojectM.h new file mode 100644 index 000000000..e9ab70a04 --- /dev/null +++ b/libvisual-projectM/lvtoprojectM.h @@ -0,0 +1,140 @@ +/** + * $Id: lvtoprojectM.h,v 1.1.1.1 2005/12/23 18:34:15 psperl Exp $ + * + * Translates SDL -> projectM variables + * + * $Log: lvtoprojectM.h,v $ + * Revision 1.1.1.1 2005/12/23 18:34:15 psperl + * + * + * Revision 1.1 2004/10/08 00:35:28 cvs + * Moved and imported + * + * Revision 1.1.1.1 2004/10/04 12:56:00 cvs + * Imported + * + */ + +#include +#include + +projectMEvent lv2pmEvent( VisEventType event ) { + + switch ( event ) { + case VISUAL_EVENT_RESIZE: + return PROJECTM_VIDEORESIZE; + case VISUAL_EVENT_KEYUP: + return PROJECTM_KEYUP; + case VISUAL_EVENT_KEYDOWN: + return PROJECTM_KEYDOWN; + default: + return PROJECTM_KEYUP; + } + } +projectMKeycode lv2pmKeycode( VisKey keysym ) +{ + switch ( keysym ) + { + case VKEY_F1: + return PROJECTM_K_F1; + case VKEY_F2: + return PROJECTM_K_F2; + case VKEY_F3: + return PROJECTM_K_F3; + case VKEY_F4: + return PROJECTM_K_F4; + case VKEY_F5: + return PROJECTM_K_F5; + case VKEY_F6: + return PROJECTM_K_F6; + case VKEY_F7: + return PROJECTM_K_F7; + case VKEY_F8: + return PROJECTM_K_F8; + case VKEY_F9: + return PROJECTM_K_F9; + case VKEY_F10: + return PROJECTM_K_F10; + case VKEY_F11: + return PROJECTM_K_F11; + case VKEY_F12: + return PROJECTM_K_F12; + case VKEY_ESCAPE: + return PROJECTM_K_ESCAPE; + case VKEY_a: + return PROJECTM_K_a; + case VKEY_b: + return PROJECTM_K_b; + case VKEY_c: + return PROJECTM_K_c; + case VKEY_d: + return PROJECTM_K_d; + case VKEY_e: + return PROJECTM_K_e; + case VKEY_f: + return PROJECTM_K_f; + case VKEY_g: + return PROJECTM_K_g; + case VKEY_h: + return PROJECTM_K_h; + case VKEY_i: + return PROJECTM_K_i; + case VKEY_j: + return PROJECTM_K_j; + case VKEY_k: + return PROJECTM_K_k; + case VKEY_l: + return PROJECTM_K_l; + case VKEY_m: + return PROJECTM_K_m; + case VKEY_n: + return PROJECTM_K_n; + case VKEY_o: + return PROJECTM_K_o; + case VKEY_p: + return PROJECTM_K_p; + case VKEY_q: + return PROJECTM_K_q; + case VKEY_r: + return PROJECTM_K_r; + case VKEY_s: + return PROJECTM_K_s; + case VKEY_t: + return PROJECTM_K_t; + case VKEY_u: + return PROJECTM_K_u; + case VKEY_v: + return PROJECTM_K_v; + case VKEY_w: + return PROJECTM_K_w; + case VKEY_x: + return PROJECTM_K_x; + case VKEY_y: + return PROJECTM_K_y; + case VKEY_z: + return PROJECTM_K_z; + case VKEY_UP: + return PROJECTM_K_UP; + case VKEY_RETURN: + return PROJECTM_K_RETURN; + case VKEY_RIGHT: + return PROJECTM_K_RIGHT; + case VKEY_LEFT: + return PROJECTM_K_LEFT; + case VKEY_DOWN: + return PROJECTM_K_DOWN; + case VKEY_PAGEUP: + return PROJECTM_K_PAGEUP; + case VKEY_PAGEDOWN: + return PROJECTM_K_PAGEDOWN; + + + default: + return PROJECTM_K_NONE; + break; + } + } + +projectMModifier lv2pmModifier( int mod ) { + return mod && VKMOD_LSHIFT; + } diff --git a/libvisual-projectM/m4/acx_pthread.m4 b/libvisual-projectM/m4/acx_pthread.m4 new file mode 100644 index 000000000..06af84275 --- /dev/null +++ b/libvisual-projectM/m4/acx_pthread.m4 @@ -0,0 +1,238 @@ +dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +dnl +dnl @summary figure out how to build C programs using POSIX threads +dnl +dnl This macro figures out how to build C programs using POSIX threads. +dnl It sets the PTHREAD_LIBS output variable to the threads library and +dnl linker flags, and the PTHREAD_CFLAGS output variable to any special +dnl C compiler flags that are needed. (The user can also force certain +dnl compiler flags/libs to be tested by setting these environment +dnl variables.) +dnl +dnl Also sets PTHREAD_CC to any special C compiler that is needed for +dnl multi-threaded programs (defaults to the value of CC otherwise). +dnl (This is necessary on AIX to use the special cc_r compiler alias.) +dnl +dnl NOTE: You are assumed to not only compile your program with these +dnl flags, but also link it with them as well. e.g. you should link +dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS +dnl $LIBS +dnl +dnl If you are only building threads programs, you may wish to use +dnl these variables in your default LIBS, CFLAGS, and CC: +dnl +dnl LIBS="$PTHREAD_LIBS $LIBS" +dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +dnl CC="$PTHREAD_CC" +dnl +dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute +dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to +dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). +dnl +dnl ACTION-IF-FOUND is a list of shell commands to run if a threads +dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to +dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the +dnl default action will define HAVE_PTHREAD. +dnl +dnl Please let the authors know if this macro fails on any platform, or +dnl if you have any other suggestions or comments. This macro was based +dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with +dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros +dnl posted by Alejandro Forero Cuervo to the autoconf macro repository. +dnl We are also grateful for the helpful feedback of numerous users. +dnl +dnl @category InstalledPackages +dnl @author Steven G. Johnson +dnl @version 2005-06-15 +dnl @license GPLWithACException + +AC_DEFUN([ACX_PTHREAD], [ +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_LANG_SAVE +AC_LANG_C +acx_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on True64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) + AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) + AC_MSG_RESULT($acx_pthread_ok) + if test x"$acx_pthread_ok" = xno; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items starting with a "-" are +# C compiler flags, and other items are library names, except for "none" +# which indicates that we try without any flags at all, and "pthread-config" +# which is a program returning the flags for the Pth emulation library. + +acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) +# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) +# -pthreads: Solaris/gcc +# -mthreads: Mingw32/gcc, Lynx/gcc +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads too; +# also defines -D_REENTRANT) +# ... -mt is also the pthreads flag for HP/aCC +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case "${host_cpu}-${host_os}" in + *solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (We need to link with -pthreads/-mt/ + # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather + # a function called by this macro, so we could check for that, but + # who knows whether they'll stub that too in a future libc.) So, + # we'll just look for -pthreads and -lpthread first: + + acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" + ;; +esac + +if test x"$acx_pthread_ok" = xno; then +for flag in $acx_pthread_flags; do + + case $flag in + none) + AC_MSG_CHECKING([whether pthreads work without any flags]) + ;; + + -*) + AC_MSG_CHECKING([whether pthreads work with $flag]) + PTHREAD_CFLAGS="$flag" + ;; + + pthread-config) + AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no) + if test x"$acx_pthread_config" = xno; then continue; fi + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + AC_MSG_CHECKING([for the pthreads library -l$flag]) + PTHREAD_LIBS="-l$flag" + ;; + esac + + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + AC_TRY_LINK([#include ], + [pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], + [acx_pthread_ok=yes]) + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + AC_MSG_RESULT($acx_pthread_ok) + if test "x$acx_pthread_ok" = xyes; then + break; + fi + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + +# Various other checks: +if test "x$acx_pthread_ok" = xyes; then + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + AC_MSG_CHECKING([for joinable pthread attribute]) + attr_name=unknown + for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + AC_TRY_LINK([#include ], [int attr=$attr; return attr;], + [attr_name=$attr; break]) + done + AC_MSG_RESULT($attr_name) + if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then + AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, + [Define to necessary symbol if this constant + uses a non-standard name on your system.]) + fi + + AC_MSG_CHECKING([if more special flags are required for pthreads]) + flag=no + case "${host_cpu}-${host_os}" in + *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; + *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; + esac + AC_MSG_RESULT(${flag}) + if test "x$flag" != xno; then + PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" + fi + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + # More AIX lossage: must compile with cc_r + AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC}) +else + PTHREAD_CC="$CC" +fi + +AC_SUBST(PTHREAD_LIBS) +AC_SUBST(PTHREAD_CFLAGS) +AC_SUBST(PTHREAD_CC) + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test x"$acx_pthread_ok" = xyes; then + ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) + : +else + acx_pthread_ok=no + $2 +fi +AC_LANG_RESTORE +])dnl ACX_PTHREAD diff --git a/libvisual-projectM/m4/ax_check_gl.m4 b/libvisual-projectM/m4/ax_check_gl.m4 new file mode 100644 index 000000000..08305c105 --- /dev/null +++ b/libvisual-projectM/m4/ax_check_gl.m4 @@ -0,0 +1,95 @@ +dnl @synopsis AX_CHECK_GL +dnl +dnl Check for an OpenGL implementation. If GL is found, the required +dnl compiler and linker flags are included in the output variables +dnl "GL_CFLAGS" and "GL_LIBS", respectively. This macro adds the +dnl configure option "--with-apple-opengl-framework", which users can +dnl use to indicate that Apple's OpenGL framework should be used on Mac +dnl OS X. If Apple's OpenGL framework is used, the symbol +dnl "HAVE_APPLE_OPENGL_FRAMEWORK" is defined. If no GL implementation +dnl is found, "no_gl" is set to "yes". +dnl +dnl @category InstalledPackages +dnl @author Braden McDaniel +dnl @version 2004-11-15 +dnl @license AllPermissive + +AC_DEFUN([AX_CHECK_GL], +[AC_REQUIRE([AC_PATH_X])dnl +AC_REQUIRE([ACX_PTHREAD])dnl + +# +# There isn't a reliable way to know we should use the Apple OpenGL framework +# without a configure option. A Mac OS X user may have installed an +# alternative GL implementation (e.g., Mesa), which may or may not depend on X. +# +AC_ARG_WITH([apple-opengl-framework], + [AC_HELP_STRING([--with-apple-opengl-framework], + [use Apple OpenGL framework (Mac OS X only)])]) +if test "X$with_apple_opengl_framework" = "Xyes"; then + AC_DEFINE([HAVE_APPLE_OPENGL_FRAMEWORK], [1], + [Use the Apple OpenGL framework.]) + GL_LIBS="-framework OpenGL" +else + AC_LANG_PUSH(C) + + AX_LANG_COMPILER_MS + if test X$ax_compiler_ms = Xno; then + GL_CFLAGS="${PTHREAD_CFLAGS}" + GL_LIBS="${PTHREAD_LIBS} -lm" + fi + + # + # Use x_includes and x_libraries if they have been set (presumably by + # AC_PATH_X). + # + if test "X$no_x" != "Xyes"; then + if test -n "$x_includes"; then + GL_CFLAGS="-I${x_includes} ${GL_CFLAGS}" + fi + if test -n "$x_libraries"; then + GL_LIBS="-L${x_libraries} -lX11 ${GL_LIBS}" + fi + fi + + AC_CHECK_HEADERS([windows.h]) + + AC_CACHE_CHECK([for OpenGL library], [ax_cv_check_gl_libgl], + [ax_cv_check_gl_libgl="no" + ax_save_CPPFLAGS="${CPPFLAGS}" + CPPFLAGS="${GL_CFLAGS} ${CPPFLAGS}" + ax_save_LIBS="${LIBS}" + LIBS="" + ax_check_libs="-lopengl32 -lGL" + for ax_lib in ${ax_check_libs}; do + if test X$ax_compiler_ms = Xyes; then + ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'` + else + ax_try_lib="${ax_lib}" + fi + LIBS="${ax_try_lib} ${GL_LIBS} ${ax_save_LIBS}" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[ +# if HAVE_WINDOWS_H && defined(_WIN32) +# include +# endif +# include ]], + [[glBegin(0)]])], + [ax_cv_check_gl_libgl="${ax_try_lib}"; break]) + done + LIBS=${ax_save_LIBS} + CPPFLAGS=${ax_save_CPPFLAGS}]) + + if test "X${ax_cv_check_gl_libgl}" = "Xno"; then + no_gl="yes" + GL_CFLAGS="" + GL_LIBS="" + else + GL_LIBS="${ax_cv_check_gl_libgl} ${GL_LIBS}" + fi + AC_LANG_POP(C) +fi + +AC_SUBST([GL_CFLAGS]) +AC_SUBST([GL_LIBS]) +])dnl diff --git a/libvisual-projectM/m4/ax_lang_compiler_ms.m4 b/libvisual-projectM/m4/ax_lang_compiler_ms.m4 new file mode 100644 index 000000000..2b3d5a816 --- /dev/null +++ b/libvisual-projectM/m4/ax_lang_compiler_ms.m4 @@ -0,0 +1,23 @@ +dnl @synopsis AX_LANG_COMPILER_MS +dnl +dnl Check whether the compiler for the current language is Microsoft. +dnl +dnl This macro is modeled after _AC_LANG_COMPILER_GNU in the GNU +dnl Autoconf implementation. +dnl +dnl @category InstalledPackages +dnl @author Braden McDaniel +dnl @version 2004-11-15 +dnl @license AllPermissive + +AC_DEFUN([AX_LANG_COMPILER_MS], +[AC_CACHE_CHECK([whether we are using the Microsoft _AC_LANG compiler], + [ax_cv_[]_AC_LANG_ABBREV[]_compiler_ms], +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[#ifndef _MSC_VER + choke me +#endif +]])], + [ax_compiler_ms=yes], + [ax_compiler_ms=no]) +ax_cv_[]_AC_LANG_ABBREV[]_compiler_ms=$ax_compiler_ms +])]) diff --git a/xmms-projectM-pbuffers/AUTHORS b/xmms-projectM-pbuffers/AUTHORS new file mode 100644 index 000000000..e69de29bb diff --git a/xmms-projectM-pbuffers/COPYING b/xmms-projectM-pbuffers/COPYING new file mode 100644 index 000000000..d60c31a97 --- /dev/null +++ b/xmms-projectM-pbuffers/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/xmms-projectM-pbuffers/ChangeLog b/xmms-projectM-pbuffers/ChangeLog new file mode 100644 index 000000000..e69de29bb diff --git a/xmms-projectM-pbuffers/INSTALL b/xmms-projectM-pbuffers/INSTALL new file mode 100644 index 000000000..a4b34144d --- /dev/null +++ b/xmms-projectM-pbuffers/INSTALL @@ -0,0 +1,229 @@ +Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software +Foundation, Inc. + + This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. (Caching is +disabled by default to prevent problems with accidental use of stale +cache files.) + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You only need +`configure.ac' if you want to change it or regenerate `configure' using +a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a +time in the source code directory. After you have installed the +package for one architecture, use `make distclean' before reconfiguring +for another architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the `--target=TYPE' option to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +will cause the specified gcc to be used as the C compiler (unless it is +overridden in the site shell script). + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/xmms-projectM-pbuffers/Makefile.am b/xmms-projectM-pbuffers/Makefile.am new file mode 100644 index 000000000..e73e90ab5 --- /dev/null +++ b/xmms-projectM-pbuffers/Makefile.am @@ -0,0 +1,8 @@ +lib_LTLIBRARIES = libprojectm_xmms.la + +libdir = @XMMS_VISUALIZATION_PLUGIN_DIR@ + +AM_CFLAGS = -Wall -DLINUX @XMMS_CFLAGS@ -I$(top_builddir) -I$(top_srcdir) +LIBS = @XMMS_LIBS@ @GL_LIBS@ @FTGL_LIBS@ -lprojectM -lGL -lGLU +libprojectm_xmms_la_LDFLAGS = -module -avoid-version +libprojectm_xmms_la_SOURCES = main.c xtoprojectm.h diff --git a/xmms-projectM-pbuffers/NEWS b/xmms-projectM-pbuffers/NEWS new file mode 100644 index 000000000..e69de29bb diff --git a/xmms-projectM-pbuffers/README b/xmms-projectM-pbuffers/README new file mode 100644 index 000000000..94a8c8809 --- /dev/null +++ b/xmms-projectM-pbuffers/README @@ -0,0 +1,54 @@ +PROJECTM README FILE +-------------------------------- + +QUICK OVERVIEW +---------------------- +projectM started initially as a reimplementation of the Win32/DirectX based music visualizer Milkdrop under Linux/SDL/OpenGl/XMMS. +It currently supports up to Milkdrop 1.04b presets, but there are some bugs with certain presets containing 1.04 features This project +is 100% GPL'ed - feel free to use the code for whatever. + +INSTALL +---------------------------- + +[1] Install libprojectM + +[2] Install xmms-projectM-pbuffers + +If you haven't already, download the latest tarball release from http://xmms-projectm.sourceforge.net. + +Then run + +sh> ./configure + +followed by + +sh> make + +and as root + +sh> make install + +This will install projectM into XMMS's Visualization plugin directory. projectM's configuration +files, including the default packaged presets are in $prefix/share/projectM. + +Enable projectM by loading XMMS and pressing CTRL-v. This will bring up the vis plugin menu. Highlight +projectM in the list (if it's not there something went wrong during installation), and click the enable +button. Sit back and enjoy the trippy visuals... + +CONFIGURE +---------- + +edit ~/.projectM/config + + +CREDIT / CONTACT +------------------ + +Main Developers: + +Carmelo Piccione: w1z7ard@sourceforge.net +Peter Sperl: psperl@sourceforge.net + + + + diff --git a/xmms-projectM-pbuffers/autogen.sh b/xmms-projectM-pbuffers/autogen.sh new file mode 100755 index 000000000..6e9b5433e --- /dev/null +++ b/xmms-projectM-pbuffers/autogen.sh @@ -0,0 +1,5 @@ +#!/bin/sh +aclocal +libtoolize +autoconf +automake -a diff --git a/xmms-projectM-pbuffers/config.h.in b/xmms-projectM-pbuffers/config.h.in new file mode 100644 index 000000000..d7d4f6a0d --- /dev/null +++ b/xmms-projectM-pbuffers/config.h.in @@ -0,0 +1,97 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* always defined to indicate that i18n is enabled */ +#undef ENABLE_NLS + +/* GETTEXT package name */ +#undef GETTEXT_PACKAGE + +/* Define to 1 if you have the `bind_textdomain_codeset' function. */ +#undef HAVE_BIND_TEXTDOMAIN_CODESET + +/* Define to 1 if you have the `dcgettext' function. */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define to 1 if you have the header file. */ +#undef HAVE_GL_GLU_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_GL_GLX_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_GL_GL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define if your file defines LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES + +/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* libprojectM data dir */ +#undef PROJECTM_DATADIR + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif diff --git a/xmms-projectM-pbuffers/configure.ac b/xmms-projectM-pbuffers/configure.ac new file mode 100644 index 000000000..620e59fec --- /dev/null +++ b/xmms-projectM-pbuffers/configure.ac @@ -0,0 +1,184 @@ +# Process this file with autoconf to produce a configure script. + +AC_PREREQ(2.57) +AC_INIT(projectM XMMS plugin, 0.98, none , xmms-projectM) +AM_INIT_AUTOMAKE([1.7.0 dist-bzip2]) + +AC_CONFIG_SRCDIR([config.h.in]) +AC_CONFIG_HEADER([config.h]) + +AC_PREFIX_DEFAULT(/usr) +AC_PREFIX_PROGRAM(xmms) + +# Checks for programs. +AC_PROG_CC +AC_PROG_LN_S + +AC_DISABLE_STATIC +AC_PROG_LIBTOOL + +AC_PATH_PROG(PKG_CONFIG, [pkg-config], [no]) +if test x$PKG_CONFIG = xno ; then + AC_MSG_ERROR([*** pkg-config not found. See http://www.freedesktop.org/software/pkgconfig/]) +fi +if $PKG_CONFIG --atleast-pkgconfig-version 0.14 ; then + : +else + AC_MSG_ERROR([*** pkg-config too old; version 0.14 or better required.]) +fi + +# Checks for header files. +AC_CHECK_HEADERS([unistd.h]) +AC_CHECK_HEADERS([GL/gl.h GL/glx.h GL/glu.h],opengl="yes",opengl="no") +if test x"$opengl" = xno; then + AC_MSG_ERROR([OpenGL and Glu headers not found, the plugin cannot be build]) +fi + +# Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_C_INLINE # reserved for future + +# Check for libraries +AM_PATH_GLIB(1.2.2,,AC_MSG_ERROR([*** GLIB >= 1.2.2 not installed - please install first ***])) +AM_PATH_GTK(1.2.2,,AC_MSG_ERROR([*** GTK+ >= 1.2.2 not installed - please install first ***]),gthread) + + +PKG_CHECK_MODULES(LIBPROJECTM, libprojectM >= 0.0.0, [libprjM="yes"], [libprjM="no"]) +if test x$libprjM = xno; then + AC_MSG_ERROR([*** libprojectM not found. + libprojectM is needed to build this package. + You can download libprojectM at http://xmms-projectM.sf.net/]) +fi +AC_SUBST(LIBPROJECTM_LIBS) +AC_SUBST(LIBPROJECTM_CFLAGS) + +PKG_CHECK_MODULES(FTGL, ftgl >= 2.0.0, [libft="yes"], [libft="no"]) +if test x$libft = xno; then + AC_MSG_ERROR([*** ftgl not found. + libftgl is needed to build this package./]) +fi +AC_SUBST(FTGL_LIBS) +AC_SUBST(FTGL_CFLAGS) + +# define some paths macros about libprojectM +AC_DEFINE_UNQUOTED([PROJECTM_SYSCONFDIR],"`pkg-config --variable=sysconfdir libprojectM`",[libprojectM configuration dir]) +AC_DEFINE_UNQUOTED([PROJECTM_DATADIR],"`pkg-config --variable=pkgdatadir libprojectM`",[libprojectM data dir]) + +AC_PATH_PROG(SDL_CONFIG, [sdl-config], [no]) +if test x$SDL_CONFIG = xno ; then + AC_MSG_ERROR([ +*** sdl-config not found. +*** If you have installed from binaries, probably you have not +*** installed SDL development package. +*** See http://www.libsdl.org +]) +fi +AM_PATH_SDL(1.2.5, , AC_MSG_ERROR([*** SDL >= 1.2.5 not installed - please install first ***])) + +AC_PATH_PROG(XMMS_CONFIG, [xmms-config], [no]) +if test x$XMMS_CONFIG = xno ; then + AC_MSG_ERROR([ +*** xmms-config not found. +*** If you have installed from binaries, probably you have not +*** installed XMMS development package. +*** See http://www.xmms.org +]) +fi +AM_PATH_XMMS(1.2.0,,AC_MSG_ERROR([*** XMMS >= 1.0.0 not installed - please install first])) + +XMMS_PLUGIN_DIR="$prefix/lib/xmms" +XMMS_VISUALIZATION_PLUGIN_DIR="$XMMS_PLUGIN_DIR/Visualization" +AC_SUBST(XMMS_VISUALIZATION_PLUGIN_DIR) + +# Internationalization +ALL_LINGUAS="es es_AR pt_BR nl fr ru" +GETTEXT_PACKAGE=xmms-projectM +AC_SUBST(GETTEXT_PACKAGE) +AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [GETTEXT package name]) +AM_GLIB_GNU_GETTEXT + +# +# Build paramaters +# + +DEBUG_CFLAGS="" + +AC_ARG_ENABLE([profiling], + AC_HELP_STRING([--enable-profiling], + [Enable emision of profile data to be used by gprof @<:@default=disabled@:>@]), + [profiling=$enableval], + [profiling=no]) +AC_MSG_CHECKING([wheter to enable profiling]) +if test x$profiling = xyes; then + AC_MSG_RESULT([yes]) + DEBUG_CFLAGS="$DEBUG_CFLAGS -pg" +else + AC_MSG_RESULT([no]) +fi + +AC_ARG_ENABLE([debug], + AC_HELP_STRING([--enable-debug], + [Enable debug @<:@default=disabled@:>@]), + [debug=$enableval], + [debug=no]) +AC_MSG_CHECKING([whether to enable debug]) +if test "$debug" = yes; then + AC_MSG_RESULT([yes]) + DEBUG_CFLAGS="$DEBUG_CFLAGS -ggdb3" + DEBUG_CFLAGS="$DEBUG_CFLAGS -Wall -Wmissing-braces -Wimplicit -Wunused" + DEBUG_CFLAGS="$DEBUG_CFLAGS -Wmissing-prototypes -Wno-unused-variable" +else + AC_MSG_RESULT([no]) +fi +AC_SUBST(DEBUG_CFLAGS) + +AC_ARG_ENABLE([extra-optimization], + AC_HELP_STRING([--enable-extra-optimization], + [Enable extra optimizations @<:@default=disabled@:>@]), + [extra_opt=$enableval], + [extra_opt=no]) +AC_MSG_CHECKING([wheter to enable extra optimizations]) +if test x$extra_opt = xyes; then + AC_MSG_RESULT([yes]) + OPT_CFLAGS="-O3 -fexpensive-optimizations" +else + AC_MSG_RESULT([no]) + if test x$debug = xyes; then + OPT_CFLAGS="-O0" + else + OPT_CFLAGS="" + fi +fi +AC_SUBST(OPT_CFLAGS) + +AC_SUBST(CFLAGS, "${CFLAGS} ${DEBUG_CFLAGS} ${OPT_CFLAGS}") + +# cflags, ld flags +libs_dynamic_loader="-ldl" +AC_SUBST(LIBS_DYNAMIC_LOADER, "$libs_dynamic_loader") + +AC_SUBST(BUILD_INPUT, "$build_input") +AC_SUBST(BUILD_ACTOR, "$build_actor") + +AC_CONFIG_FILES([ + Makefile + ]) + +AC_OUTPUT + +echo " +===================================================================== +xmms-projectM, xmms plugin for projectM $VERSION +===================================================================== + +Packages found: + +opengl: : ${opengl} + +Build options: +prefix: : ${prefix} +source code location: : ${srcdir} +compiler: : ${CC} +cflags: : ${CFLAGS} +" + diff --git a/xmms-projectM-pbuffers/main.c b/xmms-projectM-pbuffers/main.c new file mode 100644 index 000000000..a4d8f5188 --- /dev/null +++ b/xmms-projectM-pbuffers/main.c @@ -0,0 +1,618 @@ +/* +projectM v0.99 - xmms-projectm.sourceforge.net +-------------------------------------------------- + +Lead Developers: Carmelo Piccione (cep@andrew.cmu.edu) & + Peter Sperl (peter@sperl.com) + +We have also been advised by some professors at CMU, namely Roger B. Dannenberg. +http://www-2.cs.cmu.edu/~rbd/ + +The inspiration for this program was Milkdrop by Ryan Geiss. Obviously. + +This code is distributed under the GPL. + + +THANKS FOR THE CODE!!! +------------------------------------------------- +The base for this program was andy@nobugs.org's XMMS plugin tutorial +http://www.xmms.org/docs/vis-plugin.html + +We used some FFT code by Takuya OOURA instead of XMMS' built-in fft code +fftsg.c - http://momonga.t.u-tokyo.ac.jp/~ooura/fft.html + +For font rendering we used GLF by Roman Podobedov +glf.c - http://astronomy.swin.edu.au/~pbourke/opengl/glf/ + +and some beat detection code was inspired by Frederic Patin @ +www.gamedev.net/reference/programming/features/beatdetection/ + +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include "xtoprojectm.h" + +#if HAVE_CONFIG_H +#include +#endif +#define CONFIG_FILE "/config" +#define PRESETS_DIR "/presets" +#define FONTS_DIR "/fonts" + + +// Forward declarations +static void projectM_xmms_init(void); +static void projectM_cleanup(void); +static void projectM_about(void); +static void projectM_configure(void); +static void projectM_playback_start(void); +static void projectM_playback_stop(void); +static void projectM_render_pcm(gint16 pcm_data[2][512]); +static void projectM_render_freq(gint16 pcm_data[2][256]); +void read_config(); +static void make_window(const char *name, int x, int y, int width, int height); +static void make_pbuffer(int width, int height); +static int current_time(void); +static void lock(void); +static void unlock(void); + +//extern preset_t * active_preset; + +// Callback functions +VisPlugin projectM_vtable = { + NULL, // Handle, filled in by xmms + NULL, // Filename, filled in by xmms + 0, // Session ID + "projectM v0.99", // description + 2, // # of PCM channels for render_pcm() + 0, // # of freq channels wanted for render_freq() + projectM_xmms_init, // Called when plugin is enabled + projectM_cleanup, // Called when plugin is disabled + projectM_about, // Show the about box + projectM_configure, // Show the configure box + NULL, // Called to disable plugin, filled in by xmms + projectM_playback_start, // Called when playback starts + projectM_playback_stop, // Called when playback stops + projectM_render_pcm, // Render the PCM data, must return quickly + projectM_render_freq // Render the freq data, must return quickly +}; + +// XMMS entry point +VisPlugin *get_vplugin_info(void) +{ + return &projectM_vtable; +} + + +static Display *dpy = NULL; +static Window win = 0; +static GLXPbuffer pbuf = 0; +static GLXContext ctx_win = NULL, + ctx_pbuf = NULL; + + pthread_t thread; + +projectM_t *globalPM = NULL; + +int maxsamples=512; + +int texsize=512; +int gx=32,gy=24; +int wvw=512,wvh=512; +int fvw=1024,fvh=768; +int fps=30, fullscreen=0; +char *disp; +// char *title; +int run=1; + +int disable_projectm(void) { + projectM_vtable.disable_plugin(&projectM_vtable); + return 0; +} + +void worker_func() +{ + + char projectM_data[PATH_MAX]; + char *dpyName = NULL; + GLboolean printInfo = GL_FALSE; + run=1; + read_config(); + printf("texsize:%d\n",texsize); + /* parse arguments */ + + + /* open the display */ + dpy = XOpenDisplay(dpyName); + if (!dpy) { + printf("Error: couldn't open display %s\n", dpyName); + return -1; + } + + /* setup and initial window, pbuffer and texture */ + make_window("projectM 0.99", 0, 0, wvw,wvh); + + XMapWindow(dpy, win); + + if (printInfo) { + printf("GL_RENDERER = %s\n", (char *) glGetString(GL_RENDERER)); + printf("GL_VERSION = %s\n", (char *) glGetString(GL_VERSION)); + printf("GL_VENDOR = %s\n", (char *) glGetString(GL_VENDOR)); + printf("GL_EXTENSIONS = %s\n", (char *) glGetString(GL_EXTENSIONS)); + } + + make_pbuffer(texsize,texsize); + + glXMakeCurrent(dpy, win, ctx_win); + + + //glPixelStorei(GL_UNPACK_ALIGNMENT,1); + + + + /* stuff for pbuffer */ +#ifdef LINUX + glXMakeCurrent(dpy, pbuf, ctx_pbuf); + + //glPixelStorei(GL_UNPACK_ALIGNMENT,1); + glViewport( 0, 0, texsize, texsize ); + glClearColor(0,0,0,0); +#endif + + /** Initialise projectM */ + + globalPM = (projectM_t *)malloc( sizeof( projectM_t ) ); + + projectM_reset( globalPM ); + + globalPM->fullscreen = fullscreen; + globalPM->renderTarget->texsize = texsize; + globalPM->gx=gx; + globalPM->gy=gy; + globalPM->fps=fps; + + globalPM->renderTarget->usePbuffers = 1; + globalPM->renderTarget->unlock_func = &unlock; + globalPM->renderTarget->lock_func = &lock; + + strcpy(projectM_data, PROJECTM_DATADIR); + strcpy(projectM_data+strlen(PROJECTM_DATADIR), FONTS_DIR); + projectM_data[strlen(PROJECTM_DATADIR)+strlen(FONTS_DIR)]='\0'; + + globalPM->fontURL = (char *)malloc( sizeof( char ) * 512 ); + strcpy( globalPM->fontURL, projectM_data ); + + strcpy(projectM_data+strlen(PROJECTM_DATADIR), PRESETS_DIR); + projectM_data[strlen(PROJECTM_DATADIR)+strlen(PRESETS_DIR)]='\0'; + + globalPM->presetURL = (char *)malloc( sizeof( char ) * 512 ); + strcpy( globalPM->presetURL, projectM_data ); + + + projectM_init( globalPM ); + + projectM_resetGL( globalPM, wvw, wvh ); + + /** Initialise the thread */ + + + while ( run ) { + projectMEvent evt; + projectMKeycode key; + projectMModifier mod; + + + while (XPending(dpy) > 0) { + XEvent event; + XNextEvent(dpy, &event); + + evt = x2pmEvent( event ); + key = x2pmKeycode( XLookupKeysym(&event.xkey, 0) ); + mod = x2pmModifier(0 ); + + switch (evt) { + + case PROJECTM_VIDEORESIZE: + glXMakeCurrent(dpy, win, ctx_win); + projectM_resetGL(globalPM,event.xconfigure.width, event.xconfigure.height); + break; + case PROJECTM_VIDEOQUIT: + if (!strcmp( XGetAtomName( dpy, event.xclient.message_type ), "WM_PROTOCOLS" ) ) + { (void) gtk_idle_add (disable_projectm, NULL);} + + break; + case PROJECTM_KEYDOWN: + + key_handler(globalPM,evt,key,mod); + break; + + default: + break; + + } + } + + /* next frame */ + + + //drawGears(); + + renderFrame( globalPM ); + + glXSwapBuffers(dpy, win); + + } + + + + + + printf("Worker thread: Exiting\n"); + free(globalPM->presetURL); + free(globalPM->fontURL); + free(globalPM); + + glXDestroyContext(dpy, ctx_win); + XDestroyWindow(dpy, win); + + glXDestroyContext(dpy, ctx_pbuf); + glXDestroyPbuffer(dpy, pbuf); + + XCloseDisplay(dpy); + + +} + +static void projectM_xmms_init(void) +{ + + int iret; + + printf("projectM plugin: Initializing\n"); + // run=1; + iret = pthread_create( &thread, NULL, worker_func, NULL); + +} + + + +static void projectM_cleanup(void) +{ + + //free(pcmdataL); + //free(pcmdataR); + // free(title); + run=0; + pthread_join( thread, NULL); +// printf("killed thread\n"); + + + + printf("projectM plugin: Cleanup completed\n"); +} +static void projectM_about(void) +{ + printf("projectM plugin: About\n"); +} +static void projectM_configure(void) +{ + printf("projectM plugin: Configure\n"); +} +static void projectM_playback_start(void) +{//thread_control = GO; + printf("projectM plugin: Playback starting\n"); +} +static void projectM_playback_stop(void) +{//thread_control = STOP; + printf("projectM plugin: Playback stopping\n"); +} +static void projectM_render_pcm(gint16 pcm_data[2][512]) +{ + + addPCM16Data(pcm_data,512); + +} + +static void projectM_render_freq(gint16 freq_data[2][256]) +{ + printf("NO GOOD\n"); + } + + + +/* + * Create an RGBA, double-buffered window. + */ + +static void make_window(const char *name, int x, int y, int width, int height) +{ + int attrib[] = { GLX_RGBA, + GLX_RED_SIZE, 1, + GLX_GREEN_SIZE, 1, + GLX_BLUE_SIZE, 1, + GLX_DOUBLEBUFFER, + GLX_DEPTH_SIZE, 1, + None }; + int scrnum; + XSetWindowAttributes attr; + unsigned long mask; + Window root; + XVisualInfo *visinfo; + Atom wm_delete; + + scrnum = DefaultScreen( dpy ); + root = RootWindow( dpy, scrnum ); + + visinfo = glXChooseVisual( dpy, scrnum, attrib ); + if (!visinfo) { + printf("Error: couldn't get an RGBA, Double-buffered visual\n"); + exit(1); + } + + /* window attributes */ + attr.background_pixel = 0; + attr.border_pixel = 0; + attr.colormap = XCreateColormap( dpy, root, visinfo->visual, AllocNone); + attr.event_mask = StructureNotifyMask | ExposureMask | KeyPressMask; + mask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; + + win = XCreateWindow( dpy, root, 0, 0, width, height, + 0, visinfo->depth, InputOutput, + visinfo->visual, mask, &attr ); + + /* set hints and properties */ + { + XSizeHints sizehints; + sizehints.x = x; + sizehints.y = y; + sizehints.width = width; + sizehints.height = height; + sizehints.flags = USSize | USPosition; + XSetNormalHints(dpy, win, &sizehints); + XSetStandardProperties(dpy, win, name, name, + None, (char **)NULL, 0, &sizehints); + } + + wm_delete = XInternAtom( dpy, "WM_DELETE_WINDOW", 1 ); + XSetWMProtocols( dpy, win, &wm_delete, 1 ); + + + ctx_win = glXCreateContext( dpy, visinfo, NULL, GL_TRUE ); + if (!ctx_win) { + printf("Error: glXCreateContext failed\n"); + exit(1); + } + + XFree(visinfo); + + glXMakeCurrent(dpy, win, ctx_win); + + +} + +/* + * Create an RGBA, double-buffered pbuffer. + */ +static void make_pbuffer(int width, int height) +{ + int scrnum; + GLXFBConfig *fbconfig; + XVisualInfo *visinfo; + int nitems; + + int attrib[] = { + GLX_DOUBLEBUFFER, False, + GLX_RED_SIZE, 1, + GLX_GREEN_SIZE, 1, + GLX_BLUE_SIZE, 1, + GLX_DEPTH_SIZE, 1, + GLX_RENDER_TYPE, GLX_RGBA_BIT, + GLX_DRAWABLE_TYPE, GLX_PBUFFER_BIT | GLX_WINDOW_BIT, + None + }; + int pbufAttrib[] = { + GLX_PBUFFER_WIDTH, width, + GLX_PBUFFER_HEIGHT, height, + GLX_LARGEST_PBUFFER, False, + None + }; + + + scrnum = DefaultScreen( dpy ); + + fbconfig = glXChooseFBConfig(dpy, + scrnum, + attrib, + &nitems); + if (NULL == fbconfig) { + fprintf(stderr,"Error: couldn't get fbconfig\n"); + exit(1); + } + + pbuf = glXCreatePbuffer(dpy, fbconfig[0], pbufAttrib); + + visinfo = glXGetVisualFromFBConfig(dpy, fbconfig[0]); + if (!visinfo) { + fprintf(stderr, "Error: couldn't get an RGBA, double-buffered visual\n"); + exit(1); + } + + ctx_pbuf = glXCreateContext( dpy, visinfo, ctx_win, GL_TRUE ); + if (!ctx_pbuf) { + fprintf(stderr, "Error: glXCreateContext failed\n"); + exit(1); + } + + XFree(fbconfig); + XFree(visinfo); +} + +static int +current_time(void) +{ + struct timeval tv; + struct timezone tz; + (void) gettimeofday(&tv, &tz); + return (int) tv.tv_sec; +} + +static void lock(void) +{ + glXMakeCurrent(dpy, pbuf, ctx_pbuf); + + + + //PASS1 + + +} + + +static void unlock(void) +{ + + + glXMakeCurrent(dpy, win, ctx_win); + + +} + +void read_config() +{ + + int n; + + char num[80]; + FILE *in; + FILE *out; + + char* home; + char projectM_home[PATH_MAX]; + char projectM_config[PATH_MAX]; + + strcpy(projectM_config, PROJECTM_DATADIR); + strcpy(projectM_config+strlen(PROJECTM_DATADIR), CONFIG_FILE); + projectM_config[strlen(PROJECTM_DATADIR)+strlen(CONFIG_FILE)]='\0'; + + home=getenv("HOME"); + strcpy(projectM_home, home); + strcpy(projectM_home+strlen(home), "/.projectM/config"); + projectM_home[strlen(home)+strlen("/.projectM/config")]='\0'; + + + if ((in = fopen(projectM_home, "r")) != 0) + { + printf("reading ~/.projectM/config \n"); + } + else + { + printf("trying to create ~/.projectM/config \n"); + + strcpy(projectM_home, home); + strcpy(projectM_home+strlen(home), "/.projectM"); + projectM_home[strlen(home)+strlen("/.projectM")]='\0'; + mkdir(projectM_home,0755); + + strcpy(projectM_home, home); + strcpy(projectM_home+strlen(home), "/.projectM/config"); + projectM_home[strlen(home)+strlen("/.projectM/config")]='\0'; + + if((out = fopen(projectM_home,"w"))!=0) + { + + if ((in = fopen(projectM_config, "r")) != 0) + { + + while(fgets(num,80,in)!=NULL) + { + fputs(num,out); + } + fclose(in); + fclose(out); + + + if ((in = fopen(projectM_home, "r")) != 0) + { printf("created ~/.projectM/config successfully\n"); } + else{printf("This shouldn't happen, using implementation defualts\n");return;} + } + else{printf("Cannot find projectM default config, using implementation defaults\n");return;} + } + else + { + printf("Cannot create ~/.projectM/config, using default config file\n"); + if ((in = fopen(projectM_config, "r")) != 0) + { printf("Successfully opened default config file\n");} + else{ printf("Using implementation defaults, your system is really messed up, I'm suprised we even got this far\n"); return;} + + } + + } + + + + fgets(num, 80, in); fgets(num, 80, in); fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &texsize); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &gx); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &gy); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &wvw); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &wvh); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &fvw); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &fvh); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &fps); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &fullscreen); + /* + fgets(num, 80, in); + fgets(num, 80, in); + + n=0; + while (num[n]!=' ' && num[n]!='\n' && n < 80 && num[n]!=EOF) + { + disp[n]=num[n]; + n++; + } + disp[n]=0; + + + // sprintf(disp,"%s",num ); + setenv("DISPLAY",disp,1); + printf("%s %d\n", disp,strlen(disp)); + setenv("LD_PRELOAD", "/usr/lib/tls/libGL.so.1.0.4496", 1); + */ + fclose(in); + +} diff --git a/xmms-projectM-pbuffers/xtoprojectm.h b/xmms-projectM-pbuffers/xtoprojectm.h new file mode 100644 index 000000000..f523f8471 --- /dev/null +++ b/xmms-projectM-pbuffers/xtoprojectm.h @@ -0,0 +1,140 @@ +/** + * $Id: xtoprojectM.h,v 1.1 2004/10/08 00:35:28 cvs Exp $ + * + * Translates X -> projectM variables + * + * $Log: xtoprojectM.h,v $ + * Revision 1.1 2004/10/08 00:35:28 cvs + * Moved and imported + * + * Revision 1.1.1.1 2004/10/04 12:56:00 cvs + * Imported + * + */ + +#ifndef _XTOPROJECTM_H +#define _XTOPROJECTM_H + +#include +#include + + +projectMEvent x2pmEvent( XEvent event ) { \ + + switch ( event.type ) { \ + case ConfigureNotify: + return PROJECTM_VIDEORESIZE; + case ClientMessage: + return PROJECTM_VIDEOQUIT; + case KeyPress: + return PROJECTM_KEYDOWN; + default: + return PROJECTM_NONE; + } \ + } \ + +projectMKeycode x2pmKeycode( int keysym ) { \ + switch ( keysym ) { \ + case XK_F1: \ + return PROJECTM_K_F1; \ + case XK_F2: \ + return PROJECTM_K_F2; \ + case XK_F3: \ + return PROJECTM_K_F3; \ + case XK_F4: \ + return PROJECTM_K_F4; \ + case XK_F5: \ + return PROJECTM_K_F5; \ + case XK_F6: \ + return PROJECTM_K_F6; \ + case XK_F7: \ + return PROJECTM_K_F7; \ + case XK_F8: \ + return PROJECTM_K_F8; \ + case XK_F9: \ + return PROJECTM_K_F9; \ + case XK_F10: \ + return PROJECTM_K_F10; \ + case XK_F11: \ + return PROJECTM_K_F11; \ + case XK_F12: \ + return PROJECTM_K_F12; \ + case XK_Escape: \ + return PROJECTM_K_ESCAPE; + case XK_a: + return PROJECTM_K_a; + case XK_b: + return PROJECTM_K_b; + case XK_c: + return PROJECTM_K_c; + case XK_d: + return PROJECTM_K_d; + case XK_e: + return PROJECTM_K_e; + case XK_f: + return PROJECTM_K_f; + case XK_g: + return PROJECTM_K_g; + case XK_h: + return PROJECTM_K_h; + case XK_i: + return PROJECTM_K_i; + case XK_j: + return PROJECTM_K_j; + case XK_k: + return PROJECTM_K_k; + case XK_l: + return PROJECTM_K_l; + case XK_m: + return PROJECTM_K_m; + case XK_n: + return PROJECTM_K_n; + case XK_o: + return PROJECTM_K_o; + case XK_p: + return PROJECTM_K_p; + case XK_q: + return PROJECTM_K_q; + case XK_r: + return PROJECTM_K_r; + case XK_s: + return PROJECTM_K_s; + case XK_t: + return PROJECTM_K_t; + case XK_u: + return PROJECTM_K_u; + case XK_v: + return PROJECTM_K_v; + case XK_w: + return PROJECTM_K_w; + case XK_x: + return PROJECTM_K_x; + case XK_y: + return PROJECTM_K_y; + case XK_z: + return PROJECTM_K_z; + case XK_Up: + return PROJECTM_K_UP; + case XK_Return: + return PROJECTM_K_RETURN; + case XK_Right: + return PROJECTM_K_RIGHT; + case XK_Left: + return PROJECTM_K_LEFT; + case XK_Down: + return PROJECTM_K_DOWN; + case XK_Page_Up: + return PROJECTM_K_PAGEUP; + case XK_Page_Down: + return PROJECTM_K_PAGEDOWN; + + default: \ + return PROJECTM_K_NONE; \ + } \ + } \ + +projectMModifier x2pmModifier( int mod ) { + return XK_Shift_L; + } \ + +#endif diff --git a/xmms-projectM/AUTHORS b/xmms-projectM/AUTHORS new file mode 100644 index 000000000..e69de29bb diff --git a/xmms-projectM/COPYING b/xmms-projectM/COPYING new file mode 100644 index 000000000..d60c31a97 --- /dev/null +++ b/xmms-projectM/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/xmms-projectM/ChangeLog b/xmms-projectM/ChangeLog new file mode 100644 index 000000000..74e0f12e3 --- /dev/null +++ b/xmms-projectM/ChangeLog @@ -0,0 +1 @@ +! \ No newline at end of file diff --git a/xmms-projectM/INSTALL b/xmms-projectM/INSTALL new file mode 100644 index 000000000..a4b34144d --- /dev/null +++ b/xmms-projectM/INSTALL @@ -0,0 +1,229 @@ +Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software +Foundation, Inc. + + This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. (Caching is +disabled by default to prevent problems with accidental use of stale +cache files.) + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You only need +`configure.ac' if you want to change it or regenerate `configure' using +a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a +time in the source code directory. After you have installed the +package for one architecture, use `make distclean' before reconfiguring +for another architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the `--target=TYPE' option to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +will cause the specified gcc to be used as the C compiler (unless it is +overridden in the site shell script). + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/xmms-projectM/Makefile.am b/xmms-projectM/Makefile.am new file mode 100644 index 000000000..3f138d70e --- /dev/null +++ b/xmms-projectM/Makefile.am @@ -0,0 +1,8 @@ +lib_LTLIBRARIES = libprojectm_xmms.la + +libdir = @XMMS_VISUALIZATION_PLUGIN_DIR@ + +AM_CFLAGS = -Wall @XMMS_CFLAGS@ -I$(top_builddir) -I$(top_srcdir) @SDL_CFLAGS@ +LIBS = @XMMS_LIBS@ @SDL_LIBS@ @GL_LIBS@ @FTGL_LIBS@ -lprojectM -lGL -lGLU +libprojectm_xmms_la_LDFLAGS = -module -avoid-version +libprojectm_xmms_la_SOURCES = main.c video_init.h video_init.c sdltoprojectm.h diff --git a/xmms-projectM/NEWS b/xmms-projectM/NEWS new file mode 100644 index 000000000..e69de29bb diff --git a/xmms-projectM/README b/xmms-projectM/README new file mode 100644 index 000000000..c6b6a8006 --- /dev/null +++ b/xmms-projectM/README @@ -0,0 +1,54 @@ +PROJECTM README FILE +-------------------------------- + +QUICK OVERVIEW +---------------------- +projectM started initially as a reimplementation of the Win32/DirectX based music visualizer Milkdrop under Linux/SDL/OpenGl/XMMS. +It currently supports up to Milkdrop 1.04b presets, but there are some bugs with certain presets containing 1.04 features This project +is 100% GPL'ed - feel free to use the code for whatever. + +INSTALL +---------------------------- + +[1] Install libprojectM + +[2] Install xmms-projectM + +If you haven't already, download the latest tarball release from http://xmms-projectm.sourceforge.net. + +Then run + +sh> ./configure + +followed by + +sh> make + +and as root + +sh> make install + +This will install projectM into XMMS's Visualization plugin directory. projectM's configuration +files, including the default packaged presets are in $prefix/share/projectM. + +Enable projectM by loading XMMS and pressing CTRL-v. This will bring up the vis plugin menu. Highlight +projectM in the list (if it's not there something went wrong during installation), and click the enable +button. Sit back and enjoy the trippy visuals... + +CONFIGURE +---------- + +edit ~/.projectM/config + + +CREDIT / CONTACT +------------------ + +Main Developers: + +Carmelo Piccione: w1z7ard@sourceforge.net +Peter Sperl: psperl@sourceforge.net + + + + diff --git a/xmms-projectM/autogen.sh b/xmms-projectM/autogen.sh new file mode 100755 index 000000000..19fc2c77f --- /dev/null +++ b/xmms-projectM/autogen.sh @@ -0,0 +1,5 @@ +#!/bin/sh +aclocal -I m4 +libtoolize --force +autoconf +automake -a diff --git a/xmms-projectM/config.h.in b/xmms-projectM/config.h.in new file mode 100644 index 000000000..a21f4cd05 --- /dev/null +++ b/xmms-projectM/config.h.in @@ -0,0 +1,110 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* always defined to indicate that i18n is enabled */ +#undef ENABLE_NLS + +/* GETTEXT package name */ +#undef GETTEXT_PACKAGE + +/* Use the Apple OpenGL framework. */ +#undef HAVE_APPLE_OPENGL_FRAMEWORK + +/* Define to 1 if you have the `bind_textdomain_codeset' function. */ +#undef HAVE_BIND_TEXTDOMAIN_CODESET + +/* Define to 1 if you have the `dcgettext' function. */ +#undef HAVE_DCGETTEXT + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define if the GNU gettext() function is already present or preinstalled. */ +#undef HAVE_GETTEXT + +/* Define to 1 if you have the header file. */ +#undef HAVE_GL_GLU_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_GL_GLX_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_GL_GL_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define if your file defines LC_MESSAGES. */ +#undef HAVE_LC_MESSAGES + +/* Define to 1 if you have the header file. */ +#undef HAVE_LOCALE_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define if you have POSIX threads libraries and header files. */ +#undef HAVE_PTHREAD + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_WINDOWS_H + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* libprojectM data dir */ +#undef PROJECTM_DATADIR + +/* Define to necessary symbol if this constant uses a non-standard name on + your system. */ +#undef PTHREAD_CREATE_JOINABLE + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif diff --git a/xmms-projectM/configure.ac b/xmms-projectM/configure.ac new file mode 100644 index 000000000..d36ced233 --- /dev/null +++ b/xmms-projectM/configure.ac @@ -0,0 +1,186 @@ +# Process this file with autoconf to produce a configure script. + +AC_PREREQ(2.57) +AC_INIT(projectM XMMS plugin, 0.98, none , xmms-projectM) +AM_INIT_AUTOMAKE([1.7.0 dist-bzip2]) + +AC_CONFIG_SRCDIR([config.h.in]) +AC_CONFIG_HEADER([config.h]) + +AC_PREFIX_DEFAULT(/usr) +AC_PREFIX_PROGRAM(xmms) + +# Checks for programs. +AC_PROG_CC +AC_PROG_LN_S + +AC_DISABLE_STATIC +AC_PROG_LIBTOOL + +AX_CHECK_GL + +AC_PATH_PROG(PKG_CONFIG, [pkg-config], [no]) +if test x$PKG_CONFIG = xno ; then + AC_MSG_ERROR([*** pkg-config not found. See http://www.freedesktop.org/software/pkgconfig/]) +fi +if $PKG_CONFIG --atleast-pkgconfig-version 0.14 ; then + : +else + AC_MSG_ERROR([*** pkg-config too old; version 0.14 or better required.]) +fi + +# Checks for header files. +AC_CHECK_HEADERS([unistd.h]) +AC_CHECK_HEADERS([GL/gl.h GL/glx.h GL/glu.h],opengl="yes",opengl="no") +if test x"$opengl" = xno; then + AC_MSG_ERROR([OpenGL and Glu headers not found, the plugin cannot be build]) +fi + +# Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_C_INLINE # reserved for future + +# Check for libraries +AM_PATH_GLIB(1.2.2,,AC_MSG_ERROR([*** GLIB >= 1.2.2 not installed - please install first ***])) +AM_PATH_GTK(1.2.2,,AC_MSG_ERROR([*** GTK+ >= 1.2.2 not installed - please install first ***]),gthread) + + +PKG_CHECK_MODULES(LIBPROJECTM, libprojectM >= 0.0.0, [libprjM="yes"], [libprjM="no"]) +if test x$libprjM = xno; then + AC_MSG_ERROR([*** libprojectM not found. + libprojectM is needed to build this package. + You can download libprojectM at http://xmms-projectM.sf.net/]) +fi +AC_SUBST(LIBPROJECTM_LIBS) +AC_SUBST(LIBPROJECTM_CFLAGS) + +PKG_CHECK_MODULES(FTGL, ftgl >= 2.0.0, [libft="yes"], [libft="no"]) +if test x$libft = xno; then + AC_MSG_ERROR([*** ftgl not found. + libftgl is needed to build this package./]) +fi +AC_SUBST(FTGL_LIBS) +AC_SUBST(FTGL_CFLAGS) + +# define some paths macros about libprojectM +AC_DEFINE_UNQUOTED([PROJECTM_SYSCONFDIR],"`pkg-config --variable=sysconfdir libprojectM`",[libprojectM configuration dir]) +AC_DEFINE_UNQUOTED([PROJECTM_DATADIR],"`pkg-config --variable=pkgdatadir libprojectM`",[libprojectM data dir]) + +AC_PATH_PROG(SDL_CONFIG, [sdl-config], [no]) +if test x$SDL_CONFIG = xno ; then + AC_MSG_ERROR([ +*** sdl-config not found. +*** If you have installed from binaries, probably you have not +*** installed SDL development package. +*** See http://www.libsdl.org +]) +fi +AM_PATH_SDL(1.2.5, , AC_MSG_ERROR([*** SDL >= 1.2.5 not installed - please install first ***])) + +AC_PATH_PROG(XMMS_CONFIG, [xmms-config], [no]) +if test x$XMMS_CONFIG = xno ; then + AC_MSG_ERROR([ +*** xmms-config not found. +*** If you have installed from binaries, probably you have not +*** installed XMMS development package. +*** See http://www.xmms.org +]) +fi +AM_PATH_XMMS(1.2.0,,AC_MSG_ERROR([*** XMMS >= 1.0.0 not installed - please install first])) + +XMMS_PLUGIN_DIR="$prefix/lib/xmms" +XMMS_VISUALIZATION_PLUGIN_DIR="$XMMS_PLUGIN_DIR/Visualization" +AC_SUBST(XMMS_VISUALIZATION_PLUGIN_DIR) + +# Internationalization +ALL_LINGUAS="es es_AR pt_BR nl fr ru" +GETTEXT_PACKAGE=xmms-projectM +AC_SUBST(GETTEXT_PACKAGE) +AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [GETTEXT package name]) +AM_GLIB_GNU_GETTEXT + +# +# Build paramaters +# + +DEBUG_CFLAGS="" + +AC_ARG_ENABLE([profiling], + AC_HELP_STRING([--enable-profiling], + [Enable emision of profile data to be used by gprof @<:@default=disabled@:>@]), + [profiling=$enableval], + [profiling=no]) +AC_MSG_CHECKING([wheter to enable profiling]) +if test x$profiling = xyes; then + AC_MSG_RESULT([yes]) + DEBUG_CFLAGS="$DEBUG_CFLAGS -pg" +else + AC_MSG_RESULT([no]) +fi + +AC_ARG_ENABLE([debug], + AC_HELP_STRING([--enable-debug], + [Enable debug @<:@default=disabled@:>@]), + [debug=$enableval], + [debug=no]) +AC_MSG_CHECKING([whether to enable debug]) +if test "$debug" = yes; then + AC_MSG_RESULT([yes]) + DEBUG_CFLAGS="$DEBUG_CFLAGS -ggdb3" + DEBUG_CFLAGS="$DEBUG_CFLAGS -Wall -Wmissing-braces -Wimplicit -Wunused" + DEBUG_CFLAGS="$DEBUG_CFLAGS -Wmissing-prototypes -Wno-unused-variable" +else + AC_MSG_RESULT([no]) +fi +AC_SUBST(DEBUG_CFLAGS) + +AC_ARG_ENABLE([extra-optimization], + AC_HELP_STRING([--enable-extra-optimization], + [Enable extra optimizations @<:@default=disabled@:>@]), + [extra_opt=$enableval], + [extra_opt=no]) +AC_MSG_CHECKING([wheter to enable extra optimizations]) +if test x$extra_opt = xyes; then + AC_MSG_RESULT([yes]) + OPT_CFLAGS="-O3 -fexpensive-optimizations" +else + AC_MSG_RESULT([no]) + if test x$debug = xyes; then + OPT_CFLAGS="-O0" + else + OPT_CFLAGS="" + fi +fi +AC_SUBST(OPT_CFLAGS) + +AC_SUBST(CFLAGS, "${CFLAGS} ${DEBUG_CFLAGS} ${OPT_CFLAGS}") + +# cflags, ld flags +libs_dynamic_loader="-ldl" +AC_SUBST(LIBS_DYNAMIC_LOADER, "$libs_dynamic_loader") + +AC_SUBST(BUILD_INPUT, "$build_input") +AC_SUBST(BUILD_ACTOR, "$build_actor") + +AC_CONFIG_FILES([ + Makefile + ]) + +AC_OUTPUT + +echo " +===================================================================== +xmms-projectM, xmms plugin for projectM $VERSION +===================================================================== + +Packages found: + +opengl: : ${opengl} + +Build options: +prefix: : ${prefix} +source code location: : ${srcdir} +compiler: : ${CC} +cflags: : ${CFLAGS} +" + diff --git a/xmms-projectM/m4/acx_pthread.m4 b/xmms-projectM/m4/acx_pthread.m4 new file mode 100644 index 000000000..06af84275 --- /dev/null +++ b/xmms-projectM/m4/acx_pthread.m4 @@ -0,0 +1,238 @@ +dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]]) +dnl +dnl @summary figure out how to build C programs using POSIX threads +dnl +dnl This macro figures out how to build C programs using POSIX threads. +dnl It sets the PTHREAD_LIBS output variable to the threads library and +dnl linker flags, and the PTHREAD_CFLAGS output variable to any special +dnl C compiler flags that are needed. (The user can also force certain +dnl compiler flags/libs to be tested by setting these environment +dnl variables.) +dnl +dnl Also sets PTHREAD_CC to any special C compiler that is needed for +dnl multi-threaded programs (defaults to the value of CC otherwise). +dnl (This is necessary on AIX to use the special cc_r compiler alias.) +dnl +dnl NOTE: You are assumed to not only compile your program with these +dnl flags, but also link it with them as well. e.g. you should link +dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS +dnl $LIBS +dnl +dnl If you are only building threads programs, you may wish to use +dnl these variables in your default LIBS, CFLAGS, and CC: +dnl +dnl LIBS="$PTHREAD_LIBS $LIBS" +dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS" +dnl CC="$PTHREAD_CC" +dnl +dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute +dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to +dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX). +dnl +dnl ACTION-IF-FOUND is a list of shell commands to run if a threads +dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to +dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the +dnl default action will define HAVE_PTHREAD. +dnl +dnl Please let the authors know if this macro fails on any platform, or +dnl if you have any other suggestions or comments. This macro was based +dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with +dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros +dnl posted by Alejandro Forero Cuervo to the autoconf macro repository. +dnl We are also grateful for the helpful feedback of numerous users. +dnl +dnl @category InstalledPackages +dnl @author Steven G. Johnson +dnl @version 2005-06-15 +dnl @license GPLWithACException + +AC_DEFUN([ACX_PTHREAD], [ +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_LANG_SAVE +AC_LANG_C +acx_pthread_ok=no + +# We used to check for pthread.h first, but this fails if pthread.h +# requires special compiler flags (e.g. on True64 or Sequent). +# It gets checked for in the link test anyway. + +# First of all, check if the user has set any of the PTHREAD_LIBS, +# etcetera environment variables, and if threads linking works using +# them: +if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS]) + AC_TRY_LINK_FUNC(pthread_join, acx_pthread_ok=yes) + AC_MSG_RESULT($acx_pthread_ok) + if test x"$acx_pthread_ok" = xno; then + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" +fi + +# We must check for the threads library under a number of different +# names; the ordering is very important because some systems +# (e.g. DEC) have both -lpthread and -lpthreads, where one of the +# libraries is broken (non-POSIX). + +# Create a list of thread flags to try. Items starting with a "-" are +# C compiler flags, and other items are library names, except for "none" +# which indicates that we try without any flags at all, and "pthread-config" +# which is a program returning the flags for the Pth emulation library. + +acx_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config" + +# The ordering *is* (sometimes) important. Some notes on the +# individual items follow: + +# pthreads: AIX (must check this before -lpthread) +# none: in case threads are in libc; should be tried before -Kthread and +# other compiler flags to prevent continual compiler warnings +# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h) +# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able) +# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread) +# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads) +# -pthreads: Solaris/gcc +# -mthreads: Mingw32/gcc, Lynx/gcc +# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it +# doesn't hurt to check since this sometimes defines pthreads too; +# also defines -D_REENTRANT) +# ... -mt is also the pthreads flag for HP/aCC +# pthread: Linux, etcetera +# --thread-safe: KAI C++ +# pthread-config: use pthread-config program (for GNU Pth library) + +case "${host_cpu}-${host_os}" in + *solaris*) + + # On Solaris (at least, for some versions), libc contains stubbed + # (non-functional) versions of the pthreads routines, so link-based + # tests will erroneously succeed. (We need to link with -pthreads/-mt/ + # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather + # a function called by this macro, so we could check for that, but + # who knows whether they'll stub that too in a future libc.) So, + # we'll just look for -pthreads and -lpthread first: + + acx_pthread_flags="-pthreads pthread -mt -pthread $acx_pthread_flags" + ;; +esac + +if test x"$acx_pthread_ok" = xno; then +for flag in $acx_pthread_flags; do + + case $flag in + none) + AC_MSG_CHECKING([whether pthreads work without any flags]) + ;; + + -*) + AC_MSG_CHECKING([whether pthreads work with $flag]) + PTHREAD_CFLAGS="$flag" + ;; + + pthread-config) + AC_CHECK_PROG(acx_pthread_config, pthread-config, yes, no) + if test x"$acx_pthread_config" = xno; then continue; fi + PTHREAD_CFLAGS="`pthread-config --cflags`" + PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`" + ;; + + *) + AC_MSG_CHECKING([for the pthreads library -l$flag]) + PTHREAD_LIBS="-l$flag" + ;; + esac + + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="$PTHREAD_LIBS $LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Check for various functions. We must include pthread.h, + # since some functions may be macros. (On the Sequent, we + # need a special flag -Kthread to make this header compile.) + # We check for pthread_join because it is in -lpthread on IRIX + # while pthread_create is in libc. We check for pthread_attr_init + # due to DEC craziness with -lpthreads. We check for + # pthread_cleanup_push because it is one of the few pthread + # functions on Solaris that doesn't have a non-functional libc stub. + # We try pthread_create on general principles. + AC_TRY_LINK([#include ], + [pthread_t th; pthread_join(th, 0); + pthread_attr_init(0); pthread_cleanup_push(0, 0); + pthread_create(0,0,0,0); pthread_cleanup_pop(0); ], + [acx_pthread_ok=yes]) + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + AC_MSG_RESULT($acx_pthread_ok) + if test "x$acx_pthread_ok" = xyes; then + break; + fi + + PTHREAD_LIBS="" + PTHREAD_CFLAGS="" +done +fi + +# Various other checks: +if test "x$acx_pthread_ok" = xyes; then + save_LIBS="$LIBS" + LIBS="$PTHREAD_LIBS $LIBS" + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS" + + # Detect AIX lossage: JOINABLE attribute is called UNDETACHED. + AC_MSG_CHECKING([for joinable pthread attribute]) + attr_name=unknown + for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do + AC_TRY_LINK([#include ], [int attr=$attr; return attr;], + [attr_name=$attr; break]) + done + AC_MSG_RESULT($attr_name) + if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then + AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name, + [Define to necessary symbol if this constant + uses a non-standard name on your system.]) + fi + + AC_MSG_CHECKING([if more special flags are required for pthreads]) + flag=no + case "${host_cpu}-${host_os}" in + *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; + *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; + esac + AC_MSG_RESULT(${flag}) + if test "x$flag" != xno; then + PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS" + fi + + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + + # More AIX lossage: must compile with cc_r + AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC}) +else + PTHREAD_CC="$CC" +fi + +AC_SUBST(PTHREAD_LIBS) +AC_SUBST(PTHREAD_CFLAGS) +AC_SUBST(PTHREAD_CC) + +# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND: +if test x"$acx_pthread_ok" = xyes; then + ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1]) + : +else + acx_pthread_ok=no + $2 +fi +AC_LANG_RESTORE +])dnl ACX_PTHREAD diff --git a/xmms-projectM/m4/ax_check_gl.m4 b/xmms-projectM/m4/ax_check_gl.m4 new file mode 100644 index 000000000..08305c105 --- /dev/null +++ b/xmms-projectM/m4/ax_check_gl.m4 @@ -0,0 +1,95 @@ +dnl @synopsis AX_CHECK_GL +dnl +dnl Check for an OpenGL implementation. If GL is found, the required +dnl compiler and linker flags are included in the output variables +dnl "GL_CFLAGS" and "GL_LIBS", respectively. This macro adds the +dnl configure option "--with-apple-opengl-framework", which users can +dnl use to indicate that Apple's OpenGL framework should be used on Mac +dnl OS X. If Apple's OpenGL framework is used, the symbol +dnl "HAVE_APPLE_OPENGL_FRAMEWORK" is defined. If no GL implementation +dnl is found, "no_gl" is set to "yes". +dnl +dnl @category InstalledPackages +dnl @author Braden McDaniel +dnl @version 2004-11-15 +dnl @license AllPermissive + +AC_DEFUN([AX_CHECK_GL], +[AC_REQUIRE([AC_PATH_X])dnl +AC_REQUIRE([ACX_PTHREAD])dnl + +# +# There isn't a reliable way to know we should use the Apple OpenGL framework +# without a configure option. A Mac OS X user may have installed an +# alternative GL implementation (e.g., Mesa), which may or may not depend on X. +# +AC_ARG_WITH([apple-opengl-framework], + [AC_HELP_STRING([--with-apple-opengl-framework], + [use Apple OpenGL framework (Mac OS X only)])]) +if test "X$with_apple_opengl_framework" = "Xyes"; then + AC_DEFINE([HAVE_APPLE_OPENGL_FRAMEWORK], [1], + [Use the Apple OpenGL framework.]) + GL_LIBS="-framework OpenGL" +else + AC_LANG_PUSH(C) + + AX_LANG_COMPILER_MS + if test X$ax_compiler_ms = Xno; then + GL_CFLAGS="${PTHREAD_CFLAGS}" + GL_LIBS="${PTHREAD_LIBS} -lm" + fi + + # + # Use x_includes and x_libraries if they have been set (presumably by + # AC_PATH_X). + # + if test "X$no_x" != "Xyes"; then + if test -n "$x_includes"; then + GL_CFLAGS="-I${x_includes} ${GL_CFLAGS}" + fi + if test -n "$x_libraries"; then + GL_LIBS="-L${x_libraries} -lX11 ${GL_LIBS}" + fi + fi + + AC_CHECK_HEADERS([windows.h]) + + AC_CACHE_CHECK([for OpenGL library], [ax_cv_check_gl_libgl], + [ax_cv_check_gl_libgl="no" + ax_save_CPPFLAGS="${CPPFLAGS}" + CPPFLAGS="${GL_CFLAGS} ${CPPFLAGS}" + ax_save_LIBS="${LIBS}" + LIBS="" + ax_check_libs="-lopengl32 -lGL" + for ax_lib in ${ax_check_libs}; do + if test X$ax_compiler_ms = Xyes; then + ax_try_lib=`echo $ax_lib | sed -e 's/^-l//' -e 's/$/.lib/'` + else + ax_try_lib="${ax_lib}" + fi + LIBS="${ax_try_lib} ${GL_LIBS} ${ax_save_LIBS}" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM([[ +# if HAVE_WINDOWS_H && defined(_WIN32) +# include +# endif +# include ]], + [[glBegin(0)]])], + [ax_cv_check_gl_libgl="${ax_try_lib}"; break]) + done + LIBS=${ax_save_LIBS} + CPPFLAGS=${ax_save_CPPFLAGS}]) + + if test "X${ax_cv_check_gl_libgl}" = "Xno"; then + no_gl="yes" + GL_CFLAGS="" + GL_LIBS="" + else + GL_LIBS="${ax_cv_check_gl_libgl} ${GL_LIBS}" + fi + AC_LANG_POP(C) +fi + +AC_SUBST([GL_CFLAGS]) +AC_SUBST([GL_LIBS]) +])dnl diff --git a/xmms-projectM/m4/ax_lang_compiler_ms.m4 b/xmms-projectM/m4/ax_lang_compiler_ms.m4 new file mode 100644 index 000000000..2b3d5a816 --- /dev/null +++ b/xmms-projectM/m4/ax_lang_compiler_ms.m4 @@ -0,0 +1,23 @@ +dnl @synopsis AX_LANG_COMPILER_MS +dnl +dnl Check whether the compiler for the current language is Microsoft. +dnl +dnl This macro is modeled after _AC_LANG_COMPILER_GNU in the GNU +dnl Autoconf implementation. +dnl +dnl @category InstalledPackages +dnl @author Braden McDaniel +dnl @version 2004-11-15 +dnl @license AllPermissive + +AC_DEFUN([AX_LANG_COMPILER_MS], +[AC_CACHE_CHECK([whether we are using the Microsoft _AC_LANG compiler], + [ax_cv_[]_AC_LANG_ABBREV[]_compiler_ms], +[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [[#ifndef _MSC_VER + choke me +#endif +]])], + [ax_compiler_ms=yes], + [ax_compiler_ms=no]) +ax_cv_[]_AC_LANG_ABBREV[]_compiler_ms=$ax_compiler_ms +])]) diff --git a/xmms-projectM/main.c b/xmms-projectM/main.c new file mode 100644 index 000000000..ec824bba9 --- /dev/null +++ b/xmms-projectM/main.c @@ -0,0 +1,466 @@ +/* +xmms-projectM v0.99 - xmms-projectm.sourceforge.net +-------------------------------------------------- + +Lead Developers: Carmelo Piccione (cep@andrew.cmu.edu) & + Peter Sperl (peter@sperl.com) + +We have also been advised by some professors at CMU, namely Roger B. Dannenberg. +http://www-2.cs.cmu.edu/~rbd/ + +The inspiration for this program was Milkdrop by Ryan Geiss. Obviously. + +This code is distributed under the GPL. + + +THANKS FOR THE CODE!!! +------------------------------------------------- +The base for this program was andy@nobugs.org's XMMS plugin tutorial +http://www.xmms.org/docs/vis-plugin.html + +We used some FFT code by Takuya OOURA instead of XMMS' built-in fft code +fftsg.c - http://momonga.t.u-tokyo.ac.jp/~ooura/fft.html + +For font rendering we used GLF by Roman Podobedov +glf.c - http://astronomy.swin.edu.au/~pbourke/opengl/glf/ + +and some beat detection code was inspired by Frederic Patin @ +www.gamedev.net/reference/programming/features/beatdetection/ + +*/ + + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include "sdltoprojectM.h" +#include "video_init.h" + +#if HAVE_CONFIG_H +#include +#endif +#define CONFIG_FILE "/config" +#define PRESETS_DIR "/presets" +#define FONTS_DIR "/fonts" + +// Forward declarations +static void projectM_xmms_init(void); +static void projectM_cleanup(void); +static void projectM_about(void); +static void projectM_configure(void); +static void projectM_playback_start(void); +static void projectM_playback_stop(void); +static void projectM_render_pcm(gint16 pcm_data[2][512]); +static void projectM_render_freq(gint16 pcm_data[2][256]); +void read_config(); + + +//extern preset_t * active_preset; + +// Callback functions +VisPlugin projectM_vtable = { + NULL, // Handle, filled in by xmms + NULL, // Filename, filled in by xmms + 0, // Session ID + "projectM v0.99", // description + 2, // # of PCM channels for render_pcm() + 0, // # of freq channels wanted for render_freq() + projectM_xmms_init, // Called when plugin is enabled + projectM_cleanup, // Called when plugin is disabled + projectM_about, // Show the about box + projectM_configure, // Show the configure box + NULL, // Called to disable plugin, filled in by xmms + projectM_playback_start, // Called when playback starts + projectM_playback_stop, // Called when playback stops + projectM_render_pcm, // Render the PCM data, must return quickly + projectM_render_freq // Render the freq data, must return quickly +}; + +// XMMS entry point +VisPlugin *get_vplugin_info(void) +{ + return &projectM_vtable; +} + +// Our worker thread +SDL_Thread *worker_thread; + +SDL_mutex *mutex; + +SDL_sem *sem; + +SDL_Event event; + +SDL_Surface *screen; +//SDL_RenderTarget *RenderTarget = NULL; +//GLuint RenderTargetTextureID; + +projectM_t *globalPM = NULL; + +int maxsamples=512; + +int texsize=512; +int gx=32,gy=24; +int wvw=640,wvh=480; +int fvw=1280,fvh=960; +int fps=30, fullscreen=0; +char *disp; + +int disable_projectm(void) { + projectM_vtable.disable_plugin(&projectM_vtable); + return 0; +} + +int get_xmms_title(void) { + static char check_title = 1; + static int last_pos; + static char *last_title = NULL; + int pos; + char *title = NULL; + + //Nice optimization, but we want the title no matter what so I can display it when the song changes +#if 0 + if(!(globalPM->showtitle%2)) { + /* Repeat less often when not showing title */ + return 1000; + } +#endif + + pos = xmms_remote_get_playlist_pos(projectM_vtable.xmms_session); + /* Only check every 1 second for title change, otherwise check pos */ + if(check_title || pos != last_pos) { + title = xmms_remote_get_playlist_title( + projectM_vtable.xmms_session, pos); + if(title && (!last_title || strcmp(last_title,title))) { + globalPM->title = title; + globalPM->drawtitle = 1; + g_free(last_title); + last_title = title; + } else if(title && last_title != title) { + /* New copy of last title */ + g_free(title); + } + check_title = !check_title; + } + last_pos = pos; + /* Repeat every 500ms */ + return 500; +} + +void worker_func() +{ + char projectM_data[PATH_MAX]; + + SDL_TimerID title_timer = NULL; + + + read_config(); + + init_display(wvw,wvh,fullscreen); + + SDL_WM_SetCaption("projectM v0.99", "projectM v0.99"); + + + /** Initialise projectM */ + + globalPM = (projectM_t *)malloc( sizeof( projectM_t ) ); + + projectM_reset( globalPM ); + + globalPM->fullscreen = fullscreen; + globalPM->renderTarget->texsize = texsize; + globalPM->gx=gx; + globalPM->gy=gy; + globalPM->fps=fps; + globalPM->renderTarget->usePbuffers=0; + + strcpy(projectM_data, PROJECTM_DATADIR); + strcpy(projectM_data+strlen(PROJECTM_DATADIR), FONTS_DIR); + projectM_data[strlen(PROJECTM_DATADIR)+strlen(FONTS_DIR)]='\0'; + + globalPM->fontURL = (char *)malloc( sizeof( char ) * 512 ); + strcpy( globalPM->fontURL, projectM_data ); + + strcpy(projectM_data+strlen(PROJECTM_DATADIR), PRESETS_DIR); + projectM_data[strlen(PROJECTM_DATADIR)+strlen(PRESETS_DIR)]='\0'; + + globalPM->presetURL = (char *)malloc( sizeof( char ) * 512 ); + strcpy( globalPM->presetURL, projectM_data ); + + + projectM_init( globalPM ); + + projectM_resetGL( globalPM, wvw, wvh ); + + title_timer = SDL_AddTimer(500, get_xmms_title, NULL); + + /** Initialise the thread */ + + SDL_SemTryWait(sem); + while ( SDL_SemTryWait(sem) ) { + projectMEvent evt; + projectMKeycode key; + projectMModifier mod; + + /** Process SDL events */ + SDL_Event event; + while ( SDL_PollEvent( &event ) ) { + /** Translate into projectM codes and process */ + evt = sdl2pmEvent( event ); + key = sdl2pmKeycode( event.key.keysym.sym ); + mod = sdl2pmModifier( event.key.keysym.mod ); + + if ( evt == PROJECTM_KEYDOWN ) { + + + if(key == SDLK_f) + { + int w, h; + if (fullscreen == 0) { + w = fvw; + h = fvh; + } else { + w = wvw; + h = wvh; + } + globalPM->fullscreen = fullscreen ^= 1; + resize_display(w, h, fullscreen); + projectM_resetGL( globalPM, w, h ); + } + else key_handler(globalPM,evt,key,mod); + + } + else if ( evt == PROJECTM_VIDEORESIZE ) + { + wvw=event.resize.w; + wvh=event.resize.h; + resize_display(wvw, wvh, 0); + projectM_resetGL( globalPM, wvw, wvh ); + + } + else if ( evt == PROJECTM_VIDEOQUIT ) { + + (void) gtk_idle_add (disable_projectm, NULL); + /* if(quit_timer == NULL) + quit_timer = SDL_AddTimer(500, disable_projectm, NULL);*/ + } + + } + + + /** Render the new frame */ + + renderFrame( globalPM ); + + SDL_GL_SwapBuffers(); + } + + + + printf("Worker thread: Exiting\n"); + if(title_timer) SDL_RemoveTimer(title_timer); + g_free(globalPM->title); + free(globalPM->presetURL); + free(globalPM->fontURL); + free(globalPM); + close_display(); +} + +static void projectM_xmms_init(void) +{ + + printf("projectM plugin: Initializing\n"); + + SDL_EnableUNICODE(1); + + mutex = SDL_CreateMutex(); + + sem = SDL_CreateSemaphore(1); + + worker_thread = SDL_CreateThread ((void *) worker_func, NULL); + +} + + + +static void projectM_cleanup(void) +{ + + SDL_SemPost(sem); + SDL_WaitThread(worker_thread, NULL); + + SDL_DestroySemaphore(sem); + printf("Destroy Semaphore\n"); + SDL_DestroyMutex(mutex); + printf("Destroy Mutex\n"); + + printf("projectM plugin: Cleanup completed\n"); +} +static void projectM_about(void) +{ + printf("projectM plugin: About\n"); +} +static void projectM_configure(void) +{ + printf("projectM plugin: Configure\n"); +} +static void projectM_playback_start(void) +{ + printf("projectM plugin: Playback starting\n"); +} +static void projectM_playback_stop(void) +{ + printf("projectM plugin: Playback stopping\n"); +} +static void projectM_render_pcm(gint16 pcm_data[2][512]) +{ + + if (0 < SDL_SemValue(sem)) return; + SDL_mutexP(mutex); + + addPCM16Data(pcm_data,512); + + SDL_mutexV(mutex); + +} + +static void projectM_render_freq(gint16 freq_data[2][256]) +{ + printf("NO GOOD\n"); + } + + +void read_config() +{ + + int n; + + char num[80]; + FILE *in; + FILE *out; + + char* home; + char projectM_home[PATH_MAX]; + char projectM_config[PATH_MAX]; + + strcpy(projectM_config, PROJECTM_DATADIR); + strcpy(projectM_config+strlen(PROJECTM_DATADIR), CONFIG_FILE); + projectM_config[strlen(PROJECTM_DATADIR)+strlen(CONFIG_FILE)]='\0'; + + home=getenv("HOME"); + strcpy(projectM_home, home); + strcpy(projectM_home+strlen(home), "/.projectM/config"); + projectM_home[strlen(home)+strlen("/.projectM/config")]='\0'; + + + if ((in = fopen(projectM_home, "r")) != 0) + { + printf("reading ~/.projectM/config \n"); + } + else + { + printf("trying to create ~/.projectM/config \n"); + + strcpy(projectM_home, home); + strcpy(projectM_home+strlen(home), "/.projectM"); + projectM_home[strlen(home)+strlen("/.projectM")]='\0'; + mkdir(projectM_home,0755); + + strcpy(projectM_home, home); + strcpy(projectM_home+strlen(home), "/.projectM/config"); + projectM_home[strlen(home)+strlen("/.projectM/config")]='\0'; + + if((out = fopen(projectM_home,"w"))!=0) + { + + if ((in = fopen(projectM_config, "r")) != 0) + { + + while(fgets(num,80,in)!=NULL) + { + fputs(num,out); + } + fclose(in); + fclose(out); + + + if ((in = fopen(projectM_home, "r")) != 0) + { printf("created ~/.projectM/config successfully\n"); } + else{printf("This shouldn't happen, using implementation defualts\n");return;} + } + else{printf("Cannot find projectM default config, using implementation defaults\n");return;} + } + else + { + printf("Cannot create ~/.projectM/config, using default config file\n"); + if ((in = fopen(projectM_config, "r")) != 0) + { printf("Successfully opened default config file\n");} + else{ printf("Using implementation defaults, your system is really messed up, I'm suprised we even got this far\n"); return;} + + } + + } + + + + fgets(num, 80, in); fgets(num, 80, in); fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &texsize); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &gx); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &gy); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &wvw); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &wvh); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &fvw); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &fvh); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &fps); + + fgets(num, 80, in); + if(fgets(num, 80, in) != NULL) sscanf (num, "%d", &fullscreen); + /* + fgets(num, 80, in); + fgets(num, 80, in); + + n=0; + while (num[n]!=' ' && num[n]!='\n' && n < 80 && num[n]!=EOF) + { + disp[n]=num[n]; + n++; + } + disp[n]=0; + + + // sprintf(disp,"%s",num ); + setenv("DISPLAY",disp,1); + printf("%s %d\n", disp,strlen(disp)); + setenv("LD_PRELOAD", "/usr/lib/tls/libGL.so.1.0.4496", 1); + */ + fclose(in); + +} diff --git a/xmms-projectM/sdltoprojectM.h b/xmms-projectM/sdltoprojectM.h new file mode 100755 index 000000000..d23398c01 --- /dev/null +++ b/xmms-projectM/sdltoprojectM.h @@ -0,0 +1,148 @@ +/** + * $Id: sdltoprojectM.h,v 1.1.1.1 2005/12/23 18:42:00 psperl Exp $ + * + * Translates SDL -> projectM variables + * + * $Log: sdltoprojectM.h,v $ + * Revision 1.1.1.1 2005/12/23 18:42:00 psperl + * Initial Import + * + * Revision 1.1 2004/10/08 00:35:28 cvs + * Moved and imported + * + * Revision 1.1.1.1 2004/10/04 12:56:00 cvs + * Imported + * + */ + +#ifndef _SDLTOPROJECTM_H +#define _SDLTOPROJECTM_H + +#include "projectM/event.h" +#ifdef WIN32 +#include +#else +#include +#endif + +projectMEvent sdl2pmEvent( SDL_Event event ) { \ + + switch ( event.type ) { \ + case SDL_VIDEORESIZE: + return PROJECTM_VIDEORESIZE; \ + case SDL_KEYUP: \ + return PROJECTM_KEYUP; \ + case SDL_KEYDOWN: \ + return PROJECTM_KEYDOWN; \ + case SDL_QUIT: \ + return PROJECTM_VIDEOQUIT; \ + default: + return PROJECTM_KEYUP; \ + } \ + } \ + +projectMKeycode sdl2pmKeycode( SDLKey keysym ) { \ + switch ( keysym ) { \ + case SDLK_F1: \ + return PROJECTM_K_F1; \ + case SDLK_F2: \ + return PROJECTM_K_F2; \ + case SDLK_F3: \ + return PROJECTM_K_F3; \ + case SDLK_F4: \ + return PROJECTM_K_F4; \ + case SDLK_F5: \ + return PROJECTM_K_F5; \ + case SDLK_F6: \ + return PROJECTM_K_F6; \ + case SDLK_F7: \ + return PROJECTM_K_F7; \ + case SDLK_F8: \ + return PROJECTM_K_F8; \ + case SDLK_F9: \ + return PROJECTM_K_F9; \ + case SDLK_F10: \ + return PROJECTM_K_F10; \ + case SDLK_F11: \ + return PROJECTM_K_F11; \ + case SDLK_F12: \ + return PROJECTM_K_F12; \ + case SDLK_ESCAPE: \ + return PROJECTM_K_ESCAPE; + case SDLK_a: + return PROJECTM_K_a; + case SDLK_b: + return PROJECTM_K_b; + case SDLK_c: + return PROJECTM_K_c; + case SDLK_d: + return PROJECTM_K_d; + case SDLK_e: + return PROJECTM_K_e; + case SDLK_f: + return PROJECTM_K_f; + case SDLK_g: + return PROJECTM_K_g; + case SDLK_h: + return PROJECTM_K_h; + case SDLK_i: + return PROJECTM_K_i; + case SDLK_j: + return PROJECTM_K_j; + case SDLK_k: + return PROJECTM_K_k; + case SDLK_l: + return PROJECTM_K_l; + case SDLK_m: + return PROJECTM_K_m; + case SDLK_n: + return PROJECTM_K_n; + case SDLK_o: + return PROJECTM_K_o; + case SDLK_p: + return PROJECTM_K_p; + case SDLK_q: + return PROJECTM_K_q; + case SDLK_r: + return PROJECTM_K_r; + case SDLK_s: + return PROJECTM_K_s; + case SDLK_t: + return PROJECTM_K_t; + case SDLK_u: + return PROJECTM_K_u; + case SDLK_v: + return PROJECTM_K_v; + case SDLK_w: + return PROJECTM_K_w; + case SDLK_x: + return PROJECTM_K_x; + case SDLK_y: + return PROJECTM_K_y; + case SDLK_z: + return PROJECTM_K_z; + case SDLK_UP: + return PROJECTM_K_UP; + case SDLK_RETURN: + return PROJECTM_K_RETURN; + case SDLK_RIGHT: + return PROJECTM_K_RIGHT; + case SDLK_LEFT: + return PROJECTM_K_LEFT; + case SDLK_DOWN: + return PROJECTM_K_DOWN; + case SDLK_PAGEUP: + return PROJECTM_K_PAGEUP; + case SDLK_PAGEDOWN: + return PROJECTM_K_PAGEDOWN; + + default: \ + return PROJECTM_K_NONE; \ + } \ + } \ + +projectMModifier sdl2pmModifier( SDLMod mod ) { \ + return PROJECTM_KMOD_LSHIFT; \ + } \ + +#endif /** _SDLTOPROJECTM_H */ diff --git a/xmms-projectM/video_init.c b/xmms-projectM/video_init.c new file mode 100644 index 000000000..aafe5a9cf --- /dev/null +++ b/xmms-projectM/video_init.c @@ -0,0 +1,198 @@ +//video_init.c - SDL/Opengl Windowing Creation/Resizing Functions +// +//by Peter Sperl +// +//Opens an SDL Window and creates an OpenGL session +//also able to handle resizing and fullscreening of windows +//just call init_display again with differant variables + +#include +#include +#include + +extern SDL_Surface *screen; +extern int texsize; +void setup_opengl( int w, int h ); + +void close_display() { + SDL_Quit(); +} + +void resize_display(int w, int h, int f) { + int flags; + if (f) flags = SDL_OPENGL|SDL_HWSURFACE|SDL_FULLSCREEN; + else flags = SDL_OPENGL|SDL_HWSURFACE|SDL_RESIZABLE; +// SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); + screen = SDL_SetVideoMode( w, h, 0, flags ) ; + if(screen == 0 ) { + fprintf( stderr, "Video mode set failed: %s\n", SDL_GetError( ) ); + return; + } + setup_opengl(w,h); + SDL_ShowCursor(f ? SDL_DISABLE : SDL_ENABLE); +} + +//init_display +// +//Sets screen to new width and height (w,h) +//Also switches between fullscreen and windowed +//with the boolean f (fullscreen) +void init_display(int w, int h, int f) +{ + + /* Information about the current video settings. */ + const SDL_VideoInfo* info = NULL; + int bpp = 0; + /* Flags we will pass into SDL_SetVideoMode. */ + int flags = 0; + /* First, initialize SDL's video subsystem. */ + if( SDL_Init( SDL_INIT_VIDEO | SDL_INIT_TIMER ) < 0 ) { + /* Failed, exit. */ + fprintf( stderr, "Video initialization failed: %s\n", + SDL_GetError( ) ); + //projectM_vtable.disable_plugin (&projectM_vtable); + return; + + } + /* Let's get some video information. */ + info = SDL_GetVideoInfo( ); + if( !info ) { + /* This should probably never happen. */ + fprintf( stderr, "Video query failed: %s\n", + SDL_GetError( ) ); + // projectM_vtable.disable_plugin (&projectM_vtable); + return; + } + + bpp = info->vfmt->BitsPerPixel; + + //SDL_GL_SetAttribute( SDL_GL_RED_SIZE, 8 ); + //SDL_GL_SetAttribute( SDL_GL_GREEN_SIZE, 8 ); + //SDL_GL_SetAttribute( SDL_GL_BLUE_SIZE, 8 ); + + // SDL_GL_SetAttribute( SDL_GL_ACCUM_RED_SIZE, 8 ); + // SDL_GL_SetAttribute( SDL_GL_ACCUM_GREEN_SIZE, 8 ); + // SDL_GL_SetAttribute( SDL_GL_ACCUM_BLUE_SIZE, 8 ); + SDL_GL_SetAttribute( SDL_GL_ALPHA_SIZE, 8 ); + SDL_GL_SetAttribute( SDL_GL_DEPTH_SIZE, 16 ); + SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); + + if (f==0) + flags = SDL_OPENGL|SDL_HWSURFACE|SDL_RESIZABLE; + else flags = SDL_OPENGL|SDL_HWSURFACE|SDL_FULLSCREEN; + + screen= SDL_SetVideoMode( w, h, bpp, flags ) ; + + if(screen == 0 ) { + /* + * This could happen for a variety of reasons, + * including DISPLAY not being set, the specified + * resolution not being available, etc. + */ + fprintf( stderr, "Video mode set failed: %s\n", + SDL_GetError( ) ); + + // projectM_vtable.disable_plugin (&projectM_vtable); + return; + + } + + + // setup_opengl(w,h); + //gluOrtho2D(0, w, 0, h); +} + + + void setup_opengl( int w, int h ) +{ + + /* Our shading model--Gouraud (smooth). */ + glShadeModel( GL_SMOOTH); + /* Culling. */ + // glCullFace( GL_BACK ); + // glFrontFace( GL_CCW ); + // glEnable( GL_CULL_FACE ); + /* Set the clear color. */ + glClearColor( 0, 0, 0, 0 ); + /* Setup our viewport. */ + glViewport( 0, 0, w, h ); + /* + * Change to the projection matrix and set + * our viewing volume. + */ + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + + // gluOrtho2D(0.0, (GLfloat) width, 0.0, (GLfloat) height); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + // glFrustum(0.0, height, 0.0,width,10,40); + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + +glDrawBuffer(GL_BACK); + glReadBuffer(GL_BACK); + glEnable(GL_BLEND); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + // glBlendFunc(GL_SRC_ALPHA, GL_ONE); + glEnable(GL_LINE_SMOOTH); + glEnable(GL_POINT_SMOOTH); + glClearColor(0.0f, 0.0f, 0.0f, 0.0f); + glClear(GL_COLOR_BUFFER_BIT); + + // glCopyTexImage2D(GL_TEXTURE_2D,0,GL_RGB,0,0,texsize,texsize,0); + //glCopyTexSubImage2D(GL_TEXTURE_2D,0,0,0,0,0,texsize,texsize); + glLineStipple(2, 0xAAAA); + + +} +#if 0 +void CreateRenderTarget(int texsize,int *RenderTargetTextureID, int *RenderTarget ) +{ + /* Create the texture that will be bound to the render target */ + glGenTextures(1, RenderTargetTextureID); + glBindTexture(GL_TEXTURE_2D, *RenderTargetTextureID); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); + + /* Create the render target */ + *RenderTarget = SDL_GL_CreateRenderTarget(texsize,texsize, NULL); + if ( *RenderTarget ) { + + int value; + //printf("Created render target:\n"); + SDL_GL_GetRenderTargetAttribute( *RenderTarget, SDL_GL_RED_SIZE, &value ); + // printf( "SDL_GL_RED_SIZE: %d\n", value); + SDL_GL_GetRenderTargetAttribute( *RenderTarget, SDL_GL_GREEN_SIZE, &value ); + // printf( "SDL_GL_GREEN_SIZE: %d\n", value); + SDL_GL_GetRenderTargetAttribute( *RenderTarget, SDL_GL_BLUE_SIZE, &value ); + // printf( "SDL_GL_BLUE_SIZE: %d\n", value); + SDL_GL_GetRenderTargetAttribute( *RenderTarget, SDL_GL_ALPHA_SIZE, &value ); + // printf( "SDL_GL_ALPHA_SIZE: %d\n", value); + SDL_GL_GetRenderTargetAttribute( *RenderTarget, SDL_GL_DEPTH_SIZE, &value ); + // printf( "SDL_GL_DEPTH_SIZE: %d\n", value ); + + SDL_GL_BindRenderTarget(*RenderTarget, *RenderTargetTextureID); + + } else { + /* We can fake a render target in this demo by rendering to the + * screen and copying to a texture before we do normal rendering. + */ + printf("Failed to create render target, using screen buffer\n"); + + glBindTexture(GL_TEXTURE_2D, *RenderTargetTextureID); + glTexImage2D(GL_TEXTURE_2D, + 0, + GL_RGB, + texsize, texsize, + 0, + GL_RGB, + GL_UNSIGNED_BYTE, + NULL); + } + + +} +#endif diff --git a/xmms-projectM/video_init.h b/xmms-projectM/video_init.h new file mode 100644 index 000000000..aea87031e --- /dev/null +++ b/xmms-projectM/video_init.h @@ -0,0 +1,5 @@ + void setup_opengl( int w, int h ); + void init_display( int w, int h, int fullscreen ); + + +void CreateRenderTarget(int texsize,int *RenderTargetTextureID, int *RenderTarget);