aboutsummaryrefslogtreecommitdiff
path: root/pd/doc
diff options
context:
space:
mode:
authorMiller Puckette <millerpuckette@users.sourceforge.net>2005-05-18 04:28:51 +0000
committerMiller Puckette <millerpuckette@users.sourceforge.net>2005-05-18 04:28:51 +0000
commit388f7a1df37afeed0dd120f8091614a7f6dd91ab (patch)
tree8a439951a1c190b1fc786abc4f69b23181c54168 /pd/doc
parentbb13717ae41bfa317e7b84625201279a5a2a09d9 (diff)
Damn, edited this before and lost the update. More data features.
Took about 12 patches. svn path=/trunk/; revision=3006
Diffstat (limited to 'pd/doc')
-rw-r--r--pd/doc/1.manual/fig1.1.pngbin1980 -> 3586 bytes
-rw-r--r--pd/doc/1.manual/fig11.1.pngbin5542 -> 14795 bytes
-rw-r--r--pd/doc/1.manual/fig11.2.pngbin2887 -> 4333 bytes
-rw-r--r--pd/doc/1.manual/index.htm15
-rw-r--r--pd/doc/1.manual/x2.htm12
-rw-r--r--pd/doc/1.manual/x3.htm383
-rw-r--r--pd/doc/1.manual/x5.htm56
-rw-r--r--pd/doc/4.fft.examples/00.INTRO.txt60
-rw-r--r--pd/doc/5.reference/plot-help.pd52
-rw-r--r--pd/doc/5.reference/rpole~-help.pd52
-rw-r--r--pd/doc/7.stuff/data-structures/2.getting.data.pd42
-rw-r--r--pd/doc/7.stuff/data-structures/5.array.pd15
-rw-r--r--pd/doc/7.stuff/tools/testtone.pd54
-rw-r--r--pd/doc/sound/voice2.wavbin78194 -> 78194 bytes
14 files changed, 354 insertions, 387 deletions
diff --git a/pd/doc/1.manual/fig1.1.png b/pd/doc/1.manual/fig1.1.png
index a2399935..483a1e8c 100644
--- a/pd/doc/1.manual/fig1.1.png
+++ b/pd/doc/1.manual/fig1.1.png
Binary files differ
diff --git a/pd/doc/1.manual/fig11.1.png b/pd/doc/1.manual/fig11.1.png
index c8283cdb..1a32fe4f 100644
--- a/pd/doc/1.manual/fig11.1.png
+++ b/pd/doc/1.manual/fig11.1.png
Binary files differ
diff --git a/pd/doc/1.manual/fig11.2.png b/pd/doc/1.manual/fig11.2.png
index 1fcfd7e7..38990aac 100644
--- a/pd/doc/1.manual/fig11.2.png
+++ b/pd/doc/1.manual/fig11.2.png
Binary files differ
diff --git a/pd/doc/1.manual/index.htm b/pd/doc/1.manual/index.htm
index c403ae99..519a5102 100644
--- a/pd/doc/1.manual/index.htm
+++ b/pd/doc/1.manual/index.htm
@@ -93,14 +93,13 @@ can be found at:
<LI> <a href="x3.htm" name=s3> getting Pd to run </A>
<OL>
- <LI> <a href="x3.htm"> Overview </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#s3"> graphics rendering using GEM </A>
- <LI> <a href="x3.htm#s4"> The Pd command line </A>
- <LI> <a href="x3.htm#s5"> dealing with files </A>
+ <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>
diff --git a/pd/doc/1.manual/x2.htm b/pd/doc/1.manual/x2.htm
index f68dfe0a..dd33b149 100644
--- a/pd/doc/1.manual/x2.htm
+++ b/pd/doc/1.manual/x2.htm
@@ -51,9 +51,9 @@ 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 bottom left.
+control at lower left.
-<P> At bottom right is a control to turn audio processing on and off
+<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
@@ -70,6 +70,9 @@ 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
@@ -86,9 +89,8 @@ have zero or more inputs and/or outputs, with the inputs on top and the outputs
on bottom.
<P>
-Pd's printout appears on its standard output. Normally, you'll run Pd in a
-"shell" or "terminal" window which you'll keep open to see any printout or
-error messages.
+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>
diff --git a/pd/doc/1.manual/x3.htm b/pd/doc/1.manual/x3.htm
index 5f4f178f..9bc0f537 100644
--- a/pd/doc/1.manual/x3.htm
+++ b/pd/doc/1.manual/x3.htm
@@ -33,6 +33,8 @@ In case of trouble also consult the Pd mailing list archive on
, 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:
@@ -132,35 +134,36 @@ 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.
-<H3> <A name=s1.1> 3.1. Installing Pd in Microsoft Windows </A> </H3>
+Other parameters may be tweaked using the command line; see under
+<A href=#s4> preferences and startup options </A>.
-<P> Pd is compiled under NT, but should work under any version of Windows since
-95. Pd will appear as a self-extracting archive (a ".exe" file). Run this and
-select a destination directory when prompted, such as "\pd" or "Program
-Files\pd".
+<H6> MIDI </H6>
-<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.)
+<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.
-<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> The vanishing window </H4>
+<H3> <A name=s1.1> 3.2. Installing Pd in Microsoft Windows </A> </H3>
-<P> Pd is a "command line" program. Most error and diagnostic
-messages from Pd appear on the command prompt window Pd runs from.
+<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 you start Pd from the "run" menu or as a shortcut, and if there's
-a problem with run-time flags (see the Pd command line below), Pd will
-print an error and exit. You won't see this error unless you arrange for the
-"command prompt" or "msdos" window to stay open after Pd exits. One way
-to do this is to make a "batch" file ("run.bat", say) containing the Pd
-command line.
+<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>
@@ -169,7 +172,8 @@ 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.
+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
@@ -190,10 +194,6 @@ 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".
-<P> Some NT and W98 drivers greet you with a constant trail of "resyncing
-audio" messages. Sometimes you can fix this by invoking Pd with the "-noresync"
-flag.
-
<H4> ASIO </H4>
<P> As of version 0.35 Pd supports ASIO. Invoke Pd as "pd -asio" and, if
@@ -203,7 +203,7 @@ 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.2. Installing Pd in Linux </A> </H3>
+<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
@@ -311,14 +311,9 @@ audio latency your audio system can handle.
<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.
-
-<P>
-Depending on your hardware and software, you might or might not be able to
-run "full duplex," i.e., use audio input and output at the same time. For
-many applications it's important to be able to do this, but if by any chance
-you don't need simultaneous input and output you will have much less trouble
-than if you do.
+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
@@ -331,95 +326,24 @@ releases. You can get ALSA from
<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.
-
-<H4> Installing and configuring FREE OSS </H4>
-
-<P>
-OSS is really a collection of loadable device drivers. The commands
-for loading and unloading the drivers are "insmod" and "rmmod".
-You can see if the audio drivers are
-running using "lsmod" (as root.) If you see something like:
-<PRE>
-
-Module Pages Used by
-eepro100 3 1 (autoclean)
-opl3 3 0
-opl3sa2 1 0
-ad1848 4 [opl3sa2] 0
-mpu401 5 [opl3sa2] 0
-sound 15 [opl3 opl3sa2 ad1848 mpu401] 0
-soundcore 1 [sound] 6
-soundlow 1 [sound] 0
-aic7xxx 23 2
-
-</PRE>
-
-<P>then OSS is running, and if all you see is:
-
-<PRE>
-
-eepro100 3 1 (autoclean)
-aic7xxx 23 2
-
-</PRE>
-<P>then it isn't. You can turn OSS off by running "rmmod" repeatedly, starting
-with "opl3" (or whatever) so as not to remove any module before you remove
-all the modules that depend on it. In the above listing, "opl3*" is device
-dependent and you might see different names.
-
-<P>
-The file, "/etc/modules.conf" apparently controls which sound drivers are
-started at boot time. The sndconfig program updates this file but you can
-also change things manually, for instance to switch between two different sound
-cards. In Redhat 6.x and earlier, the file is named "conf.modules."
-
-<P> Here is a modules.conf file for OSS:
-
-<PRE>
-
-alias eth0 e100
-alias parport_lowlevel parport_pc
-alias char-major-81 bttv
-alias usb-controller usb-uhci
-alias sound-slot-0 i810_audio
-alias sound-slot-1 es1371
-
-</PRE>
-
-<P>Here the two sound cards are the (motherboard resident) i810 driver and an
-ensoniq es1371.
-
-<P> In RedHat at least, the "sndconfig" program tries to automatically search
-for your soundcard. Unfortunlately it only finds the "first" one which is
-often not the one you want to use!
-
-<P> Under OSS, programs can stream sound using either
-"block" or "stream" mode. Stream mode is the more modern and better of the
-two, but the majority of drivers, even for new sound cards, only
-support "block." Pd makes "block" the default.
-
-<H4> ALSA (Advanced Linux Sound Architecture) </H4>
-
-<P> ALSA is newer, hence less stable and harder to use, than OSS.
-Alsa comes in a "finished" version (0.5.x) and a
-different, redesigned, "beta" version, 0.9. Installing ALSA can be tricky
-and/or confusing.
-
-<P> As of version 0.37 Pd works only with 0.9.x versions.
-The RPM version of Pd is compiled for 0.9.x.
+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.
+to be used, include the "-alsa" flag in the command line or bang on the "media"
+menu items.
-<P> In ALSA, you can specify which sound card to use using the "-alsadev"
-flag. So, for instance, "-alsadev 3" means your third card, counting from
-one. You can also specify it the ALSA way: "-alsadev hw:3,0".
+<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> Which sound card? </H4>
+<H4> Experiences with particular soudcards </H4>
<P>
-Here's a rundown on my experiences with sound cards so far. See
+Here are some of my own experiences with sound cards so far. See
also the Pd mailing list archives.
<H6> RME 9652 (Hammerfall) </H6>
@@ -429,60 +353,54 @@ 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> Word on the Pd mailing list is that the only way at present (7/04) to use
-Hammerfall boards in Pd is via ALSA and jack.
+<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. The driver name is "ice1712".
+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> i810/i815 </H6>
+<H6> warning about i810/i815 drivers...</H6>
-<P>In RedHat 7.0, motherboards with native i810 audio systems don't work in
-full duplex (they crash linux). Either run Pd -noadc or else (better) install
-ALSA.
+<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.3. Installing Pd in Macintosh OSX </A> </H3>
+<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)
-find a MacOSX-style "package". The first package was put together by Adam
-Lindsay; the most current one is by Hans-Christof Steiner
-on
-<A http://puredata.info/Members/hans">
-http://puredata.info/Members/hans</A>.
-The package simply installs itself
-and you needn't follow the directions below.
-</P>
+<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>.
-<H4> To install on OSX from the binary tarball: </H4>
+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 binary tarballs on
-<A HREF="http://www.crca.ucsd.edu/~msp/software.html">
-http://www.crca.ucsd.edu/~msp/software.html</A>
-take more steps to install but are more "official". To install them:
+<P> The package by Hans-Christoph Steiner, on
-<P> If you haven't already, first download and install Tcl/Tk; there are pointers on
-Hans's page, or try: http://tcltkaqua.sourceforge.net/
-<A href="http://tcltkaqua.sourceforge.net/">
-http://tcltkaqua.sourceforge.net/</A>. Double click on what you
-get (a disk image opens) and then double click on the "package" icon, and the
-installer should tell you how to proceed from there.
+<A href="http://at.or.at/hans/pd/installers.html">
+http://at.or.at/hans/pd/installers.html</A>,
-<P> Then download a tarball like pd-0.37-0.mac.tar.gz, and expand it
-(I think that's done just by clicking on the thing in OSX.) You can install
-it into your home directory for example. Then start a shell window and
-type "~/pd/bin/pd" to it, and pd should start.
+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>
@@ -497,7 +415,10 @@ specifically in
/Applications/Wish Shell.app
and /Library/Frameworks/Tk.framework and /Library/Frameworks/Tcl.framework.
-<P> First download and install TK for OSX as described above.
+<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"
@@ -509,7 +430,8 @@ and "make". Then type ~/pd-0.36-0/bin/pd to a shell and enjoy!
alias pd ~/pd/bin/pd
</pre>
-<P>in the file, ~/.tcshrc, so that you can later just type "pd" to a shell. (The
+<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>
@@ -517,23 +439,14 @@ any existing shells unless you specially type
</pre>
<P>to them.)
-<P> In some cases you have to explicitly give "-soundindev" and "-soundoutdev"
-flags for Pd to open audio correctly; "pd -listdev" should show you the
-correct device numbers.
+<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.
-<P> On the machine I tried, it was necessary to type,
-
-<pre>
- pd -midiindev 1 -midioutdev 2
-</pre>
-
-<P>to get MIDI working.
-
-<H3> <A name=s1.4> 3.4. Installing Pd in IRIX (SGI machines) </A> </H3>
+<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;
@@ -636,20 +549,66 @@ Opcode Studio 3 interface but in principle any Mac-compatible one should work.
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>
-<H3> <A name=s3> 3.5. graphics rendering using GEM </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>
-GEM, originally by Mark Danks but now supported by Iohannes Zmoelnig, is essentially an extension of Pd that allows you to do OpenGL programming
-using a suite of "GEM objects" roughly parallel to the tilde objects built
-into Pd for audio. Find out more from
-<a href="http://iem.kug.ac.at/~zmoelnig/index.html"> Johannes's page</a>.
+<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.
-<H3> <A name=s4> 3.6. The Pd command line </A> </H3>
+<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:
-<P>Pd is a "command line" program. The best way to run it is from your
-"terminal emulator," "shell," or "MSDOS prompt." The command line is:
+<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>
@@ -702,6 +661,8 @@ MIDI configuration flags:
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)
@@ -710,10 +671,13 @@ general flags:
-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>
@@ -739,7 +703,7 @@ 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, block size, and sleep grain. </H4>
+<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
@@ -747,26 +711,10 @@ 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.
-
-
-<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.
+<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 </H4>
-
-<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 inupt and output is theoretically supported
-in version 0.37 but has not been tested.
+<H4> MIDI and sleepgrain</H4>
<P> In Linux, if you
ask for "pd -midioutdev 1" for instance, you get /dev/midi0 or /dev/midi00
@@ -775,7 +723,13 @@ 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."
-<H3> <A name="s5"> 3.7. dealing with files </A> </H3>
+<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
@@ -783,15 +737,26 @@ 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. 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.
+item in the "File" menu:
+
+<CENTER><P>
+ <IMG src="fig11.4.png" ALT="startup dialog">
+</P></CENTER>
-<P>When Pd searches for an abstraction or an
+<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) work the same way. NO SPACES MAY
-APPEAR ANYWHERE IN THE SEARCH PATH, e.g., "c:\my nonsense\goobers" won't
-work.
+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",
@@ -801,9 +766,9 @@ 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. (However, sometimes, for
-reasons I can't explain yet, you have to put the entry "." in the
-search path for this to happen, as least within linux!)
+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
@@ -813,11 +778,11 @@ 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.)
+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. But still not
-the search path.
+the "openpanel" and "savepanel" objects can handle spaces. Spaces in the
+path should work as of version 0.38.
</BODY>
</HTML>
diff --git a/pd/doc/1.manual/x5.htm b/pd/doc/1.manual/x5.htm
index 1a1b2e2f..990893b1 100644
--- a/pd/doc/1.manual/x5.htm
+++ b/pd/doc/1.manual/x5.htm
@@ -20,6 +20,62 @@
<H3> <A name="s2"> 5.1. release notes </A> </H3>
+<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
diff --git a/pd/doc/4.fft.examples/00.INTRO.txt b/pd/doc/4.fft.examples/00.INTRO.txt
index b5218793..c27120b8 100644
--- a/pd/doc/4.fft.examples/00.INTRO.txt
+++ b/pd/doc/4.fft.examples/00.INTRO.txt
@@ -1,63 +1,11 @@
-These patches demonstrate how to use Pd's short-time Fourier transform objects,
-rfft~ and rifft~, to do a variety of things. The patches can be quite
-expensive; the phase vocoder, for instance, requires a 300MHz Pentium 2 to run
-at 44100 Hz. By default Pd runs at 44100 Hz, but you can specify a different
-sample rate on the command line, for instance:
-
-pd -r 16000 09.pvoc.pd
-
-On SGI, Pd will check whether your audio system is running at the correct
-sample rate and will print out a warning if not. In NT or W95, Pd's behavior
-will depend on your audio driver. In Linux Pd usually tries to set the rate
-of the conversion hardware.
-
-Included in this directory are:
-
-01.fftanalysis.pd -- does a windowed FFT analysis and resynthesis of a sine
-tone, showing how to specify block size and overlap.
-
-02.noisefft.pd -- Fourier analysis of white noise. This patch also shows how
-you can average power spectra over time.
-
-03.denoise.pd -- using the technique from the previous patch, finds the noise
-floor in a recorded sample and attempts to scrub it away.
-
-04.shifts.pd -- tests the leftshift and rightshift "externs" used in the next
-patch.
-
-05.sheepgoat.pd -- tries to discriminate between "pitched" and "unpitched"
-components of a sound.
-
-06.sheepgoat2.pd -- another attempt at the same thing.
-
-07.tinbell.pd -- a spectral flattener, which can make the sound of a large bell
-turn into the sound of a tamtam.
-
-08.convobros.pd -- spectral cross synthesis between two sounds
-
-09.pvoc.pd -- phase vocoder
-
----------- after this point, the patches haven't been cleaned up -----------
-
-10.phaselockedvoc.pd -- phase locked vocoder; see Laroche&Dolson in ICMC97 for
-a discussion of something that works better than this.
-
-11.pianorev.pd -- an attempt at a phase-coherent reverberation algorithm to
-imitate the "piano reverb" obtained by putting a speaker under the sound board
-of a piano and picking up the sympathetic vibrations.
+Most of the patches here have moved to section I of the audio examples.
+The remaining ones are due for an update but will probably join the
+"data" examples.
12.sinedecomposer.pd -- estimate the frequencies and amplitudes of the
components of a sound
-13.tracemaker.pd -- show how to use Pd to combine snapshots of a spectrum into
-continuous spectral traces.
-
-14.partialtracer.pd -- sinusoidal analysis/resynthesis of a time-verying sound.
-
-15.waveformgrab.pd -- bash a sample into phase-coherent windows and make a
-pitched resynthesis.
-
-
+13.partialtracer.pd -- sinusoidal analysis/resynthesis of a time-verying sound.
diff --git a/pd/doc/5.reference/plot-help.pd b/pd/doc/5.reference/plot-help.pd
index 050418d2..7d22d06c 100644
--- a/pd/doc/5.reference/plot-help.pd
+++ b/pd/doc/5.reference/plot-help.pd
@@ -4,44 +4,42 @@ array array2 help-plot-array2-template array array3 help-plot-array3-template
#N struct help-plot-array1-template float y;
#N struct help-plot-array2-template float x float y;
#N struct help-plot-array3-template float y float w;
-#N canvas 398 0 516 229 12;
-#N canvas 288 75 606 588 help-plot-template 1;
-#X text 35 30 creation arguments:;
-#X text 51 48 - RGB color (0=black \, 999=white \, 900=red \, 90=green
+#N canvas 477 38 516 229 12;
+#N canvas 486 0 622 558 help-plot-template 0;
+#X text 29 34 creation arguments:;
+#X text 49 94 - RGB color (0=black \, 999=white \, 900=red \, 90=green
\, 9=blue \, 555=grey \, etc.);
-#X text 50 97 - relative x and y location;
-#X text 50 114 - x spacing;
-#X text 40 150 This first example plots the red trace (500) \, width
+#X text 47 52 - OPTIONAL word "curve" to specify bezier;
+#X text 47 121 - line width;
+#X text 47 137 - relative x and y location;
+#X text 48 153 - x spacing;
+#X obj 40 240 plot curve array2 70 3 100 0;
+#X obj 31 331 plot curve array3 9 1 120 50 20;
+#X obj 45 12 plot array1 500 1 10 15 20;
+#X text 30 170 This first example plots the red trace (500) \, width
1 \, at point (10 \, 15) \, with horizontal spacing 20 The black diamonds
come from the template of the array1 element itself.;
-#X text 44 327 If a "w" variable is present in the template as for
+#X text 51 351 If a "w" variable is present in the template as for
array3 \, it is added to the line width.;
-#X obj 37 493 filledpolygon 509 509 0 -10 -10 10 -10 10 10 -10 10;
-#X text 34 454 To see the data itself \, select "properties" for the
+#X obj 28 524 filledpolygon 509 509 0 -10 -10 10 -10 10 10 -10 10;
+#X text 28 477 To see the data itself \, select "properties" for the
scalar by right clicking on the purple square.;
-#X obj 36 390 struct help-plot-template float x float y array array1
+#X obj 25 410 struct help-plot-template float x float y array array1
help-plot-array1-template array array2 help-plot-array2-template array
array3 help-plot-array3-template;
-#X text 45 369 here's the "struct" for all this:;
-#X obj 51 8 plot array1 500 1 10 15 20 1;
-#X obj 39 217 plot array2 70 3 100 0 0 2;
-#X text 30 542 obsolete feature: the arguments can be preceded by the
-word "curve" to specify bezier curves. This will be phased out.;
-#X text 52 80 - line width in pixels;
-#X text 51 130 - style (0 for points \, 1 for polygon \, 2 for Bezier
-curve);
-#X text 40 236 This is the green spiral (color 70 \, line width 3 \,
+#X text 34 389 here's the "struct" for all this:;
+#X text 46 73 - field to plot (the array);
+#X text 63 262 This is the green spiral (color 70 \, line width 3 \,
location (100 \, 0). Since the template for array2 contains an "x"
-cariable \, play ignores x spacing requests and takes x from the data
-itself. The style is 2 for a Bezier curve.;
-#X obj 43 309 plot array3 9 1 120 50 20 1;
+variable \, play ignores x spacing requests and takes x from the data
+itself.;
#X restore 243 78 pd help-plot-template;
#N canvas 196 292 273 120 help-plot-array1-template 0;
#X obj 30 71 filledpolygon 0 0 0 -5 0 0 5 5 0 0 -5;
-#X obj 32 27 template float y;
+#X obj 32 27 struct help-plot-array1-template float y;
#X restore 242 101 pd help-plot-array1-template;
#N canvas 161 163 273 120 help-plot-array2-template 0;
-#X obj 32 26 template float x float y;
+#X obj 32 26 struct help-plot-array2-template float x float y;
#X restore 243 123 pd help-plot-array2-template;
#N canvas 0 0 411 207 help-plot-data 1;
#X scalar help-plot-template 39 73 \; 0 \; 20 \; 0 \; 30 \; 0 \; \;
@@ -50,12 +48,12 @@ itself. The style is 2 for a Bezier curve.;
#X restore 242 57 pd help-plot-data;
#X text 23 139 see also:;
#X obj 30 184 drawnumber;
-#X obj 29 163 template;
#X obj 35 22 plot;
#X text 87 21 -- draw array elements of scalars;
#X obj 29 206 drawpolygon;
#N canvas 161 163 273 120 help-plot-array3-template 0;
-#X obj 43 32 template float y float w;
+#X obj 43 32 struct help-plot-array3-template float y float w;
#X restore 242 144 pd help-plot-array3-template;
#X text 8 79 explanation is in here-->;
#X text 264 203 updated for Pd version 0.35;
+#X obj 29 163 struct;
diff --git a/pd/doc/5.reference/rpole~-help.pd b/pd/doc/5.reference/rpole~-help.pd
index 07d50267..011a2b5d 100644
--- a/pd/doc/5.reference/rpole~-help.pd
+++ b/pd/doc/5.reference/rpole~-help.pd
@@ -1,37 +1,37 @@
-#N canvas 56 7 526 510 12;
+#N canvas 56 7 669 542 12;
#X floatatom 118 172 0 0 0 0 - - -;
#X obj 54 85 osc~ 100;
#X msg 69 117 clear;
-#X obj 77 483 lop~;
-#X text 8 483 see also:;
+#X obj 96 512 lop~;
+#X text 10 512 see also:;
#X obj 52 7 rpole~;
#X text 114 7 real one-pole (recursive) filter \, raw;
#X text 8 35 Rpole~ filters an audio signal (left inlet) via a one-pole
real filter \, whose coefficient is controlled by a creation argument
or by an audio signal (right inlet).;
-#X text 331 482 updated for Pd version-0.38;
-#X obj 84 430 rzero~;
-#X obj 35 450 cpole~;
-#X obj 35 430 rpole~;
-#X obj 133 430 rzero_rev~;
-#X obj 84 450 czero~;
-#X obj 133 450 czero_rev~;
-#X text 211 430 real;
-#X text 210 451 complex;
-#X text 32 414 1-pole;
-#X text 81 414 1-zero;
-#X text 131 414 1-zero \, reversed;
-#X text 57 399 summary of raw filters:;
+#X text 413 511 updated for Pd version-0.38;
+#X obj 95 441 rzero~;
+#X obj 35 463 cpole~;
+#X obj 35 441 rpole~;
+#X obj 154 441 rzero_rev~;
+#X obj 95 463 czero~;
+#X obj 154 463 czero_rev~;
+#X text 253 441 real;
+#X text 252 464 complex;
+#X text 32 425 1-pole;
+#X text 92 425 1-zero;
+#X text 142 425 1-zero \, reversed;
+#X text 57 410 summary of raw filters:;
#X msg 71 143 set 1;
-#X text 117 143 <-- set internal state;
-#X text 118 86 <-- signal to filter;
-#X text 142 173 <-- filter coefficient (may be a signal);
-#X text 129 198 <-- creation argument initializes filter coefficient
+#X text 119 142 <-- set internal state;
+#X text 132 86 <-- signal to filter;
+#X text 150 173 <-- filter coefficient (may be a signal);
+#X text 150 195 <-- creation argument initializes filter coefficient
;
#X text 73 252 y[n] = y[n-1] + a[n] * x[n];
-#X text 10 302 The transfer function is H(Z) = 1/(1 - aZ^-1).;
-#X text 113 116 <-- clear internal state to zero;
-#X text 8 270 where y[n] is the output \, x[n] the input \, and a[n]
+#X text 10 310 The transfer function is H(Z) = 1/(1 - aZ^-1).;
+#X text 121 117 <-- clear internal state to zero;
+#X text 11 272 where y[n] is the output \, x[n] the input \, and a[n]
the filter coefficient. The filter is unstable if/when |a[n]|>1.;
#X obj 53 195 rpole~ 0.9;
#X text 14 230 The action of rpole~ is:;
@@ -67,9 +67,9 @@ the filter coefficient. The filter is unstable if/when |a[n]|>1.;
#X connect 12 0 10 0;
#X connect 12 0 10 1;
#X connect 13 0 12 1;
-#X restore 457 416 pd test;
-#X text 111 483 etc.: user-friendly filters;
-#X text 8 320 (Pd also provides a suite of user-friendly filters. This
+#X restore 457 427 pd test;
+#X text 136 512 etc.: user-friendly filters;
+#X text 8 331 (Pd also provides a suite of user-friendly filters. This
and other raw filters are provided for situations which the user-friendly
ones can't handle. See Chapter 8 of http://crca.ucsd.edu/~msp/techniques
for an introduction to the necessary theory.);
diff --git a/pd/doc/7.stuff/data-structures/2.getting.data.pd b/pd/doc/7.stuff/data-structures/2.getting.data.pd
index 123b869f..4b200052 100644
--- a/pd/doc/7.stuff/data-structures/2.getting.data.pd
+++ b/pd/doc/7.stuff/data-structures/2.getting.data.pd
@@ -1,40 +1,40 @@
-#N struct template2 float x float y float z float q;
-#N canvas 363 11 630 603 12;
-#X text 311 559 updated for Pd version 0.32.;
+#N struct template2 float x float y float z float q float zz;
+#N canvas 138 2 630 580 12;
+#X text 345 543 updated for Pd version 0.32.;
#N canvas 42 312 598 266 stuff 0;
#X obj 353 159 pointer;
#X obj 117 103 t b b b;
#X msg 117 62 bang;
#X obj 117 31 loadbang;
-#X text 151 62 click here to re-initialize;
-#X text 126 206 Explained later...;
-#X msg 20 139 50 250 30 9 \, 200 200 -20 900 \, 100 200 -50 30;
-#X obj 20 162 append template2 x y z q;
+#X text 163 62 click here to re-initialize;
+#X text 127 242 Explained later...;
+#X obj 28 208 append template2 x y z q;
#X msg 353 101 \; pd-data2 clear;
#X msg 353 137 traverse pd-data2 \, bang;
-#X connect 0 0 7 4;
-#X connect 1 0 6 0;
-#X connect 1 1 9 0;
-#X connect 1 2 8 0;
+#X msg 28 185 50 150 30 9 \, 200 100 -20 900 \, 100 100 -50 30;
+#X connect 0 0 6 4;
+#X connect 1 0 9 0;
+#X connect 1 1 8 0;
+#X connect 1 2 7 0;
#X connect 2 0 1 0;
#X connect 3 0 2 0;
-#X connect 6 0 7 0;
-#X connect 9 0 0 0;
+#X connect 8 0 0 0;
+#X connect 9 0 6 0;
#X restore 506 310 pd stuff;
#X text 506 242 subpatches:;
#X obj 15 303 pointer;
#X msg 27 271 next;
#X text 75 301 <- object that outputs pointers to scalars;
-#N canvas 13 22 345 271 data2 1;
-#X scalar template2 53 202 30 9 \;;
-#X scalar template2 203 152 -20 900 \;;
-#X scalar template2 103 152 -50 30 \;;
+#N canvas 13 22 307 198 data2 1;
+#X scalar template2 50 150 30 9 0 \;;
+#X scalar template2 200 100 -20 900 0 \;;
+#X scalar template2 100 100 -50 30 0 \;;
#X restore 506 265 pd data2;
-#N canvas 15 278 554 155 template2 0;
-#X obj 15 46 filledpolygon 244 q 5 0 0 20 z 40 0;
+#N canvas 315 125 554 155 template2 1;
#X text 13 79 The template for the two scalars \, as in the last patch
;
-#X obj 15 21 struct template2 float x float y float z float q;
+#X obj 15 46 filledpolygon 244 q 5 0 0 20 z 40 0;
+#X obj 14 21 struct template2 float x float y float z float q;
#X restore 506 288 pd template2;
#X obj 15 355 get template2 x y z q;
#X floatatom 15 384 5 0 0 0 - - -;
@@ -43,7 +43,7 @@
#X floatatom 199 385 5 0 0 0 - - -;
#X msg 15 246 traverse pd-data2;
#X obj 59 330 print;
-#X text 100 330 <- this gets a bang when we reach the end;
+#X text 111 331 <- this gets a bang when we reach the end;
#X text 211 353 <- this takes incoming pointers;
#X text 214 367 and outputs the values of x \, y \, z \, and q.;
#X text 172 245 <- go to head of list (click first);
diff --git a/pd/doc/7.stuff/data-structures/5.array.pd b/pd/doc/7.stuff/data-structures/5.array.pd
index 9f11e17c..15e43d22 100644
--- a/pd/doc/7.stuff/data-structures/5.array.pd
+++ b/pd/doc/7.stuff/data-structures/5.array.pd
@@ -13,14 +13,13 @@
#X obj 318 163 pointer;
#X msg 449 194 bang;
#N canvas 0 0 384 196 data5 1;
-#X scalar template5 50 150 30 9 \; 6 \; 10 \; 12 \; 14 \; 20 \; 26
-\; 32 \; 31 \; 26 \; 26 \; 23 \; 19 \; 15 \; 11 \; 7 \; 5 \; -55 \;
--56 \; -58 \; -1 \; -1 \; -6 \; -7 \; -8 \; -10 \; -11.3333 \; -12.6667
-\; -14 \; -18 \; -20 \; -22 \; -24 \; -26 \; -28 \; -31 \; -35 \; -37
-\; -37 \; -37 \; -37 \; -38 \; -39 \; -40 \; -41 \; -42 \; -43 \; -47
-\; -49 \; -51 \; -52 \; \;;
+#X scalar template5 60 109 30 9 \; 0 \; 0 \; 0 \; 0 \; 0 \; 3 \; 0
+\; 0 \; 0 \; 7 \; -60 \; -66 \; -68 \; -70 \; -88 \; -100 \; -100 \;
+14 \; 12 \; 8 \; 6 \; 2 \; -4 \; -26 \; -34 \; -58 \; -60 \; -66 \;
+-66 \; -66 \; -66 \; 0 \; 0 \; 0 \; 0 \; 0 \; 0 \; 0 \; 0 \; 0 \; 0
+\; 0 \; 0 \; 0 \; 0 \; 43 \; 0 \; 0 \; 0 \; 0 \; \;;
#X restore 508 314 pd data5;
-#N canvas 90 339 646 260 template5 1;
+#N canvas 470 534 646 260 template5 1;
#X obj 8 91 filledpolygon 244 q 3 0 0 20 z 40 0;
#X text 6 44 this declares an array named "bazoo" whose elements are
described by "template5-element." Array declarations take three arguments
@@ -32,7 +31,7 @@ spaced 4 apart.;
variable---see the help window for "plot".;
#X obj 6 8 struct template5 float x float y float z float q array bazoo
template5-element;
-#X obj 8 113 plot bazoo 700 3 30 10 4 1;
+#X obj 8 113 plot bazoo 700 3 30 40 4;
#X restore 508 337 pd template5;
#N canvas 65 248 568 128 template5-element 0;
#X text 12 36 This says that array elements will have a single floating-point
diff --git a/pd/doc/7.stuff/tools/testtone.pd b/pd/doc/7.stuff/tools/testtone.pd
index 257422f9..c5eae9af 100644
--- a/pd/doc/7.stuff/tools/testtone.pd
+++ b/pd/doc/7.stuff/tools/testtone.pd
@@ -1,4 +1,4 @@
-#N canvas 182 142 581 402 12;
+#N canvas 99 78 581 402 12;
#X floatatom 83 307 3 0 0 0 - - -;
#X obj 33 257 notein;
#X obj 33 283 stripnote;
@@ -61,9 +61,9 @@ started" in the Help menu.;
but is free for you to use for any reasonable purpose. See the file
\, LICENSE.txt in the distribution.;
#X obj 135 117 tgl 20 0 tone-ch1 tone-ch1 1 5 -8 0 12 -262144 -1 -1
-1 1;
+0 1;
#X obj 160 117 tgl 20 0 tone-ch2 tone-ch2 2 5 -8 0 12 -262144 -1 -1
-1 1;
+0 1;
#X obj 236 282 tgl 20 0 empty empty empty 20 8 0 8 -262144 -1 -1 0
1;
#X obj 394 110 tgl 20 0 tone-monitor set-tone-monitor monitor 25 10
@@ -93,13 +93,13 @@ but is free for you to use for any reasonable purpose. See the file
#X obj 393 148 tgl 20 0 tone-hipass set-tone-hipass input-hipass 25
10 0 12 -262144 -1 -1 0 1;
#X obj 185 117 tgl 20 0 tone-ch3 tone-ch3 3 5 -8 0 12 -262144 -1 -1
-1 1;
+0 1;
#X obj 210 117 tgl 20 0 tone-ch4 tone-ch4 4 5 -8 0 12 -262144 -1 -1
-1 1;
+0 1;
#X obj 235 117 tgl 20 0 tone-ch5 tone-ch5 5 5 -8 0 12 -262144 -1 -1
-1 1;
+0 1;
#X obj 260 117 tgl 20 0 tone-ch6 tone-ch6 6 5 -8 0 12 -262144 -1 -1
-1 1;
+0 1;
#X obj 331 108 bng 15 250 50 0 tone-all empty ALL 20 8 0 12 -262144
-1 -1;
#X obj 331 129 bng 15 250 50 0 tone-none empty NONE 20 8 0 12 -262144
@@ -122,7 +122,7 @@ but is free for you to use for any reasonable purpose. See the file
#X obj 379 256 print~;
#X obj 438 227 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
-#N canvas 162 353 903 462 -------audio----------- 0;
+#N canvas 0 114 903 462 -------audio----------- 0;
#X obj 186 95 hip~ 5;
#X obj 194 172 outlet;
#X obj 194 146 int;
@@ -161,18 +161,18 @@ but is free for you to use for any reasonable purpose. See the file
#X obj 28 165 s tone-hip;
#X obj 28 114 r tone-hipass;
#N canvas 499 63 548 519 glue+loadbang 0;
-#X obj 171 21 loadbang;
-#X obj 171 176 r tone-all;
-#X msg 171 204 \; tone-ch1 1 \; tone-ch2 1 \; tone-ch3 1 \; tone-ch4
-1 \; tone-ch5 1 \; tone-ch6 1;
-#X obj 168 323 r tone-none;
-#X msg 168 352 \; tone-ch1 0 \; tone-ch2 0 \; tone-ch3 0 \; tone-ch4
-0 \; tone-ch5 0 \; tone-ch6 0;
-#X msg 171 49 \; pd dsp 1 \; tone-pitch 69 \; tone-radio 2 \; tone-radio-set
+#X obj 8 20 loadbang;
+#X obj 175 18 r tone-all;
+#X obj 285 16 r tone-none;
+#X msg 8 48 \; pd dsp 1 \; tone-pitch 69 \; tone-radio 2 \; tone-radio-set
2 \; tone-type 1 \; tone-type-set 1 \; tone-all 1 \;;
-#X connect 0 0 5 0;
-#X connect 1 0 2 0;
-#X connect 3 0 4 0;
+#X msg 175 46 \; tone-ch1 1 \; tone-ch2 1 \; tone-ch3 1 \; tone-ch4
+1 \; tone-ch5 1 \; tone-ch6 1 \; tone-ch7 1 \; tone-ch8 1;
+#X msg 285 47 \; tone-ch1 0 \; tone-ch2 0 \; tone-ch3 0 \; tone-ch4
+0 \; tone-ch5 0 \; tone-ch6 0 \; tone-ch7 0 \; tone-ch8 0;
+#X connect 0 0 3 0;
+#X connect 1 0 4 0;
+#X connect 2 0 5 0;
#X restore 22 332 pd glue+loadbang;
#X obj 428 96 hip~ 5;
#X obj 436 173 outlet;
@@ -320,12 +320,12 @@ but is free for you to use for any reasonable purpose. See the file
#X obj 1029 355 *~;
#X obj 1019 385 +~;
#X obj 1027 68 r tone-hip;
-#X obj 918 278 r tone-ch5;
-#X obj 1038 277 r tone-ch6;
#X obj 899 43 adc~ 7;
#X obj 1019 42 adc~ 8;
#X obj 899 411 dac~ 7;
#X obj 1019 410 dac~ 8;
+#X obj 918 278 r tone-ch7;
+#X obj 1038 277 r tone-ch8;
#X connect 0 0 7 0;
#X connect 0 0 3 0;
#X connect 2 0 1 0;
@@ -425,7 +425,7 @@ but is free for you to use for any reasonable purpose. See the file
#X connect 106 0 104 0;
#X connect 107 0 108 0;
#X connect 108 0 109 1;
-#X connect 109 0 127 0;
+#X connect 109 0 125 0;
#X connect 110 0 99 1;
#X connect 111 0 117 0;
#X connect 111 0 114 0;
@@ -437,12 +437,12 @@ but is free for you to use for any reasonable purpose. See the file
#X connect 118 0 116 0;
#X connect 119 0 120 0;
#X connect 120 0 121 1;
-#X connect 121 0 128 0;
+#X connect 121 0 126 0;
#X connect 122 0 111 1;
-#X connect 123 0 106 0;
-#X connect 124 0 118 0;
-#X connect 125 0 99 0;
-#X connect 126 0 111 0;
+#X connect 123 0 99 0;
+#X connect 124 0 111 0;
+#X connect 127 0 106 0;
+#X connect 128 0 118 0;
#X restore 139 159 pd -------audio-----------;
#X floatatom 335 186 3 0 0 0 - - -;
#X floatatom 368 186 3 0 0 0 - - -;
diff --git a/pd/doc/sound/voice2.wav b/pd/doc/sound/voice2.wav
index 9bd9d484..d5d944b1 100644
--- a/pd/doc/sound/voice2.wav
+++ b/pd/doc/sound/voice2.wav
Binary files differ