diff options
author | Hans-Christoph Steiner <eighthave@users.sourceforge.net> | 2003-08-16 17:08:55 +0000 |
---|---|---|
committer | Hans-Christoph Steiner <eighthave@users.sourceforge.net> | 2003-08-16 17:08:55 +0000 |
commit | 506b8e7dedb80d79bf015e47d92e8b8dd8284584 (patch) | |
tree | 6393e98add0a0ae7f92388665b3b6242977f5b64 /wahwah~ | |
parent | 856eaf396d9a4d371a458a2c373a052bb72c8057 (diff) |
added files straight from Yves' sources
svn path=/trunk/externals/unauthorized/; revision=864
Diffstat (limited to 'wahwah~')
-rw-r--r-- | wahwah~/CHANGES.LOG | 2 | ||||
-rw-r--r-- | wahwah~/COPYING | 280 | ||||
-rw-r--r-- | wahwah~/INSTALL | 15 | ||||
-rw-r--r-- | wahwah~/Makefile | 82 | ||||
-rw-r--r-- | wahwah~/README | 24 | ||||
-rw-r--r-- | wahwah~/help-wahwah~.pd | 48 | ||||
-rw-r--r-- | wahwah~/rs-wahwah~.pd | 348 | ||||
-rw-r--r-- | wahwah~/wahwah~.c | 409 |
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); +} |