Pd Documentation chapter 5. release notes

back to table of contents


------------------- 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; +, *, -, /, ==, !=, >, <, >=, <=, &, |, &&, ||, %; 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 ", "write ", "resize ", 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
dirty 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.

------------------- 0.24 ---------------

new objects:
- bang - convert any message to a "bang"
- qlist - message sequencer
- textfile - file to message converter
- makefilename - format a name with a variable field
- openpanel - "Open" dialog
- savepanel - "Save as" dialog

Bug fixes:
- Fixed a bug in "const" message to arrays
- "exp" was broken on NT, now fixed
- phase vocoder example improved
- "read" message to arrays now zero out unread samples
- bug fix in "key" object
- bug fix in ifft~ (thanks to Peter Lunden)
- "print" object fixed to distinguish between lists starting with symbols and other messages
- polygon, curve, fpolygon, fcurve renamed to fix name clash with Gem
- improved "new object" placement on screen
- fixed help dialog to remember previous directory (thanks to Harry Castle)
- heterogeneous lists

Arrays can be written to and read from text files or from 16-bit binary files. See ../2.starter/2G for an overview.

Guenter Geiger has contributed a Max-style "table" object which creates an "array" object in a subwindow.

Guenter has also put in a "search path" feature for externs, abstractions, etc.

The Help menu got reworked.

Select and Route were extended to work Zack-style with symbols.

"random" takes seeds now (see the "help" window)

Some more work on graphical lists; you can see the current state in ../7.stuff/data-structures. It's still nascent.

------------------- 0.25 -----------------

Lots of minor, under-the-hood improvements and bug fixes...

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.

You can now alt click on an object to get its help window (and the help windows got a fair amount of work.)

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

The "text" window got new accelerators and a bigger font size

there are 3 "tool" patches in 7.stuff: filtering, pvoc, ring mod.

In NT, command-line backslashes are converted to forward slashes.

There's a load measurement tool in the "help" menu.

The SGI version contains an n32 binary (look at the "bin" directory).

------------------- 0.26 -----------------

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.

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.

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

When reading a sample using tabread4~, you can switch between sample tables using the "set" message.

A new "textfile" object is like qlist but more flexible.

Many help windows got updated (but at least a dozen more need work urgently).

A dsp_addv function was added to allow variable-length DSP calls (for writers of tilde externs.)

It's possible for a tilde extern to have a name ending in "tilde" now. Name the setup routine "foo_tilde" for "foo~", etc.

The dac~ object was fixed to clip its output when out of range (before it wrapped around.)

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.

Signal division checks for divide by zero.

A "Font bomb" feature is provided for resizing fonts and stretching and contracting patches to fit.

Pds now bind themselves to the symbol pd- 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.)

The Pd commend line can take multiple "open" arguments.

The file search path feature was fixed amd generalized.

Alt-clicking a table gives you a dialog to set its x and y range and pixel size.

------------------- 0.27 -----------------

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.

New objects written: change, max, max~, min, min~, and swap.

I looked in 0.INTRO.txt in 5.reference, and found that the objects bag, cputime, realtime, pipe, symbol, poly, and bang were missing.

Five or six bug fixes.

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.

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.

------------------- 0.28 -----------------

Version 0.28 has a primitive in-box text editor... about time!

the "front panel" now gives you information on audio levels and sync errors.

Message boxes flash, sort of, when you click them.

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.

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.

The "until" object has a "float" method which limits the number of bangs it will output.

The audio setup is better documented for NT and Linux.

The externs in 4.fft and 6.externs got recompiled and tested.

BUG FIX: the "read16" message to tables was broken on NT and is now fixed.

BUG FIX: In Linux, starting Pd up sometimes changed the audio mixer setting.

BUG FIX: sending "floats" to inlets expecting lists now works correctly.

BUG FIX: "route" on symbols now deals better with symbols, floats and lists.

-----------------------------------------

5.2. known bugs

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.

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.

3. PD dies if your patch has an infinite loop.

4. If you cut a box which is a "Pd" or abstraction whose subpatch has items selected, Pd dies.

5. Tables and other drawable items can draw far outside the window; there's no sanity check, Drawing huge tables can crash Pd. (But you can safely put them in sub-patches if you don't open them.)

6. There's no way to order force a delread~ to make it read after a delwrite~ has written.

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.

8. If you load a nonexistent extern you get a spurious message, "consistency check failed: canvas_setargs". [fixed for 0.27 release.]

9. Typing backslashes into objects upsets Tk.

10. Never type a dollar sign into a comment; you may have trouble opening your patch afterward...

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.