aboutsummaryrefslogtreecommitdiff
path: root/pd/doc/1.manual/x5.htm
blob: 064d093e4053e7adddf10505ba126d33b2766934 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">

<HTML>
  <HEAD>
	 <TITLE>Pd Documentation 5</TITLE>
    <meta http-equiv="Content-Type" content="text/html">
	 <link rel="stylesheet" type="text/css" href="pdmanual.css" media="screen">
  </HEAD>
  
<BODY>

<H2>Pd Documentation chapter 5. current status</H2>

<P>
<A href="index.htm#s5"> back to table of contents </A>
<BR><BR>
</P> 

<P>This section tracks changes in Pd's current implementation.</P>

<H3> <A name="s2"> 5.1. release notes </A> </H3>
<P> ------------------ 0.40 -----------------------------

<P> A new object, "declare", allows patches to control where Pd looks
for resources such as abstractions and libraries.

<P> Sybmols can now be built using multiple dollar sign variables, as in
"$1-$2.$3".

<P> The switch~ object takes a "bang" message to compute one block of DSP on 
demand.  Also, block sizes are no longer required to be powers of two 
(although reblocking only works between powers of two.)

<P> Externs may have characters in their names that aren't part of valid
C variable names (i.e., outsize the range a-z,A-Z,0-9, _).

<P> Openpanel and savepanel take an argument to set the initial directory to 
search.

<P> Support for large (>2G) soundfiles, in operating systems that offer it.

<P> Text copy/paste fixed (I hope) for Macintosh

<P> Intel Mac binaries.  New naming scheme for externs to allow disambiguation
(although Pd falls back to the old names for compatibility.)

<P> Templates can get notified when data are selected/deselected.  I want
to provide this for mouse actions on locked canvases too, but haven't yet.

<P> 6 or so patches adopted from sourceforge.

<P> ------------------ 0.39.2 --------------------------

<P> Bug fixes: memory leak in OSX version; problem printing numbers as symbols.

<P> ------------------ 0.39.1 --------------------------

<P> Bug fixes: compatibility problems with older version of TK

<P> ------------------ 0.39.0 --------------------------

<P> At the source level, "regular" arrays and arrays within data structures are
now the same thing.  This will mean that, in the future, features introduced to
one array type will become available on the other one too.  Array elements are
"scalars" (i.e., data structures) and if they have drawing instructions, each
point of the array is drawn according to them; they can be clicked on, etc.,
just like any other scalars. "Regular" arrays have points which are of a
special, built-in template, "float".

<P> Drawing instructions now can use variable ranges for screen coordinates;
for instance, specifying an offset of "a(0:10)(100:200)(0.2)" specifies that
the member "a", which shoudl range from 0 to 10, should be graphed at locations
ranging from 100 to 200 (relative to the scalar's base location) and should
have a "grain" of 0.2, i.e., steps of 2 pixels each.

<P> Drawing instructions can be turned on and off, either globally
(for all data of the given structure) or by a data field.

<P> The "struct" object has an outlet to notify you when a datum is selected or
deselected.

<P> Graph-on-parent subpatches and abstractions no longer scale the GUI objects
to fit the parent rectangle; instead you get a sub-rectangle in the subpatch,
of the same size as the parent object, to place GUI objects in.  GUI objects
that don't fit inside aren't shown on the parent, and the parent objects no
longer stretches itself to show things that wouldn't otherwise fit.  Older
patches work as before until you try to edit them - at which point you have
no choice but to use the new functionality.

<P> The font size of a Graph-on-parent abstraction is that of the abstraction
itself, not the calling patch.

<P> Message boxes now take "addcomma" and similar messages.

<P> A "list" object is provided for joining and splitting lists, and converting
between lists and non-list messages.

<P> Pd extension is now added automatically to files on Macintish when you
do a "save as".  The tcl/tk version is updated to 8.4.5.  This should run on
OSX version 10.2 and later.  Also on Mac, drag-and-drop startups read
"libraries" (specified in "startup" dialog) before opening the file.

<P> The "pointer" object has a method to rewind to the beginning of a list.
A "sendwindow" message forwards any message to the window contining the
scalar currently pointed to.

<P> Abstractions don't produce visible windows, even if subwindows of the
abstraction were visible when the abstraction was saved.

<P> MIDI sysex messages should now work on all platforms.

<P> Bug fixes:

<P> sending lists to arrays now correctly interprets the first number of the
list as the starting index (following values are then stored seuentially in the
array.)

<P> The rfft~ object's imaginary part had the wrong sign.  Also, the Nyquist
bin is now supplied correctly.

<P> Fixed problems writing aiff files using the writesf~ and soundfiler objects.
Writesf, if sent an "open" while a file was previously being written, closes the
previous file first.

<P> Bug fix in number2 which sometimes crashed Pd.

<P> Stale-pointer protection made more robust.

<P> Some of Pd's tcl/tk error messages have been tracked down, but probably
not all of them yet.

<P> "Find" crashed Pd when the found object was in a GOP.

<P> Mouse motion over arrays no longer is quite so CPU-consuming (but is
still somewhat so.)

<P> samplerate~ now reflects up/downsampling.

<P> Tilde objects in blocked, overlapped subpatches no longer adjust their
internal sample rate to reflect the overlap.

<P> Fixed a thread-safety problem in sys_microsleep().


<P> ------------------ 0.38.1 --------------------------

Fixed two bugs that crashed Pd when deleting number boxes in certain
situations.

<P> ------------------ 0.38.0 --------------------------

<P> The big change is queued graphics updates, which apply (so far)
to tables and number/symbol boxes.  The IEM GUIS aren't enqueued yet.
This along with a better graphics update buffering scheme makes Pd's
graphics run much better.

<P> Support for cutting/copying/pasting text between boxes and between Pd and
other applications.

<P> Dialogs for setting and saving path, libs-to-load-on-startup, and some
other things.  This and the audio settings can be saved automatically to
the appropriate repository (.pdsettings on linux; registry on MS windows;
"Preferences" on Mac.)

<P> "Print" printout goes to the Pd window by default.  You can revert to
the old (standard error) behavior with the "-stderr" startup flag.

<P> The "gui" TK script can now start Pd up (previously Pd had to be
started first.)  This is needed for Pd to work as an "App" on Mac.

<P> new filter objects: cpole~, fpole~, etc... these will get used in the
upcoming Techniques chapter 8.

<P> Objects whose creation failed get a distinctive outline; if they are
already inside a patch they sprout inlets and outlets as necessary to
preserve connections.

<P> Filenames in the "search path", etc., now may contain spaces, commas,
and semicolons.

<P> bug fix: click on minaturized subpatch failed to "vis" it

<P> bug fix: font size change crash reported by CK

<P> Key bindings like control-Q now work even from within most dialogs.

<P> The audio settings dialog now permits turning audio input and/or output
off without forgetting how many channels it should be when on.

<P> RME Hammerfall ALSA support from Winfried -- but specify the number of
channels correctly or else Pd crashes.

<P> portaudio (e.g., Mac) audio support fixed for inchans != outchans,
so the emi emagic can now be used 2-in. 6-out, for example.

<P> (linux) The configure script can set the setuid flag on "make install".
The "-enable" flags to ./configure should now work correctly too.

<P> atan2 had its inlets switched to conform to standard usage

<P> ------------------ 0.37.3 --------------------------

<P> Oops- added __i386__ macro to windows makefile so it would test for
underflows correctly.  This affects only Microsoft Windows; the other
two platformas are fine as 0.37.2.  Thanks to Thomas Musil...

<P> ------------------ 0.37.2 --------------------------

<P> fixed a bug in soundfile reading (soundfiles now default to wav better.)

<P> fixed gfx update problem in hradio and vradio 

<P> minor changes to built-in Max import feature (but you should
still use cyclone's instead.)

<P> colors for scalars fixed (probably never worked before!)

<P> added a "set" message to the line object

<P> aliased spaces to underscores in GUI labels so that at least they won't
destroy the object.

<P> ------------------ 0.37.1 --------------------------

<P> fixed the apple key on OSX so it does key accelerators

<P> fixed bug in -inchannels/-outchannels arg parsing

<P> major editions to the IEM GUIs to fix bugs in how "$" variables are handled.
The code still isn't pretty but hopefully at least works now.

<P> bug fix in vd~ for very small delays

<P> fixed MSW version not to make windows grow by 2 pixels on save/restore

<P> added an "nrt" flag for OSX to defeat real-time priritization
(useful when runnig Gem.)

<P> on some platforms, audio open failures are handled more gracefully.

<P> added a "changelog" file in the source directory to document source-level
changes.

<P> ------------------ 0.37 --------------------------

<P> Pd is finally fixed so that it can open and close audio and MIDI devices
on-the-fly (previously it opened them once at startup and hogged them until
Pd quit).  Starting DSP causes audio devices to be opened, and 
stopping it closes them.
There are dialog panels in the "Media" menu (which used to be called 
"Audio") for choosing audio and MIDI settings.  The "path" also can be changed
on the fly via a dialog in the "File" menu.

<P> A "vline" object acts like "line" but to sub-sample accuracy.  See
the audio example, C04.control.to.signal.pd (and/or chapter 3 of
<A HREF="http://www.crca.ucsd.edu/~msp/techniques.htm"
<I> Theory and Techniques of Electronic Music </I> ).
 
<P> The block~/switch~ object now takes a "set" message to dynamically change
block size, etc.

<P> The makefilename object takes a "set" message to set the "pattern".  You
can use this to kludge multiple substitutions (as shown in the help file).

<P> The writesf~ object got an update and a better help window.  It now should
be able to write 32bit floating-point WAV soundfiles.  The file's sample rate
is now set "correctly".

<P>  Various improvements were made in audio I/O to improve stability and
reduce latency.

<P>  Jack support should work for Mac OSX (it appears as a separate API).
Linux is offering experimental portaudio V19 support (but Mac and Window/ASIO
are still based on PA V18.)

<P>  The fiddle~ object (in extra) has an "npoints" method to set the analysis
window size dynamically.

<P> (windows) Pd is now distributed as a self-extracting archive.

<P> (windows) url files in the help directories are opened correctly.

<P> (Mac) the arrow keys should now be fixed.

<P> (linux) The "configure" script should be better at finding TK in various
distributions (debian users previously had to use a special configure script.)

<P> (developers) Pd now exits cleanly from its main loop instead of bailing
out.  A mutex protects Pd's data so it can be accessed from other threads. 
(Thomas Grill's improvements.)

<P> (developers) The "savefunction" and "dialog" widget behaviors
were replaced by a better mechanism (class_setsavefn() and
class_setpropertiesfn()).  THey're declared in m_pd.h so you don't have to
include the (unstable) g_canvas.h to get them.

<P> (developers) Better flag handling in the IEM GUIs (g_toggle.c, etc) should
compile with fewer warnings and be more portable.


<P> ------------------ 0.37-test 1 --------------------------

<P> The MacOSX version now prioritizes itself effectively (thanks to
gert@test.at (v93r)) via Adam Lindsay).  Adam has made a proper MacOSX
"package" for Pd; see <A href="http://homepage.mac.com/atl/sw">
http://homepage.mac.com/atl/sw</A>.

<P> A bug was fixed in readsf~/writesf~ (things were coming out in the wrong
number of channels.)

<P> A problem compiling Pd with TK8.4 (the latest version) was fixed.

<P> Large numbers of GUI improvements by Adam Lindsay, especially relevant
to Mac OSX.

<P> For externs, the binary may now be included in a subdirectory of the
same name (e.g., "choice/choice.pd_linux" and "choice\choice.dll").  So
now you can pack multiple binaries for the same extern, along with the
source, in one convenient place.  (Note that
"expr~" is an exception, since it goes by three different names, so this
trick fails for that example.)

<P>  "Help" files renamed "help-xxx.pd", so that help files are now possible
for abstractions.  The "help path" feature from CVS (I forgot who contributed
that) is also included but should now not be needed: Pd remembers where it got
externs and abstractions and looks back in the same directory for a help file. 
See the way "extras" is organized.

<P>  Pd refuses to connect signal outlets to non-signal inlets.

<P>  When you save any patch, Pd looks for all invocations of that patch
as an abstraction and reloads them.  This unfortunately has the side effect of
making all the containing windows visible, but it's better than nothing.

<P> ------------------ 0.36-1 -------------------------------

<P> "print" now queries you for a file to save the postscript to.

<P> "expr" brought up to date (0.4) -- a bug was fixed involving expresions
like "max($f1, 100)" which had erroneously output an integer.

<P> a bug fix in the 4-point interpolation formula, which affects tabosc4~,
tabread4~, tabread4, and vd~.  These should have significantly lower
distortion than before.

<P> bug fix: vradio, hradio "send symbol" feature didn't work

<P> ------------------ 0.36 -------------------------------

<P> There's now an "undo" for most editing operations.  Undoing is only
available in the window that was most recently edited.  (One gotcha remains,
that "stretching" (in the font menu) affects all windows and you can't undo any
but the last one it touched.)  Also, there's no "undo" for run-time operations,
only editing ones.  That might be worth thinking about.

<P> Some bugs were fixed that affected "flipped" canvases (ones whose
"properties show a positive "y" increment per pixel.)  Also, the coordinates
are now saved and restored correctly.  "text" objects (comments) now stick to
the bottom of the window for flipped canvases.

<P> Signal lines now show up fatter than control lines.  (Now I have to go
through the figures in the HTML doc again... drat)

<P> "Classic" number boxes now can have labels and send/receive signals, which
work in the same way as the IEMGUI controls do.  I think "$1" style
label/send/receive names work too.  I fixed a related bug
in the IEM code (typing at boxes sometimes crashed Pd).  

<P> "vdial" and "hdial" were renamed "vradio" and "hradio", and fixed to
output numbers, not lists, like the other GUIs.  The old ones are still around
for compatibility with old patches.

<P> "Make install" should now actually make Pd before trying to install it.

<P> "expr" is updated to Shahrokh's 0.4test3 version (which I modified somewhat
to get it to compile.)  

<P> The problem of CPU usage skyrocketing on underflows in P4s should
be fixed.

<P> Compiled "pdsend" and "pdreceive" for Windows.

<P> "PD_VERSION" macro added to m_pd.h

<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 frequency.  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
explicitly, 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 that 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 running 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-style names for arrays 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" and especially
"3.audio" example patches.  A list of differences between 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> (Linux) 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
would 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 RPM.  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 differences 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: suppress 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 notein 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-&lt;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 &lt;file&gt;", "write &lt;file&gt;", "resize &lt;N&gt;", 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> -----------------------------------------

<H3> <A name="s2"> 5.2. known bugs </A> </H3>

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

<H3> <A name="s3"> 5.3. differences from Max/MSP </A> </H3>

<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> <b> abstraction arguments. </b>
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>