PD ONLINE DOCUMENTATION CHAPTER 7: release notes

These notes describe Pd's evolution by version.

---------------------------- 0.01. -----------------------------

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.

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.

The following max-like objects are included:

    print;
    arithmetic: +, *, -, /, ==, !=, >, <, >=, <=, &, |, &&, ||, %;
    int, float, pack, unpack, trigger;
    delay, metro, timer;
    send, receive.

---------------------------- 0.02 -----------------------------

A DSP network mechanism has been added.  DSP objects are:
sig~, +~, *~, phasor~, cos~.

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.

---------------------------- 0.03 -----------------------------

"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.

---------------------------- 0.04 -----------------------------

fixed "cut" which crashed 0.03 if DSP was running.
added clip~, print~, line~, snapshot~.

---------------------------- 0.05 -----------------------------

- added scope~, which is just a stopgap until real sound editing comes up.
- improved the open panel slightly.
- added atoms (int only).
- reworked text editing to reside in Pd, not Pd-gui.
- included a dbx-debuggable Pd in the distribution.  I haven't yet figured
    out how to get dbx to work with externs though.

---------------------------- 0.06 -----------------------------

- fixed two bugs in DSP sorting
- added DSP on/off gui
- added lock/unlock and changed the cursor behavior
- fixed -font flag to set font pointsize

---------------------------- 0.07  -----------------------------

- made an adc~ object

---------------------------- 0.08  -----------------------------

metro bug
scrollbars
scheduler bug
text box wraparound at 80 chars.
fixed boxes to reconnect on retype

---------------------------- 0.09  -----------------------------

set up the "Help" menu
Bug in DSP sorting fixed
"Notein" and "noteout" objects
Comments from the Put menu say "comment" (they were invisible before)
The scheduler deals better when sound I/O malfunctions

---------------------------- 0.10  -----------------------------

Many bug fixes.  This was the first pre-release to be put on the FTP site.

---------------------------- 0.11  -----------------------------

Here's a list of all the objects in this release:

general: print int float send receive select pack unpack trigger spigot
time handling: delay metro line timer
arithmetic: + + - - * * / / == == != != > > < < >= >= <= <= & && | || %
midi: notein noteout makenote stripnote
other: random get
signals: dac~ adc~ sig~ line~ snapshot~ +~ *~
signal oscillators: phasor~ cos~
signal filters: env~ hip~
signal debugging : print~ scope~

"spigot" replaces "gate" but has the inputs reversed.

-------------------------- 0.12 - 0.17 -------------------------

got Pd running under NT, although driver problems remain.  Gem is also
distributed for both platforms.

-------------------------- 0.18 --------------------------------

Release notes now descrie the three platforms Pd runs on: IRIX and
NT (maintained at UCSD) and LINUX, maintained by Guenter Geiger.

menu "close" on a dirty document now checks if you really want to close
without saving (although "quit" will still exit Pd without verification.)

Got rid of "dll" error printout when loading abstractions

-------------------------- 0.19 --------------------------------

notable new objects:

- vcf~, a bandpass filter with a signal input for center frequency.
- delread, delwrite, vd, as in ISPW Max.
- various math and midi stuff
- catch~, throw~, send~, receive~ for nonlocal signal connections
- 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.

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.

Number boxes drag in integer increments, or in hundredths if you hold the
"shift" key down when you click.

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.

The abbreviations "t," "f," and "i" stand for "trigger,", "float", and "int."

Inlets and outlets of subpatches are now sorted correctly; although there is
still a problem deleting inlets/outlets which have connections.

The size and screen location of Pd documents is saved correctly.

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~.

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...

The list of classes is now:

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

MATH:
+ - * / == != > < >= <= & && | || %
mod div sin cos tan atan atan2 sqrt log exp abs
mtof ftom powtodb rmstodb dbtopow dbtorms 

MIDI:
notein ctlin pgmin bendin touchin polytouchin noteout ctlout pgmout bendout
touchout polytouchout

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~

-------------------------- 0.20 --------------------------------

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.

Also, the array_write routine was fixed.

-------------------------- 0.21 --------------------------------

bug fixes:

table size change with DSP on:  It used to crash Pd to resize an array
when DSP was turned on.  This is now fixed.

deselect all when locking.  When you lock a patch the selection is cleared.

unlock when pasting.  .. and if you paste into a petch, it's unlocked.

lost keyboard events.  Version 0.20 lost keyboard events and
forgot window size changes.  This should now be fixed.

subpatches came up in wrong font size
diry flag on window title bar fixed
improvement to netreceive suggested by Mark Danks
style notes fleshed out as suggested by Larry Troxler
fixed Bill Kleinsasser's bug (short and long array in same graph)

new features:

phase setting for phasor~
fft objects.  Also, block~, for specifying block sizes and overlaps for FFTs.
canvas_makefilename() (used, e.g.,  by array_read and write)
"stuff" directory with examples of real Pd applications.

-------------------------- 0.22 --------------------------------

bug fixes
    parsing 1e+006 gave symbol (now float)
    "." parsed as number, should be symbol
    change GUI polling loop to TK event dispatch (unix only)
    improved "tidy up" feature
    size check added to text boxes (used to crash; still not correct.)
    occasional bug sending text with CRs to tk
    binop startup bug
    key accelerators for creators wrong
    ftom range to 1500
    bug in pack, unpack
    windows restore bigger than saved

Nt-specific bug fixes:
    getsockopt for netreceive fails.  Just omitted it for NT.
    put tcl dlls in tcl bin, not pd bin
    	archive tcl subsystem for easier version updates
    	fix README accordingly
    deal with bell sound
    turn on optimization
    looked for audio timeout bug but couldn't find it.

-------------------------- 0.23 --------------------------------

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.

The documentation has been reorganized.  The most interesting new features are:
    some new "tutorial" patches
    15 "fft" examples
    improved help navigation

more bug fixes:
    titles on abstractions no longer saved inside file
    left-to-right sorting of inlets/outlets now seems to work
    nt audio setup got confused when driver couldn't do full duplex
    opening window with audio on is now fixed
    deleting inlets/outlets deletes connections first (used to crash)
    1e20 parsed correctly now
    osc1~ fixed and optimized
    resizing arrays with DSP on used to crash; now fixed
    pasting now adds to the end of the list (used to add to beginning)
    clicking now selects the most recent object when two or more overlap
    Pd's "open" and "help" dialogs now maintain separate paths

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.

