1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
5
<TITLE>Pd Documentation 5</TITLE>
6
<meta http-equiv="Content-Type" content="text/html">
7
<link rel="stylesheet" type="text/css" href="pdmanual.css" media="screen">
12
<H2>Pd Documentation chapter 5. current status</H2>
15
<A href="index.htm#s5"> back to table of contents </A>
19
<P>This section tracks changes in Pd's current implementation.</P>
21
<H3> <A name="s2"> 5.1. release notes </A> </H3>
23
<P> ------------------ 0.42.1 ---------------------------
25
<P> Bug fix on Windows(cancelling window close deactivated window).
27
<P> Bug fix running Pd from command line in MacOS.
29
<P> "Select all" fixed to select none if everything already slected.
31
<P> ------------------ 0.42 ---------------------------
33
<P> The 'struct' object can now be used to catch a small but growing variety of
34
events (mouse clicks on data, selection/deselection).
36
<P> The 'tabread4~' object was fixed to allow message-time onset into the table.
37
This makes it possible (at last) to use tabread4~ effectively with large (> 1
38
second) samples. New help files 3.audio.examples/B15 and B16 show how to
39
use it. It's not pretty but it's at least possible.
41
<P> Took patches from Iohannes Zmoelnig to make Pd work when compiled to use
42
64-bit floating-point audio. I didn't test this; doubtless there will still be
43
some problems. (This isn't the same thing as running in '64 bit mode' which
44
already works fine and is the default when compiled on a 64-bit linux machine.)
46
<P> New objects in extra, 'pd~', and 'stdout', allow running a separate Pd
47
instance in a sub-process. Theoretically this should make it possible to use
48
multiprocessors efficiently in {d. It's still somewhat experimental; it might
49
not work well to pass large numbers of messages and/or signals back and forth.
51
<P> A -batch flag allows Pd to be run efficiently from scripts. You should
52
probably also specify -nosound. With these flags Pd runs as quickly as it
53
can without waiting for real time. It's up to the patch to arrange to exit
54
at the appropriate time via a 'pd quit' message.
56
<P> Large and sweeping improvements have been made to bonk~ and sigmund~. The
57
new bonk~ features are documented in its help window; sigmund~ works better but
58
has the same old features.
60
<P> Closing and quiting Pd now act more politely, querying the user only if
61
there are edited windows. There's also a query if the user types into a box
62
holding an edited abstraction to prevent the changes from getting lost
63
accidentally. A new 'pd perf' message re-enables the old "really close this
64
window" behavior, which is appropriate for performances where you don't want the
65
wrong keyclick to stop Pd brusquely.
67
<P> The process of reloading multiple copies of a modified abstraction was
70
<P> The 'find' dialog permits searching for substrings. This is useful for
71
strings containing "$" arguments, where it's unclear what 'find' does or should
74
<P> New pow~, log~, exp~, abs~, and 'wrap' objects.
76
<P> The 'print' object takes "-n" flag to supperss "print:" in output
78
<P> "clear" button in Pd output window
80
<P> ".pdrc" loading suppressed if pd is started with "-noprefs".
82
<P> Bug fix in pipe object: if sending a list to pipe, it didn't update the
83
delay time when asked to.
85
<P> Binbufs fixed to handle arbitrary length messages. (This fixed a problem
86
reloading data structures with huge arrays).
89
<P> ------------------ 0.41-3,4 ---------------------------
91
<P> 2 fixes for PC: no bonk~, and the audio device selection
92
dialogs didn't show all the devices.
94
<P> ------------------ 0.41-2 ----------------------------
96
<P> More bug fixes: large netsends dropping messages, and crash bug when turning
97
DSP on and off repeatedly in MS windows
99
<P> ------------------ 0.41-1 ----------------------------
101
<P> Fixed a startup problem for Mac OSX 10.5.1 (other platforms should not be affected)
103
<P> ------------------ 0.41 ----------------------------
105
<P> Pd may be compiled in 64 bit address spaces; this is well tested on
106
linux and at least seems to work on Microsoft and MacOS. On linux, in fact,
107
if you compile Pd in a 64-bit version of the OS it's automatically in the
108
64 bit address space.
110
<P> In linux, a "-nosleep" flag causes Pd to poll instead of sleeping as it
111
waits for dac and adc; this is useful on multiprocessors when you don't mind
112
having Pd occupy 100% of one processor and want to get latency as low as
113
possible. (If you don't use this, latency on multiprocessors - Intel Core 2 at
114
least - is much worse for some reason than it is on uniprocessors.) It's
115
"experimental" but I use it every day.
117
<P> added an experimental callback scheduler. This might reduce latency in
118
MacOS and/or Microsoft, although I haven't seen that actually happen yet.
120
<P> removed limitation on huge messages from text files; this prevented long
121
"data" arrays from reloading from disk correctly.
123
<P> fixed crash bug closing patches with open GOPs.
125
<P> changed selection strategy so that, right after duplicating a collection
126
of objects, clicking tends to select an already-selected object.
128
<P> the cursor changes slightly more apprpriately when switching between edit
131
<P> got really confused about the proper role of "declare 'path" in abstractions;
132
for the moment they are ignored. I the future, it may be worthwhile to allow
133
them but to have them act only locally to the abstraction; but this might mean
134
a lot more computation overhead when opening files.
136
<P> limited window sizes to that of the screen (otherwise, on Mac OS, it's
137
impossible to resize them.)
139
<P> fixed "startup" dialogs to allow unlimited "path" and "lib" entries
141
<P> started, but didn't finish, the process of getting Pd to compile with
142
t_float as 64 bits. This would slow Pd down but improve tabread4~'s accuracy.
144
<P> made IEM Guis respect "-font" flag and friends. New startup flags:
145
"-font-face" (badly named); "-font-size" sysnonym of "-font". (Large patch from
148
<P> String overflow protection here and there.
150
<P> migrated to ".net" compiler ("VC 2005", a free download).
153
<P> ------------------ 0.40-1 --------------------------
155
<P> Fixed "declare" which wasn't working properly yet in 0.40-0, and
156
made more objects (notably "soundfiler") respect "declared" paths. Path
157
entries are relative to the parent patch. Declares inside abstractions are
160
<P> "drawnumbers" are draggable now, even if they're in arrays.
162
<P> Bug fix opening "html" help from windows.
164
<P> Changed MACOSX to __APPLE__ in 4 places.
166
<P> ------------------ 0.40 -----------------------------
168
<P> A new object, "declare", allows patches to control where Pd looks
169
for resources such as abstractions and libraries.
171
<P> Sybmols can now be built using multiple dollar sign variables, as in
172
"$1-$2.$3". Meanwhile, naming subpatches as in "pd $1-foo" now seems to
175
<P> The switch~ object takes a "bang" message to compute one block of DSP on
176
demand. Also, block sizes are no longer required to be powers of two
177
(although reblocking only works between powers of two.)
179
<P> Externs may have characters in their names that aren't part of valid
180
C variable names (i.e., outsize the range a-z,A-Z,0-9, _).
182
<P> Openpanel and savepanel take an argument to set the initial directory to
185
<P> Support for large (>2G) soundfiles, in operating systems that offer it.
187
<P> Text copy/paste fixed (I hope) for Macintosh
189
<P> Intel Mac binaries. New naming scheme for externs to allow disambiguation
190
(although Pd falls back to the old names for compatibility.)
192
<P> Templates can get notified when data are selected/deselected. I want
193
to provide this for mouse actions on locked canvases too, but haven't yet.
195
<P> Characters like "\", "[", etc., typed into dialogs for labelling
196
number boxes or other GUI objects, get filtered out so that they at
197
least don't hang Pd up.
199
<P> Drawcurve (and the others, filledcurve, drawpolygon, filledpolygon)
200
have a new "-x" flag that inhibits a scalar getting
201
selected when the curve is clicked on. This is useful for drawing stuff in
202
the background (grids, clefs, etc).
204
<P> 6 or so patches adopted from sourceforge.
206
<P> A "list length" object
208
<P> IEM Gui labels (except for the VU meter) default to 10 point fonts
209
(typically 8 before).
211
<P> "send" without an argument gets an inlet to set the destination
213
<P> A -noprefs flag defeats loading startup preferences. This gives you a
214
way to rescue things if Pd's settings somehow crash Pd on startup.
216
<P> tabwrite~ takes a "start" message to allow writing into the middle
219
<P> ------------------ 0.39.2 --------------------------
221
<P> Bug fixes: memory leak in OSX version; problem printing numbers as symbols.
223
<P> ------------------ 0.39.1 --------------------------
225
<P> Bug fixes: compatibility problems with older version of TK
227
<P> ------------------ 0.39.0 --------------------------
229
<P> At the source level, "regular" arrays and arrays within data structures are
230
now the same thing. This will mean that, in the future, features introduced to
231
one array type will become available on the other one too. Array elements are
232
"scalars" (i.e., data structures) and if they have drawing instructions, each
233
point of the array is drawn according to them; they can be clicked on, etc.,
234
just like any other scalars. "Regular" arrays have points which are of a
235
special, built-in template, "float".
237
<P> Drawing instructions now can use variable ranges for screen coordinates;
238
for instance, specifying an offset of "a(0:10)(100:200)(0.2)" specifies that
239
the member "a", which shoudl range from 0 to 10, should be graphed at locations
240
ranging from 100 to 200 (relative to the scalar's base location) and should
241
have a "grain" of 0.2, i.e., steps of 2 pixels each.
243
<P> Drawing instructions can be turned on and off, either globally
244
(for all data of the given structure) or by a data field.
246
<P> The "struct" object has an outlet to notify you when a datum is selected or
249
<P> Graph-on-parent subpatches and abstractions no longer scale the GUI objects
250
to fit the parent rectangle; instead you get a sub-rectangle in the subpatch,
251
of the same size as the parent object, to place GUI objects in. GUI objects
252
that don't fit inside aren't shown on the parent, and the parent objects no
253
longer stretches itself to show things that wouldn't otherwise fit. Older
254
patches work as before until you try to edit them - at which point you have
255
no choice but to use the new functionality.
257
<P> The font size of a Graph-on-parent abstraction is that of the abstraction
258
itself, not the calling patch.
260
<P> Message boxes now take "addcomma" and similar messages.
262
<P> A "list" object is provided for joining and splitting lists, and converting
263
between lists and non-list messages.
265
<P> Pd extension is now added automatically to files on Macintish when you
266
do a "save as". The tcl/tk version is updated to 8.4.5. This should run on
267
OSX version 10.2 and later. Also on Mac, drag-and-drop startups read
268
"libraries" (specified in "startup" dialog) before opening the file.
270
<P> The "pointer" object has a method to rewind to the beginning of a list.
271
A "sendwindow" message forwards any message to the window contining the
272
scalar currently pointed to.
274
<P> Abstractions don't produce visible windows, even if subwindows of the
275
abstraction were visible when the abstraction was saved.
277
<P> MIDI sysex messages should now work on all platforms.
281
<P> sending lists to arrays now correctly interprets the first number of the
282
list as the starting index (following values are then stored seuentially in the
285
<P> The rfft~ object's imaginary part had the wrong sign. Also, the Nyquist
286
bin is now supplied correctly.
288
<P> Fixed problems writing aiff files using the writesf~ and soundfiler objects.
289
Writesf, if sent an "open" while a file was previously being written, closes the
292
<P> Bug fix in number2 which sometimes crashed Pd.
294
<P> Stale-pointer protection made more robust.
296
<P> Some of Pd's tcl/tk error messages have been tracked down, but probably
299
<P> "Find" crashed Pd when the found object was in a GOP.
301
<P> Mouse motion over arrays no longer is quite so CPU-consuming (but is
304
<P> samplerate~ now reflects up/downsampling.
306
<P> Tilde objects in blocked, overlapped subpatches no longer adjust their
307
internal sample rate to reflect the overlap.
309
<P> Fixed a thread-safety problem in sys_microsleep().
312
<P> ------------------ 0.38.1 --------------------------
314
Fixed two bugs that crashed Pd when deleting number boxes in certain
317
<P> ------------------ 0.38.0 --------------------------
319
<P> The big change is queued graphics updates, which apply (so far)
320
to tables and number/symbol boxes. The IEM GUIS aren't enqueued yet.
321
This along with a better graphics update buffering scheme makes Pd's
322
graphics run much better.
324
<P> Support for cutting/copying/pasting text between boxes and between Pd and
327
<P> Dialogs for setting and saving path, libs-to-load-on-startup, and some
328
other things. This and the audio settings can be saved automatically to
329
the appropriate repository (.pdsettings on linux; registry on MS windows;
330
"Preferences" on Mac.)
332
<P> "Print" printout goes to the Pd window by default. You can revert to
333
the old (standard error) behavior with the "-stderr" startup flag.
335
<P> The "gui" TK script can now start Pd up (previously Pd had to be
336
started first.) This is needed for Pd to work as an "App" on Mac.
338
<P> new filter objects: cpole~, fpole~, etc... these will get used in the
339
upcoming Techniques chapter 8.
341
<P> Objects whose creation failed get a distinctive outline; if they are
342
already inside a patch they sprout inlets and outlets as necessary to
343
preserve connections.
345
<P> Filenames in the "search path", etc., now may contain spaces, commas,
348
<P> bug fix: click on minaturized subpatch failed to "vis" it
350
<P> bug fix: font size change crash reported by CK
352
<P> Key bindings like control-Q now work even from within most dialogs.
354
<P> The audio settings dialog now permits turning audio input and/or output
355
off without forgetting how many channels it should be when on.
357
<P> RME Hammerfall ALSA support from Winfried -- but specify the number of
358
channels correctly or else Pd crashes.
360
<P> portaudio (e.g., Mac) audio support fixed for inchans != outchans,
361
so the emi emagic can now be used 2-in. 6-out, for example.
363
<P> (linux) The configure script can set the setuid flag on "make install".
364
The "-enable" flags to ./configure should now work correctly too.
366
<P> atan2 had its inlets switched to conform to standard usage
368
<P> ------------------ 0.37.3 --------------------------
370
<P> Oops- added __i386__ macro to windows makefile so it would test for
371
underflows correctly. This affects only Microsoft Windows; the other
372
two platformas are fine as 0.37.2. Thanks to Thomas Musil...
374
<P> ------------------ 0.37.2 --------------------------
376
<P> fixed a bug in soundfile reading (soundfiles now default to wav better.)
378
<P> fixed gfx update problem in hradio and vradio
380
<P> minor changes to built-in Max import feature (but you should
381
still use cyclone's instead.)
383
<P> colors for scalars fixed (probably never worked before!)
385
<P> added a "set" message to the line object
387
<P> aliased spaces to underscores in GUI labels so that at least they won't
390
<P> ------------------ 0.37.1 --------------------------
392
<P> fixed the apple key on OSX so it does key accelerators
394
<P> fixed bug in -inchannels/-outchannels arg parsing
396
<P> major editions to the IEM GUIs to fix bugs in how "$" variables are handled.
397
The code still isn't pretty but hopefully at least works now.
399
<P> bug fix in vd~ for very small delays
401
<P> fixed MSW version not to make windows grow by 2 pixels on save/restore
403
<P> added an "nrt" flag for OSX to defeat real-time priritization
404
(useful when runnig Gem.)
406
<P> on some platforms, audio open failures are handled more gracefully.
408
<P> added a "changelog" file in the source directory to document source-level
411
<P> ------------------ 0.37 --------------------------
413
<P> Pd is finally fixed so that it can open and close audio and MIDI devices
414
on-the-fly (previously it opened them once at startup and hogged them until
415
Pd quit). Starting DSP causes audio devices to be opened, and
416
stopping it closes them.
417
There are dialog panels in the "Media" menu (which used to be called
418
"Audio") for choosing audio and MIDI settings. The "path" also can be changed
419
on the fly via a dialog in the "File" menu.
421
<P> A "vline" object acts like "line" but to sub-sample accuracy. See
422
the audio example, C04.control.to.signal.pd (and/or chapter 3 of
423
<A HREF="http://www.crca.ucsd.edu/~msp/techniques.htm"
424
<I> Theory and Techniques of Electronic Music </I> ).
426
<P> The block~/switch~ object now takes a "set" message to dynamically change
429
<P> The makefilename object takes a "set" message to set the "pattern". You
430
can use this to kludge multiple substitutions (as shown in the help file).
432
<P> The writesf~ object got an update and a better help window. It now should
433
be able to write 32bit floating-point WAV soundfiles. The file's sample rate
434
is now set "correctly".
436
<P> Various improvements were made in audio I/O to improve stability and
439
<P> Jack support should work for Mac OSX (it appears as a separate API).
440
Linux is offering experimental portaudio V19 support (but Mac and Window/ASIO
441
are still based on PA V18.)
443
<P> The fiddle~ object (in extra) has an "npoints" method to set the analysis
444
window size dynamically.
446
<P> (windows) Pd is now distributed as a self-extracting archive.
448
<P> (windows) url files in the help directories are opened correctly.
450
<P> (Mac) the arrow keys should now be fixed.
452
<P> (linux) The "configure" script should be better at finding TK in various
453
distributions (debian users previously had to use a special configure script.)
455
<P> (developers) Pd now exits cleanly from its main loop instead of bailing
456
out. A mutex protects Pd's data so it can be accessed from other threads.
457
(Thomas Grill's improvements.)
459
<P> (developers) The "savefunction" and "dialog" widget behaviors
460
were replaced by a better mechanism (class_setsavefn() and
461
class_setpropertiesfn()). THey're declared in m_pd.h so you don't have to
462
include the (unstable) g_canvas.h to get them.
464
<P> (developers) Better flag handling in the IEM GUIs (g_toggle.c, etc) should
465
compile with fewer warnings and be more portable.
468
<P> ------------------ 0.37-test 1 --------------------------
470
<P> The MacOSX version now prioritizes itself effectively (thanks to
471
gert@test.at (v93r)) via Adam Lindsay). Adam has made a proper MacOSX
472
"package" for Pd; see <A href="http://homepage.mac.com/atl/sw">
473
http://homepage.mac.com/atl/sw</A>.
475
<P> A bug was fixed in readsf~/writesf~ (things were coming out in the wrong
478
<P> A problem compiling Pd with TK8.4 (the latest version) was fixed.
480
<P> Large numbers of GUI improvements by Adam Lindsay, especially relevant
483
<P> For externs, the binary may now be included in a subdirectory of the
484
same name (e.g., "choice/choice.pd_linux" and "choice\choice.dll"). So
485
now you can pack multiple binaries for the same extern, along with the
486
source, in one convenient place. (Note that
487
"expr~" is an exception, since it goes by three different names, so this
488
trick fails for that example.)
490
<P> "Help" files renamed "help-xxx.pd", so that help files are now possible
491
for abstractions. The "help path" feature from CVS (I forgot who contributed
492
that) is also included but should now not be needed: Pd remembers where it got
493
externs and abstractions and looks back in the same directory for a help file.
494
See the way "extras" is organized.
496
<P> Pd refuses to connect signal outlets to non-signal inlets.
498
<P> When you save any patch, Pd looks for all invocations of that patch
499
as an abstraction and reloads them. This unfortunately has the side effect of
500
making all the containing windows visible, but it's better than nothing.
502
<P> ------------------ 0.36-1 -------------------------------
504
<P> "print" now queries you for a file to save the postscript to.
506
<P> "expr" brought up to date (0.4) -- a bug was fixed involving expresions
507
like "max($f1, 100)" which had erroneously output an integer.
509
<P> a bug fix in the 4-point interpolation formula, which affects tabosc4~,
510
tabread4~, tabread4, and vd~. These should have significantly lower
511
distortion than before.
513
<P> bug fix: vradio, hradio "send symbol" feature didn't work
515
<P> ------------------ 0.36 -------------------------------
517
<P> There's now an "undo" for most editing operations. Undoing is only
518
available in the window that was most recently edited. (One gotcha remains,
519
that "stretching" (in the font menu) affects all windows and you can't undo any
520
but the last one it touched.) Also, there's no "undo" for run-time operations,
521
only editing ones. That might be worth thinking about.
523
<P> Some bugs were fixed that affected "flipped" canvases (ones whose
524
"properties show a positive "y" increment per pixel.) Also, the coordinates
525
are now saved and restored correctly. "text" objects (comments) now stick to
526
the bottom of the window for flipped canvases.
528
<P> Signal lines now show up fatter than control lines. (Now I have to go
529
through the figures in the HTML doc again... drat)
531
<P> "Classic" number boxes now can have labels and send/receive signals, which
532
work in the same way as the IEMGUI controls do. I think "$1" style
533
label/send/receive names work too. I fixed a related bug
534
in the IEM code (typing at boxes sometimes crashed Pd).
536
<P> "vdial" and "hdial" were renamed "vradio" and "hradio", and fixed to
537
output numbers, not lists, like the other GUIs. The old ones are still around
538
for compatibility with old patches.
540
<P> "Make install" should now actually make Pd before trying to install it.
542
<P> "expr" is updated to Shahrokh's 0.4test3 version (which I modified somewhat
543
to get it to compile.)
545
<P> The problem of CPU usage skyrocketing on underflows in P4s should
548
<P> Compiled "pdsend" and "pdreceive" for Windows.
550
<P> "PD_VERSION" macro added to m_pd.h
552
<P> ------------------ 0.35 -------------------------------
554
<P> An experimental new feature called graph-on-parent allows subpatches and abstractions to show
555
GUI features; so, for instance, you can make an oscillator with a number box to
556
control the frequency. This is described in section 2.7.2 of the HTML
557
documentation and an example is shown in 7.stuff/synth1/.
559
<P> Spaces are allowed in pathnames to Pd and to patches; however, the "path"
560
variable still can't have spaces. (You can address path directories using
561
relative pathnames as in "../sound" (or ..\sound on Windows), even if there
562
are spaces further "up" the path to the patch. See 3.7, "dealing with files."
564
<P> The soundfile reading routine (used in readsf~ and soundfiler) is much
565
better at opening wav files with different header sizes and odd chunks.
566
You can now read floating-point "wav" files -- although you can't write them
569
<P> Templates and data structures are extensively reworked. A "struct"
570
object replaces "template", so that you specify the name of the structure as
571
the first argument to "struct" (previously it was derived from the
572
window name.) You can now have multiple "structs" of the same name; the
573
oldest one is the "real" one, but if you delete that, the structures are
574
all conformed to the next-oldest one, and so on. You can alter the contents of
575
a "struct" and all the associated data will be modified to fit the new
576
structure definition. Data are persistent, i.e., saved with the containing
577
patch. You can copy and paste data between patches. If you save data to a file
578
explicitly, you can read it into another patch and the data are conformed
579
automatically to the new data structures.
581
<P> A new version of Thomas Musil's GUI objects was merged in.
583
<P> The testtone patch works for up to 6 channels of audio input and output.
585
<P> Lots of improvements got made to audio I/O in general. In NT you may
586
specify "-asio" to use ASIO drivers; see HTML documentation section 3.2.
587
You may specify lists of audio input and output devices. In Linux, Pd
588
will now attempt to open each /dev/dsp* only once, even if it's requested
589
for reading and writing.
591
<P> The "extra" directory is now searched after the directories in the
592
search path, not before (so now you can override objects like "fiddle~").
594
<P> A bug in paf~ is fixed.
596
<P> In Linux, the ".pdrc" is now read before the command line arguments, so
597
that command line arguments override the .pdrc (it was backwards before.)
599
<P> In Linux, "help" now can invoke either mozilla or netscape to start
600
up the HTML documentation. This doesn't work in Windows or Mac land yet.
602
<P> In Linux, the "-32bit" flag was added, which you must now use if
603
running Guenter's OSS RME Hammerfall driver. (This was necessary because
604
OSS went and used the same "bit" for a different purpose, so that Pd tried
605
to open some other cards in 32bit mode inappropriately.)
607
<P> In Linux, MIDI is now opened "-NODELAY" ... this makes the OSS Creative
608
driver take MIDI input correctly which it didn't before.
610
<P> In MS windows, you can now use "readsf~/writesf~" for spooling sounds to
613
<P> MS Windows bug fixes: -nosound was ignored, and now works. Also, clicking
614
to open abstractions, when they were already open anyway, used to lose the
615
keyboard; this should be fixed now. Finally, "netreceive" didn't work when
616
running "-nogui". This is fixed, and moreover, you should definitely include
617
a netreceive object in any -nogui patch in MSW, otherwise it eats up all
618
available CPU time gratuitously.
620
<P> The outlet is removed from the "table" object.
622
<P> In MS Windows, Pd now has "-resync" and "-noresync" flags so that you
623
can specify how to deal with audio input and output blocksize nonsense in
624
MMIO. If "resync" is on, whenever the audio input and output seem out
625
of whack the audio driver resynchronizes all input and output devices;
626
otherwise the situation is simply ignored. "Noresync" is probably best for
627
consumer stereo cards (and is the default if you're running only 2 channels in
628
and out). If you're running more than 2 channels in either direction, the
631
<P> In soundfiler's read method, if you specify "-maxsize", that implies
632
"-resize" (as it ought to.)
634
<P> You can use $1-style names for arrays and tables.
636
<P> Pd will now refuse to make duplicate connections between objects.
638
<P> Pd is (somewhat shakily) running on Macintosh OS/X. See section 3.4 of
639
the HTML doc. For Macs with one-button mice, you can double-click in edit
640
mode to simulate a right click. Unfortunately, the "alt" key doesn't work
643
<P> In Linux, ALSA audio is now fixed to clip, not wrap around, on output
646
<P> Various problems were fixed with objects changing size. Number boxes never
647
wrap to two lines (as they used to), and lines are reconnected appropriately
648
when objects are resized.
650
<P> A function call is added to retrieve a unique event-dependent number,
651
so that objects like "buddy" can be written.
653
<P> All the "sound" command-line flags now have "audio" equivalents.
655
<P> The "-listdev" flag now works on Mac and MSW/ASIO.
657
<P> Help file updates for env~, route, and pointer
659
<P> ------------------ 0.34.3 -------------------------------
661
<P> fixed a bug in "udp" netreceive that crashed pd
663
<P> fixed a bug in tabosc4~ that caused gritty sound
665
<P> changed "specfile" for RPM releases (thanks Fernando)
667
<P> adopted Krzysztof's glob_setfilename bug fix
669
<P> bug fixes from "the joy of global variables" thread in Pd list
671
<P> made a help window for "table".
673
<P> ------------------ 0.34.2 -------------------------------
675
<P> fixed ".pdrc" bug
677
<P> added an experimental "pd restart-audio" feature for (new) Alsa
679
<P> ------------------ 0.34.1 -------------------------------
683
<P> 1. Closing a window with objects selected crashed Pd.
685
<P> 2. "find" when it opened a window to show the found object crashed Pd.
687
<P> 3. (Linux only) Oversized .pdrc files crashed pd...
689
<P> Also, I updated Thomas Musil's IEM GUI objects and their help files.
692
<P> ------------------ 0.34 -------------------------------
696
<P> I incorporated Thomas Musil's GUI objects (slider, button, etc.) into
697
the Pd release so Thomas won't have to publish patches to Pd anymore. I
698
didn't take the graphical inlets and outlets for reasons explained elsewhere,
699
but Thomas might decide to continue supplying them on a patch basis.
701
<P> Many new examples were added to the "2.control" and especially
702
"3.audio" example patches. A list of differences between Max/MSP and Pd
703
now appears at the end of this section.
705
<P> Finally, I fixed Pd to notice window iconification and suspend graphical
706
updates for iconified windows.
708
<P> Numbering of versions of Pd will now be as in "0.34.2" instead of
709
"0.34PATCH2" which was confusing.
713
<P> I incorporated Krzysztof Czaja's menuclose bug fix in g_canvas.c.
715
<P> (Linux) the configure script is more rational.
717
<P> the qlist and pack objects were fixed to handle reentrancy correctly.
719
<P> Pd now complains about running out of memory (before it dies.) I intend
720
to provide advance warning and automatically back out of loading patches that
721
would run out of memory, but that's not in place yet.
723
<P> Typing into a message box sometimes left you with lines from the output
724
pointing to the wrong location. Fixed.
726
<P> Reading of "wav" and nextstep soundfiles now handles the headers better.
728
<P> ------------------ 0.33 -------------------------------
732
<P> MIDI time jitter is reduced. Theoretically, it could now be
733
as low as the audio blocksize (and so if you care about MIDI timing, keep your
734
audio blocksize low.) If you run Pd with audio in stream mode or without
735
audio at all, and perhaps in some cases in block more too (?),
736
the controlling parameter for MIDI jitter is "-sleepgrain", which specifies
737
the interval of time Pd sleeps when it believes it's idle.
739
<P> You can now specify multiple MIDI input and output devices. For example,
740
"pd -midiindev 3 -midioutdev 4,2" asks for the third MIDI input device and the
741
fourth and second MIDI output device. The "channel message" midi objects in Pd
742
such as notein or pgmout will take channels 1-16 to mean the first open MIDI
743
port, 17-32 the second one, and so on. The midiin, sysexin, midiout objects
744
give you a separate inlet to specify which of the open MIDI port numbers
747
<P> (Linux only) By default, Pd now reads and write audio in "block mode."
748
Previously you have to specify "-frags" and/or "-fragsize" to get this.
749
As of this version you have to specify "-streammode" to get the opposite,
750
streaming mode. This mode seems only to work with a small number of sound
751
cards, notably Ensoniq ens1370 and ens1371.
753
<P> (Linux only) Also, "-fragsize" is replaced with a more convenient
754
"-blocksize" which you specify in sample frames. It defaults to 64 which is
755
Pd's audio computation block size but may be larger or smaller. Typically you
756
would specify "-audiobuf" and "-blocksize" and Pd will compute "-frags" for
757
you; but you can also specify "-frags" explicitly.
759
<P> (Linux only) OSS and ALSA audio support are improved. You can now talk to
760
RME9652 using Guenter's OSS driver; this is different from the "-RME" support
761
which uses Winfried's older driver. Other multichannel OSS drivers might now
762
work as well. Pd also seems to work with ALSA 0.9 Beta 4; I've tested this
763
with Midiman Delta 66 and Soundblaster live. I plan to update the linux audio
764
setup documentation accordingly.
768
<P> I've put in Shahrokh's new expr, expr~, and fexpr~ objects. The latter
769
allows you to make expressions referring to prior input and output samples in
770
case you're interested in writing your own recursive filters, oscillators,
771
or chaotic sound generators...
773
<P> In support of expr, you can now use commas in "object" boxes; they just
776
<P> sqrt~ is fixed so that it apparently has 24-bit accurate mantissas.
777
It turned out to be easier to just make it accurate than to confront the
778
question of how a reduced-accuracy version should be named.
780
<P> The bizarre framp~ object which does phase vocoder analysis got a help
781
window. The phase vocoder example doesn't use framp~ and I had forgotten
782
what it did until Guenter dug it back up.
784
<P> (Linux only) I finally got around to incorporating Guenter's autoconf
785
stuff, and learned about RPM. Major new Linux releases will probably be
786
in .tar.gz and .rpm formats; "test" releases will probably just be in .tar.gz.
787
I also fixed it so that the installation prefix is overridden if you invoke
788
pd by its full pathname, so that you can still use compilations with
789
installation prefixes before you actually install them.
791
<P> (NT only) I added support for directX using the portaudio package
792
by Ross Bencina and Phil Burk. I couldn't discover any way this would ever
793
outperform the old "multimedia" API Pd uses. So the release contains the sources,
794
but you have to recompile Pd to use directX. Use "makefile.nt.portaudio". Only
795
1 or 2 channels of audio are supported. The interesting thing is that the same
796
code will run on Macintosh. There are a couple of other obstacles to a
797
MacOS port of Pd though; it's hard to predict when this will be feasible.
801
<P> "drawnumber" was broken in 0.32 -- fixed.
803
<P> new arrays in 0.32p6 got ill-fitting graphs -- fixed.
805
<P> ------------------ 0.32 PATCH 6 -------------------
807
<P> Got array and graph dialogs to behave better when there are more
810
<P> put in mtof~, etc.
812
<P> made Pd search the "extra" directory without having to specify it in "path."
814
<P> bug fix in exporting patches to Max
816
<P> ------------------ 0.32 PATCH 5 -------------------
818
<P> Reversed the order of these release notes so that the newest appear first.
820
<P> Arrays can save their content with containing patch; the properties
821
dialog selects this. The dialog shows up when you create a new array from
822
the menu, and allows you to set the name and size. Only floating point arrays
823
can be created and edited this way.
825
<P> Bug fix: the figures in the NT web doc were garbage.
827
<P> Bug fix: large tables (> 800 pixels and points) no longer crash the GUI.
828
A related problem remains; large arrays are truncated to either 1000 points
831
<P> Bug fix: doing "save as" on an instantiated abstraction no longer sets
834
<P> in linux, a couple of status messages on opening /dev/dsp only appear now
835
if Pd is run "-verbose".
839
<P> ------------------ 0.32 PATCH 2, 3, 4 -------------------
841
<P> Hassled more with font size differences between NT and Linux, and updated
842
many help files. Minor bug fixes here and there.
844
<P> the table object now takes a second argument to set size in points.
846
<P> Improved underflow protection in some DSP objects.
848
<P> pointer now has a "vnext" traversal method which goes forward to the
849
next SELECTED object.
851
<P> improvements to throw~ (it now sums) and receive~ fixed to be settable.
853
<P> bug fix in which RME driver always thought sample rate was 44100.
856
<P> ------------------ 0.32 PATCH 1 -------------------
858
<P> bug fixes (bugs flagged by mik): vcf~ help window crashed; writesf~
859
only wrote 1 channel soundfiles; "table" object didn't open when clicked
862
<P> new object: tabosc4~ -- finally, a real wavetable oscillator for Pd.
864
<P> much work on "data" editing; go to 7.stuff/data-structures, open patches
865
5 and 7, and try clicking on things. Alt clicks delete or add points; regular
866
clicks drag values around. The cursor changes to show you what will happen
870
------------------- 0.32 -----------------
872
<P> <strong> New objects: </strong>
874
<P> midiin, sysexin, midiout. (I don't think MIDI sysex is working
875
in Windows yet though.)
877
<P> threshold~ as in Jmax, triggers from audio level.
879
<P> value as in Max and Jmax.
881
<P> writesf as in Jmax.
883
<P> <strong> New startup flags: </strong>
885
<P> -sleepgrain: if you aren't using audio I/O, this can reduce time jitter in
886
MIDI I/O. Otherwise, MIDI I/O jitter is limited by the audio buffer size.
888
<P> -noloadbang: cancels loadbangs.
890
<P> -nogui: suppress starting the GUI. You can then still talk to Pd using,
891
perhaps among other possibilities, the new network connection programs now
892
included in the release.
894
<P> -guicmd: lets you specify the command string Pd calls to start the GUI,
895
in case you've written your own GUI to replace the TK one Pd comes with.
897
<P> -send: after loading all the patches specified in the command line,
898
you can specify "startup" messages to send. For example, if you want to use
899
Pd just to play 50-channel soundfiles from a shell, this is how you can specify
900
the soundfile name on the command line.
902
<P> <strong> bug fixes. </strong>
904
<P> A readsf~ problem got fixed.
906
<P> hitting the tab key used to cause Pd windows to relinquish the keyboard.
908
<P> The $0 feature apperas now to work.
910
<P> Inlets and outlets of subpatches sometimes got out of left-to-right order.
912
<P> Scrollbars are less out of whack than they were before.
914
<P> Pd now knows to de-iconify windows if you "vis" them from the parent.
916
<P> <strong> in general: </strong>
918
<P> In Linux the treatment of MIDI input is now much more efficient. Also,
919
bugs were fixed in notein and (for SGI) bendin.
921
<P> You can "select all" from the Edit menu.
923
<P> standalone programs "pd-send" and "pd-receive" are provided that can send
924
mesages to Pd or receive messages from Pd via the netsend~ and netreceive~
925
objects. This should allow you to interface a wide variety of other programs
926
with Pd either on the same machine or over the network. Also you should be
927
able to hack the code into your own programs to make them interoperate with
928
Pd and/or each other. The underlying protocol is called FUDI.
930
<P> "Properties" for scalars, graphs, and number boxes: left click on them.
931
In particular, number boxes can have fixed widths and finite ranges; if you
932
make them one character wide they act as toggles. Later you'll be able to
933
configure them as sliders.
935
<P> As to scalars, the properties dialog lets you edit the data in the raw.
936
Don't try to edit the template though; you can't.
938
<P> You can now type into a "pd" object to change its name without losing the
941
<P> An experimental "scalar" _text_ object now allows abstractions to draw
942
primitive control panels on their parents when you invoke them, as if they were
943
Moog or Buchla modules. See the "7.stuff/data" examples.
945
<P> New help windows for the "data" classes (pointer, append, template, etc.)
946
and for send/receive which somehow I had neglected.
948
<P> When you hit "copy" with nothing selected, the copy buffer used to be
949
cleared. This is fixed to do nothing.
952
------------------- 0.31 -----------------
954
<P> ALSA support in Linux has been completely overhauled. It now works with
955
Midiman (up to 10 in/12 out!) and es1370. There are problems with SBLive under
956
ALSA but it works in OSS emulation with a "-frags" setting. See the "getting
957
started" documentation.
959
<P> In NT, the default is now "noresync" if you're running stereo. You can
960
override this with the "-resync" flag. If you're running more than 2 channels
961
it's the opposite (as it was before.)
963
<P> "symbol" boxes now display symbols and let you type them in.
965
<P> There was a bug when you renamed a patch from outside Pd; the old filename
966
still showed in the title bar (and there were other bad side effects.) FIxed.
968
<P> Protection was added against patches opening themselves as abstractions.
970
<P> The "route" object's handling of leading symbols was improved. I'm not
971
sure whether it's Max compatible or not.
973
<P> You can draw into arrays with the mouse, at least in the case where there's
974
at least one pixel per point. (I'm not sure if the other case even makes
977
<P> Abstractions display their "$1", etc., arguments in the window title bar.
979
<P> A "sort" method was added for lists to make them easier to use as
982
<P> The "save as" dialog makes a more reasonable choice of start-up directory.
984
<P> "Trigger i" is now disallowed (it used to crash Pd.)
986
<P> Getbytes and resizebytes now zero out new memory.
988
<P> A memory leak reported by Hannes has been partly, hopefully mostly, fixed.
990
<P> The "signal_free 2" bug reported by Fogar is fixed.
992
<P> New graphs now reliably avoid using already-taken "graph%d" names.
994
<P> The old bug which showed up as ".xxxxxxxxx: no such object" is fixed.
996
<P> The FFT examples have been reworked and the "pique" and "shift" objects
997
are moved to "extra".
1000
------------------- 0.30 -----------------
1001
<P> in Linux, you can get Pd to promote itself to "real time" priority.
1002
A "watchdog" process protects you from having Pd lock your machine up. You
1003
must request real time by running "pd -rt" or "pd -realtime". You must either
1004
be superuser or make Pd a root-owned SETUID program (chown root .../pd/bin/pd;
1005
chmod 4755 .../pd/bin/pd). For security reasons, Pd relinquishes root
1006
privelige immediately after setting its priority, before loading
1007
any patches or externs.
1009
<P> Protection was added against message loops.
1011
<P> loadbang was fixed so that loadbangs in abstractions go off before loadbangs
1012
in the owner patch. Within each patch, loadbangs go off forst in subpatches.
1014
<P> new object: tabplay~, a non-imterpolating sample reader.
1016
<P> new objects (in "extra" library): loop~; rev1~.
1018
<P> The "toys" library was renamed "extra" and incorporated in the Pd release.
1020
<P> In Linux, timeouts were added to the driver opening and closing code
1021
(which used to hang under some conditions.)
1023
<P> the "field" object was replaced by "template"; see "data.structures"
1024
examples in 7.stuff. Data lists can be read from and written to files now.
1026
<P> You can invoke an external object by pathname, as in "../../extra/loop~".
1028
<P> hip~, etc. should no longer get stuck when they get a NAN on input.
1030
<P> a bug was fixed in expanding symbols such as "$1-foo".
1033
------------------- 0.29 -----------------
1035
<P> readsf~ - a MAX/FTS style soundfile player, which reads multichannel
1036
soundfiles in wave, aiff, or next formats. The files must be 16 or 24 bit
1037
fixed point or 32 bit floating point (only nextstep headers understand the
1038
latter.) You can also override the header. A "skip" flag lets you read
1039
starting anywhere in the file. (Sorry: linux only for now; I can't find
1040
Posix threads packages for the other platforms.)
1042
<P> soundfiler - support for reading and writing soundfiles (wave, aiff,
1043
nextstep) to and from arrays. Multichannel soundfiles can be read into or
1044
written from several arrays at once. When reading you can ask that the tables
1045
be automatically resized; in any event the object obligingly outputs the number
1046
of samples actually read. When writing you can specify a sub-segment of the
1047
arrays, and/or request that the soundfile's maximum amplitude be normalized to
1050
<P> tabplay~ - a non-interpolating sample player
1052
<P> Garry Kling reports having compiled Pd for "yellowdog" linux on Macintosh
1053
computers. One "fix" has been made to s_linux.c to facilitate this. I don't
1054
have access to a Mac running linux at the moment so I can't verify whether
1055
any particular repease of mine actually works there.
1057
<P> Signal objects now automatically convert scalars to vectors, so that you
1058
can just run a number box into a signal input. One caveat is that the binops
1059
"+~", "-~", "*~", "/~", "max~", "min~" run slightly faster if you give them
1060
an argument to tell them that their right inlet will be scalar; so the
1061
construction "+~ 0" is still meaningful. This will get fixed at some later
1064
<P> Font sizes work in what I hope will be a more machine-portable way. On
1065
any machine, the point sizes 8, 10, 12, 14, 16, 24 are DEFINED to be the
1066
largest fonts Pd can find that don't exceed their size on my linux machine.
1067
This way I can write patches that everyone else can read, and others will
1068
at least have fewer portability problems than before. The downside is that
1069
your old patches may appear with a different type size than you want; use the
1070
"font" menu item to fix them.
1072
<P> The OSS support no longer asks the audio driver whether full duplex
1073
is needed; it just tries to open it. Apparently some drivers (such as
1074
ALSA's OSS emulation) might do full duplex but not implement the call Pd
1075
used to query for it.
1077
<P> You can give "-nomidi" as a flag (previously you had to type "-nomidiin
1080
<P> A GUI bug reported by Iain Mott was fixed.
1082
<P> You can now type symbols such as "$3-poodle" and the "$3" portion gets
1083
expanded properly. Someone was also asking about the FTS-style #0 feature,
1084
but I couldn't figure out how to reconcile it with Pd's usage of "$" for "#"
1085
in abstractions. So I'm still searching for a good way to provide local
1088
<P> the GUI now protects itself from "\", "{" and "}" characters by dropping
1089
them. I wonder how many NT users have crashed Pd trying to type in filenames
1092
<P> samphold_set and tabwrite_stop methods added. There turned out to be
1093
no help window for samphold~ so one was supplied.
1096
------------------- 0.28 -----------------
1098
<P> Version 0.28 has a primitive in-box text editor... about time!
1100
<P> the "front panel" now gives you information on audio levels and
1103
<P> Message boxes flash, sort of, when you click them.
1106
Support has been added for RME 9652 soundcards; see the Linux soundcard section of
1107
the documentation. Support files for RME and PCI128 (Ensoniq es1370) cards
1108
are released separately from Pd.
1110
<P> The delete and backspace keys clear the current selection. There is
1111
unfortunately no "undo" though; I'm not sure this is a good thing to have
1114
<P> The "until" object has a "float" method which limits the number of bangs
1117
<P> The audio setup is better documented for NT and Linux.
1119
<P> The externs in 4.fft and 6.externs got recompiled and tested.
1121
<P> BUG FIX: the "read16" message to tables was broken on NT and is now fixed.
1123
<P> BUG FIX: In Linux, starting Pd up sometimes changed the audio mixer
1126
<P> BUG FIX: sending "floats" to inlets expecting lists now works correctly.
1128
<P> BUG FIX: "route" on symbols now deals better with symbols, floats and lists.
1131
------------------- 0.27 -----------------
1133
The main new feature is the "find" menu stuff. You can search for boxes
1134
containing specified atoms, including semicolons or commas. Most errors are
1135
now trackable, allowing you to "find last error". Look in the "Find" menu.
1138
New objects written: change, max, max~, min, min~, and swap.
1141
I looked in 0.INTRO.txt in 5.reference, and found that the objects
1142
bag, cputime, realtime, pipe, symbol, poly, and bang were missing.
1145
Five or six bug fixes.
1148
Some audio problems in 0.25 were addresses. In Linux, audio drivers that
1149
don't support the GETISPACE/GETOSPACE ioctl calls can be called using the
1150
(inferior) "-frags/-fragsize" mechanism. If you specify either a "-frags"
1151
or a "-fragsize" option, the GETIOSPACE calls are cancelled.
1154
Under NT, for some audio drivers the 0.26 release gave a constant stream of
1155
"resync" events. I don't know what causes this but I added a "-noresync"
1156
option which simply never resyncs at all.
1159
------------------- 0.26 -----------------
1161
phasor~ and osc~ can be configured to take floating point messages to set
1162
their frequencies, as an alternative to having an input signal to do the
1163
same. Also, +~, etc, can take floating point arguments (and messages) to
1164
add or multiply scalars. THe +~, etc, loops were unrolled to make them
1168
A switch~ object is provided to let you switch sub-patches on and off. The
1169
inlet~ and outlet~ objects were re-written to avoid adding any overhead when
1170
moving signals in or out of sub patches.
1173
In Linux at least, the audio latency is much reduced. It's possible to poll
1174
for audio I/O lateness errors by sending "pd audiostatus".
1177
When reading a sample using tabread4~, you can switch between sample tables
1178
using the "set" message.
1181
A new "textfile" object is like qlist but more flexible.
1184
Many help windows got updated (but at least a dozen more need work urgently).
1187
A dsp_addv function was added to allow variable-length DSP calls (for writers
1191
It's possible for a tilde extern to have a name ending in "tilde" now. Name
1192
the setup routine "foo_tilde" for "foo~", etc.
1195
The dac~ object was fixed to clip its output when out of range (before it
1199
A first line of protection was added against getting numerical underflow
1200
in delay feedback loops. Before, when a reverberator taled out there was
1201
a sudden jump in CPU usage because the numerical underflows would trap to the
1202
kernel. Now, if any delwrite~ is given a value less than 1e-20 or so, it
1203
records a true zero to avoid this.
1206
Signal division checks for divide by zero.
1209
A "Font bomb" feature is provided for resizing fonts and stretching and
1210
contracting patches to fit.
1213
Pds now bind themselves to the symbol pd-<window-name).
1216
IN Linux, if Pd is called as root it tries to promote its run-time
1217
priority. You can make pd a setuid root owned program if you want this
1218
behavior for non-root users who start pd.
1219
(Don't make pd-gui setuid though. That would make a security
1220
hole in your system.)
1223
The Pd commend line can take multiple "open" arguments.
1226
The file search path feature was fixed amd generalized.
1229
Alt-clicking a table gives you a dialog to set its x and y range and pixel
1233
------------------- 0.25 -----------------
1235
Lots of minor, under-the-hood improvements and bug fixes...
1237
The Netsend/netreceive objects were improved; you can now choose between UDP
1238
and TCP and there's an outlet to tell you whether they're connected.
1240
You can now alt click on an object to get its help window (and the help
1241
windows got a fair amount of work.)
1243
multichannel audio I/O -- you can get up to 8 audio cnahhelsin and out.
1244
On SGI this is sdone correctly; on NT it's done using sequential "stereo"
1245
devices. I'm not sure of the status of multichannel in linux...
1247
The "text" window got new accelerators and a bigger font size
1249
there are 3 "tool" patches in 7.stuff: filtering, pvoc, ring mod.
1251
In NT, command-line backslashes are converted to forward slashes.
1253
There's a load measurement tool in the "help" menu.
1255
The SGI version contains an n32 binary (look at the "bin" directory).
1258
------------------- 0.24 ---------------
1261
<BR> - bang - convert any message to a "bang"
1262
<BR> - qlist - message sequencer
1263
<BR> - textfile - file to message converter
1264
<BR> - makefilename - format a name with a variable field
1265
<BR> - openpanel - "Open" dialog
1266
<BR> - savepanel - "Save as" dialog
1269
<BR> - Fixed a bug in "const" message to arrays
1270
<BR> - "exp" was broken on NT, now fixed
1271
<BR> - phase vocoder example improved
1272
<BR> - "read" message to arrays now zero out unread samples
1273
<BR> - bug fix in "key" object
1274
<BR> - bug fix in ifft~ (thanks to Peter Lunden)
1275
<BR> - "print" object fixed to distinguish between lists starting with symbols and
1277
<BR> - polygon, curve, fpolygon, fcurve renamed to fix name clash with Gem
1278
<BR> - improved "new object" placement on screen
1279
<BR> - fixed help dialog to remember previous directory (thanks to Harry Castle)
1280
<BR> - heterogeneous lists
1283
Arrays can be written to and read from text files or from 16-bit
1284
binary files. See ../2.starter/2G for an overview.
1287
Guenter Geiger has contributed a Max-style "table" object which
1288
creates an "array" object in a subwindow.
1291
Guenter has also put in a "search path" feature for externs, abstractions,
1295
The Help menu got reworked.
1298
Select and Route were extended to work Zack-style with symbols.
1301
"random" takes seeds now (see the "help" window)
1304
Some more work on graphical lists; you can see the current state in
1305
../7.stuff/data-structures. It's still nascent.
1307
------------------- 0.23 -------------------
1309
A first cut at the "pure data" feature is now included. See section 6
1310
of the documentation for a quick introduction to it; see also patches 12 and
1311
14 in the FFT examples.
1313
The documentation has been reorganized. The most interesting new features are:
1314
<BR> - some new "tutorial" patches
1315
<BR> - 15 "fft" examples
1316
<BR> - improved help navigation
1319
<BR> - titles on abstractions no longer saved inside file
1320
<BR> - left-to-right sorting of inlets/outlets now seems to work
1321
<BR> - nt audio setup got confused when driver couldn't do full duplex
1322
<BR> - opening window with audio on is now fixed
1323
<BR> - deleting inlets/outlets deletes connections first (used to crash)
1324
<BR> - 1e20 parsed correctly now
1325
<BR> - osc1~ fixed and optimized
1326
<BR> - resizing arrays with DSP on used to crash; now fixed
1327
<BR> - pasting now adds to the end of the list (used to add to beginning)
1328
<BR> - clicking now selects the most recent object when two or more overlap
1329
<BR> - Pd's "open" and "help" dialogs now maintain separate paths
1331
The phasor~ object's "float" method has been REMOVED -- use the right-hand
1332
inlet to set the internal phase. This is so that I can later fix all tilde
1333
objects to convert messages to signals automatically at all signal inputs.
1336
------------------- 0.22 -------------------
1339
<BR> - parsing 1e+006 gave symbol (now float)
1340
<BR> - "." parsed as number, should be symbol
1341
<BR> - change GUI polling loop to TK event dispatch (unix only)
1342
<BR> - improved "tidy up" feature
1343
<BR> - size check added to text boxes (used to crash; still not correct.)
1344
<BR> - occasional bug sending text with CRs to tk
1345
<BR> - binop startup bug
1346
<BR> - key accelerators for creators wrong
1347
<BR> - ftom range to 1500
1348
<BR> - bug in pack, unpack
1349
<BR> - windows restore bigger than saved
1353
Nt-specific bug fixes:
1354
<BR> - getsockopt for netreceive fails. Just omitted it for NT.
1355
<BR> - put tcl dlls in tcl bin, not pd bin
1356
<BR> --- archive tcl subsystem for easier version updates
1357
<BR> --- fix README accordingly
1358
<BR> - deal with bell sound
1359
<BR> - turn on optimization
1360
<BR> - looked for audio timeout bug but couldn't find it.
1363
------------------- 0.21 -------------------
1369
table size change with DSP on: It used to crash Pd to resize an array
1370
when DSP was turned on. This is now fixed.
1373
deselect all when locking. When you lock a patch the selection is cleared.
1376
unlock when pasting. .. and if you paste into a petch, it's unlocked.
1380
lost keyboard events. Version 0.20 lost keyboard events and
1381
forgot window size changes. This should now be fixed.
1383
<BR> subpatches came up in wrong font size
1384
<BR> dirty flag on window title bar fixed
1385
<BR> improvement to netreceive suggested by Mark Danks
1386
<BR> style notes fleshed out as suggested by Larry Troxler
1387
<BR> fixed Bill Kleinsasser's bug (short and long array in same graph)
1392
<BR> phase setting for phasor~
1393
<BR> fft objects. Also, block~, for specifying block sizes and overlaps for FFTs.
1394
<BR> canvas_makefilename() (used, e.g., by array_read and write)
1395
<BR> "stuff" directory with examples of real Pd applications.
1398
------------------- 0.20 -------------------
1401
In NT, the 0.19 release turned out not to contain all the files needed to make
1402
TCL run. This problem should now be fixed.
1405
Also, the array_write routine was fixed.
1408
------------------- 0.19 -------------------
1411
notable new objects:
1414
- vcf~, a bandpass filter with a signal input for center frequency.
1416
- delread, delwrite, vd, as in ISPW Max.
1418
- various math and midi stuff
1420
- catch~, throw~, send~, receive~ for nonlocal signal connections
1422
- an experimental facility for array of floats is included. You can make a new
1423
array (from the "put" menu) which will be given a name such as "array1". You
1424
can then send it "read <file>", "write <file>", "resize <N>", and "print"
1425
messages. File reading and writing is in ascii. "resize" changes the size of
1426
the array, and "print" prints its vital signs. You can then use "tabread4~"
1427
to do a 4-point interpolating table lookup, and tabwrite~ to write audio
1428
samples into the table.
1430
Numbers now default to floating point, although certain objects like "spigot"
1431
and "metro" still convert their boolean inputs to integers so that 0.5 is
1432
"false." This behavior will probably change later. The "div" and "mod"
1433
objects are introduced for explicit integer division and remainder.
1435
Number boxes drag in integer increments, or in hundredths if you hold the
1436
"shift" key down when you click.
1438
Pd documents now save their font sizes. The font size is global to an entire
1439
document. New documents come up in the font size Pd was started in (using
1440
the "-font" flag.) If you want to change the font size of an existing
1441
document, use a text editor; the font size is the last argument on the first
1442
line. 8, 10, 12, 14, 16, 18, and 24 are supported.
1444
The abbreviations "t," "f," and "i" stand for "trigger,", "float", and "int."
1446
Inlets and outlets of subpatches are now sorted correctly; although there is
1447
still a problem deleting inlets/outlets which have connections.
1449
The size and screen location of Pd documents is saved correctly.
1451
Tilde objects now work in "subpages" although there is no way to send
1452
signals through their inlets and outlets; use throw~/catch~ or send~/receive~.
1454
On NT, the default is to open both audio output and input (this used not
1455
to work.) The situation is still shaky; audio seems to hang up sporadically
1456
on my machine; but I seem to have installed my audio driver wrong anyway.
1457
I had to set a huge output FIFO (1/3 sec or so!) to get it to work at all.
1458
You can type "pd -dac", "pd -adc", or "pd -nosound" to get output only,
1459
input only, or no audio at all.
1460
NT's MIDI input and output are supported, but on my machine MIDI output is
1461
flaky. I'm curious how all this will work on other machines...
1463
The list of classes is now:
1467
field inlet outlet print int float send receive select route pack unpack
1468
trigger spigot moses delay metro line timer makenote stripnote random loadbang
1469
serial get netsend netreceive
1473
+ - * / == != > < >= <= & && | || %
1474
mod div sin cos tan atan atan2 sqrt log exp abs
1475
mtof ftom powtodb rmstodb dbtopow dbtorms
1479
notein ctlin pgmin bendin touchin polytouchin noteout ctlout pgmout bendout
1480
touchout polytouchout
1484
dac~ adc~ sig~ line~ snapshot~ +~ -~ *~ /~ phasor~ cos~ vcf~ noise~ env~ hip~
1485
lop~ bp~ biquad~ samphold~ clip~ rsqrt~ sqrt~ wrap~ print~ scope~ tabwrite~
1486
tabread4~ send~ receive~ catch~ throw~ delwrite~ delread~ vd~
1489
------------------- 0.18 -------------------
1492
Release notes now descrie the three platforms Pd runs on: IRIX and
1493
NT (maintained at UCSD) and LINUX, maintained by Guenter Geiger.
1496
menu "close" on a dirty document now checks if you really want to close
1497
without saving (although "quit" will still exit Pd without verification.)
1500
Got rid of "dll" error printout when loading abstractions
1503
------------------- 0.12 - 0.17 -------------------
1506
got Pd running under NT, although driver problems remain. Gem is also
1507
distributed for both platforms.
1510
------------------- 0.11 -------------------
1513
Here's a list of all the objects in this release:
1516
general: print int float send receive select pack unpack trigger spigot
1518
time handling: delay metro line timer
1520
arithmetic: + + - - * * / / == == != != > > < < >= >= <= <= & && | || %
1522
midi: notein noteout makenote stripnote
1526
signals: dac~ adc~ sig~ line~ snapshot~ +~ *~
1528
signal oscillators: phasor~ cos~
1530
signal filters: env~ hip~
1532
signal debugging : print~ scope~
1536
"spigot" replaces "gate" but has the inputs reversed.
1539
------------------- 0.10 -------------------
1542
Many bug fixes. This was the first pre-release to be put on the FTP site.
1545
------------------- 0.09 -------------------
1547
<BR> set up the "Help" menu
1548
<BR> Bug in DSP sorting fixed
1549
<BR> "Notein" and "noteout" objects
1550
<BR> Comments from the Put menu say "comment" (they were invisible before)
1551
<BR> The scheduler deals better when sound I/O malfunctions
1554
------------------- 0.08 -------------------
1559
<BR> text box wraparound at 80 chars.
1560
<BR> fixed boxes to reconnect on retype
1563
------------------- 0.07 -------------------
1566
- made an adc~ object
1569
------------------- 0.06 -------------------
1572
- fixed two bugs in DSP sorting
1574
- added DSP on/off gui
1576
- added lock/unlock and changed the cursor behavior
1578
- fixed -font flag to set font pointsize
1581
------------------- 0.05 -------------------
1583
- added scope~, which is just a stopgap until real sound editing comes up.
1585
- improved the open panel slightly.
1587
- added atoms (int only).
1589
- reworked text editing to reside in Pd, not Pd-gui.
1591
- included a dbx-debuggable Pd in the distribution. I haven't yet figured
1592
out how to get dbx to work with externs though.
1595
------------------- 0.04 -------------------
1597
fixed "cut" which crashed 0.03 if DSP was running.
1598
added clip~, print~, line~, snapshot~.
1602
------------------- 0.03 -------------------
1604
"pd dsp 1", "pd dsp 0" messages added. If you edit a patch with DSP on,
1605
PD resorts the DSP network as needed. Unconnected and multiple signal inlets
1609
------------------- 0.02 -------------------
1611
A DSP network mechanism has been added. DSP objects are:
1612
sig~, +~, *~, phasor~, cos~.
1614
Loading of externs is provided (although there is no search path mechanism
1615
so the extern has to be in the patch's current directory.) Look in
1616
pd/externs for an example.
1620
------------------- 0.01. -------------------
1622
This first release serves mostly to test the "release" mechanism. A Pd
1623
"canvas" object is provided which does both graphing and patch editing.
1624
The editing features apply only to the Max-like part; the graphs have
1625
to be edited into a Pd file via text editor.
1627
Four menu items (in the "put" menu) create the four kinds of "patchable"
1628
objects; they can be dragged and connected as in Max; to break a connection,
1629
just click on it (the cursor becomes a turkey to indicate this.) Cut,
1630
paste, and duplicate seem to work, and a "Pd" class offers subwindows.
1632
The following max-like objects are included:
1635
+, *, -, /, ==, !=, >, <, >=, <=, &, |, &&, ||, %;
1636
int, float, pack, unpack, trigger;
1637
delay, metro, timer;
1639
<P> -----------------------------------------
1641
<H3> <A name="s2"> 5.2. known bugs </A> </H3>
1643
<P> In the list below, starred items are still things needing attention.
1644
This list is no longer maintained; see the sourceforge bug tracker on
1645
https://sourceforge.net/tracker/?group_id=55736
1647
<P> *1. Timing of MIDI input/output is very shaky. Audio I/O is primitive, but
1648
there's at least a way to detect errors now for linux and NT.
1650
<P> *2. There is no flow control for graphical updates yet; the
1651
real-time process can easily block trying to write too fast to the GUI.
1653
<P> 3. PD dies if your patch has an infinite loop [fixed in 0.30 release.]
1655
<P> *4. If you cut a box which is a "Pd" or abstraction whose subpatch has
1656
items selected, Pd dies.
1658
<P> *5. Tables and other drawable items can draw far outside the window; there's
1659
no sanity check, Huge tables (>1000 points) are only partially drawn
1660
(the first 1000 points.)
1662
<P> 6. There's no way to order force a delread~ to make it read after
1663
a delwrite~ has written. [but see under 3.audio.examples how to do this now.]
1665
<P> 7. Pd doesn't know to suspend graphics updates when you minimize objects.
1666
Presumably minimization makes things better but it doesn't cut off graphics
1667
computation entirely as it should. [fixed for 0.34]
1669
<P> 8. If you load a nonexistent extern you get a spurious message,
1670
"consistency check failed: canvas_setargs". [fixed for 0.27 release.]
1672
<P> 9. Typing backslashes into objects upsets Tk [0.29 should suppress all
1673
backslashes; a real fix might come later.]
1675
<P> 10. Never type a dollar sign into a comment; you may have trouble
1676
opening your patch afterward... [fixed somewhere around 0.32]
1678
<P> *11. You'd better Turn DSP off before you type into a box that currently
1679
holds a "pd" object with tilde objects in the subpatch.
1681
<P> *12. In Linux, if you hit control C while Pd is opening MIDI, Pd hangs.
1683
<P> *13. In linux, Pd doesn't report audio data-late errors yet.
1685
<P> *14. Several objects, notably dac~, adc~, and env~, are incompatible with
1686
uses of block~ or switch~ objects that change block size from the default of
1687
64. Using switch~ without reblocking causes no problem. Don't try to
1688
read/write delay lines or use send~/receive~, or throw~/catch~, between
1689
windows with different block sizes.
1691
<H3> <A name="s3"> 5.3. differences from Max/MSP </A> </H3>
1693
<P> It wasn't anyone's intention to make Pd a Max/MSP clone, but on the
1694
other hand, if there's no reason for a feature to appear differently in
1695
Pd than in Max/MSP, the choices in Pd tend to hew to those in Max/MSP.
1696
Moreover, some effort has been undertaken (but more is needed) to make the
1699
<P> You can use Pd to import and export patches to Max/MSP; just save as
1700
text to a file with extension ".pat", and then open it in Pd. You'll at
1701
least get something. If you stick to common or commonizable features
1702
you can actually develop patches for both platforms.
1704
<P> When specific objects exist on one platform and not on the other, it's
1705
often possible to make abstractions to imitate the missing objects, in a
1706
kind of personalized compatibility library.
1708
<P> There are, however, differences in semantics you'll want to know about;
1709
a partial list follows.
1711
<P> <b> abstraction arguments. </b>
1712
In Pd you can edit instantiations of abstractions and save the result back
1713
to the file of the abstraction. This isn't possible in Max, because the
1714
instantiations are different from the abstraction itself in that "#1", etc.,
1715
are replaced by the instantiation arguments. In Pd, these arguments appear
1716
as "$1", etc, and are translated at a slightly later stage of the instantiation
1717
process so that you still see them as "$" variables in the instantiation.
1718
<A href="x2.htm#s7.1"> (see Section 2.7. abstractions) </A>
1720
<P> In Pd, to make current all instantiations of the
1721
abstraction, either delete and recreate them or close and open the patch;
1722
this is done automatically in Max/MSP.
1724
<P> In Pd, if you select "save" while in a subpatch, the parent is saved. In
1725
Max/MSP, if you do this a dialogue box comes up asking if you want to save the
1726
subpatch as a separate file. (if you want to save a subpatch to a file in Pd,
1727
you have to copy and paste the contents to a new document.
1729
<P> In Pd, inlets and outlets are ordinary text objects; in Max/MSP they're
1730
"gui" objects from the palette.
1732
<P> In Max/MSP, if an object's outlet is connected to several destinations,
1733
corresponding messages are always sent in right-to-left screen order. In
1734
Pd, the messages are sent in the order you made the connections in. In either
1735
case, in situations where you care about the order it's appropriate to use
1736
a "trigger" object to specify.
1738
<P> In Pd, there's no "gate"; instead it's "spigot" with the inlets in the
1739
opposite, more natural order.
1741
<P> Switching subsets of the DSP patch on and off is done in completely
1742
different ways in Pd and Max/MSP, and block sizes are handled differently as
1745
<P> Max offers many "GUI" objects such as sliders, dials, VU meters, piano
1746
keyboards, even "bpatchers." Until version 0.34, the only two in Pd were the
1747
number box and graphical arrays. Starting in version 0.34, Pd incorporates
1748
Thomas Musil's GUI objects: sliders, switches, and so on. (Thanks Thomas!)
1749
Beyond this essential collection of GUI objects, it's unlikely you'll ever find
1750
any commonality between the two. Also, as of 0.34, importing and exporting to
1751
Max doesn't know about the Musil objects; I'll try to get that fixed for 0.35.
1753
<P> In Pd there's no "preset" object (I now think it's basically a bad idea)
1754
and you have to use explicit sends and receives to restore values to number
1755
boxes. Then just make a "message" box to re-send the values you want.
1757
<P> In Macintosh land, instead of getting tabosc4~ and arrays, you get cycle~
1758
and buffer~. The only gotcha is that you probably can't draw in buffer~ with
1759
the mouse as you can with arrays, but at least it's possible to
1760
make a patch that copies a "table" into a "buffer~".
1762
<P> The "bpatcher" feature in Max has a correlate, "graph on parent" subpatches,
1763
in Pd; however, Pd's version is quite different from Max's.