Hi there:
I have been messing around with Pd's internal message for a bit and I came
up with this patch. Its a bit like a editor for objects/patches (best
description I can think of).
It essentially allows you to dynamically (re)create/delete objects/patches
while keeping a object count. Because of this, it creates objects into rows
and columns so you can see what's been created/deleted and it looks nice.
You can also specify the space between each object and the number of objects
allowed per line.
My idea is to develop this into a performance tool and each of the patch
that's been created are designed as autonomous agent or something like that.
I have tried it with very simple dsp abstractions and it seems to work ok.
There are many problems that I can see if I am taking this further, but this
is step one.
Anyway, I hope some one you might find this interesting and take a look at
it and give me some feedback as to how things can be better put together.
And perhaps work on it together.
Apologies if its a bad practice to put long patch text on the list, please
let me know and I will behave myself;)
Cheers
CHUN
Just remembered something that I forgot to comment in the patch, if object
you are creating takes more horizontal space, remember to increase the space
parameter so that each object don't overlap.
/*---- patch begin here ------------------------------------------------*/
#N canvas 20 445 547 197 10;
#N canvas 384 46 586 269 dynamic 1;
#X restore 468 3 pd dynamic;
#X floatatom 61 117 5 0 0 0 - - -;
#X floatatom 109 117 5 0 0 0 - - -;
#X obj 157 116 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X floatatom 205 85 5 0 0 0 - - -;
#X floatatom 253 102 5 0 0 0 - - -;
#X obj 302 118 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 60 100 create/delete/del 1;
#X text 320 117 reset x;
#N canvas 65 43 905 569 <<.....:::::_create/delete_:::::.....>> 0;
#X obj 417 472 print;
#X msg 419 450 -----;
#X obj 205 522 s pd-dynamic;
#X msg 524 180 cut;
#X floatatom 220 62 5 0 0 0 - - -;
#X obj 705 435 pack s \$1 0 0 0;
#X msg 705 341 symbol mouse;
#X obj 705 457 route list;
#X obj 553 437 pack s \$1 0 0 0;
#X obj 553 458 route list;
#X msg 553 214 symbol mouseup;
#X obj 220 79 s space;
#X text 7 4 dynamiclly create n number of dplay;
#X text 521 -2 dynamically delete n number of dplay;
#X text 218 44 space unit;
#X obj 10 481 pack s f f s;
#X msg 62 458 0;
#X msg 10 69 symbol obj;
#X obj 10 502 route list;
#X obj 10 122 repeat 5;
#X floatatom 10 22 5 0 0 0 - - -;
#X obj 28 241 - 1;
#X obj 28 266 *;
#X obj 58 217 f;
#X obj 28 217 +;
#X obj 28 192 t f b;
#X msg 28 171 1;
#X msg 74 194 0;
#X obj 55 402 s last_x;
#X obj 53 266 r last_x;
#X obj 55 340 +;
#X msg 55 359 set \$1;
#X msg 55 381 40;
#X obj 28 291 + 0;
#X floatatom 309 296 5 0 0 0 - - -;
#X obj 299 230 * 2;
#X obj 283 250 -;
#X obj 283 204 t f f;
#X obj 582 127 != 0;
#X obj 524 126 spigot;
#X obj 265 319 s current_objs;
#X obj 582 105 r current_objs;
#X obj 28 312 % 400;
#X obj 253 418 * 25;
#X msg 253 439 set \$1;
#X obj 253 369 / 10;
#X obj 253 391 % 10;
#X floatatom 286 418 5 0 0 0 - - -;
#X obj 283 295 f;
#X obj 253 295 +;
#X obj 253 270 t f b;
#X msg 253 249 1;
#X msg 299 272 0;
#X obj 253 345 - 1;
#X obj 722 124 s last_x;
#X msg 722 103 0;
#X obj 306 439 s last_y;
#X msg 799 379 0;
#X msg 799 360 set \$1;
#X obj 799 339 r last_y;
#X obj 349 347 * 10;
#X obj 333 371 -;
#X floatatom 305 61 5 0 0 0 - - -;
#X obj 305 84 * 40;
#X obj 381 58 r space;
#X obj 333 416 s objs_at_current_line;
#X msg 524 105 1;
#X obj 578 235 r objs_at_current_line;
#X obj 578 298 * 40;
#X obj 601 264 r space;
#X obj 730 366 + 40;
#X obj 588 331 moses 0;
#X obj 632 405 s last_x;
#X msg 632 358 set \$1;
#X msg 632 382 0;
#X obj 524 151 t f b b b;
#X obj 553 180 t b b b;
#X obj 70 312 r space;
#X obj 59 241 r space;
#X obj 341 84 s objs_per_line;
#X obj 373 319 r objs_per_line;
#X obj 305 105 s fold_position;
#X obj 58 289 r fold_position;
#X text 348 295 number of objects;
#X obj 524 79 repeat 1;
#X floatatom 524 18 5 0 0 0 - - -;
#X obj 618 35 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 304 43 max objs per line;
#X text 244 167 workout current number of objects;
#X text 242 182 and the y position in the new line;
#X text 637 34 delet 1 object at the time;
#N canvas 76 46 446 579 s/r_defs 0;
#X text 74 33 so there is a gap between each obj.;
#X text 23 70 objs_per_line: in number of objs \, specifies the number
;
#X text 129 86 of objs each lines will hold.;
#X text 23 18 space: in pixels \, the horizontal space for each object.
;
#X text 23 128 fold_position: in pixels \, the horizontal (x) poition
;
#X text 129 144 to go into a new line.;
#X text 24 187 last_x: in pixels \, the current/latest x position after
;
#X text 80 205 creating or deleting.;
#X text 24 244 last_y: in pixels \, the current/latest y position after
;
#X text 80 261 creating or deleting.;
#X text 23 308 current_objs: in number of objs \, the current number
of;
#X text 23 376 objs_at_current_line: in number of objs \, the number
of;
#X text 178 393 objects in the current line.;
#X text 121 324 objs.;
#X text 27 445 finish_sig: bang \, signaling that the creating or deleting
;
#X text 110 463 process is finished;
#X text 27 511 initialise: perhaps use this to initialise each abstraction
;
#X text 112 526 that has been created.;
#X restore 722 167 pd s/r_defs;
#X text 565 17 delete n objects at once!;
#X text 721 84 reset the x position;
#X text 721 70 use when things go wrong!;
#X text 721 150 see the defs/comments of all sents;
#X obj 11 -21 inlet;
#X obj 50 -21 inlet;
#X obj 89 -21 inlet;
#X obj 128 -21 inlet;
#X obj 168 -21 inlet;
#X obj 207 -21 inlet;
#X msg 116 111 vis 1 \, editmode 1;
#X obj 116 92 loadbang;
#X msg 261 61 40;
#X msg 345 60 10;
#X obj -30 -22 inlet;
#X obj 12 547 outlet;
#X obj 58 547 outlet;
#X obj 105 547 outlet;
#X obj 105 527 + 1;
#X msg 275 480 loadbang;
#X obj 10 142 t s b b b b;
#X obj 10 353 t b s;
#X obj 10 98 t b s b;
#X obj 91 141 s finish_sig;
#X obj 611 155 s finish_sig;
#X obj 524 37 t b b f b;
#X msg 583 61 editmode 1;
#X obj 10 42 t b b b f;
#X obj 10 422 s inisialise;
#X symbolatom 132 372 10 0 0 0 - - -;
#X msg 173 310 set +;
#X obj 173 290 loadbang;
#X connect 1 0 0 0;
#X connect 3 0 2 0;
#X connect 4 0 11 0;
#X connect 5 0 7 0;
#X connect 6 0 5 0;
#X connect 7 0 2 0;
#X connect 8 0 9 0;
#X connect 9 0 2 0;
#X connect 10 0 8 0;
#X connect 15 0 18 0;
#X connect 16 0 15 2;
#X connect 17 0 114 0;
#X connect 18 0 2 0;
#X connect 19 0 112 0;
#X connect 20 0 119 0;
#X connect 21 0 22 0;
#X connect 22 0 33 0;
#X connect 23 0 24 1;
#X connect 24 0 23 1;
#X connect 24 0 21 0;
#X connect 25 0 24 0;
#X connect 25 1 23 0;
#X connect 26 0 25 0;
#X connect 27 0 23 1;
#X connect 29 0 33 1;
#X connect 30 0 31 0;
#X connect 31 0 32 0;
#X connect 32 0 28 0;
#X connect 33 0 42 0;
#X connect 35 0 36 1;
#X connect 36 0 50 0;
#X connect 37 0 36 0;
#X connect 37 1 35 0;
#X connect 38 0 39 1;
#X connect 39 0 75 0;
#X connect 41 0 38 0;
#X connect 42 0 30 0;
#X connect 42 0 15 1;
#X connect 43 0 44 0;
#X connect 43 0 56 0;
#X connect 44 0 16 0;
#X connect 45 0 46 0;
#X connect 46 0 43 0;
#X connect 46 0 47 0;
#X connect 46 0 60 0;
#X connect 46 0 108 0;
#X connect 48 0 49 1;
#X connect 49 0 48 1;
#X connect 49 0 40 0;
#X connect 49 0 34 0;
#X connect 49 0 53 0;
#X connect 49 0 107 0;
#X connect 50 0 49 0;
#X connect 50 1 48 0;
#X connect 51 0 50 0;
#X connect 52 0 48 1;
#X connect 53 0 45 0;
#X connect 53 0 61 0;
#X connect 55 0 54 0;
#X connect 57 0 5 2;
#X connect 57 0 8 2;
#X connect 58 0 57 0;
#X connect 59 0 58 0;
#X connect 60 0 61 1;
#X connect 61 0 65 0;
#X connect 61 0 110 0;
#X connect 62 0 63 0;
#X connect 62 0 79 0;
#X connect 63 0 81 0;
#X connect 64 0 63 1;
#X connect 66 0 39 0;
#X connect 67 0 68 0;
#X connect 68 0 70 0;
#X connect 68 0 8 1;
#X connect 68 0 71 0;
#X connect 69 0 68 1;
#X connect 69 0 70 1;
#X connect 70 0 5 1;
#X connect 71 1 73 0;
#X connect 73 0 74 0;
#X connect 74 0 72 0;
#X connect 75 0 37 0;
#X connect 75 1 74 0;
#X connect 75 2 3 0;
#X connect 75 3 76 0;
#X connect 76 0 10 0;
#X connect 76 1 6 0;
#X connect 76 2 57 0;
#X connect 77 0 30 1;
#X connect 78 0 22 1;
#X connect 80 0 45 1;
#X connect 80 0 46 1;
#X connect 80 0 60 1;
#X connect 82 0 42 1;
#X connect 84 0 66 0;
#X connect 85 0 117 0;
#X connect 86 0 66 0;
#X connect 96 0 20 0;
#X connect 97 0 85 0;
#X connect 98 0 86 0;
#X connect 99 0 4 0;
#X connect 100 0 62 0;
#X connect 101 0 55 0;
#X connect 102 0 2 0;
#X connect 103 0 102 0;
#X connect 103 0 104 0;
#X connect 103 0 105 0;
#X connect 104 0 4 0;
#X connect 105 0 62 0;
#X connect 106 0 121 0;
#X connect 110 0 109 0;
#X connect 111 0 2 0;
#X connect 112 0 113 0;
#X connect 112 1 26 0;
#X connect 112 2 16 0;
#X connect 112 3 121 0;
#X connect 112 4 51 0;
#X connect 113 0 111 0;
#X connect 113 0 120 0;
#X connect 113 1 15 0;
#X connect 114 1 19 0;
#X connect 114 2 27 0;
#X connect 117 0 116 0;
#X connect 117 1 84 0;
#X connect 117 2 84 1;
#X connect 117 3 118 0;
#X connect 118 0 2 0;
#X connect 119 0 115 0;
#X connect 119 1 32 0;
#X connect 119 2 17 0;
#X connect 119 3 19 1;
#X connect 121 0 15 3;
#X connect 122 0 121 0;
#X connect 123 0 122 0;
#X restore 13 137 pd <<.....:::::_create/delete_:::::.....>>;
#X floatatom 13 159 5 0 0 0 - - -;
#X floatatom 157 159 5 0 0 0 - - -;
#X floatatom 302 159 5 0 0 0 - - -;
#X text 12 173 No. of objs;
#X text 154 172 current line No.;
#X text 300 172 No. of objs @ current line;
#X symbolatom 13 81 10 0 0 0 - - -;
#X text 13 64 name of the object/patch to create;
#X msg 13 22 set +;
#X obj 13 2 loadbang;
#X text 247 83 x space \, default 40;
#X text 292 101 objs per line \, default 10;
#N canvas 179 95 590 442 readme 0;
#X text 13 7 an patch that dynamically creates and delets objects/patches
;
#X text 13 33 work in progress \, still a bit experimental...;
#X text 21 64 to create objects:;
#X text 151 83 enter the number of object to create in the create number
;
#X text 152 99 box and hit enter.;
#X text 21 114 to delete objects:;
#X text 151 133 enter the number of object to delete in the delete
number;
#X text 152 149 box and hit enter. or click on the bang next to it
to;
#X text 151 164 delete one object at the time.;
#X text 152 208 things up a bit \; );
#X text 27 240 in case things go wrong:;
#X text 154 263 manually delete the object in the dynamic\ window and
click;
#X text 155 283 the reset\ x bang. also make sure the object count
is 0;
#X text 156 298 by enter the right number at the delete correct the
count;
#X text 25 348 *don't save the patch if there are objects in the dynamic
window/subpatch;
#X text 153 193 *don't enter the number by draging the mouse \, it
will mess;
#X restore 79 2 pd readme;
#X text 151 2 <- info here!;
#X connect 1 0 9 1;
#X connect 2 0 9 2;
#X connect 3 0 9 3;
#X connect 4 0 9 4;
#X connect 5 0 9 5;
#X connect 6 0 9 6;
#X connect 9 0 10 0;
#X connect 9 1 11 0;
#X connect 9 2 12 0;
#X connect 16 0 9 0;
#X connect 18 0 16 0;
#X connect 19 0 18 0;