Fiat Lux: Initial commit
svn co https://projectm.svn.sf.net/svnroot/projectm/trunk projectM-Trunk
Snapshot of trunk rev 1387 + obsessive squashing of execute permission
bits where they're not needed.
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..389de2e
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+# Ignore SVN subdirs.
+.svn
diff --git a/AUTHORS.txt b/AUTHORS.txt
new file mode 100644
index 0000000..e0ae79c
--- /dev/null
+++ b/AUTHORS.txt
@@ -0,0 +1,42 @@
+
+projectM -- Milkdrop-esque visualisation SDK
+Copyright (C)2003-2007 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
+
+For the purposes of the copyright statement in the preamble of each source
+code file comprising projectM, the projectM team are:
+
+Carmelo Piccione
+ Parser
+ Evaluator
+ Pulse Audio support (projectM-pulseaudio)
+ Qt GUI (projectM-qt)
+
+Peter Sperl
+ Beat Detection
+ Rendering
+ XMMS Support (projectM-xmms)
+ libvisual Support (projectM-libvisual)
+
+Alligator Descartes
+ Media Player Support (iTunes, Winamp, Windows Media Player)
+ Test application frameworks (projectM-wxvis, projectM-sdlvis)
+ DVD application (projectM-movie)
+ Win32 screensaver (projectM-screensaver)
+
+Roger Dannenburg
+ Advice & Support
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..dcda29d
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,12 @@
+PROJECT(projectM-complete)
+cmake_minimum_required(VERSION 2.4.0)
+cmake_policy(SET CMP0005 OLD)
+
+if(COMMAND cmake_policy)
+ cmake_policy(SET CMP0003 NEW)
+endif(COMMAND cmake_policy)
+
+
+include(src/cmake/CPack-projectM.cmake)
+
+add_subdirectory(src)
diff --git a/COPYING.txt b/COPYING.txt
new file mode 100644
index 0000000..47fb6af
--- /dev/null
+++ b/COPYING.txt
@@ -0,0 +1,504 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 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.
+
+[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.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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
+
+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.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/FAQ.txt b/FAQ.txt
new file mode 100644
index 0000000..b689677
--- /dev/null
+++ b/FAQ.txt
@@ -0,0 +1,120 @@
+
+projectM -- Milkdrop-esque visualisation SDK
+Copyright (C)2003-2007 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
+
+---------------------------------------------------
+ projectM v.0.94.20 FAQ
+ ------------------
+ written by Peter Sperl and Carmelo Piccione
+---------------------------------------------------
+
+Q1: What is projectM?
+Q2: What? This preset doesn't look like it does on Milkdrop.
+Q3: Where can I get more presets?
+Q4: What are the system requirements?
+Q5: Why is projectM so slow!!!
+Q6: How can I increase the rendering quality to make projectM look better?
+Q7: How can I configure projectM? (where's the config file?)
+Q8: Where are the presets?
+
+Q1: What is projectM?
+--------------------
+A: projectM makes pretty pictures from music in realtime.
+ Specifically it uses iterative image-based rendering techniques which
+ are hardware accelerated via OpenGL. projectM was developed with
+ cross-platform support in mind, using SDL and OpenGL. The only port
+ right now is Linux/XMMS, but it should be easy to plug-in to other
+ music players on other platforms (even windows and Mac OS X).
+
+ projectM aims for compatability with MilkDrop's latest release (1.04b at
+ this time), but we have always intended to surpass it. This program was
+ inspired by Ryan Geiss' wonderful program MilkDrop. www.geisswerks.com
+
+Q2: What? This preset doesn't look like it does on Milkdrop.
+-----------------------------------------------------------
+A: We know. Some of the simple waveforms (1,2,3,4,5) are not even close to
+ correct. They are similiar, but not exactly the same. Also, the solarize,
+ brighten, and darken filters aren't done yet either.
+
+ Sometimes things just don't look right because we might, for example, draw
+ shapes a tiny bit too big or small. Small errors propagate and become HUGE
+ after a few manipulations. But who knows because it takes forever to tweak
+ things like this.
+
+Q3: Where can I get more presets?
+--------------------------------
+A: www.milkdrop.co.uk is a great place to start. However, all their
+ presets are packaged in self-unzipping .exe's for win32. I
+ extracted them with wine and it worked wonderfully.
+
+ Check out the milkdrop forums at www.winamp.com to find new presets
+ daily. The URL is below
+
+ http://forums.winamp.com/forumdisplay.php?forumid=81
+
+Q4: What are the system requirements?
+------------------------------------
+A: To run projectM you need a Linux system w/a sound card and a video card
+ with OpenGL hardware acceleration. We find that projectM runs MUCH better
+ with the 2.6 series kernel and ALSA sound.
+
+ What does that mean? Well...
+
+ projectM has only been tested prior to me writing this on 4 computers.
+
+ All those computers used some form of Redhat (8,9, & Fedora 1),
+ although this should make no differance if you run a differant distro.
+
+ Also, all of them used Nvidia (Geforce 3 Ti200, Geforce 4 MX440 & Ti4200)
+
+ WE STRONGLY RECCOMEND THE USE OF ALSA AND THE 2.6 SERIES KERNEL
+
+Q5: Why is projectM so slow!!!
+-----------------------------
+A: If projectM is slow for you all the time, and not just on a select few
+ presets, you can try lowering the rendering quality, and this will speed
+ things up A LOT. To do this, lower the texsize and gridsize (gx,gy) in
+ /etc/projectM/config
+
+ Texsize controls the size of the rendered image. If you think your video
+ card is too slow or doesn't have enough memory, then change this. A middle
+ value for texsize is 512. 1024 is nice looking, and 256 is for VERY slow
+ computers.
+
+ If your processor is the bottleneck, then lower gx and gy. gx and gy
+ control the size of the interpolated per-pixel mesh. 24/18 is a low-middle
+ value. I run at 48/32 some times on my Athlon 64 3200, and I could
+ probably go higher, although some presets slow down for me at this VERY
+ high setting.
+
+ Certain presets can be processor hogs and slow the framerate down to
+ almost 0. In this situation my best advice is not to use those presets.
+ All the presets that come with projectM should be slim enough to run on
+ nearly all machines capable of running projectM in the first place.
+
+Q6:How can I increase the rendering quality to make projectM look better?
+-------------------------------------------------------------------------
+A: Read Q5 and do the opposite!
+
+Q7: How can I configure projectM? (where's the config file?)
+------------------------------------------------------------
+A: /etc/projectM/config
+
+Q8: Where are the presets?
+--------------------------
+A: /usr/share/projectM/presets
diff --git a/INSTALL-iTunes-macos.txt b/INSTALL-iTunes-macos.txt
new file mode 100644
index 0000000..db3e2c6
--- /dev/null
+++ b/INSTALL-iTunes-macos.txt
@@ -0,0 +1,73 @@
+
+projectM -- Milkdrop-esque visualisation SDK
+Copyright (C)2003-2007 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
+
+Installation of projectM iTunes plugin for MacOS X
+==================================================
+
+Simply drag the projectM.bundle folder from the mounted disk image
+to the folder called "Library/iTunes/iTunes Plug-ins" in your home
+folder in Finder.
+
+Restart iTunes
+
+In the "Visualizer" menu, you should now see an entry called "projectM".
+Select this option.
+
+Now, turn the visualiser on and enjoy the visuals!
+
+Special Keys
+============
+
+' ': Pauses/unpauses music
+F1: Show help screen
+F3: Toggle preset name rendering
+F5: Toggle frame rate rendering
+F8: Toggle between screen and studio modes. Useful for debugging per-pixel
+ equations
+R: Jump to a new random preset
+N: Go to the next alphanumeric preset
+P: Go to the previous alphanumeric preset
+
+Presets
+=======
+
+A selection of presets are installed in
+
+Library/iTunes/iTunes Plug-ins/projectM.bundle/Contents/Resources/presets
+
+Feel free to remove files from this folder or copy different presets in
+place. After altering the contents of this folder, you must restart projectM
+by turning off, then on, the visualiser in iTunes to refresh the preset
+list.
+
+Caveats
+=======
+
+ATI 3D accelerator cards are known to *NOT WORK* with this plugin currently.
+We are investigating the reasons behind this and a fix will be released
+as soon as the problem is sorted.
+
+Fullscreen resolution is fixed at 1280x1024. Future releases will enable you
+to change this on-the-fly
+
+Mesh size is fixed at 48x36. This generates an acceptable tradeoff between
+visual quality and frame rate. Again, this will be selectable in a
+configuration dialog in the near future.
+
+Returning from Fullscreen mode can shift windows around
diff --git a/INSTALL-xmms.txt b/INSTALL-xmms.txt
new file mode 100644
index 0000000..f3846d9
--- /dev/null
+++ b/INSTALL-xmms.txt
@@ -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/TODO.txt b/TODO.txt
new file mode 100644
index 0000000..efa31c2
--- /dev/null
+++ b/TODO.txt
@@ -0,0 +1,32 @@
+===========================
+$Id$
+
+projectM TODO List
+
+$Log$
+===========================
+
+projectM-engine
+===============
+
+Correct errors in remaining presets
+Correct waveforms 4,5
+Soft transitions
+Refactor browser/console interfaces
+General post-refactor clean up
+
+projectM-iTunes
+======
+
+Fullscreen on MacOS
+Stability fixes on MacOS
+
+projectM-wmp
+============
+
+Needs written
+
+projectM-movie
+==============
+
+Finish this off -- MOV write needs completed with audio/video sync
diff --git a/docs/projectM.dox b/docs/projectM.dox
new file mode 100644
index 0000000..9dc925e
--- /dev/null
+++ b/docs/projectM.dox
@@ -0,0 +1,1218 @@
+# Doxyfile 1.4.2
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = projectM
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = c:/tmp/projectM-1.00/src/doxygen/
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish,
+# Dutch, Finnish, French, German, Greek, Hungarian, Italian, Japanese,
+# Japanese-en (Japanese with English messages), Korean, Korean-en, Norwegian,
+# Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish,
+# Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE = English
+
+# This tag can be used to specify the encoding used in the generated output.
+# The encoding is not always determined by the language that is chosen,
+# but also whether or not the output is meant for Windows or non-Windows users.
+# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
+# forces the Windows encoding (this is the default for the Windows binary),
+# whereas setting the tag to NO uses a Unix-style encoding (the default for
+# all platforms other than Windows).
+
+USE_WINDOWS_ENCODING = YES
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = NO
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like the Qt-style comments (thus requiring an
+# explicit @brief command for a brief description.
+
+JAVADOC_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the DETAILS_AT_TOP tag is set to YES then Doxygen
+# will output the detailed description near the top, like JavaDoc.
+# If set to NO, the detailed description appears after the member
+# documentation.
+
+DETAILS_AT_TOP = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 8
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources
+# only. Doxygen will then generate output that is more tailored for Java.
+# For instance, namespaces will be presented as packages, qualified scopes
+# will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = YES
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation.
+
+SHOW_DIRECTORIES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from the
+# version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the progam writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = c:/tmp/projectM-1.00/src/libprojectM/
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm
+
+FILE_PATTERNS =
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = NO
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories.
+
+EXCLUDE_PATTERNS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output. If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis. Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match. The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES (the default)
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = YES
+
+# If the REFERENCES_RELATION tag is set to YES (the default)
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = YES
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE = 4
+
+# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
+# generated containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
+# probably better off using the HTML help feature.
+
+GENERATE_TREEVIEW = NO
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = NO
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = NO
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = NO
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader. This is useful
+# if you want to understand what is going on. On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_PREDEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
+# powerful graphs.
+
+CLASS_DIAGRAMS = YES
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = YES
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will
+# generate a call dependency graph for every global function or class method.
+# Note that enabling this option will significantly increase the time of a run.
+# So in most cases it will be better to enable call graphs for selected
+# functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_WIDTH = 1024
+
+# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
+# (in pixels) of the graphs generated by dot. If a graph becomes larger than
+# this value, doxygen will try to truncate the graph, so that it fits within
+# the specified constraint. Beware that most browsers cannot cope with very
+# large images.
+
+MAX_DOT_GRAPH_HEIGHT = 1024
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that a graph may be further truncated if the graph's
+# image dimensions are not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH
+# and MAX_DOT_GRAPH_HEIGHT). If 0 is used for the depth value (the default),
+# the graph is not depth-constrained.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, which results in a white background.
+# Warning: Depending on the platform used, enabling this option may lead to
+# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
+# read).
+
+DOT_TRANSPARENT = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE = NO
diff --git a/fonts/CMakeLists.txt b/fonts/CMakeLists.txt
new file mode 100644
index 0000000..9c199ab
--- /dev/null
+++ b/fonts/CMakeLists.txt
@@ -0,0 +1,11 @@
+PROJECT(fonts)
+cmake_minimum_required(VERSION 2.4.0)
+cmake_policy(SET CMP0005 OLD)
+
+if(COMMAND cmake_policy)
+ cmake_policy(SET CMP0003 NEW)
+endif(COMMAND cmake_policy)
+
+
+Include(../src/cmake/CPack-projectM.cmake)
+
diff --git a/fonts/Vera.ttf b/fonts/Vera.ttf
new file mode 100644
index 0000000..58cd6b5
--- /dev/null
+++ b/fonts/Vera.ttf
Binary files differ
diff --git a/fonts/VeraMono.ttf b/fonts/VeraMono.ttf
new file mode 100644
index 0000000..139f0b4
--- /dev/null
+++ b/fonts/VeraMono.ttf
Binary files differ
diff --git a/playlists/presetplaylist.xsd b/playlists/presetplaylist.xsd
new file mode 100644
index 0000000..31dee05
--- /dev/null
+++ b/playlists/presetplaylist.xsd
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="presetplaylist">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="description" type="xs:string"/>
+ <xs:element name="item" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="url" type="xs:string"/>
+ <xs:element name="rating" type="xs:integer"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
+
diff --git a/playlists/sample.ppl b/playlists/sample.ppl
new file mode 100644
index 0000000..3f2318e
--- /dev/null
+++ b/playlists/sample.ppl
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><presetplaylist><description></description><item><url>/usr/share/projectM/presets/A.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/AA.milk</url><rating>5</rating></item><item><url>/usr/share/projectM/presets/AAA.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Agitator.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Aimless (Gravity Directive Mix).milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Aimless (Spirogravity Mix).milk</url><rating>5</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Airhandler (Menagerie Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Airs (Windy Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Airs.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Anchorpulse (Pulse Of A Ghast II Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Anchorpulse (Verified Mix).milk</url><rating>5</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Anomalous Material Science (Pure Splinter Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Antidote (Aqualung Mix).milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Antidote (Side Effects Mix).milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Antidote.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Antique Abyss.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Arise! (Padded Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Ashes Of Air (Remix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Bitterfeld (Crystal Border Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Blender.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Bow To Gravity.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Brakefreak.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Candy Avian.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Causeway Of Dreams (Nightmare Mix).milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Causeway Of Dreams (REMix).milk</url><rating>5</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Causeway Of Dreams.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Chromatic Abyss (The Other Side).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Circlefacade.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Contortion (Xenomorph Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Contortion.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Crystal Storm.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Dark Matter (Converse Mix).milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Elastoid.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Floater Society.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Flowing Form.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Making Time (Swamp Mix).milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Paintsphere.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Potion of Spirits.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Songflower (Moss Posy).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - Spillswirl.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - What Cannot Be Undone.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Aderrasi - What cannot be.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/B.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/baked - mushroom rainbows[2].milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Bmelgren </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Bmelgren </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Bmelgren - Godhead.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Bmelgren - Hmmm.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Bmelgren - Pentultimate Nerual Slipstream (Tweak 2).milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Bmelgren - Take This Highway.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/che - adela the flower.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/che - barcode infidelity.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/che - burning hus (oil mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Che - Burning Hus.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Che - Escape.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Che - Geology.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/che - terracarbon stream.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Che - Watch </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/CrystalHigh - mad ravetriping.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/DaNOnE - Highway to Heaven (rotating).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/EMPR - Random - Changing Polyevolution.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/EMPR - Random - Light Speed Racer.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/EMPR - Random - Look mama I'm on TV! 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/EMPR - Random - They're so cute Dad can I keep one!.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/EMPR - Random - Turbulence Sandwich.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Eo.S. + Phat - chasers 18 hallway.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Eo.S. - glowsticks v2 03 music.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Eo.S. - glowsticks v2 04 music minimal.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Eo.S. - glowsticks v2 05 and proton lights (+Krash's beat code) _Phat_remix02b.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Eo.S. - glowsticks v2 05 and proton lights (+Krash's beat code) _Phat_remix07 recursive demons.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Eo.S. - heater core C_Phat's_class + sparks_mix.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Eo.S. - heater core C_Phat's_on route_mix+beam.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Eo.S. - repeater 05 - rave on acid.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Eo.S. - repeater 15 - kaleidoscope b.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Eo.S.+Phat - Arm_upgrades - transformer.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Eo.S.+Phat Cool Bug v2 + (Krash's beat detection).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/EvilJim - Follow the ball.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/EvilJim - Ice Drops.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/fiShbRaiN - blueprint.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Fvese </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Fvese - 0 To 60.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Fvese - A Blur.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Fvese - Lifesavor Anyone.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Fvese - Multi Circle.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Fvese - New meetings.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Fvese - Quicksand.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Fvese - Round and Round (geiss gamma mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Fvese - simple.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Fvese - Stand Still!.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Fvese - The Tunnel (Final Stage Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Fvese - Window Reflection 6.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Fvese - Zoom Effects (Remix 2).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Geiss </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Geiss </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Geiss </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Geiss </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Geiss - Aieeeeee!!!.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Anomaly 1.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Anomaly 2.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Approach.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Asymptote.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Bass Kaleidosphere.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Bass Zoom.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Bipolar 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Bipolar 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Bipolar 3.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Bipolar 4.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Bipolar 5.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Blasto.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Bonfire.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Bright Fiber Matrix 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Bright Fiber Matrix 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Calligraphy.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Cartographie.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Casino.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Cepiasound.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Churn.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Color Tones 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Color Tones 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Constant Velocity.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Coral.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Corpus Callosum.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Cosmic Dust 1.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Cosmic Dust 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Cruzin'.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Cycloid 1.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Cycloid 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Davod The Pod.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - De La Moutard 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - De La Moutard 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Demonic Distortion.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Descent.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Destruction.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Diffraction.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Digital Smoke.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Downward Spiral.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Drift.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Dynamic Swirls 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Dynamic Swirls 2.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Eddies 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Eddies 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Eggs.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - El Cubismo.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Feedback 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Feedback.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Festive.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Fiberglass.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Flotsam.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Flower Blossom.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Flower.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Fog Tunnel.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Four Kinds of Amphetamines.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Galaxy 1.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Galaxy 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Greenland.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Happy Drops.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Heavenly 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Heavenly 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Heavenly 3.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - High Dynamic Range.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Hovering.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Hurricane.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Hyperion.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Inkblot.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Iris.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Journey.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Julia Fractal 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Julia Fractal 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Luz.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Many Colors 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Many Colors 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Mega Swirl 1.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Mega Swirl 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Mega Swirl 3.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Microcosm.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Monotone Ripples.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Music Box.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Nautilus.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Octopus Blue.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Octopus Ever Changing.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Octopus Fat and Ever Changing.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Octopus Gold with Dots.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Octopus Gold.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Octopus.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Oldskool Mellowstyle.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Pelota De Fuego.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Pinch.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Pistons.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Planet 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Planet 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Quasilinear Submanifolds.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Reducto Absurdum.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Reducto Ad Nauseum.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Rocket.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Runoff.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Scary.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Script.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Serpent.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Shake.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Shift.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Sinews 1.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Sinews 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Smoke.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Solar Flare (Blue).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Solar Flare (Reptile).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Solar Flare.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Sound And The Fury.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Space Voyage (High-Warp).milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Space Voyage Bright.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Space Voyage.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Spacedust.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Starfish 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Starfish 2.milk</url><rating>5</rating></item><item><url>/usr/share/projectM/presets/Geiss - Sunsets.milk</url><rating>5</rating></item><item><url>/usr/share/projectM/presets/Geiss - Supernova 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Supernova 2.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Surface.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Swirl 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Swirl 2.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Swirlie 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Swirlie 2.milk</url><rating>5</rating></item><item><url>/usr/share/projectM/presets/Geiss - Swirlie 3.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Swirlie 4.milk</url><rating>5</rating></item><item><url>/usr/share/projectM/presets/Geiss - Swirlie 5.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Symmetry.milk</url><rating>5</rating></item><item><url>/usr/share/projectM/presets/Geiss - The Fatty Lumpkin Sunkle Tweaker.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Three And A Half Kinds Of Amphetamines.milk</url><rating>5</rating></item><item><url>/usr/share/projectM/presets/Geiss - Three Kinds Of Amphetamines.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Tokamak.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Tornado.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Toy.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Trampoline.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Tube.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss - Two-Pointed Pulsagon.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Ultrafast.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Volume Zoom.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Vortex 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Vortex 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Warp Of Dali 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Warp Of Dali 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Warp Of Dali Bright.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Geiss - Waterfall.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Geiss and Rovastar - The Chaos Of Colours (sprouting diment.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Idiot </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Idiot </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Idiot </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Idiot </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Idiot - 9-7-02 (Remix) (sustain fixed).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Idiot - Cortex (Spiritual Visions Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/idiot - Dwarf of Annon (before the star).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Idiot - Madness Within The Void (Remix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Idiot - MOTIVATION!.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/idiot - Nothing Yet - 02 - Shifting Squares of idiot.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/idiot - Nothing Yet - 03 - The worst of the pack.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/idiot - Nucleus.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/idiot - Shadows of Annon.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/idiot - Sinful Code (unchained style).milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/idiot - Some big word I learned.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/idiot - Spectrum.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Idiot - Tentacle Dreams (Remix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Idiot - Texture Boxes (Remix 2).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Idiot - Texture Boxes (Remix).milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Idiot - Typomatic (Remix 2).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/idiot - Waterfalls (remix2).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/idiot - Waterfalls.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Idiot - What Is.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Idiot - What Shall Come.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Idiot24-7 - Ascending to heaven 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Idiot24-7 - Just plain cool 3.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Idiot24-7 - Meeting place.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Illusion </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Illusion </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Illusion </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Illusion </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Illusion </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/illusion </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/illusion </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Illusion </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Illusion </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Illusion </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Illusion - Figure Eight.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Illusion - Heavenly Eye.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Jess - Trying To Trap A Twister.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Krash </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Krash </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Krash </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Krash </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Krash </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Krash </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Krash </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Krash </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Krash </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Krash </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Krash </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Krash - 3D Shapes Demo 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Krash - 3D Shapes Demo.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Krash - cardiac rhythm.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Krash - Chronoshift.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Krash - Digital Flame.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Krash - Dynamic Borders 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Krash - Framed Geometry.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Krash - Heatwaves.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Krash - interwoven (nightmare weft).milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Krash - interwoven.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Krash - Molten Indecision (Rozzor Hot Fast tweak).milk</url><rating>5</rating></item><item><url>/usr/share/projectM/presets/Krash - molten indecision.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Krash - Pulse.milk</url><rating>5</rating></item><item><url>/usr/share/projectM/presets/Krash - Season's Greetings 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Krash - Snowflake Halo.milk</url><rating>5</rating></item><item><url>/usr/share/projectM/presets/Krash - systolic pressure.milk</url><rating>5</rating></item><item><url>/usr/share/projectM/presets/Krash - Twisting Indecision.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Krash - Vinyl Disk.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Krash - War Machine (Shifting Complexity Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Krash - Windowframe To Mega Swirl 2.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Krash and Fvese - Molten Indecision (Fvese Remix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Krash and Rovastar - Rainbow Orb 2 Peacock (Bmelgren's Comp.milk</url><rating>5</rating></item><item><url>/usr/share/projectM/presets/Krash and Rovastar - Rainbow Orb.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Krash and Telek - Real Noughts and Crosses (Random Ending).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Mstress </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Mstress </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Mstress </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Mstress </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Mstress - Acid Universes (Big Bang Interferences Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/mstress - Acid Universes.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Mstress - Acoustic Nerve Impulses (Under Drug Effetcs (Hypn.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Mstress - Aurora Boreale.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Mstress - Curtain.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Mstress - Snowing Fiber City.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Mstress - Super nova self control.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/neuro - blackhole bass.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/nil </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/nil </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/nil </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/nil - Can't Stop the Blithering.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/nil - Can't Stop the Cramming.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/nil - Cid and Lucy.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/nil - Did You Speak with the Orb.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/nil - Disco Comet.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/nil - Singularity in My Oscilloscope.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/nil - Tim Leary's Amazing Waterslide.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/nil - Vortex of Vortices.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/nil - Wyrm.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Phat+fiShbRaiN+Eo.S_Mandala_Chasers_remix - www.eos4life.com.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Phat+fiShbRaiN+Eo.S_Mandala_Chasers_remix.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/PieturP - triptrap_(getting_concrete_visions_through_a_diafragma_version).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/PieturP - triptrap_(ultimate-trip-mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Redi Jedi - acid in your brain.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Redi Jedi - multiple points of origin, one destination.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Reenen - phoenix.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rocke - Answer.42.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rocke - Answer42.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rocke - Cold Love (Tei Zwaa).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rocke - Personal Comet.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rovastar - A Million Miles From Earth (Drift Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - A Million Miles from Earth (Pathfinder Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - A Million Miles From Earth (Wormhole Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - A Million Miles from Earth.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Altars Of Harlequin's Maddess.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Altars Of Harlequin's Madness (Dark Disorder Mix.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Altars Of Madness (A Million Miles From Earth Mi.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Altars Of Madness (Boxfresh Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Altars Of Madness (Duel Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Altars Of Madness (Surealist Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Altars Of Madness 2 (Frozen Time Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Altars Of Madness 4 (Spirit Of Twisted Madness M.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Altars Of Madness.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Attacking Freedom.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Bellanova (New Wave Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Biohazard Warning.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Braindance 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Bytes.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Chapel Of Ghouls.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Chemical Spirituality.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Clouded Judgement 3.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Cosmic Echoes 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Cosmic Echoes 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Cosmic Havoc.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Cosmic Mosaic (Active Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Dark Ritual (Star Of Destiny Denied Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Dark Ritual (Star Of Destiny Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Decreasing Dreams (Extended Movement Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Dreamcatcher.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - eclectic interface (despair mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Explosive Minds.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Forgotten Moon.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Fractopia (Fantic Dancing Lights Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Fractopia (Galaxy Swirl Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Fractopia (Upspoken Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Fractopia (Upspoken Mix)_Phat_Speak_When_Spoken_2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Frozen Rapture .milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Future Speakers.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Halcyon Dreams 3.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Hallucinogenic Pyramids (Beat Time Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Harlequin's Delight (Endless Tunnel Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Harlequin's Dynamic Fractal (Crazed Spiral Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Harlequin's Dynamic Fractal (Dual Spiral Mix ).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Harlequin's Dynamic Fractal 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Harlequin's Dynamic Fractal 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Harlequin's Dynamic Fractal 3.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Harlequin's Fractal Encounter 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Harlequin's Fractal Encounter.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Harlequin's Liquid Dragon.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Harlequin's Living Wall.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Harlequin's Spirit (Twisted Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Harlequin's Spirit.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Hyperspace (Frozen Rapture Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Hyperspace (Hyper Speed Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Hyperspace.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Inner Thoughts (Clouded Judgement Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Inner Thoughts (Clouded Judgement Mix).milk~</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Inner Thoughts (Dark Secret Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Inner Thoughts (Distant Memories Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Inner Thoughts (Frantic Thoughts Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Inner Thoughts (Strange Cargo Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Intense Desire.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Jester's Awakening.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Jester's Calling 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Jester's Calling 3.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Jester's Surreal Tornado (Further Vortex Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Kalideostars (Altars Of Madness MIx).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Kalideostars (Round Round Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Kalideostars.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - LabFunk.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Lost Souls of the Bermuda Triangle (Darkest Soul.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Magic Carpet.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Mosaics Of Ages.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Multiverse Starfield 1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Multiverse Starfield 3.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Omnipresence Resurrection (Raw Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Omnipresence Resurrection.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Oozing Resistance.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Pandora's Volcano.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Paradigm Sphere.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Parallel Universe.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - paranormal diffusion analyser.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Power Trip.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Ritual Of Life.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Sea Life (Evoluation Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Sea Life.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Sea Shells.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Shadows Portal.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Snapshot Of Space.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Solarized Space (Space DNA Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Solarized Space.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Space (Twisted Dimension Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Space.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Starquake (Sunquake Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - The Awakening.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - The Chaos Of Colours (Drifting Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - The Chaos Of Colours.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - The Shroomery.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Timeless Voyage.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Touchdown on Mars (Detailed Pictures Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Tripmaker.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Trippy S..milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Trippy S.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - twisted bytes.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Violent Relaxation.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Visions Beyond.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Visions Of The Future.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - VooV's Brainwaves.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - VooV's Movement (After Dark Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - VooV's Movement.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - VooV's Organic Light.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar - Xeper.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar and Krash - Hallucinogenic Pyramids (Extra Beat Ti.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar and Krash - Rainbow Deflection.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar and Unchained - Braindance Visions.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rovastar and Unchained - Life After Pie (Remix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rozzer </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rozzer </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rozzor </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rozzor </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rozzor </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rozzor </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Rozzor - Color Breaks its Boycott (shape mod).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rozzor - Learning Curve (Invert tweak).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rozzor and che - Inside the House of nil.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rozzor and Idiot - Any Other Deep Rising.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rozzor and Rovastar - Altars Of Madness 3 (ooze tweak with .milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rozzor and Rovastar - Altars Of Madness 3 (ooze tweak).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rozzor and StudioMusic - Vertigyny (Geiss shape mod).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Rozzor and Zylot - Associative Order.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Scanner (@ztec)2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/shifter - escape the worm - Eo.S. + Phat - Before_It_Eats_Your_Brain_Mix_v2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/shifter - escape the worm - Eo.S. + Phat 5362.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Studio Music - Cherished Desires.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Studio Music and Unchained - Rapid Alteration.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/StudioMusic </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/StudioMusic </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/StudioMusic </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/StudioMusic </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/StudioMusic </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/StudioMusic - Harmonic Bliss (elated mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/StudioMusic - It's Only Make Believe.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/StudioMusic - Numerosity.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/StudioMusic - Twisted Galaxy.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/StudioMusic Aderrasi </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/TEcHNO and SandStorm - Psychodelic Highway.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Telek - City Helix Lattice.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Telek - Directive Swagger (Spectral Inferno) (fix...) maybe.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Telek - Flicker (@xis).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Telek - Flicker.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Telek - Globetrotting (Sailors Delight Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Telek - Lost Star (Flash).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Telek - Recirculate (Cool).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Telek - Sine Wave.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Telek - Slow Shift Matrix (bb4.5).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Telek - Slow Shift Matrix (Ethereal Drift).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Telek - Slow Shift Matrix.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Telek - Slow Thing (Spiderman Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Telek - Spiral Tabletop (New and Improved!).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Telek - Spokes (More Dynamic).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Telek - Target Practice (tracking retreat slide).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Telek EMPR - Scanner - Trust me I've got a Melways.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/TobiasWolfBoi - Cataract.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/TobiasWolfBoi - The Pit.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Tschoey - Music Flower.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Unchained </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Unchained </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Unchained </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Unchained </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Unchained </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Unchained </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Unchained </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Unchained </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Unchained </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Unchained </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Unchained </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Unchained </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Unchained </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Unchained - A Matter Of Taste (Remix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - All You Can Eat.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Bad Karma Oddnezz Style.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Beat Demo (Demonology Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Beat Demo 1.0.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Unchained - Beat Demo 10.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Beat Demo 2.0.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Beat Demo 2.1.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Beat Demo 2.2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Beat Demo 2.3.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Cartoon Factory.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Cranked On Failure.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Custom Gramatix (Remix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Deeper Logic.milk</url><rating>1</rating></item><item><url>/usr/share/projectM/presets/Unchained - elite vectronics.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Free to Feel (Valium Remix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - French Clothing.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Games With Light </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Unchained - Ghostlight Whisper.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - God Of The Game (Remix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Goo Kung Fu.milk</url><rating>5</rating></item><item><url>/usr/share/projectM/presets/Unchained - Goofy Beat Detection.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Housed In A Childish Mind.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - In Memory Of Peg.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Invariant Under Rigorous Motions.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Jaded Emotion.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Jaundice.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Making a Science of It 4.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Morat's Final Voyage.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Non-Professional Music Analyzer.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Painful Plasma (Multi-Wave Mirrored Rage) -- Ro.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Perverted Dialect.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Picture Of Exile.milk</url><rating>5</rating></item><item><url>/usr/share/projectM/presets/Unchained - Picture Of Nectar.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Picture Of Poison.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - ReAwoke.milk</url><rating>6</rating></item><item><url>/usr/share/projectM/presets/Unchained - Resistance.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Unchained - Ribald Ballad.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Shaping The Grid.milk</url><rating>1</rating></item><item><url>/usr/share/projectM/presets/Unchained - Subjective Experience Of The Manifold.milk</url><rating>2</rating></item><item><url>/usr/share/projectM/presets/Unchained - Unclaimed Wreckage 2 (Shamanic).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - Unclaimed Wreckage.milk</url><rating>6</rating></item><item><url>/usr/share/projectM/presets/Unchained - Unified Drag 2.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Unchained - ventilation.milk</url><rating>4</rating></item><item><url>/usr/share/projectM/presets/Unchained - Working the Grid.milk</url><rating>1</rating></item><item><url>/usr/share/projectM/presets/Vovan - Bass With Flover.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 010 - Symphonic innerverse.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 011 - Symphonic innerverse (deaf mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 020 - I have no feet and I must dance.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 030 - Dance with the ocean.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 040 - Myopic infected 3d VU meters.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 041 - Myopic infected 3d VU meters (remix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 050 - Van Gogh's nightmare.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 051 - Van Gogh's nightmare (in depth).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 060 - PLU.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 070 - Speaks for itsself.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 080 - Dream Universe.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 090 - Exit eternity.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 100 - Through the ether.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 101 - Through the ether (Phase Two).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 102 - Through the ether (The separation).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 110 - Survival of the fastest.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 111 - Survival of the fastest (Volume gravity).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 112 - Survival of the fastest (Sudden death).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 113 - Survival of the fastest (The Grand Arena).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 114 - Survival of the fastest (feat. Guest Star).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 115 - Survival of the fastest (feat. Collapsing Guest Star).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 116 - Survival of the fastest (is watched!).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 120 - Resonant consciousness.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 130 - Karmic energies.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 140 - Ohm to the stars.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 141 - Ohm to the stars (ESP).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 150 - Pap says there's no centrifugal.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 160 - Controversial.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 170 - Take a deep breath.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 180 - Pyrotechnics.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 181 - Pyrotechnics (windy mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 190 - Temporal fluctuations.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 191 - Temporal singularities.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 200 - The all seeing eye.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 210 - Beat it.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 220 - Enter the silence.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - 230 - First impression.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/yin - Beat Detective 007 demo.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Zylot </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Zylot </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Zylot </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Zylot </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Zylot </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Zylot </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Zylot </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Zylot </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Zylot </url><rating>10957</rating></item><item><url>/usr/share/projectM/presets/Zylot - Azirphaeli's Mirror.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Block Of Sound (Abstract Architecture Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Block Of Sound (Fractal Construction Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Burning Passion.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Color Of Music.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Crystal Ball (Magical Reaction Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - De(-a)range(d)(ment) complex.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - De(-a)range(d)(ment) strain.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Digiscape Advanced Processor.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Ether Storm.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Global Earthquake.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Hollow Shell.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Inside The Planar Portal.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - light of the path.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Magladon.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Magma Crawl.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Magma Vein.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Mixing Pot.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - New Star.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - PinWheel.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Present for Saddam.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Puddle Of Music.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Rainbow Planet Under Attack.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Riding The Sound Waves.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Rush.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - S Pulse Virus.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - S. Pulse Virus.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - String.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - String.milk~</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Tangent Universe (Collapsed With Artifact Mix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - The Deeper.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - The Inner Workings of my New Computer.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Tunnel Of Illusion.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Visionarie (geiss aspect ratio fix).milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Waves Of Blood.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Winding Path Over The Blue Abyss.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot - Wisps.milk</url><rating>3</rating></item><item><url>/usr/share/projectM/presets/Zylot and Rovastar - Iouo Stone Morphic Fusion.milk</url><rating>3</rating></item></presetplaylist>
diff --git a/presets/Aderrasi - Agitator.milk b/presets/Aderrasi - Agitator.milk
new file mode 100644
index 0000000..11f469e
--- /dev/null
+++ b/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/presets/Aderrasi - Aimless \050Gravity Directive Mix\051.milk" "b/presets/Aderrasi - Aimless \050Gravity Directive Mix\051.milk"
new file mode 100644
index 0000000..f0f7457
--- /dev/null
+++ "b/presets/Aderrasi - Aimless \050Gravity Directive Mix\051.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/presets/Aderrasi - Aimless \050Spirogravity Mix\051.milk" "b/presets/Aderrasi - Aimless \050Spirogravity Mix\051.milk"
new file mode 100644
index 0000000..f0f7457
--- /dev/null
+++ "b/presets/Aderrasi - Aimless \050Spirogravity Mix\051.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/presets/Aderrasi - Airhandler \050Menagerie Mix\051.milk" "b/presets/Aderrasi - Airhandler \050Menagerie Mix\051.milk"
new file mode 100644
index 0000000..b918ff2
--- /dev/null
+++ "b/presets/Aderrasi - Airhandler \050Menagerie Mix\051.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/presets/Aderrasi - Airs \050Windy Mix\051.milk" "b/presets/Aderrasi - Airs \050Windy Mix\051.milk"
new file mode 100644
index 0000000..7d9c2ee
--- /dev/null
+++ "b/presets/Aderrasi - Airs \050Windy Mix\051.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/presets/Aderrasi - Anchorpulse \050Pulse Of A Ghast II Mix\051.milk" "b/presets/Aderrasi - Anchorpulse \050Pulse Of A Ghast II Mix\051.milk"
new file mode 100644
index 0000000..ef82576
--- /dev/null
+++ "b/presets/Aderrasi - Anchorpulse \050Pulse Of A Ghast II Mix\051.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/presets/Aderrasi - Anchorpulse \050Verified Mix\051.milk" "b/presets/Aderrasi - Anchorpulse \050Verified Mix\051.milk"
new file mode 100644
index 0000000..8d60b5d
--- /dev/null
+++ "b/presets/Aderrasi - Anchorpulse \050Verified Mix\051.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/presets/Aderrasi - Anomalous Material Science \050Pure Splinter Mix\051.milk" "b/presets/Aderrasi - Anomalous Material Science \050Pure Splinter Mix\051.milk"
new file mode 100644
index 0000000..8b97981
--- /dev/null
+++ "b/presets/Aderrasi - Anomalous Material Science \050Pure Splinter Mix\051.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/presets/Aderrasi - Antidote \050Aqualung Mix\051.milk" "b/presets/Aderrasi - Antidote \050Aqualung Mix\051.milk"
new file mode 100644
index 0000000..7a009c0
--- /dev/null
+++ "b/presets/Aderrasi - Antidote \050Aqualung Mix\051.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/presets/Aderrasi - Antidote \050Side Effects Mix\051.milk" "b/presets/Aderrasi - Antidote \050Side Effects Mix\051.milk"
new file mode 100644
index 0000000..3758912
--- /dev/null
+++ "b/presets/Aderrasi - Antidote \050Side Effects Mix\051.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/presets/Aderrasi - Antidote.milk b/presets/Aderrasi - Antidote.milk
new file mode 100644
index 0000000..a7ff1eb
--- /dev/null
+++ b/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/presets/Aderrasi - Antique Abyss.milk b/presets/Aderrasi - Antique Abyss.milk
new file mode 100644
index 0000000..e2b93bf
--- /dev/null
+++ b/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/presets/Aderrasi - Arise\041 \050Padded Mix\051.milk" "b/presets/Aderrasi - Arise\041 \050Padded Mix\051.milk"
new file mode 100644
index 0000000..9a98e79
--- /dev/null
+++ "b/presets/Aderrasi - Arise\041 \050Padded Mix\051.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/presets/Aderrasi - Ashes Of Air \050Remix\051.milk" "b/presets/Aderrasi - Ashes Of Air \050Remix\051.milk"
new file mode 100644
index 0000000..ed1777b
--- /dev/null
+++ "b/presets/Aderrasi - Ashes Of Air \050Remix\051.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/presets/Aderrasi - Bitterfeld \050Crystal Border Mix\051.milk" "b/presets/Aderrasi - Bitterfeld \050Crystal Border Mix\051.milk"
new file mode 100644
index 0000000..79a2f22
--- /dev/null
+++ "b/presets/Aderrasi - Bitterfeld \050Crystal Border Mix\051.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/presets/Aderrasi - Blender.milk b/presets/Aderrasi - Blender.milk
new file mode 100644
index 0000000..806b4c1
--- /dev/null
+++ b/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/presets/Aderrasi - Bow To Gravity.milk b/presets/Aderrasi - Bow To Gravity.milk
new file mode 100644
index 0000000..9eb205a
--- /dev/null
+++ b/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/presets/Aderrasi - Brakefreak.milk b/presets/Aderrasi - Brakefreak.milk
new file mode 100644
index 0000000..506a3e3
--- /dev/null
+++ b/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/presets/Aderrasi - Candy Avian.milk b/presets/Aderrasi - Candy Avian.milk
new file mode 100644
index 0000000..88082ba
--- /dev/null
+++ b/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/presets/Aderrasi - Causeway Of Dreams \050Nightmare Mix\051.milk" "b/presets/Aderrasi - Causeway Of Dreams \050Nightmare Mix\051.milk"
new file mode 100644
index 0000000..1b9a194
--- /dev/null
+++ "b/presets/Aderrasi - Causeway Of Dreams \050Nightmare Mix\051.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/presets/Aderrasi - Causeway Of Dreams \050REMix\051.milk" "b/presets/Aderrasi - Causeway Of Dreams \050REMix\051.milk"
new file mode 100644
index 0000000..dbfe5ef
--- /dev/null
+++ "b/presets/Aderrasi - Causeway Of Dreams \050REMix\051.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/presets/Aderrasi - Causeway Of Dreams.milk b/presets/Aderrasi - Causeway Of Dreams.milk
new file mode 100644
index 0000000..9d834ee
--- /dev/null
+++ b/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/presets/Aderrasi - Chromatic Abyss \050The Other Side\051.milk" "b/presets/Aderrasi - Chromatic Abyss \050The Other Side\051.milk"
new file mode 100644
index 0000000..4101386
--- /dev/null
+++ "b/presets/Aderrasi - Chromatic Abyss \050The Other Side\051.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/presets/Aderrasi - Circlefacade.milk b/presets/Aderrasi - Circlefacade.milk
new file mode 100644
index 0000000..2a84c3d
--- /dev/null
+++ b/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/presets/Aderrasi - Contortion \050Xenomorph Mix\051.milk" "b/presets/Aderrasi - Contortion \050Xenomorph Mix\051.milk"
new file mode 100644
index 0000000..6c1f321
--- /dev/null
+++ "b/presets/Aderrasi - Contortion \050Xenomorph Mix\051.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/presets/Aderrasi - Contortion.milk b/presets/Aderrasi - Contortion.milk
new file mode 100644
index 0000000..9dc6125
--- /dev/null
+++ b/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/presets/Aderrasi - Crystal Storm.milk b/presets/Aderrasi - Crystal Storm.milk
new file mode 100644
index 0000000..19f17b3
--- /dev/null
+++ b/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/presets/Aderrasi - Dark Matter \050Converse Mix\051.milk" "b/presets/Aderrasi - Dark Matter \050Converse Mix\051.milk"
new file mode 100644
index 0000000..d2ed71b
--- /dev/null
+++ "b/presets/Aderrasi - Dark Matter \050Converse Mix\051.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/presets/Aderrasi - Elastoid.milk b/presets/Aderrasi - Elastoid.milk
new file mode 100644
index 0000000..9eaec2b
--- /dev/null
+++ b/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/presets/Aderrasi - Floater Society.milk b/presets/Aderrasi - Floater Society.milk
new file mode 100644
index 0000000..218f6cf
--- /dev/null
+++ b/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/presets/Aderrasi - Flowing Form.milk b/presets/Aderrasi - Flowing Form.milk
new file mode 100644
index 0000000..8d1a11f
--- /dev/null
+++ b/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/presets/Aderrasi - Making Time \050Swamp Mix\051.milk" "b/presets/Aderrasi - Making Time \050Swamp Mix\051.milk"
new file mode 100644
index 0000000..25e03b4
--- /dev/null
+++ "b/presets/Aderrasi - Making Time \050Swamp Mix\051.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/presets/Aderrasi - Potion of Spirits.milk b/presets/Aderrasi - Potion of Spirits.milk
new file mode 100644
index 0000000..d0ee419
--- /dev/null
+++ b/presets/Aderrasi - Potion of Spirits.milk
@@ -0,0 +1,234 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.420000
+fDecay=1.000000
+fVideoEchoZoom=0.999823
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=5
+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=0.001185
+fWaveScale=0.325446
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=2.630064
+fWarpScale=3.209168
+fZoomExponent=1.000158
+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.500000
+ib_size=0.000000
+ib_r=0.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=0.100000
+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
+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 = 0.5 + 0.5*sin(1.6*time);
+per_frame_2=wave_g = 0.5 + 0.5*sin(4.1*time);
+per_frame_3=wave_b = -1 + (1-wave_r + 1-wave_g);
+per_frame_4=warp = 2;
+per_frame_5=
+per_frame_6=ob_r = ob_r+wave_b*above(sin(0.1*time),0);
+per_frame_7=ob_b = ob_b+wave_g*above(sin(0.1*time),0);
+per_frame_8=ob_g = ob_g+wave_r*above(sin(0.1*time),0);
+per_frame_9=ob_r = ob_r+wave_g*below(sin(0.1*time),0);
+per_frame_10=ob_b = ob_b+wave_r*below(sin(0.1*time),0);
+per_frame_11=ob_g = ob_g+wave_b*below(sin(0.1*time),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.05*sin(5*time)+(1-equal(thresh,2))*dx_r;
+per_pixel_3=dy_r = equal(thresh,2)*0.056*sin(6*time)+(1-equal(thresh,2))*dy_r;
+per_pixel_4=tg1 = abs(sin(time));
+per_pixel_5=tg2 = 22*above(tg1,0.75) + 12*below(tg1,0.25) + 18*above(tg1,0.25)*below(tg1,0.5)+
+per_pixel_6=12*above(tg1,0.5)*below(tg1,0.75);
+per_pixel_7=tg3 = if(equal(thresh,2),tg2,tg3);
+per_pixel_8=
+per_pixel_9=six = sin(x);
+per_pixel_10=
+per_pixel_11=dx = dx + dx_r*sin(abs(tg3*y))*sin(time);
+per_pixel_12=dy = dy + dy_r*sin(abs(tg3*x))*cos(time);
+per_pixel_13=dx = dx + dx_r*pow(rad,y*2)*sin(time);
+per_pixel_14=dy = dy + dy_r*pow(rad,x*2)*sin(time);
+per_pixel_15=zoom = zoom - 0.0825*pow(rad,x*6)*cos(ang*6);
+per_pixel_16=rot = rot - 0.0525*(0.75*sin(1.25*time)*pow(rad,x)*sin(1.45*time))*sin(time);
diff --git "a/presets/Aderrasi - Songflower \050Moss Posy\051.milk" "b/presets/Aderrasi - Songflower \050Moss Posy\051.milk"
new file mode 100644
index 0000000..2d04026
--- /dev/null
+++ "b/presets/Aderrasi - Songflower \050Moss Posy\051.milk"
@@ -0,0 +1,242 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=1.000000
+nVideoEchoOrientation=1
+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=0.001000
+fWaveScale=1.447722
+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=0.500000
+wave_g=0.500000
+wave_b=0.500000
+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.010000
+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
+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=leafset = 3;
+per_frame_1=wave_r = 0.5 + 0.5*sin(1.6*time);
+per_frame_2=wave_g = 0.5 + 0.5*sin(4.1*time);
+per_frame_3=wave_b = -1 + (1-wave_r + 1-wave_g);
+per_frame_4=warp = 0;
+per_frame_5=pfthresh = above(bass_att,pfthresh)*3+(1-above(bass_att,pfthresh))*((pfthresh-1.3)*0.96+1.3);
+per_frame_6=pfdx_r = equal(pfthresh,3)*0.015*sin(5*time)+(1-equal(pfthresh,3))*pfdx_r;
+per_frame_7=pfdy_r = equal(pfthresh,3)*0.015*sin(6*time)+(1-equal(pfthresh,3))*pfdy_r;
+per_frame_8=q1 = wave_r;
+per_frame_9=q2 = wave_g;
+per_frame_10=q3 = wave_b;
+per_frame_11=
+per_frame_12=ob_r = 1-abs(q1)*0.75;
+per_frame_13=ob_g = 1-abs(q2)*0.75;
+per_frame_14=ob_b = 1-abs(q3)*0.75;
+per_frame_15=echo_zoom = echo_zoom + min(max(0.75,50*pfdx_r),1);
+per_frame_16=
+per_frame_17=echo_orient = echo_orient + 16*pfdy_r;
+per_frame_18=
+per_frame_19=dx = dx + 15.1*pfdx_r;
+per_frame_20=dy = dy + 15.1*pfdy_r;
+per_frame_21=ob_size = ob_size + 0.005*bass_att;
+per_frame_22=ib_a = ib_a - min(0.5,0.5-abs(dx+dy));
+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=ladder = abs(sin(1*time));
+per_pixel_6=leaf = 5*below(ladder,0.2) + 8*above(ladder,0.2)*below(ladder,0.4) +
+per_pixel_7=12*above(ladder,0.4)*below(ladder,0.6) + 18*above(ladder,0.6)*below(ladder,0.8) +
+per_pixel_8=24*above(ladder,0.8);
+per_pixel_9=leafset = if(equal(thresh,2), leaf, leafset);
+per_pixel_10=
+per_pixel_11=zoom = zoom + 0.05*(0.75-cos(leafset*rad))*(1-rad);
+per_pixel_12=zoom = zoom - abs(0.05*(0.75-cos(4*rad)));
diff --git a/presets/Aderrasi - Spillswirl.milk b/presets/Aderrasi - Spillswirl.milk
new file mode 100644
index 0000000..04bf1a7
--- /dev/null
+++ b/presets/Aderrasi - Spillswirl.milk
@@ -0,0 +1,73 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.020100
+fVideoEchoAlpha=1.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=100.000000
+fWaveScale=0.499722
+fWaveSmoothing=0.900000
+fWaveParam=-0.080000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=27.429565
+fShader=1.000000
+zoom=1.000000
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=-0.001990
+dy=0.000010
+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.250000
+ib_r=0.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=0.000000
+nMotionVectorsX=55.680000
+nMotionVectorsY=47.999996
+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=0.000000
+per_frame_1=wave_x = wave_x + if(above(wave_y,0.75), - 0.1*tan(time), + 0.1*tan(time));
+per_frame_2=wave_y = wave_y + 0.40*sin(8*mid);
+per_frame_3=wave_r = wave_r + if(above(3*bass,2), +1,-2);
+per_frame_4=wave_g = wave_g + if(above(3*mid,2), +1, -2);
+per_frame_5=wave_b = wave_b + if(above(3*treb,2), +1, -2);
+per_frame_6=warp = 0;
+per_frame_7=rot = rot - 0.05;
+per_pixel_1=zoom = zoom + if (below(rad,0.3), -0.2*(1-rad), 0);
+per_pixel_2=zoom = zoom + if(below(rad,0.6), -0.2*(0.5-rad), 0);
+per_pixel_3=rot = rot - if(below(rad,0.2), 0.1*(1-rad), 0);
diff --git a/presets/Aderrasi - What Cannot Be Undone.milk b/presets/Aderrasi - What Cannot Be Undone.milk
new file mode 100644
index 0000000..d8e8a65
--- /dev/null
+++ b/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/presets/Aderrasi - What cannot be.milk b/presets/Aderrasi - What cannot be.milk
new file mode 100644
index 0000000..c8d2ec4
--- /dev/null
+++ b/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/presets/Bmelgren & Krash - Rainbow Orb Peacock \050Centred Journey Mix.milk" "b/presets/Bmelgren & Krash - Rainbow Orb Peacock \050Centred Journey Mix.milk"
new file mode 100644
index 0000000..0e0016c
--- /dev/null
+++ "b/presets/Bmelgren & Krash - Rainbow Orb Peacock \050Centred 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/presets/Bmelgren & Krash - Rainbow Orb Peacock \050Lonely Signal Gone .milk" "b/presets/Bmelgren & Krash - Rainbow Orb Peacock \050Lonely Signal Gone .milk"
new file mode 100644
index 0000000..20511f5
--- /dev/null
+++ "b/presets/Bmelgren & Krash - Rainbow Orb Peacock \050Lonely 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/presets/Bmelgren - Godhead.milk b/presets/Bmelgren - Godhead.milk
new file mode 100644
index 0000000..7bae546
--- /dev/null
+++ b/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/presets/Bmelgren - Pentultimate Nerual Slipstream \050Tweak 2\051.milk" "b/presets/Bmelgren - Pentultimate Nerual Slipstream \050Tweak 2\051.milk"
new file mode 100644
index 0000000..6f12561
--- /dev/null
+++ "b/presets/Bmelgren - Pentultimate Nerual Slipstream \050Tweak 2\051.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/presets/Bmelgren - Take This Highway.milk b/presets/Bmelgren - Take This Highway.milk
new file mode 100644
index 0000000..3f75694
--- /dev/null
+++ b/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/presets/CMakeLists.txt b/presets/CMakeLists.txt
new file mode 100644
index 0000000..1d6b425
--- /dev/null
+++ b/presets/CMakeLists.txt
@@ -0,0 +1,11 @@
+PROJECT(presets)
+cmake_minimum_required(VERSION 2.4.0)
+cmake_policy(SET CMP0005 OLD)
+
+if(COMMAND cmake_policy)
+ cmake_policy(SET CMP0003 NEW)
+endif(COMMAND cmake_policy)
+
+
+Include(../src/cmake/CPack-projectM.cmake)
+
diff --git a/presets/Che - Burning Hus.milk b/presets/Che - Burning Hus.milk
new file mode 100644
index 0000000..33d850d
--- /dev/null
+++ b/presets/Che - Burning Hus.milk
@@ -0,0 +1,97 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.000499
+fVideoEchoAlpha=0.000000
+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.000416
+fWaveScale=1.000404
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=1.000000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.000000
+fZoomExponent=1.000157
+fShader=0.000000
+zoom=1.010225
+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.800000
+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.250000
+ib_g=0.250000
+ib_b=0.250000
+ib_a=1.000000
+nMotionVectorsX=2.048001
+nMotionVectorsY=47.999996
+mv_dx=-0.080000
+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=q8=60/fps;
+per_frame_2=// timed sidon sensor
+per_frame_3=// le = signal level; desired average value = 2
+per_frame_4=le=1.4*bass_att+.1*bass+.5*treb;
+per_frame_5=pulse=above(le,th);
+per_frame_6=// pulsefreq = running average of interval between last 5 pulses
+per_frame_7=pulsefreq=if(equal(pulsefreq,0),2,
+per_frame_8=if(pulse,.8*pulsefreq+.2*(time-lastpulse),pulsefreq));
+per_frame_9=lastpulse=if(pulse,time,lastpulse);
+per_frame_10=// bt = relative time; 0 = prev beat; 1 = expected beat
+per_frame_11=bt=(time-lastbeat)/(.5*beatfreq+.5*pulsefreq);
+per_frame_12=// hccp = handcicap for th driven by bt
+per_frame_13=hccp=(.03/(bt+.2))+.5*if(band(above(bt,.8),below(bt,1.2)),
+per_frame_14=(pow(sin((bt-1)*7.854),4)-1),0);
+per_frame_15=beat=band(above(le,th+hccp),btblock);
+per_frame_16=btblock=1-above(le,th+hccp);
+per_frame_17=lastbeat=if(beat,time,lastbeat);
+per_frame_18=beatfreq=if(equal(beatfreq,0),2,
+per_frame_19=if(beat,.8*beatfreq+.2*(time-lastbeat),beatfreq));
+per_frame_20=// th = threshold
+per_frame_21=th=if(above(le,th),le+114/(le+10)-7.407,
+per_frame_22=th+th*.07/(th-12)+below(th,2.7)*.1*(2.7-th));
+per_frame_23=th=if(above(th,6),6,th);
+per_frame_24=thccl=thccl+q8*(th-2.5144);
+per_frame_25=leccl=leccl+q8*le;
+per_frame_26=btccl=btccl+beat;
+per_frame_27=q1=thccl;
+per_frame_28=q2=leccl;
+per_frame_29=q3=btccl;
+per_frame_30=wave_r=sqr(sin(1.5*time+.0037*leccl+3*bccl));
+per_frame_31=wave_g=.5+.5*sin(1.6*time+.0042*leccl+2*bccl);
+per_frame_32=wave_b=.5+.5*sin(1.7*time+.0056*leccl+4*bccl);
+per_pixel_1=zoom=1.01+q8*.13*sin(.1*q1)*(sin((8+3*sin(q3))*rad)+sin(.1*q2));
+per_pixel_2=rot=.05*q8*sin(.02*q1*sin(q3))*sin((4+3*sin(q3+.03*q2))*rad);
diff --git a/presets/Che - Escape.milk b/presets/Che - Escape.milk
new file mode 100644
index 0000000..27a6e72
--- /dev/null
+++ b/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/presets/Che - Watch & Fly.milk b/presets/Che - Watch & Fly.milk
new file mode 100644
index 0000000..506dc1f
--- /dev/null
+++ b/presets/Che - Watch & Fly.milk
@@ -0,0 +1,125 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=1.173164
+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=1.000416
+fWaveScale=1.105069
+fWaveSmoothing=0.900000
+fWaveParam=-0.560000
+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.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.000000
+ob_b=0.000000
+ob_a=0.000000
+ib_size=0.035000
+ib_r=1.000000
+ib_g=0.000000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=8.959999
+nMotionVectorsY=7.200006
+mv_dx=0.080000
+mv_dy=0.060000
+mv_l=5.000000
+mv_r=1.000000
+mv_g=0.000000
+mv_b=0.000000
+mv_a=1.000000
+per_frame_1=// sensor - alpha
+per_frame_2=// le = signal level; desired average value = 2
+per_frame_3=// th = threshold
+per_frame_4=le=1.4*bass_att+.1*bass+.5*treb;
+per_frame_5=pulse=band(above(le,th),above(le-th,block));
+per_frame_6=block=le-th;
+per_frame_7=th=if(above(le,th),le+114/(le+10)-7.407,
+per_frame_8=th+th*.07/(th-12)+below(th,2.7)*.1*(2.7-th));
+per_frame_9=th=if(above(th,6),6,th);
+per_frame_10=
+per_frame_11=// pulse cycler
+per_frame_12=pcl=if(pulse,pcl+1,pcl);
+per_frame_13=q1=pcl;
+per_frame_14=
+per_frame_15=ib_r=.5+.5*sin(pcl)+.3*sin(time*2.2);
+per_frame_16=ib_g=.5+.5*sin(pcl*1.1)+.3*sin(time*2.1);
+per_frame_17=ib_b=.5+.5*sin(pcl*1.2)+.3*sin(time*2);
+per_frame_18=mv_r=ib_g;
+per_frame_19=mv_g=ib_b;
+per_frame_20=mv_b=ib_r;
+per_frame_21=wave_r=1-ib_r;
+per_frame_22=wave_g=1-ib_g;
+per_frame_23=wave_b=1-ib_b;
+per_frame_24=
+per_frame_25=// level cycler
+per_frame_26=levccl=levccl+le;
+per_frame_27=q2=.1*levccl;
+per_frame_28=
+per_frame_29=mvx=if(pulse,rand(2)*rand(25),mvx);mv_x=mvx;
+per_frame_30=mvy=if(pulse,rand(2)*rand(19),mvy);mv_y=mvy;
+per_frame_31=
+per_frame_32=q3=.5+.2*sin(23*pcl)+.2*sin(.023*levccl);
+per_frame_33=wave_x=q3;
+per_frame_34=q4=.5+.2*sin(24*pcl)+.2*sin(.02*levccl);
+per_frame_35=wave_y=1-q4;
+per_frame_36=thavg=.5*thavg+.5*th;
+per_frame_37=q6=.2*thavg;
+per_pixel_1=// coordinates transfomation
+per_pixel_2=// q3,q4 = position; q6 = 1/size;
+per_pixel_3=aang=atan2(y-q4,x-q3);
+per_pixel_4=arad=sqrt(sqr(y-q4)+sqr(x-q3))*q6;
+per_pixel_5=atx=cos(aang)*arad;
+per_pixel_6=aty=sin(aang)*arad;
+per_pixel_7=
+per_pixel_8=boxzone=below(arad,.1);
+per_pixel_9=
+per_pixel_10=fxzone=band(band(above(x,.1),below(x,.9)),
+per_pixel_11=band(above(y,.1),below(y,9)));
+per_pixel_12=
+per_pixel_13=
+per_pixel_14=zoom=zoom+(1-boxzone)*if(fxzone,(-.2+.3*sin(3*q1)),-.2);
+per_pixel_15=rot=(1-boxzone)*fxzone*(3.142*sin(12*q1));
+per_pixel_16=
+per_pixel_17=dx=.01*bor(band(above(x,.05),below(x,.1)),above
+per_pixel_18=(x,.95))-.01*bor(below(x,.05),band(above(x,.9),below(x,.95)));
+per_pixel_19=dy=.01*bor(band(above(y,.05),below(y,.1)),above
+per_pixel_20=(y,.95))-.01*bor(below(y,.05),band(above(y,.9),below(y,.95)));
+per_pixel_21=
+per_pixel_22=dx=if(boxzone,.1*atx,dx+fxzone*(.05*sin(q1+(9+4*sin(q1*2.3))*x+
+per_pixel_23=(6+3*sin(q1*2.4))*y+q2)+sin(q1*13)));
+per_pixel_24=dy=if(boxzone,.1*aty,dy+fxzone*(.05*sin(q1+(8+4*sin(q1*2.2))*x+
+per_pixel_25=(5+3*sin(q1*2.1))*y+q2*1.2)+sin(q1*14)));
diff --git a/presets/CrystalHigh - mad ravetriping.milk b/presets/CrystalHigh - mad ravetriping.milk
new file mode 100644
index 0000000..7d1afe3
--- /dev/null
+++ b/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/presets/DaNOnE - Highway to Heaven \050rotating\051.milk" "b/presets/DaNOnE - Highway to Heaven \050rotating\051.milk"
new file mode 100644
index 0000000..dd8b380
--- /dev/null
+++ "b/presets/DaNOnE - Highway to Heaven \050rotating\051.milk"
@@ -0,0 +1,59 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.900000
+fDecay=0.980000
+fVideoEchoZoom=1.169360
+fVideoEchoAlpha=0.300000
+nVideoEchoOrientation=3
+nWaveMode=5
+bAdditiveWaves=1
+bWaveDots=1
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=1
+bTexWrap=1
+bDarkenCenter=0
+bMotionVectorsOn=0
+bRedBlueStereo=0
+nMotionVectorsX=2
+nMotionVectorsY=2
+bBrighten=0
+bDarken=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=1.220039
+fWaveScale=1.170433
+fWaveSmoothing=0.684000
+fWaveParam=-0.040000
+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.010000
+wave_g=0.100000
+wave_b=0.900000
+wave_x=0.500000
+wave_y=0.500000
+ob_size=0.000000
+ob_r=0.370000
+ob_g=0.460000
+ob_b=0.350000
+ob_a=0.000000
+ib_size=0.000000
+ib_r=0.100000
+ib_g=0.000000
+ib_b=0.300000
+ib_a=1.000000
+per_frame_1=ib_size = ib_size + (0.05*bass);
+per_frame_2=rot = rot + 0.3*sin(time);
+per_frame_3=warp = warp + treb
diff --git a/presets/EMPR - Random - Changing Polyevolution.milk b/presets/EMPR - Random - Changing Polyevolution.milk
new file mode 100644
index 0000000..0457c67
--- /dev/null
+++ b/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/presets/EMPR - Random - Look mama I\047m on TV\041 2.milk" "b/presets/EMPR - Random - Look mama I\047m on TV\041 2.milk"
new file mode 100644
index 0000000..97c3088
--- /dev/null
+++ "b/presets/EMPR - Random - Look mama I\047m on TV\041 2.milk"
@@ -0,0 +1,98 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.000000
+fDecay=1.000000
+fVideoEchoZoom=100.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=3
+nWaveMode=7
+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=0.001000
+fWaveScale=0.640100
+fWaveSmoothing=0.270000
+fWaveParam=-0.250278
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=5.995700
+fWarpScale=1.331000
+fZoomExponent=1.010000
+fShader=0.000000
+zoom=0.998531
+rot=0.002000
+cx=0.500000
+cy=0.500000
+dx=1.000000
+dy=1.000000
+warp=0.010000
+sx=1.000000
+sy=1.000000
+wave_r=0.840465
+wave_g=0.977183
+wave_b=0.577708
+wave_x=0.681590
+wave_y=0.841076
+ob_size=0.010000
+ob_r=0.364951
+ob_g=0.522256
+ob_b=0.961900
+ob_a=0.345787
+ib_size=0.000000
+ib_r=0.691402
+ib_g=0.523066
+ib_b=0.706478
+ib_a=0.808526
+nMotionVectorsX=0.000000
+nMotionVectorsY=48.000000
+mv_dx=0.479713
+mv_dy=-0.559295
+mv_l=5.000000
+mv_r=0.376825
+mv_g=0.651550
+mv_b=0.954265
+mv_a=0.602945
+per_frame_1=ob_r = 0.9 - 0.7*(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.4*sin(time*0.342);
+per_frame_5=cy = cy + 0.6*sin(time*0.433);
+per_frame_6=warp =0;
+per_frame_7=ib_size = 0.08;
+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_frame_13=dy = wave_r * wave_g;
+per_frame_14=wave_g = treb - wave_r;
+per_frame_15=wave_b = wave_r * bass;
+per_frame_16=dy=if(below(dy,-1), -1, dy);
+per_frame_17=dy=if(above(dy,1.0), 1.0, dy);
+per_frame_18=wave_b=if(below(wave_b,0.0), 0.0, wave_b);
+per_frame_19=wave_b=if(above(wave_b,1.0), 1.0, wave_b);
+per_frame_20=wave_g=if(below(wave_g,0.0), 0.0, wave_g);
+per_frame_21=wave_g=if(above(wave_g,1.0), 1.0, wave_g);
+per_frame_22=wave_g=if(below(wave_g,0.0), 0.0, wave_g);
+per_frame_23=wave_g=if(above(wave_g,1.0), 1.0, wave_g);
+per_frame_24=wave_b=if(below(wave_b,0.0), 0.0, wave_b);
+per_frame_25=wave_b=if(above(wave_b,1.0), 1.0, wave_b);
+per_pixel_1=box=(1-rad)+0.7*abs(x*3-0.4*sin(q1))%2 + 0.8*abs(y*3+0.4*sin(q1))%2;
+per_pixel_2=q1 = 8.05+(sin(x+0.137*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),1*sin(0.385*time)-time*.1,rot);
+per_pixel_5=zoom = b + y*1.2;
+per_pixel_6=dx = time * a;
+per_pixel_7=zoom=if(below(zoom,0.01), 0.01, zoom);
+per_pixel_8=zoom=if(above(zoom,100), 100, zoom);
+per_pixel_9=dx=if(below(dx,-1), -1, dx);
+per_pixel_10=dx=if(above(dx,1.0), 1.0, dx);
diff --git "a/presets/EMPR - Random - They\047re so cute Dad can I keep one\041.milk" "b/presets/EMPR - Random - They\047re so cute Dad can I keep one\041.milk"
new file mode 100644
index 0000000..92df8f1
--- /dev/null
+++ "b/presets/EMPR - Random - They\047re so cute Dad can I keep one\041.milk"
@@ -0,0 +1,106 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=2.000000
+fDecay=0.940000
+fVideoEchoZoom=2.000000
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=0
+nWaveMode=4
+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=2.651498
+fWaveSmoothing=0.000000
+fWaveParam=-0.180163
+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.999997
+sx=0.578528
+sy=1.030301
+wave_r=0.610115
+wave_g=0.337971
+wave_b=0.298628
+wave_x=0.671479
+wave_y=0.725962
+ob_size=0.030000
+ob_r=0.148379
+ob_g=0.786533
+ob_b=0.637879
+ob_a=0.973918
+ib_size=0.045000
+ib_r=0.841289
+ib_g=0.297099
+ib_b=0.775799
+ib_a=0.238807
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=0.598910
+mv_dy=0.978744
+mv_l=0.500000
+mv_r=0.296168
+mv_g=0.490016
+mv_b=0.461879
+mv_a=0.573571
+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_y = treb + wave_b;
+per_frame_22=wave_y=if(below(wave_y,0.0), 0.0, wave_y);
+per_frame_23=wave_y=if(above(wave_y,1.0), 1.0, wave_y);
+per_frame_24=wave_y=if(below(wave_y,0.0), 0.0, wave_y);
+per_frame_25=wave_y=if(above(wave_y,1.0), 1.0, wave_y);
+per_pixel_1=zoom=zoom+0.04*sin(ang*int(q1)+time*2.6);
+per_pixel_2=cy = q1 * warp;
+per_pixel_3=cy = cy * rad;
+per_pixel_4=cx = a * bass_att;
+per_pixel_5=dy = warp + time;
+per_pixel_6=zoomexp = bass_att + a;
+per_pixel_7=rot = a * bass_att;
+per_pixel_8=rot = rot * y;
+per_pixel_9=zoomexp=if(below(zoomexp,0.01), 0.01, zoomexp);
+per_pixel_10=zoomexp=if(above(zoomexp,100.0), 100.0, zoomexp);
+per_pixel_11=rot=if(below(rot,-1.0), -1.0, rot);
+per_pixel_12=rot=if(above(rot,1.0), 1.0, rot);
+per_pixel_13=cx=if(below(cx,-1.0), -1.0, cx);
+per_pixel_14=cx=if(above(cx,2.0), 2.0, cx);
+per_pixel_15=cy=if(below(cy,-1.0), -1.0, cy);
+per_pixel_16=cy=if(above(cy,2.0), 2.0, cy);
+per_pixel_17=dy=if(below(dy,-1), -1, dy);
+per_pixel_18=dy=if(above(dy,1.0), 1.0, dy);
diff --git a/presets/EMPR - Random - Turbulence Sandwich.milk b/presets/EMPR - Random - Turbulence Sandwich.milk
new file mode 100644
index 0000000..6ca71a5
--- /dev/null
+++ b/presets/EMPR - Random - Turbulence Sandwich.milk
@@ -0,0 +1,140 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=2.000000
+fDecay=0.950000
+fVideoEchoZoom=3.007504
+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=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=100.000000
+fWaveScale=0.880224
+fWaveSmoothing=0.000000
+fWaveParam=0.933237
+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.541826
+wave_g=0.907035
+wave_b=0.436348
+wave_x=0.911091
+wave_y=0.486312
+ob_size=0.010000
+ob_r=0.429397
+ob_g=0.567931
+ob_b=0.857834
+ob_a=0.309108
+ib_size=0.010000
+ib_r=0.331510
+ib_g=0.272420
+ib_b=0.199382
+ib_a=0.856912
+nMotionVectorsX=12.000000
+nMotionVectorsY=9.000000
+mv_dx=-0.523285
+mv_dy=-0.160162
+mv_l=0.055000
+mv_r=0.934155
+mv_g=0.462715
+mv_b=0.821308
+mv_a=0.850204
+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_frame_6=wave_r = wave_r + 0.400*( 0.60*sin(0.933*time) + 0.40*sin(1.045*time) );
+per_frame_7=wave_g = wave_g + 0.400*( 0.60*sin(0.900*time) + 0.40*sin(0.956*time) );
+per_frame_8=wave_b = wave_b + 0.400*( 0.60*sin(0.910*time) + 0.40*sin(0.920*time) );
+per_frame_9=// Appended Code From C:\Program Files\Winamp\Plugins\MilkDrop\Self\Turbulence.milk
+per_frame_10=wave_b = if(equal(bass + wave_y , bass + bass) , min(min(bass * treb , time * treb_att) , time + wave_g) , treb_att * treb);
+per_frame_11=ob_g = max(if(below(frame - bass_att , wave_g * bass) , time + treb , wave_y * wave_g) , wave_y * wave_r);
+per_frame_12=wave_g = if(below(wave_r + time , treb - bass_att) , treb_att * treb , bass * bass);
+per_frame_13=ib_a = min(min(wave_g * wave_r , treb * mid) , wave_g - warp);
+per_frame_14=wave_r = if(below(bass + bass_att , wave_b + frame) , wave_b * bass_att , wave_g * treb);
+per_frame_15=mv_x = 12 + bass_att - warp;
+per_frame_16=ob_a = max(bass * time , bass_att * wave_b);
+per_frame_17=ib_G = treb + warp;
+per_frame_18=dy = 0 + if(equal(treb + bass , mid_att * zoom) , bass_att - bass , bass_att - treb);
+per_frame_19=wave_r = if(below(wave_r * treb_att , wave_b + frame) , min(zoom + wave_g , wave_g * bass) , wave_b - warp);
+per_frame_20=ob_g = max(if(equal(ob_g + wave_y , wave_b + wave_b) , wave_y + wave_b , wave_g * warp) , treb * wave_g);
+per_frame_21=wave_y = if(above(treb * treb , treb + treb) , wave_r * frame , mid * wave_x);
+per_frame_22=dy=if(below(dy,-1), -1, dy);
+per_frame_23=dy=if(above(dy,1.0), 1.0, dy);
+per_frame_24=wave_r=if(below(wave_r,0.0), 0.0, wave_r);
+per_frame_25=wave_r=if(above(wave_r,1.0), 1.0, wave_r);
+per_frame_26=wave_b=if(below(wave_b,0.0), 0.0, wave_b);
+per_frame_27=wave_b=if(above(wave_b,1.0), 1.0, wave_b);
+per_frame_28=wave_g=if(below(wave_g,0.0), 0.0, wave_g);
+per_frame_29=wave_g=if(above(wave_g,1.0), 1.0, wave_g);
+per_frame_30=wave_y=if(below(wave_y,0.0), 0.0, wave_y);
+per_frame_31=wave_y=if(above(wave_y,1.0), 1.0, wave_y);
+per_frame_32=ob_g=if(below(ob_g,0.0), 0.0, ob_g);
+per_frame_33=ob_g=if(above(ob_g,1.0), 1.0, ob_g);
+per_frame_34=ob_a=if(below(ob_a,0.0), 0.0, ob_a);
+per_frame_35=ob_a=if(above(ob_a,1.0), 1.0, ob_a);
+per_frame_36=ib_g=if(below(ib_g,0.0), 0.0, ib_g);
+per_frame_37=ib_g=if(above(ib_g,1.0), 1.0, ib_g);
+per_frame_38=ib_a=if(below(ib_a,0.0), 0.0, ib_a);
+per_frame_39=ib_a=if(above(ib_a,1.0), 1.0, ib_a);
+per_frame_40=mv_x=if(below(mv_x,0.0), 0.0, mv_x);
+per_frame_41=mv_x=if(above(mv_x,64.0), 64.0, mv_x);
+per_frame_42=wave_r=if(below(wave_r,0.0), 0.0, wave_r);
+per_frame_43=wave_r=if(above(wave_r,1.0), 1.0, wave_r);
+per_frame_44=wave_g=if(below(wave_g,0.0), 0.0, wave_g);
+per_frame_45=wave_g=if(above(wave_g,1.0), 1.0, wave_g);
+per_frame_46=wave_b=if(below(wave_b,0.0), 0.0, wave_b);
+per_frame_47=wave_b=if(above(wave_b,1.0), 1.0, wave_b);
+per_frame_48=ob_g=if(below(ob_g,0.0), 0.0, ob_g);
+per_frame_49=ob_g=if(above(ob_g,1.0), 1.0, ob_g);
+per_frame_50=wave_y=if(below(wave_y,0.0), 0.0, wave_y);
+per_frame_51=wave_y=if(above(wave_y,1.0), 1.0, wave_y);
+per_frame_52=wave_b=if(below(wave_b,0.0), 0.0, wave_b);
+per_frame_53=wave_b=if(above(wave_b,1.0), 1.0, wave_b);
+per_frame_54=wave_g=if(below(wave_g,0.0), 0.0, wave_g);
+per_frame_55=wave_g=if(above(wave_g,1.0), 1.0, wave_g);
+per_frame_56=wave_r=if(below(wave_r,0.0), 0.0, wave_r);
+per_frame_57=wave_r=if(above(wave_r,1.0), 1.0, wave_r);
+per_frame_58=ob_a=if(below(ob_a,0.0), 0.0, ob_a);
+per_frame_59=ob_a=if(above(ob_a,1.0), 1.0, ob_a);
+per_frame_60=ob_g=if(below(ob_g,0.0), 0.0, ob_g);
+per_frame_61=ob_g=if(above(ob_g,1.0), 1.0, ob_g);
+per_frame_62=ib_G=if(below(ib_G,0.0), 0.0, ib_G);
+per_frame_63=ib_G=if(above(ib_G,1.0), 1.0, ib_G);
+per_frame_64=wave_y=if(below(wave_y,0.0), 0.0, wave_y);
+per_frame_65=wave_y=if(above(wave_y,1.0), 1.0, wave_y);
+per_frame_66=ib_a=if(below(ib_a,0.0), 0.0, ib_a);
+per_frame_67=ib_a=if(above(ib_a,1.0), 1.0, ib_a);
+per_pixel_1=ray = pow(rad,1.8)+.05;
+per_pixel_2=zoom = (ray/rad)*1.4 + .3*sin(ang*(bass*5))+(bass*.2);
+per_pixel_3=rot=0;
+per_pixel_4=dx = ((x-.5)+(y-.5)*.25*sin(time/10))*(2+.1*treb_att);
+per_pixel_5=dy=(y-.5)*(2-.1*treb_att);
+per_pixel_6=zoom =1;
+per_pixel_7=;
+per_pixel_8=warp = 1 + if(above(q1 * b , sx * y) , zoomexp * a , bass_att * warp);
+per_pixel_9=warp=if(below(warp,0.01), 0.01, warp);
+per_pixel_10=warp=if(above(warp,100.0), 100.0, warp);
diff --git a/presets/Eo.S. + Phat - chasers 18 hallway.milk b/presets/Eo.S. + Phat - chasers 18 hallway.milk
new file mode 100644
index 0000000..c448f40
--- /dev/null
+++ b/presets/Eo.S. + Phat - chasers 18 hallway.milk
@@ -0,0 +1,633 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.280000
+fDecay=0.960000
+fVideoEchoZoom=0.996630
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=1
+nWaveMode=3
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=0
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=0
+bDarken=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.011726
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=0.037492
+fWarpScale=0.014889
+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.033004
+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=0.000000
+nMotionVectorsY=0.000001
+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=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.100000
+wavecode_0_g=0.500000
+wavecode_0_b=0.800000
+wavecode_0_a=1.000000
+wave_0_per_point1=n=sample*6.283;
+wave_0_per_point2=phs=-sample * 0.2;
+wave_0_per_point3=tm=q1 + ((phs*4)/q2)*0.1;
+wave_0_per_point4=
+wave_0_per_point5=flip=flip+1;
+wave_0_per_point6=flip=flip*below(flip,2);
+wave_0_per_point7=
+wave_0_per_point8=xp=0;
+wave_0_per_point9=yp=(flip*0.1-0.05)*(sample);
+wave_0_per_point10=zp=0;
+wave_0_per_point11=
+wave_0_per_point12=//spin;
+wave_0_per_point13=ang=tm*20 + sin(tm*76 + time*4)*0.4;
+wave_0_per_point14=sa=sin(ang);ca=cos(ang);
+wave_0_per_point15=xr=xp*sa + yp*ca;
+wave_0_per_point16=yr=xp*ca - yp*sa;
+wave_0_per_point17=zr=zp;
+wave_0_per_point18=
+wave_0_per_point19=xp=xr;
+wave_0_per_point20=yp=yr + 0.05 + (sin(tm)*0.5 + 0.5)*0.2 + 0.05;
+wave_0_per_point21=zp=zr;
+wave_0_per_point22=
+wave_0_per_point23=//wrist movement;
+wave_0_per_point24=ang=sin(tm*2);
+wave_0_per_point25=
+wave_0_per_point26=xq=xp;
+wave_0_per_point27=sa=sin(ang);ca=cos(ang);
+wave_0_per_point28=yq=yp*sa + zp*ca;
+wave_0_per_point29=zq=yp*ca - zp*sa;
+wave_0_per_point30=
+wave_0_per_point31=
+wave_0_per_point32=ang=tm*8;
+wave_0_per_point33=sa=sin(ang);ca=cos(ang);
+wave_0_per_point34=xp=xq*sa + yq*ca;
+wave_0_per_point35=yp=xq*ca - yq*sa;
+wave_0_per_point36=zp=zq;
+wave_0_per_point37=
+wave_0_per_point38=//forearm movement;
+wave_0_per_point39=zp=zp-0.3;
+wave_0_per_point40=ang=3.14 + sin(tm*2 - 0.5)*2.5;
+wave_0_per_point41=xq=xp;
+wave_0_per_point42=sa=sin(ang);ca=cos(ang);
+wave_0_per_point43=yq=yp*sa + zp*ca;
+wave_0_per_point44=zq=yp*ca - zp*sa;
+wave_0_per_point45=
+wave_0_per_point46=//upper arm twist
+wave_0_per_point47=ang=-1.0 + cos(tm*3 + 0.5);
+wave_0_per_point48=xp=xq*sa + yq*ca;
+wave_0_per_point49=yp=xq*ca - yq*sa;
+wave_0_per_point50=zp=zq;
+wave_0_per_point51=
+wave_0_per_point52=//upper arm outward;
+wave_0_per_point53=zp=zp-0.35;
+wave_0_per_point54=ang=cos(tm*1)*1.75 - 1.05;
+wave_0_per_point55=sa=sin(ang);ca=cos(ang);
+wave_0_per_point56=xq=xp*sa + zp*ca;
+wave_0_per_point57=yq=yp;
+wave_0_per_point58=zq=xp*ca - zp*sa;
+wave_0_per_point59=
+wave_0_per_point60=//upper arm up down;
+wave_0_per_point61=ang=cos(tm);
+wave_0_per_point62=xp=xq;
+wave_0_per_point63=sa=sin(ang);ca=cos(ang);
+wave_0_per_point64=yp=yq*ca - zq*sa;
+wave_0_per_point65=zp=yq*sa + zq*ca;
+wave_0_per_point66=
+wave_0_per_point67=yp=yp*0.1 - 0.2;
+wave_0_per_point68=
+wave_0_per_point69=
+wave_0_per_point70=//project into screenspace and draw on screen
+wave_0_per_point71=zp=zp+1.5;
+wave_0_per_point72=xs=xp/zp;
+wave_0_per_point73=ys=yp/zp;
+wave_0_per_point74=
+wave_0_per_point75=x=xs+0.5;
+wave_0_per_point76=y=ys*1.3+0.5;
+wave_0_per_point77=
+wave_0_per_point78=
+wave_0_per_point79=a=(1-sample)*0.3;
+wave_0_per_point80=
+wavecode_1_enabled=0
+wavecode_1_samples=512
+wavecode_1_sep=0
+wavecode_1_bSpectrum=0
+wavecode_1_bUseDots=1
+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.900000
+wavecode_1_b=0.800000
+wavecode_1_a=1.000000
+wave_1_per_point1=n=sample*6.283;
+wave_1_per_point2=phs=-sample * 0.4 ;
+wave_1_per_point3=tm=q1 + ((phs*2)/q2)*0.1 - 0.01;
+wave_1_per_point4=
+wave_1_per_point5=flip=flip+1;
+wave_1_per_point6=flip=flip*below(flip,2);
+wave_1_per_point7=
+wave_1_per_point8=xp=0;
+wave_1_per_point9=yp=(flip*0.2-0.1)*(sample);
+wave_1_per_point10=zp=0;
+wave_1_per_point11=
+wave_1_per_point12=//spin;
+wave_1_per_point13=ang=-tm*29 + sin(tm*76 + time*4)*0.4;;
+wave_1_per_point14=sa=sin(ang);ca=cos(ang);
+wave_1_per_point15=xr=xp*sa + yp*ca;
+wave_1_per_point16=yr=xp*ca - yp*sa;
+wave_1_per_point17=zr=zp;
+wave_1_per_point18=
+wave_1_per_point19=xp=xr;
+wave_1_per_point20=yp=yr + 0.05 + (sin(tm)*0.5 + 0.5)*0.2 + 0.05;
+wave_1_per_point21=zp=zr;
+wave_1_per_point22=
+wave_1_per_point23=//wrist movement;
+wave_1_per_point24=ang=sin(tm*2);
+wave_1_per_point25=
+wave_1_per_point26=xq=xp;
+wave_1_per_point27=sa=sin(ang);ca=cos(ang);
+wave_1_per_point28=yq=yp*sa + zp*ca;
+wave_1_per_point29=zq=yp*ca - zp*sa;
+wave_1_per_point30=
+wave_1_per_point31=
+wave_1_per_point32=ang=tm*8;
+wave_1_per_point33=sa=sin(ang);ca=cos(ang);
+wave_1_per_point34=xp=xq*sa + yq*ca;
+wave_1_per_point35=yp=xq*ca - yq*sa;
+wave_1_per_point36=zp=zq;
+wave_1_per_point37=
+wave_1_per_point38=//forearm movement;
+wave_1_per_point39=zp=zp-0.3;
+wave_1_per_point40=ang=3.14 + sin(tm*2 - 0.5)*2.5;
+wave_1_per_point41=xq=xp;
+wave_1_per_point42=sa=sin(ang);ca=cos(ang);
+wave_1_per_point43=yq=yp*sa + zp*ca;
+wave_1_per_point44=zq=yp*ca - zp*sa;
+wave_1_per_point45=
+wave_1_per_point46=//upper arm twist
+wave_1_per_point47=ang=-1.0 + cos(tm*3 + 0.5);
+wave_1_per_point48=xp=xq*sa + yq*ca;
+wave_1_per_point49=yp=xq*ca - yq*sa;
+wave_1_per_point50=zp=zq;
+wave_1_per_point51=
+wave_1_per_point52=//upper arm outward;
+wave_1_per_point53=zp=zp-0.35;
+wave_1_per_point54=ang=cos(tm*1)*1.75 - 1.05;
+wave_1_per_point55=sa=sin(ang);ca=cos(ang);
+wave_1_per_point56=xq=xp*sa + zp*ca;
+wave_1_per_point57=yq=yp;
+wave_1_per_point58=zq=xp*ca - zp*sa;
+wave_1_per_point59=
+wave_1_per_point60=//upper arm up down;
+wave_1_per_point61=ang=cos(tm);
+wave_1_per_point62=xp=xq;
+wave_1_per_point63=sa=sin(ang);ca=cos(ang);
+wave_1_per_point64=yp=yq*ca - zq*sa;
+wave_1_per_point65=zp=yq*sa + zq*ca;
+wave_1_per_point66=
+wave_1_per_point67=//xp=xq;yp=yq;zp=zq;
+wave_1_per_point68=
+wave_1_per_point69=
+wave_1_per_point70=//project into screenspace and draw on screen
+wave_1_per_point71=zp=zp+1.5;
+wave_1_per_point72=xs=xp/zp;
+wave_1_per_point73=ys=yp/zp;
+wave_1_per_point74=
+wave_1_per_point75=x=xs+0.5;
+wave_1_per_point76=y=ys*1.3+0.5;
+wave_1_per_point77=
+wave_1_per_point78=
+wave_1_per_point79=a=(1-sample);
+wave_1_per_point80=
+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=0.320000
+wavecode_2_b=0.000000
+wavecode_2_a=1.000000
+wave_2_per_point1=n=sample*6.283;
+wave_2_per_point2=phs=-sample * 0.4 ;
+wave_2_per_point3=tm=q1 + ((phs*2)/q2)*0.1 - 2.02;
+wave_2_per_point4=
+wave_2_per_point5=flip=flip+1;
+wave_2_per_point6=flip=flip*below(flip,2);
+wave_2_per_point7=
+wave_2_per_point8=xp=0;
+wave_2_per_point9=yp=(flip*0.2-0.1)*(sample);
+wave_2_per_point10=zp=0;
+wave_2_per_point11=
+wave_2_per_point12=//spin;
+wave_2_per_point13=ang=tm*23 + sin(tm*76 + time*4)*0.3;;
+wave_2_per_point14=sa=sin(ang);ca=cos(ang);
+wave_2_per_point15=xr=xp*sa + yp*ca;
+wave_2_per_point16=yr=xp*ca - yp*sa;
+wave_2_per_point17=zr=zp;
+wave_2_per_point18=
+wave_2_per_point19=xp=xr;
+wave_2_per_point20=yp=yr + 0.05 + (sin(tm)*0.5 + 0.5)*0.2 + 0.05;
+wave_2_per_point21=zp=zr;
+wave_2_per_point22=
+wave_2_per_point23=//wrist movement;
+wave_2_per_point24=ang=sin(tm*2);
+wave_2_per_point25=
+wave_2_per_point26=xq=xp;
+wave_2_per_point27=sa=sin(ang);ca=cos(ang);
+wave_2_per_point28=yq=yp*sa + zp*ca;
+wave_2_per_point29=zq=yp*ca - zp*sa;
+wave_2_per_point30=
+wave_2_per_point31=
+wave_2_per_point32=ang=tm*8;
+wave_2_per_point33=sa=sin(ang);ca=cos(ang);
+wave_2_per_point34=xp=xq*sa + yq*ca;
+wave_2_per_point35=yp=xq*ca - yq*sa;
+wave_2_per_point36=zp=zq;
+wave_2_per_point37=
+wave_2_per_point38=//forearm movement;
+wave_2_per_point39=zp=zp-0.3;
+wave_2_per_point40=ang=3.14 + sin(tm*2 - 0.5)*2.5;
+wave_2_per_point41=xq=xp;
+wave_2_per_point42=sa=sin(ang);ca=cos(ang);
+wave_2_per_point43=yq=yp*sa + zp*ca;
+wave_2_per_point44=zq=yp*ca - zp*sa;
+wave_2_per_point45=
+wave_2_per_point46=//upper arm twist
+wave_2_per_point47=ang=-1.0 + cos(tm*3 + 0.5);
+wave_2_per_point48=xp=xq*sa + yq*ca;
+wave_2_per_point49=yp=xq*ca - yq*sa;
+wave_2_per_point50=zp=zq;
+wave_2_per_point51=
+wave_2_per_point52=//upper arm outward;
+wave_2_per_point53=zp=zp-0.35;
+wave_2_per_point54=ang=cos(tm*1)*1.75 - 1.05;
+wave_2_per_point55=sa=sin(ang);ca=cos(ang);
+wave_2_per_point56=xq=xp*sa + zp*ca;
+wave_2_per_point57=yq=yp;
+wave_2_per_point58=zq=xp*ca - zp*sa;
+wave_2_per_point59=
+wave_2_per_point60=//upper arm up down;
+wave_2_per_point61=ang=cos(tm);
+wave_2_per_point62=xp=xq;
+wave_2_per_point63=sa=sin(ang);ca=cos(ang);
+wave_2_per_point64=yp=yq*ca - zq*sa;
+wave_2_per_point65=zp=yq*sa + zq*ca;
+wave_2_per_point66=
+wave_2_per_point67=//xp=xq;yp=yq;zp=zq;
+wave_2_per_point68=
+wave_2_per_point69=
+wave_2_per_point70=//project into screenspace and draw on screen
+wave_2_per_point71=zp=zp+1.5;
+wave_2_per_point72=xs=xp/zp;
+wave_2_per_point73=ys=yp/zp;
+wave_2_per_point74=
+wave_2_per_point75=x=xs+0.5;
+wave_2_per_point76=y=ys*1.3+0.5;
+wave_2_per_point77=
+wave_2_per_point78=
+wave_2_per_point79=a=(1-sample);
+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=1
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=0.600000
+wavecode_3_g=0.700000
+wavecode_3_b=1.000000
+wavecode_3_a=1.000000
+wave_3_per_point1=n=sample*6.283;
+wave_3_per_point2=phs=-sample * 0.4 ;
+wave_3_per_point3=tm=q1 + ((phs*2)/q2)*0.1 - 1.03;
+wave_3_per_point4=
+wave_3_per_point5=flip=flip+1;
+wave_3_per_point6=flip=flip*below(flip,2);
+wave_3_per_point7=
+wave_3_per_point8=xp=0;
+wave_3_per_point9=yp=(flip*0.15-0.075)*(sample);
+wave_3_per_point10=zp=0;
+wave_3_per_point11=
+wave_3_per_point12=//spin;
+wave_3_per_point13=ang=-tm*14 + sin(tm*76 + time*4)*0.2;;
+wave_3_per_point14=sa=sin(ang);ca=cos(ang);
+wave_3_per_point15=xr=xp*sa + yp*ca;
+wave_3_per_point16=yr=xp*ca - yp*sa;
+wave_3_per_point17=zr=zp;
+wave_3_per_point18=
+wave_3_per_point19=xp=xr;
+wave_3_per_point20=yp=yr + 0.05 + (sin(tm)*0.5 + 0.5)*0.2 + 0.05;
+wave_3_per_point21=zp=zr;
+wave_3_per_point22=
+wave_3_per_point23=//wrist movement;
+wave_3_per_point24=ang=sin(tm*2);
+wave_3_per_point25=
+wave_3_per_point26=xq=xp;
+wave_3_per_point27=sa=sin(ang);ca=cos(ang);
+wave_3_per_point28=yq=yp*sa + zp*ca;
+wave_3_per_point29=zq=yp*ca - zp*sa;
+wave_3_per_point30=
+wave_3_per_point31=
+wave_3_per_point32=ang=tm*8;
+wave_3_per_point33=sa=sin(ang);ca=cos(ang);
+wave_3_per_point34=xp=xq*sa + yq*ca;
+wave_3_per_point35=yp=xq*ca - yq*sa;
+wave_3_per_point36=zp=zq;
+wave_3_per_point37=
+wave_3_per_point38=//forearm movement;
+wave_3_per_point39=zp=zp-0.3;
+wave_3_per_point40=ang=3.14 + sin(tm*2 - 0.5)*2.5;
+wave_3_per_point41=xq=xp;
+wave_3_per_point42=sa=sin(ang);ca=cos(ang);
+wave_3_per_point43=yq=yp*sa + zp*ca;
+wave_3_per_point44=zq=yp*ca - zp*sa;
+wave_3_per_point45=
+wave_3_per_point46=//upper arm twist
+wave_3_per_point47=ang=-1.0 + cos(tm*3 + 0.5);
+wave_3_per_point48=xp=xq*sa + yq*ca;
+wave_3_per_point49=yp=xq*ca - yq*sa;
+wave_3_per_point50=zp=zq;
+wave_3_per_point51=
+wave_3_per_point52=//upper arm outward;
+wave_3_per_point53=zp=zp-0.35;
+wave_3_per_point54=ang=cos(tm*1)*1.75 - 1.05;
+wave_3_per_point55=sa=sin(ang);ca=cos(ang);
+wave_3_per_point56=xq=xp*sa + zp*ca;
+wave_3_per_point57=yq=yp;
+wave_3_per_point58=zq=xp*ca - zp*sa;
+wave_3_per_point59=
+wave_3_per_point60=//upper arm up down;
+wave_3_per_point61=ang=cos(tm)-3.5;
+wave_3_per_point62=xp=xq;
+wave_3_per_point63=sa=sin(ang);ca=cos(ang);
+wave_3_per_point64=yp=yq*ca - zq*sa;
+wave_3_per_point65=zp=yq*sa + zq*ca;
+wave_3_per_point66=
+wave_3_per_point67=//xp=xq;yp=yq;zp=zq;
+wave_3_per_point68=
+wave_3_per_point69=
+wave_3_per_point70=//project into screenspace and draw on screen
+wave_3_per_point71=zp=zp+1.5;
+wave_3_per_point72=xs=xp/zp;
+wave_3_per_point73=ys=yp/zp;
+wave_3_per_point74=
+wave_3_per_point75=x=xs+0.5;
+wave_3_per_point76=y=ys*1.3+0.5;
+wave_3_per_point77=
+wave_3_per_point78=
+wave_3_per_point79=a=(1-sample)*0.4;
+shapecode_0_enabled=0
+shapecode_0_sides=6
+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.045563
+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.700000
+shapecode_0_b=0.300000
+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=tm=q1;
+shape_0_per_frame2=
+shape_0_per_frame3=flip=flip+1;
+shape_0_per_frame4=flip=flip*below(flip,2);
+shape_0_per_frame5=
+shape_0_per_frame6=xp=0;
+shape_0_per_frame7=yp=0;
+shape_0_per_frame8=zp=0;
+shape_0_per_frame9=
+shape_0_per_frame10=//spin;
+shape_0_per_frame11=ang=tm*20 + sin(tm*76 + time*4)*0.4;
+shape_0_per_frame12=sa=sin(ang);ca=cos(ang);
+shape_0_per_frame13=xr=xp*sa + yp*ca;
+shape_0_per_frame14=yr=xp*ca - yp*sa;
+shape_0_per_frame15=zr=zp;
+shape_0_per_frame16=
+shape_0_per_frame17=xp=xr;
+shape_0_per_frame18=yp=yr + 0.05 + (sin(tm)*0.5 + 0.5)*0.2 + 0.05;
+shape_0_per_frame19=zp=zr;
+shape_0_per_frame20=
+shape_0_per_frame21=//wrist movement;
+shape_0_per_frame22=ang=sin(tm*2);
+shape_0_per_frame23=
+shape_0_per_frame24=xq=xp;
+shape_0_per_frame25=sa=sin(ang);ca=cos(ang);
+shape_0_per_frame26=yq=yp*sa + zp*ca;
+shape_0_per_frame27=zq=yp*ca - zp*sa;
+shape_0_per_frame28=
+shape_0_per_frame29=
+shape_0_per_frame30=ang=tm*8;
+shape_0_per_frame31=sa=sin(ang);ca=cos(ang);
+shape_0_per_frame32=xp=xq*sa + yq*ca;
+shape_0_per_frame33=yp=xq*ca - yq*sa;
+shape_0_per_frame34=zp=zq;
+shape_0_per_frame35=
+shape_0_per_frame36=//forearm movement;
+shape_0_per_frame37=zp=zp-0.3;
+shape_0_per_frame38=ang=3.14 + sin(tm*2 - 0.5)*2.5;
+shape_0_per_frame39=xq=xp;
+shape_0_per_frame40=sa=sin(ang);ca=cos(ang);
+shape_0_per_frame41=yq=yp*sa + zp*ca;
+shape_0_per_frame42=zq=yp*ca - zp*sa;
+shape_0_per_frame43=
+shape_0_per_frame44=//upper arm twist
+shape_0_per_frame45=ang=-1.0 + cos(tm*3 + 0.5);
+shape_0_per_frame46=xp=xq*sa + yq*ca;
+shape_0_per_frame47=yp=xq*ca - yq*sa;
+shape_0_per_frame48=zp=zq;
+shape_0_per_frame49=
+shape_0_per_frame50=//upper arm outward;
+shape_0_per_frame51=zp=zp-0.35;
+shape_0_per_frame52=ang=cos(tm*1)*1.75 - 1.05;
+shape_0_per_frame53=sa=sin(ang);ca=cos(ang);
+shape_0_per_frame54=xq=xp*sa + zp*ca;
+shape_0_per_frame55=yq=yp;
+shape_0_per_frame56=zq=xp*ca - zp*sa;
+shape_0_per_frame57=
+shape_0_per_frame58=//upper arm up down;
+shape_0_per_frame59=ang=cos(tm);
+shape_0_per_frame60=xp=xq;
+shape_0_per_frame61=sa=sin(ang);ca=cos(ang);
+shape_0_per_frame62=yp=yq*ca - zq*sa;
+shape_0_per_frame63=zp=yq*sa + zq*ca;
+shape_0_per_frame64=
+shape_0_per_frame65=//xp=xq;yp=yq;zp=zq;
+shape_0_per_frame66=
+shape_0_per_frame67=
+shape_0_per_frame68=//project into screenspace and draw on screen
+shape_0_per_frame69=zp=zp+1.5;
+shape_0_per_frame70=xs=xp/zp;
+shape_0_per_frame71=ys=yp/zp;
+shape_0_per_frame72=
+shape_0_per_frame73=x=xs+0.5;
+shape_0_per_frame74=y=ys*1.3+0.5;
+shape_0_per_frame75=
+shape_0_per_frame76=
+shape_0_per_frame77=a=0.7;
+shape_0_per_frame78=
+shapecode_1_enabled=1
+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.761306
+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=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
+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.98;
+per_frame_2=
+per_frame_3=vol=(bass+mid+treb)*0.25;
+per_frame_4=vol=vol*vol;
+per_frame_5=
+per_frame_6=vol2=(bass_att+mid_att+treb_att)*0.25;
+per_frame_7=vol2=vol2*vol2;
+per_frame_8=
+per_frame_9=q2=vol2;
+per_frame_10=
+per_frame_11=mtime=mtime+(0.03 * (sin(time)*0.5 + 0.5))*(75/fps);
+per_frame_12=
+per_frame_13=q1=mtime*1;
+per_frame_14=
+per_frame_15=
+per_frame_16=gamma=1 + min(vol*0.8,1)*0.7;
+per_frame_17=
+per_frame_18=
+per_pixel_1=zm=1.002;
+per_pixel_2=
+per_pixel_3=sx=-zm;
+per_pixel_4=sy=zm;
diff --git a/presets/Eo.S. - glowsticks v2 03 music.milk b/presets/Eo.S. - glowsticks v2 03 music.milk
new file mode 100644
index 0000000..9a2bb71
--- /dev/null
+++ b/presets/Eo.S. - glowsticks v2 03 music.milk
@@ -0,0 +1,540 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.960000
+fVideoEchoZoom=1.006596
+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=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.011726
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=0.037492
+fWarpScale=0.014889
+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.033004
+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=1
+wavecode_0_bAdditive=0
+wavecode_0_scaling=1.000000
+wavecode_0_smoothing=0.500000
+wavecode_0_r=0.100000
+wavecode_0_g=1.000000
+wavecode_0_b=0.700000
+wavecode_0_a=1.000000
+wave_0_per_frame1=t1=sin(time)*0.5+0.5;
+wave_0_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_0_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_0_per_frame4=
+wave_0_per_frame5=t4=sin(-time+1.1)*0.5+0.5;
+wave_0_per_frame6=t5=sin(-time+3.1)*0.5+0.5;
+wave_0_per_frame7=t6=sin(-time+5.2)*0.5+0.5;
+wave_0_per_point1=n=sample*6.283;
+wave_0_per_point2=phs=-sample * 0.2;
+wave_0_per_point3=tm=q1 + phs;
+wave_0_per_point4=
+wave_0_per_point5=flip=flip+1;
+wave_0_per_point6=flip=flip*below(flip,2);
+wave_0_per_point7=
+wave_0_per_point8=xp=0;
+wave_0_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;
+wave_0_per_point10=zp=0;
+wave_0_per_point11=
+wave_0_per_point12=//wrist movement;
+wave_0_per_point13=ang=sin(tm*2)*0.5 +0.5;
+wave_0_per_point14=
+wave_0_per_point15=xq=xp;
+wave_0_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point17=yq=yp*sinang + zp*cosang;
+wave_0_per_point18=zq=yp*cosang - zp*sinang;
+wave_0_per_point19=yq=yp;
+wave_0_per_point20=zq=zp;
+wave_0_per_point21=
+wave_0_per_point22=ang=tm*8;
+wave_0_per_point23=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point24=xp=xq*sinang + yq*cosang;
+wave_0_per_point25=yp=xq*cosang - yq*sinang;
+wave_0_per_point26=zp=zq;
+wave_0_per_point27=
+wave_0_per_point28=//forearm movement;
+wave_0_per_point29=zp=zp-0.3;
+wave_0_per_point30=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_0_per_point31=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point32=xq=xp;
+wave_0_per_point33=yq=yp*sinang + zp*cosang;
+wave_0_per_point34=zq=yp*cosang - zp*sinang;
+wave_0_per_point35=
+wave_0_per_point36=//upper arm twist
+wave_0_per_point37=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_0_per_point38=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point39=xp=xq*sinang + yq*cosang;
+wave_0_per_point40=yp=xq*cosang - yq*sinang;
+wave_0_per_point41=zp=zq;
+wave_0_per_point42=
+wave_0_per_point43=//upper arm outward;
+wave_0_per_point44=zp=zp-0.35;
+wave_0_per_point45=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_0_per_point46=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point47=xq=xp*sinang + zp*cosang;
+wave_0_per_point48=yq=yp;
+wave_0_per_point49=zq=xp*cosang - zp*sinang;
+wave_0_per_point50=
+wave_0_per_point51=//upper arm up down;
+wave_0_per_point52=ang=cos(tm)*0.5 - 0.5;
+wave_0_per_point53=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point54=xp=xq;
+wave_0_per_point55=yp=yq*cosang - zq*sinang;
+wave_0_per_point56=zp=yq*sinang + zq*cosang;
+wave_0_per_point57=
+wave_0_per_point58=//xp=xq;yp=yq;zp=zq;
+wave_0_per_point59=
+wave_0_per_point60=
+wave_0_per_point61=//project into screenspace and draw on screen
+wave_0_per_point62=zp=zp+2;
+wave_0_per_point63=xs=xp/zp;
+wave_0_per_point64=ys=yp/zp;
+wave_0_per_point65=
+wave_0_per_point66=x=xs+0.5;
+wave_0_per_point67=y=ys*1.3+0.5;
+wave_0_per_point68=
+wave_0_per_point69=
+wave_0_per_point70=a=(1-sample);
+wave_0_per_point71=
+wave_0_per_point72=b=b+pow(1-sample,2)*0.3;
+wave_0_per_point73=
+wave_0_per_point74=
+wave_0_per_point75=
+wave_0_per_point76=r1=t1;
+wave_0_per_point77=g1=t2;
+wave_0_per_point78=b1=t3;
+wave_0_per_point79=r2=t4;
+wave_0_per_point80=g2=t5;
+wave_0_per_point81=b2=t6;
+wave_0_per_point82=
+wave_0_per_point83=r=r1*flip + r2*(1-flip);
+wave_0_per_point84=g=g1*flip + g2*(1-flip);
+wave_0_per_point85=b=b1*flip + b2*(1-flip);
+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=0.200000
+wavecode_1_g=1.000000
+wavecode_1_b=0.600000
+wavecode_1_a=1.000000
+wave_1_per_frame1=t1=sin(time)*0.5+0.5;
+wave_1_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_1_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_1_per_frame4=
+wave_1_per_frame5=t4=sin(-time+1.1)*0.5+0.5;
+wave_1_per_frame6=t5=sin(-time+3.1)*0.5+0.5;
+wave_1_per_frame7=t6=sin(-time+5.2)*0.5+0.5;
+wave_1_per_point1=n=sample*6.283;
+wave_1_per_point2=phs=-sample * 0.2;
+wave_1_per_point3=tm=q1 + phs;
+wave_1_per_point4=
+wave_1_per_point5=flip=flip+1;
+wave_1_per_point6=flip=flip*below(flip,2);
+wave_1_per_point7=
+wave_1_per_point8=xp=0;
+wave_1_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2 +0.1;
+wave_1_per_point10=yp=-yp;
+wave_1_per_point11=zp=0;
+wave_1_per_point12=
+wave_1_per_point13=//wrist movement;
+wave_1_per_point14=ang=sin(tm*2)*0.5 +0.5;
+wave_1_per_point15=
+wave_1_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point17=xq=xp;
+wave_1_per_point18=yq=yp*sinang + zp*cosang;
+wave_1_per_point19=zq=yp*cosang - zp*sinang;
+wave_1_per_point20=yq=yp;
+wave_1_per_point21=zq=zp;
+wave_1_per_point22=
+wave_1_per_point23=ang=tm*8;
+wave_1_per_point24=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point25=xp=xq*sinang + yq*cosang;
+wave_1_per_point26=yp=xq*cosang - yq*sinang;
+wave_1_per_point27=zp=zq;
+wave_1_per_point28=
+wave_1_per_point29=//forearm movement;
+wave_1_per_point30=zp=zp-0.3;
+wave_1_per_point31=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_1_per_point32=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point33=xq=xp;
+wave_1_per_point34=yq=yp*sinang + zp*cosang;
+wave_1_per_point35=zq=yp*cosang - zp*sinang;
+wave_1_per_point36=
+wave_1_per_point37=//upper arm twist
+wave_1_per_point38=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_1_per_point39=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point40=xp=xq*sinang + yq*cosang;
+wave_1_per_point41=yp=xq*cosang - yq*sinang;
+wave_1_per_point42=zp=zq;
+wave_1_per_point43=
+wave_1_per_point44=//upper arm outward;
+wave_1_per_point45=zp=zp-0.35;
+wave_1_per_point46=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_1_per_point47=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point48=xq=xp*sinang + zp*cosang;
+wave_1_per_point49=yq=yp;
+wave_1_per_point50=zq=xp*cosang - zp*sinang;
+wave_1_per_point51=
+wave_1_per_point52=//upper arm up down;
+wave_1_per_point53=ang=cos(tm)*0.5 - 0.5;
+wave_1_per_point54=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point55=xp=xq;
+wave_1_per_point56=yp=yq*cosang - zq*sinang;
+wave_1_per_point57=zp=yq*sinang + zq*cosang;
+wave_1_per_point58=
+wave_1_per_point59=//xp=xq;yp=yq;zp=zq;
+wave_1_per_point60=
+wave_1_per_point61=
+wave_1_per_point62=//project into screenspace and draw on screen
+wave_1_per_point63=zp=zp+2;
+wave_1_per_point64=xs=xp/zp;
+wave_1_per_point65=ys=yp/zp;
+wave_1_per_point66=
+wave_1_per_point67=x=xs+0.5;
+wave_1_per_point68=y=ys*1.3+0.5;
+wave_1_per_point69=
+wave_1_per_point70=
+wave_1_per_point71=a=(1-sample);
+wave_1_per_point72=
+wave_1_per_point73=
+wave_1_per_point74=b=b+pow(1-sample,2)*0.3;
+wave_1_per_point75=
+wave_1_per_point76=r1=t1;
+wave_1_per_point77=g1=t2;
+wave_1_per_point78=b1=t3;
+wave_1_per_point79=r2=t4;
+wave_1_per_point80=g2=t5;
+wave_1_per_point81=b2=t6;
+wave_1_per_point82=
+wave_1_per_point83=r=r1*flip + r2*(1-flip);
+wave_1_per_point84=g=g1*flip + g2*(1-flip);
+wave_1_per_point85=b=b1*flip + b2*(1-flip);
+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=1
+wavecode_2_scaling=1.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=0.600000
+wavecode_2_b=0.100000
+wavecode_2_a=1.000000
+wave_2_per_point1=n=sample*6.283;
+wave_2_per_point2=tm=q1;
+wave_2_per_point3=phs=-sample*0.5;
+wave_2_per_point4=
+wave_2_per_point5=flip=flip+1;
+wave_2_per_point6=flip=flip*below(flip,2);
+wave_2_per_point7=
+wave_2_per_point8=xp=0;
+wave_2_per_point9=yp=flip*0.1;
+wave_2_per_point10=zp=0;
+wave_2_per_point11=
+wave_2_per_point12=//wrist movement;
+wave_2_per_point13=ang=sin(tm*2+phs - 2)*0.5 +0.5 + 2;
+wave_2_per_point14=
+wave_2_per_point15=xq=xp;
+wave_2_per_point16=yq=yp*sin(ang) + zp*cos(ang);
+wave_2_per_point17=zq=yp*cos(ang) - zp*sin(ang);
+wave_2_per_point18=
+wave_2_per_point19=ang=cos(tm*2+phs - 2)*1.5 ;
+wave_2_per_point20=xp=xq*sin(ang) + yq*cos(ang);
+wave_2_per_point21=yp=xq*cos(ang) - yq*sin(ang);
+wave_2_per_point22=zp=zq;
+wave_2_per_point23=
+wave_2_per_point24=//forearm movement;
+wave_2_per_point25=zp=zp-0.3;
+wave_2_per_point26=ang=3.14 + sin(tm*2+phs - 0.5)*1.5;
+wave_2_per_point27=xq=xp;
+wave_2_per_point28=yq=yp*sin(ang) + zp*cos(ang);
+wave_2_per_point29=zq=yp*cos(ang) - zp*sin(ang);
+wave_2_per_point30=
+wave_2_per_point31=//upper arm twist
+wave_2_per_point32=ang=-1.0 + cos(tm*3 + 0.5 +phs + 0.5);
+wave_2_per_point33=xp=xq*sin(ang) + yq*cos(ang);
+wave_2_per_point34=yp=xq*cos(ang) - yq*sin(ang);
+wave_2_per_point35=zp=zq;
+wave_2_per_point36=
+wave_2_per_point37=//upper arm outward;
+wave_2_per_point38=zp=zp-0.35;
+wave_2_per_point39=ang=cos(tm*2+phs)*0.75 - 1.05;
+wave_2_per_point40=xq=xp*sin(ang) + zp*cos(ang);
+wave_2_per_point41=yq=yp;
+wave_2_per_point42=zq=xp*cos(ang) - zp*sin(ang);
+wave_2_per_point43=
+wave_2_per_point44=//upper arm up down;
+wave_2_per_point45=ang=cos(tm+phs)*0.5 - 0.5;
+wave_2_per_point46=xp=xq;
+wave_2_per_point47=yp=yq*cos(ang) - zq*sin(ang);
+wave_2_per_point48=zp=yq*sin(ang) + zq*cos(ang);
+wave_2_per_point49=
+wave_2_per_point50=//xp=xq;yp=yq;zp=zq;
+wave_2_per_point51=
+wave_2_per_point52=
+wave_2_per_point53=//project into screenspace and draw on screen
+wave_2_per_point54=zp=zp+2;
+wave_2_per_point55=xs=xp/zp;
+wave_2_per_point56=ys=yp/zp;
+wave_2_per_point57=
+wave_2_per_point58=x=xs+0.5;
+wave_2_per_point59=y=ys*1.3+0.5;
+wave_2_per_point60=
+wave_2_per_point61=
+wave_2_per_point62=a=(1-sample)*0.05
+wave_2_per_point63=
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=1
+wavecode_3_bAdditive=1
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=0.300000
+wavecode_3_b=0.100000
+wavecode_3_a=1.000000
+wave_3_per_point1=n=sample*6.283;
+wave_3_per_point2=tm=q1 ;
+wave_3_per_point3=phs=-sample*0.5;
+wave_3_per_point4=
+wave_3_per_point5=flip=flip+1;
+wave_3_per_point6=flip=flip*below(flip,2);
+wave_3_per_point7=
+wave_3_per_point8=xp=0;
+wave_3_per_point9=yp=flip*0.1;
+wave_3_per_point10=zp=0;
+wave_3_per_point11=
+wave_3_per_point12=//wrist movement;
+wave_3_per_point13=ang=sin(tm*2+phs-2)*0.5 +0.5 + 2;
+wave_3_per_point14=
+wave_3_per_point15=xq=xp;
+wave_3_per_point16=yq=yp*sin(ang) + zp*cos(ang);
+wave_3_per_point17=zq=yp*cos(ang) - zp*sin(ang);
+wave_3_per_point18=
+wave_3_per_point19=ang=cos(tm*2+phs-2)*1.5;
+wave_3_per_point20=xp=xq*sin(ang) + yq*cos(ang);
+wave_3_per_point21=yp=xq*cos(ang) - yq*sin(ang);
+wave_3_per_point22=zp=zq;
+wave_3_per_point23=
+wave_3_per_point24=//forearm movement;
+wave_3_per_point25=zp=zp-0.3;
+wave_3_per_point26=ang=3.14 + sin(tm*2+phs-0.5)*1.5;
+wave_3_per_point27=xq=xp;
+wave_3_per_point28=yq=yp*sin(ang) + zp*cos(ang);
+wave_3_per_point29=zq=yp*cos(ang) - zp*sin(ang);
+wave_3_per_point30=
+wave_3_per_point31=//upper arm twist
+wave_3_per_point32=ang=-1.0 + cos(tm*3 + 0.5 +phs);
+wave_3_per_point33=xp=xq*sin(ang) + yq*cos(ang);
+wave_3_per_point34=yp=xq*cos(ang) - yq*sin(ang);
+wave_3_per_point35=zp=zq;
+wave_3_per_point36=
+wave_3_per_point37=//upper arm outward;
+wave_3_per_point38=zp=zp-0.35;
+wave_3_per_point39=ang=cos(tm*2+phs)*0.75 - 1.05;
+wave_3_per_point40=xq=xp*sin(ang) + zp*cos(ang);
+wave_3_per_point41=yq=yp;
+wave_3_per_point42=zq=xp*cos(ang) - zp*sin(ang);
+wave_3_per_point43=
+wave_3_per_point44=//upper arm up down;
+wave_3_per_point45=ang=cos(tm+phs)*0.5 - 0.5;
+wave_3_per_point46=xp=xq;
+wave_3_per_point47=yp=yq*cos(ang) - zq*sin(ang);
+wave_3_per_point48=zp=yq*sin(ang) + zq*cos(ang);
+wave_3_per_point49=
+wave_3_per_point50=//xp=xq;yp=yq;zp=zq;
+wave_3_per_point51=
+wave_3_per_point52=
+wave_3_per_point53=//project into screenspace and draw on screen
+wave_3_per_point54=zp=zp+2;
+wave_3_per_point55=xs=xp/zp;
+wave_3_per_point56=ys=yp/zp;
+wave_3_per_point57=
+wave_3_per_point58=x=-xs+0.5;
+wave_3_per_point59=y=ys*1.3+0.5;
+wave_3_per_point60=
+wave_3_per_point61=
+wave_3_per_point62=a=(1-sample)*0.05;
+wave_3_per_point63=
+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.067790
+shapecode_0_ang=0.753982
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=0.779769
+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=sin(q1*0.15);
+shape_0_per_frame2=x=sin(q1*0.5) * 0.05 + 0.5;
+shape_0_per_frame3=y=cos(q1*0.63)* 0.05 + 0.5
+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.98;
+per_frame_2=zoom=1.002;
+per_frame_3=
+per_frame_4=vol=(bass_att+mid_att+treb_att)*0.25;
+per_frame_5=vol=vol*vol;
+per_frame_6=mtime=mtime+vol*0.1*(75/fps);
+per_frame_7=
+per_frame_8=q1=mtime*0.4;
+per_frame_9=
+per_frame_10=
+per_frame_11=
+per_frame_12=
diff --git a/presets/Eo.S. - glowsticks v2 04 music minimal.milk b/presets/Eo.S. - glowsticks v2 04 music minimal.milk
new file mode 100644
index 0000000..a88599e
--- /dev/null
+++ b/presets/Eo.S. - glowsticks v2 04 music minimal.milk
@@ -0,0 +1,541 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.960000
+fVideoEchoZoom=1.006596
+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=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.011726
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=0.037492
+fWarpScale=0.014889
+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.033004
+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=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=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=0.100000
+wavecode_0_g=1.000000
+wavecode_0_b=0.700000
+wavecode_0_a=1.000000
+wave_0_per_frame1=t1=sin(time)*0.5+0.5;
+wave_0_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_0_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_0_per_frame4=
+wave_0_per_frame5=t4=sin(time+1.1)*0.5+0.5;
+wave_0_per_frame6=t5=sin(time+3.1)*0.5+0.5;
+wave_0_per_frame7=t6=sin(time+5.2)*0.5+0.5;
+wave_0_per_point1=n=sample*6.283;
+wave_0_per_point2=phs=-sample * 0.2;
+wave_0_per_point3=tm=q1 + phs;
+wave_0_per_point4=
+wave_0_per_point5=flip=flip+1;
+wave_0_per_point6=flip=flip*below(flip,2);
+wave_0_per_point7=
+wave_0_per_point8=xp=0;
+wave_0_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;
+wave_0_per_point10=zp=0;
+wave_0_per_point11=
+wave_0_per_point12=//wrist movement;
+wave_0_per_point13=ang=sin(tm*2)*0.5 +0.5;
+wave_0_per_point14=
+wave_0_per_point15=xq=xp;
+wave_0_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point17=yq=yp*sinang + zp*cosang;
+wave_0_per_point18=zq=yp*cosang - zp*sinang;
+wave_0_per_point19=yq=yp;
+wave_0_per_point20=zq=zp;
+wave_0_per_point21=
+wave_0_per_point22=ang=tm*8;
+wave_0_per_point23=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point24=xp=xq*sinang + yq*cosang;
+wave_0_per_point25=yp=xq*cosang - yq*sinang;
+wave_0_per_point26=zp=zq;
+wave_0_per_point27=
+wave_0_per_point28=//forearm movement;
+wave_0_per_point29=zp=zp-0.3;
+wave_0_per_point30=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_0_per_point31=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point32=xq=xp;
+wave_0_per_point33=yq=yp*sinang + zp*cosang;
+wave_0_per_point34=zq=yp*cosang - zp*sinang;
+wave_0_per_point35=
+wave_0_per_point36=//upper arm twist
+wave_0_per_point37=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_0_per_point38=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point39=xp=xq*sinang + yq*cosang;
+wave_0_per_point40=yp=xq*cosang - yq*sinang;
+wave_0_per_point41=zp=zq;
+wave_0_per_point42=
+wave_0_per_point43=//upper arm outward;
+wave_0_per_point44=zp=zp-0.35;
+wave_0_per_point45=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_0_per_point46=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point47=xq=xp*sinang + zp*cosang;
+wave_0_per_point48=yq=yp;
+wave_0_per_point49=zq=xp*cosang - zp*sinang;
+wave_0_per_point50=
+wave_0_per_point51=//upper arm up down;
+wave_0_per_point52=ang=cos(tm)*0.5 - 0.5;
+wave_0_per_point53=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point54=xp=xq;
+wave_0_per_point55=yp=yq*cosang - zq*sinang;
+wave_0_per_point56=zp=yq*sinang + zq*cosang;
+wave_0_per_point57=
+wave_0_per_point58=//xp=xq;yp=yq;zp=zq;
+wave_0_per_point59=
+wave_0_per_point60=
+wave_0_per_point61=//project into screenspace and draw on screen
+wave_0_per_point62=zp=zp+2;
+wave_0_per_point63=xs=xp/zp;
+wave_0_per_point64=ys=yp/zp;
+wave_0_per_point65=
+wave_0_per_point66=x=xs+0.5;
+wave_0_per_point67=y=ys*1.3+0.5;
+wave_0_per_point68=
+wave_0_per_point69=
+wave_0_per_point70=a=(1-sample);
+wave_0_per_point71=
+wave_0_per_point72=b=b+pow(1-sample,2)*0.3;
+wave_0_per_point73=
+wave_0_per_point74=
+wave_0_per_point75=
+wave_0_per_point76=r1=t1;
+wave_0_per_point77=g1=t2;
+wave_0_per_point78=b1=t3;
+wave_0_per_point79=r2=t4;
+wave_0_per_point80=g2=t5;
+wave_0_per_point81=b2=t6;
+wave_0_per_point82=
+wave_0_per_point83=r=r1*flip + r2*(1-flip);
+wave_0_per_point84=g=g1*flip + g2*(1-flip);
+wave_0_per_point85=b=b1*flip + b2*(1-flip);
+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=0.200000
+wavecode_1_g=1.000000
+wavecode_1_b=0.600000
+wavecode_1_a=1.000000
+wave_1_per_frame1=t1=sin(time)*0.5+0.5;
+wave_1_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_1_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_1_per_frame4=
+wave_1_per_frame5=t4=sin(time+1.1)*0.5+0.5;
+wave_1_per_frame6=t5=sin(time+3.1)*0.5+0.5;
+wave_1_per_frame7=t6=sin(time+5.2)*0.5+0.5;
+wave_1_per_point1=n=sample*6.283;
+wave_1_per_point2=phs=-sample * 0.2;
+wave_1_per_point3=tm=q1 + phs;
+wave_1_per_point4=
+wave_1_per_point5=flip=flip+1;
+wave_1_per_point6=flip=flip*below(flip,2);
+wave_1_per_point7=
+wave_1_per_point8=xp=0;
+wave_1_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2 +0.1;
+wave_1_per_point10=yp=-yp;
+wave_1_per_point11=zp=0;
+wave_1_per_point12=
+wave_1_per_point13=//wrist movement;
+wave_1_per_point14=ang=sin(tm*2)*0.5 +0.5;
+wave_1_per_point15=
+wave_1_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point17=xq=xp;
+wave_1_per_point18=yq=yp*sinang + zp*cosang;
+wave_1_per_point19=zq=yp*cosang - zp*sinang;
+wave_1_per_point20=yq=yp;
+wave_1_per_point21=zq=zp;
+wave_1_per_point22=
+wave_1_per_point23=ang=tm*8;
+wave_1_per_point24=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point25=xp=xq*sinang + yq*cosang;
+wave_1_per_point26=yp=xq*cosang - yq*sinang;
+wave_1_per_point27=zp=zq;
+wave_1_per_point28=
+wave_1_per_point29=//forearm movement;
+wave_1_per_point30=zp=zp-0.3;
+wave_1_per_point31=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_1_per_point32=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point33=xq=xp;
+wave_1_per_point34=yq=yp*sinang + zp*cosang;
+wave_1_per_point35=zq=yp*cosang - zp*sinang;
+wave_1_per_point36=
+wave_1_per_point37=//upper arm twist
+wave_1_per_point38=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_1_per_point39=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point40=xp=xq*sinang + yq*cosang;
+wave_1_per_point41=yp=xq*cosang - yq*sinang;
+wave_1_per_point42=zp=zq;
+wave_1_per_point43=
+wave_1_per_point44=//upper arm outward;
+wave_1_per_point45=zp=zp-0.35;
+wave_1_per_point46=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_1_per_point47=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point48=xq=xp*sinang + zp*cosang;
+wave_1_per_point49=yq=yp;
+wave_1_per_point50=zq=xp*cosang - zp*sinang;
+wave_1_per_point51=
+wave_1_per_point52=//upper arm up down;
+wave_1_per_point53=ang=cos(tm)*0.5 - 0.5;
+wave_1_per_point54=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point55=xp=xq;
+wave_1_per_point56=yp=yq*cosang - zq*sinang;
+wave_1_per_point57=zp=yq*sinang + zq*cosang;
+wave_1_per_point58=
+wave_1_per_point59=//xp=xq;yp=yq;zp=zq;
+wave_1_per_point60=
+wave_1_per_point61=
+wave_1_per_point62=//project into screenspace and draw on screen
+wave_1_per_point63=zp=zp+2;
+wave_1_per_point64=xs=xp/zp;
+wave_1_per_point65=ys=yp/zp;
+wave_1_per_point66=
+wave_1_per_point67=x=xs+0.5;
+wave_1_per_point68=y=ys*1.3+0.5;
+wave_1_per_point69=
+wave_1_per_point70=
+wave_1_per_point71=a=(1-sample);
+wave_1_per_point72=
+wave_1_per_point73=
+wave_1_per_point74=b=b+pow(1-sample,2)*0.3;
+wave_1_per_point75=
+wave_1_per_point76=r1=t1;
+wave_1_per_point77=g1=t2;
+wave_1_per_point78=b1=t3;
+wave_1_per_point79=r2=t4;
+wave_1_per_point80=g2=t5;
+wave_1_per_point81=b2=t6;
+wave_1_per_point82=
+wave_1_per_point83=r=r1*flip + r2*(1-flip);
+wave_1_per_point84=g=g1*flip + g2*(1-flip);
+wave_1_per_point85=b=b1*flip + b2*(1-flip);
+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=1
+wavecode_2_scaling=1.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=0.600000
+wavecode_2_b=0.100000
+wavecode_2_a=1.000000
+wave_2_per_point1=n=sample*6.283;
+wave_2_per_point2=tm=q1;
+wave_2_per_point3=phs=-sample*0.5;
+wave_2_per_point4=
+wave_2_per_point5=flip=flip+1;
+wave_2_per_point6=flip=flip*below(flip,2);
+wave_2_per_point7=
+wave_2_per_point8=xp=0;
+wave_2_per_point9=yp=flip*0.1;
+wave_2_per_point10=zp=0;
+wave_2_per_point11=
+wave_2_per_point12=//wrist movement;
+wave_2_per_point13=ang=sin(tm*2+phs - 2)*0.5 +0.5 + 2;
+wave_2_per_point14=
+wave_2_per_point15=xq=xp;
+wave_2_per_point16=yq=yp*sin(ang) + zp*cos(ang);
+wave_2_per_point17=zq=yp*cos(ang) - zp*sin(ang);
+wave_2_per_point18=
+wave_2_per_point19=ang=cos(tm*2+phs - 2)*1.5 ;
+wave_2_per_point20=xp=xq*sin(ang) + yq*cos(ang);
+wave_2_per_point21=yp=xq*cos(ang) - yq*sin(ang);
+wave_2_per_point22=zp=zq;
+wave_2_per_point23=
+wave_2_per_point24=//forearm movement;
+wave_2_per_point25=zp=zp-0.3;
+wave_2_per_point26=ang=3.14 + sin(tm*2+phs - 0.5)*1.5;
+wave_2_per_point27=xq=xp;
+wave_2_per_point28=yq=yp*sin(ang) + zp*cos(ang);
+wave_2_per_point29=zq=yp*cos(ang) - zp*sin(ang);
+wave_2_per_point30=
+wave_2_per_point31=//upper arm twist
+wave_2_per_point32=ang=-1.0 + cos(tm*3 + 0.5 +phs + 0.5);
+wave_2_per_point33=xp=xq*sin(ang) + yq*cos(ang);
+wave_2_per_point34=yp=xq*cos(ang) - yq*sin(ang);
+wave_2_per_point35=zp=zq;
+wave_2_per_point36=
+wave_2_per_point37=//upper arm outward;
+wave_2_per_point38=zp=zp-0.35;
+wave_2_per_point39=ang=cos(tm*2+phs)*0.75 - 1.05;
+wave_2_per_point40=xq=xp*sin(ang) + zp*cos(ang);
+wave_2_per_point41=yq=yp;
+wave_2_per_point42=zq=xp*cos(ang) - zp*sin(ang);
+wave_2_per_point43=
+wave_2_per_point44=//upper arm up down;
+wave_2_per_point45=ang=cos(tm+phs)*0.5 - 0.5;
+wave_2_per_point46=xp=xq;
+wave_2_per_point47=yp=yq*cos(ang) - zq*sin(ang);
+wave_2_per_point48=zp=yq*sin(ang) + zq*cos(ang);
+wave_2_per_point49=
+wave_2_per_point50=//xp=xq;yp=yq;zp=zq;
+wave_2_per_point51=
+wave_2_per_point52=
+wave_2_per_point53=//project into screenspace and draw on screen
+wave_2_per_point54=zp=zp+2;
+wave_2_per_point55=xs=xp/zp;
+wave_2_per_point56=ys=yp/zp;
+wave_2_per_point57=
+wave_2_per_point58=x=xs+0.5;
+wave_2_per_point59=y=ys*1.3+0.5;
+wave_2_per_point60=
+wave_2_per_point61=
+wave_2_per_point62=a=(1-sample)*0.05
+wave_2_per_point63=
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=0
+wavecode_3_bDrawThick=1
+wavecode_3_bAdditive=1
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=0.300000
+wavecode_3_b=0.100000
+wavecode_3_a=1.000000
+wave_3_per_point1=n=sample*6.283;
+wave_3_per_point2=tm=q1 ;
+wave_3_per_point3=phs=-sample*0.5;
+wave_3_per_point4=
+wave_3_per_point5=flip=flip+1;
+wave_3_per_point6=flip=flip*below(flip,2);
+wave_3_per_point7=
+wave_3_per_point8=xp=0;
+wave_3_per_point9=yp=flip*0.1;
+wave_3_per_point10=zp=0;
+wave_3_per_point11=
+wave_3_per_point12=//wrist movement;
+wave_3_per_point13=ang=sin(tm*2+phs-2)*0.5 +0.5 + 2;
+wave_3_per_point14=
+wave_3_per_point15=xq=xp;
+wave_3_per_point16=yq=yp*sin(ang) + zp*cos(ang);
+wave_3_per_point17=zq=yp*cos(ang) - zp*sin(ang);
+wave_3_per_point18=
+wave_3_per_point19=ang=cos(tm*2+phs-2)*1.5;
+wave_3_per_point20=xp=xq*sin(ang) + yq*cos(ang);
+wave_3_per_point21=yp=xq*cos(ang) - yq*sin(ang);
+wave_3_per_point22=zp=zq;
+wave_3_per_point23=
+wave_3_per_point24=//forearm movement;
+wave_3_per_point25=zp=zp-0.3;
+wave_3_per_point26=ang=3.14 + sin(tm*2+phs-0.5)*1.5;
+wave_3_per_point27=xq=xp;
+wave_3_per_point28=yq=yp*sin(ang) + zp*cos(ang);
+wave_3_per_point29=zq=yp*cos(ang) - zp*sin(ang);
+wave_3_per_point30=
+wave_3_per_point31=//upper arm twist
+wave_3_per_point32=ang=-1.0 + cos(tm*3 + 0.5 +phs);
+wave_3_per_point33=xp=xq*sin(ang) + yq*cos(ang);
+wave_3_per_point34=yp=xq*cos(ang) - yq*sin(ang);
+wave_3_per_point35=zp=zq;
+wave_3_per_point36=
+wave_3_per_point37=//upper arm outward;
+wave_3_per_point38=zp=zp-0.35;
+wave_3_per_point39=ang=cos(tm*2+phs)*0.75 - 1.05;
+wave_3_per_point40=xq=xp*sin(ang) + zp*cos(ang);
+wave_3_per_point41=yq=yp;
+wave_3_per_point42=zq=xp*cos(ang) - zp*sin(ang);
+wave_3_per_point43=
+wave_3_per_point44=//upper arm up down;
+wave_3_per_point45=ang=cos(tm+phs)*0.5 - 0.5;
+wave_3_per_point46=xp=xq;
+wave_3_per_point47=yp=yq*cos(ang) - zq*sin(ang);
+wave_3_per_point48=zp=yq*sin(ang) + zq*cos(ang);
+wave_3_per_point49=
+wave_3_per_point50=//xp=xq;yp=yq;zp=zq;
+wave_3_per_point51=
+wave_3_per_point52=
+wave_3_per_point53=//project into screenspace and draw on screen
+wave_3_per_point54=zp=zp+2;
+wave_3_per_point55=xs=xp/zp;
+wave_3_per_point56=ys=yp/zp;
+wave_3_per_point57=
+wave_3_per_point58=x=-xs+0.5;
+wave_3_per_point59=y=ys*1.3+0.5;
+wave_3_per_point60=
+wave_3_per_point61=
+wave_3_per_point62=a=(1-sample)*0.05;
+wave_3_per_point63=
+shapecode_0_enabled=0
+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.067790
+shapecode_0_ang=0.753982
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=0.779769
+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=sin(q1*0.15);
+shape_0_per_frame2=x=sin(q1*0.5) * 0.05 + 0.5;
+shape_0_per_frame3=y=cos(q1*0.63)* 0.05 + 0.5
+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=warp=0
+per_frame_init_9=
+per_frame_1=decay=0.98;
+per_frame_2=zoom=1.002;
+per_frame_3=
+per_frame_4=vol=(bass_att+mid_att+treb_att)*0.25;
+per_frame_5=vol=vol*vol;
+per_frame_6=mtime=mtime+vol*0.1*(75/fps);
+per_frame_7=
+per_frame_8=q1=mtime*0.4;
+per_frame_9=
+per_frame_10=warp=0
+per_frame_11=
+per_frame_12=
diff --git "a/presets/Eo.S. - glowsticks v2 05 and proton lights \050+Krash\047s beat code\051 _Phat_remix02b.milk" "b/presets/Eo.S. - glowsticks v2 05 and proton lights \050+Krash\047s beat code\051 _Phat_remix02b.milk"
new file mode 100644
index 0000000..28bad93
--- /dev/null
+++ "b/presets/Eo.S. - glowsticks v2 05 and proton lights \050+Krash\047s beat code\051 _Phat_remix02b.milk"
@@ -0,0 +1,682 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.210000
+fDecay=0.960000
+fVideoEchoZoom=0.996630
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=1
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=1
+bDarken=0
+bSolarize=0
+bInvert=1
+fWaveAlpha=0.001000
+fWaveScale=0.011726
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=0.037492
+fWarpScale=0.014889
+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.033004
+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.055000
+ob_r=1.000000
+ob_g=1.000000
+ob_b=1.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=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=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=0.100000
+wavecode_0_g=1.000000
+wavecode_0_b=0.700000
+wavecode_0_a=1.000000
+wave_0_per_frame1=t1=sin(time)*0.5+0.5;
+wave_0_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_0_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_0_per_frame4=
+wave_0_per_frame5=t4=sin(time+1.1)*0.5+0.5;
+wave_0_per_frame6=t5=sin(time+3.1)*0.5+0.5;
+wave_0_per_frame7=t6=sin(time+5.2)*0.5+0.5;
+wave_0_per_point1=n=sample*6.283;
+wave_0_per_point2=phs=-sample * 0.2;
+wave_0_per_point3=tm=q1 + phs;
+wave_0_per_point4=
+wave_0_per_point5=flip=flip+1;
+wave_0_per_point6=flip=flip*below(flip,2);
+wave_0_per_point7=
+wave_0_per_point8=xp=0;
+wave_0_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;
+wave_0_per_point10=zp=0;
+wave_0_per_point11=
+wave_0_per_point12=//wrist movement;
+wave_0_per_point13=ang=sin(tm*2 )*0.5 +0.5;
+wave_0_per_point14=
+wave_0_per_point15=xq=xp;
+wave_0_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point17=yq=yp*sinang + zp*cosang;
+wave_0_per_point18=zq=yp*cosang - zp*sinang;
+wave_0_per_point19=yq=yp;
+wave_0_per_point20=zq=zp;
+wave_0_per_point21=
+wave_0_per_point22=ang=tm*8;
+wave_0_per_point23=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point24=xp=xq*sinang + yq*cosang;
+wave_0_per_point25=yp=xq*cosang - yq*sinang;
+wave_0_per_point26=zp=zq;
+wave_0_per_point27=
+wave_0_per_point28=//forearm movement;
+wave_0_per_point29=zp=zp-0.3;
+wave_0_per_point30=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_0_per_point31=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point32=xq=xp;
+wave_0_per_point33=yq=yp*sinang + zp*cosang;
+wave_0_per_point34=zq=yp*cosang - zp*sinang;
+wave_0_per_point35=
+wave_0_per_point36=//upper arm twist
+wave_0_per_point37=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_0_per_point38=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point39=xp=xq*sinang + yq*cosang;
+wave_0_per_point40=yp=xq*cosang - yq*sinang;
+wave_0_per_point41=zp=zq;
+wave_0_per_point42=
+wave_0_per_point43=//upper arm outward;
+wave_0_per_point44=zp=zp-0.35;
+wave_0_per_point45=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_0_per_point46=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point47=xq=xp*sinang + zp*cosang;
+wave_0_per_point48=yq=yp;
+wave_0_per_point49=zq=xp*cosang - zp*sinang;
+wave_0_per_point50=
+wave_0_per_point51=//upper arm up down;
+wave_0_per_point52=ang=cos(tm)*0.5 - 0.5;
+wave_0_per_point53=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point54=xp=xq;
+wave_0_per_point55=yp=yq*cosang - zq*sinang;
+wave_0_per_point56=zp=yq*sinang + zq*cosang;
+wave_0_per_point57=
+wave_0_per_point58=//xp=xq;yp=yq;zp=zq;
+wave_0_per_point59=
+wave_0_per_point60=
+wave_0_per_point61=//project into screenspace and draw on screen
+wave_0_per_point62=zp=zp+2;
+wave_0_per_point63=xs=xp/zp;
+wave_0_per_point64=ys=yp/zp;
+wave_0_per_point65=
+wave_0_per_point66=x=xs+0.5;
+wave_0_per_point67=y=ys*1.3+0.5;
+wave_0_per_point68=
+wave_0_per_point69=
+wave_0_per_point70=a=if( equal(q8,1) , (1-sample) , sample);
+wave_0_per_point71=a=a*a;
+wave_0_per_point72=
+wave_0_per_point73=b=b+pow(1-sample,2)*0.3;
+wave_0_per_point74=
+wave_0_per_point75=
+wave_0_per_point76=
+wave_0_per_point77=r1=t1;
+wave_0_per_point78=g1=t2;
+wave_0_per_point79=b1=t3;
+wave_0_per_point80=r2=t4;
+wave_0_per_point81=g2=t5;
+wave_0_per_point82=b2=t6;
+wave_0_per_point83=
+wave_0_per_point84=r=r1*flip + r2*(1-flip);
+wave_0_per_point85=g=g1*flip + g2*(1-flip);
+wave_0_per_point86=b=b1*flip + b2*(1-flip);
+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=0.200000
+wavecode_1_g=1.000000
+wavecode_1_b=0.600000
+wavecode_1_a=1.000000
+wave_1_per_frame1=t1=sin(time)*0.5+0.5;
+wave_1_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_1_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_1_per_frame4=
+wave_1_per_frame5=t4=sin(time+1.1)*0.5+0.5;
+wave_1_per_frame6=t5=sin(time+3.1)*0.5+0.5;
+wave_1_per_frame7=t6=sin(time+5.2)*0.5+0.5;
+wave_1_per_point1=n=sample*6.283;
+wave_1_per_point2=phs=-sample * 0.2;
+wave_1_per_point3=tm=q1 + phs;
+wave_1_per_point4=
+wave_1_per_point5=flip=flip+1;
+wave_1_per_point6=flip=flip*below(flip,2);
+wave_1_per_point7=
+wave_1_per_point8=xp=0;
+wave_1_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2 +0.1;
+wave_1_per_point10=yp=-yp;
+wave_1_per_point11=zp=0;
+wave_1_per_point12=
+wave_1_per_point13=//wrist movement;
+wave_1_per_point14=ang=sin(tm*2)*0.5 +0.5;
+wave_1_per_point15=
+wave_1_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point17=xq=xp;
+wave_1_per_point18=yq=yp*sinang + zp*cosang;
+wave_1_per_point19=zq=yp*cosang - zp*sinang;
+wave_1_per_point20=yq=yp;
+wave_1_per_point21=zq=zp;
+wave_1_per_point22=
+wave_1_per_point23=ang=tm*8;
+wave_1_per_point24=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point25=xp=xq*sinang + yq*cosang;
+wave_1_per_point26=yp=xq*cosang - yq*sinang;
+wave_1_per_point27=zp=zq;
+wave_1_per_point28=
+wave_1_per_point29=//forearm movement;
+wave_1_per_point30=zp=zp-0.3;
+wave_1_per_point31=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_1_per_point32=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point33=xq=xp;
+wave_1_per_point34=yq=yp*sinang + zp*cosang;
+wave_1_per_point35=zq=yp*cosang - zp*sinang;
+wave_1_per_point36=
+wave_1_per_point37=//upper arm twist
+wave_1_per_point38=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_1_per_point39=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point40=xp=xq*sinang + yq*cosang;
+wave_1_per_point41=yp=xq*cosang - yq*sinang;
+wave_1_per_point42=zp=zq;
+wave_1_per_point43=
+wave_1_per_point44=//upper arm outward;
+wave_1_per_point45=zp=zp-0.35;
+wave_1_per_point46=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_1_per_point47=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point48=xq=xp*sinang + zp*cosang;
+wave_1_per_point49=yq=yp;
+wave_1_per_point50=zq=xp*cosang - zp*sinang;
+wave_1_per_point51=
+wave_1_per_point52=//upper arm up down;
+wave_1_per_point53=ang=cos(tm)*0.5 - 0.5;
+wave_1_per_point54=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point55=xp=xq;
+wave_1_per_point56=yp=yq*cosang - zq*sinang;
+wave_1_per_point57=zp=yq*sinang + zq*cosang;
+wave_1_per_point58=
+wave_1_per_point59=//xp=xq;yp=yq;zp=zq;
+wave_1_per_point60=
+wave_1_per_point61=
+wave_1_per_point62=//project into screenspace and draw on screen
+wave_1_per_point63=zp=zp+2;
+wave_1_per_point64=xs=xp/zp;
+wave_1_per_point65=ys=yp/zp;
+wave_1_per_point66=
+wave_1_per_point67=x=xs+0.5;
+wave_1_per_point68=y=ys*1.3+0.5;
+wave_1_per_point69=
+wave_1_per_point70=
+wave_1_per_point71=a=if( equal(q8,1) , (1-sample) , sample);
+wave_1_per_point72=a=a*a;
+wave_1_per_point73=
+wave_1_per_point74=
+wave_1_per_point75=b=b+pow(1-sample,2)*0.3;
+wave_1_per_point76=
+wave_1_per_point77=r1=t1;
+wave_1_per_point78=g1=t2;
+wave_1_per_point79=b1=t3;
+wave_1_per_point80=r2=t4;
+wave_1_per_point81=g2=t5;
+wave_1_per_point82=b2=t6;
+wave_1_per_point83=
+wave_1_per_point84=r=r1*flip + r2*(1-flip);
+wave_1_per_point85=g=g1*flip + g2*(1-flip);
+wave_1_per_point86=b=b1*flip + b2*(1-flip);
+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=1
+wavecode_2_scaling=1.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=0.600000
+wavecode_2_b=0.100000
+wavecode_2_a=1.000000
+wave_2_per_frame1=t1=sin(time)*0.5+0.5;
+wave_2_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_2_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_2_per_frame4=
+wave_2_per_frame5=t4=sin(time+1.1)*0.5+0.5;
+wave_2_per_frame6=t5=sin(time+3.1)*0.5+0.5;
+wave_2_per_frame7=t6=sin(time+5.2)*0.5+0.5;
+wave_2_per_frame8=
+wave_2_per_frame9=
+wave_2_per_frame10=t8= int( sin(time*2)*2 + 3);
+wave_2_per_point1=n=sample*6.283;
+wave_2_per_point2=phs=-sample * 0.2;
+wave_2_per_point3=tm=q1 + phs;
+wave_2_per_point4=
+wave_2_per_point5=flip=flip+1;
+wave_2_per_point6=flip=flip*below(flip,2);
+wave_2_per_point7=
+wave_2_per_point8=xp=0;
+wave_2_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;
+wave_2_per_point10=zp=0;
+wave_2_per_point11=
+wave_2_per_point12=//wrist movement;
+wave_2_per_point13=ang=sin(tm*2)*0.5 +0.5;
+wave_2_per_point14=
+wave_2_per_point15=xq=xp;
+wave_2_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point17=yq=yp*sinang + zp*cosang;
+wave_2_per_point18=zq=yp*cosang - zp*sinang;
+wave_2_per_point19=yq=yp;
+wave_2_per_point20=zq=zp;
+wave_2_per_point21=
+wave_2_per_point22=ang=tm*8 + 1;
+wave_2_per_point23=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point24=xp=xq*sinang + yq*cosang;
+wave_2_per_point25=yp=xq*cosang - yq*sinang;
+wave_2_per_point26=zp=zq;
+wave_2_per_point27=
+wave_2_per_point28=//forearm movement;
+wave_2_per_point29=zp=zp-0.3;
+wave_2_per_point30=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_2_per_point31=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point32=xq=xp;
+wave_2_per_point33=yq=yp*sinang + zp*cosang;
+wave_2_per_point34=zq=yp*cosang - zp*sinang;
+wave_2_per_point35=
+wave_2_per_point36=//upper arm twist
+wave_2_per_point37=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_2_per_point38=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point39=xp=xq*sinang + yq*cosang;
+wave_2_per_point40=yp=xq*cosang - yq*sinang;
+wave_2_per_point41=zp=zq;
+wave_2_per_point42=
+wave_2_per_point43=//upper arm outward;
+wave_2_per_point44=zp=zp-0.35;
+wave_2_per_point45=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_2_per_point46=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point47=xq=xp*sinang + zp*cosang;
+wave_2_per_point48=yq=yp;
+wave_2_per_point49=zq=xp*cosang - zp*sinang;
+wave_2_per_point50=
+wave_2_per_point51=//upper arm up down;
+wave_2_per_point52=ang=cos(tm)*0.5 - 0.5;
+wave_2_per_point53=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point54=xp=xq;
+wave_2_per_point55=yp=yq*cosang - zq*sinang;
+wave_2_per_point56=zp=yq*sinang + zq*cosang;
+wave_2_per_point57=
+wave_2_per_point58=//xp=xq;yp=yq;zp=zq;
+wave_2_per_point59=
+wave_2_per_point60=
+wave_2_per_point61=//project into screenspace and draw on screen
+wave_2_per_point62=zp=zp+2;
+wave_2_per_point63=xs=xp/zp;
+wave_2_per_point64=ys=yp/zp;
+wave_2_per_point65=
+wave_2_per_point66=x=xs+0.5;
+wave_2_per_point67=y=ys*1.3+0.5;
+wave_2_per_point68=
+wave_2_per_point69=a=if( equal(q8,1) , (1-sample) , sample);
+wave_2_per_point70=
+wave_2_per_point71=
+wave_2_per_point72=a=a* above( sin(tm*128*t8) , 0 );
+wave_2_per_point73=
+wave_2_per_point74=
+wave_2_per_point75=r=t4;
+wave_2_per_point76=g=t5;
+wave_2_per_point77=b=t6;
+wave_2_per_point78=
+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=1
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=0.300000
+wavecode_3_b=0.100000
+wavecode_3_a=1.000000
+wave_3_per_frame1=t1=sin(time)*0.5+0.5;
+wave_3_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_3_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_3_per_frame4=
+wave_3_per_frame5=t4=sin(time+1.1)*0.5+0.5;
+wave_3_per_frame6=t5=sin(time+3.1)*0.5+0.5;
+wave_3_per_frame7=t6=sin(time+5.2)*0.5+0.5;
+wave_3_per_frame8=
+wave_3_per_frame9=
+wave_3_per_frame10=t8= int( sin(time*2)*2 + 3);
+wave_3_per_point1=n=sample*6.283;
+wave_3_per_point2=phs=-sample * 0.2;
+wave_3_per_point3=tm=q1 + phs;
+wave_3_per_point4=
+wave_3_per_point5=flip=flip+1;
+wave_3_per_point6=flip=flip*below(flip,2);
+wave_3_per_point7=
+wave_3_per_point8=xp=0;
+wave_3_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2 +0.1;
+wave_3_per_point10=yp=-yp;
+wave_3_per_point11=zp=0;
+wave_3_per_point12=
+wave_3_per_point13=//wrist movement;
+wave_3_per_point14=ang=sin(tm*2)*0.5 +0.5;
+wave_3_per_point15=
+wave_3_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point17=xq=xp;
+wave_3_per_point18=yq=yp*sinang + zp*cosang;
+wave_3_per_point19=zq=yp*cosang - zp*sinang;
+wave_3_per_point20=yq=yp;
+wave_3_per_point21=zq=zp;
+wave_3_per_point22=
+wave_3_per_point23=ang=tm*8+1;
+wave_3_per_point24=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point25=xp=xq*sinang + yq*cosang;
+wave_3_per_point26=yp=xq*cosang - yq*sinang;
+wave_3_per_point27=zp=zq;
+wave_3_per_point28=
+wave_3_per_point29=//forearm movement;
+wave_3_per_point30=zp=zp-0.3;
+wave_3_per_point31=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_3_per_point32=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point33=xq=xp;
+wave_3_per_point34=yq=yp*sinang + zp*cosang;
+wave_3_per_point35=zq=yp*cosang - zp*sinang;
+wave_3_per_point36=
+wave_3_per_point37=//upper arm twist
+wave_3_per_point38=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_3_per_point39=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point40=xp=xq*sinang + yq*cosang;
+wave_3_per_point41=yp=xq*cosang - yq*sinang;
+wave_3_per_point42=zp=zq;
+wave_3_per_point43=
+wave_3_per_point44=//upper arm outward;
+wave_3_per_point45=zp=zp-0.35;
+wave_3_per_point46=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_3_per_point47=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point48=xq=xp*sinang + zp*cosang;
+wave_3_per_point49=yq=yp;
+wave_3_per_point50=zq=xp*cosang - zp*sinang;
+wave_3_per_point51=
+wave_3_per_point52=//upper arm up down;
+wave_3_per_point53=ang=cos(tm)*0.5 - 0.5;
+wave_3_per_point54=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point55=xp=xq;
+wave_3_per_point56=yp=yq*cosang - zq*sinang;
+wave_3_per_point57=zp=yq*sinang + zq*cosang;
+wave_3_per_point58=
+wave_3_per_point59=//xp=xq;yp=yq;zp=zq;
+wave_3_per_point60=
+wave_3_per_point61=
+wave_3_per_point62=//project into screenspace and draw on screen
+wave_3_per_point63=zp=zp+2;
+wave_3_per_point64=xs=xp/zp;
+wave_3_per_point65=ys=yp/zp;
+wave_3_per_point66=
+wave_3_per_point67=x=xs+0.5;
+wave_3_per_point68=y=ys*1.3+0.5;
+wave_3_per_point69=
+wave_3_per_point70=
+wave_3_per_point71=a=if( equal(q8,1) , (1-sample) , sample);
+wave_3_per_point72=a=a*a;
+wave_3_per_point73=
+wave_3_per_point74=a=a* above( sin(tm*128*t8) , 0 );
+wave_3_per_point75=
+wave_3_per_point76=
+wave_3_per_point77=r=t4;
+wave_3_per_point78=g=t5;
+wave_3_per_point79=b=t6;
+shapecode_0_enabled=0
+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.067790
+shapecode_0_ang=0.753982
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=0.779769
+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=sin(q1*0.15);
+shape_0_per_frame2=x=sin(q1*0.5) * 0.05 + 0.5;
+shape_0_per_frame3=y=cos(q1*0.63)* 0.05 + 0.5
+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=5
+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.038091
+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.600000
+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=tm=q1;
+shape_3_per_frame2=
+shape_3_per_frame3=xp=0;
+shape_3_per_frame4=yp=0.1;
+shape_3_per_frame5=zp=0;
+shape_3_per_frame6=
+shape_3_per_frame7=//wrist movement;
+shape_3_per_frame8=ang=sin(tm*2 )*0.5 +0.5;
+shape_3_per_frame9=
+shape_3_per_frame10=xq=xp;
+shape_3_per_frame11=sinang=sin(ang);cosang=cos(ang);
+shape_3_per_frame12=yq=yp*sinang + zp*cosang;
+shape_3_per_frame13=zq=yp*cosang - zp*sinang;
+shape_3_per_frame14=yq=yp;
+shape_3_per_frame15=zq=zp;
+shape_3_per_frame16=
+shape_3_per_frame17=ang=tm*8;
+shape_3_per_frame18=sinang=sin(ang);cosang=cos(ang);
+shape_3_per_frame19=xp=xq*sinang + yq*cosang;
+shape_3_per_frame20=yp=xq*cosang - yq*sinang;
+shape_3_per_frame21=zp=zq;
+shape_3_per_frame22=
+shape_3_per_frame23=//forearm movement;
+shape_3_per_frame24=zp=zp-0.3;
+shape_3_per_frame25=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+shape_3_per_frame26=sinang=sin(ang);cosang=cos(ang);
+shape_3_per_frame27=xq=xp;
+shape_3_per_frame28=yq=yp*sinang + zp*cosang;
+shape_3_per_frame29=zq=yp*cosang - zp*sinang;
+shape_3_per_frame30=
+shape_3_per_frame31=//upper arm twist
+shape_3_per_frame32=ang=-1.0 + cos(tm*3.1 + 0.5);
+shape_3_per_frame33=sinang=sin(ang);cosang=cos(ang);
+shape_3_per_frame34=xp=xq*sinang + yq*cosang;
+shape_3_per_frame35=yp=xq*cosang - yq*sinang;
+shape_3_per_frame36=zp=zq;
+shape_3_per_frame37=
+shape_3_per_frame38=//upper arm outward;
+shape_3_per_frame39=zp=zp-0.35;
+shape_3_per_frame40=ang=cos(tm*2.3)*1.75 - 1.05;
+shape_3_per_frame41=sinang=sin(ang);cosang=cos(ang);
+shape_3_per_frame42=xq=xp*sinang + zp*cosang;
+shape_3_per_frame43=yq=yp;
+shape_3_per_frame44=zq=xp*cosang - zp*sinang;
+shape_3_per_frame45=
+shape_3_per_frame46=//upper arm up down;
+shape_3_per_frame47=ang=cos(tm)*0.5 - 0.5;
+shape_3_per_frame48=sinang=sin(ang);cosang=cos(ang);
+shape_3_per_frame49=xp=xq;
+shape_3_per_frame50=yp=yq*cosang - zq*sinang;
+shape_3_per_frame51=zp=yq*sinang + zq*cosang;
+shape_3_per_frame52=
+shape_3_per_frame53=//xp=xq;yp=yq;zp=zq;
+shape_3_per_frame54=
+shape_3_per_frame55=
+shape_3_per_frame56=//project into screenspace and draw on screen
+shape_3_per_frame57=zp=zp+2;
+shape_3_per_frame58=xs=xp/zp;
+shape_3_per_frame59=ys=yp/zp;
+shape_3_per_frame60=
+shape_3_per_frame61=x=xs+0.5;
+shape_3_per_frame62=y=ys*1.3+0.5;
+shape_3_per_frame63=
+shape_3_per_frame64=
+shape_3_per_frame65=
+shape_3_per_frame66=
+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=warp=0
+per_frame_init_9=
+per_frame_1=
+per_frame_2=//krash's beat detection code
+per_frame_3=volume = 0.3*(bass+mid+att);
+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=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=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=beatcounter = beatcounter + beat;
+per_frame_14=mode = if(beat*equal(beatcounter%2,0),1-mode,mode);
+per_frame_15=flip = 2*mode-1;
+per_frame_16=monitor=flip;
+per_frame_17=q8=flip;
+per_frame_18=
+per_frame_19=
+per_frame_20=decay=1;
+per_frame_21=zoom=1.002;
+per_frame_22=
+per_frame_23=vol=(bass_att+mid_att+treb_att)*0.25;
+per_frame_24=vol=vol*vol;
+per_frame_25=mtime=mtime+vol*0.1*flip*(55/fps);
+per_frame_26=
+per_frame_27=q1=mtime*0.4;
+per_frame_28=
+per_frame_29=warp=0.0
+per_pixel_1=//tm=time+(sin(time)*rad);
+per_pixel_2=var=tan(time)*treb*treb;
+per_pixel_3=
+per_pixel_4=zoom=1+(rad/40)+(var/40);
+per_pixel_5=//rot=((rad/100)*var)*sin(time);
diff --git "a/presets/Eo.S. - glowsticks v2 05 and proton lights \050+Krash\047s beat code\051 _Phat_remix07 recursive demons.milk" "b/presets/Eo.S. - glowsticks v2 05 and proton lights \050+Krash\047s beat code\051 _Phat_remix07 recursive demons.milk"
new file mode 100644
index 0000000..caf8ffb
--- /dev/null
+++ "b/presets/Eo.S. - glowsticks v2 05 and proton lights \050+Krash\047s beat code\051 _Phat_remix07 recursive demons.milk"
@@ -0,0 +1,719 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.560000
+fDecay=0.960000
+fVideoEchoZoom=0.996630
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=2
+bAdditiveWaves=0
+bWaveDots=1
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=1
+bDarken=1
+bSolarize=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.011726
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=0.037492
+fWarpScale=0.014889
+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.033004
+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.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=1.000000
+ib_b=0.000000
+ib_a=0.000000
+nMotionVectorsX=0.000000
+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=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=0.100000
+wavecode_0_g=1.000000
+wavecode_0_b=0.700000
+wavecode_0_a=1.000000
+wave_0_per_frame1=t1=sin(time)*0.5+0.5;
+wave_0_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_0_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_0_per_frame4=
+wave_0_per_frame5=t4=sin(time+1.1)*0.5+0.5;
+wave_0_per_frame6=t5=sin(time+3.1)*0.5+0.5;
+wave_0_per_frame7=t6=sin(time+5.2)*0.5+0.5;
+wave_0_per_point1=n=sample*6.283;
+wave_0_per_point2=phs=-sample * 0.2;
+wave_0_per_point3=tm=q1 + phs;
+wave_0_per_point4=
+wave_0_per_point5=flip=flip+1;
+wave_0_per_point6=flip=flip*below(flip,2);
+wave_0_per_point7=
+wave_0_per_point8=xp=0;
+wave_0_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;
+wave_0_per_point10=zp=0;
+wave_0_per_point11=
+wave_0_per_point12=//wrist movement;
+wave_0_per_point13=ang=sin(tm*2 )*0.5 +0.5;
+wave_0_per_point14=
+wave_0_per_point15=xq=xp;
+wave_0_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point17=yq=yp*sinang + zp*cosang;
+wave_0_per_point18=zq=yp*cosang - zp*sinang;
+wave_0_per_point19=yq=yp;
+wave_0_per_point20=zq=zp;
+wave_0_per_point21=
+wave_0_per_point22=ang=tm*8;
+wave_0_per_point23=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point24=xp=xq*sinang + yq*cosang;
+wave_0_per_point25=yp=xq*cosang - yq*sinang;
+wave_0_per_point26=zp=zq;
+wave_0_per_point27=
+wave_0_per_point28=//forearm movement;
+wave_0_per_point29=zp=zp-0.3;
+wave_0_per_point30=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_0_per_point31=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point32=xq=xp;
+wave_0_per_point33=yq=yp*sinang + zp*cosang;
+wave_0_per_point34=zq=yp*cosang - zp*sinang;
+wave_0_per_point35=
+wave_0_per_point36=//upper arm twist
+wave_0_per_point37=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_0_per_point38=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point39=xp=xq*sinang + yq*cosang;
+wave_0_per_point40=yp=xq*cosang - yq*sinang;
+wave_0_per_point41=zp=zq;
+wave_0_per_point42=
+wave_0_per_point43=//upper arm outward;
+wave_0_per_point44=zp=zp-0.35;
+wave_0_per_point45=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_0_per_point46=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point47=xq=xp*sinang + zp*cosang;
+wave_0_per_point48=yq=yp;
+wave_0_per_point49=zq=xp*cosang - zp*sinang;
+wave_0_per_point50=
+wave_0_per_point51=//upper arm up down;
+wave_0_per_point52=ang=cos(tm)*0.5 - 0.5;
+wave_0_per_point53=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point54=xp=xq;
+wave_0_per_point55=yp=yq*cosang - zq*sinang;
+wave_0_per_point56=zp=yq*sinang + zq*cosang;
+wave_0_per_point57=
+wave_0_per_point58=//xp=xq;yp=yq;zp=zq;
+wave_0_per_point59=
+wave_0_per_point60=
+wave_0_per_point61=//project into screenspace and draw on screen
+wave_0_per_point62=zp=zp+2;
+wave_0_per_point63=xs=xp/zp;
+wave_0_per_point64=ys=yp/zp;
+wave_0_per_point65=
+wave_0_per_point66=x=xs+0.5;
+wave_0_per_point67=y=ys*1.3+0.5;
+wave_0_per_point68=
+wave_0_per_point69=
+wave_0_per_point70=a=if( equal(q8,1) , (1-sample) , sample);
+wave_0_per_point71=a=a*a;
+wave_0_per_point72=
+wave_0_per_point73=b=b+pow(1-sample,2)*0.3;
+wave_0_per_point74=
+wave_0_per_point75=
+wave_0_per_point76=
+wave_0_per_point77=r1=t1;
+wave_0_per_point78=g1=t2;
+wave_0_per_point79=b1=t3;
+wave_0_per_point80=r2=t4;
+wave_0_per_point81=g2=t5;
+wave_0_per_point82=b2=t6;
+wave_0_per_point83=
+wave_0_per_point84=r=r1*flip + r2*(1-flip);
+wave_0_per_point85=g=g1*flip + g2*(1-flip);
+wave_0_per_point86=b=b1*flip + b2*(1-flip);
+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=0.200000
+wavecode_1_g=1.000000
+wavecode_1_b=0.600000
+wavecode_1_a=1.000000
+wave_1_per_frame1=t1=sin(time)*0.5+0.5;
+wave_1_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_1_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_1_per_frame4=
+wave_1_per_frame5=t4=sin(time+1.1)*0.5+0.5;
+wave_1_per_frame6=t5=sin(time+3.1)*0.5+0.5;
+wave_1_per_frame7=t6=sin(time+5.2)*0.5+0.5;
+wave_1_per_point1=n=sample*6.283;
+wave_1_per_point2=phs=-sample * 0.2;
+wave_1_per_point3=tm=q1 + phs;
+wave_1_per_point4=
+wave_1_per_point5=flip=flip+1;
+wave_1_per_point6=flip=flip*below(flip,2);
+wave_1_per_point7=
+wave_1_per_point8=xp=0;
+wave_1_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2 +0.1;
+wave_1_per_point10=yp=-yp;
+wave_1_per_point11=zp=0;
+wave_1_per_point12=
+wave_1_per_point13=//wrist movement;
+wave_1_per_point14=ang=sin(tm*2)*0.5 +0.5;
+wave_1_per_point15=
+wave_1_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point17=xq=xp;
+wave_1_per_point18=yq=yp*sinang + zp*cosang;
+wave_1_per_point19=zq=yp*cosang - zp*sinang;
+wave_1_per_point20=yq=yp;
+wave_1_per_point21=zq=zp;
+wave_1_per_point22=
+wave_1_per_point23=ang=tm*8;
+wave_1_per_point24=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point25=xp=xq*sinang + yq*cosang;
+wave_1_per_point26=yp=xq*cosang - yq*sinang;
+wave_1_per_point27=zp=zq;
+wave_1_per_point28=
+wave_1_per_point29=//forearm movement;
+wave_1_per_point30=zp=zp-0.3;
+wave_1_per_point31=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_1_per_point32=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point33=xq=xp;
+wave_1_per_point34=yq=yp*sinang + zp*cosang;
+wave_1_per_point35=zq=yp*cosang - zp*sinang;
+wave_1_per_point36=
+wave_1_per_point37=//upper arm twist
+wave_1_per_point38=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_1_per_point39=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point40=xp=xq*sinang + yq*cosang;
+wave_1_per_point41=yp=xq*cosang - yq*sinang;
+wave_1_per_point42=zp=zq;
+wave_1_per_point43=
+wave_1_per_point44=//upper arm outward;
+wave_1_per_point45=zp=zp-0.35;
+wave_1_per_point46=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_1_per_point47=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point48=xq=xp*sinang + zp*cosang;
+wave_1_per_point49=yq=yp;
+wave_1_per_point50=zq=xp*cosang - zp*sinang;
+wave_1_per_point51=
+wave_1_per_point52=//upper arm up down;
+wave_1_per_point53=ang=cos(tm)*0.5 - 0.5;
+wave_1_per_point54=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point55=xp=xq;
+wave_1_per_point56=yp=yq*cosang - zq*sinang;
+wave_1_per_point57=zp=yq*sinang + zq*cosang;
+wave_1_per_point58=
+wave_1_per_point59=//xp=xq;yp=yq;zp=zq;
+wave_1_per_point60=
+wave_1_per_point61=
+wave_1_per_point62=//project into screenspace and draw on screen
+wave_1_per_point63=zp=zp+2;
+wave_1_per_point64=xs=xp/zp;
+wave_1_per_point65=ys=yp/zp;
+wave_1_per_point66=
+wave_1_per_point67=x=xs+0.5;
+wave_1_per_point68=y=ys*1.3+0.5;
+wave_1_per_point69=
+wave_1_per_point70=
+wave_1_per_point71=a=if( equal(q8,1) , (1-sample) , sample);
+wave_1_per_point72=a=a*a;
+wave_1_per_point73=
+wave_1_per_point74=
+wave_1_per_point75=b=b+pow(1-sample,2)*0.3;
+wave_1_per_point76=
+wave_1_per_point77=r1=t1;
+wave_1_per_point78=g1=t2;
+wave_1_per_point79=b1=t3;
+wave_1_per_point80=r2=t4;
+wave_1_per_point81=g2=t5;
+wave_1_per_point82=b2=t6;
+wave_1_per_point83=
+wave_1_per_point84=r=r1*flip + r2*(1-flip);
+wave_1_per_point85=g=g1*flip + g2*(1-flip);
+wave_1_per_point86=b=b1*flip + b2*(1-flip);
+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=0.100000
+wavecode_2_g=1.000000
+wavecode_2_b=0.700000
+wavecode_2_a=1.000000
+wave_2_per_frame1=t1=sin(time)*0.5+0.5;
+wave_2_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_2_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_2_per_frame4=
+wave_2_per_frame5=t4=sin(time+1.1)*0.5+0.5;
+wave_2_per_frame6=t5=sin(time+3.1)*0.5+0.5;
+wave_2_per_frame7=t6=sin(time+5.2)*0.5+0.5;
+wave_2_per_point1=n=sample*6.283;
+wave_2_per_point2=phs=-sample * 0.2;
+wave_2_per_point3=tm=q1 + phs;
+wave_2_per_point4=
+wave_2_per_point5=flip=flip+1;
+wave_2_per_point6=flip=flip*below(flip,2);
+wave_2_per_point7=
+wave_2_per_point8=xp=0;
+wave_2_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;
+wave_2_per_point10=zp=0;
+wave_2_per_point11=
+wave_2_per_point12=//wrist movement;
+wave_2_per_point13=ang=sin(tm*2 )*0.5 +0.5;
+wave_2_per_point14=
+wave_2_per_point15=xq=xp;
+wave_2_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point17=yq=yp*sinang + zp*cosang;
+wave_2_per_point18=zq=yp*cosang - zp*sinang;
+wave_2_per_point19=yq=yp;
+wave_2_per_point20=zq=zp;
+wave_2_per_point21=
+wave_2_per_point22=ang=tm*8;
+wave_2_per_point23=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point24=xp=xq*sinang + yq*cosang;
+wave_2_per_point25=yp=xq*cosang - yq*sinang;
+wave_2_per_point26=zp=zq;
+wave_2_per_point27=
+wave_2_per_point28=//forearm movement;
+wave_2_per_point29=zp=zp-0.3;
+wave_2_per_point30=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_2_per_point31=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point32=xq=xp;
+wave_2_per_point33=yq=yp*sinang + zp*cosang;
+wave_2_per_point34=zq=yp*cosang - zp*sinang;
+wave_2_per_point35=
+wave_2_per_point36=//upper arm twist
+wave_2_per_point37=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_2_per_point38=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point39=xp=xq*sinang + yq*cosang;
+wave_2_per_point40=yp=xq*cosang - yq*sinang;
+wave_2_per_point41=zp=zq;
+wave_2_per_point42=
+wave_2_per_point43=//upper arm outward;
+wave_2_per_point44=zp=zp-0.35;
+wave_2_per_point45=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_2_per_point46=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point47=xq=xp*sinang + zp*cosang;
+wave_2_per_point48=yq=yp;
+wave_2_per_point49=zq=xp*cosang - zp*sinang;
+wave_2_per_point50=
+wave_2_per_point51=//upper arm up down;
+wave_2_per_point52=ang=cos(tm)*0.5 - 0.5;
+wave_2_per_point53=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point54=xp=xq;
+wave_2_per_point55=yp=yq*cosang - zq*sinang;
+wave_2_per_point56=zp=yq*sinang + zq*cosang;
+wave_2_per_point57=
+wave_2_per_point58=//xp=xq;yp=yq;zp=zq;
+wave_2_per_point59=
+wave_2_per_point60=
+wave_2_per_point61=//project into screenspace and draw on screen
+wave_2_per_point62=zp=zp+2;
+wave_2_per_point63=xs=-xp/zp;
+wave_2_per_point64=ys=yp/zp;
+wave_2_per_point65=
+wave_2_per_point66=x=xs+0.5;
+wave_2_per_point67=y=ys*1.3+0.5;
+wave_2_per_point68=
+wave_2_per_point69=
+wave_2_per_point70=a=if( equal(q8,1) , (1-sample) , sample);
+wave_2_per_point71=a=a*a;
+wave_2_per_point72=
+wave_2_per_point73=b=b+pow(1-sample,2)*0.3;
+wave_2_per_point74=
+wave_2_per_point75=
+wave_2_per_point76=
+wave_2_per_point77=r1=t1;
+wave_2_per_point78=g1=t2;
+wave_2_per_point79=b1=t3;
+wave_2_per_point80=r2=t4;
+wave_2_per_point81=g2=t5;
+wave_2_per_point82=b2=t6;
+wave_2_per_point83=
+wave_2_per_point84=r=r1*flip + r2*(1-flip);
+wave_2_per_point85=g=g1*flip + g2*(1-flip);
+wave_2_per_point86=b=b1*flip + b2*(1-flip);
+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=0.200000
+wavecode_3_g=1.000000
+wavecode_3_b=0.600000
+wavecode_3_a=1.000000
+wave_3_per_frame1=t1=sin(time)*0.5+0.5;
+wave_3_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_3_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_3_per_frame4=
+wave_3_per_frame5=t4=sin(time+1.1)*0.5+0.5;
+wave_3_per_frame6=t5=sin(time+3.1)*0.5+0.5;
+wave_3_per_frame7=t6=sin(time+5.2)*0.5+0.5;
+wave_3_per_point1=n=sample*6.283;
+wave_3_per_point2=phs=-sample * 0.2;
+wave_3_per_point3=tm=q1 + phs;
+wave_3_per_point4=
+wave_3_per_point5=flip=flip+1;
+wave_3_per_point6=flip=flip*below(flip,2);
+wave_3_per_point7=
+wave_3_per_point8=xp=0;
+wave_3_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2 +0.1;
+wave_3_per_point10=yp=-yp;
+wave_3_per_point11=zp=0;
+wave_3_per_point12=
+wave_3_per_point13=//wrist movement;
+wave_3_per_point14=ang=sin(tm*2)*0.5 +0.5;
+wave_3_per_point15=
+wave_3_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point17=xq=xp;
+wave_3_per_point18=yq=yp*sinang + zp*cosang;
+wave_3_per_point19=zq=yp*cosang - zp*sinang;
+wave_3_per_point20=yq=yp;
+wave_3_per_point21=zq=zp;
+wave_3_per_point22=
+wave_3_per_point23=ang=tm*8;
+wave_3_per_point24=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point25=xp=xq*sinang + yq*cosang;
+wave_3_per_point26=yp=xq*cosang - yq*sinang;
+wave_3_per_point27=zp=zq;
+wave_3_per_point28=
+wave_3_per_point29=//forearm movement;
+wave_3_per_point30=zp=zp-0.3;
+wave_3_per_point31=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_3_per_point32=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point33=xq=xp;
+wave_3_per_point34=yq=yp*sinang + zp*cosang;
+wave_3_per_point35=zq=yp*cosang - zp*sinang;
+wave_3_per_point36=
+wave_3_per_point37=//upper arm twist
+wave_3_per_point38=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_3_per_point39=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point40=xp=xq*sinang + yq*cosang;
+wave_3_per_point41=yp=xq*cosang - yq*sinang;
+wave_3_per_point42=zp=zq;
+wave_3_per_point43=
+wave_3_per_point44=//upper arm outward;
+wave_3_per_point45=zp=zp-0.35;
+wave_3_per_point46=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_3_per_point47=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point48=xq=xp*sinang + zp*cosang;
+wave_3_per_point49=yq=yp;
+wave_3_per_point50=zq=xp*cosang - zp*sinang;
+wave_3_per_point51=
+wave_3_per_point52=//upper arm up down;
+wave_3_per_point53=ang=cos(tm)*0.5 - 0.5;
+wave_3_per_point54=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point55=xp=xq;
+wave_3_per_point56=yp=yq*cosang - zq*sinang;
+wave_3_per_point57=zp=yq*sinang + zq*cosang;
+wave_3_per_point58=
+wave_3_per_point59=//xp=xq;yp=yq;zp=zq;
+wave_3_per_point60=
+wave_3_per_point61=
+wave_3_per_point62=//project into screenspace and draw on screen
+wave_3_per_point63=zp=zp+2;
+wave_3_per_point64=xs=-xp/zp;
+wave_3_per_point65=ys=yp/zp;
+wave_3_per_point66=
+wave_3_per_point67=x=xs+0.5;
+wave_3_per_point68=y=ys*1.3+0.5;
+wave_3_per_point69=
+wave_3_per_point70=
+wave_3_per_point71=a=if( equal(q8,1) , (1-sample) , sample);
+wave_3_per_point72=a=a*a;
+wave_3_per_point73=
+wave_3_per_point74=
+wave_3_per_point75=b=b+pow(1-sample,2)*0.3;
+wave_3_per_point76=
+wave_3_per_point77=r1=t1;
+wave_3_per_point78=g1=t2;
+wave_3_per_point79=b1=t3;
+wave_3_per_point80=r2=t4;
+wave_3_per_point81=g2=t5;
+wave_3_per_point82=b2=t6;
+wave_3_per_point83=
+wave_3_per_point84=r=r1*flip + r2*(1-flip);
+wave_3_per_point85=g=g1*flip + g2*(1-flip);
+wave_3_per_point86=b=b1*flip + b2*(1-flip);
+shapecode_0_enabled=0
+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.067790
+shapecode_0_ang=0.753982
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=0.779769
+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=sin(q1*0.15);
+shape_0_per_frame2=x=sin(q1*0.5) * 0.05 + 0.5;
+shape_0_per_frame3=y=cos(q1*0.63)* 0.05 + 0.5
+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=5
+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.038091
+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.600000
+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=tm=q1;
+shape_3_per_frame2=
+shape_3_per_frame3=xp=0;
+shape_3_per_frame4=yp=0.1;
+shape_3_per_frame5=zp=0;
+shape_3_per_frame6=
+shape_3_per_frame7=//wrist movement;
+shape_3_per_frame8=ang=sin(tm*2 )*0.5 +0.5;
+shape_3_per_frame9=
+shape_3_per_frame10=xq=xp;
+shape_3_per_frame11=sinang=sin(ang);cosang=cos(ang);
+shape_3_per_frame12=yq=yp*sinang + zp*cosang;
+shape_3_per_frame13=zq=yp*cosang - zp*sinang;
+shape_3_per_frame14=yq=yp;
+shape_3_per_frame15=zq=zp;
+shape_3_per_frame16=
+shape_3_per_frame17=ang=tm*8;
+shape_3_per_frame18=sinang=sin(ang);cosang=cos(ang);
+shape_3_per_frame19=xp=xq*sinang + yq*cosang;
+shape_3_per_frame20=yp=xq*cosang - yq*sinang;
+shape_3_per_frame21=zp=zq;
+shape_3_per_frame22=
+shape_3_per_frame23=//forearm movement;
+shape_3_per_frame24=zp=zp-0.3;
+shape_3_per_frame25=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+shape_3_per_frame26=sinang=sin(ang);cosang=cos(ang);
+shape_3_per_frame27=xq=xp;
+shape_3_per_frame28=yq=yp*sinang + zp*cosang;
+shape_3_per_frame29=zq=yp*cosang - zp*sinang;
+shape_3_per_frame30=
+shape_3_per_frame31=//upper arm twist
+shape_3_per_frame32=ang=-1.0 + cos(tm*3.1 + 0.5);
+shape_3_per_frame33=sinang=sin(ang);cosang=cos(ang);
+shape_3_per_frame34=xp=xq*sinang + yq*cosang;
+shape_3_per_frame35=yp=xq*cosang - yq*sinang;
+shape_3_per_frame36=zp=zq;
+shape_3_per_frame37=
+shape_3_per_frame38=//upper arm outward;
+shape_3_per_frame39=zp=zp-0.35;
+shape_3_per_frame40=ang=cos(tm*2.3)*1.75 - 1.05;
+shape_3_per_frame41=sinang=sin(ang);cosang=cos(ang);
+shape_3_per_frame42=xq=xp*sinang + zp*cosang;
+shape_3_per_frame43=yq=yp;
+shape_3_per_frame44=zq=xp*cosang - zp*sinang;
+shape_3_per_frame45=
+shape_3_per_frame46=//upper arm up down;
+shape_3_per_frame47=ang=cos(tm)*0.5 - 0.5;
+shape_3_per_frame48=sinang=sin(ang);cosang=cos(ang);
+shape_3_per_frame49=xp=xq;
+shape_3_per_frame50=yp=yq*cosang - zq*sinang;
+shape_3_per_frame51=zp=yq*sinang + zq*cosang;
+shape_3_per_frame52=
+shape_3_per_frame53=//xp=xq;yp=yq;zp=zq;
+shape_3_per_frame54=
+shape_3_per_frame55=
+shape_3_per_frame56=//project into screenspace and draw on screen
+shape_3_per_frame57=zp=zp+2;
+shape_3_per_frame58=xs=xp/zp;
+shape_3_per_frame59=ys=yp/zp;
+shape_3_per_frame60=
+shape_3_per_frame61=x=xs+0.5;
+shape_3_per_frame62=y=ys*1.3+0.5;
+shape_3_per_frame63=
+shape_3_per_frame64=
+shape_3_per_frame65=
+shape_3_per_frame66=
+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=warp=0
+per_frame_init_9=
+per_frame_1=zoom=1;
+per_frame_2=//krash's beat detection code
+per_frame_3=volume = 0.3*(bass+mid+att);
+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=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=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=beatcounter = beatcounter + beat;
+per_frame_14=mode = if(beat*equal(beatcounter%2,0),1-mode,mode);
+per_frame_15=flip = 2*mode-1;
+per_frame_16=monitor=flip;
+per_frame_17=q8=flip;
+per_frame_18=
+per_frame_19=angadv=angadv+beat;
+per_frame_20=angadv=if( above(angadv,5) , 2 , angadv );
+per_frame_21=q7=angadv;
+per_frame_22=
+per_frame_23=
+per_frame_24=decay=0.95;
+per_frame_25=zoom=1.002;
+per_frame_26=
+per_frame_27=vol=(bass_att+mid_att+treb_att)*0.25;
+per_frame_28=vol=vol*vol;
+per_frame_29=mtime=mtime+vol*0.1*flip*(37/fps);
+per_frame_30=
+per_frame_31=q1=mtime*0.4;
+per_frame_32=
+per_frame_33=warp=0.0;
+per_frame_34=
+per_frame_35=cx=sin(mtime*0.2)*0.4 + 0.5;
+per_frame_36=cy=sin(mtime*0.33);
+per_frame_37=cys=sign(cy);
+per_frame_38=cy=cy*cy*cys;
+per_frame_39=cy=cy*0.4+0.5;
+per_frame_40=
+per_frame_41=//cx=sin(time)*0.5+0.5;
+per_frame_42=//cy=cos(time)*0.5+0.5;
+per_frame_43=//cx=0.5;
+per_frame_44=//cy=0.5;
+per_frame_45=rot=sin(time*0.25)*0.31
+per_frame_46=
+per_pixel_1=//tm=time+(sin(time)*rad);
+per_pixel_2=//var=tan(time)*treb;
+per_pixel_3=tbr=0.7+treb*0.3;
+per_pixel_4=var=-2*tbr*0.75;
+per_pixel_5=
+per_pixel_6=ag=atan( (y-0.5-(cy-0.5))/(x-0.5-(cx-0.5)) )*1.75;
+per_pixel_7=star=sin(ang*q7)*tbr;
+per_pixel_8=
+per_pixel_9=rdd=max( abs(x-0.5) , abs(y-0.5) )*4 ;
+per_pixel_10=zm=1+(rdd/40)+(var/40)+star*0.003 ;
+per_pixel_11=
+per_pixel_12=//sx=zm;
+per_pixel_13=//sy=zm;
+per_pixel_14=//sx=1+star*0.1;sy=1+star*0.1;
+per_pixel_15=sx=0.8;sy=sx;
+per_pixel_16=//rot=star*0.01*tbr
diff --git "a/presets/Eo.S. - heater core C_Phat\047s_class + sparks_mix.milk" "b/presets/Eo.S. - heater core C_Phat\047s_class + sparks_mix.milk"
new file mode 100644
index 0000000..d492558
--- /dev/null
+++ "b/presets/Eo.S. - heater core C_Phat\047s_class + sparks_mix.milk"
@@ -0,0 +1,445 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.980001
+fDecay=0.900000
+fVideoEchoZoom=0.999999
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=2
+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.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.000000
+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=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.000000
+wavecode_0_g=0.900000
+wavecode_0_b=0.800000
+wavecode_0_a=1.000000
+wave_0_per_point1=n=sample*6.283;
+wave_0_per_point2=
+wave_0_per_point3=freq=sin(q7*0.5)*4+4;
+wave_0_per_point4=
+wave_0_per_point5=scale=sin(n*freq)*0.3+0.7;
+wave_0_per_point6=xp=sin(n*1)*0.3*scale;
+wave_0_per_point7=yp=cos(n*1)*0.3*scale;
+wave_0_per_point8=zp=abs(sin(n*freq+time)*0.1);
+wave_0_per_point9=
+wave_0_per_point10=//rotate on y
+wave_0_per_point11=ang=(q7+time*0.01)*0.2;
+wave_0_per_point12=xp2=xp*sin(ang) + zp*cos(ang);
+wave_0_per_point13=yp2=yp;
+wave_0_per_point14=zp2=xp*cos(ang) - zp*sin(ang);
+wave_0_per_point15=
+wave_0_per_point16=//rotate on x
+wave_0_per_point17=ang=(q7+time*0.01)*0.3;
+wave_0_per_point18=xp3=xp2;
+wave_0_per_point19=yp3=yp2*sin(ang) + zp2*cos(ang);
+wave_0_per_point20=zp3=yp2*cos(ang) - zp2*sin(ang);
+wave_0_per_point21=
+wave_0_per_point22=
+wave_0_per_point23=xp=xp3;
+wave_0_per_point24=yp=yp3;
+wave_0_per_point25=zp=zp3;
+wave_0_per_point26=zp=zp+2.1;
+wave_0_per_point27=xs=xp/zp;
+wave_0_per_point28=ys=yp/zp;
+wave_0_per_point29=
+wave_0_per_point30=x=xs+0.5;
+wave_0_per_point31=y=ys*1.3+0.5;
+wave_0_per_point32=
+wave_0_per_point33=
+wave_0_per_point34=aflux=sin(n*8+time)*0.5+0.5;
+wave_0_per_point35=a=1 - (aflux*aflux)*q8*3
+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=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=0.700000
+wavecode_1_g=0.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+wave_1_per_point1=n=sample*6.283;
+wave_1_per_point2=
+wave_1_per_point3=freq=sin(q7*0.5)*4+4;
+wave_1_per_point4=
+wave_1_per_point5=scale=sin(n*freq)*0.3+0.7;
+wave_1_per_point6=xp=sin(n*1)*0.3*scale;
+wave_1_per_point7=yp=cos(n*1)*0.3*scale;
+wave_1_per_point8=zp=-abs(sin(n*freq+time)*0.1);
+wave_1_per_point9=
+wave_1_per_point10=//rotate on y
+wave_1_per_point11=ang=(q7+time*0.01)*0.2;
+wave_1_per_point12=xp2=xp*sin(ang) + zp*cos(ang);
+wave_1_per_point13=yp2=yp;
+wave_1_per_point14=zp2=xp*cos(ang) - zp*sin(ang);
+wave_1_per_point15=
+wave_1_per_point16=//rotate on x
+wave_1_per_point17=ang=(q7+time*0.01)*0.3;
+wave_1_per_point18=xp3=xp2;
+wave_1_per_point19=yp3=yp2*sin(ang) + zp2*cos(ang);
+wave_1_per_point20=zp3=yp2*cos(ang) - zp2*sin(ang);
+wave_1_per_point21=
+wave_1_per_point22=
+wave_1_per_point23=xp=xp3;
+wave_1_per_point24=yp=yp3;
+wave_1_per_point25=zp=zp3;
+wave_1_per_point26=zp=zp+2.1;
+wave_1_per_point27=xs=xp/zp;
+wave_1_per_point28=ys=yp/zp;
+wave_1_per_point29=
+wave_1_per_point30=x=xs+0.5;
+wave_1_per_point31=y=ys*1.3+0.5;
+wave_1_per_point32=
+wave_1_per_point33=
+wave_1_per_point34=aflux=sin(n*8+time)*0.5+0.5;
+wave_1_per_point35=a=1 - (aflux*aflux)*q8*3
+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.283;
+wave_2_per_point2=
+wave_2_per_point3=freq=sin(q7*0.5)*4+4;
+wave_2_per_point4=
+wave_2_per_point5=aflux=sin(n*0.5);
+wave_2_per_point6=
+wave_2_per_point7=scale=sin(n*freq)*0.3+0.7;
+wave_2_per_point8=xp=rand(10)-5;
+wave_2_per_point9=xp=xp*0.0008*aflux;
+wave_2_per_point10=yp=rand(10)-5;
+wave_2_per_point11=yp=yp*0.0008*aflux;
+wave_2_per_point12=zp=sample*3-1.5;
+wave_2_per_point13=
+wave_2_per_point14=//rotate on y
+wave_2_per_point15=ang=(q7+time*0.01)*0.2;
+wave_2_per_point16=xp2=xp*sin(ang) + zp*cos(ang);
+wave_2_per_point17=yp2=yp;
+wave_2_per_point18=zp2=xp*cos(ang) - zp*sin(ang);
+wave_2_per_point19=
+wave_2_per_point20=//rotate on x
+wave_2_per_point21=ang=(q7+time*0.01)*0.3;
+wave_2_per_point22=xp3=xp2;
+wave_2_per_point23=yp3=yp2*sin(ang) + zp2*cos(ang);
+wave_2_per_point24=zp3=yp2*cos(ang) - zp2*sin(ang);
+wave_2_per_point25=
+wave_2_per_point26=
+wave_2_per_point27=xp=xp3;
+wave_2_per_point28=yp=yp3;
+wave_2_per_point29=zp=zp3;
+wave_2_per_point30=
+wave_2_per_point31=zp=zp+2.1;
+wave_2_per_point32=xs=xp/zp;
+wave_2_per_point33=ys=yp/zp;
+wave_2_per_point34=
+wave_2_per_point35=x=xs+0.5;
+wave_2_per_point36=y=ys*1.3+0.5;
+wave_2_per_point37=
+wave_2_per_point38=
+wave_2_per_point39=
+wave_2_per_point40=a=aflux
+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=1
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=0.600000
+wavecode_3_b=0.150000
+wavecode_3_a=1.000000
+wave_3_per_frame1=spark=rand(40);
+wave_3_per_frame2=spark= above(spark,37);
+wave_3_per_frame3=
+wave_3_per_frame4=t1=spark;
+wave_3_per_frame5=t2=0;
+wave_3_per_frame6=t3=0;
+wave_3_per_point1=n=sample*6.283;
+wave_3_per_point2=offran=1-t1*0.1;
+wave_3_per_point3=sparkcycle=above( sin(n*2) , 0);
+wave_3_per_point4=
+wave_3_per_point5=zran=(rand(8) - 4);
+wave_3_per_point6=xran=(rand(8) - 4);
+wave_3_per_point7=yran=(rand(8) - 4);
+wave_3_per_point8=alp=min( 1-abs(zran*0.25), min( 1-abs(xran*0.25),1-abs(yran*0.25) ));
+wave_3_per_point9=alp=alp*alp;
+wave_3_per_point10=a=alp*(1-t1) + t1;
+wave_3_per_point11=zran=zran*0.001*offran;
+wave_3_per_point12=xran=xran*0.001*offran;
+wave_3_per_point13=yran=yran*0.001*offran;
+wave_3_per_point14=
+wave_3_per_point15=xseed=sin(sample*3.14+time*15)+sin(sample*11)*0.4;
+wave_3_per_point16=yseed=cos(sample*3.14+time*9)+sin(sample*17+time)*0.4;
+wave_3_per_point17=t2=t2+xseed*sparkcycle;
+wave_3_per_point18=t3=t3+yseed*sparkcycle;
+wave_3_per_point19=xspark=t2*0.002;
+wave_3_per_point20=yspark=t3*0.008;
+wave_3_per_point21=
+wave_3_per_point22=scale=sin(n*freq)*0.3+0.7;
+wave_3_per_point23=zp=sin(time)+ zran;
+wave_3_per_point24=zp=zp + yspark*t1*sparkcycle;
+wave_3_per_point25=
+wave_3_per_point26=aflux=sin(zp*3.14 + 3.14);
+wave_3_per_point27=xp=sin(n)*0.1*aflux + xran;
+wave_3_per_point28=xp=xp + xspark*t1*sparkcycle;
+wave_3_per_point29=yp=cos(n)*0.1*aflux + yran;
+wave_3_per_point30=
+wave_3_per_point31=//rotate on y
+wave_3_per_point32=ang=(q7+time*0.01)*0.2;
+wave_3_per_point33=xp2=xp*sin(ang) + zp*cos(ang);
+wave_3_per_point34=yp2=yp;
+wave_3_per_point35=zp2=xp*cos(ang) - zp*sin(ang);
+wave_3_per_point36=
+wave_3_per_point37=//rotate on x
+wave_3_per_point38=ang=(q7+time*0.01)*0.3;
+wave_3_per_point39=xp3=xp2;
+wave_3_per_point40=yp3=yp2*sin(ang) + zp2*cos(ang);
+wave_3_per_point41=zp3=yp2*cos(ang) - zp2*sin(ang);
+wave_3_per_point42=
+wave_3_per_point43=
+wave_3_per_point44=xp=xp3;
+wave_3_per_point45=yp=yp3;
+wave_3_per_point46=zp=zp3;
+wave_3_per_point47=
+wave_3_per_point48=zp=zp+2.1;
+wave_3_per_point49=xs=xp/zp;
+wave_3_per_point50=xs=xs+0.5;
+wave_3_per_point51=ys=yp/zp;
+wave_3_per_point52=ys=ys*1.3 + 0.5;
+wave_3_per_point53=
+wave_3_per_point54=x=xs;
+wave_3_per_point55=y=ys;
+wave_3_per_point56=
+wave_3_per_point57=
+wave_3_per_point58=
+wave_3_per_point59=
+shapecode_0_enabled=0
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=1
+shapecode_0_textured=0
+shapecode_0_x=0.800000
+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.274293
+shapecode_0_r=0.500000
+shapecode_0_g=0.500000
+shapecode_0_b=1.000000
+shapecode_0_a=0.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=0.000000
+shapecode_0_border_b=0.500000
+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=border_a=treb;
+shape_0_per_frame2=rad=bass;
+shapecode_1_enabled=1
+shapecode_1_sides=3
+shapecode_1_additive=0
+shapecode_1_thickOutline=1
+shapecode_1_textured=0
+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=2.216712
+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=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=1
+shapecode_2_sides=40
+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.853568
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.220190
+shapecode_2_r=0.980000
+shapecode_2_g=0.000000
+shapecode_2_b=0.890000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.920000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=0.050000
+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=ang=sin(time*0.4)*0.05 * (sin(time*0.4)*0.5+0.5)
+shapecode_3_enabled=0
+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=1.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=1.000000
+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=decay=1;
+per_frame_2=
+per_frame_3=vol=(bass+mid+treb)*0.25;
+per_frame_4=vol=vol*vol;
+per_frame_5=mtime=mtime+vol*0.018*(70/fps);
+per_frame_6=q7=mtime;
+per_frame_7=q8=vol
+per_pixel_1=zoom=-1.02 + rad*10;
+per_pixel_2=//rot=rad*500;
diff --git "a/presets/Eo.S. - heater core C_Phat\047s_on route_mix+beam.milk" "b/presets/Eo.S. - heater core C_Phat\047s_on route_mix+beam.milk"
new file mode 100644
index 0000000..0120872
--- /dev/null
+++ "b/presets/Eo.S. - heater core C_Phat\047s_on route_mix+beam.milk"
@@ -0,0 +1,453 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.980001
+fDecay=0.900000
+fVideoEchoZoom=0.999999
+fVideoEchoAlpha=0.000000
+nVideoEchoOrientation=2
+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.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.055000
+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=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.000000
+wavecode_0_g=0.900000
+wavecode_0_b=0.800000
+wavecode_0_a=1.000000
+wave_0_per_point1=n=sample*6.283;
+wave_0_per_point2=
+wave_0_per_point3=freq=sin(q7*0.5)*4+4;
+wave_0_per_point4=
+wave_0_per_point5=scale=sin(n*freq)*0.3+0.7;
+wave_0_per_point6=xp=sin(n*1)*0.3*scale;
+wave_0_per_point7=yp=cos(n*1)*0.3*scale;
+wave_0_per_point8=zp=abs(sin(n*freq+time)*0.1);
+wave_0_per_point9=
+wave_0_per_point10=//rotate on y
+wave_0_per_point11=ang=(q7+time*0.01)*0.2;
+wave_0_per_point12=xp2=xp*sin(ang) + zp*cos(ang);
+wave_0_per_point13=yp2=yp;
+wave_0_per_point14=zp2=xp*cos(ang) - zp*sin(ang);
+wave_0_per_point15=
+wave_0_per_point16=//rotate on x
+wave_0_per_point17=ang=(q7+time*0.01)*0.3;
+wave_0_per_point18=xp3=xp2;
+wave_0_per_point19=yp3=yp2*sin(ang) + zp2*cos(ang);
+wave_0_per_point20=zp3=yp2*cos(ang) - zp2*sin(ang);
+wave_0_per_point21=
+wave_0_per_point22=
+wave_0_per_point23=xp=xp3;
+wave_0_per_point24=yp=yp3;
+wave_0_per_point25=zp=zp3;
+wave_0_per_point26=zp=zp+2.1;
+wave_0_per_point27=xs=xp/zp;
+wave_0_per_point28=ys=yp/zp;
+wave_0_per_point29=
+wave_0_per_point30=x=xs+0.5;
+wave_0_per_point31=y=ys*1.3+0.5;
+wave_0_per_point32=
+wave_0_per_point33=
+wave_0_per_point34=aflux=sin(n*8+time)*0.5+0.5;
+wave_0_per_point35=a=1 - (aflux*aflux)*q8*3
+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=0
+wavecode_1_scaling=1.000000
+wavecode_1_smoothing=0.500000
+wavecode_1_r=0.700000
+wavecode_1_g=0.000000
+wavecode_1_b=1.000000
+wavecode_1_a=1.000000
+wave_1_per_point1=n=sample*6.283;
+wave_1_per_point2=
+wave_1_per_point3=freq=sin(q7*0.5)*4+4;
+wave_1_per_point4=
+wave_1_per_point5=scale=sin(n*freq)*0.3+0.7;
+wave_1_per_point6=xp=sin(n*1)*0.3*scale;
+wave_1_per_point7=yp=cos(n*1)*0.3*scale;
+wave_1_per_point8=zp=-abs(sin(n*freq+time)*0.1);
+wave_1_per_point9=
+wave_1_per_point10=//rotate on y
+wave_1_per_point11=ang=(q7+time*0.01)*0.2;
+wave_1_per_point12=xp2=xp*sin(ang) + zp*cos(ang);
+wave_1_per_point13=yp2=yp;
+wave_1_per_point14=zp2=xp*cos(ang) - zp*sin(ang);
+wave_1_per_point15=
+wave_1_per_point16=//rotate on x
+wave_1_per_point17=ang=(q7+time*0.01)*0.3;
+wave_1_per_point18=xp3=xp2;
+wave_1_per_point19=yp3=yp2*sin(ang) + zp2*cos(ang);
+wave_1_per_point20=zp3=yp2*cos(ang) - zp2*sin(ang);
+wave_1_per_point21=
+wave_1_per_point22=
+wave_1_per_point23=xp=xp3;
+wave_1_per_point24=yp=yp3;
+wave_1_per_point25=zp=zp3;
+wave_1_per_point26=zp=zp+2.1;
+wave_1_per_point27=xs=xp/zp;
+wave_1_per_point28=ys=yp/zp;
+wave_1_per_point29=
+wave_1_per_point30=x=xs+0.5;
+wave_1_per_point31=y=ys*1.3+0.5;
+wave_1_per_point32=
+wave_1_per_point33=
+wave_1_per_point34=aflux=sin(n*8+time)*0.5+0.5;
+wave_1_per_point35=a=1 - (aflux*aflux)*q8*3
+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.283;
+wave_2_per_point2=
+wave_2_per_point3=freq=sin(q7*0.5)*4+4;
+wave_2_per_point4=
+wave_2_per_point5=aflux=sin(n*0.5);
+wave_2_per_point6=
+wave_2_per_point7=scale=sin(n*freq)*0.3+0.7;
+wave_2_per_point8=xp=rand(10)-5;
+wave_2_per_point9=xp=xp*0.0008*aflux;
+wave_2_per_point10=yp=rand(10)-5;
+wave_2_per_point11=yp=yp*0.0008*aflux;
+wave_2_per_point12=zp=sample*3-1.5;
+wave_2_per_point13=
+wave_2_per_point14=//rotate on y
+wave_2_per_point15=ang=(q7+time*0.01)*0.2;
+wave_2_per_point16=xp2=xp*sin(ang) + zp*cos(ang);
+wave_2_per_point17=yp2=yp;
+wave_2_per_point18=zp2=xp*cos(ang) - zp*sin(ang);
+wave_2_per_point19=
+wave_2_per_point20=//rotate on x
+wave_2_per_point21=ang=(q7+time*0.01)*0.3;
+wave_2_per_point22=xp3=xp2;
+wave_2_per_point23=yp3=yp2*sin(ang) + zp2*cos(ang);
+wave_2_per_point24=zp3=yp2*cos(ang) - zp2*sin(ang);
+wave_2_per_point25=
+wave_2_per_point26=
+wave_2_per_point27=xp=xp3;
+wave_2_per_point28=yp=yp3;
+wave_2_per_point29=zp=zp3;
+wave_2_per_point30=
+wave_2_per_point31=zp=zp+2.1;
+wave_2_per_point32=xs=xp/zp;
+wave_2_per_point33=ys=yp/zp;
+wave_2_per_point34=
+wave_2_per_point35=x=xs+0.5;
+wave_2_per_point36=y=ys*1.3+0.5;
+wave_2_per_point37=
+wave_2_per_point38=
+wave_2_per_point39=
+wave_2_per_point40=a=aflux
+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_per_point1=n=sample*6.283;
+wave_3_per_point2=
+wave_3_per_point3=
+wave_3_per_point4=
+wave_3_per_point5=scale=sin(n*freq)*0.3+0.7;
+wave_3_per_point6=zp=sin(time);
+wave_3_per_point7=aflux=sin(zp*3.1415+3.1415);
+wave_3_per_point8=xp=sin(n)*0.1*aflux;
+wave_3_per_point9=yp=cos(n)*0.1*aflux;
+wave_3_per_point10=
+wave_3_per_point11=
+wave_3_per_point12=//rotate on y
+wave_3_per_point13=ang=(q7+time*0.01)*0.2;
+wave_3_per_point14=xp2=xp*sin(ang) + zp*cos(ang);
+wave_3_per_point15=yp2=yp;
+wave_3_per_point16=zp2=xp*cos(ang) - zp*sin(ang);
+wave_3_per_point17=
+wave_3_per_point18=//rotate on x
+wave_3_per_point19=ang=(q7+time*0.01)*0.3;
+wave_3_per_point20=xp3=xp2;
+wave_3_per_point21=yp3=yp2*sin(ang) + zp2*cos(ang);
+wave_3_per_point22=zp3=yp2*cos(ang) - zp2*sin(ang);
+wave_3_per_point23=
+wave_3_per_point24=
+wave_3_per_point25=xp=xp3;
+wave_3_per_point26=yp=yp3;
+wave_3_per_point27=zp=zp3;
+wave_3_per_point28=
+wave_3_per_point29=zp=zp+2.1;
+wave_3_per_point30=xs=xp/zp;
+wave_3_per_point31=ys=yp/zp;
+wave_3_per_point32=
+wave_3_per_point33=x=xs+0.5;
+wave_3_per_point34=y=ys*1.3+0.5;
+wave_3_per_point35=
+wave_3_per_point36=
+wave_3_per_point37=
+wave_3_per_point38=a=aflux
+shapecode_0_enabled=0
+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.274293
+shapecode_0_r=0.500000
+shapecode_0_g=0.500000
+shapecode_0_b=1.000000
+shapecode_0_a=0.180000
+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=0
+shapecode_1_sides=3
+shapecode_1_additive=0
+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=1
+shapecode_2_sides=40
+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.853568
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.220190
+shapecode_2_r=0.980000
+shapecode_2_g=0.000000
+shapecode_2_b=0.890000
+shapecode_2_a=1.000000
+shapecode_2_r2=0.920000
+shapecode_2_g2=1.000000
+shapecode_2_b2=1.000000
+shapecode_2_a2=0.050000
+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=ang=sin(time*0.4)*0.05 * (sin(time*0.4)*0.5+0.5)
+shapecode_3_enabled=0
+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=
+per_frame_22=decay=1;
+per_frame_23=
+per_frame_24=vol=(bass+mid+treb)*0.25;
+per_frame_25=vol=vol*vol;
+per_frame_26=mtime=mtime+vol*0.018*(68/fps);
+per_frame_27=q7=mtime;
+per_frame_28=q8=vol
+per_pixel_1=zoom=-1.02 + ((rad*(treb*10))*(bass*bass));
diff --git a/presets/Eo.S. - repeater 05 - rave on acid.milk b/presets/Eo.S. - repeater 05 - rave on acid.milk
new file mode 100644
index 0000000..a64327d
--- /dev/null
+++ b/presets/Eo.S. - repeater 05 - rave on acid.milk
@@ -0,0 +1,636 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.630000
+fDecay=0.960000
+fVideoEchoZoom=0.996630
+fVideoEchoAlpha=0.500000
+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=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.011726
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=0.037492
+fWarpScale=0.014889
+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.033004
+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=0.000000
+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=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=0.100000
+wavecode_0_g=1.000000
+wavecode_0_b=0.700000
+wavecode_0_a=1.000000
+wave_0_per_frame1=t1=sin(time)*0.5+0.5;
+wave_0_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_0_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_0_per_frame4=
+wave_0_per_frame5=t4=sin(time+1.1)*0.5+0.5;
+wave_0_per_frame6=t5=sin(time+3.1)*0.5+0.5;
+wave_0_per_frame7=t6=sin(time+5.2)*0.5+0.5;
+wave_0_per_point1=n=sample*6.283;
+wave_0_per_point2=phs=-sample * 0.2;
+wave_0_per_point3=tm=q1 + phs;
+wave_0_per_point4=
+wave_0_per_point5=flip=flip+1;
+wave_0_per_point6=flip=flip*below(flip,2);
+wave_0_per_point7=
+wave_0_per_point8=xp=0;
+wave_0_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;
+wave_0_per_point10=zp=0;
+wave_0_per_point11=
+wave_0_per_point12=//wrist movement;
+wave_0_per_point13=ang=sin(tm*2 )*0.5 +0.5;
+wave_0_per_point14=
+wave_0_per_point15=xq=xp;
+wave_0_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point17=yq=yp*sinang + zp*cosang;
+wave_0_per_point18=zq=yp*cosang - zp*sinang;
+wave_0_per_point19=yq=yp;
+wave_0_per_point20=zq=zp;
+wave_0_per_point21=
+wave_0_per_point22=ang=tm*8;
+wave_0_per_point23=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point24=xp=xq*sinang + yq*cosang;
+wave_0_per_point25=yp=xq*cosang - yq*sinang;
+wave_0_per_point26=zp=zq;
+wave_0_per_point27=
+wave_0_per_point28=//forearm movement;
+wave_0_per_point29=zp=zp-0.3;
+wave_0_per_point30=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_0_per_point31=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point32=xq=xp;
+wave_0_per_point33=yq=yp*sinang + zp*cosang;
+wave_0_per_point34=zq=yp*cosang - zp*sinang;
+wave_0_per_point35=
+wave_0_per_point36=//upper arm twist
+wave_0_per_point37=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_0_per_point38=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point39=xp=xq*sinang + yq*cosang;
+wave_0_per_point40=yp=xq*cosang - yq*sinang;
+wave_0_per_point41=zp=zq;
+wave_0_per_point42=
+wave_0_per_point43=//upper arm outward;
+wave_0_per_point44=zp=zp-0.35;
+wave_0_per_point45=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_0_per_point46=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point47=xq=xp*sinang + zp*cosang;
+wave_0_per_point48=yq=yp;
+wave_0_per_point49=zq=xp*cosang - zp*sinang;
+wave_0_per_point50=
+wave_0_per_point51=//upper arm up down;
+wave_0_per_point52=ang=cos(tm)*0.5 - 0.5;
+wave_0_per_point53=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point54=xp=xq;
+wave_0_per_point55=yp=yq*cosang - zq*sinang;
+wave_0_per_point56=zp=yq*sinang + zq*cosang;
+wave_0_per_point57=
+wave_0_per_point58=//xp=xq;yp=yq;zp=zq;
+wave_0_per_point59=
+wave_0_per_point60=
+wave_0_per_point61=//project into screenspace and draw on screen
+wave_0_per_point62=zp=zp+2;
+wave_0_per_point63=xs=xp/zp;
+wave_0_per_point64=ys=yp/zp;
+wave_0_per_point65=
+wave_0_per_point66=x=xs+0.5;
+wave_0_per_point67=y=ys*1.3+0.5;
+wave_0_per_point68=
+wave_0_per_point69=
+wave_0_per_point70=a=if( equal(q8,1) , (1-sample) , sample);
+wave_0_per_point71=a=a*a;
+wave_0_per_point72=
+wave_0_per_point73=b=b+pow(1-sample,2)*0.3;
+wave_0_per_point74=
+wave_0_per_point75=
+wave_0_per_point76=
+wave_0_per_point77=r1=t1;
+wave_0_per_point78=g1=t2;
+wave_0_per_point79=b1=t3;
+wave_0_per_point80=r2=t4;
+wave_0_per_point81=g2=t5;
+wave_0_per_point82=b2=t6;
+wave_0_per_point83=
+wave_0_per_point84=r=r1*flip + r2*(1-flip);
+wave_0_per_point85=g=g1*flip + g2*(1-flip);
+wave_0_per_point86=b=b1*flip + b2*(1-flip);
+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=0.200000
+wavecode_1_g=1.000000
+wavecode_1_b=0.600000
+wavecode_1_a=1.000000
+wave_1_per_frame1=t1=sin(time)*0.5+0.5;
+wave_1_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_1_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_1_per_frame4=
+wave_1_per_frame5=t4=sin(time+1.1)*0.5+0.5;
+wave_1_per_frame6=t5=sin(time+3.1)*0.5+0.5;
+wave_1_per_frame7=t6=sin(time+5.2)*0.5+0.5;
+wave_1_per_point1=n=sample*6.283;
+wave_1_per_point2=phs=-sample * 0.2;
+wave_1_per_point3=tm=q1 + phs;
+wave_1_per_point4=
+wave_1_per_point5=flip=flip+1;
+wave_1_per_point6=flip=flip*below(flip,2);
+wave_1_per_point7=
+wave_1_per_point8=xp=0;
+wave_1_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2 +0.1;
+wave_1_per_point10=yp=-yp;
+wave_1_per_point11=zp=0;
+wave_1_per_point12=
+wave_1_per_point13=//wrist movement;
+wave_1_per_point14=ang=sin(tm*2)*0.5 +0.5;
+wave_1_per_point15=
+wave_1_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point17=xq=xp;
+wave_1_per_point18=yq=yp*sinang + zp*cosang;
+wave_1_per_point19=zq=yp*cosang - zp*sinang;
+wave_1_per_point20=yq=yp;
+wave_1_per_point21=zq=zp;
+wave_1_per_point22=
+wave_1_per_point23=ang=tm*8;
+wave_1_per_point24=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point25=xp=xq*sinang + yq*cosang;
+wave_1_per_point26=yp=xq*cosang - yq*sinang;
+wave_1_per_point27=zp=zq;
+wave_1_per_point28=
+wave_1_per_point29=//forearm movement;
+wave_1_per_point30=zp=zp-0.3;
+wave_1_per_point31=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_1_per_point32=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point33=xq=xp;
+wave_1_per_point34=yq=yp*sinang + zp*cosang;
+wave_1_per_point35=zq=yp*cosang - zp*sinang;
+wave_1_per_point36=
+wave_1_per_point37=//upper arm twist
+wave_1_per_point38=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_1_per_point39=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point40=xp=xq*sinang + yq*cosang;
+wave_1_per_point41=yp=xq*cosang - yq*sinang;
+wave_1_per_point42=zp=zq;
+wave_1_per_point43=
+wave_1_per_point44=//upper arm outward;
+wave_1_per_point45=zp=zp-0.35;
+wave_1_per_point46=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_1_per_point47=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point48=xq=xp*sinang + zp*cosang;
+wave_1_per_point49=yq=yp;
+wave_1_per_point50=zq=xp*cosang - zp*sinang;
+wave_1_per_point51=
+wave_1_per_point52=//upper arm up down;
+wave_1_per_point53=ang=cos(tm)*0.5 - 0.5;
+wave_1_per_point54=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point55=xp=xq;
+wave_1_per_point56=yp=yq*cosang - zq*sinang;
+wave_1_per_point57=zp=yq*sinang + zq*cosang;
+wave_1_per_point58=
+wave_1_per_point59=//xp=xq;yp=yq;zp=zq;
+wave_1_per_point60=
+wave_1_per_point61=
+wave_1_per_point62=//project into screenspace and draw on screen
+wave_1_per_point63=zp=zp+2;
+wave_1_per_point64=xs=xp/zp;
+wave_1_per_point65=ys=yp/zp;
+wave_1_per_point66=
+wave_1_per_point67=x=xs+0.5;
+wave_1_per_point68=y=ys*1.3+0.5;
+wave_1_per_point69=
+wave_1_per_point70=
+wave_1_per_point71=a=if( equal(q8,1) , (1-sample) , sample);
+wave_1_per_point72=a=a*a;
+wave_1_per_point73=
+wave_1_per_point74=
+wave_1_per_point75=b=b+pow(1-sample,2)*0.3;
+wave_1_per_point76=
+wave_1_per_point77=r1=t1;
+wave_1_per_point78=g1=t2;
+wave_1_per_point79=b1=t3;
+wave_1_per_point80=r2=t4;
+wave_1_per_point81=g2=t5;
+wave_1_per_point82=b2=t6;
+wave_1_per_point83=
+wave_1_per_point84=r=r1*flip + r2*(1-flip);
+wave_1_per_point85=g=g1*flip + g2*(1-flip);
+wave_1_per_point86=b=b1*flip + b2*(1-flip);
+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=1
+wavecode_2_scaling=1.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=0.600000
+wavecode_2_b=0.100000
+wavecode_2_a=1.000000
+wave_2_per_frame1=t1=sin(time)*0.5+0.5;
+wave_2_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_2_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_2_per_frame4=
+wave_2_per_frame5=t4=sin(time+1.1)*0.5+0.5;
+wave_2_per_frame6=t5=sin(time+3.1)*0.5+0.5;
+wave_2_per_frame7=t6=sin(time+5.2)*0.5+0.5;
+wave_2_per_frame8=
+wave_2_per_frame9=
+wave_2_per_frame10=t8= int( sin(time*2)*2 + 3);
+wave_2_per_point1=n=sample*6.283;
+wave_2_per_point2=phs=-sample * 0.2;
+wave_2_per_point3=tm=q1 + phs;
+wave_2_per_point4=
+wave_2_per_point5=flip=flip+1;
+wave_2_per_point6=flip=flip*below(flip,2);
+wave_2_per_point7=
+wave_2_per_point8=xp=0;
+wave_2_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;
+wave_2_per_point10=zp=0;
+wave_2_per_point11=
+wave_2_per_point12=//wrist movement;
+wave_2_per_point13=ang=sin(tm*2)*0.5 +0.5;
+wave_2_per_point14=
+wave_2_per_point15=xq=xp;
+wave_2_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point17=yq=yp*sinang + zp*cosang;
+wave_2_per_point18=zq=yp*cosang - zp*sinang;
+wave_2_per_point19=yq=yp;
+wave_2_per_point20=zq=zp;
+wave_2_per_point21=
+wave_2_per_point22=ang=tm*8 + 1;
+wave_2_per_point23=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point24=xp=xq*sinang + yq*cosang;
+wave_2_per_point25=yp=xq*cosang - yq*sinang;
+wave_2_per_point26=zp=zq;
+wave_2_per_point27=
+wave_2_per_point28=//forearm movement;
+wave_2_per_point29=zp=zp-0.3;
+wave_2_per_point30=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_2_per_point31=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point32=xq=xp;
+wave_2_per_point33=yq=yp*sinang + zp*cosang;
+wave_2_per_point34=zq=yp*cosang - zp*sinang;
+wave_2_per_point35=
+wave_2_per_point36=//upper arm twist
+wave_2_per_point37=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_2_per_point38=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point39=xp=xq*sinang + yq*cosang;
+wave_2_per_point40=yp=xq*cosang - yq*sinang;
+wave_2_per_point41=zp=zq;
+wave_2_per_point42=
+wave_2_per_point43=//upper arm outward;
+wave_2_per_point44=zp=zp-0.35;
+wave_2_per_point45=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_2_per_point46=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point47=xq=xp*sinang + zp*cosang;
+wave_2_per_point48=yq=yp;
+wave_2_per_point49=zq=xp*cosang - zp*sinang;
+wave_2_per_point50=
+wave_2_per_point51=//upper arm up down;
+wave_2_per_point52=ang=cos(tm)*0.5 - 0.5;
+wave_2_per_point53=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point54=xp=xq;
+wave_2_per_point55=yp=yq*cosang - zq*sinang;
+wave_2_per_point56=zp=yq*sinang + zq*cosang;
+wave_2_per_point57=
+wave_2_per_point58=//xp=xq;yp=yq;zp=zq;
+wave_2_per_point59=
+wave_2_per_point60=
+wave_2_per_point61=//project into screenspace and draw on screen
+wave_2_per_point62=zp=zp+2;
+wave_2_per_point63=xs=xp/zp;
+wave_2_per_point64=ys=yp/zp;
+wave_2_per_point65=
+wave_2_per_point66=x=xs+0.5;
+wave_2_per_point67=y=ys*1.3+0.5;
+wave_2_per_point68=
+wave_2_per_point69=a=if( equal(q8,1) , (1-sample) , sample);
+wave_2_per_point70=
+wave_2_per_point71=
+wave_2_per_point72=a=a* above( sin(tm*128*t8) , 0 );
+wave_2_per_point73=
+wave_2_per_point74=
+wave_2_per_point75=r=t4;
+wave_2_per_point76=g=t5;
+wave_2_per_point77=b=t6;
+wave_2_per_point78=
+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=1
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=0.300000
+wavecode_3_b=0.100000
+wavecode_3_a=1.000000
+wave_3_per_frame1=t1=sin(time)*0.5+0.5;
+wave_3_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_3_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_3_per_frame4=
+wave_3_per_frame5=t4=sin(time+1.1)*0.5+0.5;
+wave_3_per_frame6=t5=sin(time+3.1)*0.5+0.5;
+wave_3_per_frame7=t6=sin(time+5.2)*0.5+0.5;
+wave_3_per_frame8=
+wave_3_per_frame9=
+wave_3_per_frame10=t8= int( sin(time*2)*2 + 3);
+wave_3_per_point1=n=sample*6.283;
+wave_3_per_point2=phs=-sample * 0.2;
+wave_3_per_point3=tm=q1 + phs;
+wave_3_per_point4=
+wave_3_per_point5=flip=flip+1;
+wave_3_per_point6=flip=flip*below(flip,2);
+wave_3_per_point7=
+wave_3_per_point8=xp=0;
+wave_3_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2 +0.1;
+wave_3_per_point10=yp=-yp;
+wave_3_per_point11=zp=0;
+wave_3_per_point12=
+wave_3_per_point13=//wrist movement;
+wave_3_per_point14=ang=sin(tm*2)*0.5 +0.5;
+wave_3_per_point15=
+wave_3_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point17=xq=xp;
+wave_3_per_point18=yq=yp*sinang + zp*cosang;
+wave_3_per_point19=zq=yp*cosang - zp*sinang;
+wave_3_per_point20=yq=yp;
+wave_3_per_point21=zq=zp;
+wave_3_per_point22=
+wave_3_per_point23=ang=tm*8+1;
+wave_3_per_point24=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point25=xp=xq*sinang + yq*cosang;
+wave_3_per_point26=yp=xq*cosang - yq*sinang;
+wave_3_per_point27=zp=zq;
+wave_3_per_point28=
+wave_3_per_point29=//forearm movement;
+wave_3_per_point30=zp=zp-0.3;
+wave_3_per_point31=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_3_per_point32=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point33=xq=xp;
+wave_3_per_point34=yq=yp*sinang + zp*cosang;
+wave_3_per_point35=zq=yp*cosang - zp*sinang;
+wave_3_per_point36=
+wave_3_per_point37=//upper arm twist
+wave_3_per_point38=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_3_per_point39=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point40=xp=xq*sinang + yq*cosang;
+wave_3_per_point41=yp=xq*cosang - yq*sinang;
+wave_3_per_point42=zp=zq;
+wave_3_per_point43=
+wave_3_per_point44=//upper arm outward;
+wave_3_per_point45=zp=zp-0.35;
+wave_3_per_point46=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_3_per_point47=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point48=xq=xp*sinang + zp*cosang;
+wave_3_per_point49=yq=yp;
+wave_3_per_point50=zq=xp*cosang - zp*sinang;
+wave_3_per_point51=
+wave_3_per_point52=//upper arm up down;
+wave_3_per_point53=ang=cos(tm)*0.5 - 0.5;
+wave_3_per_point54=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point55=xp=xq;
+wave_3_per_point56=yp=yq*cosang - zq*sinang;
+wave_3_per_point57=zp=yq*sinang + zq*cosang;
+wave_3_per_point58=
+wave_3_per_point59=//xp=xq;yp=yq;zp=zq;
+wave_3_per_point60=
+wave_3_per_point61=
+wave_3_per_point62=//project into screenspace and draw on screen
+wave_3_per_point63=zp=zp+2;
+wave_3_per_point64=xs=xp/zp;
+wave_3_per_point65=ys=yp/zp;
+wave_3_per_point66=
+wave_3_per_point67=x=xs+0.5;
+wave_3_per_point68=y=ys*1.3+0.5;
+wave_3_per_point69=
+wave_3_per_point70=
+wave_3_per_point71=a=if( equal(q8,1) , (1-sample) , sample);
+wave_3_per_point72=a=a*a;
+wave_3_per_point73=
+wave_3_per_point74=a=a* above( sin(tm*128*t8) , 0 );
+wave_3_per_point75=
+wave_3_per_point76=
+wave_3_per_point77=r=t4;
+wave_3_per_point78=g=t5;
+wave_3_per_point79=b=t6;
+shapecode_0_enabled=1
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.260000
+shapecode_0_y=0.809999
+shapecode_0_rad=0.892690
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.082857
+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.264;
+shape_0_per_frame2=
+shape_0_per_frame3=r2=r2*q4;
+shape_0_per_frame4=g2=g2*q4;
+shape_0_per_frame5=b2=b2*q4;
+shapecode_1_enabled=1
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.740000
+shapecode_1_y=0.809999
+shapecode_1_rad=0.892690
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.082857
+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=x=0.737;
+shape_1_per_frame2=
+shape_1_per_frame3=
+shape_1_per_frame4=r2=r2*q4;
+shape_1_per_frame5=g2=g2*q4;
+shape_1_per_frame6=b2=b2*q4;
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.260000
+shapecode_2_y=0.179999
+shapecode_2_rad=0.892690
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.082857
+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=x = 0.264;
+shape_2_per_frame2=y = 0.178;
+shape_2_per_frame3=
+shape_2_per_frame4=
+shape_2_per_frame5=r2=r2*q4;
+shape_2_per_frame6=g2=g2*q4;
+shape_2_per_frame7=b2=b2*q4;
+shapecode_3_enabled=1
+shapecode_3_sides=4
+shapecode_3_additive=0
+shapecode_3_thickOutline=0
+shapecode_3_textured=1
+shapecode_3_x=0.740000
+shapecode_3_y=0.809999
+shapecode_3_rad=0.892690
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=1.082857
+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.737;
+shape_3_per_frame2=y = 0.178;
+shape_3_per_frame3=
+shape_3_per_frame4=
+shape_3_per_frame5=r2=r2*q4;
+shape_3_per_frame6=g2=g2*q4;
+shape_3_per_frame7=b2=b2*q4;
+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=warp=0
+per_frame_init_9=
+per_frame_1=
+per_frame_2=//krash's beat detection code
+per_frame_3=volume = 0.3*(bass+mid+att);
+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=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=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=beatcounter = beatcounter + beat;
+per_frame_14=mode = if(beat*equal(beatcounter%2,0),1-mode,mode);
+per_frame_15=flip = 2*mode-1;
+per_frame_16=monitor=flip;
+per_frame_17=q8=flip;
+per_frame_18=
+per_frame_19=
+per_frame_20=decay=0.98;
+per_frame_21=zoom=1.01;
+per_frame_22=
+per_frame_23=vol=(bass_att+mid_att+treb_att)*0.25;
+per_frame_24=vol=vol*vol;
+per_frame_25=mtime=mtime+vol*0.1*flip*(45/fps);
+per_frame_26=
+per_frame_27=q1=mtime*0.4;
+per_frame_28=
+per_frame_29=warp=0.0;
+per_frame_30=
+per_frame_31=
+per_frame_32=q4 = min( vol*0.8 , 1 )*0.1 + 0.9
diff --git a/presets/Eo.S. - repeater 15 - kaleidoscope b.milk b/presets/Eo.S. - repeater 15 - kaleidoscope b.milk
new file mode 100644
index 0000000..c7f306c
--- /dev/null
+++ b/presets/Eo.S. - repeater 15 - kaleidoscope b.milk
@@ -0,0 +1,640 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.980000
+fDecay=0.960000
+fVideoEchoZoom=0.996630
+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=0
+bInvert=0
+fWaveAlpha=0.001000
+fWaveScale=0.011726
+fWaveSmoothing=0.900000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.750000
+fModWaveAlphaEnd=0.950000
+fWarpAnimSpeed=0.037492
+fWarpScale=0.014889
+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.033004
+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=0.000000
+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=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=0.100000
+wavecode_0_g=1.000000
+wavecode_0_b=0.700000
+wavecode_0_a=1.000000
+wave_0_per_frame1=t1=sin(time)*0.5+0.5;
+wave_0_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_0_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_0_per_frame4=
+wave_0_per_frame5=t4=sin(time+1.1)*0.5+0.5;
+wave_0_per_frame6=t5=sin(time+3.1)*0.5+0.5;
+wave_0_per_frame7=t6=sin(time+5.2)*0.5+0.5;
+wave_0_per_point1=n=sample*6.283;
+wave_0_per_point2=phs=-sample * 0.2;
+wave_0_per_point3=tm=q1 + phs;
+wave_0_per_point4=
+wave_0_per_point5=flip=flip+1;
+wave_0_per_point6=flip=flip*below(flip,2);
+wave_0_per_point7=
+wave_0_per_point8=xp=0;
+wave_0_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;
+wave_0_per_point10=zp=0;
+wave_0_per_point11=
+wave_0_per_point12=//wrist movement;
+wave_0_per_point13=ang=sin(tm*2 )*0.5 +0.5;
+wave_0_per_point14=
+wave_0_per_point15=xq=xp;
+wave_0_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point17=yq=yp*sinang + zp*cosang;
+wave_0_per_point18=zq=yp*cosang - zp*sinang;
+wave_0_per_point19=yq=yp;
+wave_0_per_point20=zq=zp;
+wave_0_per_point21=
+wave_0_per_point22=ang=tm*8;
+wave_0_per_point23=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point24=xp=xq*sinang + yq*cosang;
+wave_0_per_point25=yp=xq*cosang - yq*sinang;
+wave_0_per_point26=zp=zq;
+wave_0_per_point27=
+wave_0_per_point28=//forearm movement;
+wave_0_per_point29=zp=zp-0.3;
+wave_0_per_point30=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_0_per_point31=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point32=xq=xp;
+wave_0_per_point33=yq=yp*sinang + zp*cosang;
+wave_0_per_point34=zq=yp*cosang - zp*sinang;
+wave_0_per_point35=
+wave_0_per_point36=//upper arm twist
+wave_0_per_point37=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_0_per_point38=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point39=xp=xq*sinang + yq*cosang;
+wave_0_per_point40=yp=xq*cosang - yq*sinang;
+wave_0_per_point41=zp=zq;
+wave_0_per_point42=
+wave_0_per_point43=//upper arm outward;
+wave_0_per_point44=zp=zp-0.35;
+wave_0_per_point45=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_0_per_point46=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point47=xq=xp*sinang + zp*cosang;
+wave_0_per_point48=yq=yp;
+wave_0_per_point49=zq=xp*cosang - zp*sinang;
+wave_0_per_point50=
+wave_0_per_point51=//upper arm up down;
+wave_0_per_point52=ang=cos(tm)*0.5 - 0.5;
+wave_0_per_point53=sinang=sin(ang);cosang=cos(ang);
+wave_0_per_point54=xp=xq;
+wave_0_per_point55=yp=yq*cosang - zq*sinang;
+wave_0_per_point56=zp=yq*sinang + zq*cosang;
+wave_0_per_point57=
+wave_0_per_point58=//xp=xq;yp=yq;zp=zq;
+wave_0_per_point59=
+wave_0_per_point60=
+wave_0_per_point61=//project into screenspace and draw on screen
+wave_0_per_point62=zp=zp+2;
+wave_0_per_point63=xs=xp/zp;
+wave_0_per_point64=ys=yp/zp;
+wave_0_per_point65=
+wave_0_per_point66=x=xs+0.5;
+wave_0_per_point67=y=ys*1.3+0.5;
+wave_0_per_point68=
+wave_0_per_point69=
+wave_0_per_point70=a=if( equal(q8,1) , (1-sample) , sample);
+wave_0_per_point71=a=a*a;
+wave_0_per_point72=
+wave_0_per_point73=b=b+pow(1-sample,2)*0.3;
+wave_0_per_point74=
+wave_0_per_point75=
+wave_0_per_point76=
+wave_0_per_point77=r1=t1;
+wave_0_per_point78=g1=t2;
+wave_0_per_point79=b1=t3;
+wave_0_per_point80=r2=t4;
+wave_0_per_point81=g2=t5;
+wave_0_per_point82=b2=t6;
+wave_0_per_point83=
+wave_0_per_point84=r=r1*flip + r2*(1-flip);
+wave_0_per_point85=g=g1*flip + g2*(1-flip);
+wave_0_per_point86=b=b1*flip + b2*(1-flip);
+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=0.100000
+wavecode_1_g=1.000000
+wavecode_1_b=0.700000
+wavecode_1_a=1.000000
+wave_1_per_frame1=t1=sin(time)*0.5+0.5;
+wave_1_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_1_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_1_per_frame4=
+wave_1_per_frame5=t4=sin(time+1.1)*0.5+0.5;
+wave_1_per_frame6=t5=sin(time+3.1)*0.5+0.5;
+wave_1_per_frame7=t6=sin(time+5.2)*0.5+0.5;
+wave_1_per_point1=n=sample*6.283;
+wave_1_per_point2=phs=-sample * 0.2;
+wave_1_per_point3=tm=q1 + phs;
+wave_1_per_point4=
+wave_1_per_point5=flip=flip+1;
+wave_1_per_point6=flip=flip*below(flip,2);
+wave_1_per_point7=
+wave_1_per_point8=xp=0;
+wave_1_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;
+wave_1_per_point10=zp=0;
+wave_1_per_point11=
+wave_1_per_point12=//wrist movement;
+wave_1_per_point13=ang=sin(tm*2 )*0.5 +0.5;
+wave_1_per_point14=
+wave_1_per_point15=xq=xp;
+wave_1_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point17=yq=yp*sinang + zp*cosang;
+wave_1_per_point18=zq=yp*cosang - zp*sinang;
+wave_1_per_point19=yq=yp;
+wave_1_per_point20=zq=zp;
+wave_1_per_point21=
+wave_1_per_point22=ang=tm*8;
+wave_1_per_point23=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point24=xp=xq*sinang + yq*cosang;
+wave_1_per_point25=yp=xq*cosang - yq*sinang;
+wave_1_per_point26=zp=zq;
+wave_1_per_point27=
+wave_1_per_point28=//forearm movement;
+wave_1_per_point29=zp=zp-0.3;
+wave_1_per_point30=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_1_per_point31=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point32=xq=xp;
+wave_1_per_point33=yq=yp*sinang + zp*cosang;
+wave_1_per_point34=zq=yp*cosang - zp*sinang;
+wave_1_per_point35=
+wave_1_per_point36=//upper arm twist
+wave_1_per_point37=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_1_per_point38=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point39=xp=xq*sinang + yq*cosang;
+wave_1_per_point40=yp=xq*cosang - yq*sinang;
+wave_1_per_point41=zp=zq;
+wave_1_per_point42=
+wave_1_per_point43=//upper arm outward;
+wave_1_per_point44=zp=zp-0.35;
+wave_1_per_point45=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_1_per_point46=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point47=xq=xp*sinang + zp*cosang;
+wave_1_per_point48=yq=yp;
+wave_1_per_point49=zq=xp*cosang - zp*sinang;
+wave_1_per_point50=
+wave_1_per_point51=//upper arm up down;
+wave_1_per_point52=ang=cos(tm)*0.5 - 0.5;
+wave_1_per_point53=sinang=sin(ang);cosang=cos(ang);
+wave_1_per_point54=xp=xq;
+wave_1_per_point55=yp=yq*cosang - zq*sinang;
+wave_1_per_point56=zp=yq*sinang + zq*cosang;
+wave_1_per_point57=
+wave_1_per_point58=//xp=xq;yp=yq;zp=zq;
+wave_1_per_point59=
+wave_1_per_point60=
+wave_1_per_point61=//project into screenspace and draw on screen
+wave_1_per_point62=zp=zp+2;
+wave_1_per_point63=xs=-xp/zp;
+wave_1_per_point64=ys=yp/zp;
+wave_1_per_point65=
+wave_1_per_point66=x=xs+0.5;
+wave_1_per_point67=y=ys*1.3+0.5;
+wave_1_per_point68=
+wave_1_per_point69=
+wave_1_per_point70=a=if( equal(q8,1) , (1-sample) , sample);
+wave_1_per_point71=a=a*a;
+wave_1_per_point72=
+wave_1_per_point73=b=b+pow(1-sample,2)*0.3;
+wave_1_per_point74=
+wave_1_per_point75=
+wave_1_per_point76=
+wave_1_per_point77=r1=t1;
+wave_1_per_point78=g1=t2;
+wave_1_per_point79=b1=t3;
+wave_1_per_point80=r2=t4;
+wave_1_per_point81=g2=t5;
+wave_1_per_point82=b2=t6;
+wave_1_per_point83=
+wave_1_per_point84=r=r1*flip + r2*(1-flip);
+wave_1_per_point85=g=g1*flip + g2*(1-flip);
+wave_1_per_point86=b=b1*flip + b2*(1-flip);
+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=1
+wavecode_2_scaling=1.000000
+wavecode_2_smoothing=0.500000
+wavecode_2_r=1.000000
+wavecode_2_g=0.600000
+wavecode_2_b=0.100000
+wavecode_2_a=1.000000
+wave_2_per_frame1=t1=sin(time)*0.5+0.5;
+wave_2_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_2_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_2_per_frame4=
+wave_2_per_frame5=t4=sin(time+1.1)*0.5+0.5;
+wave_2_per_frame6=t5=sin(time+3.1)*0.5+0.5;
+wave_2_per_frame7=t6=sin(time+5.2)*0.5+0.5;
+wave_2_per_frame8=
+wave_2_per_frame9=
+wave_2_per_frame10=t8= int( sin(time*2)*2 + 3);
+wave_2_per_point1=n=sample*6.283;
+wave_2_per_point2=phs=-sample * 0.2;
+wave_2_per_point3=tm=q1 + phs;
+wave_2_per_point4=
+wave_2_per_point5=flip=flip+1;
+wave_2_per_point6=flip=flip*below(flip,2);
+wave_2_per_point7=
+wave_2_per_point8=xp=0;
+wave_2_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;
+wave_2_per_point10=zp=0;
+wave_2_per_point11=
+wave_2_per_point12=//wrist movement;
+wave_2_per_point13=ang=sin(tm*2)*0.5 +0.5;
+wave_2_per_point14=
+wave_2_per_point15=xq=xp;
+wave_2_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point17=yq=yp*sinang + zp*cosang;
+wave_2_per_point18=zq=yp*cosang - zp*sinang;
+wave_2_per_point19=yq=yp;
+wave_2_per_point20=zq=zp;
+wave_2_per_point21=
+wave_2_per_point22=ang=tm*8 + 1;
+wave_2_per_point23=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point24=xp=xq*sinang + yq*cosang;
+wave_2_per_point25=yp=xq*cosang - yq*sinang;
+wave_2_per_point26=zp=zq;
+wave_2_per_point27=
+wave_2_per_point28=//forearm movement;
+wave_2_per_point29=zp=zp-0.3;
+wave_2_per_point30=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_2_per_point31=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point32=xq=xp;
+wave_2_per_point33=yq=yp*sinang + zp*cosang;
+wave_2_per_point34=zq=yp*cosang - zp*sinang;
+wave_2_per_point35=
+wave_2_per_point36=//upper arm twist
+wave_2_per_point37=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_2_per_point38=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point39=xp=xq*sinang + yq*cosang;
+wave_2_per_point40=yp=xq*cosang - yq*sinang;
+wave_2_per_point41=zp=zq;
+wave_2_per_point42=
+wave_2_per_point43=//upper arm outward;
+wave_2_per_point44=zp=zp-0.35;
+wave_2_per_point45=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_2_per_point46=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point47=xq=xp*sinang + zp*cosang;
+wave_2_per_point48=yq=yp;
+wave_2_per_point49=zq=xp*cosang - zp*sinang;
+wave_2_per_point50=
+wave_2_per_point51=//upper arm up down;
+wave_2_per_point52=ang=cos(tm)*0.5 - 0.5;
+wave_2_per_point53=sinang=sin(ang);cosang=cos(ang);
+wave_2_per_point54=xp=xq;
+wave_2_per_point55=yp=yq*cosang - zq*sinang;
+wave_2_per_point56=zp=yq*sinang + zq*cosang;
+wave_2_per_point57=
+wave_2_per_point58=//xp=xq;yp=yq;zp=zq;
+wave_2_per_point59=
+wave_2_per_point60=
+wave_2_per_point61=//project into screenspace and draw on screen
+wave_2_per_point62=zp=zp+2;
+wave_2_per_point63=xs=xp/zp;
+wave_2_per_point64=ys=yp/zp;
+wave_2_per_point65=
+wave_2_per_point66=x=xs+0.5;
+wave_2_per_point67=y=ys*1.3+0.5;
+wave_2_per_point68=
+wave_2_per_point69=a=if( equal(q8,1) , (1-sample) , sample);
+wave_2_per_point70=
+wave_2_per_point71=
+wave_2_per_point72=a=a* above( sin(tm*128*t8) , 0 );
+wave_2_per_point73=
+wave_2_per_point74=
+wave_2_per_point75=r=t4;
+wave_2_per_point76=g=t5;
+wave_2_per_point77=b=t6;
+wave_2_per_point78=
+wavecode_3_enabled=0
+wavecode_3_samples=512
+wavecode_3_sep=0
+wavecode_3_bSpectrum=0
+wavecode_3_bUseDots=1
+wavecode_3_bDrawThick=1
+wavecode_3_bAdditive=1
+wavecode_3_scaling=1.000000
+wavecode_3_smoothing=0.500000
+wavecode_3_r=1.000000
+wavecode_3_g=0.600000
+wavecode_3_b=0.100000
+wavecode_3_a=1.000000
+wave_3_per_frame1=t1=sin(time)*0.5+0.5;
+wave_3_per_frame2=t2=sin(time+2.1)*0.5+0.5;
+wave_3_per_frame3=t3=sin(time+4.2)*0.5+0.5;
+wave_3_per_frame4=
+wave_3_per_frame5=t4=sin(time+1.1)*0.5+0.5;
+wave_3_per_frame6=t5=sin(time+3.1)*0.5+0.5;
+wave_3_per_frame7=t6=sin(time+5.2)*0.5+0.5;
+wave_3_per_frame8=
+wave_3_per_frame9=
+wave_3_per_frame10=t8= int( sin(time*2)*2 + 3);
+wave_3_per_point1=n=sample*6.283;
+wave_3_per_point2=phs=-sample * 0.2;
+wave_3_per_point3=tm=q1 + phs;
+wave_3_per_point4=
+wave_3_per_point5=flip=flip+1;
+wave_3_per_point6=flip=flip*below(flip,2);
+wave_3_per_point7=
+wave_3_per_point8=xp=0;
+wave_3_per_point9=yp=flip*0.1 + (sin(tm)*0.5 + 0.5)*0.2;
+wave_3_per_point10=zp=0;
+wave_3_per_point11=
+wave_3_per_point12=//wrist movement;
+wave_3_per_point13=ang=sin(tm*2)*0.5 +0.5;
+wave_3_per_point14=
+wave_3_per_point15=xq=xp;
+wave_3_per_point16=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point17=yq=yp*sinang + zp*cosang;
+wave_3_per_point18=zq=yp*cosang - zp*sinang;
+wave_3_per_point19=yq=yp;
+wave_3_per_point20=zq=zp;
+wave_3_per_point21=
+wave_3_per_point22=ang=tm*8 + 1;
+wave_3_per_point23=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point24=xp=xq*sinang + yq*cosang;
+wave_3_per_point25=yp=xq*cosang - yq*sinang;
+wave_3_per_point26=zp=zq;
+wave_3_per_point27=
+wave_3_per_point28=//forearm movement;
+wave_3_per_point29=zp=zp-0.3;
+wave_3_per_point30=ang=3.14 + sin(tm*2 - 0.5)*1.5;
+wave_3_per_point31=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point32=xq=xp;
+wave_3_per_point33=yq=yp*sinang + zp*cosang;
+wave_3_per_point34=zq=yp*cosang - zp*sinang;
+wave_3_per_point35=
+wave_3_per_point36=//upper arm twist
+wave_3_per_point37=ang=-1.0 + cos(tm*3.1 + 0.5);
+wave_3_per_point38=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point39=xp=xq*sinang + yq*cosang;
+wave_3_per_point40=yp=xq*cosang - yq*sinang;
+wave_3_per_point41=zp=zq;
+wave_3_per_point42=
+wave_3_per_point43=//upper arm outward;
+wave_3_per_point44=zp=zp-0.35;
+wave_3_per_point45=ang=cos(tm*2.3)*1.75 - 1.05;
+wave_3_per_point46=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point47=xq=xp*sinang + zp*cosang;
+wave_3_per_point48=yq=yp;
+wave_3_per_point49=zq=xp*cosang - zp*sinang;
+wave_3_per_point50=
+wave_3_per_point51=//upper arm up down;
+wave_3_per_point52=ang=cos(tm)*0.5 - 0.5;
+wave_3_per_point53=sinang=sin(ang);cosang=cos(ang);
+wave_3_per_point54=xp=xq;
+wave_3_per_point55=yp=yq*cosang - zq*sinang;
+wave_3_per_point56=zp=yq*sinang + zq*cosang;
+wave_3_per_point57=
+wave_3_per_point58=//xp=xq;yp=yq;zp=zq;
+wave_3_per_point59=
+wave_3_per_point60=
+wave_3_per_point61=//project into screenspace and draw on screen
+wave_3_per_point62=zp=zp+2;
+wave_3_per_point63=xs=-xp/zp;
+wave_3_per_point64=ys=yp/zp;
+wave_3_per_point65=
+wave_3_per_point66=x=xs+0.5;
+wave_3_per_point67=y=ys*1.3+0.5;
+wave_3_per_point68=
+wave_3_per_point69=a=if( equal(q8,1) , (1-sample) , sample);
+wave_3_per_point70=
+wave_3_per_point71=
+wave_3_per_point72=a=a* above( sin(tm*128*t8) , 0 );
+wave_3_per_point73=
+wave_3_per_point74=
+wave_3_per_point75=r=t4;
+wave_3_per_point76=g=t5;
+wave_3_per_point77=b=t6;
+wave_3_per_point78=
+shapecode_0_enabled=1
+shapecode_0_sides=4
+shapecode_0_additive=0
+shapecode_0_thickOutline=0
+shapecode_0_textured=1
+shapecode_0_x=0.260000
+shapecode_0_y=0.809999
+shapecode_0_rad=0.892690
+shapecode_0_ang=0.000000
+shapecode_0_tex_ang=0.000000
+shapecode_0_tex_zoom=1.082857
+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.264;
+shape_0_per_frame2=
+shape_0_per_frame3=r2=r2*q4;
+shape_0_per_frame4=g2=g2*q4;
+shape_0_per_frame5=b2=b2*q4;
+shape_0_per_frame6=
+shape_0_per_frame7=tex_ang= q2
+shapecode_1_enabled=0
+shapecode_1_sides=4
+shapecode_1_additive=0
+shapecode_1_thickOutline=0
+shapecode_1_textured=1
+shapecode_1_x=0.740000
+shapecode_1_y=0.809999
+shapecode_1_rad=0.892690
+shapecode_1_ang=0.000000
+shapecode_1_tex_ang=0.000000
+shapecode_1_tex_zoom=1.082857
+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=x=0.737;
+shape_1_per_frame2=
+shape_1_per_frame3=
+shape_1_per_frame4=r2=r2*q4;
+shape_1_per_frame5=g2=g2*q4;
+shape_1_per_frame6=b2=b2*q4;
+shape_1_per_frame7=
+shape_1_per_frame8=
+shape_1_per_frame9=tex_ang= -q2
+shapecode_2_enabled=1
+shapecode_2_sides=4
+shapecode_2_additive=0
+shapecode_2_thickOutline=0
+shapecode_2_textured=1
+shapecode_2_x=0.260000
+shapecode_2_y=0.179999
+shapecode_2_rad=0.892690
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=1.082857
+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=x = 0.264;
+shape_2_per_frame2=y = 0.178;
+shape_2_per_frame3=
+shape_2_per_frame4=
+shape_2_per_frame5=r2=r2*q4;
+shape_2_per_frame6=g2=g2*q4;
+shape_2_per_frame7=b2=b2*q4;
+shape_2_per_frame8=
+shape_2_per_frame9=
+shape_2_per_frame10=tex_ang= -q2/2
+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.499999
+shapecode_3_rad=0.476930
+shapecode_3_ang=0.000000
+shapecode_3_tex_ang=0.000000
+shapecode_3_tex_zoom=2.026830
+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.4998
+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=warp=0
+per_frame_init_9=
+per_frame_1=
+per_frame_2=//krash's beat detection code
+per_frame_3=volume = 0.3*(bass+mid+att);
+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=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=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=beatcounter = beatcounter + beat;
+per_frame_14=mode = if(beat*equal(beatcounter%2,0),1-mode,mode);
+per_frame_15=flip = 2*mode-1;
+per_frame_16=monitor=flip;
+per_frame_17=q8=flip;
+per_frame_18=
+per_frame_19=
+per_frame_20=decay=0.98;
+per_frame_21=zoom=1.01;
+per_frame_22=
+per_frame_23=vol=(bass_att+mid_att+treb_att)*0.25;
+per_frame_24=vol=vol*vol;
+per_frame_25=mtime=mtime+vol*0.05*flip*(65/fps);
+per_frame_26=mtimeb=mtimeb+vol*0.1*(65/fps);
+per_frame_27=
+per_frame_28=q1=time*3;
+per_frame_29=
+per_frame_30=warp=0.0;
+per_frame_31=
+per_frame_32=
+per_frame_33=q4 = min( vol*0.8 , 1 )*0.1 + 0.9;
+per_frame_34=q2 = mtimeb/30;
+per_frame_35=sx=-1
diff --git a/presets/Eo.S.+Phat - Arm_upgrades - transformer.milk b/presets/Eo.S.+Phat - Arm_upgrades - transformer.milk
new file mode 100644
index 0000000..0a9af1f
--- /dev/null
+++ b/presets/Eo.S.+Phat - Arm_upgrades - transformer.milk
@@ -0,0 +1,282 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.000000
+fDecay=0.940000
+fVideoEchoZoom=1.001822
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=1
+nWaveMode=0
+bAdditiveWaves=1
+bWaveDots=0
+bWaveThick=0
+bModWaveAlphaByVolume=0
+bMaximizeWaveColor=0
+bTexWrap=1
+bDarkenCenter=0
+bRedBlueStereo=0
+bBrighten=1
+bDarken=1
+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.050000
+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=0.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=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=n=sample*6.283;
+wave_0_per_point2=size=0.165;
+wave_0_per_point3=
+wave_0_per_point4=x=sin(n)*size + 0.5;
+wave_0_per_point5=y=cos(n)*size*1.3333 + 0.5;
+wave_0_per_point6=
+wave_0_per_point7=flux=sin(n*2-time)*0.5+0.5;
+wave_0_per_point8=r=sin(n)*0.5 + 0.5;
+wave_0_per_point9=g=sin(n+2.1)*0.5+0.5;
+wave_0_per_point10=b=sin(n+4.2)*0.5 + 0.5;
+wave_0_per_point11=r=r*flux;
+wave_0_per_point12=g=g*flux;
+wave_0_per_point13=b=b*flux
+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=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.283;
+wave_1_per_point2=size=0.165;
+wave_1_per_point3=
+wave_1_per_point4=x=sin(n)*size + 0.5;
+wave_1_per_point5=y=cos(n)*size*1.3333 + 0.5;
+wave_1_per_point6=
+wave_1_per_point7=flux=sin(n*2-time)*0.5+0.5;
+wave_1_per_point8=r=sin(n)*0.5 + 0.5;
+wave_1_per_point9=g=sin(n+2.1)*0.5+0.5;
+wave_1_per_point10=b=sin(n+4.2)*0.5 + 0.5;
+wave_1_per_point11=r=r*flux;
+wave_1_per_point12=g=g*flux;
+wave_1_per_point13=b=b*flux
+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.542785
+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=65
+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.724343
+shapecode_1_ang=6.283185
+shapecode_1_tex_ang=3.141593
+shapecode_1_tex_zoom=1.020088
+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=0.000000
+shapecode_1_border_g=0.000000
+shapecode_1_border_b=0.000000
+shapecode_1_border_a=0.000000
+shape_1_per_frame1=tex_ang=0.01;
+shape_1_per_frame2=//tex_zoom=2.235;
+shape_1_per_frame3=x=.5-q4;
+shape_1_per_frame4=y=.5-q5;
+shape_1_per_frame5=
+shape_1_per_frame6=vol= (mid*mid+treb*treb);
+shape_1_per_frame7=vol=vol* above(vol,1);
+shape_1_per_frame8=//ang=ang+ vol*0.1;
+shape_1_per_frame9=ang=(sin(time/2)*0.5+0.5)*6.28;
+shapecode_2_enabled=1
+shapecode_2_sides=13
+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.444840
+shapecode_2_ang=0.000000
+shapecode_2_tex_ang=0.000000
+shapecode_2_tex_zoom=0.550441
+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=1
+shapecode_3_sides=14
+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=0.000000
+shapecode_3_g=0.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
+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.25;
+per_frame_4=vol=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*(44/fps);
+per_frame_13=
+per_frame_14=q4=0;
+per_frame_15=q5=0;
+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.01;
+per_frame_21=q1=sin(musictime*0.001)*0.4+0.5;
+per_frame_22=q2=cos(musictime*0.001)*0.5+0.5;
+per_frame_23=
+per_frame_24=q8=musictime;
+per_frame_25=zoom=.8;
+per_frame_26=
+per_frame_27=monitor=rot;
+per_frame_28=
+per_frame_29=
+per_frame_30=musictime=musictime+mid*0.1;
+per_frame_31=
+per_frame_32=xpos=sin(musictime*0.1)*0.2;
+per_frame_33=ypos=cos(musictime*0.1)*0.2;
+per_frame_34=q4=xpos;
+per_frame_35=q5=ypos
diff --git "a/presets/Eo.S.+Phat Cool Bug v2 + \050Krash\047s beat detection\051.milk" "b/presets/Eo.S.+Phat Cool Bug v2 + \050Krash\047s beat detection\051.milk"
new file mode 100644
index 0000000..adb7467
--- /dev/null
+++ "b/presets/Eo.S.+Phat Cool Bug v2 + \050Krash\047s beat detection\051.milk"
@@ -0,0 +1,261 @@
+[preset00]
+fRating=3.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=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=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=0.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=0
+shapecode_1_textured=1
+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=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=tex_ang=0.01;
+shape_1_per_frame2=x=.5+q4;y=.5+q5;
+shape_1_per_frame3=ang = time/5
+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*(75/fps);
+per_frame_16=
+per_frame_17=q4=sin(musictime*0.02)*0.3;
+per_frame_18=q5=sin(musictime*0.01)*0.3;
+per_frame_19=
+per_frame_20=dx=sin(musictime*0.1)*0.01;
+per_frame_21=dy=cos(musictime*0.069)*0.01;
+per_frame_22=
+per_frame_23=
+per_frame_24=
+per_frame_25=
+per_frame_26=monitor=rot;
+per_frame_27=
+per_frame_28=
+per_frame_29=
+per_frame_30=//krash's beat detection code
+per_frame_31=volume = 0.3*(bass+mid+att);
+per_frame_32=beatrate = equal(beatrate,0) + (1-equal(beatrate,0))*(below(volume,0.01) + (1-below(volume,0.01))*beatrate);
+per_frame_33=lastbeat = lastbeat + equal(lastbeat,0)*time;
+per_frame_34=meanbass_att = 0.1*(meanbass_att*9 + bass_att);
+per_frame_35=peakbass_att = max(bass_att,peakbass_att);
+per_frame_36=beatrate = max(if(beat,if(below(time-lastbeat,2*beatrate),0.1*(beatrate*9 + time - lastbeat),beatrate),beatrate),0.1);
+per_frame_37=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_38=lastbeat = beat*time + (1-beat)*lastbeat;
+per_frame_39=peakbass_att = max(peakbass_att,1.1*meanbass_att);
+per_frame_40=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_41=beatcounter = beatcounter + beat;
+per_frame_42=mode = if(beat*equal(beatcounter%2,0),1-mode,mode);
+per_frame_43=flip = 2*mode-1;
+per_frame_44=flip = flip*0.5+0.5;
+per_frame_45=
+per_frame_46=rot = -time/4 * flip;
+per_frame_47=
diff --git a/presets/EvilJim - Follow the ball.milk b/presets/EvilJim - Follow the ball.milk
new file mode 100644
index 0000000..acc49b7
--- /dev/null
+++ b/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/presets/EvilJim - Ice Drops.milk b/presets/EvilJim - Ice Drops.milk
new file mode 100644
index 0000000..e92096a
--- /dev/null
+++ b/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/presets/Fvese & Idiot24-7 - Rearview Mirror.milk b/presets/Fvese & Idiot24-7 - Rearview Mirror.milk
new file mode 100644
index 0000000..4810294
--- /dev/null
+++ b/presets/Fvese & Idiot24-7 - Rearview Mirror.milk
@@ -0,0 +1,72 @@
+[preset00]
+fRating=2.000000
+fGammaAdj=1.280000
+fDecay=0.970000
+fVideoEchoZoom=1.006596
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=3
+nWaveMode=1
+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=4.099998
+fWaveScale=0.660119
+fWaveSmoothing=0.630000
+fWaveParam=-0.200000
+fModWaveAlphaStart=0.710000
+fModWaveAlphaEnd=1.300000
+fWarpAnimSpeed=1.000000
+fWarpScale=1.331000
+fZoomExponent=100.000000
+fShader=0.000000
+zoom=0.607700
+rot=0.000000
+cx=0.500000
+cy=0.500000
+dx=0.000000
+dy=0.000000
+warp=0.010000
+sx=0.999999
+sy=0.999900
+wave_r=0.600000
+wave_g=0.400000
+wave_b=0.800000
+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=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=0.000000
+mv_a=0.000000
+per_frame_1=wave_r=wave_r*sin(bass+mid);
+per_frame_2=wave_b=wave_b-.4*sin(time*bass);
+per_frame_3=wave_g=wave_g+.6*cos(time*mid-bass);
+per_frame_4=bass_eff = max(max(bass,bass_att)-1,0);
+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=decay = decay - 0.05*equal(frame%16,0);
+per_frame_7=rot = rot + bass_eff/bass_thresh-0.05;
+per_frame_8=monitor = rot;
+per_pixel_1=zoom=pow(.8+x&.8+y,1+x&1+y)+.1;
diff --git a/presets/Fvese - 0 To 60.milk b/presets/Fvese - 0 To 60.milk
new file mode 100644
index 0000000..e0b8a15
--- /dev/null
+++ b/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/presets/Fvese - A Blur.milk b/presets/Fvese - A Blur.milk
new file mode 100644
index 0000000..befc1b0
--- /dev/null
+++ b/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/presets/Fvese - Lifesavor Anyone.milk b/presets/Fvese - Lifesavor Anyone.milk
new file mode 100644
index 0000000..958bb3e
--- /dev/null
+++ b/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/presets/Fvese - New meetings.milk b/presets/Fvese - New meetings.milk
new file mode 100644
index 0000000..c31a6f0
--- /dev/null
+++ b/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/presets/Fvese - Quicksand.milk b/presets/Fvese - Quicksand.milk
new file mode 100644
index 0000000..0254b82
--- /dev/null
+++ b/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/presets/Fvese - Round and Round \050geiss gamma mix\051.milk" "b/presets/Fvese - Round and Round \050geiss gamma mix\051.milk"
new file mode 100644
index 0000000..c042d98
--- /dev/null
+++ "b/presets/Fvese - Round and Round \050geiss gamma mix\051.milk"
@@ -0,0 +1,224 @@
+[preset00]
+fRating=3.000000
+fGammaAdj=1.980000
+fDecay=0.944900
+fVideoEchoZoom=1.000000
+fVideoEchoAlpha=0.500000
+nVideoEchoOrientation=0
+nWaveMode=2
+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=2.987793
+fWaveScale=1.008109
+fWaveSmoothing=0.000000
+fWaveParam=0.000000
+fModWaveAlphaStart=0.500000
+fModWaveAlphaEnd=1.000000
+fWarpAnimSpeed=1.001800
+fWarpScale=1.001800
+fZoomExponent=1.008149
+fShader=0.000000
+zoom=1.008148
+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.000000
+ib_r=0.000000
+ib_g=0.300000
+ib_b=0.000000
+ib_a=1.000000
+nMotionVectorsX=6.400000
+nMotionVectorsY=2.400001
+mv_dx=0.000000
+mv_dy=0.340000
+mv_l=0.999999
+mv_r=0.759900
+mv_g=0.480000
+mv_b=0.390000
+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.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=rot = rot+0.030*( 0.60*sin(0.381*time) + 0.40*sin(0.479*time) );
+per_frame_6=myeff=(q3+ if(above(q2,0.75), + q1*tan(time), + q2*tan(time))+.4+((cos(vol))/2) +q3 + 0.40*sin(8*mid)+.25+(vol/10));
+per_frame_7=mytime=.7;
+per_frame_8=q1=sin(mytime*4);
+per_frame_9=q2=sin(mytime*2);
+per_frame_10=q3=abs(rad-.1)*(mytime*myeff);
+per_frame_11=xpos=.5;
+per_frame_12=ypos=.5;
+per_frame_13=wave_x = wave_x + if(above(wave_y,.75), - 0.1*tan(time), + 0.1*tan(time))-.4+((cos(vol))/2)*myeff;
+per_frame_14=wave_y = wave_y + if(below(wave_x,.75), -0.1*tan(time), +0.1*tan(time))-.4+((cos(vol))/2)*myeff;
+per_pixel_1=dx=q3*atan((rad)/q2*sin((dx_r*dy_r)*q3+time*5));
+per_pixel_2=dy=q3*atan((rad)/q2*cos((dx*dy)*q3+time*5));
+per_pixel_3=
diff --git "a/presets/Fvese - Stand Still\041.milk" "b/presets/Fvese - Stand Still\041.milk"
new file mode 100644
index 0000000..921b53d
--- /dev/null
+++ "b/presets/Fvese - Stand Still\041.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/presets/Fvese - The Tunnel \050Final Stage Mix\051.milk" "b/presets/Fvese - The Tunnel \050Final Stage Mix\051.milk"
new file mode 100644
index 0000000..8b4f7bb
--- /dev/null
+++ "b/presets/Fvese - The Tunnel \050Final Stage Mix\051.milk"
@@ -0,0 +1,83 @@
+[preset00]
+fRating=2
+fGammaAdj=1
+fDecay=0.995
+fVideoEchoZoom=1
+fVideoEchoAlpha=0.5
+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
+fWaveScale=0.241456
+fWaveSmoothing=0.09
+fWaveParam=0
+fModWaveAlphaStart=0.5
+fModWaveAlphaEnd=1
+fWarpAnimSpeed=1
+fWarpScale=1
+fZoomExponent=0.741921
+fShader=0
+zoom=1
+rot=0
+cx=0.5
+cy=0.5
+dx=0
+dy=0
+warp=0.01
+sx=0.9999
+sy=0.9999
+wave_r=0.5
+wave_g=0.5
+wave_b=0.5
+wave_x=0.5
+wave_y=0.5
+ob_size=0.005
+ob_r=0
+ob_g=0
+ob_b=0.4
+ob_a=0
+ib_size=0.005
+ib_r=0
+ib_g=0.3
+ib_b=0
+ib_a=1
+nMotionVectorsX=6.4
+nMotionVectorsY=1.440001
+mv_dx=0
+mv_dy=0
+mv_l=0
+mv_r=0.7599
+mv_g=0.48
+mv_b=0.39
+mv_a=0
+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/presets/Fvese - Window Reflection 6.milk b/presets/Fvese - Window Reflection 6.milk
new file mode 100644
index 0000000..e88b133
--- /dev/null
+++ b/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/presets/Fvese - Zoom Effects \050Remix 2\051.milk" "b/presets/Fvese - Zoom Effects \050Remix 2\051.milk"
new file mode 100644
index 0000000..b9ad314
--- /dev/null
+++ "b/presets/Fvese - Zoom Effects \050Remix 2\051.milk"
@@ -0,0 +1,91 @@
+[preset00]
+fRating=2
+fGammaAdj=1
+fDecay=0.98
+fVideoEchoZoom=1
+fVideoEchoAlpha=0.5
+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
+fWaveScale=0.241456
+fWaveSmoothing=0.09
+fWaveParam=0
+fModWaveAlphaStart=0.5
+fModWaveAlphaEnd=1
+fWarpAnimSpeed=1
+fWarpScale=1
+fZoomExponent=0.5503
+fShader=0
+zoom=0.999899
+rot=0
+cx=0.5
+cy=0.5
+dx=0
+dy=0
+warp=0.01
+sx=0.9999
+sy=0.9999
+wave_r=0.5
+wave_g=0.5
+wave_b=0.5
+wave_x=0.5
+wave_y=0.5
+ob_size=0
+ob_r=0
+ob_g=0
+ob_b=0.4
+ob_a=0
+ib_size=0.005
+ib_r=0
+ib_g=0.3
+ib_b=0
+ib_a=1
+nMotionVectorsX=3.2
+nMotionVectorsY=2.400006
+mv_dx=0
+mv_dy=0
+mv_l=5
+mv_r=0.7599
+mv_g=0.48
+mv_b=0.39
+mv_a=0
+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/presets/Fvese - simple.milk b/presets/Fvese - simple.milk
new file mode 100644
index 0000000..321be3e
--- /dev/null
+++ b/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