diff options
Diffstat (limited to 'pd/doc/1.manual/x5.htm')
-rw-r--r-- | pd/doc/1.manual/x5.htm | 1231 |
1 files changed, 1231 insertions, 0 deletions
diff --git a/pd/doc/1.manual/x5.htm b/pd/doc/1.manual/x5.htm new file mode 100644 index 00000000..2203ebc7 --- /dev/null +++ b/pd/doc/1.manual/x5.htm @@ -0,0 +1,1231 @@ +<HTML> +<HEAD> +<TITLE>Pd Documentation</TITLE> +</HEAD> +<BODY bgcolor="#ffffff"> +<SMALL> +<div style="width:6.5in; margin-left:.5in"> + +<CENTER> <B> +Pd Documentation chapter 5. current status +</B> </CENTER> +<P> +This section tracks changes in Pd's current implementation. +<BR> +<H5> <A href=index.htm#s5> back to table of contents </A></H5> + +<H4> <A name=s2> 5.1. release notes </A> </H4> + +<P> ------------------ 0.35 ------------------------------- + +<P> An experimental new feature called graph-on-parent allows subpatches and abstractions to show +GUI features; so, for instance, you can make an oscillator with a number box to +control the frewuency. This is described in section 2.7.2 of the HTML +documentation and an example is shown in 7.stuff/synth1/. + +<P> Spaces are allowed in pathnames to Pd and to patches; however, the "path" +variable still can't have spaces. (You can address path directories using +relative pathnames as in "../sound" (or ..\sound on Windows), even if there +are spaces further "up" the path to the patch. See 3.7, "dealing with files." + +<P> The soundfile reading routine (used in readsf~ and soundfiler) is much +better at opening wav files with different header sizes and odd chunks. +You can now read floating-point "wav" files -- although you can't write them +yet. + +<P> Templates and data structures are extensively reworked. A "struct" +object replaces "template", so that you specify the name of the structure as +the first argument to "struct" (previously it was derived from the +window name.) You can now have multiple "structs" of the same name; the +oldest one is the "real" one, but if you delete that, the structures are +all conformed to the next-oldest one, and so on. You can alter the contents of +a "struct" and all the associated data will be modified to fit the new +structure definition. Data are persistent, i.e., saved with the containing +patch. You can copy and paste data between patches. If you save data to a file +explicityly, you can read it into another patch and the data are conformed +automatically to the new data structures. + +<P> A new version of Thomas Musil's GUI objects was merged in. + +<P> The testtone patch works for up to 6 channels of audio input and output. + +<P> Lots of improvements got made to audio I/O in general. In NT you may +specify "-asio" to use ASIO drivers; see HTML documentation section 3.2. +You may specify lists of audio input and output devices. In Linux, Pd +will now attempt to open each /dev/dsp* only once, even if it's requested +for reading and writing. + +<P> The "extra" directory is now searched after the directories in the +search path, not before (so now you can override objects like "fiddle~"). + +<P> A bug in paf~ is fixed. + +<P> In Linux, the ".pdrc" is now read before the command line arguments, so +that command line arguments override the .pdrc (it was backwards before.) + +<P> In Linux, "help" now can invoke either mozilla or netscape to start +up the HTML documentation. This doesn't work in Windows or Mac land yet. + +<P> In Linux, the "-32bit" flag was added, which you must now use if +running Guenter's OSS RME Hammerfall driver. (This was necessary because +OSS went and used the same "bit" for a different purpose, so taht Pd tried +to open some other cards in 32bit mode inappropriately.) + +<P> In Linux, MIDI is now opened "-NODELAY" ... this makes the OSS Creative +driver take MIDI input correctly which it didn't before. + +<P> In MS windows, you can now use "readsf~/writesf~" for spooling sounds to +and from disk. + +<P> MS Windows bug fixes: -nosound was ignored, and now works. Also, clicking +to open abstractions, when they were already open anyway, used to lose the +keyboard; this should be fixed now. Finally, "netreceive" didn't work when +running "-nogui". This is fixed, and moreover, you should definitely include +a netreceive object in any -nogui patch in MSW, otherwise it eats up all +available CPU time gratuitously. + +<P> The outlet is removed from the "table" object. + +<P> In MS Windows, Pd now has "-resync" and "-noresync" flags so that you +can specify how to deal with audio input and output blocksize nonsense in +MMIO. If "resync" is on, whenever the audio input and output seem out +of whack the audio driver resynchronizes all input and output devices; +otherwise the situation is simply ignored. "Noresync" is probably best for +consumer stereo cards (and is the default if you're running only 2 channels in +and out). If you're runnimg more than 2 channels in either direction, the +default is "resync". + +<P> In soundfiler's read method, if you specify "-maxsize", that implies +"-resize" (as it ought to.) + +<P> You can use $1-stlye names for arays and tables. + +<P> Pd will now refuse to make duplicate connections between objects. + +<P> Pd is (somewhat shakily) running on Macintosh OS/X. See section 3.4 of +the HTML doc. For Macs with one-button mice, you can double-click in edit +mode to simulate a right click. Unfortunately, the "alt" key doesn't work +yet. + +<P> In Linux, ALSA audio is now fixed to clip, not wrap around, on output +overflows. + +<P> Various problems were fixed with objects changing size. Number boxes never +wrap to two lines (as they used to), and lines are reconnected appropriately +when objects are resized. + +<P> A function call is added to retrieve a unique event-dependent number, +so that objects like "buddy" can be written. + +<P> All the "sound" command-line flags now have "audio" equivalents. + +<P> The "-listdev" flag now works on Mac and MSW/ASIO. + +<P> Help file updates for env~, route, and pointer + +<P> ------------------ 0.34.3 ------------------------------- + +<P> fixed a bug in "udp" netreceive that crashed pd + +<P> fixed a bug in tabosc4~ that caused gritty sound + +<P> changed "specfile" for RPM releases (thanks Fernando) + +<P> adopted Krzysztof's glob_setfilename bug fix + +<P> bug fixes from "the joy of global variables" thread in Pd list + +<P> made a help window for "table". + +<P> ------------------ 0.34.2 ------------------------------- + +<P> fixed ".pdrc" bug + +<P> added an experimental "pd restart-audio" feature for (new) Alsa + +<P> ------------------ 0.34.1 ------------------------------- + +<P> Bug fixes: + +<P> 1. Closing a window with objects selected crashed Pd. + +<P> 2. "find" when it opened a window to show the found object crashed Pd. + +<P> 3. (Linux only) Oversized .pdrc files crashed pd... + +<P> Also, I updated Thomas Musil's IEM GUI objects and their help files. + + +<P> ------------------ 0.34 ------------------------------- + +<P> NEW FEATURES: + +<P> I incorporated Thomas Musil's GUI objects (slider, button, etc.) into +the Pd release so Thomas won't have to publish patches to Pd anymore. I +didn't take the graphical inlets and outlets for reasons explained elsewhere, +but Thomas might decide to continue supplying them on a patch basis. + +<P> Many new examples were added to the "2.control" amd expecially +"3.audio" example patches. A list of differences batween Max/MSP and Pd +now appears at the end of this section. + +<P> Finally, I fixed Pd to notice window iconification and suspend graphical +updates for iconified windows. + +<P> Numbering of versions of Pd will now be as in "0.34.2" instead of +"0.34PATCH2" which was confusing. + +<P> BUGS FIXED: + +<P> I incorporated Krzysztof Czaja's menuclose bug fix in g_canvas.c. + +<P> (lunix) the configure script is more rational. + +<P> the qlist and pack objects were fixed to handle reentrancy correctly. + +<P> Pd now complains about running out of memory (before it dies.) I intend +to provide advance warning and automatically back out of loading patches that +woudl run out of memory, but that's not in place yet. + +<P> Typing into a message box sometimes left you with lines from the output +pointing to the wrong location. Fixed. + +<P> Reading of "wav" and nextstep soundfiles now handles the headers better. + +<P> ------------------ 0.33 ------------------------------- + +<P> AUDIO AND MIDI: + +<P> MIDI time jitter is reduced. Theoretically, it could now be +as low as the audio blocksize (and so if you care about MIDI timing, keep your +audio blocksize low.) If you run Pd with audio in stream mode or without +audio at all, and perhaps in some cases in block more too (?), +the controlling parameter for MIDI jitter is "-sleepgrain", which specifies +the interval of time Pd sleeps when it believes it's idle. + +<P> You can now specify multiple MIDI input and output devices. For example, +"pd -midiindev 3 -midioutdev 4,2" asks for the third MIDI input device and the +fourth and second MIDI output device. The "channel message" midi objects in Pd +such as notein or pgmout will take channels 1-16 to mean the first open MIDI +port, 17-32 the second one, and so on. The midiin, sysexin, midiout objects +give you a separate inlet to specify which of the open MIDI port numbers +you want. + +<P> (linux only) By default, Pd now reads and write audio in "block mode." +Previously you have to specify "-frags" and/or "-fragsize" to get this. +As of this version you have to specify "-streammode" to get the opposite, +streaming mode. This mode seems only to work with a small number of sound +cards, notably Ensoniq ens1370 and ens1371. + +<P> (linux only) Also, "-fragsize" is replaced with a more convenient +"-blocksize" which you specify in sample frames. It defaults to 64 which is +Pd's audio computation block size but may be larger or smaller. Typically you +would specify "-audiobuf" and "-blocksize" and Pd will compute "-frags" for +you; but you can also specify "-frags" explicitly. + +<P> (linux only) OSS and ALSA audio support are improved. You can now talk to +RME9652 using Guenter's OSS driver; this is different from the "-RME" support +which uses Winfried's older driver. Other multichannel OSS drivers might now +work as well. Pd also seems to work with ALSA 0.9 Beta 4; I've tested this +with Midiman Delta 66 and Soundblaster live. I plan to update the linux audio +setup documentation accordingly. + +<P> NEW FEATURES: + +<P> I've put in Shahrokh's new expr, expr~, and fexpr~ objects. The latter +allows you to make expressions referring to prior input and output samples in +case you're interested in writing your own recursive filters, oscillators, +or chaotic sound generators... + +<P> In support of expr, you can now use commas in "object" boxes; they just +become symbols. + +<P> sqrt~ is fixed so that it apparently has 24-bit accurate mantissas. +It turned out to be easier to just make it accurate than to confront the +question of how a reduced-accuracy version should be named. + +<P> The bizarre framp~ object which does phase vocoder analysis got a help +window. The phase vocoder example doesn't use framp~ and I had forgotten +what it did until Guenter dug it back up. + +<P> (linux only) I finally got around to incorporating Guenter's autoconf +stuff, and learned about rpms. Major new linux releases will probably be +in .tar.gz and .rpm formats; "test" releases will probably just be in .tar.gz. +I also fixed it so that the installation prefix is overridden if you invoke +pd by its full pathname, so that you can still use compilations with +installation prefixes before you actually install them. + +<P> (NT only) I added support for directX using the portaudio package +by Ross Bencina and Phil Burk. I couldn't discover any way this would ever +outperform the old "multimedia" API Pd uses. So the release contains the sources, +but you have to recompile Pd to use directX. Use "makefile.nt.portaudio". Only +1 or 2 channels of audio are supported. THe interesting thing is that the same +code will run on Macintosh. There are a couple of other obstacles to a +MacOS port of Pd though; it's hard to predict when this will be feasible. + +<P> BUG FIXES: + +<P> "drawnumber" was broken in 0.32 -- fixed. + +<P> new arrays in 0.32p6 got ill-fitting graphs -- fixed. + +<P> ------------------ 0.32 PATCH 6 ------------------- + +<P> Got array and graph dialogs to behave better when there are more +than one. + +<P> put in mtof~, etc. + +<P> made Pd search the "extra" directory without having to specify it in "path." + +<P> bug fix in exporting patches to Max + +<P> ------------------ 0.32 PATCH 5 ------------------- + +<P> Reversed the order of these release notes so that the newest appear first. + +<P> Arrays can save their content with containing patch; the properties +dialog selects this. The dialog shows up when you create a new array from +the menu, and allows you to set the name and size. Only floating point arrays +can be created and edited this way. + +<P> Bug fix: the figures in the NT web doc were garbage. + +<P> Bug fix: large tables (> 800 pixels and points) no longer crash the GUI. +A related problem remains; large arrays are truncated to either 1000 points +or 1000 pixels. + +<P> Bug fix: doing "save as" on an instantiated abstraction no longer sets +the window title. + +<P> in linux, a couple of status messages on opening /dev/dsp only appear now +if Pd is run "-verbose". + + +<BR> <BR> +<P> ------------------ 0.32 PATCH 2, 3, 4 ------------------- + +<P> Hassled more with font size differnces between NT and Linux, and updated +many help files. Minor bug fixes here and there. + +<P> the table object now takes a second argument to set size in points. + +<P> Improved underflow protection in some DSP objects. + +<P> pointer now has a "vnext" traversal method which goes forward to the +next SELECTED object. + +<P> improvements to throw~ (it now sums) and receive~ fixed to be settable. + +<P> bug fix in which RME driver always thought sample rate was 44100. + +<BR> <BR> +<P> ------------------ 0.32 PATCH 1 ------------------- + +<P> bug fixes (bugs flagged by mik): vcf~ help window crashed; writesf~ +only wrote 1 channel soundfiles; "table" object didn't open when clicked +on; + +<P> new object: tabosc4~ -- finally, a real wavetable oscillator for Pd. + +<P> much work on "data" editing; go to 7.stuff/data-structures, open patches +5 and 7, and try clicking on things. Alt clicks delete or add points; regular +clicks drag values around. The cursor changes to show you what will happen +if you click. + +<BR> <BR> +------------------- 0.32 ----------------- + +<P> <strong> New objects: </strong> + +<P> midiin, sysexin, midiout. (I don't think MIDI sysex is working +in Windows yet though.) + +<P> threshold~ as in Jmax, triggers from audio level. + +<P> value as in Max and Jmax. + +<P> writesf as in Jmax. + +<P> <strong> New startup flags: </strong> + +<P> -sleepgrain: if you aren't using audio I/O, this can reduce time jitter in +MIDI I/O. Otherwise, MIDI I/O jitter is limited by the audio buffer size. + +<P> -noloadbang: cancels loadbangs. + +<P> -nogui: supress starting the GUI. You can then still talk to Pd using, +perhaps among other possibilities, the new network connection programs now +included in the release. + +<P> -guicmd: lets you specify the command string Pd calls to start the GUI, +in case you've written your own GUI to replace the TK one Pd comes with. + +<P> -send: after loading all the patches specified in the command line, +you can specify "startup" messages to send. For example, if you want to use +Pd just to play 50-channel soundfiles from a shell, this is how you can specify +the soundfile name on the command line. + +<P> <strong> bug fixes. </strong> + +<P> A readsf~ problem got fixed. + +<P> hitting the tab key used to cause Pd windows to relinquish the keyboard. + +<P> The $0 feature apperas now to work. + +<P> Inlets and outlets of subpatches sometimes got out of left-to-right order. + +<P> Scrollbars are less out of whack than they were before. + +<P> Pd now knows to de-iconify windows if you "vis" them from the parent. + +<P> <strong> in general: </strong> + +<P> In Linux the treatment of MIDI input is now much more efficient. Also, +bugs were fixed in notin and (for SGI) bendin. + +<P> You can "select all" from the Edit menu. + +<P> standalone programs "pd-send" and "pd-receive" are provided that can send +mesages to Pd or receive messages from Pd via the netsend~ and netreceive~ +objects. This should allow you to interface a wide variety of other programs +with Pd either on the same machine or over the network. Also you should be +able to hack the code into your own programs to make them interoperate with +Pd and/or each other. The underlying protocol is called FUDI. + +<P> "Properties" for scalars, graphs, and number boxes: left click on them. +In particular, number boxes can have fixed widths and finite ranges; if you +make them one character wide they act as toggles. Later you'll be able to +configure them as sliders. + +<P> As to scalars, the properties dialog lets you edit the data in the raw. +Don't try to edit the template though; you can't. + +<P> You can now type into a "pd" object to change its name without losing the +contents. + +<P> An experimental "scalar" _text_ object now allows abstractions to draw +primitive control panels on their parents when you invoke them, as if they were +Moog or Buchla modules. See the "7.stuff/data" examples. + +<P> New help windows for the "data" classes (pointer, append, template, etc.) +and for send/receive which somehow I had neglected. + +<P> When you hit "copy" with nothing selected, the copy buffer used to be +cleared. This is fixed to do nothing. + +<BR> <BR> +------------------- 0.31 ----------------- + +<P> ALSA support in Linux has been completely overhauled. It now works with +Midiman (up to 10 in/12 out!) and es1370. There are problems with SBLive under +ALSA but it works in OSS emulation with a "-frags" setting. See the "getting +started" documentation. + +<P> In NT, the default is now "noresync" if you're running stereo. You can +override this with the "-resync" flag. If you're running more than 2 channels +it's the opposite (as it was before.) + +<P> "symbol" boxes now display symbols and let you type them in. + +<P> There was a bug when you renamed a patch from outside Pd; the old filename +still showed in the title bar (and there were other bad side effects.) FIxed. + +<P> Protection was added against patches opening themselves as abstractions. + +<P> The "route" object's handling of leading symbols was improved. I'm not +sure whether it's Max compatible or not. + +<P> You can draw into arrays with the mouse, at least in the case where there's +at least one pixel per point. (I'm not sure if the other case even makes +sense.) + +<P> Abstractions display their "$1", etc., arguments in the window title bar. + +<P> A "sort" method was added for lists to make them easier to use as +sequencers. + +<P> The "save as" dialog makes a more reasonable choice of start-up directory. + +<P> "Trigger i" is now disallowed (it used to crash Pd.) + +<P> Getbytes and resizebytes now zero out new memory. + +<P> A memory leak reported by Hannes has been partly, hopefully mostly, fixed. + +<P> The "signal_free 2" bug reported by Fogar is fixed. + +<P> New graphs now reliably avoid using already-taken "graph%d" names. + +<P> The old bug which showed up as ".xxxxxxxxx: no such object" is fixed. + +<P> The FFT examples have been reworked and the "pique" and "shift" objects +are moved to "extra". + +<BR> <BR> +------------------- 0.30 ----------------- +<P> in Linux, you can get Pd to promote itself to "real time" priority. +A "watchdog" process protects you from having Pd lock your machine up. You +must request real time by running "pd -rt" or "pd -realtime". You must either +be superuser or make Pd a root-owned SETUID program (chown root .../pd/bin/pd; +chmod 4755 .../pd/bin/pd). For security reasons, Pd relinquishes root +privelige immediately after setting its priority, before loading +any patches or externs. + +<P> Protection was added against message loops. + +<P> loadbang was fixed so that loadbangs in abstractions go off before loadbangs +in the owner patch. Within each patch, loadbangs go off forst in subpatches. + +<P> new object: tabplay~, a non-imterpolating sample reader. + +<P> new objects (in "extra" library): loop~; rev1~. + +<P> The "toys" library was renamed "extra" and incorporated in the Pd release. + +<P> In Linux, timeouts were added to the driver opening and closing code +(which used to hang under some conditions.) + +<P> the "field" object was replaced by "template"; see "data.structures" +examples in 7.stuff. Data lists can be read from and written to files now. + +<P> You can invoke an external object by pathname, as in "../../extra/loop~". + +<P> hip~, etc. should no longer get stuck when they get a NAN on input. + +<P> a bug was fixed in expanding symbols such as "$1-foo". + +<BR> <BR> +------------------- 0.29 ----------------- + +<P> readsf~ - a MAX/FTS style soundfile player, which reads multichannel +soundfiles in wave, aiff, or next formats. The files must be 16 or 24 bit +fixed point or 32 bit floating point (only nextstep headers understand the +latter.) You can also override the header. A "skip" flag lets you read +starting anywhere in the file. (Sorry: linux only for now; I can't find +Posix threads packages for the other platforms.) + +<P> soundfiler - support for reading and writing soundfiles (wave, aiff, +nextstep) to and from arrays. Multichannel soundfiles can be read into or +written from several arrays at once. When reading you can ask that the tables +be automatically resized; in any event the object obligingly outputs the number +of samples actually read. When writing you can specify a sub-segment of the +arrays, and/or request that the soundfile's maximum amplitude be normalized to +one. + +<P> tabplay~ - a non-interpolating sample player + +<P> Garry Kling reports having compiled Pd for "yellowdog" linux on Macintosh +computers. One "fix" has been made to s_linux.c to facilitate this. I don't +have access to a Mac running linux at the moment so I can't verify whether +any particular repease of mine actually works there. + +<P> Signal objects now automatically convert scalars to vectors, so that you +can just run a number box into a signal input. One caveat is that the binops +"+~", "-~", "*~", "/~", "max~", "min~" run slightly faster if you give them +an argument to tell them that their right inlet will be scalar; so the +construction "+~ 0" is still meaningful. This will get fixed at some later +date... + +<P> Font sizes work in what I hope will be a more machine-portable way. On +any machine, the point sizes 8, 10, 12, 14, 16, 24 are DEFINED to be the +largest fonts Pd can find that don't exceed their size on my linux machine. +This way I can write patches that everyone else can read, and others will +at least have fewer portability problems than before. The downside is that +your old patches may appear with a different type size than you want; use the +"font" menu item to fix them. + +<P> The OSS support no longer asks the audio driver whether full duplex +is needed; it just tries to open it. Apparently some drivers (such as +ALSA's OSS emulation) might do full duplex but not implement the call Pd +used to query for it. + +<P> You can give "-nomidi" as a flag (previously you had to type "-nomidiin +-nomidiout".) + +<P> A GUI bug reported by Iain Mott was fixed. + +<P> You can now type symbols such as "$3-poodle" and the "$3" portion gets +expanded properly. Someone was also asking about the FTS-style #0 feature, +but I couldn't figure out how to reconcile it with Pd's usage of "$" for "#" +in abstractions. So I'm still searching for a good way to provide local +symbols. + +<P> the GUI now protects itself from "\", "{" and "}" characters by dropping +them. I wonder how many NT users have crashed Pd trying to type in filenames +with backslashes... + +<P> samphold_set and tabwrite_stop methods added. There turned out to be +no help window for samphold~ so one was supplied. + +<BR> <BR> +------------------- 0.28 ----------------- + +<P> Version 0.28 has a primitive in-box text editor... about time! + +<P> the "front panel" now gives you information on audio levels and +sync errors. + +<P> Message boxes flash, sort of, when you click them. + +<P> +Support has been added for RME 9652 soundcards; see the Linux soundcard section of +the documentation. Support files for RME and PCI128 (Ensoniq es1370) cards +are released separately from Pd. + +<P> The delete and backspace keys clear the current selection. There is +unfortunately no "undo" though; I'm not sure this is a good thing to have +put in. + +<P> The "until" object has a "float" method which limits the number of bangs +it will output. + +<P> The audio setup is better documented for NT and Linux. + +<P> The externs in 4.fft and 6.externs got recompiled and tested. + +<P> BUG FIX: the "read16" message to tables was broken on NT and is now fixed. + +<P> BUG FIX: In Linux, starting Pd up sometimes changed the audio mixer +setting. + +<P> BUG FIX: sending "floats" to inlets expecting lists now works correctly. + +<P> BUG FIX: "route" on symbols now deals better with symbols, floats and lists. + +<BR> <BR> +------------------- 0.27 ----------------- +<P> +The main new feature is the "find" menu stuff. You can search for boxes +containing specified atoms, including semicolons or commas. Most errors are +now trackable, allowing you to "find last error". Look in the "Find" menu. + +<P> +New objects written: change, max, max~, min, min~, and swap. + +<P> +I looked in 0.INTRO.txt in 5.reference, and found that the objects +bag, cputime, realtime, pipe, symbol, poly, and bang were missing. + +<P> +Five or six bug fixes. + +<P> +Some audio problems in 0.25 were addresses. In Linux, audio drivers that +don't support the GETISPACE/GETOSPACE ioctl calls can be called using the +(inferior) "-frags/-fragsize" mechanism. If you specify either a "-frags" +or a "-fragsize" option, the GETIOSPACE calls are cancelled. + +<P> +Under NT, for some audio drivers the 0.26 release gave a constant stream of +"resync" events. I don't know what causes this but I added a "-noresync" +option which simply never resyncs at all. + +<BR> <BR> +------------------- 0.26 ----------------- +<P> +phasor~ and osc~ can be configured to take floating point messages to set +their frequencies, as an alternative to having an input signal to do the +same. Also, +~, etc, can take floating point arguments (and messages) to +add or multiply scalars. THe +~, etc, loops were unrolled to make them +run faster. + +<P> +A switch~ object is provided to let you switch sub-patches on and off. The +inlet~ and outlet~ objects were re-written to avoid adding any overhead when +moving signals in or out of sub patches. + +<P> +In Linux at least, the audio latency is much reduced. It's possible to poll +for audio I/O lateness errors by sending "pd audiostatus". + +<P> +When reading a sample using tabread4~, you can switch between sample tables +using the "set" message. + +<P> +A new "textfile" object is like qlist but more flexible. + +<P> +Many help windows got updated (but at least a dozen more need work urgently). + +<P> +A dsp_addv function was added to allow variable-length DSP calls (for writers +of tilde externs.) + +<P> +It's possible for a tilde extern to have a name ending in "tilde" now. Name +the setup routine "foo_tilde" for "foo~", etc. + +<P> +The dac~ object was fixed to clip its output when out of range (before it +wrapped around.) + +<P> +A first line of protection was added against getting numerical underflow +in delay feedback loops. Before, when a reverberator taled out there was +a sudden jump in CPU usage because the numerical underflows would trap to the +kernel. Now, if any delwrite~ is given a value less than 1e-20 or so, it +records a true zero to avoid this. + +<P> +Signal division checks for divide by zero. + +<P> +A "Font bomb" feature is provided for resizing fonts and stretching and +contracting patches to fit. + +<P> +Pds now bind themselves to the symbol pd-<window-name). + +<P> +IN Linux, if Pd is called as root it tries to promote its run-time +priority. You can make pd a setuid root owned program if you want this +behavior for non-root users who start pd. +(Don't make pd-gui setuid though. That would make a security +hole in your system.) + +<P> +The Pd commend line can take multiple "open" arguments. + +<P> +The file search path feature was fixed amd generalized. + +<P> +Alt-clicking a table gives you a dialog to set its x and y range and pixel +size. + +<BR> <BR> +------------------- 0.25 ----------------- +<P> +Lots of minor, under-the-hood improvements and bug fixes... +<P> +The Netsend/netreceive objects were improved; you can now choose between UDP +and TCP and there's an outlet to tell you whether they're connected. +<P> +You can now alt click on an object to get its help window (and the help +windows got a fair amount of work.) +<P> +multichannel audio I/O -- you can get up to 8 audio cnahhelsin and out. +On SGI this is sdone correctly; on NT it's done using sequential "stereo" +devices. I'm not sure of the status of multichannel in linux... +<P> +The "text" window got new accelerators and a bigger font size +<P> +there are 3 "tool" patches in 7.stuff: filtering, pvoc, ring mod. +<P> +In NT, command-line backslashes are converted to forward slashes. +<P> +There's a load measurement tool in the "help" menu. +<P> +The SGI version contains an n32 binary (look at the "bin" directory). + +<BR> <BR> +------------------- 0.24 --------------- +<P> +new objects: +<BR> - bang - convert any message to a "bang" +<BR> - qlist - message sequencer +<BR> - textfile - file to message converter +<BR> - makefilename - format a name with a variable field +<BR> - openpanel - "Open" dialog +<BR> - savepanel - "Save as" dialog +<P> +Bug fixes: +<BR> - Fixed a bug in "const" message to arrays +<BR> - "exp" was broken on NT, now fixed +<BR> - phase vocoder example improved +<BR> - "read" message to arrays now zero out unread samples +<BR> - bug fix in "key" object +<BR> - bug fix in ifft~ (thanks to Peter Lunden) +<BR> - "print" object fixed to distinguish between lists starting with symbols and + other messages +<BR> - polygon, curve, fpolygon, fcurve renamed to fix name clash with Gem +<BR> - improved "new object" placement on screen +<BR> - fixed help dialog to remember previous directory (thanks to Harry Castle) +<BR> - heterogeneous lists +<P> + +Arrays can be written to and read from text files or from 16-bit +binary files. See ../2.starter/2G for an overview. +<P> + +Guenter Geiger has contributed a Max-style "table" object which +creates an "array" object in a subwindow. +<P> + +Guenter has also put in a "search path" feature for externs, abstractions, +etc. +<P> + +The Help menu got reworked. +<P> + +Select and Route were extended to work Zack-style with symbols. +<P> + +"random" takes seeds now (see the "help" window) +<P> + +Some more work on graphical lists; you can see the current state in +../7.stuff/data-structures. It's still nascent. + +------------------- 0.23 ------------------- +<P> +A first cut at the "pure data" feature is now included. See section 6 +of the documentation for a quick introduction to it; see also patches 12 and +14 in the FFT examples. +<P> +The documentation has been reorganized. The most interesting new features are: +<BR> - some new "tutorial" patches +<BR> - 15 "fft" examples +<BR> - improved help navigation +<P> +more bug fixes: +<BR> - titles on abstractions no longer saved inside file +<BR> - left-to-right sorting of inlets/outlets now seems to work +<BR> - nt audio setup got confused when driver couldn't do full duplex +<BR> - opening window with audio on is now fixed +<BR> - deleting inlets/outlets deletes connections first (used to crash) +<BR> - 1e20 parsed correctly now +<BR> - osc1~ fixed and optimized +<BR> - resizing arrays with DSP on used to crash; now fixed +<BR> - pasting now adds to the end of the list (used to add to beginning) +<BR> - clicking now selects the most recent object when two or more overlap +<BR> - Pd's "open" and "help" dialogs now maintain separate paths +<P> +The phasor~ object's "float" method has been REMOVED -- use the right-hand +inlet to set the internal phase. This is so that I can later fix all tilde +objects to convert messages to signals automatically at all signal inputs. + +<BR> <BR> +------------------- 0.22 ------------------- +<BR> +bug fixes +<BR> - parsing 1e+006 gave symbol (now float) +<BR> - "." parsed as number, should be symbol +<BR> - change GUI polling loop to TK event dispatch (unix only) +<BR> - improved "tidy up" feature +<BR> - size check added to text boxes (used to crash; still not correct.) +<BR> - occasional bug sending text with CRs to tk +<BR> - binop startup bug +<BR> - key accelerators for creators wrong +<BR> - ftom range to 1500 +<BR> - bug in pack, unpack +<BR> - windows restore bigger than saved +<BR> +<BR> + +Nt-specific bug fixes: +<BR> - getsockopt for netreceive fails. Just omitted it for NT. +<BR> - put tcl dlls in tcl bin, not pd bin +<BR> --- archive tcl subsystem for easier version updates +<BR> --- fix README accordingly +<BR> - deal with bell sound +<BR> - turn on optimization +<BR> - looked for audio timeout bug but couldn't find it. +<BR> <BR> + +------------------- 0.21 ------------------- + +<P> +bug fixes: + +<P> +table size change with DSP on: It used to crash Pd to resize an array +when DSP was turned on. This is now fixed. + +<P> +deselect all when locking. When you lock a patch the selection is cleared. + +<P> +unlock when pasting. .. and if you paste into a petch, it's unlocked. + +<P> + +lost keyboard events. Version 0.20 lost keyboard events and +forgot window size changes. This should now be fixed. + +<BR> subpatches came up in wrong font size +<BR> dirty flag on window title bar fixed +<BR> improvement to netreceive suggested by Mark Danks +<BR> style notes fleshed out as suggested by Larry Troxler +<BR> fixed Bill Kleinsasser's bug (short and long array in same graph) + +<P> +new features: + +<BR> phase setting for phasor~ +<BR> fft objects. Also, block~, for specifying block sizes and overlaps for FFTs. +<BR> canvas_makefilename() (used, e.g., by array_read and write) +<BR> "stuff" directory with examples of real Pd applications. + +<BR> <BR> +------------------- 0.20 ------------------- + +<P> +In NT, the 0.19 release turned out not to contain all the files needed to make +TCL run. This problem should now be fixed. + +<P> +Also, the array_write routine was fixed. + +<BR> <BR> +------------------- 0.19 ------------------- + +<BR> +notable new objects: + +<BR> +- vcf~, a bandpass filter with a signal input for center frequency. +<BR> +- delread, delwrite, vd, as in ISPW Max. +<BR> +- various math and midi stuff +<BR> +- catch~, throw~, send~, receive~ for nonlocal signal connections +<P> +- an experimental facility for array of floats is included. You can make a new +array (from the "put" menu) which will be given a name such as "array1". You +can then send it "read <file>", "write <file>", "resize <N>", and "print" +messages. File reading and writing is in ascii. "resize" changes the size of +the array, and "print" prints its vital signs. You can then use "tabread4~" +to do a 4-point interpolating table lookup, and tabwrite~ to write audio +samples into the table. +<P> +Numbers now default to floating point, although certain objects like "spigot" +and "metro" still convert their boolean inputs to integers so that 0.5 is +"false." This behavior will probably change later. The "div" and "mod" +objects are introduced for explicit integer division and remainder. +<P> +Number boxes drag in integer increments, or in hundredths if you hold the +"shift" key down when you click. +<P> +Pd documents now save their font sizes. The font size is global to an entire +document. New documents come up in the font size Pd was started in (using +the "-font" flag.) If you want to change the font size of an existing +document, use a text editor; the font size is the last argument on the first +line. 8, 10, 12, 14, 16, 18, and 24 are supported. +<P> +The abbreviations "t," "f," and "i" stand for "trigger,", "float", and "int." +<P> +Inlets and outlets of subpatches are now sorted correctly; although there is +still a problem deleting inlets/outlets which have connections. +<P> +The size and screen location of Pd documents is saved correctly. +<P> +Tilde objects now work in "subpages" although there is no way to send +signals through their inlets and outlets; use throw~/catch~ or send~/receive~. +<P> +On NT, the default is to open both audio output and input (this used not +to work.) The situation is still shaky; audio seems to hang up sporadically +on my machine; but I seem to have installed my audio driver wrong anyway. +I had to set a huge output FIFO (1/3 sec or so!) to get it to work at all. +You can type "pd -dac", "pd -adc", or "pd -nosound" to get output only, +input only, or no audio at all. +NT's MIDI input and output are supported, but on my machine MIDI output is +flaky. I'm curious how all this will work on other machines... +<P> +The list of classes is now: +<P> + +GENERAL: +field inlet outlet print int float send receive select route pack unpack +trigger spigot moses delay metro line timer makenote stripnote random loadbang +serial get netsend netreceive +<P> + +MATH: ++ - * / == != > < >= <= & && | || % +mod div sin cos tan atan atan2 sqrt log exp abs +mtof ftom powtodb rmstodb dbtopow dbtorms +<P> + +MIDI: +notein ctlin pgmin bendin touchin polytouchin noteout ctlout pgmout bendout +touchout polytouchout +<P> + +SIGNAL: +dac~ adc~ sig~ line~ snapshot~ +~ -~ *~ /~ phasor~ cos~ vcf~ noise~ env~ hip~ +lop~ bp~ biquad~ samphold~ clip~ rsqrt~ sqrt~ wrap~ print~ scope~ tabwrite~ +tabread4~ send~ receive~ catch~ throw~ delwrite~ delread~ vd~ + +<BR> <BR> +------------------- 0.18 ------------------- + +<BR> +Release notes now descrie the three platforms Pd runs on: IRIX and +NT (maintained at UCSD) and LINUX, maintained by Guenter Geiger. + +<P> +menu "close" on a dirty document now checks if you really want to close +without saving (although "quit" will still exit Pd without verification.) + +<P> +Got rid of "dll" error printout when loading abstractions + +<BR> <BR> +------------------- 0.12 - 0.17 ------------------- + +<BR> +got Pd running under NT, although driver problems remain. Gem is also +distributed for both platforms. + +<BR> <BR> +------------------- 0.11 ------------------- + +<BR> +Here's a list of all the objects in this release: + +<BR> +general: print int float send receive select pack unpack trigger spigot +<BR> +time handling: delay metro line timer +<BR> +arithmetic: + + - - * * / / == == != != > > < < >= >= <= <= & && | || % +<BR> +midi: notein noteout makenote stripnote +<BR> +other: random get +<BR> +signals: dac~ adc~ sig~ line~ snapshot~ +~ *~ +<BR> +signal oscillators: phasor~ cos~ +<BR> +signal filters: env~ hip~ +<BR> +signal debugging : print~ scope~ +<BR> +<BR> + +"spigot" replaces "gate" but has the inputs reversed. + +<BR> <BR> +------------------- 0.10 ------------------- +<BR> + +Many bug fixes. This was the first pre-release to be put on the FTP site. + +<BR> <BR> +------------------- 0.09 ------------------- + +<BR> set up the "Help" menu +<BR> Bug in DSP sorting fixed +<BR> "Notein" and "noteout" objects +<BR> Comments from the Put menu say "comment" (they were invisible before) +<BR> The scheduler deals better when sound I/O malfunctions + +<BR> <BR> +------------------- 0.08 ------------------- + +<BR> metro bug +<BR> scrollbars +<BR> scheduler bug +<BR> text box wraparound at 80 chars. +<BR> fixed boxes to reconnect on retype + +<BR> <BR> +------------------- 0.07 ------------------- + +<BR> +- made an adc~ object + +<BR> <BR> +------------------- 0.06 ------------------- + +<BR> +- fixed two bugs in DSP sorting +<BR> +- added DSP on/off gui +<BR> +- added lock/unlock and changed the cursor behavior +<BR> +- fixed -font flag to set font pointsize + +<BR> <BR> +------------------- 0.05 ------------------- +<P> +- added scope~, which is just a stopgap until real sound editing comes up. +<BR> +- improved the open panel slightly. +<BR> +- added atoms (int only). +<BR> +- reworked text editing to reside in Pd, not Pd-gui. +<BR> +- included a dbx-debuggable Pd in the distribution. I haven't yet figured + out how to get dbx to work with externs though. + +<BR> <BR> +------------------- 0.04 ------------------- +<P> +fixed "cut" which crashed 0.03 if DSP was running. +added clip~, print~, line~, snapshot~. + + +<BR> <BR> +------------------- 0.03 ------------------- +<P> +"pd dsp 1", "pd dsp 0" messages added. If you edit a patch with DSP on, +PD resorts the DSP network as needed. Unconnected and multiple signal inlets +are allowed. + +<BR> <BR> +------------------- 0.02 ------------------- +<P> +A DSP network mechanism has been added. DSP objects are: +sig~, +~, *~, phasor~, cos~. +<P> +Loading of externs is provided (although there is no search path mechanism +so the extern has to be in the patch's current directory.) Look in +pd/externs for an example. + +<BR> <BR> + +------------------- 0.01. ------------------- +<P> +This first release serves mostly to test the "release" mechanism. A Pd +"canvas" object is provided which does both graphing and patch editing. +The editing features apply only to the Max-like part; the graphs have +to be edited into a Pd file via text editor. +<P> +Four menu items (in the "put" menu) create the four kinds of "patchable" +objects; they can be dragged and connected as in Max; to break a connection, +just click on it (the cursor becomes a turkey to indicate this.) Cut, +paste, and duplicate seem to work, and a "Pd" class offers subwindows. +<P> +The following max-like objects are included: + + print; + +, *, -, /, ==, !=, >, <, >=, <=, &, |, &&, ||, %; + int, float, pack, unpack, trigger; + delay, metro, timer; + send, receive. +<P> ----------------------------------------- + +<H4> <A name=s2> 5.2. known bugs </A> </H4> + +<P> In the list below, starred items are still things needing attention... + +<P> *1. Timing of MIDI input/output is very shaky. Audio I/O is primitive, but +there's at least a way to detect errors now for linux and NT. + +<P> *2. There is no flow control for graphical updates yet; the +real-time process can easily block trying to write too fast to the GUI. + +<P> 3. PD dies if your patch has an infinite loop [fixed in 0.30 release.] + +<P> *4. If you cut a box which is a "Pd" or abstraction whose subpatch has +items selected, Pd dies. + +<P> *5. Tables and other drawable items can draw far outside the window; there's +no sanity check, Huge tables (>1000 points) are only partially drawn +(the first 1000 points.) + +<P> 6. There's no way to order force a delread~ to make it read after +a delwrite~ has written. [but see under 3.audio.examples how to do this now.] + +<P> 7. Pd doesn't know to suspend graphics updates when you minimize objects. +Presumably minimization makes things better but it doesn't cut off graphics +computation entirely as it should. [fixed for 0.34] + +<P> 8. If you load a nonexistent extern you get a spurious message, +"consistency check failed: canvas_setargs". [fixed for 0.27 release.] + +<P> 9. Typing backslashes into objects upsets Tk [0.29 should suppress all +backslashes; a real fix might come later.] + +<P> 10. Never type a dollar sign into a comment; you may have trouble +opening your patch afterward... [fixed somewhere around 0.32] + +<P> *11. You'd better Turn DSP off before you type into a box that currently +holds a "pd" object with tilde objects in the subpatch. + +<P> *12. In Linux, if you hit control C while Pd is opening MIDI, Pd hangs. + +<P> *13. In linux, Pd doesn't report audio data-late errors yet. + +<P> *14. Several objects, notably dac~, adc~, and env~, are incompatible with +uses of block~ or switch~ objects that change block size frmo the default of +64. Using switch~ without reblocking causes no problem. Don't try to +read/write delay lines or use send~/receive~, or throw~/catch~, between +windows with different block sizes. + +<H4> <A name=s3> 5.3. differences from Max/MSP </A> </H4> + +<P> It wasn't anyone's intention to make Pd a Max/MSP clone, but on the +other hand, if there's no reason for a feature to appear differently in +Pd than in Max/MSP, the choices in Pd tend to hew to those in Max/MSP. +Moreover, some effort has been undertaken (but more is needed) to make the +two interoperable. + +<P> You can use Pd to import and export patches to Max/MSP; just save as +text to a file with extension ".pat", and then open it in Pd. You'll at +least get something. If you stick to common or commonizable features +you can actually develop patches for both platforms. + +<P> When specific objects exist on one platform and not on the other, it's +often possible to make abstractions to imitate the missing objects, in a +kind of personalized compatibility library. + +<P> There are, however, differences in semantics you'll want to know about; +a partial list follows. + +<P> <bold> abstraction arguments. </bold> +In Pd you can edit instantiations of abstractions and save the result back +to the file of the abstraction. This isn't possible in Max, because the +instantiations are different from the abstraction itself in that "#1", etc., +are replaced by the instantiation arguments. In Pd, these arguments appear +as "$1", etc, and are translated at a slightly later stage of the instantiation +process so that you still see them as "$" variables in the instantiation. +<A href="x2.htm#s7.1"> (see Section 2.7. abstractions) </A> + +<P> In Pd, to make current all instantiations of the +abstraction, either delete and recreate them or close and open the patch; +this is done automatically in Max/MSP. + +<P> In Pd, if you select "save" while in a subpatch, the parent is saved. In +Max/MSP, if you do this a dialogue box comes up asking if you want to save the +subpatch as a separate file. (if you want to save a subpatch to a file in Pd, +you have to copy and paste the contents to a new document. + +<P> In Pd, inlets and outlets are ordinary text objects; in Max/MSP they're +"gui" objects from the palette. + +<P> In Max/MSP, if an object's outlet is connected to several destinations, +corresponding messages are always sent in right-to-left screen order. In +Pd, the messages are sent in the order you made the connections in. In either +case, in situations where you care about the order it's appropriate to use +a "trigger" object to specify. + +<P> In Pd, there's no "gate"; instead it's "spigot" with the inlets in the +opposite, more natural order. + +<P> Switching subsets of the DSP patch on and off is done in completely +different ways in Pd and Max/MSP, and block sizes are handled differently as +well. + +<P> Max offers many "GUI" objects such as sliders, dials, VU meters, piano +keyboards, even "bpatchers." Until version 0.34, the only two in Pd were the +number box and graphical arrays. Starting in version 0.34, Pd incorporates +Thomas Musil's GUI objects: sliders, switches, and so on. (Thanks Thomas!) +Beyond this essential collection of GUI objects, it's unlikely you'll ever find +any commonality between the two. Also, as of 0.34, importing and exporting to +Max doesn't know about the Musil objects; I'll try to get that fixed for 0.35. + +<P> In Pd there's no "preset" object (I now think it's basically a bad idea) +and you have to use explicit sends and receives to restore values to number +boxes. Then just make a "message" box to re-send the values you want. + +<P> In Macintosh land, instead of getting tabosc4~ and arrays, you get cycle~ +and buffer~. The only gotcha is that you probably can't draw in buffer~ with +the mouse as you can with arrays, but at least it's possible to +make a patch that copies a "table" into a "buffer~". + +<P> The "bpatcher" feature in Max has a correlate, "graph on parent" subpatches, +in Pd; however, Pd's version is quite different from Max's. + +</BODY> +</HTML> |