aboutsummaryrefslogtreecommitdiff
path: root/disto~
diff options
context:
space:
mode:
authorHans-Christoph Steiner <eighthave@users.sourceforge.net>2003-08-16 17:08:55 +0000
committerHans-Christoph Steiner <eighthave@users.sourceforge.net>2003-08-16 17:08:55 +0000
commit506b8e7dedb80d79bf015e47d92e8b8dd8284584 (patch)
tree6393e98add0a0ae7f92388665b3b6242977f5b64 /disto~
parent856eaf396d9a4d371a458a2c373a052bb72c8057 (diff)
added files straight from Yves' sources
svn path=/trunk/externals/unauthorized/; revision=864
Diffstat (limited to 'disto~')
-rw-r--r--disto~/CHANGES.LOG2
-rw-r--r--disto~/COPYING280
-rw-r--r--disto~/INSTALL15
-rw-r--r--disto~/Makefile82
-rw-r--r--disto~/README24
-rw-r--r--disto~/distort3.txt54
-rw-r--r--disto~/disto~.c491
-rw-r--r--disto~/help-disto~.pd73
-rw-r--r--disto~/rs-disto~.pd349
9 files changed, 1370 insertions, 0 deletions
diff --git a/disto~/CHANGES.LOG b/disto~/CHANGES.LOG
new file mode 100644
index 0000000..d376c58
--- /dev/null
+++ b/disto~/CHANGES.LOG
@@ -0,0 +1,2 @@
+0.1
+ initial disto~ implementation
diff --git a/disto~/COPYING b/disto~/COPYING
new file mode 100644
index 0000000..2128a66
--- /dev/null
+++ b/disto~/COPYING
@@ -0,0 +1,280 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
diff --git a/disto~/INSTALL b/disto~/INSTALL
new file mode 100644
index 0000000..319f22a
--- /dev/null
+++ b/disto~/INSTALL
@@ -0,0 +1,15 @@
+untar in /my/pd/dir/externs
+
+cd /my/pd/dir/externs/disto~
+
+make clean
+
+make
+
+make install
+
+open help-disto~.pd
+
+Thanx for getting here.
+Yves/
+comments and bugs @ ydegoyon@free.fr
diff --git a/disto~/Makefile b/disto~/Makefile
new file mode 100644
index 0000000..faaaa24
--- /dev/null
+++ b/disto~/Makefile
@@ -0,0 +1,82 @@
+NAME=disto~
+CSYM=disto~
+
+current: pd_linux
+
+# ----------------------- NT -----------------------
+
+pd_nt: $(NAME).dll
+
+.SUFFIXES: .dll
+
+PDNTCFLAGS = /W3 /WX /DNT /DPD /nologo
+VC="C:\Program Files\Microsoft Visual Studio\Vc98"
+
+PDNTINCLUDE = /I. /I\tcl\include /I\ftp\pd\src /I$(VC)\include
+
+PDNTLDIR = $(VC)\lib
+PDNTLIB = $(PDNTLDIR)\libc.lib \
+ $(PDNTLDIR)\oldnames.lib \
+ $(PDNTLDIR)\kernel32.lib \
+ \ftp\pd\bin\pd.lib
+
+.c.dll:
+ cl $(PDNTCFLAGS) $(PDNTINCLUDE) /c $*.c
+ link /dll /export:$(CSYM)_setup $*.obj $(PDNTLIB)
+
+# ----------------------- IRIX 5.x -----------------------
+
+pd_irix5: $(NAME).pd_irix5
+
+.SUFFIXES: .pd_irix5
+
+SGICFLAGS5 = -o32 -DPD -DUNIX -DIRIX -O2
+
+SGIINCLUDE = -I../../src
+
+.c.pd_irix5:
+ cc $(SGICFLAGS5) $(SGIINCLUDE) -o $*.o -c $*.c
+ ld -elf -shared -rdata_shared -o $*.pd_irix5 $*.o
+ rm $*.o
+
+# ----------------------- IRIX 6.x -----------------------
+
+pd_irix6: $(NAME).pd_irix6
+
+.SUFFIXES: .pd_irix6
+
+SGICFLAGS6 = -n32 -DPD -DUNIX -DIRIX -DN32 -woff 1080,1064,1185 \
+ -OPT:roundoff=3 -OPT:IEEE_arithmetic=3 -OPT:cray_ivdep=true \
+ -Ofast=ip32
+
+.c.pd_irix6:
+ cc $(SGICFLAGS6) $(SGIINCLUDE) -o $*.o -c $*.c
+ ld -n32 -IPA -shared -rdata_shared -o $*.pd_irix6 $*.o
+ rm $*.o
+
+# ----------------------- LINUX i386 -----------------------
+
+pd_linux: $(NAME).pd_linux
+
+.SUFFIXES: .pd_linux
+
+LINUXCFLAGS = -DPD -DUNIX -DICECAST -O2 -funroll-loops -fomit-frame-pointer \
+ -Wall -W -Wno-shadow -Wstrict-prototypes \
+ -Wno-unused -Wno-parentheses -Wno-switch #-Werror
+
+LINUXINCLUDE = -I../../src
+
+.c.pd_linux:
+ cc $(LINUXCFLAGS) $(LINUXINCLUDE) -o $*.o -c $*.c
+ ld -export_dynamic -shared -o $*.pd_linux $*.o -lc -lm
+ strip --strip-unneeded $*.pd_linux
+ rm -f $*.o ../$*.pd_linux
+ ln -s $*/$*.pd_linux ..
+
+# ----------------------------------------------------------
+
+install:
+ cp help-*.pd rs-*.pd ../../doc/5.reference
+
+clean:
+ rm -f *.o *.pd_* so_locations
diff --git a/disto~/README b/disto~/README
new file mode 100644
index 0000000..68b1d93
--- /dev/null
+++ b/disto~/README
@@ -0,0 +1,24 @@
+Version 0.01
+copyleft 2002 by Yves Degoyon.
+
+tarballs and updates available @ http://ydegoyon.free.fr
+
+disto~ : a kind of effect used in pop music, use it elsewhere
+
+the algorithm was taken from Digital Effects (DISTORT3),
+a guitar effects software for DOS which rocks, written by Alexey Smoli
+( http://st.karelia.ru/~smlalx/ )
+
+To install disto~, follow the steps from INSTALL
+
+This software is published under GPL terms, see COPYING
+for rights restrictions.
+
+This is software with ABSOLUTELY NO WARRANTY.
+Use it at your OWN RISK. It's possible to damage e.g. hardware or your hearing
+due to a bug or for other reasons.
+We do not warrant that the program is free of infringement of any third-party
+patents.
+
+*****************************************************************************
+
diff --git a/disto~/distort3.txt b/disto~/distort3.txt
new file mode 100644
index 0000000..e25d857
--- /dev/null
+++ b/disto~/distort3.txt
@@ -0,0 +1,54 @@
+Distortion (algorithm 3)
+þþþþþþþþþþþþþþþþþþþþþþþþ
+
+Similar to Distortion (algorithm 1) but uses Hi & Low Pass Filters from
+Filters. Algorithm is HPF -> Distortion -> LPF. There are parameters for
+Hi & Low Pass Filters : hipassfreq & lowpassfreq is the cutoff frequencies,
+and the hipassQ & lowpassQ in the EE kinda definition for bandwidth. The
+larger the Q, the wider the band, and vice versa. The drive controls the
+amount of overdrive. The volume to balance the effect volume with the
+bypassed level. The dry_mix is the volume of input signal & the wet_mix is
+the volume of distorted signal. The feedback sets feedback of distortion.
+
+Controls:
+
+ drive - distortion drive
+ (0<= <=5)
+ dry_mix - dry (unaffected) signal mix
+ (-5<= <=5)
+ wet_mix - wet (affected) signal mix
+ (-5<= <=5)
+ feedback - feedback
+ (-1<= <=1)
+ volume - distortion volume
+ (0=< <=2)
+ hipassfreq - cutoff frequency for hi pass filter
+ (0< <RATE/2)
+ hipassQ - the EE kinda definition for hi pass filter
+ (0< <=1)
+ lowpassfreq - cutoff frequency for low pass filter
+ (0< <RATE/2)
+ lowpassQ - the EE kinda definition for low pass filter
+ (0< <=1)
+
+Work formula implemented in this distortion algorithm is
+out[i] = in[i] * dry + sign(in[i] - in[i-1]) * exp(abs(in[i]) * drive) * wet.
+See. Its do next wave:
+ Normal Sin Wave Wave distorted by algorithm
+ *
+ * *
+ **** * *
+ * * * * *
+ * * * * * *
+ * * * * * *
+* * * * * *
+* * * * *
+------------*------------- ------------*-------------
+ * * * * *
+ * * * * * *
+ * * * * * *
+ * * * * * *
+ * * * * *
+ **** * *
+ * *
+ *
diff --git a/disto~/disto~.c b/disto~/disto~.c
new file mode 100644
index 0000000..4f3b81f
--- /dev/null
+++ b/disto~/disto~.c
@@ -0,0 +1,491 @@
+/* Copyleft (c) 2002 Yves Degoyon. */
+/* Copyright (c) 2001 Alexei Smoli */
+/* For information on usage and redistribution, and for a DISCLAIMER OF ALL */
+/* WARRANTIES, see the file, "COPYING" in this distribution. */
+/* */
+/* disto~ -- a kind of effect used in pop music */
+/* the algorithm was taken from Digital Effects (DISTORT3), */
+/* a guitar effects software for DOS which rocks, written by Alexey Smoli */
+/* ( http://st.karelia.ru/~smlalx/ ) */
+/* */
+/* This program is free software; you can redistribute it and/or */
+/* modify it under the terms of the GNU General Public License */
+/* as published by the Free Software Foundation; either version 2 */
+/* of the License, or (at your option) any later version. */
+/* */
+/* See file LICENSE for further informations on licensing terms. */
+/* */
+/* This program is distributed in the hope that it will be useful, */
+/* but WITHOUT ANY WARRANTY; without even the implied warranty of */
+/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
+/* GNU General Public License for more details. */
+/* */
+/* You should have received a copy of the GNU General Public License */
+/* along with this program; if not, write to the Free Software */
+/* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+/* */
+/* Based on PureData by Miller Puckette and others. */
+/* */
+/* Made while listening to : */
+/* */
+/* Bruce Gilbert -- Ab Ovo */
+/* Poison Girls -- Promenade Immortelle */
+/* */
+/* Special message for the french : */
+/* "Delay all your work...and go vote against national front" */
+/* ---------------------------------------------------------------------------- */
+
+#include "m_pd.h"
+#include <stdlib.h>
+#include <math.h>
+
+#ifdef NT
+#define M_PI 3.14159265358979323846
+#endif
+
+#define BFSZ 4096 /* main delay buffer */
+#define BLOCK_DELAY 10 /* number of blocks to delay */
+#define NA 0.0 /* param not applicable */
+#define NBEXPS 129
+
+static char *disto_version = "disto~: distortion, version 0.1 (ydegoyon@free.fr)";
+
+struct hipass {
+ /* few intermediate variables */
+ double omega;
+ double sn,cs;
+ double alpha;
+ /* filter coefficients */
+ double a0,a1,a2,b0,b1,b2;
+ double k0,k1,k2,k3,k4;
+ /* amplitudes */
+ double x0,x1,x2;
+ double y0,y1,y2;
+} hipass;
+
+struct lowpass {
+ /* few intermediate variables */
+ double omega;
+ double sn,cs;
+ double alpha;
+ /* filter coefficients */
+ double a0,a1,a2,b0,b1,b2;
+ double k0,k1,k2,k3,k4;
+ /* amplitudes */
+ double x0,x1,x2;
+ double y0,y1,y2;
+} lowpass;
+
+typedef struct _disto
+{
+ t_object x_obj;
+ double *x_buf;
+ t_int x_samplerate;
+ double x_drive; /* distortion drive */ /* 0<= <=25 */
+ double x_drymix; /* dry (unaffected) signal mix */ /* -5<= <=5 */
+ double x_wetmix; /* wet (affected) signal mix */ /* -5<= <=5 */
+ double x_feedback; /* feedback */ /* -10<= <=10 */
+ double x_volume; /* distortion volume */ /* 0=< <=5 */
+ double x_hipassfreq; /* cutoff frequency for hi pass filter */ /* 0< <RATE/2 */
+ double x_lowpassfreq; /* cutoff frequency for low pass filter */ /* 0< <RATE/2 */
+ double x_hipassQ; /* the EE kinda definition for hi pass filter */ /* 0.1< <=1 */
+ double x_lowpassQ; /* the EE kinda definition for low pass filter */ /* 0.1< <=1 */
+
+ /* audio processing data ( not setable ) */
+ double data,pred;
+ double outval,outvol;
+ double exps[NBEXPS];
+
+ /* filters data ( not setable ) */
+ struct hipass HPF;
+ struct lowpass LPF;
+
+ t_float x_f;
+} t_disto;
+
+static t_class *disto_class;
+
+static void disto_init_filters (t_disto *x)
+{
+ t_int i;
+
+ for (i=0; i<130; i++)
+ {
+ x->exps[i]=exp((double)i*x->x_drive)*x->x_wetmix;
+ }
+
+ x->HPF.omega = 2.0*M_PI*x->x_hipassfreq/(double)x->x_samplerate;
+ x->HPF.sn = sin(x->HPF.omega);
+ x->HPF.cs = cos(x->HPF.omega);
+ x->HPF.alpha = x->HPF.sn/(2.0*x->x_hipassQ);
+ x->HPF.b0 = (1.0 + x->HPF.cs)/2.0;
+ x->HPF.b1 = -(1.0 + x->HPF.cs) ;
+ x->HPF.b2 = (1.0 + x->HPF.cs)/2.0;
+ x->HPF.a0 = 1.0 + x->HPF.alpha ;
+ x->HPF.a1 = -2.0*x->HPF.cs ;
+ x->HPF.a2 = 1.0 - x->HPF.alpha ;
+ x->HPF.k0 = (x->HPF.b0/x->HPF.a0);
+ x->HPF.k1 = (x->HPF.b1/x->HPF.a0);
+ x->HPF.k2 = (x->HPF.b2/x->HPF.a0);
+ x->HPF.k3 = (x->HPF.a1/x->HPF.a0);
+ x->HPF.k4 = (x->HPF.a2/x->HPF.a0);
+
+ x->LPF.omega = 2.0*M_PI*x->x_lowpassfreq/(double)x->x_samplerate;
+ x->LPF.sn = sin(x->LPF.omega);
+ x->LPF.cs = cos(x->LPF.omega);
+ x->LPF.alpha = x->LPF.sn/(2.0*x->x_lowpassQ);
+ x->LPF.b0 = (1.0 - x->LPF.cs)/2.0;
+ x->LPF.b1 = 1.0 - x->LPF.cs ;
+ x->LPF.b2 = (1.0 - x->LPF.cs)/2.0;
+ x->LPF.a0 = 1.0 + x->LPF.alpha ;
+ x->LPF.a1 = -2.0*x->LPF.cs ;
+ x->LPF.a2 = 1.0 - x->LPF.alpha ;
+ x->LPF.k0 = (x->LPF.b0/x->LPF.a0);
+ x->LPF.k1 = (x->LPF.b1/x->LPF.a0);
+ x->LPF.k2 = (x->LPF.b2/x->LPF.a0);
+ x->LPF.k3 = (x->LPF.a1/x->LPF.a0);
+ x->LPF.k4 = (x->LPF.a2/x->LPF.a0);
+}
+
+static void disto_drive(t_disto *x, t_floatarg fdrive )
+{
+ if ( fdrive > 25.0 )
+ {
+ fdrive = 25.0;
+ }
+ if ( fdrive < 0.0 )
+ {
+ fdrive = 0.0;
+ }
+ x->x_drive = fdrive;
+ // post( "disto~ : drive: %f", x->x_drive );
+ disto_init_filters( x );
+}
+
+static void disto_drymix(t_disto *x, t_floatarg fdrymix )
+{
+ if ( fdrymix > 5.0 )
+ {
+ fdrymix = 5.0;
+ }
+ if ( fdrymix < -5.0 )
+ {
+ fdrymix = -5.0;
+ }
+ x->x_drymix = fdrymix;
+ // post( "disto~ : drymix: %f", x->x_drymix );
+ disto_init_filters( x );
+}
+
+static void disto_wetmix(t_disto *x, t_floatarg fwetmix )
+{
+ if ( fwetmix > 5.0 )
+ {
+ fwetmix = 5.0;
+ }
+ if ( fwetmix < -5.0 )
+ {
+ fwetmix = -5.0;
+ }
+ x->x_wetmix = fwetmix;
+ // post( "disto~ : wetmix: %f", x->x_wetmix );
+ disto_init_filters( x );
+}
+
+static void disto_feedback(t_disto *x, t_floatarg ffeedback )
+{
+ if ( ffeedback > 10.0 )
+ {
+ ffeedback = 10.0;
+ }
+ if ( ffeedback < -10.0 )
+ {
+ ffeedback = -10.0;
+ }
+ x->x_feedback = ffeedback;
+ // post( "disto~ : feedback: %f", x->x_feedback );
+ disto_init_filters( x );
+}
+
+static void disto_volume(t_disto *x, t_floatarg fvolume )
+{
+ if ( fvolume > 5.0 )
+ {
+ fvolume = 5.0;
+ }
+ if ( fvolume < 0.0 )
+ {
+ fvolume = 0.0;
+ }
+ x->x_volume = fvolume;
+ // post( "disto~ : volume: %f", x->x_volume );
+ disto_init_filters( x );
+}
+
+static void disto_hipassfreq(t_disto *x, t_floatarg fhipassfreq )
+{
+ if ( fhipassfreq > x->x_samplerate/2 )
+ {
+ fhipassfreq = x->x_samplerate/2;
+ }
+ if ( fhipassfreq < 0.0 )
+ {
+ fhipassfreq = 0.0;
+ }
+ x->x_hipassfreq = fhipassfreq;
+ // post( "disto~ : hipassfreq: %f", x->x_hipassfreq );
+ disto_init_filters( x );
+}
+
+static void disto_hipassQ(t_disto *x, t_floatarg fhipassQ )
+{
+ if ( fhipassQ > 1.0 )
+ {
+ fhipassQ = 1.0;
+ }
+ if ( fhipassQ < 0.1 )
+ {
+ fhipassQ = 0.1;
+ }
+ x->x_hipassQ = fhipassQ;
+ // post( "disto~ : hipassQ: %f", x->x_hipassQ );
+ disto_init_filters( x );
+}
+
+static void disto_lowpassfreq(t_disto *x, t_floatarg flowpassfreq )
+{
+ if ( flowpassfreq > x->x_samplerate/2 )
+ {
+ flowpassfreq = x->x_samplerate/2;
+ }
+ if ( flowpassfreq < 0.0 )
+ {
+ flowpassfreq = 0.0;
+ }
+ x->x_lowpassfreq = flowpassfreq;
+ // post( "disto~ : lowpassfreq: %f", x->x_lowpassfreq );
+ disto_init_filters( x );
+}
+
+static void disto_lowpassQ(t_disto *x, t_floatarg flowpassQ )
+{
+ if ( flowpassQ > 1.0 )
+ {
+ flowpassQ = 1.0;
+ }
+ if ( flowpassQ < 0.1 )
+ {
+ flowpassQ = 0.1;
+ }
+ x->x_lowpassQ = flowpassQ;
+ // post( "disto~ : lowpassQ: %f", x->x_lowpassQ );
+ disto_init_filters( x );
+}
+
+static t_int *disto_perform(t_int *w)
+{
+ t_float *in = (t_float *)(w[1]);
+ t_float *out = (t_float *)(w[2]);
+ t_int n = (int)(w[3]);
+ t_disto *x = (t_disto*)(w[4]);
+ t_int i;
+
+ for (i = 0; i < n; i++)
+ {
+
+ x->HPF.x0 = *(in++);
+ x->HPF.y0 = (x->HPF.k0*x->HPF.x0+x->HPF.k1*x->HPF.x1+x->HPF.k2*x->HPF.x2-x->HPF.k3*x->HPF.y1-x->HPF.k4*x->HPF.y2);
+ x->HPF.y2 = x->HPF.y1;
+ x->HPF.y1 = x->HPF.y0;
+ x->HPF.x2 = x->HPF.x1;
+ x->HPF.x1 = x->HPF.x0;
+ x->data = (int)x->HPF.y0;
+
+ if ((x->data-x->pred)>0)
+ x->outval += (x->data*x->x_drymix+ x->exps[abs(x->data)]);
+ else
+ if ((x->data-x->pred)<0)
+ x->outval += (x->data*x->x_drymix- x->exps[abs(x->data)]);
+ x->pred = x->data;
+
+ x->LPF.x0 = *(out);
+ x->LPF.y0 = (x->LPF.k0*x->LPF.x0+x->LPF.k1*x->LPF.x1+x->LPF.k2*x->LPF.x2-x->LPF.k3*x->LPF.y1-x->LPF.k4*x->LPF.y2);
+ x->LPF.y2 = x->LPF.y1;
+ x->LPF.y1 = x->LPF.y0;
+ x->LPF.x2 = x->LPF.x1;
+ x->LPF.x1 = x->LPF.x0;
+
+ x->outvol = x->LPF.y0*x->x_volume;
+
+ if(x->outvol > 1.0)
+ x->data = 1.0;
+ else if(x->outvol < -1.0)
+ x->data = -1.0;
+ else
+ x->data = x->outvol;
+
+ *(out++) = x->data;
+
+ x->outval *= x->x_feedback;
+
+ }
+
+ return (w+5);
+}
+
+static void disto_preset(t_disto *x, t_float pnumber)
+{
+ switch ( (int)pnumber )
+ {
+ /* "Hard Distortion 100-10000Hz" */
+ case 1:
+ x->x_drive = 1.5;
+ x->x_drymix = 1.0;
+ x->x_wetmix = 0.5;
+ x->x_feedback = 0.0;
+ x->x_volume = 1.0;
+ x->x_hipassfreq = 100.0;
+ x->x_hipassQ = 0.5;
+ x->x_lowpassfreq = 10000.0;
+ x->x_lowpassQ = 0.5;
+ break;
+
+ /* "Hard Distortion 100-6000Hz" */
+ case 2:
+ x->x_drive = 1.5;
+ x->x_drymix = 1.0;
+ x->x_wetmix = 0.5;
+ x->x_feedback = 0.0;
+ x->x_volume = 1.0;
+ x->x_hipassfreq = 100.0;
+ x->x_hipassQ = 0.5;
+ x->x_lowpassfreq = 2000.0;
+ x->x_lowpassQ = 0.5;
+ break;
+
+ /* "Very Hard Distortion" */
+ case 3:
+ x->x_drive = 2.0;
+ x->x_drymix = 0.0;
+ x->x_wetmix = 1.0;
+ x->x_feedback = 1.0;
+ x->x_volume = 5.0;
+ x->x_hipassfreq = 100.0;
+ x->x_hipassQ = 0.5;
+ x->x_lowpassfreq = 6000.0;
+ x->x_lowpassQ = 0.5;
+ break;
+
+ /* "Medium Distortion 0.2" */
+ case 4:
+ x->x_drive = 0.2;
+ x->x_drymix = 1.0;
+ x->x_wetmix = 1.0;
+ x->x_feedback = 0.1;
+ x->x_volume = 1.0;
+ x->x_hipassfreq = 100.0;
+ x->x_hipassQ = 0.5;
+ x->x_lowpassfreq = 6000.0;
+ x->x_lowpassQ = 0.5;
+ break;
+
+ /* "Medium Distortion 0.8" */
+ case 5:
+ x->x_drive = 0.8;
+ x->x_drymix = 1.0;
+ x->x_wetmix = 1.0;
+ x->x_feedback = 0.1;
+ x->x_volume = 1.0;
+ x->x_hipassfreq = 100.0;
+ x->x_hipassQ = 1.0;
+ x->x_lowpassfreq = 6000.0;
+ x->x_lowpassQ = 0.5;
+ break;
+
+ /* "Soft Distortion 0.8" */
+ case 6:
+ x->x_drive = 0.8;
+ x->x_drymix = 0.4;
+ x->x_wetmix = 0.8;
+ x->x_feedback = 0.0;
+ x->x_volume = 0.5;
+ x->x_hipassfreq = 100.0;
+ x->x_hipassQ = 1.0;
+ x->x_lowpassfreq = 10000.0;
+ x->x_lowpassQ = 0.5;
+ break;
+
+ default:
+ post( "disto~ : unknown preset requested : %d", pnumber );
+ return;
+ break;
+ }
+ disto_init_filters( x );
+}
+
+static void disto_dsp(t_disto *x, t_signal **sp)
+{
+ dsp_add(disto_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n, x );
+}
+
+ /* clean up */
+static void disto_free(t_disto *x)
+{
+ if ( x->x_buf != NULL ) {
+ freebytes(x->x_buf, BFSZ*sizeof( double ) );
+ post( "Freed %d bytes", BFSZ*sizeof( double ) );
+ x->x_buf = NULL;
+ }
+}
+
+static void *disto_new(void)
+{
+ t_disto *x = (t_disto *)pd_new(disto_class);
+ outlet_new(&x->x_obj, &s_signal);
+ inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("drive"));
+ inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("drymix"));
+ inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("wetmix"));
+ inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("feedback"));
+ inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("volume"));
+ inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("hipassfreq"));
+ inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("hipassQ"));
+ inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("lowpassfreq"));
+ inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("lowpassQ"));
+
+ x->x_samplerate = (int)sys_getsr();
+ x->pred = 0.0;
+ x->data = 0.0;
+
+ if ( !( x->x_buf = ( double* ) getbytes( BFSZ*sizeof( double ) ) ) )
+ {
+ post ("disto~ : could not allocate buffer" );
+ return NULL;
+ }
+
+ // set default parameters
+ disto_preset( x, 3 );
+ disto_init_filters( x );
+
+ return (x);
+}
+
+void disto_tilde_setup(void)
+{
+ post( disto_version );
+ disto_class = class_new(gensym("disto~"), (t_newmethod)disto_new, (t_method)disto_free,
+ sizeof(t_disto), 0, 0);
+
+ CLASS_MAINSIGNALIN( disto_class, t_disto, x_f );
+ class_sethelpsymbol( disto_class, gensym("help-disto~.pd") );
+ class_addmethod(disto_class, (t_method)disto_drive, gensym("drive"), A_FLOAT, 0);
+ class_addmethod(disto_class, (t_method)disto_drymix, gensym("drymix"), A_FLOAT, 0);
+ class_addmethod(disto_class, (t_method)disto_wetmix, gensym("wetmix"), A_FLOAT, 0);
+ class_addmethod(disto_class, (t_method)disto_feedback, gensym("feedback"), A_FLOAT, 0);
+ class_addmethod(disto_class, (t_method)disto_volume, gensym("volume"), A_FLOAT, 0);
+ class_addmethod(disto_class, (t_method)disto_hipassfreq, gensym("hipassfreq"), A_FLOAT, 0);
+ class_addmethod(disto_class, (t_method)disto_hipassQ, gensym("hipassQ"), A_FLOAT, 0);
+ class_addmethod(disto_class, (t_method)disto_lowpassfreq, gensym("lowpassfreq"), A_FLOAT, 0);
+ class_addmethod(disto_class, (t_method)disto_lowpassQ, gensym("lowpassQ"), A_FLOAT, 0);
+ class_addmethod(disto_class, (t_method)disto_dsp, gensym("dsp"), 0);
+ class_addmethod(disto_class, (t_method)disto_preset, gensym("preset"), A_FLOAT, 0);
+}
diff --git a/disto~/help-disto~.pd b/disto~/help-disto~.pd
new file mode 100644
index 0000000..593702b
--- /dev/null
+++ b/disto~/help-disto~.pd
@@ -0,0 +1,73 @@
+#N canvas 45 57 817 573 10;
+#X text 389 525 comments & bugs @ ydegoyon.free.fr;
+#X obj 125 503 dac~;
+#X obj 146 432 rs-disto~;
+#X msg 94 62 bang;
+#X obj 93 84 openpanel;
+#X obj 93 104 t s b;
+#X obj 150 106 float \$0;
+#X text 101 39 Step 1 : Load a sound file;
+#X obj 93 127 route float;
+#X obj 94 219 soundfiler;
+#X text 151 55 ( maybe \, a guitar sound ? );
+#X obj 582 374 table \$0-sample;
+#X msg 94 197 read -resize \$1 \$2;
+#X obj 95 176 pack s s;
+#X msg 146 307 bang;
+#X text 191 307 Step 2 : Start playing;
+#X obj 59 288 adc~;
+#X text 226 433 Step 3 : Modify parameters;
+#X text 584 510 ( http://st.karelia.ru/~smlalx );
+#X text 391 496 a DOS guitar effects software that rocks;
+#X obj 606 263 loadbang;
+#X msg 608 293 \; pd dsp 1;
+#X text 390 482 the algorithm is borrowed from Digital Effects \,;
+#X text 35 266 Plug a guitar ??;
+#X msg 228 330 stop;
+#X obj 146 330 metro 250;
+#X text 431 111 Disto~ : distortion with highpass and lowpass filters
+;
+#X obj 93 150 makefilename %d-sample;
+#X obj 80 423 *~ 0;
+#X obj 154 461 *~ 0;
+#X msg 172 380 1;
+#X msg 207 379 0;
+#X text 287 382 Normal sound;
+#X msg 242 380 bang;
+#X msg 178 404 1;
+#X msg 213 403 0;
+#X msg 248 404 bang;
+#X text 355 405 Distorted sound;
+#X text 392 510 written by (c) Alexei Smoli;
+#X obj 146 354 tabplay~ \$0-sample;
+#X obj 287 404 loadbang;
+#X connect 2 0 29 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 13 0;
+#X connect 5 1 6 0;
+#X connect 6 0 8 0;
+#X connect 8 0 27 0;
+#X connect 12 0 9 0;
+#X connect 13 0 12 0;
+#X connect 14 0 25 0;
+#X connect 16 0 2 0;
+#X connect 20 0 21 0;
+#X connect 24 0 25 0;
+#X connect 25 0 39 0;
+#X connect 27 0 13 1;
+#X connect 28 0 1 0;
+#X connect 28 0 1 1;
+#X connect 29 0 1 0;
+#X connect 29 0 1 1;
+#X connect 30 0 28 1;
+#X connect 31 0 29 1;
+#X connect 33 0 31 0;
+#X connect 33 0 30 0;
+#X connect 34 0 29 1;
+#X connect 35 0 28 1;
+#X connect 36 0 35 0;
+#X connect 36 0 34 0;
+#X connect 39 0 2 0;
+#X connect 39 0 28 0;
+#X connect 40 0 36 0;
diff --git a/disto~/rs-disto~.pd b/disto~/rs-disto~.pd
new file mode 100644
index 0000000..981d235
--- /dev/null
+++ b/disto~/rs-disto~.pd
@@ -0,0 +1,349 @@
+#N canvas 97 16 837 658 10;
+#X obj 87 469 outlet~;
+#X msg 149 9 preset 1;
+#X msg 149 31 preset 2;
+#X msg 149 56 preset 3;
+#X msg 149 80 preset 4;
+#X msg 149 103 preset 5;
+#X obj 53 307 inlet~;
+#X obj 177 468 tabwrite~ odisto;
+#N canvas 0 0 450 300 graph1 0;
+#X array odisto 2000 float 1;
+#A 0 -0.26708 -0.267659 -0.267773 -0.267663 -0.268063 -0.268941 -0.269679
+-0.269954 -0.270085 -0.270558 -0.27125 -0.271575 -0.271187 -0.270388
+-0.269913 -0.269957 -0.270104 -0.269923 -0.269085 -0.267836 -0.266711
+-0.265669 -0.264553 -0.263606 -0.263061 -0.262861 -0.262675 -0.262145
+-0.261336 -0.260573 -0.26004 -0.25979 -0.259776 -0.260007 -0.260453
+-0.260904 -0.261228 -0.261418 -0.261567 -0.261693 -0.261452 -0.260715
+-0.259912 -0.259345 -0.258913 -0.258407 -0.257621 -0.256502 -0.255412
+-0.255096 -0.255742 -0.256443 -0.256694 -0.257092 -0.257969 -0.259069
+-0.260196 -0.26123 -0.262196 -0.263298 -0.264522 -0.265454 -0.265789
+-0.265929 -0.266428 -0.26689 -0.266694 -0.266317 -0.266395 -0.266645
+-0.266675 -0.266611 -0.266736 -0.266962 -0.267 -0.266981 -0.267214
+-0.267815 -0.268747 -0.2696 -0.269911 -0.269677 -0.269176 -0.268851
+-0.268912 -0.268914 -0.268561 -0.26814 -0.267891 -0.267844 -0.267773
+-0.267341 -0.266582 -0.265804 -0.265366 -0.265358 -0.265496 -0.265834
+-0.26651 -0.267089 -0.267197 -0.266909 -0.266797 -0.267527 -0.268878
+-0.270185 -0.27116 -0.271915 -0.272759 -0.273667 -0.274412 -0.275001
+-0.27547 -0.275987 -0.276591 -0.276781 -0.276323 -0.275748 -0.275574
+-0.275727 -0.275897 -0.275912 -0.275895 -0.276327 -0.277313 -0.277979
+-0.277727 -0.277282 -0.277164 -0.276969 -0.276543 -0.276015 -0.2754
+-0.274914 -0.274748 -0.274519 -0.273811 -0.2729 -0.272283 -0.272013
+-0.271746 -0.271213 -0.270507 -0.269961 -0.269673 -0.269341 -0.268877
+-0.268414 -0.267891 -0.267352 -0.266763 -0.266064 -0.265647 -0.265566
+-0.265281 -0.264396 -0.262932 -0.261595 -0.260885 -0.260293 -0.25929
+-0.257585 -0.255305 -0.253139 -0.251284 -0.249837 -0.249084 -0.248607
+-0.247805 -0.246543 -0.245069 -0.243764 -0.242475 -0.240633 -0.237989
+-0.234818 -0.231719 -0.229045 -0.226673 -0.224494 -0.222467 -0.220525
+-0.218764 -0.217348 -0.216235 -0.214923 -0.212796 -0.209895 -0.206839
+-0.204027 -0.201527 -0.199378 -0.197445 -0.19561 -0.193997 -0.192592
+-0.191229 -0.189718 -0.187899 -0.185764 -0.183251 -0.180503 -0.177968
+-0.175848 -0.173948 -0.171912 -0.16965 -0.167457 -0.165405 -0.163236
+-0.160912 -0.158465 -0.155786 -0.153114 -0.150846 -0.148812 -0.146713
+-0.144673 -0.142764 -0.140666 -0.13805 -0.135212 -0.132744 -0.130552
+-0.128217 -0.1258 -0.123439 -0.120903 -0.117935 -0.114675 -0.111333
+-0.107887 -0.10454 -0.101492 -0.0985705 -0.0956639 -0.092911 -0.0906006
+-0.0887248 -0.0867019 -0.0840825 -0.0809534 -0.0775766 -0.0740247 -0.070271
+-0.0665755 -0.0632598 -0.0602591 -0.0572601 -0.0539264 -0.0501022 -0.0462753
+-0.0432218 -0.0408681 -0.0384562 -0.0356554 -0.0326975 -0.0297458 -0.0264714
+-0.0226953 -0.0189905 -0.0158314 -0.0129583 -0.00992077 -0.006587 -0.00317483
+-0.000170271 0.00229779 0.00464803 0.00721599 0.0100859 0.0130355 0.0159059
+0.0189153 0.022138 0.0254052 0.028593 0.0318781 0.0354225 0.0388125
+0.041718 0.0444737 0.0475818 0.0510936 0.054507 0.057465 0.0602617
+0.0631991 0.0661021 0.0689534 0.0719189 0.0750332 0.0784235 0.0819329
+0.0854564 0.0890724 0.0924396 0.0954562 0.098226 0.100836 0.103648
+0.106636 0.109676 0.112982 0.116417 0.119893 0.123406 0.126536 0.129097
+0.131271 0.133429 0.135833 0.138202 0.140347 0.14245 0.144688 0.147011
+0.149205 0.15138 0.153773 0.156286 0.158841 0.161446 0.164034 0.166742
+0.169614 0.172283 0.174349 0.17591 0.177754 0.180279 0.182867 0.185162
+0.187412 0.189872 0.192601 0.195232 0.197485 0.199546 0.201768 0.204144
+0.206174 0.207815 0.209428 0.211006 0.212441 0.213705 0.214928 0.216237
+0.217766 0.219741 0.221722 0.223089 0.224116 0.225337 0.226729 0.227758
+0.228216 0.228675 0.22939 0.230035 0.230542 0.231047 0.231827 0.233027
+0.234295 0.235417 0.236317 0.23679 0.236896 0.23694 0.237237 0.237881
+0.238629 0.239307 0.239995 0.240721 0.24144 0.242192 0.243171 0.244484
+0.245695 0.24654 0.247529 0.248852 0.250142 0.251325 0.252652 0.254384
+0.256341 0.25797 0.259165 0.260237 0.261247 0.262037 0.262577 0.263105
+0.263864 0.264588 0.264886 0.265002 0.265396 0.266151 0.267097 0.268057
+0.268906 0.269509 0.269879 0.270139 0.270324 0.270709 0.271559 0.272587
+0.273495 0.274237 0.274801 0.275454 0.276392 0.277454 0.278621 0.279744
+0.280669 0.281482 0.281956 0.282112 0.282319 0.28269 0.283387 0.28435
+0.285342 0.286491 0.287864 0.289279 0.290437 0.291215 0.291987 0.292999
+0.294054 0.29496 0.295644 0.296266 0.297002 0.297657 0.298119 0.298521
+0.299077 0.300061 0.301543 0.303172 0.304387 0.30505 0.305493 0.305954
+0.306373 0.306843 0.307805 0.309191 0.310435 0.311297 0.31185 0.312321
+0.312821 0.313274 0.313723 0.31416 0.314671 0.315332 0.315916 0.316495
+0.317263 0.318092 0.318635 0.318368 0.31737 0.316202 0.31487 0.313304
+0.311569 0.309675 0.307999 0.306836 0.306097 0.30543 0.304414 0.303255
+0.302409 0.301928 0.301785 0.301895 0.302158 0.30259 0.302976 0.302958
+0.302395 0.301419 0.300219 0.298894 0.297635 0.296575 0.29564 0.294797
+0.294115 0.293699 0.293627 0.293838 0.294015 0.293818 0.293335 0.292805
+0.292195 0.291567 0.290985 0.290239 0.289184 0.287888 0.286705 0.285863
+0.285138 0.28429 0.283133 0.281738 0.280465 0.279229 0.277755 0.276089
+0.274151 0.271899 0.269585 0.267458 0.265824 0.264746 0.263793 0.262516
+0.260886 0.259367 0.258111 0.256866 0.255784 0.25474 0.253198 0.251293
+0.249632 0.248461 0.247448 0.246263 0.244935 0.243536 0.242133 0.240709
+0.239106 0.237425 0.23605 0.235135 0.23424 0.232885 0.231229 0.229657
+0.228392 0.227415 0.226439 0.225406 0.224468 0.223602 0.222691 0.221352
+0.219332 0.216988 0.214684 0.212667 0.210812 0.208681 0.206372 0.203835
+0.200758 0.197397 0.194213 0.191612 0.189638 0.187898 0.186069 0.183983
+0.182057 0.180838 0.180003 0.179099 0.17805 0.176769 0.175117 0.172857
+0.169997 0.167006 0.164326 0.162073 0.160094 0.158136 0.156023 0.153598
+0.150921 0.148421 0.146236 0.144047 0.142044 0.140806 0.140162 0.139427
+0.138327 0.136841 0.134884 0.132719 0.130705 0.128635 0.126181 0.123419
+0.12071 0.11838 0.11634 0.114367 0.112656 0.111487 0.110742 0.109904
+0.108587 0.107225 0.106379 0.1059 0.10524 0.104039 0.102601 0.101234
+0.0994895 0.0971318 0.0944816 0.0916963 0.0888986 0.0859872 0.0826179
+0.0789733 0.0755323 0.072549 0.069849 0.0669985 0.0642158 0.062126
+0.0608327 0.0598513 0.0585596 0.0569368 0.0554447 0.0543066 0.0532107
+0.0514894 0.0489487 0.0463233 0.044406 0.0430643 0.0415634 0.0397923
+0.038182 0.0364309 0.0341317 0.0317625 0.0296438 0.027509 0.025305
+0.0233969 0.0219949 0.0207145 0.0191473 0.0172301 0.0151133 0.013269
+0.0119967 0.0109929 0.00987112 0.00847854 0.00662015 0.00422399 0.00178499
+-4.51909e-05 -0.00127923 -0.00244447 -0.00409475 -0.00660254 -0.00976168
+-0.0128603 -0.015249 -0.0169854 -0.0187953 -0.021044 -0.0235007 -0.0259382
+-0.028343 -0.0309557 -0.0339662 -0.0371732 -0.0403194 -0.0434447 -0.0467169
+-0.04999 -0.0529932 -0.055748 -0.0583544 -0.0609852 -0.0637931 -0.0666124
+-0.0692497 -0.0717844 -0.0745041 -0.0774464 -0.0801579 -0.0823805 -0.0843732
+-0.0864587 -0.0887887 -0.0912798 -0.0939585 -0.0971554 -0.100665 -0.103826
+-0.106431 -0.108576 -0.110698 -0.113375 -0.1165 -0.119544 -0.122029
+-0.124057 -0.126174 -0.128125 -0.12965 -0.13144 -0.133778 -0.136296
+-0.138863 -0.141337 -0.143518 -0.14551 -0.14751 -0.149549 -0.151428
+-0.153072 -0.15461 -0.155989 -0.157365 -0.159025 -0.160831 -0.162686
+-0.164618 -0.166511 -0.168361 -0.170065 -0.171328 -0.172153 -0.172704
+-0.173265 -0.174136 -0.175203 -0.176386 -0.177682 -0.178703 -0.179222
+-0.179609 -0.180324 -0.181603 -0.183362 -0.185256 -0.187043 -0.188578
+-0.189993 -0.191608 -0.193295 -0.19481 -0.196331 -0.198017 -0.199753
+-0.20136 -0.202718 -0.203864 -0.204768 -0.205365 -0.205876 -0.206719
+-0.20814 -0.209633 -0.210398 -0.210418 -0.210391 -0.211039 -0.212329
+-0.213633 -0.214896 -0.21649 -0.21832 -0.220031 -0.221472 -0.222763
+-0.224144 -0.225502 -0.226554 -0.227404 -0.228308 -0.229294 -0.230278
+-0.231077 -0.23163 -0.232241 -0.232997 -0.233798 -0.234634 -0.23527
+-0.235657 -0.236139 -0.236958 -0.238334 -0.240207 -0.241985 -0.243241
+-0.243839 -0.244195 -0.244781 -0.245094 -0.245249 -0.245878 -0.24671
+-0.247417 -0.247736 -0.247701 -0.247682 -0.247737 -0.248194 -0.249232
+-0.250298 -0.251199 -0.252196 -0.25324 -0.253831 -0.253895 -0.254209
+-0.254853 -0.255181 -0.255042 -0.254884 -0.254926 -0.254162 -0.252799
+-0.252477 -0.252702 -0.252552 -0.25226 -0.251876 -0.25148 -0.251157
+-0.251159 -0.25156 -0.251571 -0.251431 -0.252436 -0.253917 -0.254709
+-0.255157 -0.25613 -0.25763 -0.258282 -0.258523 -0.259267 -0.259174
+-0.258407 -0.257889 -0.257675 -0.257922 -0.257931 -0.257996 -0.258264
+-0.25892 -0.261883 -0.26463 -0.264138 -0.26376 -0.264575 -0.265184
+-0.266336 -0.267409 -0.267822 -0.266942 -0.266393 -0.267595 -0.266748
+-0.264757 -0.263944 -0.263262 -0.265041 -0.268545 -0.269239 -0.266784
+-0.264549 -0.264479 -0.263802 -0.26211 -0.263582 -0.267065 -0.269475
+-0.270978 -0.270394 -0.269201 -0.270115 -0.271682 -0.272462 -0.270975
+-0.268228 -0.267972 -0.268954 -0.269215 -0.267879 -0.265538 -0.265747
+-0.26695 -0.265722 -0.262704 -0.261184 -0.262661 -0.263738 -0.262378
+-0.261077 -0.261745 -0.26286 -0.262206 -0.260193 -0.256853 -0.253664
+-0.254292 -0.254887 -0.253113 -0.252455 -0.252185 -0.252083 -0.251636
+-0.250378 -0.250429 -0.251083 -0.251245 -0.250197 -0.248311 -0.248316
+-0.250481 -0.25172 -0.25036 -0.248913 -0.24947 -0.250491 -0.249688
+-0.247323 -0.246362 -0.246909 -0.247081 -0.247627 -0.248639 -0.249174
+-0.248585 -0.246874 -0.245746 -0.246146 -0.247087 -0.247831 -0.247248
+-0.244618 -0.242451 -0.24337 -0.24585 -0.246548 -0.24485 -0.242945
+-0.242916 -0.244928 -0.246121 -0.243898 -0.241685 -0.241076 -0.239409
+-0.238542 -0.239267 -0.23968 -0.239633 -0.238391 -0.238028 -0.239167
+-0.238772 -0.239485 -0.241619 -0.240941 -0.239006 -0.23768 -0.237419
+-0.238752 -0.23857 -0.236359 -0.234628 -0.234589 -0.236239 -0.236151
+-0.234007;
+#A 1000 -0.233151 -0.232566 -0.231177 -0.229258 -0.227183 -0.227228
+-0.227617 -0.225116 -0.222538 -0.222347 -0.223857 -0.223895 -0.219827
+-0.216547 -0.216368 -0.216054 -0.215722 -0.214559 -0.212003 -0.20963
+-0.207424 -0.206119 -0.204874 -0.202757 -0.202116 -0.201593 -0.197969
+-0.194809 -0.195558 -0.196154 -0.194239 -0.191265 -0.187853 -0.185618
+-0.184496 -0.183492 -0.182305 -0.179041 -0.174603 -0.17044 -0.166358
+-0.163546 -0.161854 -0.160624 -0.158786 -0.155308 -0.152192 -0.151414
+-0.15124 -0.148396 -0.142697 -0.137792 -0.137038 -0.137641 -0.135005
+-0.130929 -0.128258 -0.126764 -0.12501 -0.121357 -0.117967 -0.117197
+-0.116285 -0.11336 -0.109174 -0.10519 -0.102996 -0.101146 -0.0986079
+-0.096028 -0.0935584 -0.092103 -0.0909516 -0.0880864 -0.083206 -0.0781496
+-0.0753894 -0.0735017 -0.0700775 -0.0666747 -0.06456 -0.0628634 -0.0596906
+-0.05453 -0.0506355 -0.049393 -0.0486083 -0.0470291 -0.04386 -0.0400564
+-0.0375559 -0.0354427 -0.0326462 -0.0284579 -0.0241831 -0.0231869 -0.0228954
+-0.0193918 -0.0151974 -0.0131444 -0.0120789 -0.00885181 -0.00334882
+-0.000488049 -0.00124724 -0.000826269 0.00269577 0.00816899 0.0125972
+0.0139505 0.015662 0.0197424 0.0238507 0.0261824 0.0274073 0.0296689
+0.0327018 0.0354039 0.0381678 0.0418735 0.0471356 0.0513068 0.0524804
+0.052739 0.0542056 0.0578076 0.0615656 0.0639498 0.0670369 0.0705633
+0.0735998 0.0770429 0.0802246 0.0831852 0.0858242 0.0876192 0.0902116
+0.0936297 0.0971528 0.10107 0.103717 0.104464 0.104406 0.10519 0.108577
+0.11268 0.11614 0.119239 0.121048 0.122739 0.124522 0.125989 0.128996
+0.133007 0.136894 0.140435 0.143467 0.146747 0.149152 0.150424 0.152439
+0.155326 0.158756 0.162286 0.165548 0.168342 0.169027 0.168369 0.169249
+0.171925 0.175741 0.180513 0.184524 0.186305 0.187594 0.191185 0.195745
+0.197635 0.198124 0.200597 0.204669 0.208345 0.211098 0.213641 0.216164
+0.217733 0.218783 0.220983 0.224042 0.227037 0.230287 0.233653 0.235084
+0.234313 0.235109 0.239012 0.242701 0.244361 0.246525 0.250272 0.25411
+0.255897 0.25524 0.255541 0.258263 0.262457 0.266652 0.269534 0.272847
+0.277157 0.279705 0.279503 0.278611 0.279129 0.281444 0.284939 0.288047
+0.289756 0.291121 0.292858 0.294858 0.297389 0.300696 0.304043 0.306559
+0.309312 0.313112 0.316137 0.317521 0.318532 0.319404 0.320956 0.323932
+0.326422 0.327967 0.328359 0.328234 0.330002 0.331075 0.330502 0.331551
+0.334164 0.336528 0.337502 0.339519 0.343138 0.343385 0.341942 0.345137
+0.350613 0.353263 0.355074 0.357987 0.360278 0.361003 0.360899 0.359697
+0.357073 0.357094 0.3612 0.364872 0.366239 0.367065 0.367359 0.367487
+0.370281 0.374995 0.377113 0.375402 0.373893 0.375784 0.378692 0.379707
+0.378632 0.376485 0.376255 0.378171 0.379984 0.381831 0.382382 0.38122
+0.380453 0.380165 0.38094 0.382664 0.382666 0.380171 0.377955 0.378977
+0.381425 0.382074 0.381313 0.380389 0.380109 0.380732 0.381984 0.383034
+0.382157 0.380766 0.380922 0.379459 0.375111 0.371841 0.370545 0.36898
+0.367916 0.369126 0.37053 0.36945 0.366917 0.364824 0.362867 0.361097
+0.360896 0.361417 0.360585 0.358882 0.357184 0.353876 0.348368 0.344413
+0.345112 0.345563 0.341402 0.337921 0.337485 0.336197 0.334123 0.332985
+0.331907 0.32895 0.325206 0.324924 0.326902 0.325753 0.321737 0.317587
+0.313514 0.310824 0.311441 0.31337 0.312221 0.308256 0.30576 0.305427
+0.304981 0.303626 0.300351 0.295198 0.291245 0.290881 0.293548 0.295234
+0.292051 0.285143 0.278155 0.273595 0.27235 0.273075 0.273481 0.27107
+0.26558 0.260761 0.258523 0.258636 0.259687 0.258633 0.255704 0.253178
+0.251565 0.250427 0.248592 0.244545 0.240821 0.238358 0.234409 0.232209
+0.232456 0.23026 0.225788 0.221606 0.218641 0.216768 0.216123 0.217035
+0.21832 0.217213 0.212238 0.206817 0.203371 0.201033 0.199994 0.199282
+0.197333 0.194419 0.191874 0.189577 0.186936 0.184725 0.182973 0.180792
+0.178151 0.176717 0.176135 0.173983 0.169511 0.163987 0.16068 0.161077
+0.162289 0.161645 0.159045 0.155913 0.153192 0.149358 0.144425 0.140544
+0.13728 0.13542 0.135981 0.13323 0.125881 0.122486 0.124123 0.12313
+0.118366 0.115432 0.115196 0.113423 0.109305 0.105931 0.104971 0.102352
+0.0964158 0.0939342 0.0956731 0.0938349 0.0886857 0.086643 0.0860824
+0.0835724 0.0809018 0.0784262 0.074743 0.0699358 0.0654743 0.0644693
+0.0670738 0.0667907 0.0608345 0.0560668 0.0550274 0.0517716 0.0470288
+0.0461094 0.0464903 0.0437995 0.0394189 0.0369743 0.035492 0.0316002
+0.0277853 0.0261807 0.0236398 0.0198325 0.0167765 0.0148441 0.0128608
+0.00970296 0.00703723 0.00583368 0.00380263 0.000473064 -0.00252255
+-0.00541019 -0.00864094 -0.0111409 -0.0125186 -0.0135007 -0.0143205
+-0.0146019 -0.0148482 -0.0171466 -0.020987 -0.0229116 -0.0231064 -0.0245996
+-0.0276884 -0.0305513 -0.0327162 -0.0351196 -0.0376646 -0.0401182 -0.0426596
+-0.0444322 -0.0457675 -0.0478584 -0.0497565 -0.0506464 -0.0513157 -0.052159
+-0.0539484 -0.0561167 -0.0568429 -0.0573337 -0.0587494 -0.0603145 -0.0619514
+-0.0639226 -0.0669022 -0.0707158 -0.0739696 -0.0772074 -0.0811309 -0.0844747
+-0.0873654 -0.0907039 -0.0933156 -0.0941001 -0.0943444 -0.095617 -0.0974344
+-0.099484 -0.1018 -0.102882 -0.103321 -0.105848 -0.110255 -0.114038
+-0.115846 -0.116748 -0.118123 -0.119961 -0.122312 -0.124746 -0.126659
+-0.128236 -0.127689 -0.125448 -0.126103 -0.12984 -0.133319 -0.134342
+-0.133867 -0.135798 -0.139161 -0.141429 -0.144191 -0.145866 -0.145907
+-0.147306 -0.149892 -0.153489 -0.155841 -0.155249 -0.15612 -0.158146
+-0.157869 -0.156883 -0.157486 -0.159411 -0.160146 -0.160931 -0.164545
+-0.167303 -0.166925 -0.167136 -0.170044 -0.17438 -0.177245 -0.177154
+-0.176848 -0.177855 -0.179501 -0.182723 -0.187023 -0.189608 -0.189674
+-0.188992 -0.189324 -0.191281 -0.193741 -0.195296 -0.195369 -0.193301
+-0.191879 -0.194567 -0.198013 -0.199268 -0.199752 -0.199488 -0.199473
+-0.201463 -0.204911 -0.208248 -0.208627 -0.205791 -0.203813 -0.205502
+-0.209768 -0.213233 -0.213537 -0.211242 -0.209762 -0.210589 -0.212065
+-0.214414 -0.217509 -0.218825 -0.21755 -0.216575 -0.218297 -0.220953
+-0.221919 -0.222 -0.222716 -0.223324 -0.224083 -0.225504 -0.225747
+-0.22421 -0.223129 -0.22334 -0.223363 -0.223819 -0.226083 -0.228188
+-0.228343 -0.227315 -0.22695 -0.228393 -0.230022 -0.230815 -0.232001
+-0.232692 -0.231958 -0.231828 -0.233017 -0.234158 -0.234324 -0.234582
+-0.236492 -0.23755 -0.236831 -0.238344 -0.24147 -0.243434 -0.244738
+-0.245636 -0.246112 -0.245377 -0.244503 -0.246052 -0.248095 -0.248097
+-0.246671 -0.245189 -0.245102 -0.246481 -0.247893 -0.248335 -0.247514
+-0.246449 -0.245922 -0.245682 -0.246598 -0.248263 -0.248967 -0.248829
+-0.24816 -0.24748 -0.246923 -0.24558 -0.245254 -0.246168 -0.245029
+-0.242549 -0.241186 -0.241762 -0.24368 -0.244018 -0.243866 -0.245271
+-0.244062 -0.239965 -0.238904 -0.241356 -0.242091 -0.239899 -0.23877
+-0.238927 -0.237334 -0.236052 -0.237747 -0.238291 -0.233767 -0.228659
+-0.227553 -0.227043 -0.225269 -0.225544 -0.227385 -0.226236 -0.22154
+-0.218968 -0.221037 -0.222556 -0.220614 -0.219152 -0.220012 -0.219519
+-0.217602 -0.218801 -0.220957 -0.218647 -0.214792 -0.214112 -0.21522
+-0.213766 -0.210293 -0.210031 -0.209338 -0.203426 -0.199947 -0.202385
+-0.204352 -0.203511 -0.20268 -0.203071 -0.201417 -0.197239 -0.196734
+-0.200169 -0.201207 -0.198635 -0.195482 -0.193122 -0.190594 -0.188472
+-0.1884 -0.189048 -0.188209 -0.186508 -0.186198 -0.186368 -0.184437
+-0.181724 -0.180083 -0.178512 -0.177677 -0.179502 -0.1818 -0.18054
+-0.176895 -0.175291 -0.175508 -0.175358 -0.175918 -0.177403 -0.177107
+-0.174243 -0.171687 -0.170536 -0.169344 -0.168906 -0.169992 -0.170334
+-0.168262 -0.165975 -0.16621 -0.166189 -0.162635 -0.158982 -0.157627
+-0.156921 -0.156462 -0.156192 -0.155766 -0.153264 -0.14937 -0.1486
+-0.149288 -0.148866 -0.149764 -0.151418 -0.150841 -0.146987 -0.143179
+-0.142844 -0.142361 -0.140405 -0.140584 -0.14176 -0.141941 -0.141421
+-0.140756 -0.140163 -0.138007 -0.136409 -0.138076 -0.139307 -0.13895
+-0.139289 -0.139026 -0.137142 -0.136061 -0.138299 -0.142194 -0.143127
+-0.14174 -0.142156 -0.143001 -0.14211 -0.141021 -0.14012 -0.13871 -0.137428
+-0.138223 -0.140831 -0.140916 -0.137712 -0.134516 -0.131997 -0.130671
+-0.13108 -0.132343 -0.133538 -0.1325 -0.129983 -0.128205 -0.126336
+-0.124934 -0.124084 -0.123517 -0.124253 -0.124134 -0.121727 -0.11916
+-0.118518 -0.119372 -0.119263 -0.11808 -0.118028 -0.118947 -0.119155
+-0.119376 -0.120386 -0.120797 -0.119504 -0.117742 -0.117604 -0.118196
+-0.117564 -0.116427 -0.115047 -0.112277 -0.109151 -0.107823 -0.108153
+-0.108001 -0.106851 -0.106133 -0.105341 -0.103449 -0.10225 -0.102543
+-0.102643 -0.101744 -0.100163 -0.0989409 -0.0985816 -0.0983467 -0.0977372
+-0.0962336 -0.0939372 -0.0920292 -0.0910775 -0.0912255 -0.0922101 -0.0922327
+-0.0905764 -0.088414 -0.0861316 -0.0849861 -0.0859358 -0.0866984 -0.085469
+-0.082363 -0.0791981 -0.0784002 -0.0789486 -0.0792314 -0.0791902 -0.0784253
+-0.0780597 -0.0787439 -0.0790283 -0.0785446 -0.0774918 -0.0761877 -0.074771
+-0.0732108 -0.0728679 -0.0734066 -0.0736221 -0.0735405 -0.0728323 -0.0720006
+-0.0711169 -0.0703422 -0.0706587 -0.0712593 -0.0715813 -0.0713705 -0.0696971
+-0.067587 -0.065892 -0.0648743 -0.0655384 -0.0659984 -0.0640801 -0.0604196
+-0.0561824 -0.0529379 -0.051625 -0.0522934 -0.0530088 -0.0504143 -0.0461285
+-0.0434267 -0.0418044 -0.0416196 -0.0432084 -0.0442318 -0.0422415 -0.0370414
+-0.0328587 -0.0324699 -0.0334087 -0.0345388 -0.035246 -0.0336549 -0.0303687
+-0.0274198 -0.0264446 -0.0272249 -0.0270482 -0.0256714 -0.0251707 -0.0246116
+-0.0231644 -0.0228445 -0.024125 -0.0244141 -0.0223641 -0.0202823 -0.0195197
+-0.0189773 -0.019408 -0.0209408 -0.0204265 -0.0171791 -0.0140059 -0.0129334
+-0.0139812 -0.0153043 -0.0155131 -0.0147108 -0.012386 -0.00872585 -0.00597713
+-0.00589554 -0.00785846 -0.00965299 -0.0102252 -0.00991027 -0.00770097
+-0.00405239 -0.00314322 -0.00636492 -0.008773 -0.00656921 -0.00314961
+-0.00142149 0.000355286 0.00157009 0.000652503 0.000665672 0.00507241
+0.0103608 0.0112021 0.00941616 0.00791777 0.00581629 0.00400531 0.00527335
+0.00874362 0.00976684 0.00734871 0.00608535;
+#X coords 0 2 1999 -2 200 140 1;
+#X restore 596 461 graph;
+#X msg 177 446 bang;
+#X obj 192 229 hsl 128 15 0 25 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 0 0;
+#X obj 213 263 hsl 128 15 -5 5 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 0 0;
+#X obj 256 330 hsl 128 15 -10 10 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 0 0;
+#X obj 380 229 hsl 128 15 0 5 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 0 0;
+#X obj 407 270 hsl 128 15 0 22500 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 0 0;
+#X text 256 168 Note : setting a parameter overrides presets;
+#X msg 152 128 preset 6;
+#X text 216 7 hard distortion 100-10000Hz;
+#X text 217 31 hard distortion 100-6000Hz;
+#X text 221 80 medium distortion 0.2;
+#X text 221 104 medium distortion 0.8;
+#X text 223 126 soft distortion 0.8;
+#X text 208 247 Dry mix [ -5 - 5 ];
+#X obj 242 297 hsl 128 15 -5 5 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 0 0;
+#X text 237 279 Wet mix [ -5 - 5 ];
+#X text 402 253 Low pass frequency [ 0 - 22500 ];
+#X obj 441 307 hsl 128 15 0.1 1 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 0 0;
+#X obj 482 344 hsl 128 15 0 22500 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 0 0;
+#X obj 517 379 hsl 128 15 0.1 1 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 0 0;
+#X text 477 327 High pass frequency [ 0 - 22500 ];
+#X text 133 543 Note : see file "distort3.txt" which explains parameters
+;
+#X text 375 212 Volume [ 0 - 5 ];
+#X text 193 208 Drive [ 0 - 25 ];
+#X text 512 362 High pass Q [ 0.1 - 1 ];
+#X text 436 290 Low pass Q [ 0.1 - 1 ];
+#X text 253 312 Feedback [ -10 - 10 ];
+#X text 218 56 very hard distortion ( default );
+#X obj 87 414 disto~ --------------------------------------------------
+;
+#X connect 1 0 37 0;
+#X connect 2 0 37 0;
+#X connect 3 0 37 0;
+#X connect 4 0 37 0;
+#X connect 5 0 37 0;
+#X connect 6 0 37 0;
+#X connect 9 0 7 0;
+#X connect 10 0 37 1;
+#X connect 11 0 37 2;
+#X connect 12 0 37 4;
+#X connect 13 0 37 5;
+#X connect 14 0 37 6;
+#X connect 16 0 37 0;
+#X connect 23 0 37 3;
+#X connect 26 0 37 7;
+#X connect 27 0 37 8;
+#X connect 28 0 37 9;
+#X connect 37 0 0 0;
+#X connect 37 0 7 0;