From d41e58e6cd71fdacdca69ba78c29d42dc7d330d5 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 20 Nov 2002 17:46:33 +0000 Subject: This commit was generated by cvs2svn to compensate for changes in r224, which included commits to RCS files with non-trunk default branches. svn path=/trunk/externals/maxlib/; revision=225 --- HISTORY | 72 ++ LICENSE | 346 +++++++++ README | 38 + help/automata.txt | 178 +++++ help/examplescore.txt | 25 + help/help-arbran.pd | 28 + help/help-average.pd | 29 + help/help-beat.pd | 66 ++ help/help-beta.pd | 14 + help/help-bilex.pd | 12 + help/help-borax.pd | 86 +++ help/help-cauchy.pd | 11 + help/help-chord.pd | 37 + help/help-delta.pd | 20 + help/help-dist.pd | 36 + help/help-divide.pd | 18 + help/help-divmod.pd | 20 + help/help-edge.pd | 17 + help/help-expo.pd | 12 + help/help-fifo.pd | 13 + help/help-gauss.pd | 14 + help/help-gestalt.pd | 51 ++ help/help-history.pd | 30 + help/help-ignore.pd | 15 + help/help-iso.pd | 54 ++ help/help-lifo.pd | 16 + help/help-limit.pd | 25 + help/help-linear.pd | 8 + help/help-listfunnel.pd | 21 + help/help-match.pd | 68 ++ help/help-maxlib.pd | 73 ++ help/help-minus.pd | 17 + help/help-mlife.pd | 56 ++ help/help-multi.pd | 17 + help/help-netclient.pd | 51 ++ help/help-netdist.pd | 37 + help/help-netrec.pd | 34 + help/help-netserver.pd | 50 ++ help/help-nroute.pd | 37 + help/help-pitch.pd | 30 + help/help-plus.pd | 17 + help/help-poisson.pd | 12 + help/help-pulse.pd | 35 + help/help-remote.pd | 18 + help/help-rhythm.pd | 35 + help/help-scale.pd | 31 + help/help-score.pd | 52 ++ help/help-speedlim.pd | 30 + help/help-step.pd | 22 + help/help-subst.pd | 72 ++ help/help-temperature.pd | 16 + help/help-tilt.pd | 26 + help/help-triang.pd | 9 + help/help-velocity.pd | 14 + help/help-weibull.pd | 15 + include/m_imp.h | 223 ++++++ include/m_pd.h | 594 +++++++++++++++ makefile | 259 +++++++ maxlib.c | 167 +++++ readme | 38 + src/arbran.c | 178 +++++ src/average.c | 192 +++++ src/beat.c | 394 ++++++++++ src/beta.c | 98 +++ src/bilex.c | 82 +++ src/borax.c | 228 ++++++ src/cauchy.c | 81 +++ src/chord.c | 1802 ++++++++++++++++++++++++++++++++++++++++++++++ src/delta.c | 128 ++++ src/dist.c | 269 +++++++ src/divide.c | 100 +++ src/divmod.c | 90 +++ src/edge.c | 77 ++ src/expo.c | 77 ++ src/fifo.c | 86 +++ src/gauss.c | 78 ++ src/gestalt.c | 109 +++ src/history.c | 257 +++++++ src/ignore.c | 112 +++ src/iso.c | 178 +++++ src/lifo.c | 95 +++ src/limit.c | 119 +++ src/linear.c | 72 ++ src/listfunnel.c | 82 +++ src/match.c | 268 +++++++ src/minus.c | 100 +++ src/mlife.c | 497 +++++++++++++ src/multi.c | 99 +++ src/netclient.c | 348 +++++++++ src/netdist.c | 304 ++++++++ src/netrec.c | 435 +++++++++++ src/netserver.c | 563 +++++++++++++++ src/nroute.c | 173 +++++ src/pitch.c | 106 +++ src/plus.c | 100 +++ src/poisson.c | 82 +++ src/pong.c | 327 +++++++++ src/pulse.c | 265 +++++++ src/remote.c | 84 +++ src/rhythm.c | 329 +++++++++ src/scale.c | 133 ++++ src/score.c | 293 ++++++++ src/speedlim.c | 227 ++++++ src/step.c | 167 +++++ src/subst.c | 408 +++++++++++ src/temperature.c | 109 +++ src/tilt.c | 176 +++++ src/triang.c | 70 ++ src/velocity.c | 102 +++ src/weibull.c | 85 +++ 110 files changed, 14301 insertions(+) create mode 100644 HISTORY create mode 100644 LICENSE create mode 100644 README create mode 100644 help/automata.txt create mode 100644 help/examplescore.txt create mode 100644 help/help-arbran.pd create mode 100644 help/help-average.pd create mode 100644 help/help-beat.pd create mode 100644 help/help-beta.pd create mode 100644 help/help-bilex.pd create mode 100644 help/help-borax.pd create mode 100644 help/help-cauchy.pd create mode 100644 help/help-chord.pd create mode 100644 help/help-delta.pd create mode 100644 help/help-dist.pd create mode 100644 help/help-divide.pd create mode 100644 help/help-divmod.pd create mode 100644 help/help-edge.pd create mode 100644 help/help-expo.pd create mode 100644 help/help-fifo.pd create mode 100644 help/help-gauss.pd create mode 100644 help/help-gestalt.pd create mode 100644 help/help-history.pd create mode 100644 help/help-ignore.pd create mode 100644 help/help-iso.pd create mode 100644 help/help-lifo.pd create mode 100644 help/help-limit.pd create mode 100644 help/help-linear.pd create mode 100644 help/help-listfunnel.pd create mode 100644 help/help-match.pd create mode 100644 help/help-maxlib.pd create mode 100644 help/help-minus.pd create mode 100644 help/help-mlife.pd create mode 100644 help/help-multi.pd create mode 100644 help/help-netclient.pd create mode 100644 help/help-netdist.pd create mode 100644 help/help-netrec.pd create mode 100644 help/help-netserver.pd create mode 100644 help/help-nroute.pd create mode 100644 help/help-pitch.pd create mode 100644 help/help-plus.pd create mode 100644 help/help-poisson.pd create mode 100644 help/help-pulse.pd create mode 100644 help/help-remote.pd create mode 100644 help/help-rhythm.pd create mode 100644 help/help-scale.pd create mode 100644 help/help-score.pd create mode 100644 help/help-speedlim.pd create mode 100644 help/help-step.pd create mode 100644 help/help-subst.pd create mode 100644 help/help-temperature.pd create mode 100644 help/help-tilt.pd create mode 100644 help/help-triang.pd create mode 100644 help/help-velocity.pd create mode 100644 help/help-weibull.pd create mode 100644 include/m_imp.h create mode 100644 include/m_pd.h create mode 100644 makefile create mode 100644 maxlib.c create mode 100644 readme create mode 100644 src/arbran.c create mode 100644 src/average.c create mode 100644 src/beat.c create mode 100644 src/beta.c create mode 100644 src/bilex.c create mode 100644 src/borax.c create mode 100644 src/cauchy.c create mode 100644 src/chord.c create mode 100644 src/delta.c create mode 100644 src/dist.c create mode 100644 src/divide.c create mode 100644 src/divmod.c create mode 100644 src/edge.c create mode 100644 src/expo.c create mode 100644 src/fifo.c create mode 100644 src/gauss.c create mode 100644 src/gestalt.c create mode 100644 src/history.c create mode 100644 src/ignore.c create mode 100644 src/iso.c create mode 100644 src/lifo.c create mode 100644 src/limit.c create mode 100644 src/linear.c create mode 100644 src/listfunnel.c create mode 100644 src/match.c create mode 100644 src/minus.c create mode 100644 src/mlife.c create mode 100644 src/multi.c create mode 100644 src/netclient.c create mode 100644 src/netdist.c create mode 100644 src/netrec.c create mode 100644 src/netserver.c create mode 100644 src/nroute.c create mode 100644 src/pitch.c create mode 100644 src/plus.c create mode 100644 src/poisson.c create mode 100644 src/pong.c create mode 100644 src/pulse.c create mode 100644 src/remote.c create mode 100644 src/rhythm.c create mode 100644 src/scale.c create mode 100644 src/score.c create mode 100644 src/speedlim.c create mode 100644 src/step.c create mode 100644 src/subst.c create mode 100644 src/temperature.c create mode 100644 src/tilt.c create mode 100644 src/triang.c create mode 100644 src/velocity.c create mode 100644 src/weibull.c diff --git a/HISTORY b/HISTORY new file mode 100644 index 0000000..244f2a6 --- /dev/null +++ b/HISTORY @@ -0,0 +1,72 @@ +version history of maxlib library for pure-data + +v 1.1b2 (23. oktober 2002): +- corrected two small bugs in the makefile (linux only!), thanks to + Hans-Christoph Steiner + +v 1.1b (12. september 2002): +- new object: limit +- match and speedlim have been replaced with the objects from cyclone library +- deleted the (unwanted) debugging printout from nroute + +v 1.1 (26. august 2002): +- new objects: nroute, pong, edge +- arbran 0.1b now allows to (re-)set the arrays dynamically +- match 0.3 now matches any type of data (floats, lists, symbols, anything) +- scale 0.2 allows to dynamically change the creation arguments and to choose + between linear (default) and exponential scale +- MSVC++ workspace contains configuration for Intel Compiler with Pentium 4 + optimizations ("maxlib - Win32 Intel") +- makefile and binary release for Mac OS X (10.1.5) +- BUG FIX: corrected path to helpfiles in rand objects +- BUG FIX: corrected makefile to work under Linux again + +v 1.0 (9th august 2002): +- new objects: netserver, netclient, arbran, beta, bilex, cauchy, expo, + gauss, linear, poisson, triang, weibull +- the help patches now live in doc/5.reference/maxlib, thanks to + Frank Barknecht for suggesting that and for modifying the sources + +v 0.9 (25th july 2002): +- new objects: tilt gestalt temperature + +v 0.8b (21st july 2002): +- now compiles on Linux, thanks to Martin Pi +- new objects: listfunnel + +v 0.8 (4th july 2002): +- new objects: history netrec scale delta velocity +- some small changes to speedlim + +v 0.7 (24th june 2002): +- fixed a bug in average, thanks to João Miguel Pais +- new chord algorhythm: supports up to 67 chord types now + +v 0.6 (7th june 2002): +- added objects: beat rhythm + +v 0.5 (28th mai 2002): +- added objects: netdist mlife subst +- netdist uses the pthreads-win32 library for POSIX multithreading + under NT, thus at least pd0.35-test17 is needed under NT +- made a MSVC++ 6.0 project file + +v 0.4 (16th mai 2002): +- match now also takes lists of floats +- added objects: dist remote step + +v 0.3b (14th mai 2002): +- fixed a zero-division bug in pulse, thanks to Frank Barknecht + +v 0.3 (13th mai 2002): +- added objects: divmod, fifo, iso, lifo, pulse +- made divide, minus, multi & plus 'multi-inlet-ready' + +v 0.2 (7th mai 2002): +- added objects: average, chord, score + +v 0.1b (24th apr. 2002): +- added objects: divide, minus, multi, plus + +v 0.1a (15th apr. 2002, first public release): +- included objects: borax, ignore, match, pitch, speedlim \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..b403f69 --- /dev/null +++ b/LICENSE @@ -0,0 +1,346 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. + diff --git a/README b/README new file mode 100644 index 0000000..5ed187b --- /dev/null +++ b/README @@ -0,0 +1,38 @@ +maxlib - music analysis extensions library, version 1.1b +copyright (c) 2002 by Olaf Matthes + +maxlib is a library of non-tilde externals for pd (by Miller Puckette). + +The objects can be very useful to analyse any musical performance. Some +of the objects are 'borrowed' from Max (they are not ported but +rewritten for Pd - cheap immitations). +maxib has recently been extended by objects of more general use and some +which can be use for composition purposes. + +To compile maxlib on win32 (using VC++ 6.0) just type "nmake pd_nt" or use +the MS VC++ project provided. On Linux simply do "make pd_linux" and "make +install". +You have to modify the makefile to make it point to your m_ph.h !!! + +To use maxlib place the file maxlib.dll for win32 or maxlib.pd_linux +in a directory of your choise and start pd with '-lib path/to/maxlib' flag. + +On windows you can run install.bat to copy all files to the apropiate places. +This assumes that you have pd installed in c:\pd\ ! The maxlib directory will +then be c:\pd\externs\maxlib\ + + +This software is published under GPL terms, see file LICENSE. + +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. + +***************************************************************************** + +included objects: see http://www.akustische-kunst.org/puredata/maxlib/ + +Latest version can be found at: +http://www.akustische-kunst.org/puredata/maxlib/ + +Please report any bugs to olaf.matthes@gmx.de! diff --git a/help/automata.txt b/help/automata.txt new file mode 100644 index 0000000..afa5e9e --- /dev/null +++ b/help/automata.txt @@ -0,0 +1,178 @@ +[The following note originally appeared on the emusic-l mailing list. It is +reprinted here with the author's permission] + +From xrjdm@FARSIDE.GSFC.NASA.GOV Wed Nov 23 11:26:39 1994 +Date: Tue, 4 Oct 1994 15:09:23 -0500 +From: Joe McMahon +Reply to: Electronic Music Discussion List +To: Multiple recipients of list EMUSIC-L +Subject: Automata: the long-awaited summary + +Back in August, I think, I promised to post a quick intro to cellular +automata and how they can be used as a sound-generation tool. Since I'm +going to take a couple of different sources and sum them up with little or +no direct attribution, combined with my own opinions, I'll give everybody +my references *first* so they can delete the article and draw their own +conclusions if they so prefer. + +The primary reference that got me started on all this is one in the CMJ: +Vol 14, No. 4, Winter 1990: "Digital Synthesis of Self-modifying Waveforms +by Means of Cellular Automata" (Jacques Chareyon). Those who are already +familiar with automata may just skip to that article and forget about the +rest of this one. +Note: the article gives a mail address for M. Chareyon, but he did not +answer an inquiry about any available recordings using this technique in +1990. + +So. Anyone still here? Good. + +Cellular automata are a mathematical concept first introduced in the late +1940's. Generally speaking, a cellular automaton consists of a grid of +cells. Each cell may take on any of a number of values - binary automata +(cell on or cell off) are the most commonly studied. Each cell has a +neighborhood, defined more simply as other cells which influence its state. +The exact nature of this influence is defined by what are called transition +rules. The cellular automaton starts off with some cells in any of the +allowable states. for each "step" in the automaton's history, the +neighborhood of every cell is checked, and the state of the cell is +updated. All updates occur simultaneously. + +The transition rule must describe the resulting state of a cell for every +possible configuration of other cells in the neighborhood. For large +numbers of states, the amount of memory required to hold the transition +rule becomes increasingly large, Therefore, some automata use what is known +as a "totalistic" rule. These rules simply sum the values of the cells in +the neighborhood and then assign a result on this basis. The resulting +tables are far smaller. + +Many readers may already be familiar with John Horton Conway's game of +"Life". This is a two-dimensional binary automaton with a totalistic rule. +This makes for a very small rule set: + + i) If fewer than two filled cells (cells with value 1) surround a cell, + it becomes empty next generation. + ii) If more than three filled cells surround a cell, it becomes empty + next generation. +iii) If exactly three cells filled cells surround a cell, it becomes + filled on the next generation. + +This corresponds to a totalistic rule set with a total of 8(2-1)+1 or 9 +rules (one each for the sum values of 0 (no cells with a value) through 9 +(all cells with a value) ).If the transition rule were represented as a +non-totalistic one, the rule set would need 2**8 or 256 entries. There are +many interesting totalistic automata, so giving up detailed description of +every nuance of the transitions to save memory space isn't a big sacrifice. + +Interesting as two dimensional automata are, they really aren't terribly +useful for music making. There have been some experiments which have +attempted to use a two-dimensional automaton to generate MIDI events - +synthesis at the note level, using : + +Battista, T. and M. Giri, 1988. "Composizione Tramite Automi Cellulari." +Atti del VII Cooloquio di Informatica Musicale. Rome, Italy: Edizione Arti +Grafiche Ambrosini, pp. 181-182. + +Edgar, R. and J. Ryan, 1986. "LINA" Exhibition of the 1986 International +Computer Music Conference, San Francisco: Computer Music Association. + +I have not heard any of the music from these efforts, so I certainly can't +pass any judgement on them. For the purposes of this summary, we'll just +look at one-dimensional automata. These use a linear array of cells, with +the neighborhood generally being one or two cells on either side of each +cell. +(This is the type of automaton dealt with in M. Chareyon's article, which I +will be paraphrasing broadly hereafter). + +M. Chareyon's automata are wavetables. A digitized signal is stored as a +linear array of numbers in memory. A totalistic rule is used to determine a +lookup value which indexes into an array containing the resulting value; +this is saved into a second array. After the first array is completely +processed, the roles of the two are swapped and the process is repeated. + +The limiting factor in this process is the number of bits of resolution +being used to generate the sound. For a totalistic rule using a two-cell +neighborhood and 12-bit individual samples, we have 3*(2*12) = 12288 +entries in the rule table. At 2 bytes each, this is 24K of storage. If we +go to 16-bit sample resolution, we have 196608 entries at 2 bytes each for +a total of 393216 bytes, or 384K. + +The key point of M. Charyeon's method is the use of small neighborhoods +with large numbers of cellular states. Since the computation of the new +wavetable is all table lookup, very complex transition rules can be +precomputed and loaded into the tables, allowing the synthesis to +essentially be a fast sum-and-lookup loop to calculate each new wavesample. +>From the article, it appears that M. Chareyon was able to produce 2 or 3 +voices in realtime on a Mac II with a Digidesign Sound Accelerator board. +It seems that it would probably be possible to use an AV Mac to do it +without the board. + +This LASy (Linear Automaton Synthesis) method is closely related to the +Karplus-Strong plucked-string algorithm, in that a wavesample is run +through an algorithm which recirculates the samples to "self-modify" the +wave. In fact, a judicious choice of table entries allows one to very +simply simulate the K-S algoritm directly. + +So what are the sounds like? Some automata produce waveforms which quickly +"ramp-up" to complex spectra and then drop off quickly. Others move to a +steady state and then remain there. Yet others produce never-ending and +unpredictable waveforms, whose harmonic content is constantly changing. + +Obviously enough, the original wavesample can be obtained mathematically, +or by actual sampling and using LASy as a waveshaper. As M. Chareyon notes, +a quick estimate of the number of possible automata for a 2-neighbor +totalistic rule using a 256-entry wavetable with 12-bit entries is +(2**12)**256 * (2**12)**(3*2**12) or about 10**4500 possible automata. Of +course, many, many of these would not be suitable for music (e.g., the 4096 +automata in which all values go to one vlaue in one step, etc.); however, +the number of musically useful automata is still likely to be an immense +number. + +M. Chareyon provides a number of examples of ways to fill out the rule +tables and a number of hints on creating wave tables - generally speaking, +one can create a function which is used to compute the values to be placed +into the table and then fill it so it can simply be loaded and used by the +basic algorithm. His experience in using LASy is that he manages +approximately 50% of the time to produce sounds with the desired +characteristics, and that about 10% of the remaining time he gets +unexpected but useful results which can be used as starting points for +further exploration. + +Again, the important point is that the basic automaton uses wavesamples at +full resolution, calculating a new wavesample for each step of the +automaton; the next wavesample can be played while the new one is being +calculated. Because of the large number of states, mathematical tools for +the analysis of automata and the construction of automata with specifically +desired qualities require too much storage and compute time to make them +useful for LASy purposes. + +Again, much of this article is paraphrased from M. Chareyon's article; I +take no credit for any of the work in this note. I'm just summarizing. + +The following other articles were referenced by M. Chareyon's article: + +Burks, A., ed. 1970. Essays on Cellular Automata. Champaign/Urbana, IL: +University of Illinois Press. + +Chareyon, J. 1988a. "Sound Synthesis and Processing by Means of Linear +Cellular Automata." Proceedings of the 1988 Internation Computer Music +Conference. San Francisco: Computer Music Association. + +Chareyon, J. 1988b. "Wavetable come Automa Cellulare: una Nuova Tecnica di +Sintesi." Atti del VII Colloquio di Informatica Musicale, Rome, Italy: +Edizioni Arti Grafiche Ambrosini, pp. 174-177. + +Farmer, D., T. Toffoli, and S. Wolfram, eds. 1984. Cellular Automata. +North-Holland Physics Publishing. [One of the definitive works on cellular +automata - fairly heavy math, not a popular presentation - JM] + +Gardner, M. 1970. "The Fantastic Combinations of John Conway's New Solitare +Game 'Life'". Scientific American 223(4) 120-123. [A good introduction to +cellular automata, focusing on 'life' in specific. Useful intro if my +1-paragraph summary of automata was confusing :) - JM] + + --- Joe M. + +-- +"At the end of the hour, we'll have information on the sedatives used by +the artists,,," (MST3K) + diff --git a/help/examplescore.txt b/help/examplescore.txt new file mode 100644 index 0000000..78afd45 --- /dev/null +++ b/help/examplescore.txt @@ -0,0 +1,25 @@ +60 +61 +62 +63 +64 +65 +66 +67 +68 +69 +70 +71 +72 +71 +70 +69 +68 +67 +66 +65 +64 +63 +62 +61 +60 \ No newline at end of file diff --git a/help/help-arbran.pd b/help/help-arbran.pd new file mode 100644 index 0000000..9153bf5 --- /dev/null +++ b/help/help-arbran.pd @@ -0,0 +1,28 @@ +#N canvas 190 136 663 491 12; +#X obj 41 152 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X floatatom 41 249 5 0 0; +#N canvas 0 0 450 300 graph1 0; +#X array array1 6 float 1; +#A 0 1.1 2.67143 3.24285 3.1 4.38571 8.67143; +#X coords 0 10 5 0 200 140 1; +#X restore 347 71 graph; +#N canvas 0 0 450 300 graph2 0; +#X array array2 6 float 1; +#A 0 0.0229077 0.204366 0.486501 0.0632986 0.204028 0.025319; +#X coords 0 1 5 0 200 140 1; +#X restore 347 220 graph; +#X obj 41 202 arbran array1 array2; +#X text 39 21 arbran :: generates a random variable that conforms +to the piecewise probability density functions specified in two arrays +; +#X text 40 297 array1 has values between 0 and 10; +#X text 40 317 array2 between 0 and 1 !; +#X msg 99 152 pdfscale; +#X text 41 389 array1 stores the values and array2 the corresponding +probabilities (0 - 1) for each of that values \, use message 'pdfscale' +to check (and adjust) the probability values to correct settings (the +area below the curve has to be 1); +#X connect 0 0 4 0; +#X connect 4 0 1 0; +#X connect 8 0 4 0; diff --git a/help/help-average.pd b/help/help-average.pd new file mode 100644 index 0000000..6155716 --- /dev/null +++ b/help/help-average.pd @@ -0,0 +1,29 @@ +#N canvas 445 253 470 320 12; +#X floatatom 47 39 5 0 0; +#X floatatom 47 276 5 0 0; +#X floatatom 122 191 5 0 0; +#X obj 47 219 average 10; +#X text 177 191 number of items to average; +#X text 139 220 creation argument = number of items; +#X floatatom 122 254 5 0 0; +#X text 105 277 average of last N items; +#X text 125 11 average :: calculates the average of the; +#X text 214 30 last N items (floats); +#X text 176 255 tendency (up = 1 \, down = -1); +#X msg 100 60 reset; +#X text 152 61 forget everything; +#X msg 129 94 linear; +#X msg 147 118 geometric; +#X text 191 93 linear average (dafault); +#X text 230 119 geometric average; +#X msg 158 146 weight; +#X text 217 147 weighted average (giving last; +#X text 218 163 items higher weight); +#X connect 0 0 3 0; +#X connect 2 0 3 1; +#X connect 3 0 1 0; +#X connect 3 1 6 0; +#X connect 11 0 3 0; +#X connect 13 0 3 0; +#X connect 14 0 3 0; +#X connect 17 0 3 0; diff --git a/help/help-beat.pd b/help/help-beat.pd new file mode 100644 index 0000000..55f85ef --- /dev/null +++ b/help/help-beat.pd @@ -0,0 +1,66 @@ +#N canvas 294 98 628 562 12; +#X floatatom 20 503 8 0 0; +#X obj 20 66 notein; +#X obj 183 376 makenote 100 250; +#X floatatom 41 477 5 0 0; +#X text 43 13 beat :: beat tracker; +#X text 97 505 beats per minute; +#X msg 71 224 reset; +#X obj 183 219 tgl 20 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X msg 183 346 60; +#X msg 53 108 print; +#X obj 63 446 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -258699 +-1; +#X text 93 447 'on beat'; +#X text 96 479 milliseconds; +#X msg 303 336 400; +#X obj 319 299 + 0; +#X text 411 245 <-- adding some jitter; +#X obj 183 271 random 4; +#X obj 183 298 select 0 1 2 3; +#X text 211 218 <-- click here to play random rhythm; +#X obj 338 243 random 3; +#X obj 338 270 - 1; +#X obj 20 414 beat 4; +#X text 88 415 creation: beat ; +#X text 349 456 certain percentage in which; +#X text 350 472 the beats have to lie; +#X msg 262 337 200; +#X msg 222 336 100; +#X obj 183 245 metro 100; +#X text 106 108 print internal data (toggle on/off); +#X text 106 136 prints out: time between current and last event \, +the five best-fitting theories (with likelyhood in brackets) \, the +time of arrival of current event (R) and the expected time of arrival +(E) of the next event; +#X text 213 439 band percentage: creates a critical time band of a +; +#X connect 1 0 21 0; +#X connect 1 1 21 1; +#X connect 2 0 21 0; +#X connect 2 1 21 1; +#X connect 6 0 21 0; +#X connect 7 0 27 0; +#X connect 8 0 2 0; +#X connect 9 0 21 0; +#X connect 13 0 14 0; +#X connect 14 0 27 1; +#X connect 16 0 17 0; +#X connect 17 0 8 0; +#X connect 17 0 26 0; +#X connect 17 1 8 0; +#X connect 17 1 25 0; +#X connect 17 2 13 0; +#X connect 17 2 8 0; +#X connect 17 3 8 0; +#X connect 17 3 13 0; +#X connect 19 0 20 0; +#X connect 20 0 14 1; +#X connect 21 0 0 0; +#X connect 21 1 3 0; +#X connect 21 2 10 0; +#X connect 25 0 14 0; +#X connect 26 0 14 0; +#X connect 27 0 16 0; +#X connect 27 0 19 0; diff --git a/help/help-beta.pd b/help/help-beta.pd new file mode 100644 index 0000000..f4b9edf --- /dev/null +++ b/help/help-beta.pd @@ -0,0 +1,14 @@ +#N canvas 438 222 487 308 12; +#X obj 70 95 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X floatatom 70 192 5 0 0; +#X floatatom 139 94 5 0 0; +#X obj 70 140 beta 0.78 1.3; +#X text 192 95 a; +#X floatatom 209 116 5 0 0; +#X text 262 117 b; +#X text 39 21 beta :: beta distributed random numbers; +#X connect 0 0 3 0; +#X connect 2 0 3 1; +#X connect 3 0 1 0; +#X connect 5 0 3 2; diff --git a/help/help-bilex.pd b/help/help-bilex.pd new file mode 100644 index 0000000..4e9961f --- /dev/null +++ b/help/help-bilex.pd @@ -0,0 +1,12 @@ +#N canvas 370 195 485 306 12; +#X obj 70 95 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X floatatom 70 192 5 0 0; +#X floatatom 177 103 5 0 0; +#X text 230 105 lambda; +#X text 13 20 bilex :: bilinear exponetionally distributed random +numbers; +#X obj 70 140 bilex 1.5; +#X connect 0 0 5 0; +#X connect 2 0 5 1; +#X connect 5 0 1 0; diff --git a/help/help-borax.pd b/help/help-borax.pd new file mode 100644 index 0000000..a286a60 --- /dev/null +++ b/help/help-borax.pd @@ -0,0 +1,86 @@ +#N canvas 281 85 645 549 12; +#X obj 125 230 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X floatatom 125 298 6 0 0; +#X floatatom 50 451 5 0 0; +#X floatatom 26 502 5 0 0; +#X floatatom 63 425 5 0 0; +#X floatatom 38 476 5 0 0; +#X floatatom 100 349 6 0 0; +#X floatatom 75 399 5 0 0; +#X floatatom 112 323 5 0 0; +#X floatatom 87 374 5 0 0; +#X obj 26 269 borax 0 0 0 0; +#X text 103 452 number of voices currently playing; +#X text 120 422 pitch; +#X text 127 399 velocity; +#X obj 15 54 makenote 100 1500; +#X obj 336 67 metro 100; +#X obj 428 124 + 50; +#X obj 428 147 s time; +#X obj 403 43 r time; +#X obj 260 147 s pitch; +#X obj 15 17 r pitch; +#X obj 80 18 r velo; +#X msg 336 14 1; +#X msg 345 37 0; +#X obj 513 101 random 64; +#X obj 513 124 + 64; +#X obj 513 147 s velo; +#X obj 146 19 r duration; +#X obj 336 147 s duration; +#X obj 336 124 + 250; +#X text 91 477 voice allocation number - each note playing is assigned +a no; +#X obj 45 88 noteout 1; +#X obj 428 101 random 500; +#X obj 260 101 random 88; +#X obj 260 124 + 21; +#X text 120 200 borax :: analyse incoming midi notes; +#X text 363 13 <-- click to play random music; +#X obj 40 125 notein 1; +#X text 186 300 delta time value - time between note-ons; +#X text 160 350 duration value - time between note-on and note-off +; +#X text 79 502 note-on count; +#X text 141 374 duration count; +#X text 164 326 delta time count; +#X obj 336 101 random 1000; +#X text 153 228 <-- reset :: sets counters and clocks to zero and sends +; +#X text 258 243 note-off for all notes currently playing; +#X text 137 273 <--- zeroes only added to make the object larger; +#X connect 0 0 10 2; +#X connect 10 0 3 0; +#X connect 10 1 5 0; +#X connect 10 2 2 0; +#X connect 10 3 4 0; +#X connect 10 4 7 0; +#X connect 10 5 9 0; +#X connect 10 6 6 0; +#X connect 10 7 8 0; +#X connect 10 8 1 0; +#X connect 14 0 10 0; +#X connect 14 0 31 0; +#X connect 14 1 10 1; +#X connect 14 1 31 1; +#X connect 15 0 24 0; +#X connect 15 0 32 0; +#X connect 15 0 33 0; +#X connect 15 0 43 0; +#X connect 16 0 17 0; +#X connect 18 0 15 1; +#X connect 20 0 14 0; +#X connect 21 0 14 1; +#X connect 22 0 15 0; +#X connect 23 0 15 0; +#X connect 24 0 25 0; +#X connect 25 0 26 0; +#X connect 27 0 14 2; +#X connect 29 0 28 0; +#X connect 32 0 16 0; +#X connect 33 0 34 0; +#X connect 34 0 19 0; +#X connect 37 0 10 0; +#X connect 37 1 10 1; +#X connect 43 0 29 0; diff --git a/help/help-cauchy.pd b/help/help-cauchy.pd new file mode 100644 index 0000000..a7dd6f2 --- /dev/null +++ b/help/help-cauchy.pd @@ -0,0 +1,11 @@ +#N canvas 438 222 487 308 12; +#X obj 70 95 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X floatatom 70 192 5 0 0; +#X floatatom 185 103 5 0 0; +#X obj 70 140 cauchy 0.5; +#X text 238 104 alpha - governs spread; +#X text 39 21 cauchy :: Cauchy distributed random numbers; +#X connect 0 0 3 0; +#X connect 2 0 3 1; +#X connect 3 0 1 0; diff --git a/help/help-chord.pd b/help/help-chord.pd new file mode 100644 index 0000000..a509840 --- /dev/null +++ b/help/help-chord.pd @@ -0,0 +1,37 @@ +#N canvas 291 216 458 308 12; +#X floatatom 15 276 5 0 0; +#X symbolatom 44 212 48 0 0; +#X floatatom 74 149 5 0 0; +#X floatatom 131 149 5 0 0; +#X floatatom 189 149 5 0 0; +#X floatatom 248 149 5 0 0; +#X floatatom 59 182 5 0 0; +#X text 71 276 MIDI note number of bass note; +#X text 116 175 root position (0) \, 1st inversion (1); +#X text 115 188 or 2nd inversion (2); +#X floatatom 29 249 5 0 0; +#X text 84 251 class of bass note; +#X text 231 118 list of chord notes; +#X obj 15 51 notein; +#X obj 15 86 chord 59; +#X text 90 86 <-- notes higher than 59 get ignored; +#X text 15 9 chord :: tries to detect chords; +#X text 89 232 notes in chord : chord name; +#X text 89 26 written by Olaf Matthes ; +#X text 89 44 based on code by Rober Rowe; +#X obj 74 118 unpack f f f f f f; +#X floatatom 303 149 5 0 0; +#X floatatom 362 149 5 0 0; +#X connect 13 0 14 0; +#X connect 13 1 14 1; +#X connect 14 0 0 0; +#X connect 14 1 10 0; +#X connect 14 2 1 0; +#X connect 14 3 6 0; +#X connect 14 4 20 0; +#X connect 20 0 2 0; +#X connect 20 1 3 0; +#X connect 20 2 4 0; +#X connect 20 3 5 0; +#X connect 20 4 21 0; +#X connect 20 5 22 0; diff --git a/help/help-delta.pd b/help/help-delta.pd new file mode 100644 index 0000000..fa865e3 --- /dev/null +++ b/help/help-delta.pd @@ -0,0 +1,20 @@ +#N canvas 328 264 466 318 12; +#X floatatom 54 217 5 0 0; +#X floatatom 54 108 5 0 0; +#X msg 23 83 bang; +#X text 69 82 calculate and output result now; +#X obj 54 172 delta; +#X obj 54 133 * 3; +#X floatatom 127 218 5 0 0; +#X floatatom 127 109 5 0 0; +#X obj 127 134 * 3; +#X obj 127 173 delta 2; +#X text 53 259 use creation arguments to set order (1st or 2nd); +#X text 39 20 delta :: calculate 1st or 2nd order difference; +#X connect 1 0 5 0; +#X connect 2 0 4 0; +#X connect 4 0 0 0; +#X connect 5 0 4 0; +#X connect 7 0 8 0; +#X connect 8 0 9 0; +#X connect 9 0 6 0; diff --git a/help/help-dist.pd b/help/help-dist.pd new file mode 100644 index 0000000..608283f --- /dev/null +++ b/help/help-dist.pd @@ -0,0 +1,36 @@ +#N canvas 450 84 473 453 12; +#X text 33 10 dist :: send data to a list of receive objects; +#X obj 34 364 dist; +#X msg 85 127 connect bla; +#X msg 103 154 connect foo; +#X msg 131 209 disconnect bla; +#X msg 145 237 disconnect foo; +#X msg 158 295 clear; +#X obj 200 374 receive bla; +#X obj 306 374 receive foo; +#X obj 200 400 print bla; +#X obj 306 400 print foo; +#X floatatom 34 69 5 0 0; +#X msg 170 328 print; +#X msg 56 98 send anything 1 2 dog; +#X obj 34 397 d bla foo; +#X msg 122 180 connect dog cat; +#X msg 159 265 disconnect cat dog; +#X text 210 295 empty receiver list; +#X text 218 328 print list of receive names; +#X text 190 126 add 'bla' to list of receivers; +#X text 253 209 remove 'bla' from list; +#X text 238 99 send anything you want; +#X text 97 28 written by Olaf Matthes ; +#X connect 2 0 1 0; +#X connect 3 0 1 0; +#X connect 4 0 1 0; +#X connect 5 0 1 0; +#X connect 6 0 1 0; +#X connect 7 0 9 0; +#X connect 8 0 10 0; +#X connect 11 0 1 0; +#X connect 12 0 1 0; +#X connect 13 0 1 0; +#X connect 15 0 1 0; +#X connect 16 0 1 0; diff --git a/help/help-divide.pd b/help/help-divide.pd new file mode 100644 index 0000000..a0aea04 --- /dev/null +++ b/help/help-divide.pd @@ -0,0 +1,18 @@ +#N canvas 328 264 466 318 12; +#X floatatom 54 217 5 0 0; +#X floatatom 54 132 5 0 0; +#X floatatom 108 132 5 0 0; +#X text 39 20 divide :: like '/' but calculates result; +#X text 133 204 use creation arguments to set initial; +#X text 133 220 values for inlets; +#X msg 7 104 bang; +#X text 53 103 calculate and output result now; +#X obj 54 172 divide 8 6 4; +#X text 118 58 allows for up to 32 inlets; +#X floatatom 164 132 5 0 0; +#X text 120 38 when leftmost or second inlet is changed; +#X connect 1 0 8 0; +#X connect 2 0 8 1; +#X connect 6 0 8 0; +#X connect 8 0 0 0; +#X connect 10 0 8 2; diff --git a/help/help-divmod.pd b/help/help-divmod.pd new file mode 100644 index 0000000..5e0018b --- /dev/null +++ b/help/help-divmod.pd @@ -0,0 +1,20 @@ +#N canvas 328 264 464 316 12; +#X floatatom 54 239 5 0 0; +#X floatatom 54 127 5 0 0; +#X floatatom 129 127 5 0 0; +#X obj 54 172 divmod 8 6; +#X text 146 170 use creation arguments to set initial; +#X text 146 186 values for inlets; +#X msg 23 83 bang; +#X text 69 82 calculate and output result now; +#X floatatom 129 219 5 0 0; +#X text 182 222 modulo; +#X text 106 242 result of division; +#X text 186 127 takes int's only!; +#X text 12 19 divmod :: calculate division and modulo; +#X text 92 35 outputs results even when right inlet changes; +#X connect 1 0 3 0; +#X connect 2 0 3 1; +#X connect 3 0 0 0; +#X connect 3 1 8 0; +#X connect 6 0 3 0; diff --git a/help/help-edge.pd b/help/help-edge.pd new file mode 100644 index 0000000..ce85dfb --- /dev/null +++ b/help/help-edge.pd @@ -0,0 +1,17 @@ +#N canvas 258 208 452 302 12; +#X obj 100 154 edge; +#X obj 100 215 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 127 186 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X text 156 186 falling edge detected; +#X text 128 216 rising edge detected; +#X text 31 16 edge :: detect rising or falling edge in floats; +#X floatatom 126 111 5 0 0; +#X obj 100 79 tgl 20 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X text 94 35 written by ; +#X connect 0 0 1 0; +#X connect 0 1 2 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; diff --git a/help/help-expo.pd b/help/help-expo.pd new file mode 100644 index 0000000..922cf4c --- /dev/null +++ b/help/help-expo.pd @@ -0,0 +1,12 @@ +#N canvas 370 195 454 304 12; +#X obj 70 95 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X floatatom 70 192 5 0 0; +#X text 13 20 expo :: exponetionally distributed random numbers +; +#X obj 70 140 expo 0.5; +#X floatatom 169 101 5 0 0; +#X text 222 103 lambda; +#X connect 0 0 3 0; +#X connect 3 0 1 0; +#X connect 4 0 3 1; diff --git a/help/help-fifo.pd b/help/help-fifo.pd new file mode 100644 index 0000000..581a7b7 --- /dev/null +++ b/help/help-fifo.pd @@ -0,0 +1,13 @@ +#N canvas 356 196 452 302 12; +#X obj 38 176 fifo 10; +#X floatatom 38 231 5 0 0; +#X floatatom 61 132 5 0 0; +#X msg 38 98 bang; +#X text 83 98 hit to get next number; +#X text 111 176 fifo ; +#X text 92 233 output of fifo; +#X text 42 14 fifo :: first in first out buffer for floats; +#X text 105 32 written for Max by St. Rainstick; +#X connect 0 0 1 0; +#X connect 2 0 0 0; +#X connect 3 0 0 0; diff --git a/help/help-gauss.pd b/help/help-gauss.pd new file mode 100644 index 0000000..c4dce4b --- /dev/null +++ b/help/help-gauss.pd @@ -0,0 +1,14 @@ +#N canvas 438 222 487 308 12; +#X obj 70 95 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X floatatom 70 192 5 0 0; +#X floatatom 123 91 5 0 0; +#X obj 70 140 gauss 1 0; +#X floatatom 177 113 5 0 0; +#X text 39 21 gauss :: Gauss distributed random numbers; +#X text 176 92 sigma - standard deviation; +#X text 230 114 mu - mean; +#X connect 0 0 3 0; +#X connect 2 0 3 1; +#X connect 3 0 1 0; +#X connect 4 0 3 2; diff --git a/help/help-gestalt.pd b/help/help-gestalt.pd new file mode 100644 index 0000000..acf09cc --- /dev/null +++ b/help/help-gestalt.pd @@ -0,0 +1,51 @@ +#N canvas 323 155 599 396 12; +#X text 137 8 gestalt :: gestalt detection for monophonic melodies +; +#X floatatom 58 332 5 0 0; +#X obj 58 176 makenote 100 100; +#X obj 58 53 tgl 20 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X obj 58 76 metro 100; +#X obj 58 100 random 24; +#X obj 58 124 + 60; +#X obj 58 278 gestalt 100; +#X obj 142 100 random 24; +#X obj 142 124 select 0; +#X msg 201 146 100; +#X msg 142 146 400; +#X floatatom 68 154 5 0 0; +#X text 160 282 CREATION ARGUMENT: reference time; +#X obj 219 220 beat; +#X floatatom 232 245 5 0 0; +#X text 87 54 click to play random melody; +#X text 112 350 one could use 'tilt' to detect abrupt changes that +; +#X text 112 367 indicate the start of a new segment; +#X text 111 332 the higher the output the more the gestalt changes +\;; +#X text 161 298 i.e. time in ms expected to be the duration of the +; +#X text 161 314 shortest note (also setable via rightmost inlet); +#X text 281 200 use 'beat' (maxlib) to get the real; +#X text 281 217 reference time from input \, especially; +#X text 282 234 when using; +#X obj 372 235 notein; +#X text 225 26 written by ; +#X connect 2 0 7 0; +#X connect 2 0 14 0; +#X connect 2 1 7 1; +#X connect 2 1 14 1; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 4 0 8 0; +#X connect 5 0 6 0; +#X connect 6 0 2 0; +#X connect 6 0 12 0; +#X connect 7 0 1 0; +#X connect 8 0 9 0; +#X connect 9 0 11 0; +#X connect 9 1 10 0; +#X connect 10 0 2 2; +#X connect 11 0 2 2; +#X connect 14 1 15 0; +#X connect 14 1 7 2; diff --git a/help/help-history.pd b/help/help-history.pd new file mode 100644 index 0000000..acd1bc8 --- /dev/null +++ b/help/help-history.pd @@ -0,0 +1,30 @@ +#N canvas 445 253 480 330 12; +#X floatatom 32 49 5 0 0; +#X floatatom 32 286 5 0 0; +#X floatatom 115 201 5 0 0; +#X floatatom 115 264 5 0 0; +#X text 169 265 tendency (up = 1 \, down = -1); +#X msg 85 70 reset; +#X text 137 71 forget everything; +#X msg 114 104 linear; +#X msg 132 128 geometric; +#X text 176 103 linear average (dafault); +#X text 215 129 geometric average; +#X msg 143 156 weight; +#X text 203 173 items higher weight); +#X text 124 6 history :: calculates the average of the; +#X text 212 23 items (floats) that came in; +#X obj 32 229 history 250; +#X text 202 157 weighted average (giving newer; +#X text 130 229 creation argument = ms to look back; +#X text 171 201 milliseconds to look back; +#X text 214 40 within the last N milliseconds; +#X text 90 287 average over last N milliseconds; +#X connect 0 0 15 0; +#X connect 2 0 15 1; +#X connect 5 0 15 0; +#X connect 7 0 15 0; +#X connect 8 0 15 0; +#X connect 11 0 15 0; +#X connect 15 0 1 0; +#X connect 15 1 3 0; diff --git a/help/help-ignore.pd b/help/help-ignore.pd new file mode 100644 index 0000000..fc6314a --- /dev/null +++ b/help/help-ignore.pd @@ -0,0 +1,15 @@ +#N canvas 445 253 464 314 12; +#X floatatom 47 107 5 0 0; +#X floatatom 47 225 5 0 0; +#X text 122 197 creation argument = time in ms; +#X floatatom 122 136 5 0 0; +#X obj 47 167 ignore 500; +#X text 177 136 time in ms a value has to; +#X text 178 152 be present in order to get through; +#X text 75 24 ignore :: lets information through; +#X text 154 41 only when it was presente; +#X text 155 59 at input longer than N ms; +#X text 73 258 note: input gets delayed by N milliseconds; +#X connect 0 0 4 0; +#X connect 3 0 4 1; +#X connect 4 0 1 0; diff --git a/help/help-iso.pd b/help/help-iso.pd new file mode 100644 index 0000000..79559ab --- /dev/null +++ b/help/help-iso.pd @@ -0,0 +1,54 @@ +#N canvas 438 64 464 535 12; +#X obj 16 407 iso; +#X floatatom 16 434 5 0 0; +#X floatatom 69 434 10 0 0; +#X msg 72 156 bang; +#X msg 96 207 stop; +#X msg 106 233 pause; +#X msg 117 259 resume; +#X msg 128 285 loop; +#X msg 139 311 unloop; +#X text 214 100 list of pitches; +#X text 273 129 list of attacks [ms]; +#X text 170 284 turn loopin back on; +#X text 198 309 turn looping off; +#X obj 16 460 makenote 0 100; +#X obj 16 487 noteout; +#X text 112 156 start from beginning; +#X text 149 183 start at item specyfied; +#X text 281 145 (inter-note onsets); +#X text 88 45 ported to Pd by Olaf Matthes; +#X text 216 337 global time multiplier; +#X text 163 435 duration in ms; +#X msg 152 337 hook 2; +#X msg 161 368 duty 1.5; +#X text 234 369 duration multiplier; +#X obj 16 69 loadbang; +#X msg 82 182 start 4; +#X text 251 350 (speed adjustment); +#X text 237 389 duty < 1 - staccato; +#X text 237 404 duty > 1 - legato; +#X text 169 198 (item count starts with 0); +#X text 88 26 written for Max by Charlie Baker; +#X text 31 6 iso :: queues up lists of pitches and attack points; +#X msg 16 100 60 61 62 66 67 68 69 70; +#X msg 35 128 240 10 500 375 15 15 375 500; +#X connect 0 0 1 0; +#X connect 0 1 2 0; +#X connect 1 0 13 0; +#X connect 2 0 13 1; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 0 0; +#X connect 6 0 0 0; +#X connect 7 0 0 0; +#X connect 8 0 0 0; +#X connect 13 0 14 0; +#X connect 13 1 14 1; +#X connect 21 0 0 0; +#X connect 22 0 0 0; +#X connect 24 0 32 0; +#X connect 24 0 33 0; +#X connect 25 0 0 0; +#X connect 32 0 0 0; +#X connect 33 0 0 1; diff --git a/help/help-lifo.pd b/help/help-lifo.pd new file mode 100644 index 0000000..c5ec758 --- /dev/null +++ b/help/help-lifo.pd @@ -0,0 +1,16 @@ +#N canvas 356 196 454 304 12; +#X obj 38 176 lifo 10; +#X floatatom 38 231 5 0 0; +#X floatatom 61 110 5 0 0; +#X msg 38 76 bang; +#X text 83 76 hit to get next number; +#X text 111 176 lifo ; +#X text 42 14 lifo :: last in first out buffer for floats; +#X text 108 33 written for Max by St. Rainstick; +#X msg 76 140 clear; +#X text 127 139 clear buffer; +#X text 92 233 output of buffer; +#X connect 0 0 1 0; +#X connect 2 0 0 0; +#X connect 3 0 0 0; +#X connect 8 0 0 0; diff --git a/help/help-limit.pd b/help/help-limit.pd new file mode 100644 index 0000000..4ee74da --- /dev/null +++ b/help/help-limit.pd @@ -0,0 +1,25 @@ +#N canvas 328 32 558 365 12; +#X floatatom 27 277 8 0 0; +#X floatatom 27 73 5 0 0; +#X text 215 46 written by ; +#X floatatom 54 131 5 0 0; +#X floatatom 82 152 5 0 0; +#X floatatom 110 173 5 0 0; +#X text 84 71 input value; +#X text 57 104 creation arguments can be changed dynamically:; +#X obj 27 249 limit 0 9 5; +#X text 35 316 creation arguments:; +#X text 170 172 0 = limit \, others: compression ratio; +#X text 35 340 limit ; +#X text 324 195 values between 0 and 1; +#X text 325 213 result in expansion !; +#X text 106 278 limited / compressed output value; +#X text 141 11 limit :: limits input to lie between boundaries; +#X text 213 27 allows for compression / expansion; +#X text 114 129 lower boundary; +#X text 144 151 upper boundary; +#X connect 1 0 8 0; +#X connect 3 0 8 1; +#X connect 4 0 8 2; +#X connect 5 0 8 3; +#X connect 8 0 0 0; diff --git a/help/help-linear.pd b/help/help-linear.pd new file mode 100644 index 0000000..adcf043 --- /dev/null +++ b/help/help-linear.pd @@ -0,0 +1,8 @@ +#N canvas 206 71 452 302 12; +#X obj 70 140 linear; +#X obj 70 95 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X floatatom 70 192 5 0 0; +#X text 23 20 linear :: linearly distributed random numbers; +#X connect 0 0 2 0; +#X connect 1 0 0 0; diff --git a/help/help-listfunnel.pd b/help/help-listfunnel.pd new file mode 100644 index 0000000..2d309a8 --- /dev/null +++ b/help/help-listfunnel.pd @@ -0,0 +1,21 @@ +#N canvas 280 185 452 302 12; +#X obj 47 160 listfunnel; +#X floatatom 47 89 5 0 0; +#X obj 47 219 unpack f f; +#X floatatom 47 244 5 0 0; +#X floatatom 122 246 5 0 0; +#X obj 61 194 print listfunnel; +#X msg 73 114 17.3 23 147 11; +#X text 37 23 listfunnel :: send values out as a list with; +#X text 149 38 source index; +#X text 149 55 based on code found on the web; +#X msg 210 113 99 \$1 12; +#X floatatom 210 86 5 0 0; +#X connect 0 0 2 0; +#X connect 0 0 5 0; +#X connect 1 0 0 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 6 0 0 0; +#X connect 10 0 0 0; +#X connect 11 0 10 0; diff --git a/help/help-match.pd b/help/help-match.pd new file mode 100644 index 0000000..8d2fbd7 --- /dev/null +++ b/help/help-match.pd @@ -0,0 +1,68 @@ +#N canvas 90 142 874 407 12; +#X obj 50 350 bng 24 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X msg 148 212 reset; +#X obj 50 95 random 5; +#X msg 50 5 0; +#X msg 65 32 1; +#X obj 50 65 metro 100; +#X text 203 212 reset internal data storage; +#X text 182 26 input values matches the creation; +#X text 183 42 arguments; +#X text 185 82 this can be changed in the sources !; +#X text 83 351 <-- 'bang' when input matches arguments; +#X obj 62 122 hdl 20 1 0 5 empty empty empty 0 -6 0 8 -262144 -1 -1 +0; +#X floatatom 50 154 5 0 0; +#X text 228 229 -> forget all old values; +#X obj 50 243 match 3 4; +#X floatatom 81 325 5 0 0; +#X floatatom 156 324 5 0 0; +#X obj 81 294 unpack f f; +#X text 111 11 match :: outputs a list when a list of; +#X msg 93 178 1 3 4 7; +#X msg 160 178 1 2 4 5; +#X text 230 179 send a list of floats; +#X symbolatom 688 312 10 0 0; +#X symbolatom 616 336 10 0 0; +#X symbolatom 581 356 10 0 0; +#X obj 540 349 bng 24 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 540 244 match dog bytes 2 cats; +#X msg 553 186 dog bytes 2 cats; +#X msg 564 214 cat bytes 2 dogs; +#X text 384 114 same works for symbols and mixtures of floats and symbols: +; +#X obj 581 285 unpack s s f s; +#X floatatom 635 313 5 0 0; +#X text 89 271 sends out the list when a match is found; +#X msg 459 151 dog; +#X msg 494 143 cats; +#X msg 519 170 2; +#X msg 471 195 bytes; +#X text 183 68 a maximum of 16 arguments is allowed; +#X connect 1 0 14 0; +#X connect 2 0 12 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 2 0; +#X connect 11 0 12 0; +#X connect 12 0 14 0; +#X connect 14 0 0 0; +#X connect 14 0 17 0; +#X connect 17 0 15 0; +#X connect 17 1 16 0; +#X connect 19 0 14 0; +#X connect 20 0 14 0; +#X connect 26 0 25 0; +#X connect 26 0 30 0; +#X connect 27 0 26 0; +#X connect 28 0 26 0; +#X connect 30 0 24 0; +#X connect 30 1 23 0; +#X connect 30 2 31 0; +#X connect 30 3 22 0; +#X connect 33 0 26 0; +#X connect 34 0 26 0; +#X connect 35 0 26 0; +#X connect 36 0 26 0; diff --git a/help/help-maxlib.pd b/help/help-maxlib.pd new file mode 100644 index 0000000..663c605 --- /dev/null +++ b/help/help-maxlib.pd @@ -0,0 +1,73 @@ +#N canvas 70 3 889 647 12; +#X obj 290 277 average; +#X obj 19 171 beat; +#X obj 19 196 borax; +#X obj 19 146 chord; +#X obj 472 491 dist; +#X obj 290 172 divide; +#X obj 290 146 divmod; +#X obj 606 171 fifo; +#X obj 290 303 history; +#X obj 17 496 ignore; +#X obj 17 470 iso; +#X obj 605 145 lifo; +#X obj 290 329 match; +#X obj 290 197 minus; +#X obj 609 261 mlife; +#X obj 290 224 multi; +#X obj 472 516 netdist; +#X obj 19 272 pitch; +#X obj 290 251 plus; +#X obj 17 418 pulse; +#X obj 472 542 remote; +#X obj 19 221 rhythm; +#X obj 19 246 score array01; +#X obj 17 444 speedlim; +#X obj 17 522 step; +#X obj 609 236 subst; +#X text 30 27 maxlib 0.8 :: Music Analysis eXtensions LIBrary; +#X text 140 44 written by Olaf Matthes ; +#X text 139 61 download at http://www.akustische-kunst.de/puredata/maxlib +; +#X text 72 146 chord detection; +#X text 69 171 beat tracking; +#X text 78 222 beat detection; +#X text 73 197 music analysis; +#X text 136 246 score following; +#X text 73 272 pitch information; +#X text 20 115 MUSIC / MIDI ANALYSIS; +#X text 290 110 MATH; +#X text 357 147 calculate / and %; +#X text 355 172 / for several inputs; +#X text 349 252 + for several inputs; +#X text 349 224 * for several inputs; +#X text 353 198 - for several inputs; +#X text 361 276 average of last N values; +#X text 362 302 average over last N seconds; +#X text 345 329 match input to list of numbers; +#X text 17 392 TIME; +#X text 94 445 lets input through every N milliseconds; +#X text 56 472 play sequence of MIDI notes; +#X text 78 497 ignore too fast changing input; +#X text 469 459 CONTROL; +#X text 520 490 send to list of receive objects; +#X text 541 514 same for netreceive; +#X text 531 541 send to one receive object; +#X text 604 118 BUFFER; +#X text 650 145 last in first out; +#X text 653 171 first in first out; +#X text 64 524 a line object that steps; +#X text 606 204 OTHER / EXPERIMENTAL; +#X text 666 235 self-similar substitution; +#X text 665 261 cellular automaton; +#X obj 290 355 scale; +#X text 344 356 scale input to outpur range; +#X text 72 418 a 'better' metro; +#X obj 17 548 history; +#X obj 17 574 velocity; +#X text 86 548 average over last N milliseconds; +#X text 93 574 velocity of input in digits per second; +#X obj 472 569 netrec; +#X text 531 570 netreceive with extra info about sender; +#X obj 290 381 delta; +#X text 344 381 calculate 1st or 2nd order difference; diff --git a/help/help-minus.pd b/help/help-minus.pd new file mode 100644 index 0000000..64e45f3 --- /dev/null +++ b/help/help-minus.pd @@ -0,0 +1,17 @@ +#N canvas 328 264 464 316 12; +#X floatatom 54 217 5 0 0; +#X floatatom 54 127 5 0 0; +#X floatatom 107 127 5 0 0; +#X text 39 20 minus :: like '-' but calculates result; +#X text 133 204 use creation arguments to set initial; +#X text 133 220 values for inlets; +#X msg 23 83 bang; +#X text 69 82 calculate and output result now; +#X obj 54 172 minus 8 6 4; +#X floatatom 161 127 5 0 0; +#X text 120 38 when leftmost or second inlet is changed; +#X connect 1 0 8 0; +#X connect 2 0 8 1; +#X connect 6 0 8 0; +#X connect 8 0 0 0; +#X connect 9 0 8 2; diff --git a/help/help-mlife.pd b/help/help-mlife.pd new file mode 100644 index 0000000..d12e1fc --- /dev/null +++ b/help/help-mlife.pd @@ -0,0 +1,56 @@ +#N canvas 309 47 454 459 12; +#X floatatom 23 424 5 0 0; +#X floatatom 39 397 5 0 0; +#X floatatom 76 424 5 0 0; +#X floatatom 93 397 5 0 0; +#X floatatom 129 424 5 0 0; +#X floatatom 147 397 5 0 0; +#X floatatom 183 425 5 0 0; +#X floatatom 200 398 5 0 0; +#X msg 22 33 bang; +#X msg 69 123 randfill; +#X msg 84 150 fill 0; +#X msg 100 177 lo 2; +#X msg 108 204 hi 3; +#X msg 120 231 nset 3; +#X msg 161 312 display; +#X text 178 233 set neighbourhood; +#X text 151 205 set high; +#X text 146 176 set low; +#X text 151 150 fill cells with 0; +#X text 145 123 fill cells with random value; +#X text 226 312 display state of cells; +#X msg 35 72 1; +#X text 63 33 calculate next generation and output; +#X text 64 50 bangs on every cell that is alife; +#X text 68 72 calculate next generation and output; +#X text 68 89 1 if cell is alife \, 0 if dead; +#X text 227 329 in Pd console window; +#X text 142 355 mlife ; +#X text 189 370 ; +#X text 279 395 closed universe if; +#X text 279 409 = 1; +#X msg 134 258 randseed 4; +#X text 225 258 seed array with random no.; +#X text 225 284 seed array with a number; +#X msg 149 285 seed 1 4; +#X obj 23 356 mlife 8 1 8 0; +#X text 44 5 mlife :: a cellular automata object; +#X connect 8 0 35 0; +#X connect 9 0 35 0; +#X connect 10 0 35 0; +#X connect 11 0 35 0; +#X connect 12 0 35 0; +#X connect 13 0 35 0; +#X connect 14 0 35 0; +#X connect 21 0 35 0; +#X connect 31 0 35 0; +#X connect 34 0 35 0; +#X connect 35 0 0 0; +#X connect 35 1 1 0; +#X connect 35 2 2 0; +#X connect 35 3 3 0; +#X connect 35 4 4 0; +#X connect 35 5 5 0; +#X connect 35 6 6 0; +#X connect 35 7 7 0; diff --git a/help/help-multi.pd b/help/help-multi.pd new file mode 100644 index 0000000..86e6a5c --- /dev/null +++ b/help/help-multi.pd @@ -0,0 +1,17 @@ +#N canvas 328 264 464 316 12; +#X floatatom 54 217 5 0 0; +#X floatatom 54 127 5 0 0; +#X floatatom 108 128 5 0 0; +#X text 39 20 multi :: like '*' but calculates result; +#X text 133 204 use creation arguments to set initial; +#X text 133 220 values for inlets; +#X msg 23 83 bang; +#X text 69 82 calculate and output result now; +#X obj 54 172 multi 8 6 2; +#X floatatom 163 129 5 0 0; +#X text 120 38 when leftmost or second inlet is changed; +#X connect 1 0 8 0; +#X connect 2 0 8 1; +#X connect 6 0 8 0; +#X connect 8 0 0 0; +#X connect 9 0 8 2; diff --git a/help/help-netclient.pd b/help/help-netclient.pd new file mode 100644 index 0000000..46e5b52 --- /dev/null +++ b/help/help-netclient.pd @@ -0,0 +1,51 @@ +#N canvas 246 114 752 474 12; +#X floatatom 49 333 5 0 0; +#X floatatom 87 298 5 0 0; +#X symbolatom 164 251 10 0 0; +#X text 102 332 received data; +#X text 140 298 number of connections; +#X msg 49 54 print; +#X floatatom 125 272 5 0 0; +#X text 183 276 socket number; +#X msg 103 179 broadcast hallo world!; +#X text 288 179 send to all clients; +#X text 143 49 written by Olaf Matthes ; +#X obj 49 223 netserver 3000; +#X text 137 120 send message to client no. 1; +#X text 256 251 client's IP address; +#X obj 477 189 netclient; +#X msg 498 116 connect localhost 3000; +#X msg 511 143 disconnect; +#X msg 477 84 send 23; +#X floatatom 544 218 5 0 0; +#X msg 83 91 send 380 17.3; +#X floatatom 477 296 5 0 0; +#X obj 600 281 print anything; +#X obj 538 309 print list; +#X obj 477 245 route float list; +#X msg 98 142 client 1 23; +#X text 204 91 "send "; +#X text 110 70 send message on specified socket; +#X text 200 143 "client "; +#X text 48 379 This example demonstrates how to set up a client/server +connection. Data sent by the client get's received and displayed by +the server imediately. Or just try it the other way round...; +#X text 38 15 netclient :: simple client that connects to netserver +or; +#X text 142 32 to pd's native netreceive object; +#X connect 5 0 11 0; +#X connect 8 0 11 0; +#X connect 11 0 0 0; +#X connect 11 1 1 0; +#X connect 11 2 6 0; +#X connect 11 3 2 0; +#X connect 14 0 23 0; +#X connect 14 1 18 0; +#X connect 15 0 14 0; +#X connect 16 0 14 0; +#X connect 17 0 14 0; +#X connect 19 0 11 0; +#X connect 23 0 20 0; +#X connect 23 1 22 0; +#X connect 23 2 21 0; +#X connect 24 0 11 0; diff --git a/help/help-netdist.pd b/help/help-netdist.pd new file mode 100644 index 0000000..84cd2e2 --- /dev/null +++ b/help/help-netdist.pd @@ -0,0 +1,37 @@ +#N canvas 374 142 458 370 12; +#X obj 23 299 netdist; +#X obj 275 249 netreceive 3000; +#X floatatom 275 275 5 0 0; +#X floatatom 390 275 5 0 0; +#X msg 23 64 connect localhost 3000; +#X floatatom 276 328 5 0 0; +#X floatatom 391 328 5 0 0; +#X obj 276 302 netreceive 3001; +#X msg 67 120 disconnect localhost 3000; +#X msg 42 93 connect localhost 3001; +#X msg 88 147 disconnect localhost 3001; +#X msg 102 177 print; +#X msg 113 203 clear; +#X floatatom 23 326 5 0 0; +#X msg 120 232 send 23; +#X msg 146 259 send 17.3; +#X text 151 178 print list of connections; +#X text 164 202 disconnect all; +#X text 189 232 send values; +#X text 213 64 add connection to list; +#X text 278 119 remove connection; +#X text 33 8 netdist :: distribute data to several netreceive; +#X text 122 24 written by Olaf Matthes; +#X connect 0 0 13 0; +#X connect 1 0 2 0; +#X connect 1 1 3 0; +#X connect 4 0 0 0; +#X connect 7 0 5 0; +#X connect 7 1 6 0; +#X connect 8 0 0 0; +#X connect 9 0 0 0; +#X connect 10 0 0 0; +#X connect 11 0 0 0; +#X connect 12 0 0 0; +#X connect 14 0 0 0; +#X connect 15 0 0 0; diff --git a/help/help-netrec.pd b/help/help-netrec.pd new file mode 100644 index 0000000..80be695 --- /dev/null +++ b/help/help-netrec.pd @@ -0,0 +1,34 @@ +#N canvas 315 121 600 364 12; +#X obj 49 189 netrec 3000; +#X obj 57 130 netsend; +#X msg 57 18 connect localhost 3000; +#X msg 78 44 disconnect localhost 3000; +#X floatatom 49 297 5 0 0; +#X floatatom 76 270 5 0 0; +#X floatatom 93 73 5 0 0; +#X msg 93 99 send \$1; +#X symbolatom 132 217 10 0 0; +#X text 224 217 IP address; +#X text 100 298 received data; +#X text 129 270 number of connections; +#X obj 295 128 netsend; +#X msg 295 16 connect localhost 3000; +#X msg 316 42 disconnect localhost 3000; +#X floatatom 331 71 5 0 0; +#X msg 331 97 send \$1; +#X msg 49 162 print; +#X floatatom 104 243 5 0 0; +#X text 162 247 socket number; +#X connect 0 0 4 0; +#X connect 0 1 5 0; +#X connect 0 2 18 0; +#X connect 0 3 8 0; +#X connect 2 0 1 0; +#X connect 3 0 1 0; +#X connect 6 0 7 0; +#X connect 7 0 1 0; +#X connect 13 0 12 0; +#X connect 14 0 12 0; +#X connect 15 0 16 0; +#X connect 16 0 12 0; +#X connect 17 0 0 0; diff --git a/help/help-netserver.pd b/help/help-netserver.pd new file mode 100644 index 0000000..a849bd5 --- /dev/null +++ b/help/help-netserver.pd @@ -0,0 +1,50 @@ +#N canvas 246 114 752 474 12; +#X floatatom 49 333 5 0 0; +#X floatatom 87 298 5 0 0; +#X symbolatom 164 251 10 0 0; +#X text 102 332 received data; +#X text 140 298 number of connections; +#X msg 49 54 print; +#X floatatom 125 272 5 0 0; +#X text 183 276 socket number; +#X msg 103 179 broadcast hallo world!; +#X text 288 179 send to all clients; +#X text 144 33 written by Olaf Matthes ; +#X obj 49 223 netserver 3000; +#X text 137 120 send message to client no. 1; +#X text 256 251 client's IP address; +#X obj 477 189 netclient; +#X msg 498 116 connect localhost 3000; +#X msg 511 143 disconnect; +#X msg 477 84 send 23; +#X floatatom 544 218 5 0 0; +#X msg 83 91 send 380 17.3; +#X floatatom 477 296 5 0 0; +#X obj 600 281 print anything; +#X obj 538 309 print list; +#X obj 477 245 route float list; +#X msg 98 142 client 1 23; +#X text 204 91 "send "; +#X text 110 70 send message on specified socket; +#X text 200 143 "client "; +#X text 48 379 This example demonstrates how to set up a client/server +connection. Data sent by the client get's received and displayed by +the server imediately. Or just try it the other way round...; +#X text 38 15 netclient :: simple client that connects to netserver +; +#X connect 5 0 11 0; +#X connect 8 0 11 0; +#X connect 11 0 0 0; +#X connect 11 1 1 0; +#X connect 11 2 6 0; +#X connect 11 3 2 0; +#X connect 14 0 23 0; +#X connect 14 1 18 0; +#X connect 15 0 14 0; +#X connect 16 0 14 0; +#X connect 17 0 14 0; +#X connect 19 0 11 0; +#X connect 23 0 20 0; +#X connect 23 1 22 0; +#X connect 23 2 21 0; +#X connect 24 0 11 0; diff --git a/help/help-nroute.pd b/help/help-nroute.pd new file mode 100644 index 0000000..0831363 --- /dev/null +++ b/help/help-nroute.pd @@ -0,0 +1,37 @@ +#N canvas 252 37 630 380 12; +#X floatatom 116 199 5 0 0; +#X obj 41 290 print matched; +#X obj 116 256 print failed; +#X msg 78 151 8; +#X obj 41 226 nroute 8 2; +#X msg 41 77 0 8 15; +#X msg 56 105 17 3 45; +#X msg 116 153 3; +#X text 170 197 position to match; +#X floatatom 427 204 5 0 0; +#X obj 336 293 print matched; +#X obj 427 259 print failed; +#X obj 336 229 nroute fly 2; +#X msg 381 178 go; +#X msg 417 178 walk; +#X msg 336 80 swifts fly high; +#X msg 351 108 dogs walk slow; +#X msg 363 141 please go go; +#X text 153 152 what to match; +#X text 54 8 nroute :: route if Nth argument is matched; +#X text 135 24 written by Olaf Matthes ; +#X connect 0 0 4 2; +#X connect 3 0 4 1; +#X connect 4 0 1 0; +#X connect 4 1 2 0; +#X connect 5 0 4 0; +#X connect 6 0 4 0; +#X connect 7 0 4 1; +#X connect 9 0 12 2; +#X connect 12 0 10 0; +#X connect 12 1 11 0; +#X connect 13 0 12 1; +#X connect 14 0 12 1; +#X connect 15 0 12 0; +#X connect 16 0 12 0; +#X connect 17 0 12 0; diff --git a/help/help-pitch.pd b/help/help-pitch.pd new file mode 100644 index 0000000..781fd4c --- /dev/null +++ b/help/help-pitch.pd @@ -0,0 +1,30 @@ +#N canvas 166 313 439 308 12; +#X floatatom 83 266 5 0 0; +#X obj 83 35 notein; +#X floatatom 112 217 5 0 0; +#X floatatom 127 191 5 0 0; +#X floatatom 142 166 5 0 0; +#X floatatom 24 33 5 0 0; +#X symbolatom 97 242 7 0 0; +#X text 139 267 MIDI note number; +#X text 166 217 pitch class; +#X text 181 191 interval to last note; +#X text 197 166 register; +#X text 153 33 pitch :: get info about pitch; +#X text 169 243 note name (symbol); +#X text 221 54 use creation argument to; +#X text 221 71 set assumed first note; +#X text 227 104 of the first interval ); +#X text 218 89 ( needed for calculation; +#X obj 83 94 stripnote; +#X obj 83 137 pitch 72; +#X connect 1 0 17 0; +#X connect 1 1 17 1; +#X connect 5 0 18 0; +#X connect 17 0 18 0; +#X connect 17 1 18 1; +#X connect 18 0 0 0; +#X connect 18 1 6 0; +#X connect 18 2 2 0; +#X connect 18 3 3 0; +#X connect 18 4 4 0; diff --git a/help/help-plus.pd b/help/help-plus.pd new file mode 100644 index 0000000..3a0e442 --- /dev/null +++ b/help/help-plus.pd @@ -0,0 +1,17 @@ +#N canvas 328 264 464 316 12; +#X floatatom 54 217 5 0 0; +#X floatatom 54 127 5 0 0; +#X floatatom 107 127 5 0 0; +#X text 133 204 use creation arguments to set initial; +#X text 133 220 values for inlets; +#X text 26 20 plus :: like '+' but calculates result; +#X msg 23 83 bang; +#X text 69 82 calculate and output result now; +#X obj 54 172 plus 8 6 2; +#X floatatom 161 127 5 0 0; +#X text 91 40 whenever leftmost or second inlet is changed; +#X connect 1 0 8 0; +#X connect 2 0 8 1; +#X connect 6 0 8 0; +#X connect 8 0 0 0; +#X connect 9 0 8 2; diff --git a/help/help-poisson.pd b/help/help-poisson.pd new file mode 100644 index 0000000..ab6fe4b --- /dev/null +++ b/help/help-poisson.pd @@ -0,0 +1,12 @@ +#N canvas 438 222 487 308 12; +#X obj 70 95 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X floatatom 70 192 5 0 0; +#X floatatom 193 112 5 0 0; +#X text 39 21 poisson :: Poisson distributed random numbers; +#X obj 70 145 poisson 2.2; +#X text 246 113 lambda - value that is most; +#X text 317 132 likely to appear; +#X connect 0 0 4 0; +#X connect 2 0 4 1; +#X connect 4 0 1 0; diff --git a/help/help-pulse.pd b/help/help-pulse.pd new file mode 100644 index 0000000..6d1320a --- /dev/null +++ b/help/help-pulse.pd @@ -0,0 +1,35 @@ +#N canvas 499 150 464 314 12; +#X obj 23 223 pulse 120 1 4 0; +#X floatatom 23 265 5 0 0; +#X obj 138 265 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -258699 +-1; +#X msg 23 23 0; +#X msg 48 80 1; +#X floatatom 51 122 5 0 0; +#X floatatom 138 197 5 0 0; +#X floatatom 109 172 5 0 0; +#X floatatom 80 147 5 0 0; +#X msg 39 53 bang; +#X text 55 23 stop; +#X obj 313 18 metro; +#X text 80 79 start; +#X text 242 44 originally written by; +#X text 240 62 James McCartney for Max; +#X text 74 267 count; +#X text 168 18 pulse :: a better; +#X text 104 123 quarter notes per minute; +#X text 190 199 number of beats to play; +#X text 189 214 before turning off; +#X text 77 54 toggles on/off; +#X text 131 148 interval at which a bang is output; +#X text 160 174 notes to count (default = quarter); +#X text 166 264 pulse turned off automagically; +#X connect 0 0 1 0; +#X connect 0 1 2 0; +#X connect 3 0 0 0; +#X connect 4 0 0 0; +#X connect 5 0 0 1; +#X connect 6 0 0 4; +#X connect 7 0 0 3; +#X connect 8 0 0 2; +#X connect 9 0 0 0; diff --git a/help/help-remote.pd b/help/help-remote.pd new file mode 100644 index 0000000..54a7caf --- /dev/null +++ b/help/help-remote.pd @@ -0,0 +1,18 @@ +#N canvas 472 309 456 306 12; +#X text 9 9 remote :: send data to any receive object; +#X obj 32 224 remote; +#X obj 216 222 receive bla; +#X obj 321 222 receive foo; +#X obj 216 250 print bla; +#X obj 321 250 print foo; +#X msg 32 104 bla 17.3 23; +#X msg 76 183 foo 13 \, bla 4; +#X text 148 75 use message: ; +#X text 253 91 with data of any type; +#X text 89 26 written by Olaf Matthes ; +#X msg 61 147 foo five is 2 more than 3; +#X connect 2 0 4 0; +#X connect 3 0 5 0; +#X connect 6 0 1 0; +#X connect 7 0 1 0; +#X connect 11 0 1 0; diff --git a/help/help-rhythm.pd b/help/help-rhythm.pd new file mode 100644 index 0000000..bff970c --- /dev/null +++ b/help/help-rhythm.pd @@ -0,0 +1,35 @@ +#N canvas 262 64 579 413 12; +#X obj 25 273 rhythm 0; +#X floatatom 25 356 5 0 0; +#X obj 25 59 notein; +#X obj 348 237 makenote 100 100; +#X msg 348 209 60; +#X floatatom 54 328 5 0 0; +#X text 81 360 beats per minute; +#X text 111 331 beats in milliseconds; +#X msg 79 113 reset; +#X msg 90 146 model 0; +#X msg 96 175 model 1; +#X text 158 147 Large and Kolen adaptation model; +#X text 164 174 Toiviainen adaptation model; +#X text 53 21 rhythm :: detects the beat of rhythmic patterns; +#X text 134 39 written by Olaf Matthes ; +#X text 134 56 based on code written by Rober Rowe and published; +#X text 133 72 in 'Mashine musicianship' \, Massachusetts \, 2001; +#X text 115 275 creation: rhythm ; +#X obj 84 303 bng 20 100 10 0 empty empty empty 0 -6 0 8 -262144 -42246 +-1; +#X text 115 304 beat pulse; +#X text 132 114 reset all values \, forget rhythm and stop beat pulse +; +#X connect 0 0 1 0; +#X connect 0 1 5 0; +#X connect 0 2 18 0; +#X connect 2 0 0 0; +#X connect 2 1 0 1; +#X connect 3 0 0 0; +#X connect 3 1 0 1; +#X connect 4 0 3 0; +#X connect 8 0 0 0; +#X connect 9 0 0 0; +#X connect 10 0 0 0; diff --git a/help/help-scale.pd b/help/help-scale.pd new file mode 100644 index 0000000..816bda5 --- /dev/null +++ b/help/help-scale.pd @@ -0,0 +1,31 @@ +#N canvas 381 126 552 355 12; +#X floatatom 27 277 8 0 0; +#X floatatom 27 73 5 0 0; +#X text 213 48 written by ; +#X text 37 306 creation:; +#X text 141 11 scale :: scale input from a certain input range; +#X text 212 29 to lie between output boundaries; +#X floatatom 56 131 5 0 0; +#X floatatom 85 152 5 0 0; +#X floatatom 115 173 5 0 0; +#X floatatom 144 194 5 0 0; +#X text 84 71 input value; +#X text 106 278 scaled output value; +#X text 111 130 in low; +#X text 137 151 in high; +#X text 171 172 out low; +#X text 200 194 out high; +#X text 57 104 creation arguments can be changed dynamically:; +#X text 53 323 scale +; +#X obj 27 249 scale 0 9 100 255 0; +#X floatatom 174 220 5 0 0; +#X text 227 219 log coefficient; +#X text 265 237 0 = linear 1 = log; +#X connect 1 0 18 0; +#X connect 6 0 18 1; +#X connect 7 0 18 2; +#X connect 8 0 18 3; +#X connect 9 0 18 4; +#X connect 18 0 0 0; +#X connect 19 0 18 5; diff --git a/help/help-score.pd b/help/help-score.pd new file mode 100644 index 0000000..a049bab --- /dev/null +++ b/help/help-score.pd @@ -0,0 +1,52 @@ +#N canvas 246 86 629 516 12; +#X floatatom 30 301 5 0 0; +#X obj 30 12 notein; +#X obj 193 202 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X msg 95 93 start; +#X msg 104 118 stop; +#X text 217 203 reset; +#X text 145 92 start / stop score following; +#X msg 111 146 start 4; +#X text 176 146 start skipping first 4 notes; +#X obj 193 286 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -258699 +-1; +#X text 217 287 error; +#X text 148 24 score :: score follower that tries to match incoming +; +#X text 221 41 MIDI data to a score stored in an array; +#X text 219 57 outputs the index number of current position; +#X obj 23 423 loadbang; +#N canvas 0 0 450 300 graph2 0; +#X array sco_array 25 float 1; +#A 0 60 61 62 63 64 65 66 67 68 69 70 71 72 71 70 69 68 67 66 65 64 +63 62 61 60; +#X coords 0 127 24 0 200 140 1; +#X restore 402 361 graph; +#X obj 30 235 score sco_array 2 300; +#X msg 130 173 set sco_array; +#X msg 23 449 \; sco_array resize 25 \; sco_array read examplescore.txt +\;; +#X text 250 174 set to array that contains the score; +#X text 88 303 position on score; +#X text 86 322 (x index of array); +#X obj 30 356 tabread sco_array; +#X floatatom 30 387 5 0 0; +#X text 86 388 note from score; +#X text 291 255 array: name of array containing score; +#X text 235 234 USAGE: score ; +#X text 292 272 skipitems: max. number of notes to skip; +#X text 292 289 skip time: max. time [ms] to rewind; +#X text 378 307 input data; +#X connect 0 0 22 0; +#X connect 1 0 16 0; +#X connect 1 1 16 1; +#X connect 2 0 16 2; +#X connect 3 0 16 0; +#X connect 4 0 16 0; +#X connect 7 0 16 0; +#X connect 14 0 18 0; +#X connect 16 0 0 0; +#X connect 16 1 9 0; +#X connect 17 0 16 0; +#X connect 22 0 23 0; diff --git a/help/help-speedlim.pd b/help/help-speedlim.pd new file mode 100644 index 0000000..2ef4f82 --- /dev/null +++ b/help/help-speedlim.pd @@ -0,0 +1,30 @@ +#N canvas 445 253 464 314 12; +#X floatatom 38 54 5 0 0; +#X floatatom 18 264 5 0 0; +#X obj 38 141 speedlim 500; +#X text 126 18 speedlim :: lets information through; +#X text 222 37 only every N milliseconds; +#X text 152 171 creation argument = time in ms; +#X floatatom 129 116 5 0 0; +#X text 184 116 time between outputs in ms; +#X msg 49 82 bang; +#X obj 121 207 bng 20 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 121 236 timer; +#X floatatom 121 262 5 0 0; +#X text 175 262 this should never be less than; +#X text 175 280 the creation argument of speedlim; +#X obj 18 194 route f; +#X obj 47 236 print; +#X msg 95 82 this is speedlim; +#X connect 0 0 2 0; +#X connect 2 0 9 0; +#X connect 2 0 14 0; +#X connect 6 0 2 1; +#X connect 8 0 2 0; +#X connect 9 0 10 1; +#X connect 9 0 10 0; +#X connect 10 0 11 0; +#X connect 14 0 1 0; +#X connect 14 1 15 0; +#X connect 16 0 2 0; diff --git a/help/help-step.pd b/help/help-step.pd new file mode 100644 index 0000000..9197d01 --- /dev/null +++ b/help/help-step.pd @@ -0,0 +1,22 @@ +#N canvas 417 206 533 314 12; +#X floatatom 33 229 5 0 0; +#X text 72 7 step :: output sequence of numbers (similar to 'line') +; +#X text 138 25 written by Olaf Matthes (olaf.matthes@gmx.de); +#X text 222 250 stepsize :: step between two numbers; +#X msg 33 76 23 6000 2; +#X msg 62 119 230; +#X obj 101 282 line; +#X text 98 117 send a single number to jump; +#X text 121 77 send a triplet to step to a new value; +#X text 22 282 see also:; +#X msg 80 146 stop; +#X text 127 147 "stop" message to stop output; +#X text 121 92