#N canvas 457 204 823 609 10; #X msg 81 156 bang; #X obj 104 275 print urne; #X obj 125 251 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X msg 155 158 seed 10; #X msg 157 181 clear; #X floatatom 139 231 5 0 0 0 - - -; #X text 78 41 generates random numbers without repetition; #X text 37 23 urne: Unique Random Generator; #X text 352 177 bang: output next random number without repetitions. ; #X text 351 200 clear: put all numbers back into urn.; #X text 351 224 seed NUM: seed random number generator; #X text 331 157 Inlet 0:; #X text 332 258 Inlet 1:; #X text 335 319 Outlet 0:; #X text 361 338 random number; #X text 337 371 Outlet 1:; #X text 373 279 int - set range of random numbers and reset the urn. ; #X text 333 125 Arguments: int - range of random numbers in urn (optional) ; #X text 83 68 Clone of the Max object [urn]. Stops when all values have been chosen and bangs right outlet. Send "clear" message to make it start over.; #X msg 83 371 bang; #N canvas 0 0 450 300 display 0; #X obj 46 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 ; #X obj 63 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 ; #X obj 80 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 ; #X obj 97 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 ; #X obj 114 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X obj 156 135 list append 0; #X obj 46 134 list append 1; #N canvas 0 0 450 300 count 0; #X obj 158 193 + 1; #X obj 122 158 until; #X obj 122 194 f; #X obj 122 101 inlet; #X msg 167 157 0; #X obj 122 120 t a b; #X obj 122 224 outlet; #X connect 0 0 2 1; #X connect 1 0 2 0; #X connect 2 0 0 0; #X connect 2 0 6 0; #X connect 3 0 5 0; #X connect 4 0 2 1; #X connect 5 0 1 0; #X connect 5 1 4 0; #X restore 156 90 pd count; #X obj 46 160 route 0 1 2 3 4 5 6 7 8 9; #X obj 131 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X obj 148 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X obj 165 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X obj 182 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X obj 199 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X obj 46 36 inlet; #X obj 156 37 inlet; #X obj 156 64 max 1; #X connect 5 0 8 0; #X connect 6 0 8 0; #X connect 7 0 5 0; #X connect 8 0 0 0; #X connect 8 1 1 0; #X connect 8 2 2 0; #X connect 8 3 3 0; #X connect 8 4 4 0; #X connect 8 5 9 0; #X connect 8 6 10 0; #X connect 8 7 11 0; #X connect 8 8 12 0; #X connect 8 9 13 0; #X connect 14 0 6 0; #X connect 15 0 16 0; #X connect 16 0 7 0; #X coords 0 -1 1 1 180 40 1 40 170; #X restore 83 519 pd display; #X text 363 389 bang \, when an empty urn receives a bang into first inlet.; #X msg 101 395 clear \, bang; #X obj 127 448 t b b; #X obj 127 468 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 -1; #X obj 256 493 f 10; #X floatatom 150 425 5 0 0 0 - - -; #N canvas 0 0 450 300 display 0; #X obj 46 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 ; #X obj 63 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 ; #X obj 80 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 ; #X obj 97 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 ; #X obj 114 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X obj 156 135 list append 0; #X obj 46 134 list append 1; #N canvas 0 0 450 300 count 0; #X obj 158 193 + 1; #X obj 122 158 until; #X obj 122 194 f; #X obj 122 101 inlet; #X msg 167 157 0; #X obj 122 120 t a b; #X obj 122 224 outlet; #X connect 0 0 2 1; #X connect 1 0 2 0; #X connect 2 0 0 0; #X connect 2 0 6 0; #X connect 3 0 5 0; #X connect 4 0 2 1; #X connect 5 0 1 0; #X connect 5 1 4 0; #X restore 156 90 pd count; #X obj 46 160 route 0 1 2 3 4 5 6 7 8 9; #X obj 131 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X obj 148 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X obj 165 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X obj 182 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X obj 199 191 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1; #X obj 46 36 inlet; #X obj 156 37 inlet; #X obj 156 66 max 1; #X connect 5 0 8 0; #X connect 6 0 8 0; #X connect 7 0 5 0; #X connect 8 0 0 0; #X connect 8 1 1 0; #X connect 8 2 2 0; #X connect 8 3 3 0; #X connect 8 4 4 0; #X connect 8 5 9 0; #X connect 8 6 10 0; #X connect 8 7 11 0; #X connect 8 8 12 0; #X connect 8 9 13 0; #X connect 14 0 6 0; #X connect 15 0 16 0; #X connect 16 0 7 0; #X coords 0 -1 1 1 180 40 1 40 170; #X restore 81 300 pd display; #X obj 254 273 f 10; #X obj 254 247 b; #X text 365 425 Use the second outlet to make the urn refill automatically if it gets empty as show in the second example with a combined "clear \, bang" message.; #X obj 100 492 print urne_auto; #X obj 81 230 lurn 10; #X obj 83 425 lurn 10; #X connect 0 0 32 0; #X connect 3 0 32 0; #X connect 4 0 29 0; #X connect 4 0 32 0; #X connect 5 0 32 1; #X connect 19 0 33 0; #X connect 22 0 33 0; #X connect 23 0 22 0; #X connect 23 0 24 0; #X connect 23 1 25 0; #X connect 25 0 20 1; #X connect 26 0 25 0; #X connect 26 0 33 1; #X connect 28 0 27 1; #X connect 29 0 28 0; #X connect 32 0 1 0; #X connect 32 0 27 0; #X connect 32 1 2 0; #X connect 33 0 20 0; #X connect 33 0 31 0; #X connect 33 1 23 0;