aboutsummaryrefslogtreecommitdiff
path: root/desiredata/doc/1.manual
diff options
context:
space:
mode:
Diffstat (limited to 'desiredata/doc/1.manual')
-rw-r--r--desiredata/doc/1.manual/fig1.1.pngbin3586 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig1.2.jpgbin4361 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig1.3.jpgbin1056 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig1.4.pngbin1154 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig1.5.jpgbin6187 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig11.1.pngbin14795 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig11.2.pngbin4333 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig11.3.pngbin5014 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig11.4.pngbin4573 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig3.1.jpgbin1201 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig3.10.jpgbin2884 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig3.2.jpgbin2932 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig3.3.jpgbin2177 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig3.4.jpgbin2359 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig3.5.jpgbin2029 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig3.6.jpgbin2977 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig3.7.jpgbin2846 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig3.8.jpgbin1267 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig3.9.jpgbin5708 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig7.1.jpgbin2410 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig7.2.jpgbin7327 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig7.3.jpgbin2588 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig7.4.jpgbin3245 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig7.5.jpgbin2490 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig7.6.jpgbin7758 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig8.1.jpgbin2551 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig8.2.jpgbin2414 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig8.3.jpgbin2036 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig8.4.jpgbin3428 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig8.5.jpgbin5182 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig8.6.jpgbin7549 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig9.1.jpgbin15267 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig9.2.jpgbin17390 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/fig9.3.jpgbin38881 -> 0 bytes
-rw-r--r--desiredata/doc/1.manual/index.htm165
-rwxr-xr-xdesiredata/doc/1.manual/pdmanual.css39
-rw-r--r--desiredata/doc/1.manual/x1.htm150
-rw-r--r--desiredata/doc/1.manual/x2.htm1276
-rw-r--r--desiredata/doc/1.manual/x3.htm790
-rw-r--r--desiredata/doc/1.manual/x4.htm61
-rw-r--r--desiredata/doc/1.manual/x5.htm1568
41 files changed, 0 insertions, 4049 deletions
diff --git a/desiredata/doc/1.manual/fig1.1.png b/desiredata/doc/1.manual/fig1.1.png
deleted file mode 100644
index 483a1e8c..00000000
--- a/desiredata/doc/1.manual/fig1.1.png
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig1.2.jpg b/desiredata/doc/1.manual/fig1.2.jpg
deleted file mode 100644
index c33c755c..00000000
--- a/desiredata/doc/1.manual/fig1.2.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig1.3.jpg b/desiredata/doc/1.manual/fig1.3.jpg
deleted file mode 100644
index caf29b2d..00000000
--- a/desiredata/doc/1.manual/fig1.3.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig1.4.png b/desiredata/doc/1.manual/fig1.4.png
deleted file mode 100644
index 1dc8e037..00000000
--- a/desiredata/doc/1.manual/fig1.4.png
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig1.5.jpg b/desiredata/doc/1.manual/fig1.5.jpg
deleted file mode 100644
index 4b01c59f..00000000
--- a/desiredata/doc/1.manual/fig1.5.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig11.1.png b/desiredata/doc/1.manual/fig11.1.png
deleted file mode 100644
index 1a32fe4f..00000000
--- a/desiredata/doc/1.manual/fig11.1.png
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig11.2.png b/desiredata/doc/1.manual/fig11.2.png
deleted file mode 100644
index 38990aac..00000000
--- a/desiredata/doc/1.manual/fig11.2.png
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig11.3.png b/desiredata/doc/1.manual/fig11.3.png
deleted file mode 100644
index daf6e7b0..00000000
--- a/desiredata/doc/1.manual/fig11.3.png
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig11.4.png b/desiredata/doc/1.manual/fig11.4.png
deleted file mode 100644
index d8d99682..00000000
--- a/desiredata/doc/1.manual/fig11.4.png
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig3.1.jpg b/desiredata/doc/1.manual/fig3.1.jpg
deleted file mode 100644
index f8348970..00000000
--- a/desiredata/doc/1.manual/fig3.1.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig3.10.jpg b/desiredata/doc/1.manual/fig3.10.jpg
deleted file mode 100644
index 4625ce0c..00000000
--- a/desiredata/doc/1.manual/fig3.10.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig3.2.jpg b/desiredata/doc/1.manual/fig3.2.jpg
deleted file mode 100644
index 994d41c7..00000000
--- a/desiredata/doc/1.manual/fig3.2.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig3.3.jpg b/desiredata/doc/1.manual/fig3.3.jpg
deleted file mode 100644
index 91cac54a..00000000
--- a/desiredata/doc/1.manual/fig3.3.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig3.4.jpg b/desiredata/doc/1.manual/fig3.4.jpg
deleted file mode 100644
index e2f2fe53..00000000
--- a/desiredata/doc/1.manual/fig3.4.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig3.5.jpg b/desiredata/doc/1.manual/fig3.5.jpg
deleted file mode 100644
index 9a79a2b3..00000000
--- a/desiredata/doc/1.manual/fig3.5.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig3.6.jpg b/desiredata/doc/1.manual/fig3.6.jpg
deleted file mode 100644
index fcbcf3da..00000000
--- a/desiredata/doc/1.manual/fig3.6.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig3.7.jpg b/desiredata/doc/1.manual/fig3.7.jpg
deleted file mode 100644
index 84dcd7f7..00000000
--- a/desiredata/doc/1.manual/fig3.7.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig3.8.jpg b/desiredata/doc/1.manual/fig3.8.jpg
deleted file mode 100644
index ab03a207..00000000
--- a/desiredata/doc/1.manual/fig3.8.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig3.9.jpg b/desiredata/doc/1.manual/fig3.9.jpg
deleted file mode 100644
index 6e9655c7..00000000
--- a/desiredata/doc/1.manual/fig3.9.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig7.1.jpg b/desiredata/doc/1.manual/fig7.1.jpg
deleted file mode 100644
index b677f6bd..00000000
--- a/desiredata/doc/1.manual/fig7.1.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig7.2.jpg b/desiredata/doc/1.manual/fig7.2.jpg
deleted file mode 100644
index 54690d0e..00000000
--- a/desiredata/doc/1.manual/fig7.2.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig7.3.jpg b/desiredata/doc/1.manual/fig7.3.jpg
deleted file mode 100644
index a3b70ed3..00000000
--- a/desiredata/doc/1.manual/fig7.3.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig7.4.jpg b/desiredata/doc/1.manual/fig7.4.jpg
deleted file mode 100644
index 88ba5b40..00000000
--- a/desiredata/doc/1.manual/fig7.4.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig7.5.jpg b/desiredata/doc/1.manual/fig7.5.jpg
deleted file mode 100644
index f9de4b3b..00000000
--- a/desiredata/doc/1.manual/fig7.5.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig7.6.jpg b/desiredata/doc/1.manual/fig7.6.jpg
deleted file mode 100644
index 5f24af7a..00000000
--- a/desiredata/doc/1.manual/fig7.6.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig8.1.jpg b/desiredata/doc/1.manual/fig8.1.jpg
deleted file mode 100644
index 57e59313..00000000
--- a/desiredata/doc/1.manual/fig8.1.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig8.2.jpg b/desiredata/doc/1.manual/fig8.2.jpg
deleted file mode 100644
index 1dd48cd9..00000000
--- a/desiredata/doc/1.manual/fig8.2.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig8.3.jpg b/desiredata/doc/1.manual/fig8.3.jpg
deleted file mode 100644
index 165c1c88..00000000
--- a/desiredata/doc/1.manual/fig8.3.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig8.4.jpg b/desiredata/doc/1.manual/fig8.4.jpg
deleted file mode 100644
index afc89a73..00000000
--- a/desiredata/doc/1.manual/fig8.4.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig8.5.jpg b/desiredata/doc/1.manual/fig8.5.jpg
deleted file mode 100644
index 6fa3d0d1..00000000
--- a/desiredata/doc/1.manual/fig8.5.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig8.6.jpg b/desiredata/doc/1.manual/fig8.6.jpg
deleted file mode 100644
index 2823e032..00000000
--- a/desiredata/doc/1.manual/fig8.6.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig9.1.jpg b/desiredata/doc/1.manual/fig9.1.jpg
deleted file mode 100644
index bab4b689..00000000
--- a/desiredata/doc/1.manual/fig9.1.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig9.2.jpg b/desiredata/doc/1.manual/fig9.2.jpg
deleted file mode 100644
index 88ef528c..00000000
--- a/desiredata/doc/1.manual/fig9.2.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/fig9.3.jpg b/desiredata/doc/1.manual/fig9.3.jpg
deleted file mode 100644
index ecb66004..00000000
--- a/desiredata/doc/1.manual/fig9.3.jpg
+++ /dev/null
Binary files differ
diff --git a/desiredata/doc/1.manual/index.htm b/desiredata/doc/1.manual/index.htm
deleted file mode 100644
index 519a5102..00000000
--- a/desiredata/doc/1.manual/index.htm
+++ /dev/null
@@ -1,165 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
-
-<HTML>
- <HEAD>
- <TITLE>Pd Documentation</TITLE>
- <meta http-equiv="Content-Type" content="text/html">
- <link rel="stylesheet" type="text/css" href="pdmanual.css" media="screen">
- </HEAD>
-
-
-<BODY>
-
-<H1>Pd Documentation</H1>
-
-<P>
-This is the HTML documentation for Pd, a patchable environment for audio
-analysis, synthesis, and processing,
-with a rich set of multimedia capabilities. The latest version of this page
-can be found at:
- <a href="http://www.crca.ucsd.edu/~msp/software.html" name=s1>
- http://www.crca.ucsd.edu/~msp/software.html</A> .
-<OL>
-<LI> <a href="x1.htm" name=s1>introduction </A>
-<OL>
- <LI> <a href="x1.htm#s1">guide to the documentation </A>
- <LI> <a href="x1.htm#s2">other resources </A>
-</OL>
-
-<LI> <A href="x2.htm" name=s2>theory of operation </A>
-<OL>
- <LI> <A href="x2.htm#s1"> overview </A>
- <OL>
- <LI> <A href="x2.htm#s1.1"> main window, canvases, and printout </A>
- <LI> <A href="x2.htm#s1.2"> object boxes </A>
- <LI> <A href="x2.htm#s1.3"> message and GUI boxes </A>
- <LI> <A href="x2.htm#s1.4"> patches and files </A>
- </OL>
- <LI> <A href="x2.htm#s2"> how to edit patches </A>
- <OL>
- <LI> <A href="x2.htm#s2.1"> edit and run mode </A>
- <LI> <A href="x2.htm#s2.2"> creating boxes </A>
- <LI> <A href="x2.htm#s2.3"> the selection </A>
- <LI> <A href="x2.htm#s2.4"> deleting, cutting, and pasting </A>
- <LI> <A href="x2.htm#s2.5"> changing the text </A>
- <LI> <A href="x2.htm#s2.6"> connecting and disconnecting boxes </A>
- <LI> <A href="x2.htm#s2.7"> properties and help </A>
- </OL>
- <LI> <A href="x2.htm#s3"> messages </A>
- <OL>
- <LI> <A href="x2.htm#s3.1"> anatomy of a message </A>
- <LI> <A href="x2.htm#s3.2"> depth first message passing </A>
- <LI> <A href="x2.htm#s3.3">
- hot and cold inlets and right to left outlet order </A>
- <LI> <A href="x2.htm#s3.3"> message boxes </A>
- </OL>
- <LI> <A href="x2.htm#s4"> audio signals </A>
- <OL>
- <LI> <A href="x2.htm#s4.1"> sample rate and format </A>
- <LI> <A href="x2.htm#s4.2"> tilde objects and audio connections </A>
- <LI> <A href="x2.htm#s4.3"> converting to and from messages </A>
- <LI> <A href="x2.htm#s4.4"> switching and blocking </A>
- <LI> <A href="x2.htm#s4.5"> nonlocal signal connections </A>
- </OL>
- <LI> <A href="x2.htm#s5"> scheduling </A>
- <OL>
- <LI> <A href="x2.htm#s5.1"> audio and messages </A>
- <LI> <A href="x2.htm#s5.2"> computation load </A>
- <LI> <A href="x2.htm#s5.3"> determinism </A>
- </OL>
- <LI> <A href="x2.htm#s6"> semantics </A>
- <OL>
- <LI> <A href="x2.htm#s6.1"> creation of objects </A>
- <LI> <A href="x2.htm#s6.2"> persistence of data </A>
- <LI> <A href="x2.htm#s6.3"> message passing </A>
- <LI> <A href="x2.htm#s6.4"> inlets and lists </A>
- <LI> <A href="x2.htm#s6.5"> dollar signs </A>
- </OL>
- <LI> <A href="x2.htm#s7"> subpatches </A>
- <OL>
- <LI> <A href="x2.htm#s7.1"> abstractions </A>
- <LI> <A href="x2.htm#s7.2"> graph-on-parent subpatches </A>
- </OL>
- <LI> <A href="x2.htm#s8"> numeric arrays </A>
- <LI> <A href="x2.htm#s9"> data structures </A>
- <OL>
- <LI> <A href="x2.htm#s9.1"> traversal </A>
- <LI> <A href="x2.htm#s9.2"> accessing and changing data </A>
- <LI> <A href="x2.htm#s9.3"> editing </A>
- <LI> <A href="x2.htm#s9.4"> limitations </A>
- </OL>
-
-</OL>
-
-<LI> <a href="x3.htm" name=s3> getting Pd to run </A>
-<OL>
- <LI> <a href="x3.htm#s1.0"> audio and MIDI </A>
- <LI> <a href="x3.htm#s1.1">installing Pd in Microsoft Windows </A>
- <LI> <a href="x3.htm#s1.2">installing Pd in Linux </A>
- <LI> <a href="x3.htm#s1.3">installing Pd in MacOS X </A>
- <LI> <a href="x3.htm#s1.4">installing Pd in IRIX (SGI) </A>
- <LI> <a href="x3.htm#s4"> preferences and startup options </A>
- <LI> <a href="x3.htm#s5"> how Pd searches for files </A>
-</OL>
-<LI> <a href="x4.htm" name=s4> writing Pd objects in C </A>
-
-<LI> <a href="x5.htm" name=s5> current status </A>
-<OL>
- <LI> <a href="x5.htm#s1"> release notes </A>
- <LI> <a href="x5.htm#s2"> known bugs </A>
- <LI> <a href="x5.htm#s3"> differences from Max/MSP </A>
-</OL>
-
-</OL>
-
-<!--
- intro: what Pd is
- guide to the documentation
- other resources
-
- Theory of operation
- main window and canvases
- messages
- signals
- loading, editing, and saving patches
- subpatches
- one-off and abstractions
- blocking for signals
- data
-
- Making Pd work
- how to get and install Pd
- IRIX
- NT
- Linux
- audio
- testing it
- the scheduler advance
- IRIX
- NT
- Linux
- GEM
- getting it
- running it
- running Pd patches
- command line options
- opening & saving files
- editing
- file stuff
- the path
- abstractions
- externs
- the help feature
- Writing Pd objects in C
- release notes
- features
- bugs
-
-
--->
-
-
-
-</BODY>
-</HTML>
-
diff --git a/desiredata/doc/1.manual/pdmanual.css b/desiredata/doc/1.manual/pdmanual.css
deleted file mode 100755
index 01d66ab2..00000000
--- a/desiredata/doc/1.manual/pdmanual.css
+++ /dev/null
@@ -1,39 +0,0 @@
-
-HTML {
- background: #ffffff;
- color: #000000;
- font-family: Times, Times New Roman, serif;
- font-size: 10pt;
-}
-BODY {
- width: 6.5in;
- margin-left: 0.5in
-}
-H1 {
- font-size: 36pt;
- text-align: center;
-}
-H2 {
- font-size: 10pt;
- text-align: center;
-}
-H3 {
- font-size: 12pt;
- text-align: left;
-}
-H4 {
- font-size: 10pt;
- text-align: left;
-}
-H5 {
- font-size: 8pt;
- text-align: left;
-}
-H6 {
- font-size: 8pt;
- text-align: left;
-}
-PRE {
- font-size: 8pt;
- text-align: left;
-}
diff --git a/desiredata/doc/1.manual/x1.htm b/desiredata/doc/1.manual/x1.htm
deleted file mode 100644
index a9d8caaf..00000000
--- a/desiredata/doc/1.manual/x1.htm
+++ /dev/null
@@ -1,150 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
-
-<HTML>
- <HEAD>
- <TITLE>Pd Documentation 1</TITLE>
- <meta http-equiv="Content-Type" content="text/html">
- <link rel="stylesheet" type="text/css" href="pdmanual.css" media="screen">
- </HEAD>
-
-<BODY>
-
-<H2>Pd Documentation chapter 1: introduction</H2>
-
-<P>
-<A href="index.htm#s1"> back to table of contents </A>
-<BR><BR>
-</P>
-
-
-<P>
-This is the HTML documentation for the Pd computer program.
-Pd is free and can be downloaded from the internet;
-go to
- <A href="http://www.crca.ucsd.edu/~msp/software.html">
- http://www.crca.ucsd.edu/~msp/software.html</A>
-to get it.
-<H3> <A name=s1> 1.1. guide to the documentation </A> </H3>
-
-<P> Pd's documentation consists of:
-
-<UL>
-<LI> this HTML manual
-<LI> "reference" patches, one for each kind of object in Pd
-<LI> "example" patches showing how to do things
-<LI> sample C code
-</UL>
-
-<P>
-This manual has five sections:
-
-<OL>
-<LI> this overview
-<LI> <A href="x2.htm">
- a theory of operations, explaining how Pd works </A>
-<LI> <A href="x3.htm">
- instructions on installing Pd and getting it to run </A>
-<LI> <A href="x4.htm"> how to write C extensions to Pd </A>
-<LI> <A href="x5.htm"> release notes and known bugs </A>
-</OL>
-
-<P> In order to consult the reference and example patches, you'll first have
-to get Pd started as explained in this manual.
-
-<P>
-For a list of all the objects you can use in Pd, see the text file,
-"0.INTRO.txt" in the directory, "../5.reference". To get help on any
-Pd object you can right click on it; or you can browse the help patches
-by choosing "Pure Documentation..." in the Pd help menu and looking in
-5.reference.
-
-<P>
-The example patches are also available from the "Pure Documentation..." item
-in Pd's
-"help" menu. The example patches appear in subdirectories named
-"2.control.examples", "3.audio.examples" and "4.fft.examples." Some additional
-patches in "7.stuff" might also be helpful.
-
-<P>
-To get started writing your own C extensions, refer to chapter 4 of this manual.
-
-<H3> <A name=s2> 1.2. other resources </A> </H3>
-
-<P> There is a new Pd community web site,
-<a href="http://www.pure-data.info/"> pure-data.info</a>, which aims to be the
-central resource for Pd, from documentation and
-downloads; to forums, member pages, a patch exchange.
-
-<P> There is a growing number of Pd-related projects hosted at
-<A HREF="http://pure-data.sf.net">SourceForge</A>. This is open to all Pd
-developers, and all are encouraged to join; send an email to the pd-dev list
-(see below).
-
-<P>
-Most of the interesting resources related to Pd show up on the Pd mailing list,
-maintained by Iohannes Zmoelnig. To subscribe or browse the archives
-visit:
- <A href="http://iem.kug.ac.at/mailinglists/pd-list/">
- http://iem.kug.ac.at/mailinglists/pd-list/</A>.
-
-. This is the
-best source of recent information regarding installation problems and bugs. It
-is perfectly reasonable to post "newbie" questions on this list; alternatively
-you can contact msp@ucsd.edu for help.
-
-<P> Many extensions to Pd are announced on the mailing list. In particular,
-for people interested in graphics, there is a A 3D graphics rendering package,
-named GEM, based on OpenGL, written by Mark Danks, adapted to Linux by
-Guenter Geiger, and now maintained by Iohannes Zmoelnig. GEM runs on
-Windows and Linux and probably will run with some coaxing on IRIX. You can get
-it from: <A href="http://iem.kug.ac.at/GEM">http://iem.kug.ac.at/GEM</A> .
-
-<P> At least three video processing packages are available for Pd. The oldest
-is Framestein, by Juha Vehvilainen. This runs on Windows only: <A
-href="http://framestein.org"> http://framestein.org </A>.
-
-<P> The newer <A> href="http://zwizwa.fartit.com/pd/pdp/overview.html"> PDP
-<A> library, by Tom Schouten, and its extension <A
-href="http://ydegoyon.free.fr/pidip.html"> PiDiP </A> by Yves Degoyon, run well
-in linux and has been ported to Windows and MacOS. Video is extremely fast in
-PDP, but is currently limited to 240x320 resolution.
-
-<P> Mathieu Bouchard has written <A href=http://artengine.ca/gridflow/>
-Gridflow </A>, which runs on linux and MacOSX. The mathematical operators are
-more powerful than in PDP, and the design makes smarter use of cache behavior
-in modern CPUs.
-
-All this and much more is described in detail at the
-<A href="http://puredata.info/community/projects/convention04/">
-first Pd Convention </A>.
-
-
-<P>
-Here are some more Pd links (in the order I found them): <BR>
-
-<a href="http://www.crca.ucsd.edu/~msp"> Miller Puckette's home page</a><br>
-<a href="http://gige.epy.co.at/"> Guenter Geiger's home page</a><br>
-<a href="http://www.danks.org/mark"> Mark Dank's home page</a><br>
-<a href="http://wonk.epy.co.at">Pd page on Wonk (Klaus)</a><br>
-<a href="http://iem.kug.ac.at/~zmoelnig/index.html">
- Johannes M Zmoelnig</a><br>
-<a href="http://iem.kug.ac.at/~math/pd/"> Norbert Math's Pd page</a> <br>
-<a href="http://iem.kug.ac.at/pdwiki/">
-Nicolas Lhommet's WikiWikiWeb page for Pd</a><br>
-<a href="http://iem.kug.ac.at/pdb/"> Norbert's searchable list of all known
-Pd objects</a><br>
-<a href="http://suita.chopin.edu.pl/~czaja/miXed/externs/xeq.html">
-Krzysztof Czaja's MIDI file support </a><br>
-<a href="http://www.davesabine.com/media/puredata.asp?action=pddp">
-David Sabine's Pd Documentation Project:
-new, highly detailed help windows</a><br>
-<a href="http://www-ccrma.stanford.edu/planetccrma/software/soundapps.html#pd">
-Fernando Pablo Lopez's augmented Pd RPMs from Planet CCRMA</a><br>
-<a href="http://suita.chopin.edu.pl/~czaja/miXed/externs/cyclone.html">
-Cyclone - Krzysztof Czaja's Max compatibility library</a><br>
-On-line book project:
-<A HREF="http://www.crca.ucsd.edu/~msp/techniques.htm"
-<I> Theory and Techniques of Electronic Music </I> <br>
-
-</BODY>
-</HTML>
diff --git a/desiredata/doc/1.manual/x2.htm b/desiredata/doc/1.manual/x2.htm
deleted file mode 100644
index dd33b149..00000000
--- a/desiredata/doc/1.manual/x2.htm
+++ /dev/null
@@ -1,1276 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-
-<HTML>
- <HEAD>
- <TITLE>Pd Documentation 2</TITLE>
- <meta http-equiv="Content-Type" content="text/html">
- <link rel="stylesheet" type="text/css" href="pdmanual.css" media="screen">
- </HEAD>
-
-
-<BODY>
-
-<H2>Pd Documentation chapter 2: theory of operation</H2>
-
-<P>
-<A href="index.htm#s2"> back to table of contents</A>
-<BR><BR>
-</P>
-
-<P>
-
-<P> The purpose of this chapter is to describe Pd's design and how it is
-supposed to work. Practical details about how to obtain, install, and run Pd
-are described in the next chapter. To learn digital audio processing basics
-such as how to generate time-varying sounds that don't click or fold over, try
-the on-line book,
-<A HREF="http://www.crca.ucsd.edu/~msp/techniques.htm"
-<I> Theory and Techniques of Electronic Music </I>.
-
-<H3> <A name=s1> 2.1 overview </A> </H3>
-
-<P>Pd is a real-time graphical programming environment for audio and graphical
-processing. It resembles the Max/MSP system but is much simpler and more
-portable; also Pd has two features not (yet) showing up in Max/MSP: first,
-via Mark Dank's GEM package, Pd can be used for simultaneous computer
-animation and computer audio. Second, an experimental facility is provided
-for defining and accessing data structures.
-
-<H3> <A name=s1.1> 2.1.1. the main window, canvases, and printout </A> </H3>
-
-<P>When Pd is running, you'll see a main "Pd" window, and possibly one or more
-"canvases" or "patches". The main Pd window looks like this:
-
-<CENTER><P>
- <IMG src="fig1.1.png" ALT="pd window">
-</P></CENTER>
-
-<P> There are peak level and clip indicators for audio input and output; these
-report peak levels over all input and all output channels. Note that DC
-shows up as an input level; many cards have DC levels which show up in the
-50s. To see an RMS audio level, select "test audio and MIDI" from the Media
-menu. The main window display is intended only to help you avoid clipping
-on input and output. You can turn the peak meters on and off using the
-control at lower left.
-
-<P> At lower right is a control to turn audio processing on and off
-globally. Turning audio off stops the computation and relinquishes any audio
-devices Pd is using. The "Media" menu is also provided, with accelerators
-"Control-." to turn audio computation off and "Control-/" to turn it on. When
-audio is on, Pd is computing audio samples in real time according to whatever
-patches you have open (whether they are visible or not).
-
-<P> The DIO (Digital I/O) error indicator flashes if there is a synchronization
-error for audio input or output. (But note that on some platforms Pd doesn't
-find out about them. If you never see red, you're probably not seeing the
-truth.)
-Click the "DIO errors" button to see a list of recent errors.
-This indicator should turn red whenever the
-computation runs late (so that the DAC FIFOs fill and/or the ADC FIFOs empty)
-or if audio input and output are not running at the same rate. See
-<a href="x3.htm#s2"> audio and MIDI support </A>.
-
-<P> The bottom part of the Pd window is an area for printout from objects in
-patches, and/or for messages from Pd itself.
-
-<P> Pd documents are called "patches" or "canvases."
-Each open document has one main window and any number of
-sub-windows. The sub-windows can be opened and closed but are always running
-whether you can see them or not. Here is a simple Pd patch:
-
-<CENTER><P>
- <IMG src="fig1.2.jpg" ALT="hello world patch">
-</P></CENTER>
-
-<P>There are four <I> text boxes </I> in this patch: a number box (showing zero),
-an object box showing "print," and two comments. The number box and the object
-box are connected, the number box's output to the print box's input. Boxes may
-have zero or more inputs and/or outputs, with the inputs on top and the outputs
-on bottom.
-
-<P>
-Pd's printout appears on the main ``Pd" window,
-unless you redirect it elsewhere.
-
-<H3> <A name="s1.2"> 2.1.2. object boxes </A> </H3>
-<P> Pd patches can have four types of boxes: <I> object, message, GUI, </I>
-and <I> comment </I>.
-
-<P> You make <I> objects </I> by typing text into object boxes. The text is
-divided into <I> atoms </I> separated by white space. The first atom specifies
-what type of object Pd will make, and the other atoms, called <I> creation
-arguments </I>, tell Pd how to initialize the object. If you type for example,
-
-<CENTER><P>
- <IMG src="fig1.3.jpg" ALT="object">
-</P></CENTER>
-
-<P>the "+" specifies the <I> class </I> of the object.
-In this case the object will be the kind that carries out addition,
-and the "13" initializes the amount to add.
-
-<P> Atoms are either numbers or <I>
-symbols </I> like "+". Anything that is not a valid number os considered a
-symbol. Valid numbers may or may not have a decimal point (for instance, 12,
-15.6, -.456), or may be
-written in exponential notation (such as "4.5e6", which means "4.5 multiplied
-by 10 six times, i.e., 4500000). Negative exponentials divide by 10 (so
-that 1.23e-5 comes to 0.0000123).
-
-<P> Non-valid numbers which are read as symbols
-include things like "+5" and "0..6" as well as words and names such as "Zack"
-or "cat". The symbols "gore", "Gore", and "GORE" are all distinct.
-
-<P> The text you type into an object box determines how
-many and what kinds of inlets and outlets the object will have. Some
-classes (like "+" always have a fixed arrangement of inlets and outlets,
-and in the case of other classes, the inlets and outlets will depend on the
-creation arguments.
-
-<P>Here for example is a simple MIDI synthesizer:
-
-<CENTER><P>
- <IMG src="fig1.4.png" ALT="simple MIDI synthesizer">
-</P></CENTER>
-
-<P>This patch mixes <I> control </I> objects (notein, stripnote, and ftom) with
-<I> tilde </I> objects osc~, *~, and dac~. The control objects carry out their
-function sporadically, as a result of one or more type of <I> event </I>. In
-this case, incoming MIDI note messages set off the control computation. The
-result of the computation is, when the note happens to be a "note on" (and not
-a "note off", to compute the frequency in cycles per second and pass it on to
-the oscillator ("osc~").
-
-<P> The second half of the patch, the osc~, *~, and dac~ objects, compute audio
-samples, in the same way as an analog synthesizer works. The osc~ object is
-acting as the interface between the two regimes, in that it takes control
-messages to set its frequency but talks to "*~" using an audio signal. Audio
-signals aren't sporadic; they are continuous streams of numbers. As a result
-tilde objects act under very different rules from control objects. The audio
-portion of the patch is always running, whether MIDI messages arrive or not. On
-the other hand, the function of control computations is to insert calculations
-between the audio computation which may change audio computation parameters
-such as the frequency of an oscillator.
-
-<P> The connections in the patch (the lines between the boxes) are also of two
-types: control and signal. The type of connection depends on the outlet it
-comes from. Signal connections are represented by thicker lines than control
-connections; in the patch above, the two bottom conections are signal and the
-others are control. In general, a control connection may be made to a signal
-inlet; if numbers are sent over it they are automatially converted to
-signals. Signal connections may not be made to control inlets; some sort
-of explicit conversion must be specified.
-
-<H3> <A name="s1.3"> 2.1.3. message and GUI boxes </A> </H3>
-
-<P>The border of a box tells you how its text is interpreted and how the box
-functions. Object boxes (as in the previous example) use the text to create
-objects when you load a patch or type text onto a new one. If you retype the
-text in an object box, the old one is discarded and a new one is created, using
-the new creation arguments. The contents of an object box describe a message
-which is sent to Pd to create the object.
-
-<P> <I> Message </I> boxes interpret the text as a message to send whenever
-the box is activated (by an incoming message or with the mouse.) The message
-may be sent many times while the patch is running (as opposed to object boxes
-whose message is used once to create the object). Instead of going straight
-to Pd, the message box's message (or messages) go either to the box's outlet
-or to other specified receiving objects. In the example
-below, the message box, when clicked, sends the message "21" to an object
-box which adds 13 to it.
-
-<CENTER><P>
- <IMG src="fig1.5.jpg" ALT="[message( --> [object] -> [number]">
-</P></CENTER>
-
-<P> The third box shown is a <I> GUI </I> ("graphical user interface") box. GUI
-boxes come in many forms including number boxes (as in this example), toggles,
-sliders, and so on. Whereas the appearance of an object or message box is
-static when a patch is running, a number box's contents (the text) changes to
-reflect the current value held by the box. You can also use a number box as a
-control by clicking and dragging up and down, or by typing values in it.
-(There are also shift- and alt-click actions; see <A href="x2.htm#s2.7">
-getting help </A> to find out how to look this up).
-
-<P> You can also create a "symbol" box which is like a number box but deals
-in symbols like "cat." You can type your own strings in (followed by "enter")
-or use it to display strings which arrive as messages to its inlet.
-
-<H3> <A name="s1.4"> 2.1.4. patches and files </A> </H3>
-
-<P>When you save a patch to a file, Pd doesn't save the entire state of all the
-objects in the patch, but only what you see: the objects' creation arguments
-and their interconnections. Certain data-storage objects have functions for
-reading and writing other files to save and restore their internal state.
-
-<P>Pd finds files using a <I> path </I> which can be specified as part of Pd's
-startup arguments. The path specifies one or more directories, separated by
-colons (semicolons if you're using windows.) Most objects which can read files
-search for them along the search path, but when Pd writes files they go to
-the directory where the patch was found.
-
-<H3> <A name=s2> 2.2. editing Pd patches </A> </H3>
-
-<H3> <A name=s2.1> 2.2.1. edit and run mode </A> </H3>
-
-<P> A patch can be in edit or run mode; this really only affects how mouse
-clicks affect the patch. In edit mode, clicking and dragging selects and
-moves boxes or makes and cuts connections; in run mode clicking on boxes sends
-them messages which they react to in different ways. In run mode, number and
-message boxes can be used as controls. Normally, when you are in a performance
-you will stay in run mode; to change the patch you go to edit mode.
-
-<H3> <A name=s2.2> 2.2.2. creating boxes </A> </H3>
-
-<P> You can create boxes (objects, messages, GUIs, and comments) using the
-"put" menu. Note the handy accelerators. Object and message boxes are empty
-at first; drag them where you want them and type in the text. The GUI
-objects (which come in several flavors) require no typing; just create and
-place them.
-
-<P> You will often find it more convenient to select a box and "duplicate" it
-(in the Edit menu) than to use the "Put" menu. If you select and duplicate
-several items, any connections between them will be duplicated as well.
-
-<H3> <A name=s2.3> 2.2.3. the selection </A> </H3>
-
-<P>Boxes in a Pd window may be selected by clicking on them. To select more
-than one object you may use shift-click or click on a blank portion of
-the window and drag the cursor to select all objects within a rectangle.
-
-<P>Clicking on an unselected object, message, or comment box makes the text
-active, i.e., ready to be text edited. (If you select using the rectangle
-method, the text isn't activated.) Once you've activated a text box, you
-may type into it (replacing the selected text) or use the mouse to change the
-selection.
-
-<P> You may also select a single connection (patch cord) by clicking on it.
-You can't have connections and boxes selected simultaneously.
-
-<H3> <A name=s2.4> 2.2.4. deleting, cutting, and pasting </A> </H3>
-
-<P>If you select a box, a connection, or several boxes, and if you haven't made
-any text active, you can "delete" the selection by hitting the backspace or
-delete key. You can also "cut" "copy" and "paste" using menu items. Notice
-that pasting puts the new object(s) right down on top of the old ones.
-
-<P>The "duplicate" menu item performs a copy and paste with a small offset so you
-can see the new boxes. You can drag them together to a new place on the screen.
-
-<P>You can cut and paste between windows within Pd but cut/paste isn't
-integrated with the OS in any way. Cut/copy/paste for activated text in boxes
-isn't implemented yet, although in Linux and Irix at least you can "X-paste"
-into and out of "text" dialogs (created with the "edit text" menu item.)
-
-<H3> <A name=s2.5> 2.2.5. changing the text </A> </H3>
-
-<P> To change a text item, you can select it and then edit the text. If you
-only click once, the entire text is selected and your typing will replace
-everything. Click again and drag to select a portion of the text to retype.
-
-<P> If there's
-more than a small amount of text (in a comment, for example) you might want to
-select the text and choose "text editor" from the Edit menu, which opens a text
-editing window with a copy of the text in it. Hitting "send" in that window is
-exactly equivalent to retyping the text into Pd; you can send it to more than
-one box in sequence if you want.
-
-<P> If you click a box and move the mouse without releasing the button this
-displaces the entire box. If you wish to displace a box which is already
-selected, first de-select the box by clicking outside it; otherwise you will be
-selecting text instead of moving the box.
-
-<P> <I> The updated text only becomes part of the patch when you de-select the
-object. </I> Changing the text in an "object" box deletes the old
-object and creates a new one; the internal state of the old one is lost.
-
-<H3> <A name=s2.6> 2.2.6. connecting and disconnecting boxes </A> </H3>
-
-<P>To make a connection between two boxes, click on any outlet of the first
-one, drag toward an inlet of the second one, and release. You can
-release the mouse button anywhere within the target object and the connection
-will be made to the nearest inlet.
-
-<P>Connections are broken by selecting them and using "cut" or the backspace
-or delete key.
-
-<H3> <A name=s2.7> 2.2.7. popup menu for properties, open, and help </A> </H3>
-
-<P> All the "clicking" mentioned above is done with the left mouse button.
-The right button, instead, gives a popup menu offering "properties," "open,"
-and "help".
-(For Macintosh users who may only have one button on their mouse,
-double-clicking is mapped to right-click.)
-
-<P> Selecting "help" on an object gets
-a Pd patch that demonstrates how to use it. "Help" for the canvas as a whole
-(right-clicking outside any object) gives a list of all built-in objects.
-
-<P> The "open" menu item is only enabled if you right-click on a subpatch
-(see below) and causes Pd to open it. Ordinary subpatches may also be opened
-by clicking on them, but for "graph-on-parent" ones, this is the only way to
-do it.
-
-<P> The "properties" dialog allows you to change certain settings of GUI
-objects, or of the patch itself (by clicking outside any box.)
-
-<H3> <A name=s2.7> 2.2.8. miscellaneous </A> </H3>
-
-<P> Control-q "quits" Pd, but asks you to comfirm the quit. To quit without
-having to confirm, use command-shift-Q.
-
-<H3> <A name="s3"> 2.3. messages </A> </H3>
-
-<P> In Pd, objects intercommunicate by sending messages and/or audio signals.
-Pd messages are sporadic, like MIDI messages or music N "Note cards."
-
-<H3> <A name="s3.1"> 2.3.1. anatomy of a message </A> </H3>
-
-<P>Messages contain a selector followed by
-any number of arguments. The selector is a symbol, which appears in the patch
-as a non-numeric string with no white space, semicolons, or commas. The
-arguments may be symbols or numbers. Numbers in Pd are kept in 32-bit floating
-point, so that they can represent integers exactly between -8388608 and
-8388608. (In Max, there are separate data types for integers and floating
-point numbers; Pd uses only float.)
-
-<P> When a message is passed to something (which is often an inlet of a box
-but could be anything that can receive a message), the selector of the message
-is checked against the receiver. If the receiver recognizes messages of that
-selector, it carries out some corresponding action. For instance, here is a
-"float" object:
-
-<CENTER><P>
- <IMG src="fig3.1.jpg" ALT="float object">
-</P></CENTER>
-
-<P> The two rectangles at the top are usually both called "inlets" but
-the one at the left directs incoming messages to the "float" object itself,
-whereas the one at the right directs messages to an auxiliary "inlet"
-object. The float object proper (represented by the left-hand inlet) accepts
-messages with selector "float" and "bang". The right-hand inlet takes only
-the message selector "float". These two selectors, along with "symbol" and
-"list", are usually used to denote an object's main action, whatever it may be,
-so that objects can be interconnected with maximum flexibility.
-
-<P> It is possible to type messages which start with a number,
-which cannot be used as a selector. A single number is always given the
-"float" selector automatically, and a message with a number followed by other
-arguments is given the selector "list".
-
-<H3> <A name="s3.2"> 2.3.2. depth first message passing </A> </H3>
-
-<P> In Pd whenever a message is initiated, the receiver may then send out
-further messages in turn, and the receivers of those messages can send yet
-others. So each message sets off a tree of consequent messages. This tree is
-executed in depth first fashion. For instance in the patch below:
-
-<CENTER><P>
- <IMG src="fig3.2.jpg" ALT="depth first message passing">
-</P></CENTER>
-
-<P> the order of arrival of messages is either A-B-C-D or A-C-D-B. The "C"
-message is not done until the "D" one is also, and the "A" is not done until
-all four are. It is indeterminate which of "B" or "C" is done first; this
-depends on what order you made the connections in (in Max, it's automatically
-sorted right to left).
-
-<P> Message-passing can give rise to infinite loops of the sort shown here:
-
-<CENTER><P>
- <IMG src="fig3.3.jpg" ALT="infinite message passing loop">
-</P></CENTER>
-
-<P> Here the left-hand "+" can't finish processing until the right-hand one has
-been sent the result "2", which can't finish processing that until the
-left-hand one has been sent "3", and so on. Pd will print an error message
-reporting a "stack overflow" if this happens.
-
-<P> However, it is legal to make a loop if there is a "delay" object somewhere
-in it. When the "delay" receives a message it schedules a message for the
-future (even if the time delay is 0) and is then "finished;" Pd's internal
-scheduler will wake the delay back up later.
-
-<H3> <A name="s3.3">
-2.3.3. hot and cold inlets and right to left outlet order </A> </H3>
-
-<P> With few exceptions (notably "timer"), objects treat their leftmost
-inlet as "hot" in the sense that messages to left inlets can result in output
-messages. So the following is a legal (and reasonable) loop construct:
-
-<CENTER><P>
- <IMG src="fig3.4.jpg" ALT="hot and cold inlets">
-</P></CENTER>
-
-<P>Here the "f" is an abbreviation for "float". Note that the "+ 1" output is
-connected to the right-hand inlet of "f". This "cold" inlet merely stores the
-value for the next time the "f" is sent the "bang" message.
-
-<P>It is frequently desirable to send messages to two or more inlets of an object
-to specify its action. For instance, you can use "+" to add two numbers; but
-to do it correctly you must make sure the right hand inlet gets its value
-first. Otherwise, when the left hand side value comes in, "+" will carry out
-the addition (since the left hand inlet is the "hot" one) and will add this
-value to whatever was previously sitting in the right hand inlet.
-
-<P> Problems can arise when a single outlet is connected (either directly or
-through arbitrarily long chains of message passing) to different inlets of a
-single object. In this case it is indeterminate which order the two inlets will
-receive their messages. Suppose for example you wish to use "+" to double a
-number. The following is incorrect:
-
-<CENTER><P>
- <IMG src="fig3.5.jpg" ALT="incorrect inlet connection">
-</P></CENTER>
-
-<P> Here, I connected the left inlet before connecting the right hand one (although
-this is not evident in the appearance of the patch.) The "+" thus adds the
-new input (at left) to the previous input (at right).
-
-<P> The "trigger" object, abbreviated "t", can be used to split out connections
-from a single outlet in a determinate order. By convention, all objects in Pd,
-when sending messages out more than one outlet, do so from right to left. If
-you connect these to inlets of a second object without crossing wires, the
-second object will get its leftmost inlet last, which is usually what you
-want. Here is how to use "trigger" to disambiguate the previous example:
-
-<CENTER><P>
- <IMG src="fig3.6.jpg" ALT="trigger to disambiguate">
-</P></CENTER>
-
-<P> "Cold" (non-leftmost) inlets are almost universally used to store single
-values (either numbers or symbols.) With the exception of "line" and "line~",
-these values are "sticky," i.e., once you set the value it is good until the
-next time you set it. (The "line" exception is for sanity's sake.)
-
-<P> One more question sometimes comes up in execution order, which is
-the order in which two messages are sent to a single "cold" inlet. In this
-situation, since the messages are merged, the last value to be received is
-the value that is used in the computation.
-
-<H3> <A name="s3.4"> 2.3.4. message boxes </A> </H3>
-
-Message boxes are text boxes in which you type a message. When the message
-box is activated, either by clicking on it or sending something to its inlet,
-the message or messages are sent, either to the message box's outlet or
-elsewhere as specified.
-
-<CENTER><P>
- <IMG src="fig3.7.jpg" ALT="message boxes">
-</P></CENTER>
-
-<P>The first of the message boxes above contains the single number 1.5; this
-message has an implicit selector of "float." The second is a list with three
-numbers in it, and in the third, the selector is "my" and the two arguments are
-the number 5 and the symbol "toes."
-
-<P> Multiple messages may be separated by commas as shown:
-
-<CENTER><P>
- <IMG src="fig3.8.jpg" ALT="multiple messages in one box">
-</P></CENTER>
-
-<P>Here the three messages are the numbers 1, 2, and 3, and they are sent in
-sequence (with no intervening time between them, as with the "trigger" object,
-and having depth-first consequences so that whatever chain of actions depending
-on "1" takes place before anything depending on "2" and so on.)
-
-<P> Semicolons may also separate messages. A message following a semicolon must
-specify a symbol giving a destination (in other words, semicolons are like
-commas except that they clear the "current destination"
-so that the next message specifies a new one). The "current destination" is
-at first the message box's own outlet. In the example below, the leading
-semicolon immediately redirects messages from the outlet to an object named
-"fred" (which is here a receive object), and likewise the next message is sent
-to "sue."
-
-
-<CENTER><P>
- <IMG src="fig3.9.jpg" ALT="semicolons to send messages">
-</P></CENTER>
-
-<P>Certain other objects (Pd windows, for example, and arrays) have Pd names and
-can be sent messages this way. Also, the special object "pd" is defined to
-which you may send messages to start and stop DSP.
-
-<P> You can put variables in message boxes as shown below:
-
-<CENTER><P>
- <IMG src="fig3.10.jpg" ALT="variables in message boxes">
-</P></CENTER>
-
-<P>Here, "$1", etc., refer to the arguments of the arriving message (and aren't
-defined if you send a "bang" message or if you click on the message box to
-activate it.) Dollar sign variables are either numbers or symbols depending
-on the incoming message; if symbols, you may even use them to specify variable
-message selectors or destinations.
-
-<H3> <A name="s4"> 2.4. audio signals </A> </H3>
-
-<P>
-Using Pd you can build audio patches which can synthesize musical sounds,
-analyze incoming sounds, process incoming sounds to produce transformed
-audio outputs, or integrate audio processing with other media. This section
-describes how Pd treats audio signals.
-
-<H3> <A name="s4.1"> 2.4.1. sample rate and format </A> </H3>
-
-<P>
-Pd's audio signals are internally kept as 32-bit floating point numbers, so
-you have all the dynamic range you could want. However, depending on your
-hardware, audio I/O is usually limited to 16 or 24 bits. Inputs all appear
-between the values of -1 and 1; and output values will be clipped to that range.
-Pd assumes a sample rate of 44100 unless you override this (
-in Pd's command line or in the "audio setup" dialog).
-
-<P>
-Pd can read or write samples to files either in 16-bit or 24-bit fixed point
-or in 32-bit floating point, in WAV, AIFF, or AU format, via the soundfiler,
-readsf, and writesf objects.
-
-<H3> <A name="s4.2"> 2.4.2. tilde objects and audio connections </A> </H3>
-
-<P>Audio computations in Pd are carried out by "tilde objects" such as "osc~"
-whose names conventionally end in a tilde character to warn you what they
-are. Tilde objects can intercommunicate via audio connections. When audio
-computation is turned on, or when you change the audio network while audio is
-on, Pd sorts all the tilde objects into a linear order for running; then this
-linear list is run down in blocks of 64 samples each; at 44100 Hz. this means
-the audio network runs every 1.45 milliseconds.
-
-<P> Inlets or outlets are configured in Pd either for messages or audio; it's
-an error to connect an audio outlet to a non-audio inlet or vice versa; usually
-these errors are detected at "sort time" when audio is started or the network
-changed with audio running. An object's leftmost inlet may accept both audio
-and messages; any other inlet is either one or the other.
-
-<P>
-The audio network, that is, the tilde objects and their interconnections,
-must be acyclic. If there are loops, you will see the error message at "sort
-time." When errors are reported at sort time there is no easy way to
-find the source of the error. You can build algorithms with feedback using
-nonlocal signal connections.
-
-<P>
-Your subpatches can have audio inlets and outlets via the inlet~ and outlet~
-objects.
-
-<H3> <A name=s4.3> 2.4.3. converting audio to and from messages </A> </H3>
-
-<P> If you want to use a control value as a signal, you can use the sig~ object
-to convert it. The +~, -~, *~, /~, osc~, and phasor~ objects can be configured
-to take control or signal inputs.
-
-<P> The other direction, signal to control, requires that you specify at what
-moments you want the signal sampled. This is handled by the snapshot~ object,
-but you can also sample a signal with tabwrite~ and then get access it via
-tabread or tabread4 (note the missing tildes!). There are also analysis
-objects, the simplest of which is "env~", the envelope follower.
-
-<H3> <A name=s4.4> 2.4.4. switching and blocking </A> </H3>
-
-<P>You can use the switch~ or block~ objects to turn portions of your audio
-computation on and off and to control the block size of computation. There
-may be only one switch~ or block~ object in any window; it acts on the entire
-window and all of its subwindows, which may still have their own nested
-switch~/block~ objects. Switch~ and block~ take a block size and an overlap
-factor as arguments; so for instance, "block~ 1024 4" specifies 1024 sample
-blocks, overlapped by a factor of 4 relative to the parent window. Switch~
-carries a small computational overhead in addition to whatever overhead is
-associated with changing the block size.
-
-<P> Larger block sizes than 64 should result in small increases in run-time
-efficiency. Also, the fft~ and related objects operate on blocks so that
-setting the block size also sets the number of FFT channels. You may wish
-to use block sizes smaller than 64 to gain finer resolutions of message/audio
-interaction, or to reduce "block delay" in feedback algorithms. At the
-(untested) extreme, setting the block size to one allows you to write your
-own recursive filters.
-
-<P> You can use switch~ to budget your DSP computations; for instance you might
-want to be able to switch between two synthesis algorithms. To do this, put
-each algorithm in its own subpatch (which can have sub-sub patches in turn, for
-a voice bank for instance), and switch each one off as you switch the other one
-on. Beware of clicks; if you have a line~ controlling output level, give it
-time to ramp to zero before you switch it off or it will be stuck at a nonzero
-value for the next time it comes back on.
-
-<P> When a subpatch is switched off its audio outputs generate zeros; this
-costs a fairly small overhead; a cheaper way to get outputs is to use throw~
-inside the switched module and catch~ outside it.
-
-<H3> <A name=s4.5> 2.4.5. nonlocal signal connections </A> </H3>
-
-<P>You may wish to pass signals non-locally, either to get from one window to another, or
-to feed a signal back to your algorithm's input. This can be done using
-throw~/catch~, send~/receive~, or delwrite~/delread~ pairs. Throw~ and catch~
-implement a summing bus; throw~ adds into the bus and catch~ reads out the
-accumulated signal and zeros the bus for the next time around. There can be
-many throw~ objects associated with a single catch~, but a throw~ can't talk to
-more than one catch~. You can reset the destination of a throw~ if you want to.
-
-<P> Send~ just saves a signal which may then be receive~d any number of times; but
-a receive~ can only pick up one send~ at a time (but you can switch between
-send~s if you want.)
-
-<P> Don't try to throw~ and catch~ or send~ and receive~ between windows with
-different block sizes. The only re-blocking mechanisms which are well tested
-are inlet~ and outlet~.
-
-<P> When you send a signal to a point that is earlier in the sorted list of tilde
-objects, the signal doesn't get there until the next cycle of DSP computation,
-one block later; so your signal will be delayed by one block (1.45 msec by
-default.) Delread~ and delwrite~ have this same restriction, but here the 1.45
-msec figure gives the minimum attainable delay. For nonrecursive algorithms, a
-simple flanger for example, you might wish to ensure that your delread~ is
-sorted after your delwrite~. The only way to ensure this is to create the
-delread~ after you created the delwrite~; if things get out of whack, just
-delete and re-create the delread~.
-
-<H3> <A name=s5> 2.5. scheduling </A> </H3>
-
-<P>Pd uses 64-bit floating point numbers to represent time, providing sample
-accuracy and essentially never overflowing. Time appears to the user
-in milliseconds.
-
-<H3> <A name=s5.1> 2.5.1. audio and messages </A> </H3>
-
-<P>Audio and message processing are interleaved in Pd. Audio processing is
-scheduled every 64 samples at Pd's sample rate; at 44100 Hz. this gives a
-period of 1.45 milliseconds. You may turn DSP computation on and off by
-sending the "pd" object the messages "dsp 1" and "dsp 0."
-
-<P> In the intervals between, delays might time out or external conditions
-might arise (incoming MIDI, mouse clicks, or whatnot). These may cause a
-cascade of depth-first message passing; each such message cascade is completely
-run out before the next message or DSP tick is computed. Messages are never
-passed to objects during a DSP tick; the ticks are atomic and parameter changes
-sent to different objects in any given message cascade take effect
-simultaneously.
-
-<P> In the middle of a message cascade you may schedule another one at a delay
-of zero. This delayed cascade happens after the present cascade has finished,
-but at the same logical time.
-
-<H3> <A name=s5.2> 2.5.2. computation load </A> </H3>
-
-<P> The Pd scheduler maintains a (user-specified) lead on its computations;
-that is, it tries to keep ahead of real time by a small amount in order to be
-able to absorb unpredictable, momentary increases in computation time. This
-is specified using the "audiobuffer" or "frags" command line flags (see <a
-href="x3.htm" name=s3>getting Pd to run </A>).
-
-<P> If Pd gets late with respect to real time, gaps (either occasional or
-frequent) will appear in both the input and output audio streams. On the
-other hand, disk streaming objects will work correctly, so that you may use
-Pd as a batch program with soundfile input and/or output. The "-nogui"
-and "-send" startup flags are provided to aid in doing this.
-
-<P> Pd's "realtime" computations compete for CPU time with its own GUI, which
-runs as a separate process. A flow control mechanism will be provided someday
-to prevent this from causing trouble, but it is in any case wise to avoid
-having too much drawing going on while Pd is trying to make sound. If a
-sub-window is closed, Pd suspends sending the GUI update messages for it;
-but not so for miniaturized windows as of version 0.32. You should really
-close them when you aren't using them.
-
-<H3> <A name=s5.3> 2.5.3. determinism </A> </H3>
-
-<P>All message cascades that are scheduled (via "delay" and
-its relatives) to happen before a given audio tick will happen as scheduled
-regardless of whether Pd as a whole is running on time; in other words,
-calculation is never reordered for any real-time considerations. This is done
-in order to make Pd's operation deterministic.
-
-<P> If a message cascade is started by an external event, a time tag is given
-it. These time tags are guaranteed to be consistent with the times at which
-timeouts are scheduled and DSP ticks are computed; i.e., time never decreases.
-(However, either Pd or a hardware driver may lie about the physical time an
-input arrives; this depends on the operating system.) "Timer" objects which
-measure time intervals measure them in terms of the logical time stamps of the
-message cascades, so that timing a "delay" object always gives exactly the
-theoretical value. (There is, however, a "realtime" object that measures real
-time, with nondeterministic results.)
-
-<P> If two message cascades are scheduled for the same logical time, they are
-carried out in the order they were scheduled.
-
-<H3> <A name=s6> 2.6. semantics </A> </H3>
-
-This section describes how objects in Pd are created, how they store data and
-how object and other boxes pass messages among themselves.
-
-<H3> <A name=s6.1> 2.6.1. creation of objects </A> </H3>
-
-The text in a box has a different function depending on whether it is a message,
-atom (number/symbol), or object box. In message boxes the text specifies the
-message or messages it will send as output. In atom boxes the text changes
-at run time to show the state of the box, which is either a number or a symbol.
-
-<P> In an object box, as in a message box, the text specifies a message; but
-here the message is to be passed to Pd itself, once, and the
-message's effect is to create the object in question. When you open a file,
-all the objects created are created using their text as "creation messages."
-If you type a new message into an object box (or change it), the old object is
-destroyed and the message is used to create the new one.
-
-<P> The selector of the message (the first word in the message) is a selector
-which Pd interprets to mean which type of object to create. Any message
-arguments (called "creation arguments") are used to parameterize the object
-being created. Thus in "makenote 64 250" the selector "makenote" determines
-the class of object to create and the creation arguments 64 and 250 become the
-initial velocity and duration.
-
-<H3> <A name=s6.2> 2.6.2. persistence of data </A> </H3>
-
-Among the design principles of Pd is that patches should be printable, in the
-sense that the appearance of a patch should fully determine its functionality.
-For this reason, if messages received by an object change its action, since the
-changes aren't reflected in the object's appearance, they are not saved as part
-of the file which specifies the patch and will be forgotten when the patch is
-reloaded. In the same way, if you delete and then recreate an object the
-original object's state is not retained but is instead reinitialized (possibly
-as specified by creation arguments.)
-
-<P> An exception is made for subpatches whose "state" is the configuration of
-the subpatch; as a special case, this configuration is restored when the
-patch is read from a file. Also, if you rename the subpatch, for instance
-typing "pd jane" instead of "pd spot," the contents of the patch are preserved
-and only the text in the object box and the window title of the subpatch are
-changed.
-
-<P> It is probably bad style to specify creation arguments ala "makenote 64 250"
-if you are going to override them later; this is confusing to anyone who tries
-to understand the patch.
-
-<H3> <A name=s6.3> 2.6.3. message passing </A> </H3>
-
-Messages in Pd consist of a selector (a symbol) and zero or more arguments
-(which may be symbols or numbers). To pass a message to an object, Pd first
-checks the selector against the class of the object. Message boxes all are
-of one class and they all take the same incoming messages and dispense them
-according to their state, that is, the text typed into the box. The same
-holds for atom boxes (number or symbol) except that their state may change
-(it consists of the number or symbol showing).
-
-<P> Object boxes may have many different classes. The class is usually
-determined by the selector of the creation message, i.e., the first atom of the
-creation message which is usually a symbol.
-
-<P> Each class comes with a fixed collection of messages it may be sent. For
-example, the "float" or "f" object takes "bang" and "float." These messages
-are sent to "float" objects (objects whose class is float) via the leftmost,
-hot inlet. (The right inlet is a separate, auxiliary object.) Objects of
-class "float" respond to the message "bang" by outputting their current value,
-that is, by sending a "float" message to their outlet. They respond to "float"
-messages by setting their value and then outputting it.
-
-<P> Each other class (like "float") in Pd has its own protocol for responding
-to messages it is sent, and may take "float" and "bang" messages, or others
-in addition or instead of them.
-
-<H3> <A name=s6.4> 2.6.4. inlets and lists </A> </H3>
-
-The leftmost connection point at the top of most objects represents the object
-itself. Any other dark rectangle is a separate object called an "inlet"
-although in Pd there are 4 individual inlet classes. The class of the inlet
-determines which messages it will take: symbol, float, or other; and the inlet
-forwards the message either to the object proper or to some proxy, usually
-one that the object creates for the occasion.
-
-<P> Unless they arrange otherwise by defining a "list" method, objects respond
-to the "list" message by distributing the arguments of the message to their
-inlets, except for the first argument which is passed as a "float" or
-"symbol" message to the object proper.
-
-<H3> <A name=s6.5> 2.6.5. dollar signs </A> </H3>
-
-In message or object boxes, message arguments starting with a dollar sign
-and a number (like "$1" or "$3-bazoo") are variables which are substituted
-with values supplied as part of the environment the message is passed in.
-In the case of message boxes, the environment consists of the arguments of
-the "list" message (possibly extrapolated from "bang," "float,"
-or other) that the message box is responding to. Thus, if a message box gets
-"23 skidoo" and if it contains the text, "$2 until $1," out comes the message,
-"skidoo until 23."
-
-<P> Object boxes contain text which forms a message to be sent to Pd to create
-and initialize the object. Here, $1, etc., are taken from the context in which
-the patch was loaded. When the patch is a new document or opened from a file
-the "$" variables are undefined. But if the patch is an abstraction (see the
-next section) they are
-taken from the abstractions' creation arguments.
-
-<P> Constructions such as "$1-x" are expanded by string concatenation. This
-is the mechanism for making local variables. In particular, $0 in an abstraction
-is a counter which is guaranteed to be unique to that abstraction, so sends and
-receives with names like "$0-bear" can be used as local send/receive pairs.
-
-<P> Note that the expansion of variables such as $0 and $1 only works at the
-beginning of the symbol; so, for instance, "rats-$1" will not be expanded.
-Occasionally you may want to have double or triple substitutions; this can
-be done one stage at a time by nesting abstractions (with each subpatch
-adding its own $-variable to the beginning of a symbol and passing that on
-as argument to a further abstraction.)
-
-<P> For example, if you want to get dog-food, dog-ears, and cat-food, for
-example, have an abstraction "a1" that invokes an abstraction "a2" twice, as
-"a2 $1-food" and "a2 $1-ears", and then in a third patch call a1 twice, as
-"a1 cat" and "a1 dog". Inside the four "a2" copioes, $1 will evaluate to
-"dog-food", "cat-food", "dog-ears", and "cat-ears".
-
-<H3> <A name="s7"> 2.7. subpatches </A> </H3>
-
-Pd offers two mechanisms for making subpatches, called "one-off subpatches"
-and "abstractions." In either case the subpatch appears as an object box
-in a patch. If you type "pd" or "pd my-name" into an object box, this creates
-a one-off subpatch. For instance, in this fragment:
-
-<CENTER><P> <IMG src="fig7.1.jpg" ALT="subpatch"> </P></CENTER>
-
-the box in the middle, if clicked on, opens the sub-patch shown here:
-
-<CENTER><P> <IMG src="fig7.2.jpg" ALT="open subpatch window"> </P></CENTER>
-
-<P> The contents of the subpatch are saved as part of the parent patch, in
-one file. If you make several copies of a subpatch you may change them
-individually.
-
-<P> The objects, "inlet,", "inlet~," "outlet," and "outlet~,", when put in a
-subpatch, create inlets and outlets for the object box containing the subpatch.
-This works equally for one-off subpatches and abstractions. The inlet~ and
-outlet~ versions create inlets and outlets for audio signals. You can't mix
-messages and audio in a subpatch inlet or outlet; they must be one or the other
-exclusively. Inlets and outlets appear on the invoking box in the same left-to-right
-order as they appear in the subpatch.
-
-<H3> <A name="s7.1"> 2.7.1. abstractions </A> </H3>
-
-<P> To make an abstraction, save a patch with a name such as "abstraction1.pd"
-and then invoke it as "abstraction1" in an object box:
-
-<CENTER><P> <IMG src="fig7.3.jpg" ALT="abstraction"> </P></CENTER>
-
-<P> Here we're invoking a separate file, "abstraction1.pd", which holds the
-patch shown here (the border is the same as for the subpatch above):
-
-<CENTER><P> <IMG src="fig7.4.jpg" ALT="abstraction example"> </P></CENTER>
-
-You may create many instances of "abstraction1" or invoke it from several
-different patches; and changing the contents of "abstraction1" will affect all
-invocations of it as they are created. An analogy from the "c" programming
-language is that one-off subpatches are like bracketed blocks of code and
-abstractions are like subroutines.
-
-<P> Abstractions are instantiated by typing the name of a patch (minus the ".pd"
-extension) into an object box. You may also type arguments; for instance if
-you have a file "my-abstraction.pd" you may type "my-abstraction 5" to set the
-variable $1 to 5. This is defined only for object boxes (not for messages) in
-the abstraction. (For message boxes, "$1", etc, have a different meaning as
-described above.) If you want to send a message with a $1 in the sense of a
-creation argument of an abstraction, you must generate it with an object box
-such as "float $1", "symbol $1", or perhaps "pack $1 $2", which may then be
-sent to a message box.
-
-<P> The corresponding feature in Max (both Opcode and Ircam) was the "#1"
-construct. In a Max abstraction, "#1", etc., are replaced by the creation
-argument. This has the disadvantage that you can't edit the abstraction as
-instantiated in the patch since the "#" variables are substituted. In Pd the
-"$" variables in object boxes are spelled literally as "$" variables so that
-it's meaningful to edit them from within their calling patch. On the Pd side,
-however, there is the disadvantage that it's confusing to have "$" expanded at
-a different time in an object box than in a message box. In an object box, the
-"$" argument is expanded at creation time, and in a message box, at message
-time.
-
-<H3> <A name="s7.2"> 2.7.2. Graph-on-parent subpatches </A> </H3>
-
-If you open the "properties" dialog for a subpatch or an abstraction, you can
-check the "graph on parent" box to have the controls of the subpatch/abstraction
-appear on the parent. For instance, here is an invocation of "abstraction2":
-
-<CENTER><P> <IMG src="fig7.5.jpg" ALT="graph-on-parent abstraction"> </P></CENTER>
-
-where the patch "abstraction2.pd" contains:
-
-<CENTER><P> <IMG src="fig7.6.jpg" ALT="inside graph-on-parent abstraction"> </P></CENTER>
-
-Here, the number box in the abstraction shows up on the box that invoked
-the abstraction. The "graph on parent" flag is set in the abstraction
-(and is saved as part of the abstraction); to set it, open the "properties"
-dialog for the "abstraction2" canvas by right-clicking on any white space
-in the patch.
-
-<P> To open the subpatch, right click on the object and select "open". (On
-Macintoshes without a 2-button mouse, you can double-click in edit mode
-instead.) It doesn't work just to click on the object in run mode since clicks
-are sent to visible controls and/or arrays.
-
-<P> When the sub-patch is closed, all controls in it appear on the object
-instead; so the number box in the sub-patch in the example above is the same
-one as you see in the box. Only controls are made visible in this way
-
-<H3> <A name=s8> 2.8. numeric arrays </A> </H3>
-
-Linear arrays of numbers recur throughout the computer musician's bag of tricks,
-beginning with the wavetable oscillator. The wavetable oscillator later was
-reinvented as the looping sampler. Also, table lookup is used for nonlinear
-distortion of audio signals. In the domain of control, arrays of numbers
-can specify control mappings, probability densities, voicing data, and much
-more.
-
-<P> Arrays in Pd should be allocated (and possible read in from a file) before
-beginning to make sound, since memory allocation and disk operations may take
-long enough to cause audio buffer overruns or underruns. Pd provides two ways
-to define new arrays, as "graphs" and "tables". In either case the array
-has a pre-defined name and size (i.e., number of points). Elements of the
-array are stored as floating-point numbers, 4 bytes apiece
-
-<P> If you use an array to store a one-second sound at 44.1 kHz you will need
-176 kilobytes, or a one-minute sound, 10.6 megabytes. To store a sound with
-two or more channels, use a separate array for each channel.
-
-<P> Arrays are also useful as transfer functions, for example for nonlinear
-distortion of an audio signal, or to map a control onto a synthesis parameter.
-In situations like this one typically uses much shorter arrays, of no more
-than a few hundred elements. They are also useful for storing measured
-spectra derived from the fft~ objects, and probably for many other uses.
-
-<P> Arrays usually appear within subpatches created to house them, whether
-in "graph on parent" form (so that you see them within a rectangle drawn on
-the containing patch), or as a regular subpatch (which you see as a text box.)
-In the "graph on parent" form, an array appears as shown:
-
-<CENTER><P> <IMG src="fig8.1.jpg" ALT="array"> </P></CENTER>
-
-<P> Arrays are indexed from 0 to N-1 where N is the number of points in the
-array. You can read an array value using the tabread object:
-
-<CENTER><P> <IMG src="fig8.2.jpg" ALT="array indexing"> </P></CENTER>
-
-Here we see that the third point of the array (index 2) has the value 0.4.
-To write into the array you can use the tabwrite object:
-
-<CENTER><P> <IMG src="fig8.3.jpg" ALT="setting an value in an array"> </P></CENTER>
-
-In this example, sending the message sets the third element to 0.5. (You
-may also send the two numbers to the two inlets separately.)
-
-<P> The two previous examples showed control operations to read and write from
-and to arrays. These may also be done using audio signals. For example,
-the patch below creates a 440 Hz. tone with "array1" as a waveform:
-
-<CENTER><P> <IMG src="fig8.4.jpg" ALT="setting an array with a waveform"> </P></CENTER>
-
-Here phasor~'s outputs a sawtooth wave, repeating 440 times per second, whose
-output range is from 0 to 1. The multiplier and adder adjust the range from
-1 to 11, and then the values are used as indices for tabread4~, which is a
-4-point interpolating table lookup module. (Much more detail is available in
-the audio example patches in the "pure documentation" series.)
-
-<P> To create a new array, select "array" from the "put" menu. Up will come
-a dialog window to set initial properties of the array. By default, a
-new graph is created to hold the array, but it may also be housed in the
-most recently created graph instead. Other properties may be specified there
-and/or changed later using the "properties" dialog.
-
-<P> If you select "properties" on an array in a graph, you two dialogs, one
-for the array and one for the graph. The array dialog looks like this:
-
-<CENTER><P> <IMG src="fig8.5.jpg" ALT="array properties window"> </P></CENTER>
-
-You may use this to change the name and size, in addition to another property,
-"save contents". If "save contents" is selected, the array's values are stored
-in the containing patch; otherwise they're initialized to zero each time the
-patch is reloaded. If you intend to use arrays to store sounds, you will
-probably not wish to store them in the patch but as separate soundfiles. This
-will be more efficient, and you may also then use a sound editor to modify them
-outside Pd.
-
-<P> If you check "delete me" and then "OK", the array will be deleted. This is
-an odd interface for deleting an object, and is only provided because Pd
-lacks a mechanism for selecting arrays (so that "cut" could serve).
-
-<P> The graph dialog (which also pops up) is shown here:
-
-<CENTER><P> <IMG src="fig8.6.jpg" ALT="graph properties"> </P></CENTER>
-
-<P> The X bounds initially range from 0 to the number of points in the table
-minus one (this is a good choice for arrays, although graphs holding other
-kinds of objects might require other X bounds.) The Y bounds should be
-chosen to reflect the natural range of the table, so that stored sounds
-would naturally range from -1 to 1, but a sequence of frequency values might
-range from 0 to 20,000. Finally, you choose the screen size of the graph,
-width and height, in screen pixels.
-
-<P> Many other operations are defined for arrays; see the related patches
-in the tutorial (starting at 2.control/15.array.pd) for more possibilities.
-
-<H3> <A name=s9> 2.9. Data structures </A> </H3>
-(Note: this section is adapted from an article submitted to ICMC 2002.)
-
-<P> The original idea in developing Pd was to make a real-time computer music
-performance environment like Max, but somehow to include also a facility for
-making computer music scores with user-specifiable graphical representations.
-This idea has important precedents in Eric Lindemann's Animal and Bill Buxton's
-SSSP. An even earlier class of precedents lies in the rich variety of paper
-scores for electronic music before it became practical to offer a
-computer-based score editor. In this context, scores by Stockhausen (<I>
-Kontakte</I> and <I> Studie II</I>) and Yuasa (<I>Toward the Midnight Sun</I>)
-come most prominently to mind, but also Xenakis's <I>Mycenae-alpha</I>, which,
-although it was realized using a computer, was scored on paper and only
-afterward laboriously transcribed into the computer.
-
-<P> Pd is designed to to offer an extremely unstructured environment for
-describing data structures and their graphical appearance. The underlying
-idea is to allow the user to display any kind of data he or she wants to,
-associating it in any way with the display. To accomplish this Pd introduces
-a graphical data structure, somewhat like a data structure out of the C
-programming language, but with a facility for attaching shapes and colors to
-the data, so that the user can visualize and/or edit it. The data itself can
-be edited from scratch or can be imported from files, generated
-algorithmically, or derived from analyses of incoming sounds or other data
-streams.
-
-Here is one simple
-example of a very short musical sketch realized using Pd:
-
-<CENTER><P> <IMG src="fig9.1.jpg" ALT="graphical score"> </P></CENTER>
-
-The example, which only lasts a few seconds, is a polyphonic collection of
-time-varying noise bands. The graphical ``score" consists of six objects, each
-having a small grab point at left, a black shape to show dynamic, and a colored
-shape to show changing frequency and bandwidth. The horizontal axis represents
-time and the vertical axis, frequency (although, as explained later, this
-behavior isn't built into pd). The dynamic and frequency shapes aren't
-constrained to be connected or even to be proximate, but since they pertain to
-the same sound their horizontal positions line up. In this example the last
-(furthest-right) object is percussive (as seen by the black shape) and has a
-fixed frequency and bandwidth, whereas the large, articulated shape in the
-center has a complicated trajectory in both frequency and dynamic. The color
-of the frequency trace determines the voice number used to realize it.
-
-<P> Each object is thus composed of a combination of scalar values (color;
-aggregate position in X and Y coordinates) and array values (time/value
-pairs for the black traces and time/frequency/bandwidth triples for the
-colored ones.) This is all specified by the user using Pd's ``template"
-mechanism.
-
-<P> Here is the template associated with the graphical objects
-shown above:
-
-<CENTER><P> <IMG src="fig9.2.jpg" ALT="template for graphical score"> </P></CENTER>
-
-Templates consist of a data structure definition (the "struct" object) and
-zero or more drawing instructions ("filledpolygon" and "plot"). The "struct"
-object gives the template the name, "template-toplevel." The data structure
-is defined to contain three floating point numbers named "x", "y", and
-"voiceno," and two arrays, one named "pitch" whose elements belong to another
-template named "template-pitch," and similarly for the array "amp."
-
-<P> In general, data structures are built from four data types: scalar floats
-and symbols, arrays (whose elements share another, specified template) and
-lists (whose elements may have a variety of templates). The contents of a Pd
-window themselves form a list. Pd's correlate of Max's "table" object is
-implemented as a top-level array whose elements are scalars containing a single
-floating-point number.
-
-<P> Data structures in Pd may nest arbitrarily deeply using the array and list
-types. For example, a collection of sinusoidal tracks from an analysis engine
-could be implemented as an array of arrays of (pitch, amplitude)
-pairs; this appears as example 12 in Pd's FFT object online tutorial.
-
-<P> After the "struct" object in the template shown above, the remaining
-three objects are <I> drawing instructions </I> , first for a rectangle
-("filledpolygon"), and then for two arrays. The various graphical
-attributes that are specified for drawing instructions may be numerical
-constants or data structure field names; in the latter case the value varies
-depending on the data. For instance, the second creation argument to
-"plot" is the color. The first "plot" plots the "amp" field and the
-color is given as 0, or black. The second one plots "pitch" using the color
-"voiceno". In this way the color of the second trace is attached to the
-"voiceno" slot in the data structure, so that color will vary according to its
-"voiceno" slot.
-
-<H3> <A name="s9.1"> 2.9.1. Traversal </A> </H3>
-
-<P> Pd objects are provided to traverse lists and arrays, and to address
-elements of data structures for getting and setting. Here is a patch showing
-how these facilities could be used, for example, to sequence the graphical
-score shown above:
-
-<CENTER><P> <IMG src="fig9.3.jpg" ALT="traversal example patch"> </P></CENTER>
-
-<P> Pd has no built-in sequencer, nor even any notion that "x" values should be
-used as a time axis. (However, a "sort" function is provided, which reorders
-a list from left to right, on the assumption that users might often want to use Pd
-data collections as x-ordered sequences.) Recording sequences of events into
-lists, and/or playing the lists back as sequences, are functionalities that the
-user is expected to supply on top of Pd's offerings, which, it is hoped, would
-allow those functionalities within a much larger range of possibilities, to
-include random re-orderings of events, score following, self-modifying scores,
-reactive improvisation, and perhaps much more.
-
-<P> Traversal of data is made possible by adding a new type of atom, "pointer",
-to the two previously defined types that make up messages, to wit, numbers and
-symbols. Unlike numbers and symbols, pointers have no printed form and thus
-can't be uttered in message boxes. Traversal objects such as "pointer" and
-"get" (among several others) can generate or use pointers. The pointer data
-type is also integrated into pipe-fitting objects such as "pack",
-"unpack",
-and "route".
-
-<P> In the patch shown above, the topmost "pointer" object holds a pointer to
-the next object to "play" (by sending it to one of the "voice"
-abstractions at bottom.) The pointer object takes a "traverse" message to
-set it to the head of the list (named "pd-data"), and "next" messages to
-move to (and output) the next datum in the list (i.e., the next in the list of
-six objects in the score). Another "pointer" object is also used, further
-down, as a storage cell for pointers just as "float" is for numbers.
-
-<P> The center of any sequencer is always the "delay" object, which must be
-fed the time difference between each event (including the non-event of hitting
-"start") and the next. As we extract each of the six objects in the score, we
-must wait the delay for playing that object, and then send its pointer to one
-of the "voice" abstractions to play it. However, we have to inspect the
-object itself to know the delay before playing it. So, in the loop, we peel off
-the first remaining object to play and inspect the time difference between it
-and the previous one, using this value to set the delay, but also storing the
-pointer in the lower "pointer" and "pack" objects.
-
-<P> The time difference needed to set the delay object is obtained using the
-"get template-toplevel x" object. (This is converted to incremental time
-("-"), corrected for tempo, and fed to the delay.) Pd provides
-the "get" and "set"
-objects for reading and writing values from data structures.
-The two "get" objects shown here obtain the "x" and "voiceno" fields
-of the current object. The template name (template-toplevel) is supplied
-to the "get" objects so that they can look up the offset of the necessary
-field(s) in advance, for greater run-time efficiency.
-
-<P> Once the delay has expired, the object's pointer is recalled (the lower
-"pointer" object), and the voice number is recalled. This is packed with
-the pointer itself and routed, so that the pointer goes to the appropriate
-voice. The voice number is shown as the color of the frequency trace in
-"999" units (first digit red, second green, third blue) and the "route" is
-arbitrarily set up to select among the six primary and secondary colors plus
-black.
-
-<P> The details of extracting the pitch and dynamic breakpoints from the arrays
-defined in the template are managed in the "voice" abstraction.
-The "voice"
-abstraction receives a
-pointer to a given object and manages the sequencing of the arrays; so it
-contains two sequencers itself. The nesting of the overall structure of
-the sequencer patch mirrors the nesting of the original data structures.
-Finally, the voice abstraction puts its audio output on a summing bus.
-
-<P> More general patches can easily be constructed which access heterogeneous lists
-of objects (having different templates). In this way, an arbitrarily rich
-personal "score language" can be developed and sequenced.
-
-<H3> <A name=s9.2> 2.9.2. Accessing and changing data </A> </H3>
-
-<P> In general, accessing or changing data is done via "pointers" to
-"scalars". Numbers and symbols within scalars are accessed using the
-"get" object and changed, in the same way, using "set". Since lists
-and arrays are composed of scalars, every actual number or symbol in a data
-heap will be a number or symbol element of some scalar. To access them, it
-suffices to have objects to chase down elements of lists and arrays (given
-either a global name or a pointer to the containing scalar).
-
-<P> Lists are traversed in the way shown above; to get to a sublist of a scalar,
-the "get" object will provide a pointer, in the same way as it provides
-"float" or "symbol" elements of scalars. For arrays, an
-"element" object is provided which, given a scalar, a field name and
-a number, chases down the numbered, scalar, element of the named array field.
-
-<P> To alter "float" or "symbol" elements of scalars is straightforward
-using the "set" object, but arrays and lists can't be set by assignment;
-there is no suitable data type available within messages. Lists could
-possibly be "settable" by passing pointers to other lists, but permitting this
-would have required either automatically doing deep copies of data structures
-to carry out the assignments, or else implementing a garbage collecting memory
-management system, either of which would be difficult to realize within
-real-time computation time constraints. Instead, all the data hanging from a
-scalar is considered as belonging to that scalar, and is left in memory until
-the scalar is deleted; the data may be changed atom by atom, but primitives
-are not provided which would imply unpredictable execution times.
-
-<P> The "getsize" and "setsize" objects are provided to access or change
-the number of elements in the array. For lists, an "append" object
-appends a new scalar for a given template to a list, after the element pointed
-to. (To insert a scalar at the beginning of a list, the pointer can be set to
-the "head" of the list, a formal location before the first list item.)
-Deletion is less flexible; the only operation is to delete an entire list.
-(There's no reason not to provide finer-grain deletion mechanisms except that
-it's not clear how to protect against stale pointers efficiently, except by
-voiding the entire collection of pointers into a list.)
-
-<H3> <A name=s9.3> 2.9.3. Editing </A> </H3>
-
-<P> The graphical score shown above can be edited by dragging breakpoints, or
-by adding and deleting them, using mouse clicks. Also, entire objects or
-collections of them may be copied, pasted, and dragged around the screen.
-Alternatively, there is an editable (or computer generate-able or parse-able)
-text representation for the data, which may be seen or changed in a dialog
-window or read and written to external text files.
-
-<P> Since the graphical presentation of data objects is determined by drawing
-instructions, the drawing instructions are interpreted backwards to alter data
-as a result of mouse operations. If a given graphical dimension is controlled
-by a variable, that variable is then controlled by dragging along that
-dimension; if the dimension is constant, it can't be altered by dragging.
-
-<P> Tricky situations can arise when the user changes the contents of templates.
-A change in drawing instructions can be accommodated by simply tracking
-down and redrawing all data objects using the template. However, changing
-the "struct" object itself make for less straightforward situations. The
-user might wish to reorder fields, delete them, add new ones, or rename them.
-When a "struct" object changes, Pd automatically conforms the data from the old
-structure to the new one. Fields with the same name as previously are maintained
-(reordering them as necessary); and if a field disappears but another of the
-same type appears, the new one(s) are taken to be renamings of the old one(s)
-in order of appearance. New fields which cannot be matched in this way with
-previously existing ones are assumed to be new and are initialized.
-
-<P> It can happen that two "struct" objects compete to define the same data
-structure, or that the user reads in data from a file which expects a different
-version of the structure, or alternatively, that the "struct" object for
-existing data objects disappears. For this reason, Pd maintains a private
-representation of the last active version of a "struct" until all
-similarly named "structs," as well as all data using that "struct", have
-disappeared. If the user introduces a new version of the "struct" and only
-later deletes the "current" one, the data is only conformed to the new version
-once the old one is deleted. In this way we avoid getting into situations
-where data is left hanging without its structure definition, or where data ends
-up belonging to two or more structures of the same name. The worst that can
-happen is that data may lose their drawing instructions, in which case Pd
-supplies a simple default shape.
-
-<H3> <A name=s9.4> 2.9.4. Limitations </A> </H3>
-
-<P> When examples get more complicated and/or dense than the one shown here, it
-becomes difficult to see and select specific features of a data collection;
-more work is needed to facilitate this.
-There should be some facility for turning drawing instructions on and off, or
-perhaps for switching between versions of a template, depending on the user's
-desired view. There should also be a callback facility in the template for
-when an object is edited with the mouse, so that the user can bind actions to
-mouse clicks.
-
-<P> More generally, the collection of traversal objects that Pd provides is
-adequate to support a variety of modes of data collection and use, such as
-analysis and sequencing. But the patches required to traverse the data
-collections are not always simple. It would be desirable to find a more
-straightforward mechanism than that provided by the "pointer", "get"
-and "set" objects.
-
-<P> The "data" facility, although part of the original plan for Pd, has only
-recently been implemented in its current form, and as (hopefully) the user base
-grows there will surely be occasions for many further extensions of the data
-handling primitives and the graphical presentation and editing functions.
-
-</BODY>
-</HTML>
-
diff --git a/desiredata/doc/1.manual/x3.htm b/desiredata/doc/1.manual/x3.htm
deleted file mode 100644
index 9bc0f537..00000000
--- a/desiredata/doc/1.manual/x3.htm
+++ /dev/null
@@ -1,790 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
-
-<HTML>
- <HEAD>
- <TITLE>Pd Documentation 3</TITLE>
- <meta http-equiv="Content-Type" content="text/html">
- <link rel="stylesheet" type="text/css" href="pdmanual.css" media="screen">
- </HEAD>
-
-
-<BODY>
-
-<H2>Pd Documentation chapter 3: Getting Pd to run</H2>
-
-<P>
-<A href="index.htm#s3"> back to table of contents </A>
-<BR><BR>
-</P>
-
-<P>Pd runs under Irix, Microsoft Windows, Linux, and MacOS 10.2 (Jaguar).
-How to get Pd up and running depends on your operating system,
-but the overall strategy is the same.
-You must first get and install it, and
-then untangle whatever problems arise in handling audio and MIDI input
-and output, and finally get Pd to meet its real-time obligations reliably.
-
-<P> Installation instructions are platform-specfic; the following four
-sections
-will describe what to do for various operating systems you might have.
-In case of trouble also consult the Pd mailing list archive on
- <A href="http://iem.kug.ac.at/mailinglists/pd-list/">
- http://iem.kug.ac.at/mailinglists/pd-list/</A>
-, which often has late-breaking news about configuration problems and solutions.
-The rest of this section describes how to get audio and MIDI to work.
-
-<H3> <A name=s1.0> 3.1. Audio and MIDI </A> </H3>
-
-<P>
-To test audio and MIDI, start Pd and select "test Audio and MIDI" from the
-"Media" menu. You should see a window like this:
-
-<CENTER><P>
- <IMG src="fig11.1.png" ALT="test tone patch">
-</P></CENTER>
-
-<P> First, try to get Pd to play a sine wave over your speakers. The "TEST
-TONE" control at top left turns this on and off. Normally, all the output
-channels are turned on so that when you turn the tone on (to a soft -40 dB or a
-louder -20 dB) you should get output on the first six of your output channels.
-(If you have fewer than six output channnels open, the extra
-channels aren't played; and if you have more, this particular patch won't
-use them.)
-
-<P> If there's anything wrong, the most likely outcome is that you will hear
-nothing at all. This could be for any of at least three reasons: Pd might
-have failed to open the audio device; the audio card's output volume might
-be set to zero; or your audio system might not be set to amplify the computer
-output.
-
-<P> The number boxes labeled "AUDIO INPUT" show the levels of incoming
-audio, in dB, with 100 being maximum. (Incoming signals may clip at
-RMS levels below 100; for instance, a sinusoid clips at about 97 dB.)
-Any DC present in the input (such as you get with cheap audio hardware)
-will show up as level unless you turn on the "input hipass" toggle
-at right; then the DC component is filtered out before metering.
-
-<P> To test the quality of audio input and output, turn on "monitor"
-(also at right) which causes the inputs to be played to the outputs at
-unit gain. You should hear a faithful, non-distored copy of whatever is
-sent through the patch.
-
-<P> It is easy to get two copies of Pd running by accident; on most machines
-only one at a time may be inputting and outputting sound. (Some copy of Pd
-might have audio or MIDI devices open and prevent the copy you're trying to use
-from getting access to them.) Having extra
-copies of Pd around will also eat CPU cycles uselessly.
-
-<P>
-You may be interested in getting only audio output or audio input, or
-you may need both to run simultaneously. By default, Pd will try to run
-both, but if you don't need either input or output, you may find that Pd
-runs more reliably, or at least more efficiently, with the unused direction
-turned off. This may be specified in Pd's command line flags or using the
-"audio settings" dialog panel.
-
-<P>
-Depending on your application you will have a more or less stringent latency
-requirement. Ideally, when any input (audio, MIDI, keyboard, network) is
-available, the outputs (in particular the audio output) should react instantly.
-In real life, it is necessary to buffer the audio inputs and outputs, trying
-always to keep some number of milliseconds ahead of real time to prepare for the
-inevitable occasions where the CPU runs off to service some different task
-from Pd. How small this latency can be chosen depends on your OS and your
-audio driver.
-
-<P> TIP: If Pd starts up but you get distortion or glitches in the audio
-output, this could be either because the "audio I/O buffer" isn't big enough,
-or else because the CPU load of the patch you're running is too great for the
-machine you have, or else because the ADC and DAC are out of sync or even at
-different sample rates. To test for the first possibility, try increasing the
-audio latency in the command line or the "audio settings" dialog (but see also
-under your OS below.) For the second, start up your favorite performance
-monitor program; and for the third, try starting Pd up with ADCs disabled.
-
-<P> In addition to the "test audio and MIDI" patch, the "Media" menu
-contains items for controlling audio and MIDI settings. The first two
-items, "Audio on" and "Audio off", open or close the audio devices and
-start or stop Pd's audio computation.
-
-<P> If there is a choice of
-audio API to make, the Media menu will display them. (On Linux, they are
-OSS, ALSA, and Portaudio; on Windows, you get MMIO and ASIO). More information
-about the APIs appears in the sections below.
-
-<P> Next is the "Audio settings..." menu item, which opens a dialog like this:
-
-<CENTER><P>
- <IMG src="fig11.2.png" ALT="audio settings dialog">
-</P></CENTER>
-
-The exact choices you get depend on the operating system and API. The sample
-rate controls both audio output and input. The audio throughput delay is
-the nominal amount of time, in milliseconds, that a sound coming into the
-audio input will be delayed if it is copied through Pd straight to the
-output. Naturally you would like this to be as small as possible, but,
-depending on OS, API, and even the specific choice of audio hardware, there
-will be a limit to how small you can make this. You can typically get
-10 msec on linux (and lower still if you use special tricks), 30 msec on Mac
-OSX, and 60 msec on Windows (but note that there might be ways that a
-patient Windows user can reduce this).
-
-<P> Next you get a choice of input and output device. If you want to open
-more than one, hit "use multiple devices" and you'll be allowed up to 4
-in and 4 out. Each audio device is 2 channels by default, but you may
-specify more if your hardware supports it.
-
-Other parameters may be tweaked using the command line; see under
-<A href=#s4> preferences and startup options </A>.
-
-<H6> MIDI </H6>
-
-<A> The "channel message" midi objects in Pd
-such as notein or pgmout will take channels 1-16 to mean the first open MIDI
-port, 17-32 the second one, and so on. The midiin, sysexin, midiout objects
-give you a separate inlet to specify which of the open MIDI port numbers
-you want.
-
-<P> System exclusive MIDI message input and output is theoretically supported
-in version 0.37 but does not work correctly on windows, even in 0.38.
-
-
-<H3> <A name=s1.1> 3.2. Installing Pd in Microsoft Windows </A> </H3>
-
-<P> Pd should work under any version of Windows since 95. You can download as
-a self-extracting archive (a ".exe" file). Run this and select a destination
-directory when prompted, such as "\pd" or "Program Files\pd".
-
-<P> If for example you put Pd in "C:Program Files\pd", the executable program
-will be "C:Program Files\pd\bin\pd". You can simply adjust your path to
-include C:\pd\bin and then invoke "pd" in a command prompt window. You can also
-make a shortcut to the executable program (left-click on it and drag to the
-desktop, for example.)
-
-<P> Pd requires "TCP/IP networking" to be turned on. This doesn't mean you
-have to be on a real network, but simply that Pd actually consists of two
-programs that make a "network link" (locally) to intercommunicate.
-
-<H4> Audio in Microsoft Windows </H4>
-
-<P>
-You can ask for a list of audio and MIDI devices by typing
-"pd -listdev"; you can then specify which audio and MIDI device to use.
-Type "pd -help" (or make any mistake) to get the syntax for specifying
-which device to use. You can modify the Pd shortcut (or batch file) to
-set these, or else use the "startup" dialog (file menu) to specify
-startup arguments.
-
-<P>
-Alternatively, (and especially when just starting out) you can experiment
-with different audio configurations using the "audio settings"
-item in the Media menu.
-
-<P>
-You can list and
-choose MIDI devices in the same way as audio; note that, by default, MIDI
-input is disabled in Windows (because it's possible to hang up some MIDI
-devices if Pd exits unexpectedly).
-
-<P>
-MIDI timing is very poor if you are using simultaneous audio input and output;
-if you suppress either audio input or output things will improve somewhat under
-NT; you can apparently get the jitter down to ~40 msec. On W95 performance is
-simply terrible. W98, with either audio input or output suppressed, offers
-fairly good MIDI timing (~5 msec jitter). The "first edition" used to crash
-occasionally; this might be fixed in the "second edition".
-
-<H4> ASIO </H4>
-
-<P> As of version 0.35 Pd supports ASIO. Invoke Pd as "pd -asio" and, if
-needed, specify "-sounddev" (etc.) flags to specify which device (see
-"the Pd command line" below.) You can also specify a "-blocksize" different
-from the default (256 samples) and "-audiobuf" in milliseconds. Pd will
-round this down to a power of two buffers, each of "-blocksize" in sample
-frames.
-
-<H3> <A name=s1.2> 3.3. Installing Pd in Linux </A> </H3>
-
-<P> What to do depends on which flavor of Linux you are running (e.g., Debian
-or Red Hat). The instructions here should work for Pd 0.33 and up regardless of
-your situation. (If not, you can read the Pd mailing list archives for
-recent problems; if you have found a new problem you're welcome to post it
-to the list.)
-
-<P> If you're running RedHat or Mandrake you might want to use RPM to install
-Pd. For other linux distributions, download the "tar.gz" version and compile
-Pd.
-
-<H4> Getting Pd as an RPM </H4>
-
-<P> Download Pd, perhaps from
- <a href="http://www.crca.ucsd.edu/~msp/software.html">
- http://www.crca.ucsd.edu/~msp/software.html</A> ,
-to a file such as "pd-0.33-0.i386.rpm".
-Open a "shell" window, cd to
-the directory containing the file, and type the command,
-<PRE>
- rpm -i pd-0.33-0.i386.rpm
-</PRE>
-
-<P> (substituting the real file name.) Then you should be able to type "pd"
-to a shell and watch the Pd main window appear.
-
-<H4> Getting Pd as a .tar.gz </H4>
-
-<P> Before you start, you might want to check that you have the resources Pd
-needs. The main things you need are the C compiler, X windows (including
-the X development package for Pd to link against) and TK. If you're running
-Redhat or Mandrake 7.x or up, I think these are all present by default.
-The RedHat X client developer "RPM" package is called XFree86-devel.
-
-<P>
-Download Pd, perhaps from
- <a href="http://www.crca.ucsd.edu/~msp/software.html">
- http://www.crca.ucsd.edu/~msp/software.html</A> ,
-to file such as "pd-linux-033.tar.gz". Open a "shell"
-window, cd to
-the directory containing the file, and type the command,
-<PRE>
- tar xzf pd-linux-033.tar.gz
-</PRE>
-<P>which creates a directory named "pd". I do this from my home directory.
-Next, compile it. "CD" to pd and read the INSTALL.txt, or else just cd
-to "pd/src" and type
-
-<P>
-<BR> ./configure
-<BR> make depend
-<BR> make
-</P>
-
-<P> You can pass flags to "configure" to customize your compilation:
-
-<PRE>
- To enable debugging (and losing code optimization) add "--enable-debug".
- To use Portaudio version 19 (experimental), add "--enable-portaudio".
- To put Pd in /usr/bin instead of /usr/local/bin, add "--prefix=/bin".
-</PRE>
-
-Alsa and Jack support should auto-configure, but "--enable-alsa" od
-"--enable-jack" will force their inclusion.
-
-<P> After "make", just type "~/pd/bin/pd" to run pd.
-
-<P> Alternatively, as superuser, you can run "make install" after "make depend"
-and then anyone on your system can just type "pd" to run it.
-
-<H4> Testing audio and MIDI. </H4>
-
-<P>
-Next try audio. We want to know whether audio output works, whether audio
-input works, and whether they work simultaneously. First run "aumix" (or
-any newer audio mixer app) to
-check audio input and output gains and learn which input (mic; line;
-etc.) is "recording".
-Then test audio output by running
-<PRE>
- pd -noadc
-</PRE>
-<P>and selecting "test audio and MIDI" from the "Media" menu. You should see
-a patch. Turn on the test tone and listen. Do the usual where's-the-signal
-business.
-
-<P>
-Then quit Pd and test audio input via
-<PRE>
- pd -nodac
-</PRE>
-<P>Re-open the test patch and hit "meter"; look at the levels. 100 dB is a
-hard clip; arrange gains so that the input signal tops out around 80 or 90,
-but no higher.
-
-<P> Now see if your audio driver can do full duplex by typing "pd" with no
-flags. If you see error messages involving /dev/dsp or /dev/dsp2, you're
-probably not able to run audio in and out at the same time. If on the other
-hand there's no complaint, and if the audio test patch does what you want, you
-might wish to experiment with the "-audiobuffer" flag to see what values of
-audio latency your audio system can handle.
-
-<H3> Audio hardware in Linux </H3>
-
-<P>
-Be forewarned: installing and testing audio and MIDI drivers in Linux can take
-days or weeks. There apears to be no single place where you can get detailed
-information on Linux audio. One good source of information lives at:
-<A href=http://www.djcj.org/LAU/guide/index.php>
-http://www.djcj.org/LAU/guide/index.php </A>.
-
-<P>
-There are two widely-used driver sets, called "OSS" and "ALSA". OSS is
-included in the standard Linux kernels since version 2.2. However, for some
-audio cards you can find newer versions than are included in the kernel
-releases. You can get ALSA from
-
- <a href="http://www.alsa-project.org/">
- http://www.alsa-project.org/</A> .
-
-<P> ALSA is able to emulate OSS, so that you can usually run Pd using the
-default "OSS" settings even if it's actually ALSA that's running.
-ALSA is newer, hence less stable and harder to use, than OSS.
-Installing ALSA can be tricky and/or confusing.
-
-<P> By default, Pd uses OSS. If you are running ALSA, Pd will use ALSA's OSS
-emulation. To make Pd use ALSA "natively", i.e., the way ALSA is designed
-to be used, include the "-alsa" flag in the command line or bang on the "media"
-menu items.
-
-<P> You can add ALSA devices by name on the Pd command line:
-<PRE>
- pd -alsaadd loupgarou
-</PRE>
-instructs Pd to offer the 'loupgarou' audio device in the Audio Settings panel.
-
-<H4> Experiences with particular soudcards </H4>
-
-<P>
-Here are some of my own experiences with sound cards so far. See
-also the Pd mailing list archives.
-
-<H6> RME 9652 (Hammerfall) </H6>
-
-<P> This is the best sound card out there; it costs around $500 and has 3 ADAT
-I/O ports and one SPDIF. There is a "baby hammerfall" also, which I think is
-the "9632." DO NOT CONFUSE THE 9652/9632 WITH OTHER RME BOARDS WHICH MIGHT
-NOT WORK WITH PD.
-
-<P> The easiest way to use
-Hammerfall boards in Pd is via ALSA and jack; but you can use ALSA alone:
-<PRE>
- pd -alsa -channels 26
-</PRE>
-works for me. If you don't specify the number of channels correctly Pd crashes.
-
-<H6> MIDIMAN </H6>
-
-<P>Midiman sells PCI devices (delta 44, 66, 1010, and 1010LT)
-with between 4 and 10 channels in and out, for
-which there are ALSA drivers. These are also very good, and they are a
-bit cheaper than Hammerfalls. The driver name is "ice1712".
-
-<P> Alsa provides an "envy24control" program (in "utils". You should run
-this and check that your ice1712's sync source is internal if you have no
-SPDIF input, or "SPDIF" if you do. I think the default is now "internal"
-but don't take it for granted...
-
-<H6> warning about i810/i815 drivers...</H6>
-
-<P>As of RedHat 7.0, motherboards with native i810 audio systems didn't work in
-full duplex (they crashed linux). Either run Pd -noadc or else (better)
-install ALSA. This ought to be fixed by now...
-
-<H3> <A name="s1.3"> 3.4. Installing Pd in Macintosh OSX </A> </H3>
-
-<P>Pd version 0.35 and up support Macintosh OSX. You need the OSX Jaguar
-distribution (10.2) or later.
-
-<P> To install Pd you can always just download the sources and compile them
-yourself, or (easier) just download the Mac binary from the download page:
-
-<A href="http://crca.ucsd.edu/~msp/software.html">
-http://crca.ucsd.edu/~msp/software.html</A>.
-
-This is in the form of a compressed Tar archive; just click on it and the Max
-will extract the Pd application. Open this and you should be running.
-
-<P> The package by Hans-Christoph Steiner, on
-
-<A href="http://at.or.at/hans/pd/installers.html">
-http://at.or.at/hans/pd/installers.html</A>,
-
-has many updates and extensions
-which are not included in the original Pd distribution. Download this and
-follow the (simple) instructions found there.
-</P>
-
-<H4> To install on OSX from source: </H4>
-
-<P>
-Whether you've downloaded the source or the "package" you can
-always compile Pd for yourself, whether to make your own improvements, or
-possibly so that you can get the newest version before it shows up compiled for
-Mac OS X.
-
-<P> To be able to compile Pd, you must have installed Tcl/Tk
-specifically in
-/Applications/Wish Shell.app
-and /Library/Frameworks/Tk.framework and /Library/Frameworks/Tcl.framework.
-
-<P> First download and install TK for OSX. I get it from:
-<A href=http://tcltkaqua.sourceforge.net/>
-http://tcltkaqua.sourceforge.net/. </A>
-
-
-<P> Then, just as for linux, just unload pd-whatever.tar.gz into a directory
-such as ~/pd-0.36-0, cd to pd-0.36-0/src, type "./configure"
-and "make". Then type ~/pd-0.36-0/bin/pd to a shell and enjoy!
-
-<P> If you wish you can put a line such as,
-
-<pre>
- alias pd ~/pd/bin/pd
-</pre>
-
-<P>in the file, ~/.tcshrc, so that you can later just type "pd" to a shell.
-(The
-shell only reads the ~/.tcshrc file on startup, so this won't take effect in
-any existing shells unless you specially type
-<pre>
- source ~/.tcshrc
-</pre>
-<P>to them.)
-
-<P> Follow the general directions above for testing audio and/or MIDI
-as needed.
-
-<P> To get MIDI working, you have to do the Mac OSX magic to get a USB
-MIDI interface installed. I've seen this done with Midisport devices and
-I think you just download the OSX driver and follow directions.
-
-<H3> <A name=s1.4> 3.5. Installing Pd in IRIX (SGI machines) </A> </H3>
-
-<P> (NOTE: as of release 0.35 I haven't had an IRIX machine to compile
-Pd on. Soeren Bovbjerg has kindly compiled 0.35 and 0.36 for IRIX;
-you can find these at
-<A href="http://www.cvmt.dk/~sb/"> http://www.cvmt.dk/~sb/ </A>.)
-
-<P> Download Pd, which will be a "tar.Z" file. You can unpack this by
-typing "zcat [name].tar.Z | tar xf -" to a shell. This creates a directory
-named "pd".
-
-<P>
-Starting with release 0.25, Pd should come in "n32" and "o32" versions.
-"o32" is the default and will run on IRIX 5.x and up. "n32" runs faster,
-but only on 6.x and up. Also, "externs" have to be updated for n32. The
-"pd" executable (bin/pd in the distribution) is a symbolic link to either
-"pd-o32" or "pd-n32."
-
-<P> NOTE: "externs" appear to be broken in the N32 version... I'm not sure
-how long this has been true. If you want to use external objects, you have
-to use the O32 version.
-
-<P>
-If for example you put Pd in ~, the executable program
-will be ~/pd/bin/pd. The program looks at its command line to
-figure out where it is, so it's best to invoke Pd by its full pathname.
-You should always invoke Pd from a Unix shell because many important
-messages appear on the standard error.
-
-<P>
-The simplest way to invoke Pd is to
-make an alias in your ".cshrc" file (assuming you use the "c" shell) such as:
-</P>
-<PRE>
-
- alias pd ~/pd/bin/pd
-
-</PRE>
-<P>(assuming your Pd distribution landed in ~, for example).
-
-<P>
-Pd will open the "default" audio input and output devices, without regard
-for whether they are in sync or not. This will be bad if they aren't; use
-the "-noadc" or "-nodac" flag to disable either the input or output. Pd is
-supposed to handle up to 8 channels of audio in and/or out. (But at least
-one user had to recompile Pd on his Onyx to get 8 channels working.)
-
-<P>
-As to MIDI, Pd simply attempts to open all available MIDI devices for input and
-output, which is probably very bad on anything more recent than my Indy. If
-any MIDI ports fail to open either for input or output, all MIDI is disabled.
-
-<P> Pd has not been fixed to request real-time priority from Irix; it will
-compete with all other processes on your machine for CPU time.
-
-<H4> Audio and MIDI in IRIX </H4>
-
-<P>
-Pd takes command line arguments to set the number of input and output channels
-and the sample rate. These don't affect the SGI's audio settings, which you
-have to set separately using the "audio panel." Pd does detect the audio
-sample rate if you don't specify one on the command line.
-
-<P>
-On SGI machines, you have to work to get MIDI running. Before you start Pd, verify
-that least one MIDI port is configured open. Pd opens the FIRST MIDI port
-that's open. You might want to get rid of the "software" MIDI port if you're
-running 6.x. On Indys, the usual practice is to open serial port number 2
-because some systems configure port 1 as "console" by default. You can use the
-GUI if you want, or else just type
-<PRE>
-
- startmidi -d /dev/ttyd2
-
-</PRE>
-
-<P>to get port 2 speaking MIDI, and
-
-<PRE>
-
- stopmidi
-
-</PRE>
-
-<P>to stop it. You can test whether MIDI is configured by typing,
-
-<PRE>
-
- ps -dafe | grep midi
-
-</PRE>
-
-<P>and looking for "startmidi" processes.
-
-<P>
-It's a good idea to connect your serial port to your MIDI interface before
-typing the "startmidi" command, not afterward, at least in 5.x. We use the
-Opcode Studio 3 interface but in principle any Mac-compatible one should work.
-
-<P>
-The O2 apparently has RS232 ports, not RS422. I think SGI's web site says
-something about how to deal with this.
-
-<H3> <A name=s4> 3.6. Preferences and startup options </A> </H3>
-
-<P> Pd's behavior may be customized to instruct it where to find files, which
-audio devices to open, what font size to use, and so on. Most of
-these may also be changed using the various dialogs you can open from Pd's
-menus. Others take effect only when Pd starts up; some of these appear
-on the ``startup" dialog and some of them, too cranky to put in a GUI, must
-be typed as <I> command line arguments </I>.
-
-<P> In addition to the Audio and MIDI settings (see
-<A href="#s1.0"> Audio and MIDI </A>), you can customize font size (from the
-``edit" menu), directories to search for files (see
-<A href="#s5"> How Pd searches for files </A>), and additional startup
-parameters described below.
-
-<P> All of these settings may be saved automatically between Pd sessions.
-It is also possible to specify settings directly via the <I> command
-line </I>. (A third mechanism, using configuration files, is deprecated and
-isn't described here.) The Pd command line is described in the next
-section. Command line settings, if given, each override the corresponding
-setting that was saved from Pd.
-
-<P> The startup settings (i.e., those that take effect only when Pd is started)
-are controlled using the ``startup..." dialog from the File menu. The
-dialog appears as follows:
-
-<CENTER><P>
- <IMG src="fig11.3.png" ALT="startup dialog">
-</P></CENTER>
-
-The slots at top each specify a binary ``library" for Pd to load on startup.
-These may be for Gem, pdp, zexy, iemlib, cyclone, and so on. Typically, a
-single binary object (an ``extern") is left for Pd to load automatically;
-startup library loading is appropriate for collections of many objects
-specified by a single binary library.
-
-<P> The ``defeat real-time scheduling" contol, if enabled, makes Pd run without
-its usual effort to become a real-time process (whatever this means in the
-operating system you are using.) In Unix, Pd must usually be setuid to allow
-real-time scheduling at all.
-
-<P> The ``startup flags" allow you to add to Pd's command line on startup. This
-is specified as described below, except that the initial word, ``pd", is
-understood. For example, putting ``-rt" in this field sets real-time
-scheduling; ``-sleepgrain 1" sets the sleep grain to 1 (see under MIDI below),
-and typing "-rt -sleepgrain 1" does both.
-
-<P> You may save the current settings for future Pd sessions with the
-``save all settings" button; this saves not only the path but all other
-settings as well.
-
-<H6> Command line arguments </A> </H3>
-
-<P>Pd may be run as a "command line" program from your "terminal emulator,"
-"shell," or "MSDOS prompt." In Windows, if Pd is started using a "shortcut"
-it is also run from a command line which you can edit using the ``properties"
-dialog for the shortcut. In any operating system, Pd can be called from a
-script (called a <I> batch file </I> on Windows or a <I> shell script </I>
-on OSX or unix). The command line is just a line of text, which should be
-of the form:
-
-<PRE>
-
- pd [options] [patches to open]
-
-</PRE>
-
-<P>although you may have to specify a path (such as "~/pd/bin/pd" or
-"C:\program files\pd\bin\pd") so your command interpreter can find
-Pd. Possible options include:
-
-<PRE>
-
-audio configuration flags:
--r &lt;n&gt; -- specify sample rate
--audioindev ... -- sound in device list; e.g., "2,1" for second and first
--audiooutdev ... -- sound out device list, same as above
--audiodev ... -- specify both -audioindev and -audiooutdev together
--inchannels ... -- number of audio in channels (by device, like "2" or "16,8")
--outchannels ... -- number of audio out channels (by device)
--channels ... -- specify both input and output channels
--audiobuf &lt;n&gt; -- specify size of audio I/O buffer in msec
--blocksize &lt;n&gt; -- specify audio I/O block size in sample frames
--sleepgrain &lt;n&gt; -- specify number of milliseconds to sleep when idle
--nodac -- suppress audio output
--noadc -- suppress audio input
--noaudio -- suppress audio input and output (-nosound is synonym)
--listdev -- list audio and MIDI devices
-
-(linux specific audio:)
--frags &lt;n&gt; -- specify number of audio fragments (defeats audiobuf)
--fragsize &lt;n&gt; -- specify log of fragment size ('blocksize' is better...)
--oss -- use ALSA audio drivers
--alsa -- use ALSA audio drivers
--pa -- use portaudio (experimental version 19)
--alsadev &lt;n&gt; ----- obsolete: use -audiodev
--32bit ---- (probably obsolete) -- use 32 bit OSS extension
-
-(Windows specific audio:)
--mmio -- use MMIO drivers and API
--asio -- use ASIO drivers and API
-
-MIDI configuration flags:
--midiindev ... -- midi in device list; e.g., "1,3" for first and third
--midioutdev ... -- midi out device list, same format
--mididev ... -- specify -midioutdev and -midiindev together
--nomidiin -- suppress MIDI input
--nomidiout -- suppress MIDI output
--nomidi -- suppress MIDI input and output
-
-general flags:
--path &lt;path&gt; -- add to file search path
--nostdpath -- don't search standard ("extra") directory
--stdpath -- search standard directory (true by default)
--helppath &lt;path&gt; -- add to help search path
--open &lt;file&gt; -- open file(s) on startup
--lib &lt;file&gt; -- load object library(s)
--font &lt;n&gt; -- specify default font size in points
--verbose -- extra printout on startup and when searching for files
--version -- don't run Pd; just print out which version it is
--d &lt;n&gt; -- specify debug level
--noloadbang -- suppress all loadbangs
--stderr -- send printout to standard error instead of GUI
--nogui -- suppress starting the GUI
--guiport &lt;n&gt; -- connect to pre-existing GUI over port 'n'
--guicmd "cmd..." -- substitute another GUI program (e.g., rsh)
--send "msg..." -- send a message at startup (after patches are loaded)
--rt or -realtime -- use real-time priority (needs root privilege)
--nrt -- don't use real-time priority
-
-</PRE>
-
-<P>Here are some details on some of the audio, MIDI, and scheduler options (but
-see also the next section on file management.)
-
-<H4> multiple devices. </H4>
-
-<P> You can specify multiple MIDI input and output devices. For example,
-"pd -midiindev 3 -midioutdev 4,2" asks for the third MIDI input device and the
-fourth and second MIDI output device.
-
-<P> Audio device selection is similar, except that you can also specify
-channels by device: "-audioindev 1,3 -inchannels 2,8" will try to open device 1
-(2 channels) and device 3 (8 channels.)
-
-<H4> sample rate. </H4>
-
-<P>The sample rate controls Pd's logical sample rate which need not be that of
-the audio input and output devices. If Pd's sample rate is wrong, time will
-flow at the wrong rate and synthetic sounds will be transposed. If the output
-and input devices are running at different rates, Pd will constantly drop frames
-to re-sync them, which will sound bad. You can disable input or output if this
-is a problem.
-
-<H4> audio buffer size and block size </H4>
-
-<P>You can specify an audio buffer size in milliseconds, typically between 10 and
-300, depending on how responsive your OS and drivers are. If this is set too
-low there will be audio I/O errors ("data late"). The higher the value is,
-on the other hand, the more throughput delay you will hear from the audio
-and/or control inputs (MIDI, GUI) and the audio coming out.
-
-<P> You can also specify the audio block size in sample frames. This is 64 by
-default (except for MMIO for which it's 256), and may be 64, 128, or 256.
-
-<H4> MIDI and sleepgrain</H4>
-
-<P> In Linux, if you
-ask for "pd -midioutdev 1" for instance, you get /dev/midi0 or /dev/midi00
-(or even /dev/midi). "-midioutdev 45" would be /dev/midi44. In NT, device
-number 0 is the "MIDI mapper", which is the default MIDI device you selected
-from the control panel; counting from one, the device numbers are card
-numbers as listed by "pd -listdev."
-
-<P> The "sleepgrain" controls how long (in milliseconds) Pd sleeps between
-periods of computation. This is normally the audio buffer divided by 4, but
-no less than 0.1 and no more than 5. On most OSes, ingoing and outgoing MIDI
-is quantized to this value, so if you care about MIDI timing, reduce this to 1
-or less.
-
-<H3> <A name="s5"> 3.7. How Pd searches for files </A> </H3>
-
-<P>Pd has a search path feature; you specify the path on the command line
-using the "-path" option. Paths may contain any number of files. If you
-specify several files in a single "-path" option they're separated by colons
-in unix or semicolons in NT.
-
-<P> You can see and edit the path while Pd is running using the "path..."
-item in the "File" menu:
-
-<CENTER><P>
- <IMG src="fig11.4.png" ALT="startup dialog">
-</P></CENTER>
-
-<P> The path must be correctly set before you load
-a patch or it may fail to find abstractions, etc., that are needed to
-construct the patch. When Pd searches for an abstraction or an
-"extern" it uses the path to try to find the necessary file. The "read"
-messages to qlists and arrays (aka tables) do this too.
-
-<P> If ``use standard extensions" is enabled, the usual ``extras" directory
-is also searched. This contains standard external objects like ``expr" and
-``fiddle", and perhaps much more depending on the distribution of Pd
-you're using.
-
-<P> You may save the current settings for future Pd sessions with the
-``save all settings" button; this saves not only the path but all other
-settings as well.
-
-<P> Path entries may be relative to the patch directory; for instance,
-if your path has an item, "../sound", and your patch is in "my stuff/all mine",
-then Pd will look in "my stuff/sound". Spaces should be OK in the path to
-the patch, but not in the path entry (../sound) itself. This is useful if
-you have a patch and supporting files (even a supporting snapshot of pd)
-that you want to distribute or carry around together.
-
-<P> Regardless of path, Pd should look first in the directory containing
-the patch before searching down the path. Pd does not automatically look
-in the <I> current directory </I> however; to enable that, include ``." in
-the path. The ``extra" directory, if enabled, is searched last.
-
-<P> Filenames in Pd are always separated by (unix-style) forward slashes, even
-if you're on Windows (which uses backslashes). This is so that patches can be
-ported more easily between operating systems. On the other hand, if you
-specify a filename on the command line (as in "pd -path c:\pdlib") the file
-separator should agree with the operating system. <BR>
-
-<P> If a filename specified in a patch has any "/" characters in it, the "path"
-is not used; thus, "../sounds/sample1.wav" causes Pd only to look relative to
-the directory containing the patch. You may also invoke externs that way.
-
-<P> As of version 0.35, there may be spaces in the path to Pd itself; also,
-the "openpanel" and "savepanel" objects can handle spaces. Spaces in the
-path should work as of version 0.38.
-
-</BODY>
-</HTML>
-
-
diff --git a/desiredata/doc/1.manual/x4.htm b/desiredata/doc/1.manual/x4.htm
deleted file mode 100644
index faaf2f48..00000000
--- a/desiredata/doc/1.manual/x4.htm
+++ /dev/null
@@ -1,61 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
-
-<HTML>
- <HEAD>
- <TITLE>Pd Documentation 4</TITLE>
- <meta http-equiv="Content-Type" content="text/html">
- <link rel="stylesheet" type="text/css" href="pdmanual.css" media="screen">
- </HEAD>
-
-
-<BODY>
-
-<H2>Pd Documentation chapter 4: writing Pd objects in C</H2>
-
-<P>
-<A href="index.htm#s4"> back to table of contents </A>
-<BR><BR>
-</P>
-
-<P>You can write your own objects that you and others can use in their Pd
-applications. You can write them in C or (if you're smart and brave) in C++ or
-FORTRAN.
-
-<P> HOW EXTERNS ARE LOADED
-
-<P> Whenever you type the name of an object
-(into an "object" text box) that Pd doesn't yet know about, Pd looks for a
-relocatable object file, named, for instance, "profile.pd_irix5". Pd looks
-first in the directory containing the patch, then in directories in its
-"path." Pd will then add whatever object is defined there to its "class list,"
-which is the set of all Pd classes you can use. If all this works, Pd then
-attempts again to create the object you asked for, this time perhaps
-successfully. There is no difference between an object defined this way and an
-object built into Pd.
-
-<P> Once you load a new object into Pd, it's there for the duration of your Pd
-session. If you load another Pd document which supplies a different version of
-some Pd object, the object won't be updated. IF you're working on a new object
-and decide to change it, you have to exit and re-enter Pd to get the change to
-take.
-
-<P> In the "externs" subdirectory of the documentation you
-can find simple examples of "externs" with their source code and test patches;
-there are many other on the web (see <a href="x1.htm#s2">section 1.2 </A>).
-
-<P> Iohannes Zmoelnig has written an excellent guide to writing externs at
-<A href="http://iem.kug.ac.at/pd/externals-HOWTO/">
- http://iem.kug.ac.at/pd/externals-HOWTO/</A> .
-
-<P> A paper by Theo Stojanov on the subject is at:
-<A href="http://www.music.mcgill.ca/~theo/html/audio/pd_externs.pdf">
-http://www.music.mcgill.ca/~theo/html/audio/pd_externs.pdf </A> .
-
-<P> NT HINT: In NT, Pd is compiled using Visual C 6.0. If you have VC 5.x
-your externs won't compile against Pd; you'll get an error about "disk full
-or bad DLL." Simply recompile Pd under 5.x and the problem goes away. Externs
-compiled under 5.x and 6.x are binary compatible; it's just the compilation
-that's sensitive.
-
-</BODY>
-</HTML>
diff --git a/desiredata/doc/1.manual/x5.htm b/desiredata/doc/1.manual/x5.htm
deleted file mode 100644
index 7aec1cf9..00000000
--- a/desiredata/doc/1.manual/x5.htm
+++ /dev/null
@@ -1,1568 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
-
-<HTML>
- <HEAD>
- <TITLE>Pd Documentation 5</TITLE>
- <meta http-equiv="Content-Type" content="text/html">
- <link rel="stylesheet" type="text/css" href="pdmanual.css" media="screen">
- </HEAD>
-
-<BODY>
-
-<H2>Pd Documentation chapter 5. current status</H2>
-
-<P>
-<A href="index.htm#s5"> back to table of contents </A>
-<BR><BR>
-</P>
-
-<P>This section tracks changes in Pd's current implementation.</P>
-
-<H3> <A name="s2"> 5.1. release notes </A> </H3>
-
-<P> ------------------ 0.39.2 --------------------------
-
-<P> Bug fixes: memory leak in OSX version; problem printing numbers as symbols.
-
-<P> ------------------ 0.39.1 --------------------------
-
-<P> Bug fixes: compatibility problems with older version of TK
-
-<P> ------------------ 0.39.0 --------------------------
-
-<P> At the source level, "regular" arrays and arrays within data structures are
-now the same thing. This will mean that, in the future, features introduced to
-one array type will become available on the other one too. Array elements are
-"scalars" (i.e., data structures) and if they have drawing instructions, each
-point of the array is drawn according to them; they can be clicked on, etc.,
-just like any other scalars. "Regular" arrays have points which are of a
-special, built-in template, "float".
-
-<P> Drawing instructions now can use variable ranges for screen coordinates;
-for instance, specifying an offset of "a(0:10)(100:200)(0.2)" specifies that
-the member "a", which shoudl range from 0 to 10, should be graphed at locations
-ranging from 100 to 200 (relative to the scalar's base location) and should
-have a "grain" of 0.2, i.e., steps of 2 pixels each.
-
-<P> Drawing instructions can be turned on and off, either globally
-(for all data of the given structure) or by a data field.
-
-<P> The "struct" object has an outlet to notify you when a datum is selected or
-deselected.
-
-<P> Graph-on-parent subpatches and abstractions no longer scale the GUI objects
-to fit the parent rectangle; instead you get a sub-rectangle in the subpatch,
-of the same size as the parent object, to place GUI objects in. GUI objects
-that don't fit inside aren't shown on the parent, and the parent objects no
-longer stretches itself to show things that wouldn't otherwise fit. Older
-patches work as before until you try to edit them - at which point you have
-no choice but to use the new functionality.
-
-<P> The font size of a Graph-on-parent abstraction is that of the abstraction
-itself, not the calling patch.
-
-<P> Message boxes now take "addcomma" and similar messages.
-
-<P> A "list" object is provided for joining and splitting lists, and converting
-between lists and non-list messages.
-
-<P> Pd extension is now added automatically to files on Macintish when you
-do a "save as". The tcl/tk version is updated to 8.4.5. This should run on
-OSX version 10.2 and later. Also on Mac, drag-and-drop startups read
-"libraries" (specified in "startup" dialog) before opening the file.
-
-<P> The "pointer" object has a method to rewind to the beginning of a list.
-A "sendwindow" message forwards any message to the window contining the
-scalar currently pointed to.
-
-<P> Abstractions don't produce visible windows, even if subwindows of the
-abstraction were visible when the abstraction was saved.
-
-<P> MIDI sysex messages should now work on all platforms.
-
-<P> Bug fixes:
-
-<P> sending lists to arrays now correctly interprets the first number of the
-list as the starting index (following values are then stored seuentially in the
-array.)
-
-<P> The rfft~ object's imaginary part had the wrong sign. Also, the Nyquist
-bin is now supplied correctly.
-
-<P> Fixed problems writing aiff files using the writesf~ and soundfiler objects.
-Writesf, if sent an "open" while a file was previously being written, closes the
-previous file first.
-
-<P> Bug fix in number2 which sometimes crashed Pd.
-
-<P> Stale-pointer protection made more robust.
-
-<P> Some of Pd's tcl/tk error messages have been tracked down, but probably
-not all of them yet.
-
-<P> "Find" crashed Pd when the found object was in a GOP.
-
-<P> Mouse motion over arrays no longer is quite so CPU-consuming (but is
-still somewhat so.)
-
-<P> samplerate~ now reflects up/downsampling.
-
-<P> Tilde objects in blocked, overlapped subpatches no longer adjust their
-internal sample rate to reflect the overlap.
-
-<P> Fixed a thread-safety problem in sys_microsleep().
-
-
-<P> ------------------ 0.38.1 --------------------------
-
-Fixed two bugs that crashed Pd when deleting number boxes in certain
-situations.
-
-<P> ------------------ 0.38.0 --------------------------
-
-<P> The big change is queued graphics updates, which apply (so far)
-to tables and number/symbol boxes. The IEM GUIS aren't enqueued yet.
-This along with a better graphics update buffering scheme makes Pd's
-graphics run much better.
-
-<P> Support for cutting/copying/pasting text between boxes and between Pd and
-other applications.
-
-<P> Dialogs for setting and saving path, libs-to-load-on-startup, and some
-other things. This and the audio settings can be saved automatically to
-the appropriate repository (.pdsettings on linux; registry on MS windows;
-"Preferences" on Mac.)
-
-<P> "Print" printout goes to the Pd window by default. You can revert to
-the old (standard error) behavior with the "-stderr" startup flag.
-
-<P> The "gui" TK script can now start Pd up (previously Pd had to be
-started first.) This is needed for Pd to work as an "App" on Mac.
-
-<P> new filter objects: cpole~, fpole~, etc... these will get used in the
-upcoming Techniques chapter 8.
-
-<P> Objects whose creation failed get a distinctive outline; if they are
-already inside a patch they sprout inlets and outlets as necessary to
-preserve connections.
-
-<P> Filenames in the "search path", etc., now may contain spaces, commas,
-and semicolons.
-
-<P> bug fix: click on minaturized subpatch failed to "vis" it
-
-<P> bug fix: font size change crash reported by CK
-
-<P> Key bindings like control-Q now work even from within most dialogs.
-
-<P> The audio settings dialog now permits turning audio input and/or output
-off without forgetting how many channels it should be when on.
-
-<P> RME Hammerfall ALSA support from Winfried -- but specify the number of
-channels correctly or else Pd crashes.
-
-<P> portaudio (e.g., Mac) audio support fixed for inchans != outchans,
-so the emi emagic can now be used 2-in. 6-out, for example.
-
-<P> (linux) The configure script can set the setuid flag on "make install".
-The "-enable" flags to ./configure should now work correctly too.
-
-<P> atan2 had its inlets switched to conform to standard usage
-
-<P> ------------------ 0.37.3 --------------------------
-
-<P> Oops- added __i386__ macro to windows makefile so it would test for
-underflows correctly. This affects only Microsoft Windows; the other
-two platformas are fine as 0.37.2. Thanks to Thomas Musil...
-
-<P> ------------------ 0.37.2 --------------------------
-
-<P> fixed a bug in soundfile reading (soundfiles now default to wav better.)
-
-<P> fixed gfx update problem in hradio and vradio
-
-<P> minor changes to built-in Max import feature (but you should
-still use cyclone's instead.)
-
-<P> colors for scalars fixed (probably never worked before!)
-
-<P> added a "set" message to the line object
-
-<P> aliased spaces to underscores in GUI labels so that at least they won't
-destroy the object.
-
-<P> ------------------ 0.37.1 --------------------------
-
-<P> fixed the apple key on OSX so it does key accelerators
-
-<P> fixed bug in -inchannels/-outchannels arg parsing
-
-<P> major editions to the IEM GUIs to fix bugs in how "$" variables are handled.
-The code still isn't pretty but hopefully at least works now.
-
-<P> bug fix in vd~ for very small delays
-
-<P> fixed MSW version not to make windows grow by 2 pixels on save/restore
-
-<P> added an "nrt" flag for OSX to defeat real-time priritization
-(useful when runnig Gem.)
-
-<P> on some platforms, audio open failures are handled more gracefully.
-
-<P> added a "changelog" file in the source directory to document source-level
-changes.
-
-<P> ------------------ 0.37 --------------------------
-
-<P> Pd is finally fixed so that it can open and close audio and MIDI devices
-on-the-fly (previously it opened them once at startup and hogged them until
-Pd quit). Starting DSP causes audio devices to be opened, and
-stopping it closes them.
-There are dialog panels in the "Media" menu (which used to be called
-"Audio") for choosing audio and MIDI settings. The "path" also can be changed
-on the fly via a dialog in the "File" menu.
-
-<P> A "vline" object acts like "line" but to sub-sample accuracy. See
-the audio example, C04.control.to.signal.pd (and/or chapter 3 of
-<A HREF="http://www.crca.ucsd.edu/~msp/techniques.htm"
-<I> Theory and Techniques of Electronic Music </I> ).
-
-<P> The block~/switch~ object now takes a "set" message to dynamically change
-block size, etc.
-
-<P> The makefilename object takes a "set" message to set the "pattern". You
-can use this to kludge multiple substitutions (as shown in the help file).
-
-<P> The writesf~ object got an update and a better help window. It now should
-be able to write 32bit floating-point WAV soundfiles. The file's sample rate
-is now set "correctly".
-
-<P> Various improvements were made in audio I/O to improve stability and
-reduce latency.
-
-<P> Jack support should work for Mac OSX (it appears as a separate API).
-Linux is offering experimental portaudio V19 support (but Mac and Window/ASIO
-are still based on PA V18.)
-
-<P> The fiddle~ object (in extra) has an "npoints" method to set the analysis
-window size dynamically.
-
-<P> (windows) Pd is now distributed as a self-extracting archive.
-
-<P> (windows) url files in the help directories are opened correctly.
-
-<P> (Mac) the arrow keys should now be fixed.
-
-<P> (linux) The "configure" script should be better at finding TK in various
-distributions (debian users previously had to use a special configure script.)
-
-<P> (developers) Pd now exits cleanly from its main loop instead of bailing
-out. A mutex protects Pd's data so it can be accessed from other threads.
-(Thomas Grill's improvements.)
-
-<P> (developers) The "savefunction" and "dialog" widget behaviors
-were replaced by a better mechanism (class_setsavefn() and
-class_setpropertiesfn()). THey're declared in m_pd.h so you don't have to
-include the (unstable) g_canvas.h to get them.
-
-<P> (developers) Better flag handling in the IEM GUIs (g_toggle.c, etc) should
-compile with fewer warnings and be more portable.
-
-
-<P> ------------------ 0.37-test 1 --------------------------
-
-<P> The MacOSX version now prioritizes itself effectively (thanks to
-gert@test.at (v93r)) via Adam Lindsay). Adam has made a proper MacOSX
-"package" for Pd; see <A href="http://homepage.mac.com/atl/sw">
-http://homepage.mac.com/atl/sw</A>.
-
-<P> A bug was fixed in readsf~/writesf~ (things were coming out in the wrong
-number of channels.)
-
-<P> A problem compiling Pd with TK8.4 (the latest version) was fixed.
-
-<P> Large numbers of GUI improvements by Adam Lindsay, especially relevant
-to Mac OSX.
-
-<P> For externs, the binary may now be included in a subdirectory of the
-same name (e.g., "choice/choice.pd_linux" and "choice\choice.dll"). So
-now you can pack multiple binaries for the same extern, along with the
-source, in one convenient place. (Note that
-"expr~" is an exception, since it goes by three different names, so this
-trick fails for that example.)
-
-<P> "Help" files renamed "help-xxx.pd", so that help files are now possible
-for abstractions. The "help path" feature from CVS (I forgot who contributed
-that) is also included but should now not be needed: Pd remembers where it got
-externs and abstractions and looks back in the same directory for a help file.
-See the way "extras" is organized.
-
-<P> Pd refuses to connect signal outlets to non-signal inlets.
-
-<P> When you save any patch, Pd looks for all invocations of that patch
-as an abstraction and reloads them. This unfortunately has the side effect of
-making all the containing windows visible, but it's better than nothing.
-
-<P> ------------------ 0.36-1 -------------------------------
-
-<P> "print" now queries you for a file to save the postscript to.
-
-<P> "expr" brought up to date (0.4) -- a bug was fixed involving expresions
-like "max($f1, 100)" which had erroneously output an integer.
-
-<P> a bug fix in the 4-point interpolation formula, which affects tabosc4~,
-tabread4~, tabread4, and vd~. These should have significantly lower
-distortion than before.
-
-<P> bug fix: vradio, hradio "send symbol" feature didn't work
-
-<P> ------------------ 0.36 -------------------------------
-
-<P> There's now an "undo" for most editing operations. Undoing is only
-available in the window that was most recently edited. (One gotcha remains,
-that "stretching" (in the font menu) affects all windows and you can't undo any
-but the last one it touched.) Also, there's no "undo" for run-time operations,
-only editing ones. That might be worth thinking about.
-
-<P> Some bugs were fixed that affected "flipped" canvases (ones whose
-"properties show a positive "y" increment per pixel.) Also, the coordinates
-are now saved and restored correctly. "text" objects (comments) now stick to
-the bottom of the window for flipped canvases.
-
-<P> Signal lines now show up fatter than control lines. (Now I have to go
-through the figures in the HTML doc again... drat)
-
-<P> "Classic" number boxes now can have labels and send/receive signals, which
-work in the same way as the IEMGUI controls do. I think "$1" style
-label/send/receive names work too. I fixed a related bug
-in the IEM code (typing at boxes sometimes crashed Pd).
-
-<P> "vdial" and "hdial" were renamed "vradio" and "hradio", and fixed to
-output numbers, not lists, like the other GUIs. The old ones are still around
-for compatibility with old patches.
-
-<P> "Make install" should now actually make Pd before trying to install it.
-
-<P> "expr" is updated to Shahrokh's 0.4test3 version (which I modified somewhat
-to get it to compile.)
-
-<P> The problem of CPU usage skyrocketing on underflows in P4s should
-be fixed.
-
-<P> Compiled "pdsend" and "pdreceive" for Windows.
-
-<P> "PD_VERSION" macro added to m_pd.h
-
-<P> ------------------ 0.35 -------------------------------
-
-<P> An experimental new feature called graph-on-parent allows subpatches and abstractions to show
-GUI features; so, for instance, you can make an oscillator with a number box to
-control the frequency. This is described in section 2.7.2 of the HTML
-documentation and an example is shown in 7.stuff/synth1/.
-
-<P> Spaces are allowed in pathnames to Pd and to patches; however, the "path"
-variable still can't have spaces. (You can address path directories using
-relative pathnames as in "../sound" (or ..\sound on Windows), even if there
-are spaces further "up" the path to the patch. See 3.7, "dealing with files."
-
-<P> The soundfile reading routine (used in readsf~ and soundfiler) is much
-better at opening wav files with different header sizes and odd chunks.
-You can now read floating-point "wav" files -- although you can't write them
-yet.
-
-<P> Templates and data structures are extensively reworked. A "struct"
-object replaces "template", so that you specify the name of the structure as
-the first argument to "struct" (previously it was derived from the
-window name.) You can now have multiple "structs" of the same name; the
-oldest one is the "real" one, but if you delete that, the structures are
-all conformed to the next-oldest one, and so on. You can alter the contents of
-a "struct" and all the associated data will be modified to fit the new
-structure definition. Data are persistent, i.e., saved with the containing
-patch. You can copy and paste data between patches. If you save data to a file
-explicitly, you can read it into another patch and the data are conformed
-automatically to the new data structures.
-
-<P> A new version of Thomas Musil's GUI objects was merged in.
-
-<P> The testtone patch works for up to 6 channels of audio input and output.
-
-<P> Lots of improvements got made to audio I/O in general. In NT you may
-specify "-asio" to use ASIO drivers; see HTML documentation section 3.2.
-You may specify lists of audio input and output devices. In Linux, Pd
-will now attempt to open each /dev/dsp* only once, even if it's requested
-for reading and writing.
-
-<P> The "extra" directory is now searched after the directories in the
-search path, not before (so now you can override objects like "fiddle~").
-
-<P> A bug in paf~ is fixed.
-
-<P> In Linux, the ".pdrc" is now read before the command line arguments, so
-that command line arguments override the .pdrc (it was backwards before.)
-
-<P> In Linux, "help" now can invoke either mozilla or netscape to start
-up the HTML documentation. This doesn't work in Windows or Mac land yet.
-
-<P> In Linux, the "-32bit" flag was added, which you must now use if
-running Guenter's OSS RME Hammerfall driver. (This was necessary because
-OSS went and used the same "bit" for a different purpose, so that Pd tried
-to open some other cards in 32bit mode inappropriately.)
-
-<P> In Linux, MIDI is now opened "-NODELAY" ... this makes the OSS Creative
-driver take MIDI input correctly which it didn't before.
-
-<P> In MS windows, you can now use "readsf~/writesf~" for spooling sounds to
-and from disk.
-
-<P> MS Windows bug fixes: -nosound was ignored, and now works. Also, clicking
-to open abstractions, when they were already open anyway, used to lose the
-keyboard; this should be fixed now. Finally, "netreceive" didn't work when
-running "-nogui". This is fixed, and moreover, you should definitely include
-a netreceive object in any -nogui patch in MSW, otherwise it eats up all
-available CPU time gratuitously.
-
-<P> The outlet is removed from the "table" object.
-
-<P> In MS Windows, Pd now has "-resync" and "-noresync" flags so that you
-can specify how to deal with audio input and output blocksize nonsense in
-MMIO. If "resync" is on, whenever the audio input and output seem out
-of whack the audio driver resynchronizes all input and output devices;
-otherwise the situation is simply ignored. "Noresync" is probably best for
-consumer stereo cards (and is the default if you're running only 2 channels in
-and out). If you're running more than 2 channels in either direction, the
-default is "resync".
-
-<P> In soundfiler's read method, if you specify "-maxsize", that implies
-"-resize" (as it ought to.)
-
-<P> You can use $1-style names for arrays and tables.
-
-<P> Pd will now refuse to make duplicate connections between objects.
-
-<P> Pd is (somewhat shakily) running on Macintosh OS/X. See section 3.4 of
-the HTML doc. For Macs with one-button mice, you can double-click in edit
-mode to simulate a right click. Unfortunately, the "alt" key doesn't work
-yet.
-
-<P> In Linux, ALSA audio is now fixed to clip, not wrap around, on output
-overflows.
-
-<P> Various problems were fixed with objects changing size. Number boxes never
-wrap to two lines (as they used to), and lines are reconnected appropriately
-when objects are resized.
-
-<P> A function call is added to retrieve a unique event-dependent number,
-so that objects like "buddy" can be written.
-
-<P> All the "sound" command-line flags now have "audio" equivalents.
-
-<P> The "-listdev" flag now works on Mac and MSW/ASIO.
-
-<P> Help file updates for env~, route, and pointer
-
-<P> ------------------ 0.34.3 -------------------------------
-
-<P> fixed a bug in "udp" netreceive that crashed pd
-
-<P> fixed a bug in tabosc4~ that caused gritty sound
-
-<P> changed "specfile" for RPM releases (thanks Fernando)
-
-<P> adopted Krzysztof's glob_setfilename bug fix
-
-<P> bug fixes from "the joy of global variables" thread in Pd list
-
-<P> made a help window for "table".
-
-<P> ------------------ 0.34.2 -------------------------------
-
-<P> fixed ".pdrc" bug
-
-<P> added an experimental "pd restart-audio" feature for (new) Alsa
-
-<P> ------------------ 0.34.1 -------------------------------
-
-<P> Bug fixes:
-
-<P> 1. Closing a window with objects selected crashed Pd.
-
-<P> 2. "find" when it opened a window to show the found object crashed Pd.
-
-<P> 3. (Linux only) Oversized .pdrc files crashed pd...
-
-<P> Also, I updated Thomas Musil's IEM GUI objects and their help files.
-
-
-<P> ------------------ 0.34 -------------------------------
-
-<P> NEW FEATURES:
-
-<P> I incorporated Thomas Musil's GUI objects (slider, button, etc.) into
-the Pd release so Thomas won't have to publish patches to Pd anymore. I
-didn't take the graphical inlets and outlets for reasons explained elsewhere,
-but Thomas might decide to continue supplying them on a patch basis.
-
-<P> Many new examples were added to the "2.control" and especially
-"3.audio" example patches. A list of differences between Max/MSP and Pd
-now appears at the end of this section.
-
-<P> Finally, I fixed Pd to notice window iconification and suspend graphical
-updates for iconified windows.
-
-<P> Numbering of versions of Pd will now be as in "0.34.2" instead of
-"0.34PATCH2" which was confusing.
-
-<P> BUGS FIXED:
-
-<P> I incorporated Krzysztof Czaja's menuclose bug fix in g_canvas.c.
-
-<P> (Linux) the configure script is more rational.
-
-<P> the qlist and pack objects were fixed to handle reentrancy correctly.
-
-<P> Pd now complains about running out of memory (before it dies.) I intend
-to provide advance warning and automatically back out of loading patches that
-would run out of memory, but that's not in place yet.
-
-<P> Typing into a message box sometimes left you with lines from the output
-pointing to the wrong location. Fixed.
-
-<P> Reading of "wav" and nextstep soundfiles now handles the headers better.
-
-<P> ------------------ 0.33 -------------------------------
-
-<P> AUDIO AND MIDI:
-
-<P> MIDI time jitter is reduced. Theoretically, it could now be
-as low as the audio blocksize (and so if you care about MIDI timing, keep your
-audio blocksize low.) If you run Pd with audio in stream mode or without
-audio at all, and perhaps in some cases in block more too (?),
-the controlling parameter for MIDI jitter is "-sleepgrain", which specifies
-the interval of time Pd sleeps when it believes it's idle.
-
-<P> You can now specify multiple MIDI input and output devices. For example,
-"pd -midiindev 3 -midioutdev 4,2" asks for the third MIDI input device and the
-fourth and second MIDI output device. The "channel message" midi objects in Pd
-such as notein or pgmout will take channels 1-16 to mean the first open MIDI
-port, 17-32 the second one, and so on. The midiin, sysexin, midiout objects
-give you a separate inlet to specify which of the open MIDI port numbers
-you want.
-
-<P> (Linux only) By default, Pd now reads and write audio in "block mode."
-Previously you have to specify "-frags" and/or "-fragsize" to get this.
-As of this version you have to specify "-streammode" to get the opposite,
-streaming mode. This mode seems only to work with a small number of sound
-cards, notably Ensoniq ens1370 and ens1371.
-
-<P> (Linux only) Also, "-fragsize" is replaced with a more convenient
-"-blocksize" which you specify in sample frames. It defaults to 64 which is
-Pd's audio computation block size but may be larger or smaller. Typically you
-would specify "-audiobuf" and "-blocksize" and Pd will compute "-frags" for
-you; but you can also specify "-frags" explicitly.
-
-<P> (Linux only) OSS and ALSA audio support are improved. You can now talk to
-RME9652 using Guenter's OSS driver; this is different from the "-RME" support
-which uses Winfried's older driver. Other multichannel OSS drivers might now
-work as well. Pd also seems to work with ALSA 0.9 Beta 4; I've tested this
-with Midiman Delta 66 and Soundblaster live. I plan to update the linux audio
-setup documentation accordingly.
-
-<P> NEW FEATURES:
-
-<P> I've put in Shahrokh's new expr, expr~, and fexpr~ objects. The latter
-allows you to make expressions referring to prior input and output samples in
-case you're interested in writing your own recursive filters, oscillators,
-or chaotic sound generators...
-
-<P> In support of expr, you can now use commas in "object" boxes; they just
-become symbols.
-
-<P> sqrt~ is fixed so that it apparently has 24-bit accurate mantissas.
-It turned out to be easier to just make it accurate than to confront the
-question of how a reduced-accuracy version should be named.
-
-<P> The bizarre framp~ object which does phase vocoder analysis got a help
-window. The phase vocoder example doesn't use framp~ and I had forgotten
-what it did until Guenter dug it back up.
-
-<P> (Linux only) I finally got around to incorporating Guenter's autoconf
-stuff, and learned about RPM. Major new Linux releases will probably be
-in .tar.gz and .rpm formats; "test" releases will probably just be in .tar.gz.
-I also fixed it so that the installation prefix is overridden if you invoke
-pd by its full pathname, so that you can still use compilations with
-installation prefixes before you actually install them.
-
-<P> (NT only) I added support for directX using the portaudio package
-by Ross Bencina and Phil Burk. I couldn't discover any way this would ever
-outperform the old "multimedia" API Pd uses. So the release contains the sources,
-but you have to recompile Pd to use directX. Use "makefile.nt.portaudio". Only
-1 or 2 channels of audio are supported. The interesting thing is that the same
-code will run on Macintosh. There are a couple of other obstacles to a
-MacOS port of Pd though; it's hard to predict when this will be feasible.
-
-<P> BUG FIXES:
-
-<P> "drawnumber" was broken in 0.32 -- fixed.
-
-<P> new arrays in 0.32p6 got ill-fitting graphs -- fixed.
-
-<P> ------------------ 0.32 PATCH 6 -------------------
-
-<P> Got array and graph dialogs to behave better when there are more
-than one.
-
-<P> put in mtof~, etc.
-
-<P> made Pd search the "extra" directory without having to specify it in "path."
-
-<P> bug fix in exporting patches to Max
-
-<P> ------------------ 0.32 PATCH 5 -------------------
-
-<P> Reversed the order of these release notes so that the newest appear first.
-
-<P> Arrays can save their content with containing patch; the properties
-dialog selects this. The dialog shows up when you create a new array from
-the menu, and allows you to set the name and size. Only floating point arrays
-can be created and edited this way.
-
-<P> Bug fix: the figures in the NT web doc were garbage.
-
-<P> Bug fix: large tables (> 800 pixels and points) no longer crash the GUI.
-A related problem remains; large arrays are truncated to either 1000 points
-or 1000 pixels.
-
-<P> Bug fix: doing "save as" on an instantiated abstraction no longer sets
-the window title.
-
-<P> in linux, a couple of status messages on opening /dev/dsp only appear now
-if Pd is run "-verbose".
-
-
-<BR> <BR>
-<P> ------------------ 0.32 PATCH 2, 3, 4 -------------------
-
-<P> Hassled more with font size differences between NT and Linux, and updated
-many help files. Minor bug fixes here and there.
-
-<P> the table object now takes a second argument to set size in points.
-
-<P> Improved underflow protection in some DSP objects.
-
-<P> pointer now has a "vnext" traversal method which goes forward to the
-next SELECTED object.
-
-<P> improvements to throw~ (it now sums) and receive~ fixed to be settable.
-
-<P> bug fix in which RME driver always thought sample rate was 44100.
-
-<BR> <BR>
-<P> ------------------ 0.32 PATCH 1 -------------------
-
-<P> bug fixes (bugs flagged by mik): vcf~ help window crashed; writesf~
-only wrote 1 channel soundfiles; "table" object didn't open when clicked
-on;
-
-<P> new object: tabosc4~ -- finally, a real wavetable oscillator for Pd.
-
-<P> much work on "data" editing; go to 7.stuff/data-structures, open patches
-5 and 7, and try clicking on things. Alt clicks delete or add points; regular
-clicks drag values around. The cursor changes to show you what will happen
-if you click.
-
-<BR> <BR>
-------------------- 0.32 -----------------
-
-<P> <strong> New objects: </strong>
-
-<P> midiin, sysexin, midiout. (I don't think MIDI sysex is working
-in Windows yet though.)
-
-<P> threshold~ as in Jmax, triggers from audio level.
-
-<P> value as in Max and Jmax.
-
-<P> writesf as in Jmax.
-
-<P> <strong> New startup flags: </strong>
-
-<P> -sleepgrain: if you aren't using audio I/O, this can reduce time jitter in
-MIDI I/O. Otherwise, MIDI I/O jitter is limited by the audio buffer size.
-
-<P> -noloadbang: cancels loadbangs.
-
-<P> -nogui: suppress starting the GUI. You can then still talk to Pd using,
-perhaps among other possibilities, the new network connection programs now
-included in the release.
-
-<P> -guicmd: lets you specify the command string Pd calls to start the GUI,
-in case you've written your own GUI to replace the TK one Pd comes with.
-
-<P> -send: after loading all the patches specified in the command line,
-you can specify "startup" messages to send. For example, if you want to use
-Pd just to play 50-channel soundfiles from a shell, this is how you can specify
-the soundfile name on the command line.
-
-<P> <strong> bug fixes. </strong>
-
-<P> A readsf~ problem got fixed.
-
-<P> hitting the tab key used to cause Pd windows to relinquish the keyboard.
-
-<P> The $0 feature apperas now to work.
-
-<P> Inlets and outlets of subpatches sometimes got out of left-to-right order.
-
-<P> Scrollbars are less out of whack than they were before.
-
-<P> Pd now knows to de-iconify windows if you "vis" them from the parent.
-
-<P> <strong> in general: </strong>
-
-<P> In Linux the treatment of MIDI input is now much more efficient. Also,
-bugs were fixed in notein and (for SGI) bendin.
-
-<P> You can "select all" from the Edit menu.
-
-<P> standalone programs "pd-send" and "pd-receive" are provided that can send
-mesages to Pd or receive messages from Pd via the netsend~ and netreceive~
-objects. This should allow you to interface a wide variety of other programs
-with Pd either on the same machine or over the network. Also you should be
-able to hack the code into your own programs to make them interoperate with
-Pd and/or each other. The underlying protocol is called FUDI.
-
-<P> "Properties" for scalars, graphs, and number boxes: left click on them.
-In particular, number boxes can have fixed widths and finite ranges; if you
-make them one character wide they act as toggles. Later you'll be able to
-configure them as sliders.
-
-<P> As to scalars, the properties dialog lets you edit the data in the raw.
-Don't try to edit the template though; you can't.
-
-<P> You can now type into a "pd" object to change its name without losing the
-contents.
-
-<P> An experimental "scalar" _text_ object now allows abstractions to draw
-primitive control panels on their parents when you invoke them, as if they were
-Moog or Buchla modules. See the "7.stuff/data" examples.
-
-<P> New help windows for the "data" classes (pointer, append, template, etc.)
-and for send/receive which somehow I had neglected.
-
-<P> When you hit "copy" with nothing selected, the copy buffer used to be
-cleared. This is fixed to do nothing.
-
-<BR> <BR>
-------------------- 0.31 -----------------
-
-<P> ALSA support in Linux has been completely overhauled. It now works with
-Midiman (up to 10 in/12 out!) and es1370. There are problems with SBLive under
-ALSA but it works in OSS emulation with a "-frags" setting. See the "getting
-started" documentation.
-
-<P> In NT, the default is now "noresync" if you're running stereo. You can
-override this with the "-resync" flag. If you're running more than 2 channels
-it's the opposite (as it was before.)
-
-<P> "symbol" boxes now display symbols and let you type them in.
-
-<P> There was a bug when you renamed a patch from outside Pd; the old filename
-still showed in the title bar (and there were other bad side effects.) FIxed.
-
-<P> Protection was added against patches opening themselves as abstractions.
-
-<P> The "route" object's handling of leading symbols was improved. I'm not
-sure whether it's Max compatible or not.
-
-<P> You can draw into arrays with the mouse, at least in the case where there's
-at least one pixel per point. (I'm not sure if the other case even makes
-sense.)
-
-<P> Abstractions display their "$1", etc., arguments in the window title bar.
-
-<P> A "sort" method was added for lists to make them easier to use as
-sequencers.
-
-<P> The "save as" dialog makes a more reasonable choice of start-up directory.
-
-<P> "Trigger i" is now disallowed (it used to crash Pd.)
-
-<P> Getbytes and resizebytes now zero out new memory.
-
-<P> A memory leak reported by Hannes has been partly, hopefully mostly, fixed.
-
-<P> The "signal_free 2" bug reported by Fogar is fixed.
-
-<P> New graphs now reliably avoid using already-taken "graph%d" names.
-
-<P> The old bug which showed up as ".xxxxxxxxx: no such object" is fixed.
-
-<P> The FFT examples have been reworked and the "pique" and "shift" objects
-are moved to "extra".
-
-<BR> <BR>
-------------------- 0.30 -----------------
-<P> in Linux, you can get Pd to promote itself to "real time" priority.
-A "watchdog" process protects you from having Pd lock your machine up. You
-must request real time by running "pd -rt" or "pd -realtime". You must either
-be superuser or make Pd a root-owned SETUID program (chown root .../pd/bin/pd;
-chmod 4755 .../pd/bin/pd). For security reasons, Pd relinquishes root
-privelige immediately after setting its priority, before loading
-any patches or externs.
-
-<P> Protection was added against message loops.
-
-<P> loadbang was fixed so that loadbangs in abstractions go off before loadbangs
-in the owner patch. Within each patch, loadbangs go off forst in subpatches.
-
-<P> new object: tabplay~, a non-imterpolating sample reader.
-
-<P> new objects (in "extra" library): loop~; rev1~.
-
-<P> The "toys" library was renamed "extra" and incorporated in the Pd release.
-
-<P> In Linux, timeouts were added to the driver opening and closing code
-(which used to hang under some conditions.)
-
-<P> the "field" object was replaced by "template"; see "data.structures"
-examples in 7.stuff. Data lists can be read from and written to files now.
-
-<P> You can invoke an external object by pathname, as in "../../extra/loop~".
-
-<P> hip~, etc. should no longer get stuck when they get a NAN on input.
-
-<P> a bug was fixed in expanding symbols such as "$1-foo".
-
-<BR> <BR>
-------------------- 0.29 -----------------
-
-<P> readsf~ - a MAX/FTS style soundfile player, which reads multichannel
-soundfiles in wave, aiff, or next formats. The files must be 16 or 24 bit
-fixed point or 32 bit floating point (only nextstep headers understand the
-latter.) You can also override the header. A "skip" flag lets you read
-starting anywhere in the file. (Sorry: linux only for now; I can't find
-Posix threads packages for the other platforms.)
-
-<P> soundfiler - support for reading and writing soundfiles (wave, aiff,
-nextstep) to and from arrays. Multichannel soundfiles can be read into or
-written from several arrays at once. When reading you can ask that the tables
-be automatically resized; in any event the object obligingly outputs the number
-of samples actually read. When writing you can specify a sub-segment of the
-arrays, and/or request that the soundfile's maximum amplitude be normalized to
-one.
-
-<P> tabplay~ - a non-interpolating sample player
-
-<P> Garry Kling reports having compiled Pd for "yellowdog" linux on Macintosh
-computers. One "fix" has been made to s_linux.c to facilitate this. I don't
-have access to a Mac running linux at the moment so I can't verify whether
-any particular repease of mine actually works there.
-
-<P> Signal objects now automatically convert scalars to vectors, so that you
-can just run a number box into a signal input. One caveat is that the binops
-"+~", "-~", "*~", "/~", "max~", "min~" run slightly faster if you give them
-an argument to tell them that their right inlet will be scalar; so the
-construction "+~ 0" is still meaningful. This will get fixed at some later
-date...
-
-<P> Font sizes work in what I hope will be a more machine-portable way. On
-any machine, the point sizes 8, 10, 12, 14, 16, 24 are DEFINED to be the
-largest fonts Pd can find that don't exceed their size on my linux machine.
-This way I can write patches that everyone else can read, and others will
-at least have fewer portability problems than before. The downside is that
-your old patches may appear with a different type size than you want; use the
-"font" menu item to fix them.
-
-<P> The OSS support no longer asks the audio driver whether full duplex
-is needed; it just tries to open it. Apparently some drivers (such as
-ALSA's OSS emulation) might do full duplex but not implement the call Pd
-used to query for it.
-
-<P> You can give "-nomidi" as a flag (previously you had to type "-nomidiin
--nomidiout".)
-
-<P> A GUI bug reported by Iain Mott was fixed.
-
-<P> You can now type symbols such as "$3-poodle" and the "$3" portion gets
-expanded properly. Someone was also asking about the FTS-style #0 feature,
-but I couldn't figure out how to reconcile it with Pd's usage of "$" for "#"
-in abstractions. So I'm still searching for a good way to provide local
-symbols.
-
-<P> the GUI now protects itself from "\", "{" and "}" characters by dropping
-them. I wonder how many NT users have crashed Pd trying to type in filenames
-with backslashes...
-
-<P> samphold_set and tabwrite_stop methods added. There turned out to be
-no help window for samphold~ so one was supplied.
-
-<BR> <BR>
-------------------- 0.28 -----------------
-
-<P> Version 0.28 has a primitive in-box text editor... about time!
-
-<P> the "front panel" now gives you information on audio levels and
-sync errors.
-
-<P> Message boxes flash, sort of, when you click them.
-
-<P>
-Support has been added for RME 9652 soundcards; see the Linux soundcard section of
-the documentation. Support files for RME and PCI128 (Ensoniq es1370) cards
-are released separately from Pd.
-
-<P> The delete and backspace keys clear the current selection. There is
-unfortunately no "undo" though; I'm not sure this is a good thing to have
-put in.
-
-<P> The "until" object has a "float" method which limits the number of bangs
-it will output.
-
-<P> The audio setup is better documented for NT and Linux.
-
-<P> The externs in 4.fft and 6.externs got recompiled and tested.
-
-<P> BUG FIX: the "read16" message to tables was broken on NT and is now fixed.
-
-<P> BUG FIX: In Linux, starting Pd up sometimes changed the audio mixer
-setting.
-
-<P> BUG FIX: sending "floats" to inlets expecting lists now works correctly.
-
-<P> BUG FIX: "route" on symbols now deals better with symbols, floats and lists.
-
-<BR> <BR>
-------------------- 0.27 -----------------
-<P>
-The main new feature is the "find" menu stuff. You can search for boxes
-containing specified atoms, including semicolons or commas. Most errors are
-now trackable, allowing you to "find last error". Look in the "Find" menu.
-
-<P>
-New objects written: change, max, max~, min, min~, and swap.
-
-<P>
-I looked in 0.INTRO.txt in 5.reference, and found that the objects
-bag, cputime, realtime, pipe, symbol, poly, and bang were missing.
-
-<P>
-Five or six bug fixes.
-
-<P>
-Some audio problems in 0.25 were addresses. In Linux, audio drivers that
-don't support the GETISPACE/GETOSPACE ioctl calls can be called using the
-(inferior) "-frags/-fragsize" mechanism. If you specify either a "-frags"
-or a "-fragsize" option, the GETIOSPACE calls are cancelled.
-
-<P>
-Under NT, for some audio drivers the 0.26 release gave a constant stream of
-"resync" events. I don't know what causes this but I added a "-noresync"
-option which simply never resyncs at all.
-
-<BR> <BR>
-------------------- 0.26 -----------------
-<P>
-phasor~ and osc~ can be configured to take floating point messages to set
-their frequencies, as an alternative to having an input signal to do the
-same. Also, +~, etc, can take floating point arguments (and messages) to
-add or multiply scalars. THe +~, etc, loops were unrolled to make them
-run faster.
-
-<P>
-A switch~ object is provided to let you switch sub-patches on and off. The
-inlet~ and outlet~ objects were re-written to avoid adding any overhead when
-moving signals in or out of sub patches.
-
-<P>
-In Linux at least, the audio latency is much reduced. It's possible to poll
-for audio I/O lateness errors by sending "pd audiostatus".
-
-<P>
-When reading a sample using tabread4~, you can switch between sample tables
-using the "set" message.
-
-<P>
-A new "textfile" object is like qlist but more flexible.
-
-<P>
-Many help windows got updated (but at least a dozen more need work urgently).
-
-<P>
-A dsp_addv function was added to allow variable-length DSP calls (for writers
-of tilde externs.)
-
-<P>
-It's possible for a tilde extern to have a name ending in "tilde" now. Name
-the setup routine "foo_tilde" for "foo~", etc.
-
-<P>
-The dac~ object was fixed to clip its output when out of range (before it
-wrapped around.)
-
-<P>
-A first line of protection was added against getting numerical underflow
-in delay feedback loops. Before, when a reverberator taled out there was
-a sudden jump in CPU usage because the numerical underflows would trap to the
-kernel. Now, if any delwrite~ is given a value less than 1e-20 or so, it
-records a true zero to avoid this.
-
-<P>
-Signal division checks for divide by zero.
-
-<P>
-A "Font bomb" feature is provided for resizing fonts and stretching and
-contracting patches to fit.
-
-<P>
-Pds now bind themselves to the symbol pd-&lt;window-name).
-
-<P>
-IN Linux, if Pd is called as root it tries to promote its run-time
-priority. You can make pd a setuid root owned program if you want this
-behavior for non-root users who start pd.
-(Don't make pd-gui setuid though. That would make a security
-hole in your system.)
-
-<P>
-The Pd commend line can take multiple "open" arguments.
-
-<P>
-The file search path feature was fixed amd generalized.
-
-<P>
-Alt-clicking a table gives you a dialog to set its x and y range and pixel
-size.
-
-<BR> <BR>
-------------------- 0.25 -----------------
-<P>
-Lots of minor, under-the-hood improvements and bug fixes...
-<P>
-The Netsend/netreceive objects were improved; you can now choose between UDP
-and TCP and there's an outlet to tell you whether they're connected.
-<P>
-You can now alt click on an object to get its help window (and the help
-windows got a fair amount of work.)
-<P>
-multichannel audio I/O -- you can get up to 8 audio cnahhelsin and out.
-On SGI this is sdone correctly; on NT it's done using sequential "stereo"
-devices. I'm not sure of the status of multichannel in linux...
-<P>
-The "text" window got new accelerators and a bigger font size
-<P>
-there are 3 "tool" patches in 7.stuff: filtering, pvoc, ring mod.
-<P>
-In NT, command-line backslashes are converted to forward slashes.
-<P>
-There's a load measurement tool in the "help" menu.
-<P>
-The SGI version contains an n32 binary (look at the "bin" directory).
-
-<BR> <BR>
-------------------- 0.24 ---------------
-<P>
-new objects:
-<BR> - bang - convert any message to a "bang"
-<BR> - qlist - message sequencer
-<BR> - textfile - file to message converter
-<BR> - makefilename - format a name with a variable field
-<BR> - openpanel - "Open" dialog
-<BR> - savepanel - "Save as" dialog
-<P>
-Bug fixes:
-<BR> - Fixed a bug in "const" message to arrays
-<BR> - "exp" was broken on NT, now fixed
-<BR> - phase vocoder example improved
-<BR> - "read" message to arrays now zero out unread samples
-<BR> - bug fix in "key" object
-<BR> - bug fix in ifft~ (thanks to Peter Lunden)
-<BR> - "print" object fixed to distinguish between lists starting with symbols and
- other messages
-<BR> - polygon, curve, fpolygon, fcurve renamed to fix name clash with Gem
-<BR> - improved "new object" placement on screen
-<BR> - fixed help dialog to remember previous directory (thanks to Harry Castle)
-<BR> - heterogeneous lists
-<P>
-
-Arrays can be written to and read from text files or from 16-bit
-binary files. See ../2.starter/2G for an overview.
-<P>
-
-Guenter Geiger has contributed a Max-style "table" object which
-creates an "array" object in a subwindow.
-<P>
-
-Guenter has also put in a "search path" feature for externs, abstractions,
-etc.
-<P>
-
-The Help menu got reworked.
-<P>
-
-Select and Route were extended to work Zack-style with symbols.
-<P>
-
-"random" takes seeds now (see the "help" window)
-<P>
-
-Some more work on graphical lists; you can see the current state in
-../7.stuff/data-structures. It's still nascent.
-
-------------------- 0.23 -------------------
-<P>
-A first cut at the "pure data" feature is now included. See section 6
-of the documentation for a quick introduction to it; see also patches 12 and
-14 in the FFT examples.
-<P>
-The documentation has been reorganized. The most interesting new features are:
-<BR> - some new "tutorial" patches
-<BR> - 15 "fft" examples
-<BR> - improved help navigation
-<P>
-more bug fixes:
-<BR> - titles on abstractions no longer saved inside file
-<BR> - left-to-right sorting of inlets/outlets now seems to work
-<BR> - nt audio setup got confused when driver couldn't do full duplex
-<BR> - opening window with audio on is now fixed
-<BR> - deleting inlets/outlets deletes connections first (used to crash)
-<BR> - 1e20 parsed correctly now
-<BR> - osc1~ fixed and optimized
-<BR> - resizing arrays with DSP on used to crash; now fixed
-<BR> - pasting now adds to the end of the list (used to add to beginning)
-<BR> - clicking now selects the most recent object when two or more overlap
-<BR> - Pd's "open" and "help" dialogs now maintain separate paths
-<P>
-The phasor~ object's "float" method has been REMOVED -- use the right-hand
-inlet to set the internal phase. This is so that I can later fix all tilde
-objects to convert messages to signals automatically at all signal inputs.
-
-<BR> <BR>
-------------------- 0.22 -------------------
-<BR>
-bug fixes
-<BR> - parsing 1e+006 gave symbol (now float)
-<BR> - "." parsed as number, should be symbol
-<BR> - change GUI polling loop to TK event dispatch (unix only)
-<BR> - improved "tidy up" feature
-<BR> - size check added to text boxes (used to crash; still not correct.)
-<BR> - occasional bug sending text with CRs to tk
-<BR> - binop startup bug
-<BR> - key accelerators for creators wrong
-<BR> - ftom range to 1500
-<BR> - bug in pack, unpack
-<BR> - windows restore bigger than saved
-<BR>
-<BR>
-
-Nt-specific bug fixes:
-<BR> - getsockopt for netreceive fails. Just omitted it for NT.
-<BR> - put tcl dlls in tcl bin, not pd bin
-<BR> --- archive tcl subsystem for easier version updates
-<BR> --- fix README accordingly
-<BR> - deal with bell sound
-<BR> - turn on optimization
-<BR> - looked for audio timeout bug but couldn't find it.
-<BR> <BR>
-
-------------------- 0.21 -------------------
-
-<P>
-bug fixes:
-
-<P>
-table size change with DSP on: It used to crash Pd to resize an array
-when DSP was turned on. This is now fixed.
-
-<P>
-deselect all when locking. When you lock a patch the selection is cleared.
-
-<P>
-unlock when pasting. .. and if you paste into a petch, it's unlocked.
-
-<P>
-
-lost keyboard events. Version 0.20 lost keyboard events and
-forgot window size changes. This should now be fixed.
-
-<BR> subpatches came up in wrong font size
-<BR> dirty flag on window title bar fixed
-<BR> improvement to netreceive suggested by Mark Danks
-<BR> style notes fleshed out as suggested by Larry Troxler
-<BR> fixed Bill Kleinsasser's bug (short and long array in same graph)
-
-<P>
-new features:
-
-<BR> phase setting for phasor~
-<BR> fft objects. Also, block~, for specifying block sizes and overlaps for FFTs.
-<BR> canvas_makefilename() (used, e.g., by array_read and write)
-<BR> "stuff" directory with examples of real Pd applications.
-
-<BR> <BR>
-------------------- 0.20 -------------------
-
-<P>
-In NT, the 0.19 release turned out not to contain all the files needed to make
-TCL run. This problem should now be fixed.
-
-<P>
-Also, the array_write routine was fixed.
-
-<BR> <BR>
-------------------- 0.19 -------------------
-
-<BR>
-notable new objects:
-
-<BR>
-- vcf~, a bandpass filter with a signal input for center frequency.
-<BR>
-- delread, delwrite, vd, as in ISPW Max.
-<BR>
-- various math and midi stuff
-<BR>
-- catch~, throw~, send~, receive~ for nonlocal signal connections
-<P>
-- an experimental facility for array of floats is included. You can make a new
-array (from the "put" menu) which will be given a name such as "array1". You
-can then send it "read &lt;file&gt;", "write &lt;file&gt;", "resize &lt;N&gt;", and "print"
-messages. File reading and writing is in ascii. "resize" changes the size of
-the array, and "print" prints its vital signs. You can then use "tabread4~"
-to do a 4-point interpolating table lookup, and tabwrite~ to write audio
-samples into the table.
-<P>
-Numbers now default to floating point, although certain objects like "spigot"
-and "metro" still convert their boolean inputs to integers so that 0.5 is
-"false." This behavior will probably change later. The "div" and "mod"
-objects are introduced for explicit integer division and remainder.
-<P>
-Number boxes drag in integer increments, or in hundredths if you hold the
-"shift" key down when you click.
-<P>
-Pd documents now save their font sizes. The font size is global to an entire
-document. New documents come up in the font size Pd was started in (using
-the "-font" flag.) If you want to change the font size of an existing
-document, use a text editor; the font size is the last argument on the first
-line. 8, 10, 12, 14, 16, 18, and 24 are supported.
-<P>
-The abbreviations "t," "f," and "i" stand for "trigger,", "float", and "int."
-<P>
-Inlets and outlets of subpatches are now sorted correctly; although there is
-still a problem deleting inlets/outlets which have connections.
-<P>
-The size and screen location of Pd documents is saved correctly.
-<P>
-Tilde objects now work in "subpages" although there is no way to send
-signals through their inlets and outlets; use throw~/catch~ or send~/receive~.
-<P>
-On NT, the default is to open both audio output and input (this used not
-to work.) The situation is still shaky; audio seems to hang up sporadically
-on my machine; but I seem to have installed my audio driver wrong anyway.
-I had to set a huge output FIFO (1/3 sec or so!) to get it to work at all.
-You can type "pd -dac", "pd -adc", or "pd -nosound" to get output only,
-input only, or no audio at all.
-NT's MIDI input and output are supported, but on my machine MIDI output is
-flaky. I'm curious how all this will work on other machines...
-<P>
-The list of classes is now:
-<P>
-
-GENERAL:
-field inlet outlet print int float send receive select route pack unpack
-trigger spigot moses delay metro line timer makenote stripnote random loadbang
-serial get netsend netreceive
-<P>
-
-MATH:
-+ - * / == != > < >= <= & && | || %
-mod div sin cos tan atan atan2 sqrt log exp abs
-mtof ftom powtodb rmstodb dbtopow dbtorms
-<P>
-
-MIDI:
-notein ctlin pgmin bendin touchin polytouchin noteout ctlout pgmout bendout
-touchout polytouchout
-<P>
-
-SIGNAL:
-dac~ adc~ sig~ line~ snapshot~ +~ -~ *~ /~ phasor~ cos~ vcf~ noise~ env~ hip~
-lop~ bp~ biquad~ samphold~ clip~ rsqrt~ sqrt~ wrap~ print~ scope~ tabwrite~
-tabread4~ send~ receive~ catch~ throw~ delwrite~ delread~ vd~
-
-<BR> <BR>
-------------------- 0.18 -------------------
-
-<BR>
-Release notes now descrie the three platforms Pd runs on: IRIX and
-NT (maintained at UCSD) and LINUX, maintained by Guenter Geiger.
-
-<P>
-menu "close" on a dirty document now checks if you really want to close
-without saving (although "quit" will still exit Pd without verification.)
-
-<P>
-Got rid of "dll" error printout when loading abstractions
-
-<BR> <BR>
-------------------- 0.12 - 0.17 -------------------
-
-<BR>
-got Pd running under NT, although driver problems remain. Gem is also
-distributed for both platforms.
-
-<BR> <BR>
-------------------- 0.11 -------------------
-
-<BR>
-Here's a list of all the objects in this release:
-
-<BR>
-general: print int float send receive select pack unpack trigger spigot
-<BR>
-time handling: delay metro line timer
-<BR>
-arithmetic: + + - - * * / / == == != != > > < < >= >= <= <= & && | || %
-<BR>
-midi: notein noteout makenote stripnote
-<BR>
-other: random get
-<BR>
-signals: dac~ adc~ sig~ line~ snapshot~ +~ *~
-<BR>
-signal oscillators: phasor~ cos~
-<BR>
-signal filters: env~ hip~
-<BR>
-signal debugging : print~ scope~
-<BR>
-<BR>
-
-"spigot" replaces "gate" but has the inputs reversed.
-
-<BR> <BR>
-------------------- 0.10 -------------------
-<BR>
-
-Many bug fixes. This was the first pre-release to be put on the FTP site.
-
-<BR> <BR>
-------------------- 0.09 -------------------
-
-<BR> set up the "Help" menu
-<BR> Bug in DSP sorting fixed
-<BR> "Notein" and "noteout" objects
-<BR> Comments from the Put menu say "comment" (they were invisible before)
-<BR> The scheduler deals better when sound I/O malfunctions
-
-<BR> <BR>
-------------------- 0.08 -------------------
-
-<BR> metro bug
-<BR> scrollbars
-<BR> scheduler bug
-<BR> text box wraparound at 80 chars.
-<BR> fixed boxes to reconnect on retype
-
-<BR> <BR>
-------------------- 0.07 -------------------
-
-<BR>
-- made an adc~ object
-
-<BR> <BR>
-------------------- 0.06 -------------------
-
-<BR>
-- fixed two bugs in DSP sorting
-<BR>
-- added DSP on/off gui
-<BR>
-- added lock/unlock and changed the cursor behavior
-<BR>
-- fixed -font flag to set font pointsize
-
-<BR> <BR>
-------------------- 0.05 -------------------
-<P>
-- added scope~, which is just a stopgap until real sound editing comes up.
-<BR>
-- improved the open panel slightly.
-<BR>
-- added atoms (int only).
-<BR>
-- reworked text editing to reside in Pd, not Pd-gui.
-<BR>
-- included a dbx-debuggable Pd in the distribution. I haven't yet figured
- out how to get dbx to work with externs though.
-
-<BR> <BR>
-------------------- 0.04 -------------------
-<P>
-fixed "cut" which crashed 0.03 if DSP was running.
-added clip~, print~, line~, snapshot~.
-
-
-<BR> <BR>
-------------------- 0.03 -------------------
-<P>
-"pd dsp 1", "pd dsp 0" messages added. If you edit a patch with DSP on,
-PD resorts the DSP network as needed. Unconnected and multiple signal inlets
-are allowed.
-
-<BR> <BR>
-------------------- 0.02 -------------------
-<P>
-A DSP network mechanism has been added. DSP objects are:
-sig~, +~, *~, phasor~, cos~.
-<P>
-Loading of externs is provided (although there is no search path mechanism
-so the extern has to be in the patch's current directory.) Look in
-pd/externs for an example.
-
-<BR> <BR>
-
-------------------- 0.01. -------------------
-<P>
-This first release serves mostly to test the "release" mechanism. A Pd
-"canvas" object is provided which does both graphing and patch editing.
-The editing features apply only to the Max-like part; the graphs have
-to be edited into a Pd file via text editor.
-<P>
-Four menu items (in the "put" menu) create the four kinds of "patchable"
-objects; they can be dragged and connected as in Max; to break a connection,
-just click on it (the cursor becomes a turkey to indicate this.) Cut,
-paste, and duplicate seem to work, and a "Pd" class offers subwindows.
-<P>
-The following max-like objects are included:
-
- print;
- +, *, -, /, ==, !=, >, <, >=, <=, &, |, &&, ||, %;
- int, float, pack, unpack, trigger;
- delay, metro, timer;
- send, receive.
-<P> -----------------------------------------
-
-<H3> <A name="s2"> 5.2. known bugs </A> </H3>
-
-<P> In the list below, starred items are still things needing attention...
-
-<P> *1. Timing of MIDI input/output is very shaky. Audio I/O is primitive, but
-there's at least a way to detect errors now for linux and NT.
-
-<P> *2. There is no flow control for graphical updates yet; the
-real-time process can easily block trying to write too fast to the GUI.
-
-<P> 3. PD dies if your patch has an infinite loop [fixed in 0.30 release.]
-
-<P> *4. If you cut a box which is a "Pd" or abstraction whose subpatch has
-items selected, Pd dies.
-
-<P> *5. Tables and other drawable items can draw far outside the window; there's
-no sanity check, Huge tables (>1000 points) are only partially drawn
-(the first 1000 points.)
-
-<P> 6. There's no way to order force a delread~ to make it read after
-a delwrite~ has written. [but see under 3.audio.examples how to do this now.]
-
-<P> 7. Pd doesn't know to suspend graphics updates when you minimize objects.
-Presumably minimization makes things better but it doesn't cut off graphics
-computation entirely as it should. [fixed for 0.34]
-
-<P> 8. If you load a nonexistent extern you get a spurious message,
-"consistency check failed: canvas_setargs". [fixed for 0.27 release.]
-
-<P> 9. Typing backslashes into objects upsets Tk [0.29 should suppress all
-backslashes; a real fix might come later.]
-
-<P> 10. Never type a dollar sign into a comment; you may have trouble
-opening your patch afterward... [fixed somewhere around 0.32]
-
-<P> *11. You'd better Turn DSP off before you type into a box that currently
-holds a "pd" object with tilde objects in the subpatch.
-
-<P> *12. In Linux, if you hit control C while Pd is opening MIDI, Pd hangs.
-
-<P> *13. In linux, Pd doesn't report audio data-late errors yet.
-
-<P> *14. Several objects, notably dac~, adc~, and env~, are incompatible with
-uses of block~ or switch~ objects that change block size frmo the default of
-64. Using switch~ without reblocking causes no problem. Don't try to
-read/write delay lines or use send~/receive~, or throw~/catch~, between
-windows with different block sizes.
-
-<H3> <A name="s3"> 5.3. differences from Max/MSP </A> </H3>
-
-<P> It wasn't anyone's intention to make Pd a Max/MSP clone, but on the
-other hand, if there's no reason for a feature to appear differently in
-Pd than in Max/MSP, the choices in Pd tend to hew to those in Max/MSP.
-Moreover, some effort has been undertaken (but more is needed) to make the
-two interoperable.
-
-<P> You can use Pd to import and export patches to Max/MSP; just save as
-text to a file with extension ".pat", and then open it in Pd. You'll at
-least get something. If you stick to common or commonizable features
-you can actually develop patches for both platforms.
-
-<P> When specific objects exist on one platform and not on the other, it's
-often possible to make abstractions to imitate the missing objects, in a
-kind of personalized compatibility library.
-
-<P> There are, however, differences in semantics you'll want to know about;
-a partial list follows.
-
-<P> <b> abstraction arguments. </b>
-In Pd you can edit instantiations of abstractions and save the result back
-to the file of the abstraction. This isn't possible in Max, because the
-instantiations are different from the abstraction itself in that "#1", etc.,
-are replaced by the instantiation arguments. In Pd, these arguments appear
-as "$1", etc, and are translated at a slightly later stage of the instantiation
-process so that you still see them as "$" variables in the instantiation.
-<A href="x2.htm#s7.1"> (see Section 2.7. abstractions) </A>
-
-<P> In Pd, to make current all instantiations of the
-abstraction, either delete and recreate them or close and open the patch;
-this is done automatically in Max/MSP.
-
-<P> In Pd, if you select "save" while in a subpatch, the parent is saved. In
-Max/MSP, if you do this a dialogue box comes up asking if you want to save the
-subpatch as a separate file. (if you want to save a subpatch to a file in Pd,
-you have to copy and paste the contents to a new document.
-
-<P> In Pd, inlets and outlets are ordinary text objects; in Max/MSP they're
-"gui" objects from the palette.
-
-<P> In Max/MSP, if an object's outlet is connected to several destinations,
-corresponding messages are always sent in right-to-left screen order. In
-Pd, the messages are sent in the order you made the connections in. In either
-case, in situations where you care about the order it's appropriate to use
-a "trigger" object to specify.
-
-<P> In Pd, there's no "gate"; instead it's "spigot" with the inlets in the
-opposite, more natural order.
-
-<P> Switching subsets of the DSP patch on and off is done in completely
-different ways in Pd and Max/MSP, and block sizes are handled differently as
-well.
-
-<P> Max offers many "GUI" objects such as sliders, dials, VU meters, piano
-keyboards, even "bpatchers." Until version 0.34, the only two in Pd were the
-number box and graphical arrays. Starting in version 0.34, Pd incorporates
-Thomas Musil's GUI objects: sliders, switches, and so on. (Thanks Thomas!)
-Beyond this essential collection of GUI objects, it's unlikely you'll ever find
-any commonality between the two. Also, as of 0.34, importing and exporting to
-Max doesn't know about the Musil objects; I'll try to get that fixed for 0.35.
-
-<P> In Pd there's no "preset" object (I now think it's basically a bad idea)
-and you have to use explicit sends and receives to restore values to number
-boxes. Then just make a "message" box to re-send the values you want.
-
-<P> In Macintosh land, instead of getting tabosc4~ and arrays, you get cycle~
-and buffer~. The only gotcha is that you probably can't draw in buffer~ with
-the mouse as you can with arrays, but at least it's possible to
-make a patch that copies a "table" into a "buffer~".
-
-<P> The "bpatcher" feature in Max has a correlate, "graph on parent" subpatches,
-in Pd; however, Pd's version is quite different from Max's.
-
-</BODY>
-</HTML>