aboutsummaryrefslogtreecommitdiff
path: root/wahwah~
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 /wahwah~
parent856eaf396d9a4d371a458a2c373a052bb72c8057 (diff)
added files straight from Yves' sources
svn path=/trunk/externals/unauthorized/; revision=864
Diffstat (limited to 'wahwah~')
-rw-r--r--wahwah~/CHANGES.LOG2
-rw-r--r--wahwah~/COPYING280
-rw-r--r--wahwah~/INSTALL15
-rw-r--r--wahwah~/Makefile82
-rw-r--r--wahwah~/README24
-rw-r--r--wahwah~/help-wahwah~.pd48
-rw-r--r--wahwah~/rs-wahwah~.pd348
-rw-r--r--wahwah~/wahwah~.c409
8 files changed, 1208 insertions, 0 deletions
diff --git a/wahwah~/CHANGES.LOG b/wahwah~/CHANGES.LOG
new file mode 100644
index 0000000..dca0aa9
--- /dev/null
+++ b/wahwah~/CHANGES.LOG
@@ -0,0 +1,2 @@
+0.1
+ initial wahwah~ implementation
diff --git a/wahwah~/COPYING b/wahwah~/COPYING
new file mode 100644
index 0000000..2128a66
--- /dev/null
+++ b/wahwah~/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/wahwah~/INSTALL b/wahwah~/INSTALL
new file mode 100644
index 0000000..62ca7df
--- /dev/null
+++ b/wahwah~/INSTALL
@@ -0,0 +1,15 @@
+untar in /my/pd/dir/externs
+
+cd /my/pd/dir/externs/wahwah~
+
+make clean
+
+make
+
+make install
+
+open help-wahwah~.pd
+
+Thanx for getting here.
+Yves/
+comments and bugs @ ydegoyon@free.fr
diff --git a/wahwah~/Makefile b/wahwah~/Makefile
new file mode 100644
index 0000000..0a2837d
--- /dev/null
+++ b/wahwah~/Makefile
@@ -0,0 +1,82 @@
+NAME=wahwah~
+CSYM=wahwah~
+
+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/wahwah~/README b/wahwah~/README
new file mode 100644
index 0000000..6565787
--- /dev/null
+++ b/wahwah~/README
@@ -0,0 +1,24 @@
+Version 0.01
+copyleft 2002 by Yves Degoyon.
+
+tarballs and updates available @ http://ydegoyon.free.fr
+
+wahwah~ : a kind of effect used in psychedelic music, use it elsewhere
+
+the algorithm was taken from Digital Effects,
+a guitar effects software for DOS which rocks, written by Alexey Smoli
+( http://st.karelia.ru/~smlalx/ )
+
+To install wahwah~, 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/wahwah~/help-wahwah~.pd b/wahwah~/help-wahwah~.pd
new file mode 100644
index 0000000..8afeb3c
--- /dev/null
+++ b/wahwah~/help-wahwah~.pd
@@ -0,0 +1,48 @@
+#N canvas 45 57 817 573 10;
+#X text 319 534 comments & bugs @ ydegoyon.free.fr;
+#X text 431 111 Wahwah~ : used in psychedelic music;
+#X obj 144 411 dac~;
+#X obj 148 377 rs-wahwah~;
+#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 93 150 makefilename %d-sample;
+#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 229 379 Step 3 : Modify parameters;
+#X text 487 483 ( http://st.karelia.ru/~smlalx );
+#X text 320 470 a DOS guitar effects software that rocks;
+#X text 321 484 written by Alexei Smoli;
+#X obj 606 263 loadbang;
+#X msg 608 293 \; pd dsp 1;
+#X text 319 456 the algorithm is borrowed from Digital Effects \,;
+#X obj 146 354 tabplay~ \$0-sample;
+#X text 35 266 Plug a guitar ??;
+#X msg 228 330 stop;
+#X obj 146 330 metro 250;
+#X connect 3 0 2 0;
+#X connect 3 0 2 1;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 15 0;
+#X connect 6 1 7 0;
+#X connect 7 0 9 0;
+#X connect 9 0 12 0;
+#X connect 12 0 15 1;
+#X connect 14 0 10 0;
+#X connect 15 0 14 0;
+#X connect 16 0 29 0;
+#X connect 18 0 3 0;
+#X connect 23 0 24 0;
+#X connect 26 0 3 0;
+#X connect 28 0 29 0;
+#X connect 29 0 26 0;
diff --git a/wahwah~/rs-wahwah~.pd b/wahwah~/rs-wahwah~.pd
new file mode 100644
index 0000000..af5c256
--- /dev/null
+++ b/wahwah~/rs-wahwah~.pd
@@ -0,0 +1,348 @@
+#N canvas 97 16 837 658 10;
+#X obj 87 469 outlet~;
+#X msg 149 24 preset 1;
+#X msg 149 46 preset 2;
+#X msg 149 71 preset 3;
+#X msg 149 95 preset 4;
+#X msg 149 118 preset 5;
+#X text 216 25 fast change medium wah-wah;
+#X text 217 46 slow change medium wah-wah;
+#X text 219 71 fast wah-wah;
+#X text 219 94 ranged wah-wah;
+#X obj 53 307 inlet~;
+#X text 220 117 wah-wah 400/2000 Hz;
+#X obj 177 468 tabwrite~ owahwah;
+#N canvas 0 0 450 300 graph1 0;
+#X array owahwah 2000 float 1;
+#A 0 -0.039093 -0.0409546 -0.0498657 -0.0647583 -0.0871887 -0.115601
+-0.149658 -0.186188 -0.222839 -0.259918 -0.295898 -0.328308 -0.356567
+-0.380859 -0.399689 -0.412933 -0.419983 -0.419434 -0.410675 -0.392517
+-0.365753 -0.331726 -0.29129 -0.245361 -0.196503 -0.148499 -0.103546
+-0.0623779 -0.0287476 -0.00424194 0.00881958 0.0116577 0.00469971 -0.0116577
+-0.0361023 -0.0664978 -0.100555 -0.136414 -0.172302 -0.205841 -0.235596
+-0.261932 -0.283508 -0.299713 -0.311584 -0.318848 -0.321991 -0.322968
+-0.322998 -0.322662 -0.321503 -0.321228 -0.321503 -0.321747 -0.322876
+-0.323883 -0.324463 -0.324066 -0.320892 -0.31308 -0.299133 -0.277191
+-0.244019 -0.198334 -0.139526 -0.0670471 0.0205078 0.121002 0.230194
+0.344482 0.460846 0.573944 0.677521 0.765656 0.833282 0.876801 0.893036
+0.882629 0.846802 0.78891 0.714539 0.629425 0.539551 0.452789 0.374146
+0.307892 0.257263 0.222931 0.204132 0.19812 0.20163 0.210175 0.21933
+0.225739 0.22525 0.214874 0.194916 0.164948 0.12674 0.0838013 0.0399475
+-0.00134277 -0.0376587 -0.0657654 -0.0814819 -0.0820007 -0.0656738
+-0.0337219 0.0140381 0.0779724 0.156006 0.245911 0.346008 0.452057
+0.559235 0.663025 0.757202 0.837769 0.896179 0.925873 0.922516 0.882751
+0.806122 0.694183 0.55191 0.387329 0.210052 0.0307922 -0.138519 -0.286224
+-0.401611 -0.480316 -0.519104 -0.516846 -0.47644 -0.40213 -0.299652
+-0.175842 -0.0374451 0.108887 0.257507 0.401276 0.536102 0.658722 0.767181
+0.857239 0.927002 0.974548 0.99762 0.995697 0.969116 0.919312 0.852112
+0.772278 0.684723 0.5961 0.511749 0.437042 0.374969 0.326416 0.289948
+0.260529 0.233032 0.201965 0.157501 0.0927124 0.00149536 -0.120087
+-0.272583 -0.452911 -0.653748 -0.863739 -1 -1 -1 -1 -1 -1 -1 -1 -1
+-0.973389 -0.805054 -0.654327 -0.533722 -0.449554 -0.403442 -0.390808
+-0.404175 -0.431488 -0.458344 -0.471954 -0.461639 -0.419342 -0.340942
+-0.226868 -0.0821228 0.0829468 0.257294 0.426544 0.577087 0.695618
+0.771759 0.798157 0.771332 0.692352 0.566376 0.402252 0.209686 -0.00247192
+-0.22171 -0.43985 -0.650452 -0.847473 -1 -1 -1 -1 -1 -1 -1 -1 -1 -0.739136
+-0.431183 -0.0951538 0.245636 0.56543 0.838531 0.999969 0.999969 0.999969
+0.999969 0.999969 0.802216 0.559937 0.29715 0.0325623 -0.217773 -0.442688
+-0.636414 -0.795715 -0.92099 -1 -1 -1 -1 -1 -1 -1 -0.950989 -0.852966
+-0.744476 -0.634064 -0.530029 -0.443756 -0.384125 -0.356415 -0.362183
+-0.400238 -0.46228 -0.535309 -0.604767 -0.653046 -0.661835 -0.615387
+-0.499878 -0.308197 -0.0406799 0.294312 0.67923 0.999969 0.999969 0.999969
+0.999969 0.999969 0.999969 0.999969 0.999969 0.999969 0.999969 0.966919
+0.579712 0.242889 -0.0168762 -0.183319 -0.249573 -0.221954 -0.117706
+0.0397949 0.221771 0.399139 0.544708 0.6362 0.657806 0.601624 0.468964
+0.27002 0.0221863 -0.252197 -0.526459 -0.774719 -0.97522 -1 -1 -1 -1
+-0.943573 -0.758942 -0.54248 -0.306366 -0.0611267 0.189514 0.443115
+0.697449 0.950439 0.999969 0.999969 0.999969 0.999969 0.964325 0.130615
+-0.55246 -1 -1 -1 -1 -0.892181 -0.560394 -0.220734 0.0826416 0.317352
+0.468048 0.532959 0.52005 0.447357 0.337616 0.211273 0.0874939 -0.0170288
+-0.0913391 -0.131683 -0.139923 -0.121124 -0.0817871 -0.0301208 0.024353
+0.0731506 0.110504 0.135773 0.148865 0.149841 0.140442 0.124298 0.106171
+0.0886841 0.0727234 0.059021 0.0523376 0.0513 0.0559692 0.0643921 0.0751648
+0.0877991 0.100708 0.112091 0.121948 0.129303 0.135132 0.138153 0.14032
+0.140869 0.138428 0.133514 0.126801 0.11853 0.109406 0.0989685 0.0881042
+0.0773621 0.0661926 0.0561829 0.0480652 0.0427246 0.0401917 0.0408325
+0.0447388 0.0513611 0.0603638 0.0705261 0.0811157 0.0899658 0.0986023
+0.109009 0.120209 0.129822 0.13736 0.143433 0.147369 0.147949 0.144257
+0.136719 0.125061 0.11264 0.098175 0.0823669 0.0648804 0.0462036 0.0277405
+0.0106812 -0.00558472 -0.0222473 -0.0386353 -0.0551147 -0.0707397 -0.0862732
+-0.100494 -0.114716 -0.129669 -0.144409 -0.158783 -0.17392 -0.188385
+-0.202057 -0.214661 -0.228119 -0.240845 -0.252014 -0.262207 -0.269958
+-0.2742 -0.275787 -0.275604 -0.273346 -0.268707 -0.26062 -0.249481
+-0.234894 -0.216797 -0.196503 -0.174866 -0.1521 -0.129639 -0.108246
+-0.0873108 -0.0687561 -0.0557556 -0.0469055 -0.0423889 -0.0438843 -0.052002
+-0.0664673 -0.0872803 -0.114227 -0.145477 -0.179688 -0.217499 -0.255646
+-0.293396 -0.329254 -0.361755 -0.387848 -0.407257 -0.419189 -0.423859
+-0.421204 -0.410278 -0.390991 -0.363373 -0.32843 -0.288849 -0.245178
+-0.199188 -0.151886 -0.106201 -0.0655518 -0.0318909 -0.00665283 0.00817871
+0.0127258 0.00680542 -0.00918579 -0.0333862 -0.0639954 -0.0982666 -0.134338
+-0.170715 -0.205658 -0.237183 -0.263855 -0.28479 -0.300812 -0.31189
+-0.319458 -0.324249 -0.325256 -0.324219 -0.322723 -0.320953 -0.319489
+-0.319427 -0.319794 -0.32132 -0.323334 -0.325684 -0.325531 -0.321503
+-0.31308 -0.298218 -0.275696 -0.2435 -0.198578 -0.140106 -0.0680542
+0.0185242 0.117798 0.226654 0.342102 0.459686 0.574188 0.679474 0.769562
+0.838745 0.882385 0.899384 0.889221 0.853149 0.795837 0.721283 0.636169
+0.547119 0.459595 0.379211 0.31076 0.25708 0.219452 0.197266 0.188873
+0.192383 0.202209 0.213013 0.220642 0.221832 0.213165 0.19397 0.16626
+0.13089 0.088623 0.0440369 0.000915527 -0.0377197 -0.0675049 -0.0849304
+-0.0869141 -0.0715332 -0.0384521 0.0113525 0.0761108 0.153351 0.243347
+0.34433 0.450195 0.559174 0.665131 0.762085 0.843048 0.900848 0.930298
+0.927399 0.887878 0.810791 0.698273 0.555084 0.390106 0.211395 0.0317383
+-0.137634 -0.286163 -0.404236 -0.485474 -0.526031 -0.525208 -0.485352
+-0.40918 -0.304932 -0.179535 -0.0396118 0.107544 0.255615 0.399872
+0.536102 0.660431 0.770782 0.86261 0.9328 0.980865 0.999969 0.999969
+0.974121 0.92453 0.856995 0.77594 0.6875 0.598267 0.51413 0.439209
+0.374847 0.322754 0.283844 0.25415 0.227539 0.196381 0.153137 0.0905762
+0.00128174 -0.119019 -0.271637 -0.452423 -0.653564 -0.863922 -1 -1
+-1 -1 -1 -1 -1 -1 -1 -0.983398 -0.81308 -0.660461 -0.537537 -0.450836
+-0.401978 -0.387848 -0.399719 -0.425385 -0.452332 -0.466919 -0.458435
+-0.417389 -0.341614 -0.229828 -0.0864868 0.0791321 0.254517 0.425201
+0.577057 0.696777 0.775177 0.805115 0.779572 0.700653 0.57431 0.409943
+0.216797 0.00445557 -0.216492 -0.4375 -0.651215 -0.849945 -1 -1 -1
+-1 -1 -1 -1 -1 -1 -0.74588 -0.435699 -0.0969238 0.246063 0.567993 0.84314
+0.999969 0.999969 0.999969 0.999969 0.999969 0.809875 0.567505 0.303864
+0.0378418 -0.21463 -0.440674 -0.63559 -0.796692 -0.923798 -1 -1 -1
+-1 -1 -1 -1 -0.955811 -0.856628 -0.747009 -0.635651 -0.53183 -0.44516
+-0.384369 -0.356354 -0.361908 -0.400787 -0.461456 -0.533783 -0.603088
+-0.651306 -0.660767 -0.614563 -0.500214 -0.311096 -0.0456238 0.2883
+0.672974 0.999969 0.999969 0.999969 0.999969 0.999969 0.999969 0.999969
+0.999969 0.999969 0.999969 0.980499 0.590179 0.248199 -0.017334 -0.188782
+-0.259674 -0.235291 -0.132233 0.0249329 0.207764 0.386719 0.536774
+0.632294 0.657349 0.604553 0.475098 0.278259 0.0308228 -0.243103 -0.517395
+-0.768127 -0.973206 -1 -1 -1 -1 -0.959106 -0.774323 -0.556854 -0.318909
+-0.0692749 0.185944 0.443298 0.699951 0.954834 0.999969 0.999969 0.999969
+0.999969 0.974457 0.143829 -0.53949 -1 -1 -1 -1 -0.903381 -0.576324
+-0.239136 0.0640564 0.302643 0.458801 0.528595 0.521362 0.454559 0.34787
+0.223083 0.100708 -0.00384521 -0.0808716 -0.125244 -0.137299 -0.120941
+-0.0837097 -0.034668 0.0179138 0.0670166 0.107178 0.134186 0.148346
+0.149567 0.141113 0.127106 0.109955 0.0914917 0.0743103 0.0613708 0.0543518
+0.0514832 0.055542 0.0632629 0.0738831 0.086853 0.099884 0.112457 0.124176
+0.133881 0.140839 0.144562 0.143829 0.141327 0.13858 0.13269 0.124756
+0.116364 0.106812 0.0970764 0.0872192 0.0769348 0.0671387 0.0580139
+0.0501099 0.0437927 0.0418701 0.042572 0.0460205 0.052002 0.0600281
+0.0696106 0.0800171 0.0906982 0.101837 0.113098 0.123444 0.132507 0.139282
+0.144073 0.146057 0.145508 0.142029 0.135498 0.126556 0.115082 0.100403
+0.0848389 0.0665894 0.0477295 0.028595 0.00961304 -0.00848389 -0.0257874
+-0.0423584 -0.0579224 -0.0725403 -0.0869141 -0.101044 -0.115021 -0.129028
+-0.143372 -0.157471 -0.171783 -0.185913 -0.200317 -0.21463 -0.227814
+-0.240723 -0.25351 -0.263885 -0.272064 -0.27774 -0.278992 -0.277557
+-0.274323 -0.269073 -0.261414 -0.250854 -0.237091 -0.220551 -0.20047
+-0.177368 -0.153992 -0.131348 -0.108795 -0.0869141 -0.0672302 -0.0518494
+-0.0414734 -0.0362549 -0.0380554 -0.0472107 -0.0631714 -0.0870361 -0.115936
+-0.148407 -0.183716 -0.220856 -0.258362 -0.294525 -0.328491 -0.360291
+-0.386597 -0.405731 -0.418732 -0.424011 -0.420502 -0.409485 -0.390564
+-0.363495 -0.329498 -0.289948 -0.245575 -0.19812 -0.151825 -0.106964
+-0.0662842 -0.0315247 -0.00631714 0.00808716 0.0121765 0.00619507 -0.00915527
+-0.0331421 -0.0646973 -0.0995178 -0.135773 -0.170959 -0.204376 -0.234741
+-0.261475 -0.283386 -0.300293 -0.312531 -0.320435 -0.325775 -0.328857
+-0.328583 -0.327423 -0.324768 -0.321655 -0.320312 -0.320129 -0.321136
+-0.323212 -0.325043 -0.325714 -0.324677 -0.317566 -0.303802 -0.280762
+-0.246704 -0.200073 -0.140594 -0.0681763 0.0187073 0.119446 0.22998
+0.346741 0.465454 0.579559 0.684998 0.774353 0.843231 0.887451 0.903961
+0.892273 0.854736 0.795959 0.72168 0.636566 0.546875 0.457825 0.378052
+0.311493 0.258972 0.22226 0.201965 0.194702 0.195862 0.202515 0.211456
+0.21814 0.218964 0.211273 0.19342 0.165619 0.129242 0.0864563 0.0415344
+-0.000946045 -0.0385132 -0.0675964;
+#A 1000 -0.0828857 -0.0823669 -0.0689392 -0.0388794 0.00836182 0.0713806
+0.14975 0.241821 0.343811 0.451385 0.560455 0.666168 0.763092 0.844269
+0.90271 0.933441 0.93103 0.891785 0.815155 0.70285 0.559235 0.392944
+0.213409 0.0327759 -0.138458 -0.288544 -0.407806 -0.489197 -0.529602
+-0.528931 -0.489471 -0.415192 -0.311523 -0.184967 -0.0444336 0.103973
+0.253021 0.398804 0.536804 0.662079 0.772064 0.864349 0.936188 0.985199
+0.999969 0.999969 0.978607 0.930573 0.862488 0.779633 0.689514 0.59845
+0.512878 0.437439 0.373901 0.32309 0.284149 0.25415 0.226807 0.195282
+0.150726 0.0862732 -0.00366211 -0.123627 -0.274872 -0.454132 -0.654205
+-0.864258 -1 -1 -1 -1 -1 -1 -1 -1 -1 -0.991821 -0.820068 -0.665405
+-0.541504 -0.453644 -0.403442 -0.386169 -0.39621 -0.42099 -0.446625
+-0.461151 -0.453278 -0.413788 -0.338745 -0.227814 -0.0853882 0.0786133
+0.252533 0.423523 0.576965 0.698975 0.777679 0.805695 0.781158 0.704956
+0.580536 0.416809 0.222107 0.00863647 -0.21347 -0.435455 -0.649841
+-0.850922 -1 -1 -1 -1 -1 -1 -1 -1 -1 -0.750519 -0.43869 -0.0991211
+0.245605 0.57016 0.846985 0.999969 0.999969 0.999969 0.999969 0.999969
+0.822144 0.578339 0.312134 0.0435181 -0.211853 -0.442688 -0.641357
+-0.804596 -0.932831 -1 -1 -1 -1 -1 -1 -1 -0.957397 -0.857697 -0.746979
+-0.63446 -0.530609 -0.444061 -0.383301 -0.354889 -0.360779 -0.397675
+-0.457886 -0.530243 -0.599121 -0.648041 -0.658875 -0.614075 -0.501556
+-0.313599 -0.0487061 0.285431 0.670898 0.999969 0.999969 0.999969 0.999969
+0.999969 0.999969 0.999969 0.999969 0.999969 0.999969 0.994263 0.600861
+0.254944 -0.0148621 -0.190338 -0.26413 -0.241058 -0.140289 0.015686
+0.198242 0.379211 0.530151 0.627045 0.654694 0.604462 0.477448 0.282654
+0.0371704 -0.236206 -0.513153 -0.76593 -0.973389 -1 -1 -1 -1 -0.967407
+-0.781769 -0.56424 -0.324951 -0.0736084 0.183289 0.443054 0.702942
+0.960358 0.999969 0.999969 0.999969 0.999969 0.986908 0.159088 -0.523895
+-1 -1 -1 -1 -0.918671 -0.595154 -0.258484 0.046814 0.289673 0.451355
+0.529297 0.52771 0.463898 0.358154 0.232758 0.108521 0.00115967 -0.078125
+-0.124237 -0.138458 -0.124237 -0.089386 -0.0411987 0.0108032 0.0605774
+0.101654 0.130585 0.147491 0.152008 0.145264 0.131958 0.113983 0.0951233
+0.0777283 0.0628357 0.0530701 0.0495605 0.0513916 0.0587158 0.0714722
+0.0856323 0.0986938 0.110992 0.123718 0.133789 0.141266 0.145508 0.147034
+0.145386 0.140686 0.134216 0.125916 0.115723 0.105774 0.096283 0.0852051
+0.0751038 0.0665894 0.05896 0.0525513 0.0475464 0.0441895 0.0434875
+0.0458984 0.0515747 0.0593872 0.0674438 0.0768127 0.0877991 0.0993042
+0.110229 0.121124 0.131989 0.141052 0.147308 0.14975 0.148834 0.144836
+0.138489 0.129425 0.116486 0.100189 0.0821228 0.0637207 0.0458069 0.0279846
+0.0101318 -0.0088501 -0.0272217 -0.0437927 -0.0577393 -0.071228 -0.0854492
+-0.0998535 -0.11377 -0.127319 -0.141632 -0.157898 -0.17337 -0.187744
+-0.202179 -0.21701 -0.231873 -0.245453 -0.2565 -0.265259 -0.272217
+-0.2771 -0.278839 -0.277008 -0.272583 -0.267853 -0.261444 -0.251007
+-0.236786 -0.21933 -0.19931 -0.177551 -0.154633 -0.131104 -0.107788
+-0.0860291 -0.0675659 -0.0513306 -0.0410767 -0.037262 -0.0393066 -0.0481873
+-0.0643311 -0.0869446 -0.115143 -0.148315 -0.183868 -0.221497 -0.259308
+-0.29538 -0.328888 -0.359314 -0.384674 -0.403748 -0.416901 -0.423584
+-0.421875 -0.412445 -0.394135 -0.368683 -0.335114 -0.294617 -0.248718
+-0.200012 -0.150696 -0.103271 -0.0614319 -0.0278015 -0.00195312 0.0123291
+0.0169067 0.00997925 -0.0055542 -0.0300903 -0.0625 -0.0991211 -0.136505
+-0.172913 -0.207245 -0.238586 -0.265167 -0.287231 -0.30426 -0.316223
+-0.323425 -0.326294 -0.326965 -0.326263 -0.324585 -0.323242 -0.321442
+-0.32077 -0.320282 -0.322388 -0.323883 -0.32547 -0.326569 -0.324921
+-0.31781 -0.303741 -0.281006 -0.246765 -0.201111 -0.141479 -0.0682983
+0.0192566 0.11969 0.230042 0.346985 0.466461 0.582428 0.687988 0.777466
+0.847107 0.891693 0.908142 0.895447 0.859131 0.801605 0.726562 0.639618
+0.548218 0.459473 0.378784 0.310516 0.256836 0.219971 0.200043 0.192505
+0.195129 0.203156 0.211853 0.217621 0.218018 0.210602 0.192932 0.165924
+0.130157 0.0880737 0.0436707 0.000183105 -0.0377197 -0.0673523 -0.0857544
+-0.0892944 -0.0753784 -0.0438232 0.00436401 0.0688477 0.148773 0.241241
+0.343048 0.451538 0.561401 0.667877 0.76535 0.84613 0.903748 0.934753
+0.933105 0.895264 0.82016 0.707977 0.564514 0.39798 0.217407 0.0344543
+-0.138824 -0.291412 -0.41217 -0.494598 -0.535889 -0.534729 -0.494141
+-0.418274 -0.314331 -0.188263 -0.0472717 0.101135 0.25116 0.398132
+0.53775 0.665833 0.776978 0.870361 0.94281 0.990692 0.999969 0.999969
+0.980591 0.930176 0.862274 0.780884 0.691925 0.601074 0.516296 0.440979
+0.37616 0.324341 0.284668 0.253754 0.225769 0.192902 0.148743 0.0855713
+-0.00421143 -0.124268 -0.275452 -0.454956 -0.65567 -0.866638 -1 -1
+-1 -1 -1 -1 -1 -1 -1 -1 -0.828003 -0.672089 -0.544495 -0.453064 -0.400085
+-0.382477 -0.391357 -0.4151 -0.441681 -0.458649 -0.452606 -0.414001
+-0.339233 -0.228607 -0.0864258 0.078186 0.253143 0.424225 0.577881
+0.701019 0.781769 0.811951 0.789276 0.713867 0.589264 0.423553 0.227509
+0.0120239 -0.211914 -0.435303 -0.651703 -0.853729 -1 -1 -1 -1 -1 -1
+-1 -1 -1 -0.756287 -0.444092 -0.102905 0.243561 0.569672 0.849365 0.999969
+0.999969 0.999969 0.999969 0.999969 0.833405 0.590118 0.322998 0.0515442
+-0.206573 -0.438843 -0.638672 -0.804199 -0.935913 -1 -1 -1 -1 -1 -1
+-1 -0.96283 -0.861115 -0.749207 -0.636108 -0.531036 -0.444672 0.554535
+0.999969 0.999969 0.999969 0.999969 0.999969 0.999969 0.57547 0.100037
+-0.290497 -0.564453 -0.710022 -0.732971 -0.656952 -0.510254 -0.323334
+-0.128326 0.0491943 0.191101 0.28653 0.333221 0.336029 0.302673 0.245667
+0.17749 0.108307 0.0475159 0.00280762 -0.0238342 -0.0334473 -0.0276794
+-0.00997925 0.0147095 0.0418701 0.0684509 0.0918579 0.109528 0.120117
+0.124176 0.123077 0.118225 0.111725 0.105469 0.100128 0.0970154 0.0969849
+0.0992432 0.105286 0.112579 0.120056 0.12735 0.133453 0.136932 0.136902
+0.133301 0.126068 0.116638 0.105255 0.0941467 0.0830078 0.0715942 0.0602722
+0.0501099 0.0424805 0.0380859 0.0365295 0.0378418 0.0431519 0.0505371
+0.0605164 0.0729065 0.0870056 0.100586 0.114044 0.126099 0.136108 0.144623
+0.150208 0.151245 0.149628 0.145538 0.13916 0.1297 0.11673 0.101257
+0.0846252 0.0667725 0.0483398 0.0305786 0.0133057 -0.00411987 -0.0206909
+-0.0389404 -0.0566406 -0.0726929 -0.0880432 -0.102997 -0.11734 -0.131409
+-0.145782 -0.159973 -0.174347 -0.189453 -0.204712 -0.218262 -0.231842
+-0.243958 -0.254822 -0.264679 -0.272614 -0.278137 -0.280457 -0.277985
+-0.274139 -0.26651 -0.255615 -0.242767 -0.227753 -0.210876 -0.192017
+-0.171631 -0.150085 -0.12796 -0.106537 -0.0864563 -0.0697632 -0.0567932
+-0.0470886 -0.0434875 -0.0454712 -0.0533142 -0.0669861 -0.0858154 -0.109589
+-0.138916 -0.174042 -0.212128 -0.25116 -0.289917 -0.327362 -0.36142
+-0.389282 -0.410004 -0.423279 -0.428436 -0.42514 -0.413666 -0.39328
+-0.365875 -0.330109 -0.287811 -0.241241 -0.193298 -0.146057 -0.101135
+-0.0602417 -0.0259705 -0.00109863 0.0117798 0.0144653 0.00726318 -0.00985718
+-0.033844 -0.062439 -0.0951843 -0.13028 -0.165527 -0.199432 -0.230042
+-0.256622 -0.279663 -0.296783 -0.30954 -0.317444 -0.32251 -0.324615
+-0.324493 -0.323944 -0.323425 -0.322845 -0.324738 -0.325836 -0.326599
+-0.327118 -0.327057 -0.325226 -0.320679 -0.311951 -0.296753 -0.273376
+-0.240204 -0.194733 -0.136108 -0.0620117 0.0262451 0.125214 0.233795
+0.349182 0.466644 0.580963 0.68634 0.776581 0.846069 0.890045 0.907074
+0.899292 0.865997 0.809326 0.734558 0.647552 0.554962 0.463654 0.380096
+0.30957 0.255005 0.218353 0.196045 0.187775 0.189697 0.198151 0.208984
+0.216583 0.217407 0.209686 0.192047 0.165222 0.12973 0.0860291 0.0411072
+-0.00177002 -0.0402222 -0.0692444 -0.0855408 -0.087616 -0.0743713 -0.04422
+0.00427246 0.0694275 0.149475 0.241608 0.343414 0.451263 0.561371 0.667389
+0.764069 0.845642 0.905365 0.937836 0.937012 0.899841 0.82428 0.711792
+0.567657 0.39978 0.217377 0.0335083 -0.139648 -0.292023 -0.41394 -0.498688
+-0.541809 -0.54184 -0.500946 -0.424866 -0.320526 -0.195007 -0.0548401
+0.0941772 0.246277 0.395569 0.536713 0.665955 0.779266 0.873901 0.947601
+0.99646 0.999969 0.999969 0.985901 0.934845 0.865417 0.782837 0.693024
+0.601807 0.516235 0.439514 0.374481 0.323212 0.284424 0.253693 0.225494
+0.193054 0.148132 0.0826416 -0.00842285 -0.127563 -0.278015 -0.457214
+-0.657013 -0.867767 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -0.832947 -0.674957
+-0.546509 -0.455109 -0.401459 -0.381561 -0.38913 -0.413025 -0.43924
+-0.454773 -0.44754 -0.410187 -0.338013 -0.229919 -0.0897827 0.0737915
+0.248657 0.420746 0.575073 0.701202 0.783661 0.81601 0.795135 0.720795
+0.597382 0.432526 0.236237 0.0197754 -0.20636 -0.433411 -0.651581 -0.85675
+-1 -1 -1 -1 -1 -1 -1 -1 -1 -0.761597 -0.449127 -0.10733 0.240723 0.567749
+0.849518 0.999969 0.999969 0.999969 0.999969 0.999969 0.846893 0.602264
+0.333496 0.0600586 -0.202484 -0.440704 -0.646301 -0.815704 -0.948914
+-1 -1 -1 -1 -1 -1 -1 -0.964539 -0.862732 -0.751526 -0.638733 -0.534088
+-0.447662 -0.387573 -0.358978 -0.362793 -0.397034 -0.4552 -0.525391
+-0.592346 -0.640137 -0.651886 -0.610596 -0.502045 -0.315704 -0.0520325
+0.280945 0.666718 0.999969;
+#X coords 0 2 1999 -2 200 140 1;
+#X restore 596 461 graph;
+#X msg 177 446 bang;
+#X obj 602 315 hsl 128 15 0 100 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 1270 0;
+#X text 607 295 The pedal (step);
+#X obj 601 216 f;
+#X obj 632 216 + 1;
+#X msg 599 158 bang;
+#X obj 645 242 > 100;
+#X obj 688 241 route 1;
+#X msg 685 215 -1;
+#X msg 559 216 0;
+#X obj 693 185 route 1;
+#X obj 664 186 < 0;
+#X msg 690 159 1;
+#X msg 555 160 stop;
+#X obj 161 187 hsl 128 15 0 3000 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 5600 0;
+#X text 162 166 Minimum freq [ 0 - 3000 ];
+#X obj 212 221 hsl 128 15 0 3000 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 3300 0;
+#X text 207 205 Maximum freq [ 0 - 3000 ];
+#X obj 237 259 hsl 128 15 0 1000 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 4200 0;
+#X text 234 241 Sensibility [ 0 - 1000 ];
+#X obj 285 292 hsl 128 15 0 100 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 1100 0;
+#X text 280 275 Maxstep [ 0 - 100 ];
+#X obj 340 327 hsl 128 15 -15 15 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 12400 0;
+#X text 335 310 Gain [ -15 - 15 ];
+#X obj 408 369 hsl 128 15 0 10 0 0 empty empty empty 20 8 0 8 -262144
+-1 -1 5000 0;
+#X text 403 351 Bandwidth [ 0 - 10 ];
+#X text 597 126 Auto;
+#X text 164 148 Note : setting a parameter overrides presets;
+#X obj 87 414 wahwah~ --------------------------------------------------
+;
+#X text 133 543 Note : interesting to set bandwith close to 10;
+#X obj 600 185 metro 10;
+#X obj 648 127 loadbang;
+#X connect 1 0 42 0;
+#X connect 2 0 42 0;
+#X connect 3 0 42 0;
+#X connect 4 0 42 0;
+#X connect 5 0 42 0;
+#X connect 10 0 42 0;
+#X connect 14 0 12 0;
+#X connect 15 0 42 7;
+#X connect 17 0 18 0;
+#X connect 17 0 20 0;
+#X connect 17 0 25 0;
+#X connect 17 0 15 0;
+#X connect 18 0 17 1;
+#X connect 19 0 44 0;
+#X connect 20 0 21 0;
+#X connect 21 0 22 0;
+#X connect 22 0 18 1;
+#X connect 23 0 17 0;
+#X connect 24 0 26 0;
+#X connect 25 0 24 0;
+#X connect 26 0 18 1;
+#X connect 27 0 44 0;
+#X connect 28 0 42 1;
+#X connect 30 0 42 2;
+#X connect 32 0 42 3;
+#X connect 34 0 42 4;
+#X connect 36 0 42 5;
+#X connect 38 0 42 6;
+#X connect 42 0 0 0;
+#X connect 42 0 12 0;
+#X connect 44 0 17 0;
+#X connect 45 0 19 0;
diff --git a/wahwah~/wahwah~.c b/wahwah~/wahwah~.c
new file mode 100644
index 0000000..72c77d4
--- /dev/null
+++ b/wahwah~/wahwah~.c
@@ -0,0 +1,409 @@
+/* Copyright (c) 2002 Yves Degoyon. */
+/* For information on usage and redistribution, and for a DISCLAIMER OF ALL */
+/* WARRANTIES, see the file, "COPYING" in this distribution. */
+/* */
+/* wahwah~ -- a kind of effect used in psychedelic music */
+/* the algorithm was taken from Digital Effects, */
+/* 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 : */
+/* */
+/* Crass -- "Shaved Women ( Collaborators )" */
+/* Zounds -- "Can't Cheat Karma" */
+/* */
+/* 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 COEFFSIZE 3000 /* coefficients size */
+#define NBCOEFFS 5 /* number of coefficients */
+
+static char *wahwah_version = "wahwah~: an audio wahwah, version 0.1 (ydegoyon@free.fr)";
+
+typedef struct _wahwah
+{
+ t_object x_obj;
+ double *x_buf;
+ t_int x_samplerate;
+ t_float *x_coeffs;
+ double x_minfc; /* min frequency Hz */ /* 0< <3000 */
+ double x_maxfc; /* max frequency Hz */ /* 0< <3000 */
+ double x_sense; /* increase/decrease frequency change by one mouse movement Hz */ /* 0< <=1000 */
+ double x_maxstep; /* maximum frequency change step KHz */ /* 0< <=100 */
+ double x_dbgain; /* peaking filter gain dB */ /* -15<= <=15 */
+ double x_bandwidth; /* bandwidth in octaves (between midpoint (dBgain/2)
+ gain frequencies) or */ /* 0< <10 */
+ double x_Q; /* the EE kinda definition */ /* 0< <=1 */
+
+ /* variables for audio computation */
+ double min_coef,max_coef,cur_coef,step,maxstep;
+ t_int down;
+ /* amplitudes */
+ short x0,x1,x2;
+ t_int y0,y1,y2;
+
+ t_float x_f;
+} t_wahwah;
+
+static t_class *wahwah_class;
+
+static void wahwah_set_coeffs (t_wahwah *x)
+{
+ t_int i;
+ double omega;
+ double sn,cs;
+ double alpha = 0.0;
+ /* filter coefficients */
+ double a0,a1,a2,b0,b1,b2;
+ double A;
+
+ A = exp(x->x_dbgain/40.0)*log(10.0);
+ for (i = 0; i < COEFFSIZE; i++)
+ {
+ omega = 2.0*M_PI*(double)i/(double)x->x_samplerate;
+ sn = sin(omega);
+ cs = cos(omega);
+ if (x->x_bandwidth)
+ alpha = sn*sin(log(2.0)/2.0*x->x_bandwidth*omega/sn);
+ else
+ /* if Q is specified instead of bandwidth */
+ if (x->x_Q)
+ alpha = sn/(2.0*x->x_Q);
+
+ /* then compute the coefs for whichever filter type you want */
+ b0 = 1.0 + alpha*A;
+ b1 = -2.0*cs ;
+ b2 = 1.0 - alpha*A;
+ a0 = 1.0 + alpha/A;
+ a1 = -2.0*cs ;
+ a2 = 1.0 - alpha/A;
+
+ *(x->x_coeffs+i*NBCOEFFS) = (b0/a0);
+ *(x->x_coeffs+i*NBCOEFFS+1) = (b1/a0);
+ *(x->x_coeffs+i*NBCOEFFS+2) = (b2/a0);
+ *(x->x_coeffs+i*NBCOEFFS+3) = (a1/a0);
+ *(x->x_coeffs+i*NBCOEFFS+4) = (a2/a0);
+ // post( "wahwah~ : coeff : %f", *(x->x_coeffs+i*NBCOEFFS+4) );
+ }
+ x->min_coef = x->x_minfc;
+ x->max_coef = x->x_maxfc;
+ x->cur_coef = x->min_coef;
+ x->down = 1;
+ x->step = 0;
+ x->maxstep = x->x_maxstep/(double)x->x_samplerate*1000.0;
+}
+
+static void wahwah_bandwidth(t_wahwah *x, t_floatarg fbandwidth )
+{
+ if ( fbandwidth > 10.0 )
+ {
+ fbandwidth = 10.0;
+ }
+ if ( fbandwidth < 0.0 )
+ {
+ fbandwidth = 0.0;
+ }
+ x->x_bandwidth = fbandwidth;
+ // post( "wahwah~ : bandwidth: %f", x->x_bandwidth );
+ wahwah_set_coeffs( x );
+}
+
+static void wahwah_dbgain(t_wahwah *x, t_floatarg fdbgain )
+{
+ if ( fdbgain > 15.0 )
+ {
+ fdbgain = 15.0;
+ }
+ if ( fdbgain < -15.0 )
+ {
+ fdbgain = -15.0;
+ }
+ x->x_dbgain = fdbgain;
+ // post( "wahwah~ : dbgain: %f", x->x_dbgain );
+ wahwah_set_coeffs( x );
+}
+
+static void wahwah_maxstep(t_wahwah *x, t_floatarg fmaxstep )
+{
+ if ( fmaxstep > 100.0 )
+ {
+ fmaxstep = 100.0;
+ }
+ if ( fmaxstep < 0.0 )
+ {
+ fmaxstep = 0.0;
+ }
+ x->x_maxstep = fmaxstep;
+ // post( "wahwah~ : maxstep: %f", x->x_maxstep );
+ wahwah_set_coeffs( x );
+}
+
+static void wahwah_sensibility(t_wahwah *x, t_floatarg fsensibility )
+{
+ if ( fsensibility > 1000.0 )
+ {
+ fsensibility = 1000.0;
+ }
+ if ( fsensibility < 0.0 )
+ {
+ fsensibility = 0.0;
+ }
+ x->x_sense = fsensibility;
+ // post( "wahwah~ : sensibility: %f", x->x_sense );
+ wahwah_set_coeffs( x );
+}
+
+static void wahwah_maxfreq(t_wahwah *x, t_floatarg fmaxfreq )
+{
+ if ( fmaxfreq > 3000.0 )
+ {
+ fmaxfreq = 3000.0;
+ }
+ if ( fmaxfreq < 0.0 )
+ {
+ fmaxfreq = 0.0;
+ }
+ x->x_maxfc = fmaxfreq;
+ // post( "wahwah~ : maxfreq: %f", x->x_maxfc );
+ wahwah_set_coeffs( x );
+}
+
+static void wahwah_minfreq(t_wahwah *x, t_floatarg fminfreq )
+{
+ if ( fminfreq > 3000.0 )
+ {
+ fminfreq = 3000.0;
+ }
+ if ( fminfreq < 0.0 )
+ {
+ fminfreq = 0.0;
+ }
+ x->x_minfc = fminfreq;
+ // post( "wahwah~ : minfreq: %f", x->x_minfc );
+ wahwah_set_coeffs( x );
+}
+
+static void wahwah_step(t_wahwah *x, t_floatarg fstep )
+{
+ if ( fstep > x->x_maxstep )
+ {
+ fstep = x->x_maxstep;
+ }
+ if ( fstep < 0 )
+ {
+ fstep = 0;
+ }
+ x->step = fstep*x->x_sense/x->x_samplerate;
+}
+
+static t_int *wahwah_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_wahwah *x = (t_wahwah*)(w[4]);
+ t_int i;
+
+ for (i=0; i<n; i++)
+ {
+ /* read input */
+ x->x0 = (int)((*(in+i))*32768);
+
+ x->y0 = (*(x->x_coeffs+(int)x->cur_coef*NBCOEFFS))*x->x0
+ + (*(x->x_coeffs+(int)x->cur_coef*NBCOEFFS+1))*x->x1
+ + (*(x->x_coeffs+(int)x->cur_coef*NBCOEFFS+2))*x->x2
+ - (*(x->x_coeffs+(int)x->cur_coef*NBCOEFFS+3))*x->y1
+ - (*(x->x_coeffs+(int)x->cur_coef*NBCOEFFS+4))*x->y2;
+
+ x->y2 = x->y1;
+ x->y1 = x->y0;
+ x->x2 = x->x1;
+ x->x1 = x->x0;
+
+ if(x->y0 > 32767.0)
+ x->y0 = 32767.0;
+ else if(x->y0 < -32768.0)
+ x->y0 = -32768.0;
+
+ *(out+i) = (t_float)(x->y0) / 32768.0;
+
+ x->cur_coef = x->cur_coef+x->down*x->step*(abs(x->x0)/(0.5*32768.0));
+ // post ( "wahwah~ : cur coeff : %f", x->cur_coef );
+ if(x->cur_coef > x->max_coef)
+ {
+ x->cur_coef = x->max_coef;
+ x->down = -1;
+ }
+ else if(x->cur_coef < x->min_coef)
+ {
+ x->cur_coef = x->min_coef;
+ x->down = 1;
+ }
+
+ }
+
+ return (w+5);
+}
+
+static void wahwah_preset(t_wahwah *x, t_float pnumber)
+{
+ switch ( (int)pnumber )
+ {
+ /* fast change medium wah wah */
+ case 1:
+ x->x_minfc = 100.0;
+ x->x_maxfc = 1600.0;
+ x->x_sense = 100.0;
+ x->x_maxstep = 60.0;
+ x->x_dbgain = 15.0;
+ x->x_Q = 1.0;
+ break;
+
+ /* slow change medium wah wah */
+ case 2:
+ x->x_minfc = 100.0;
+ x->x_maxfc = 1600.0;
+ x->x_sense = 50.0;
+ x->x_maxstep = 36.0;
+ x->x_dbgain = 15.0;
+ x->x_Q = 1.0;
+ break;
+
+ /* fast wah wah */
+ case 3:
+ x->x_minfc = 100.0;
+ x->x_maxfc = 600.0;
+ x->x_sense = 100.0;
+ x->x_maxstep = 66.0;
+ x->x_dbgain = 15.0;
+ x->x_Q = 1.0;
+ break;
+
+ /* ranged wah wah */
+ case 4:
+ x->x_minfc = 10.0;
+ x->x_maxfc = 2900.0;
+ x->x_sense = 100.0;
+ x->x_maxstep = 66.0;
+ x->x_dbgain = 15.0;
+ x->x_Q = 1.0;
+ break;
+
+ /* wah wah 400 - 2000 */
+ case 5:
+ x->x_minfc = 400.0;
+ x->x_maxfc = 2000.0;
+ x->x_sense = 100.0;
+ x->x_maxstep = 66.0;
+ x->x_dbgain = 15.0;
+ x->x_Q = 1.0;
+ break;
+
+ default:
+ post( "wahwah~ : unknown preset requested : %d", pnumber );
+ return;
+ break;
+ }
+ wahwah_set_coeffs( x );
+}
+
+static void wahwah_dsp(t_wahwah *x, t_signal **sp)
+{
+ dsp_add(wahwah_perform, 4, sp[0]->s_vec, sp[1]->s_vec, sp[0]->s_n, x );
+}
+
+ /* clean up */
+static void wahwah_free(t_wahwah *x)
+{
+ if ( x->x_buf != NULL ) {
+ freebytes(x->x_buf, BFSZ*sizeof( double ) );
+ post( "Freed %d bytes", BFSZ*sizeof( double ) );
+ x->x_buf = NULL;
+ }
+ if ( x->x_coeffs != NULL ) {
+ freebytes(x->x_coeffs, COEFFSIZE*NBCOEFFS*sizeof( t_float ) );
+ post( "Freed %d bytes", COEFFSIZE*NBCOEFFS*sizeof( t_float ));
+ x->x_coeffs = NULL;
+ }
+}
+
+static void *wahwah_new(void)
+{
+ t_wahwah *x = (t_wahwah *)pd_new(wahwah_class);
+ outlet_new(&x->x_obj, &s_signal);
+ inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("minfreq"));
+ inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("maxfreq"));
+ inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("sensibility"));
+ inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("maxstep"));
+ inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("dbgain"));
+ inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("bandwidth"));
+ inlet_new(&x->x_obj, &x->x_obj.ob_pd, &s_float, gensym("step"));
+
+ x->x_samplerate = (int)sys_getsr();
+
+ if ( !( x->x_buf = ( double* ) getbytes( BFSZ*sizeof( double ) ) ) )
+ {
+ post ("wahwah~ : could not allocate buffer" );
+ return NULL;
+ }
+ if ( !( x->x_coeffs = ( t_float* ) getbytes( COEFFSIZE*NBCOEFFS*sizeof( t_float ) ) ) )
+ {
+ post ("wahwah~ : could not allocate coeffs" );
+ return NULL;
+ }
+
+ // set default parameters
+ wahwah_preset( x, 1 );
+ wahwah_set_coeffs( x );
+
+ return (x);
+}
+
+void wahwah_tilde_setup(void)
+{
+ post( wahwah_version );
+ wahwah_class = class_new(gensym("wahwah~"), (t_newmethod)wahwah_new, (t_method)wahwah_free,
+ sizeof(t_wahwah), 0, 0);
+
+ CLASS_MAINSIGNALIN( wahwah_class, t_wahwah, x_f );
+ class_sethelpsymbol( wahwah_class, gensym("help-wahwah~.pd") );
+ class_addmethod(wahwah_class, (t_method)wahwah_step, gensym("step"), A_FLOAT, 0);
+ class_addmethod(wahwah_class, (t_method)wahwah_minfreq, gensym("minfreq"), A_FLOAT, 0);
+ class_addmethod(wahwah_class, (t_method)wahwah_maxfreq, gensym("maxfreq"), A_FLOAT, 0);
+ class_addmethod(wahwah_class, (t_method)wahwah_sensibility, gensym("sensibility"), A_FLOAT, 0);
+ class_addmethod(wahwah_class, (t_method)wahwah_maxstep, gensym("maxstep"), A_FLOAT, 0);
+ class_addmethod(wahwah_class, (t_method)wahwah_dbgain, gensym("dbgain"), A_FLOAT, 0);
+ class_addmethod(wahwah_class, (t_method)wahwah_bandwidth, gensym("bandwidth"), A_FLOAT, 0);
+ class_addmethod(wahwah_class, (t_method)wahwah_dsp, gensym("dsp"), 0);
+ class_addmethod(wahwah_class, (t_method)wahwah_preset, gensym("preset"), A_FLOAT, 0);
+}