aboutsummaryrefslogtreecommitdiff
path: root/pd/doc/1.manual/x5.htm
diff options
context:
space:
mode:
authorGuenter Geiger <ggeiger@users.sourceforge.net>2002-07-29 17:06:19 +0000
committerGuenter Geiger <ggeiger@users.sourceforge.net>2002-07-29 17:06:19 +0000
commit57045df5fe3ec557e57dc7434ac1a07b5521bffc (patch)
tree7174058b41b73c808107c7090d9a4e93ee202341 /pd/doc/1.manual/x5.htm
parentda38b3424229e59f956252c3d89895e43e84e278 (diff)
This commit was generated by cvs2svn to compensate for changes in r58,
which included commits to RCS files with non-trunk default branches. svn path=/trunk/; revision=59
Diffstat (limited to 'pd/doc/1.manual/x5.htm')
-rw-r--r--pd/doc/1.manual/x5.htm1231
1 files changed, 1231 insertions, 0 deletions
diff --git a/pd/doc/1.manual/x5.htm b/pd/doc/1.manual/x5.htm
new file mode 100644
index 00000000..2203ebc7
--- /dev/null
+++ b/pd/doc/1.manual/x5.htm
@@ -0,0 +1,1231 @@
+<HTML>
+<HEAD>
+<TITLE>Pd Documentation</TITLE>
+</HEAD>
+<BODY bgcolor="#ffffff">
+<SMALL>
+<div style="width:6.5in; margin-left:.5in">
+
+<CENTER> <B>
+Pd Documentation chapter 5. current status
+</B> </CENTER>
+<P>
+This section tracks changes in Pd's current implementation.
+<BR>
+<H5> <A href=index.htm#s5> back to table of contents </A></H5>
+
+<H4> <A name=s2> 5.1. release notes </A> </H4>
+
+<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 frewuency. 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
+explicityly, 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 taht 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 runnimg 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-stlye names for arays 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" amd expecially
+"3.audio" example patches. A list of differences batween 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> (lunix) 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
+woudl 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 rpms. 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 differnces 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: supress 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 notin 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-<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 <file>", "write <file>", "resize <N>", 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> -----------------------------------------
+
+<H4> <A name=s2> 5.2. known bugs </A> </H4>
+
+<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.
+
+<H4> <A name=s3> 5.3. differences from Max/MSP </A> </H4>
+
+<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> <bold> abstraction arguments. </bold>
+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>