#N struct 1002-group float x float y float dir float div float showdiv float divx float divy float p array notes 1002-note; #N struct 1002-note float x float y float filled float stem-x float stem-y float numflags array flags 1002-flag float numdots float dot float l; #N struct 1002-flag float y float h float direction; #N struct 1002-ladder float x float y array hlines 1002-hline; #N struct 1002-hline float y float l; #N canvas 341 448 588 197 10; #N canvas 283 134 552 530 \$0-staff 0; #X obj 76 266 f 0; #X obj 103 267 + 1; #X obj 76 179 t f b f; #X msg 117 243 0; #X obj 76 242 until; #X obj 76 295 t a a; #X obj 76 419 * 10; #X obj 32 146 moses 1; #X text 376 193 structs; #X obj 76 465 pack 0 400; #X obj 76 489 set \$0-hline y l; #X obj 147 218 setsize \$0-ladder hlines; #X obj 241 350 element \$0-ladder hlines; #N canvas 80 322 583 386 \$0-ladder 0; #X obj 411 254 pointer; #X obj 297 335 outlet; #X obj 297 149 inlet; #X obj 70 104 plot hlines 0 0 0 0 0; #X obj 70 64 struct \$0-ladder float x float y array hlines \$0-hline ; #X obj 297 308 append \$0-ladder x y; #X obj 297 176 unpack 20 100 s; #X msg 411 230 traverse \$1 \, bang; #X connect 0 0 5 2; #X connect 2 0 6 0; #X connect 5 0 1 0; #X connect 6 0 5 0; #X connect 6 1 5 1; #X connect 6 2 7 0; #X connect 7 0 0 0; #X restore 286 194 pd \$0-ladder; #N canvas 309 339 594 345 \$0-hline 0; #X obj 93 93 drawpolygon 0 1 0 0 l 0; #X obj 430 205 pointer; #X msg 430 182 traverse \$1 \, bang; #X obj 323 281 outlet; #X obj 323 151 unpack 0 0 s; #X obj 323 131 inlet; #X obj 94 59 struct \$0-hline float y float l; #X obj 325 255 append \$0-hline y l; #X connect 1 0 7 2; #X connect 2 0 1 0; #X connect 4 0 7 0; #X connect 4 1 7 1; #X connect 4 2 2 0; #X connect 5 0 4 0; #X connect 7 0 3 0; #X restore 453 198 pd \$0-hline; #X obj 120 48 r \$0-STAFF; #X text 354 159 spacing y lenght; #X msg 51 116 5; #X obj 113 71 t b b b b b a; #X obj 95 341 r \$0-WIDTH; #X obj 128 373 r \$0-LENGTH; #X msg 222 128 50 50; #X msg 149 125 50 200; #X obj 275 172 pack f f s; #X obj 327 33 r \$0-ROOF; #X msg 333 72 set 50 \$1; #X msg 254 79 set 50 \$1; #X obj 255 58 + 160; #X obj 251 25 r \$0-HEIGTH; #X connect 0 0 1 0; #X connect 0 0 5 0; #X connect 1 0 0 1; #X connect 2 0 4 0; #X connect 2 1 3 0; #X connect 2 2 11 0; #X connect 3 0 0 1; #X connect 4 0 0 0; #X connect 5 0 6 0; #X connect 5 1 12 0; #X connect 6 0 9 0; #X connect 7 1 2 0; #X connect 9 0 10 0; #X connect 12 0 10 2; #X connect 13 0 11 1; #X connect 13 0 12 1; #X connect 15 0 18 0; #X connect 17 0 7 0; #X connect 18 0 17 0; #X connect 18 2 22 0; #X connect 18 3 17 0; #X connect 18 4 21 0; #X connect 18 5 23 2; #X connect 19 0 6 1; #X connect 20 0 9 1; #X connect 21 0 23 0; #X connect 22 0 23 0; #X connect 23 0 13 0; #X connect 24 0 25 0; #X connect 24 0 27 1; #X connect 25 0 21 0; #X connect 26 0 22 0; #X connect 27 0 26 0; #X connect 28 0 27 0; #X restore 274 40 pd \$0-staff; #N canvas 0 506 503 195 \$0-flag 0; #X text 299 58 direction should be 5 or -5; #X obj 86 85 struct \$0-flag float y float h float direction; #X obj 83 119 drawpolygon 0 2 0 0 h direction; #X text 302 33 h = 6 single note; #X restore 276 117 pd \$0-flag; #X obj 10 7 inlet; #X obj 17 64 outlet; #N canvas 132 197 438 484 \$0-SCORE 1; #X obj 38 430 outlet; #X obj 36 25 inlet; #X obj 38 407 bang; #X obj 36 133 f 0; #X obj 66 133 + 1; #X obj 36 47 bang; #X msg 58 89 0; #X obj 36 67 t b b b; #X obj 93 86 s \$0-INIT; #X obj 36 160 s \$0-TIME; #X obj 35 215 r \$0-TIME; #X obj 35 239 select 0; #X obj 121 24 inlet; #X msg 121 45 stop; #N canvas 364 196 474 394 \$0-init 0; #X obj 55 30 inlet; #X obj 55 56 t b b b b b b b b b b b b b b b b; #X obj 126 259 s \$0-METRO; #X obj 180 192 s \$0-SPEED; #X msg 306 83 \; pd dsp 1; #X obj 366 161 s \$0-VOL; #X obj 201 99 s \$0-CLEAR; #X msg 126 236 0; #X msg 176 151 5; #X obj 170 120 s \$0-ROOF; #X msg 161 92 50; #X obj 124 191 s \$0-BPM; #X msg 121 157 240; #X msg 366 140 0.5; #X obj 38 321 s \$0-ADSR; #X msg 35 281 100 5 50 10 0; #X connect 0 0 1 0; #X connect 1 0 15 0; #X connect 1 2 7 0; #X connect 1 3 8 0; #X connect 1 3 12 0; #X connect 1 8 10 0; #X connect 1 9 6 0; #X connect 1 12 13 0; #X connect 1 14 4 0; #X connect 7 0 2 0; #X connect 8 0 3 0; #X connect 10 0 9 0; #X connect 12 0 11 0; #X connect 13 0 5 0; #X connect 15 0 14 0; #X restore 296 49 pd \$0-init; #X obj 296 27 r \$0-INIT; #X msg 73 44 bang; #N canvas 331 289 530 447 \$0-close 0; #X obj 55 30 inlet; #X obj 55 56 t b b b b b b b b b b b b b b b b; #X obj 101 273 s \$0-METRO; #X obj 251 106 s \$0-VOL; #X msg 251 85 0; #X msg 101 250 0; #X obj 161 190 s \$0-AUTOPARAM; #X obj 129 654 s \$0-METRO; #X msg 161 163 0; #X msg 86 297 0; #X obj 86 321 s \$0-VIS; #X obj 53 263 del 10; #X connect 0 0 1 0; #X connect 1 1 11 0; #X connect 1 2 5 0; #X connect 1 6 8 0; #X connect 1 12 4 0; #X connect 4 0 3 0; #X connect 5 0 2 0; #X connect 8 0 6 0; #X connect 9 0 10 0; #X connect 11 0 9 0; #X restore 295 104 pd \$0-close; #X obj 295 81 r \$0-CLOSE; #X msg 249 83 bang; #X obj 35 263 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 38 380 delay 10; #X obj 38 352 r \$0-CLOSE; #X obj 167 20 r \$0-CLOSE; #X floatatom 99 137 5 0 0 0 - - -; #X floatatom 108 107 5 0 0 0 - - -; #X obj 36 107 metro 240; #X obj 172 103 r \$0-BPM; #X obj 102 258 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 180 264 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 243 256 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 325 288 s \$0-CLOSE; #X obj 317 252 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #N canvas 39 406 453 220 \$0-three 0; #X obj 128 12 inlet; #X obj 311 100 s \$0-SCORE; #X obj 129 34 t a b b b b b b b b b b b b b b b; #X obj 240 87 s \$0-SPEED; #X msg 242 59 5; #X obj 232 141 s \$0-METRO; #X msg 229 117 1; #X obj 144 117 s \$0-CURSOR; #X msg 141 93 200; #N canvas 414 104 529 346 \$0-notes 0; #X obj 26 267 s \$0-NOTE; #X obj 80 3 inlet; #N canvas 0 25 254 295 \$0-counter24 0; #X obj 129 26 inlet; #X obj 97 218 outlet; #X obj 99 123 i; #X obj 123 124 + 1; #X obj 97 148 mod 24; #X obj 30 29 r \$0-TIME; #X obj 112 180 sel 23; #X obj 98 94 spigot; #X msg 129 49 1; #X obj 170 95 0; #X connect 0 0 8 0; #X connect 2 0 4 0; #X connect 2 0 3 0; #X connect 3 0 2 1; #X connect 4 0 1 0; #X connect 4 0 6 0; #X connect 5 0 7 0; #X connect 6 0 9 0; #X connect 7 0 2 0; #X connect 8 0 7 1; #X connect 9 0 2 1; #X connect 9 0 7 1; #X restore 80 24 pd \$0-counter24; #X obj 82 47 select 1 5 9 13 17 21; #X msg 43 183 xy 250 50 2 3 \, len 3 \, 0 3 0 \, 20 \, 40; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 3 2 4 0; #X connect 3 4 4 0; #X connect 4 0 0 0; #X restore 66 140 pd \$0-notes; #X msg 308 79 0 1 320 150 2; #X connect 0 0 2 0; #X connect 2 0 9 0; #X connect 2 3 8 0; #X connect 2 7 6 0; #X connect 2 9 4 0; #X connect 2 12 10 0; #X connect 4 0 3 0; #X connect 6 0 5 0; #X connect 8 0 7 0; #X connect 10 0 1 0; #X restore 35 290 pd \$0-three; #N canvas 39 406 453 220 \$0-five 0; #X obj 128 12 inlet; #X obj 311 100 s \$0-SCORE; #X obj 129 34 t a b b b b b b b b b b b b b b b; #N canvas 414 104 541 358 \$0-notes 0; #X obj 26 267 s \$0-NOTE; #X obj 80 3 inlet; #N canvas 0 25 254 295 \$0-counter24 0; #X obj 129 26 inlet; #X obj 97 218 outlet; #X obj 99 123 i; #X obj 123 124 + 1; #X obj 97 148 mod 24; #X obj 30 29 r \$0-TIME; #X obj 112 180 sel 23; #X obj 98 94 spigot; #X msg 129 49 1; #X obj 170 95 0; #X connect 0 0 8 0; #X connect 2 0 4 0; #X connect 2 0 3 0; #X connect 3 0 2 1; #X connect 4 0 1 0; #X connect 4 0 6 0; #X connect 5 0 7 0; #X connect 6 0 9 0; #X connect 7 0 2 0; #X connect 8 0 7 1; #X connect 9 0 2 1; #X connect 9 0 7 1; #X restore 80 24 pd \$0-counter24; #X obj 82 47 select 1 5 9 13 17 21; #X msg 43 182 xy 250 50 2 5 \, len 5 \, 0 5 0 \, 12 \, 24 \, 36 \, 48; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 3 2 4 0; #X connect 3 4 4 0; #X connect 4 0 0 0; #X restore 66 140 pd \$0-notes; #X msg 307 78 1 1 320 150 2; #X connect 0 0 2 0; #X connect 2 0 3 0; #X connect 2 12 4 0; #X connect 4 0 1 0; #X restore 105 290 pd \$0-five; #N canvas 39 406 465 232 \$0-seven 0; #X obj 128 12 inlet; #X obj 311 100 s \$0-SCORE; #X obj 129 34 t a b b b b b b b b b b b b b b b; #N canvas 414 104 553 370 \$0-notes 0; #X obj 26 267 s \$0-NOTE; #X obj 80 3 inlet; #N canvas 0 25 262 303 \$0-counter24 0; #X obj 129 26 inlet; #X obj 97 218 outlet; #X obj 99 123 i; #X obj 123 124 + 1; #X obj 97 148 mod 24; #X obj 30 29 r \$0-TIME; #X obj 112 180 sel 23; #X obj 98 94 spigot; #X msg 129 49 1; #X obj 170 95 0; #X connect 0 0 8 0; #X connect 2 0 4 0; #X connect 2 0 3 0; #X connect 3 0 2 1; #X connect 4 0 1 0; #X connect 4 0 6 0; #X connect 5 0 7 0; #X connect 6 0 9 0; #X connect 7 0 2 0; #X connect 8 0 7 1; #X connect 9 0 2 1; #X connect 9 0 7 1; #X restore 80 24 pd \$0-counter24; #X obj 82 47 select 1 5 9 13 17 21; #X msg 43 181 xy 250 50 2 7 \, len 7 \, 0 7 0 \, 9 \, 17 \, 26 \, 34 \, 43 \, 51; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 3 2 4 0; #X connect 3 4 4 0; #X connect 4 0 0 0; #X restore 66 140 pd \$0-notes; #X msg 307 78 2 1 320 150 2; #X connect 0 0 2 0; #X connect 2 0 3 0; #X connect 2 12 4 0; #X connect 4 0 1 0; #X restore 171 291 pd \$0-seven; #N canvas 39 406 461 228 \$0-eleven 0; #X obj 128 12 inlet; #X obj 311 100 s \$0-SCORE; #X obj 129 34 t a b b b b b b b b b b b b b b b; #N canvas 456 107 549 366 \$0-notes 0; #X obj 26 267 s \$0-NOTE; #X obj 80 3 inlet; #N canvas 0 25 254 295 \$0-counter24 0; #X obj 129 26 inlet; #X obj 97 218 outlet; #X obj 99 123 i; #X obj 123 124 + 1; #X obj 97 148 mod 24; #X obj 30 29 r \$0-TIME; #X obj 112 180 sel 23; #X obj 98 94 spigot; #X msg 129 49 1; #X obj 170 95 0; #X connect 0 0 8 0; #X connect 2 0 4 0; #X connect 2 0 3 0; #X connect 3 0 2 1; #X connect 4 0 1 0; #X connect 4 0 6 0; #X connect 5 0 7 0; #X connect 6 0 9 0; #X connect 7 0 2 0; #X connect 8 0 7 1; #X connect 9 0 2 1; #X connect 9 0 7 1; #X restore 80 24 pd \$0-counter24; #X obj 82 47 select 1 5 9 13 17 21; #X msg 43 181 xy 250 50 2 11 \, len 11 \, 0 11 0 \, 5 \, 11 \, 16 \, 22 \, 27 \, 33 \, 38 \, 43 \, 49 \, 55 \,; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 3 0 4 0; #X connect 3 2 4 0; #X connect 3 4 4 0; #X connect 4 0 0 0; #X restore 66 140 pd \$0-notes; #X msg 307 78 3 1 320 150 2; #X connect 0 0 2 0; #X connect 2 0 3 0; #X connect 2 12 4 0; #X connect 4 0 1 0; #X restore 243 291 pd \$0-eleven; #X obj 102 240 select 23; #X obj 180 239 select 47; #X obj 243 238 select 71; #X obj 317 234 select 155; #X connect 1 0 5 0; #X connect 2 0 0 0; #X connect 3 0 4 0; #X connect 3 0 9 0; #X connect 3 0 24 0; #X connect 4 0 3 1; #X connect 5 0 7 0; #X connect 6 0 3 1; #X connect 7 0 26 0; #X connect 7 1 6 0; #X connect 7 2 8 0; #X connect 10 0 11 0; #X connect 11 0 20 0; #X connect 11 1 37 0; #X connect 12 0 13 0; #X connect 13 0 19 0; #X connect 13 0 26 0; #X connect 15 0 14 0; #X connect 16 0 7 0; #X connect 18 0 17 0; #X connect 19 0 17 0; #X connect 20 0 33 0; #X connect 21 0 2 0; #X connect 22 0 21 0; #X connect 23 0 13 0; #X connect 25 0 26 1; #X connect 26 0 3 0; #X connect 27 0 25 0; #X connect 28 0 34 0; #X connect 29 0 35 0; #X connect 30 0 36 0; #X connect 32 0 31 0; #X connect 37 0 28 0; #X connect 37 1 38 0; #X connect 38 0 29 0; #X connect 38 1 39 0; #X connect 39 0 30 0; #X connect 39 1 40 0; #X connect 40 0 32 0; #X restore 60 40 pd \$0-SCORE; #X msg 60 18 bang; #X msg 125 17 stop; #N canvas 346 0 543 467 \$0-display 0; #X obj 296 125 t b a; #X msg 296 150 0; #X obj 297 371 s \$0-update; #X obj 296 53 r \$0-INIT; #X obj 24 1 r \$0-SCORE; #N canvas 0 0 359 254 \$0-pd-dollar0-name 0; #X obj 126 45 inlet; #X text 125 25 In: subpatch-name; #X obj 126 153 makefilename pd-%s; #X obj 126 73 list; #X obj 126 101 symbol; #X obj 126 176 outlet; #X obj 126 127 makefilename \$0-%s; #X connect 0 0 3 0; #X connect 2 0 5 0; #X connect 3 0 4 0; #X connect 4 0 6 0; #X connect 6 0 2 0; #X restore 57 128 pd \$0-pd-dollar0-name; #X obj 104 256 s \$0-STAFF; #X msg 28 148 \$2; #X obj 28 183 pack f s; #X msg 88 60 \$3; #X obj 91 84 s \$0-LENGTH; #X obj 165 82 s \$0-HEIGTH; #X msg 162 58 \$4; #X msg 28 234 \; \$2 vis \$1; #X obj 29 23 t a a a a; #X msg 132 182 \; \$1 clear; #X obj 75 154 t a a a; #N canvas 3 2 457 332 \$0-0-display 0; #X scalar 1002-group 270 200 0 3 1 79.8333 -35 0 \; 0 0 0 3 -20 0 0 999 3 \; 0 0 0 \; \; 106 20 0 3 -40 0 0 999 3 \; 0 0 0 \; \; 213 40 0 3 -60 0 0 999 3 \; 0 0 0 \; \; \;; #X scalar 1002-group 240 50 2 3 1 79.8333 -35 1 \; 0 0 0 3 -20 0 0 999 3 \; 0 0 0 \; \; 106 20 0 3 -40 0 0 999 3 \; 0 0 0 \; \; 213 40 0 3 -60 0 0 999 3 \; 0 0 0 \; \; \;; #X scalar 1002-group 45 135 3 3 1 79.8333 -35 0 \; 0 0 0 3 -20 0 0 999 3 \; 0 0 0 \; \; 106 20 0 3 -40 0 0 999 3 \; 0 0 0 \; \; 213 40 0 3 -60 0 0 999 3 \; 0 0 0 \; \; \;; #X scalar 1002-ladder 50 200 \; 0 320 \; 10 320 \; 20 320 \; 30 320 \; 40 320 \; \;; #X scalar 1002-ladder 50 50 \; 0 320 \; 10 320 \; 20 320 \; 30 320 \; 40 320 \; \;; #X restore 53 318 pd \$0-0-display; #N canvas 519 370 509 402 \$0-3-display 0; #X scalar 1002-group 300 200 0 11 1 137.727 -35 0 \; 0 0 0 3 -20 1 0 999 11 \; 0 29.0909 0 \; \; 29 5 0 3 -25 1 0 999 11 \; 0 29.0909 0 \; \; 58 11 0 3 -31 1 0 999 11 \; 0 29.0909 0 \; \; 87 16 0 3 -36 1 0 999 11 \; 0 29.0909 0 \; \; 116 22 0 3 -42 1 0 999 11 \; 0 29.0909 0 \; \; 145 27 0 3 -47 1 0 999 11 \; 0 29.0909 0 \; \; 174 33 0 3 -53 1 0 999 11 \; 0 29.0909 0 \; \; 203 38 0 3 -58 1 0 999 11 \; 0 29.0909 0 \; \; 232 43 0 3 -63 1 0 999 11 \; 0 29.0909 0 \; \; 261 49 0 3 -69 1 0 999 11 \; 0 29.0909 0 \; \; 290 55 0 3 -75 1 0 999 11 \; 0 -14.5455 0 \; \; \;; #X scalar 1002-group 210 50 2 11 1 137.727 -35 1 \; 0 0 0 3 -20 1 0 999 11 \; 0 29.0909 0 \; \; 29 5 0 3 -25 1 0 999 11 \; 0 29.0909 0 \; \; 58 11 0 3 -31 1 0 999 11 \; 0 29.0909 0 \; \; 87 16 0 3 -36 1 0 999 11 \; 0 29.0909 0 \; \; 116 22 0 3 -42 1 0 999 11 \; 0 29.0909 0 \; \; 145 27 0 3 -47 1 0 999 11 \; 0 29.0909 0 \; \; 174 33 0 3 -53 1 0 999 11 \; 0 29.0909 0 \; \; 203 38 0 3 -58 1 0 999 11 \; 0 29.0909 0 \; \; 232 43 0 3 -63 1 0 999 11 \; 0 29.0909 0 \; \; 261 49 0 3 -69 1 0 999 11 \; 0 29.0909 0 \; \; 290 55 0 3 -75 1 0 999 11 \; 0 -14.5455 0 \; \; \;; #X scalar 1002-group 45 165 3 11 1 137.727 -35 0 \; 0 0 0 3 -20 1 0 999 11 \; 0 45.7143 0 \; \; 29 5 0 3 -25 1 0 999 11 \; 0 29.0909 0 \; \; 58 11 0 3 -31 1 0 999 11 \; 0 29.0909 0 \; \; 87 16 0 3 -36 1 0 999 11 \; 0 29.0909 0 \; \; 116 22 0 3 -42 1 0 999 11 \; 0 29.0909 0 \; \; 145 27 0 3 -47 1 0 999 11 \; 0 29.0909 0 \; \; 174 33 0 3 -53 1 0 999 11 \; 0 29.0909 0 \; \; 203 38 0 3 -58 1 0 999 11 \; 0 29.0909 0 \; \; 232 43 0 3 -63 1 0 999 11 \; 0 29.0909 0 \; \; 261 49 0 3 -69 1 0 999 11 \; 0 29.0909 0 \; \; 290 55 0 3 -75 1 0 999 11 \; 0 -14.5455 0 \; \; \;; #X scalar 1002-ladder 50 200 \; 0 320 \; 10 320 \; 20 320 \; 30 320 \; 40 320 \; \;; #X scalar 1002-ladder 50 50 \; 0 320 \; 10 320 \; 20 320 \; 30 320 \; 40 320 \; \;; #X restore 54 377 pd \$0-3-display; #N canvas 0 386 501 356 \$0-2-display 0; #X scalar 1002-group 290 200 0 7 1 125.571 -35 0 \; 0 0 0 3 -20 0 0 999 7 \; 0 0 0 \; \; 45 9 0 3 -29 0 0 999 7 \; 0 0 0 \; \; 91 17 0 3 -37 0 0 999 7 \; 0 0 0 \; \; 137 26 0 3 -46 0 0 999 7 \; 0 0 0 \; \; 182 34 0 3 -54 0 0 999 7 \; 0 0 0 \; \; 228 43 0 3 -63 0 0 999 7 \; 0 0 0 \; \; 274 51 0 3 -71 0 0 999 7 \; 0 0 0 \; \; \;; #X scalar 1002-group 220 50 2 7 1 125.571 -35 1 \; 0 0 0 3 -20 0 0 999 7 \; 0 0 0 \; \; 45 9 0 3 -29 0 0 999 7 \; 0 0 0 \; \; 91 17 0 3 -37 0 0 999 7 \; 0 0 0 \; \; 137 26 0 3 -46 0 0 999 7 \; 0 0 0 \; \; 182 34 0 3 -54 0 0 999 7 \; 0 0 0 \; \; 228 43 0 3 -63 0 0 999 7 \; 0 0 0 \; \; 274 51 0 3 -71 0 0 999 7 \; 0 0 0 \; \; \;; #X scalar 1002-group 45 155 3 7 1 125.571 -35 0 \; 0 0 0 3 -20 0 0 999 7 \; 0 0 0 \; \; 45 9 0 3 -29 0 0 999 7 \; 0 0 0 \; \; 91 17 0 3 -37 0 0 999 7 \; 0 0 0 \; \; 137 26 0 3 -46 0 0 999 7 \; 0 0 0 \; \; 182 34 0 3 -54 0 0 999 7 \; 0 0 0 \; \; 228 43 0 3 -63 0 0 999 7 \; 0 0 0 \; \; 274 51 0 3 -71 0 0 999 7 \; 0 0 0 \; \; \;; #X scalar 1002-ladder 50 200 \; 0 320 \; 10 320 \; 20 320 \; 30 320 \; 40 320 \; \;; #X scalar 1002-ladder 50 50 \; 0 320 \; 10 320 \; 20 320 \; 30 320 \; 40 320 \; \;; #X restore 54 357 pd \$0-2-display; #N canvas 543 4 485 349 \$0-1-display 0; #X scalar 1002-group 280 200 0 5 1 112 -35 0 \; 0 0 0 3 -20 0 0 999 5 \; 0 0 0 \; \; 64 12 0 3 -32 0 0 999 5 \; 0 0 0 \; \; 128 24 0 3 -44 0 0 999 5 \; 0 0 0 \; \; 192 36 0 3 -56 0 0 999 5 \; 0 0 0 \; \; 256 48 0 3 -68 0 0 999 5 \; 0 0 0 \; \; \;; #X scalar 1002-group 230 50 2 5 1 112 -35 1 \; 0 0 0 3 -20 0 0 999 5 \; 0 0 0 \; \; 64 12 0 3 -32 0 0 999 5 \; 0 0 0 \; \; 128 24 0 3 -44 0 0 999 5 \; 0 0 0 \; \; 192 36 0 3 -56 0 0 999 5 \; 0 0 0 \; \; 256 48 0 3 -68 0 0 999 5 \; 0 0 0 \; \; \;; #X scalar 1002-group 45 145 3 5 1 112 -35 0 \; 0 0 0 3 -20 0 0 999 5 \; 0 0 0 \; \; 64 12 0 3 -32 0 0 999 5 \; 0 0 0 \; \; 128 24 0 3 -44 0 0 999 5 \; 0 0 0 \; \; 192 36 0 3 -56 0 0 999 5 \; 0 0 0 \; \; 256 48 0 3 -68 0 0 999 5 \; 0 0 0 \; \; \;; #X scalar 1002-ladder 50 200 \; 0 320 \; 10 320 \; 20 320 \; 30 320 \; 40 320 \; \;; #X scalar 1002-ladder 50 50 \; 0 320 \; 10 320 \; 20 320 \; 30 320 \; 40 320 \; \;; #X restore 54 338 pd \$0-1-display; #X msg 57 103 \$1-display; #X msg 364 231 1; #X msg 393 230 2; #X msg 423 229 3; #X msg 331 229 0; #N canvas 0 0 375 270 \$0-pd-dollar0-name 0; #X obj 126 45 inlet; #X text 125 25 In: subpatch-name; #X obj 126 153 makefilename pd-%s; #X obj 126 176 outlet; #X obj 126 127 makefilename \$0-%d; #X connect 0 0 4 0; #X connect 2 0 3 0; #X connect 4 0 2 0; #X restore 343 257 pd \$0-pd-dollar0-name; #X obj 353 193 t b b b b a; #X obj 343 286 pack s s f; #X obj 439 80 r \$0-VIS; #X obj 420 79 tgl 15 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0 1; #X obj 353 151 t a b; #X obj 380 170 symbol; #X msg 343 309 \; \$1-display \$2 \$3; #X obj 421 108 t a b; #X msg 392 81 0; #X msg 443 131 symbol vis; #X msg 284 96 symbol clear; #X msg 196 40 \$5; #X obj 197 60 s \$0-RANGE; #X text 94 -1 score number \, vis \, length \, heigth \, range; #X connect 0 0 1 0; #X connect 0 1 32 0; #X connect 1 0 2 0; #X connect 1 0 27 0; #X connect 3 0 35 0; #X connect 3 0 37 0; #X connect 4 0 14 0; #X connect 5 0 16 0; #X connect 7 0 8 0; #X connect 8 0 13 0; #X connect 9 0 10 0; #X connect 12 0 11 0; #X connect 14 0 7 0; #X connect 14 1 21 0; #X connect 14 2 9 0; #X connect 14 2 12 0; #X connect 14 3 38 0; #X connect 16 0 8 1; #X connect 16 1 6 0; #X connect 16 2 15 0; #X connect 21 0 5 0; #X connect 22 0 26 0; #X connect 23 0 26 0; #X connect 24 0 26 0; #X connect 25 0 26 0; #X connect 26 0 28 0; #X connect 27 0 25 0; #X connect 27 1 22 0; #X connect 27 2 23 0; #X connect 27 3 24 0; #X connect 27 4 28 2; #X connect 28 0 33 0; #X connect 29 0 34 0; #X connect 30 0 34 0; #X connect 31 0 27 0; #X connect 31 1 32 0; #X connect 32 0 28 1; #X connect 34 0 31 0; #X connect 34 1 36 0; #X connect 35 0 34 0; #X connect 36 0 32 1; #X connect 37 0 0 0; #X connect 38 0 39 0; #X restore 166 41 pd \$0-display; #N canvas 252 43 421 343 \$0-note 0; #X obj 17 143 drawpolygon 0 1 stem-x 0 stem-x stem-y; #X obj 16 62 filledcurve filled 0 1 -4 0 0 -3 4 0 0 3; #X text 12 174 Note: -v is broken in pd-0.39 \, display won't update until the score subpatch is refreshed e.g. by "vis 0 \, vis 1"; #X obj 19 87 filledcurve dot dot 1 7 0 7 0; #X obj 19 233 plot -v numflags flags 0 0 stem-x stem-y 0; #X obj 18 15 struct \$0-note float x float y float filled float stem-x float stem-y float numflags array flags \$0-flag float numdots float dot float l; #X restore 277 95 pd \$0-note; #N canvas 357 184 265 315 \$0-metro 0; #X obj 111 260 s \$0-GM; #X obj 129 111 i; #X obj 43 256 s \$0-STEP; #X obj 73 13 r \$0-TIME; #X obj 36 170 i; #X obj 63 170 + 1; #X obj 73 37 t b a; #X obj 175 87 * 8; #X obj 43 134 spigot; #X obj 76 109 != 7; #X obj 7 103 t b b; #X obj 157 198 r \$0-METRO; #X obj 124 226 spigot; #X obj 123 200 b; #X obj 8 77 del 30; #X connect 1 0 4 1; #X connect 1 0 2 0; #X connect 3 0 6 0; #X connect 4 0 5 0; #X connect 4 0 2 0; #X connect 4 0 9 0; #X connect 4 0 13 0; #X connect 5 0 4 1; #X connect 6 0 1 0; #X connect 6 0 14 0; #X connect 6 1 7 0; #X connect 7 0 1 1; #X connect 8 0 14 0; #X connect 9 0 8 1; #X connect 10 0 4 0; #X connect 10 1 8 0; #X connect 11 0 12 1; #X connect 12 0 0 0; #X connect 13 0 12 0; #X connect 14 0 10 0; #X restore 366 40 pd \$0-metro; #N canvas 456 81 489 559 \$0-audio 0; #N canvas 0 0 450 300 pan~ 0; #X text 264 126 0=left \, 1=right; #X text 260 108 Arg. 1: Panning; #X text 181 86 * ~M_PI/2; #X obj 117 85 * 1.5708; #X obj 39 172 *~ 0.7; #X obj 120 172 *~ 0.7; #X text 257 142 (not used currently); #X obj 117 60 inlet; #X obj 38 62 inlet~; #X obj 39 203 outlet~; #X obj 120 203 outlet~; #X obj 76 150 cos; #X obj 157 151 sin; #X connect 3 0 11 0; #X connect 3 0 12 0; #X connect 4 0 9 0; #X connect 5 0 10 0; #X connect 7 0 3 0; #X connect 8 0 4 0; #X connect 8 0 5 0; #X connect 11 0 4 1; #X connect 12 0 5 1; #X restore 196 381 pd pan~; #X obj 294 289 /~ 2; #X obj 130 310 /~ 2; #N canvas 0 0 450 300 pan~ 0; #X text 264 126 0=left \, 1=right; #X text 260 108 Arg. 1: Panning; #X text 181 86 * ~M_PI/2; #X obj 117 85 * 1.5708; #X obj 39 172 *~ 0.7; #X obj 120 172 *~ 0.7; #X text 257 142 (not used currently); #X obj 117 60 inlet; #X obj 38 62 inlet~; #X obj 39 203 outlet~; #X obj 120 203 outlet~; #X obj 76 150 cos; #X obj 157 151 sin; #X connect 3 0 11 0; #X connect 3 0 12 0; #X connect 4 0 9 0; #X connect 5 0 10 0; #X connect 7 0 3 0; #X connect 8 0 4 0; #X connect 8 0 5 0; #X connect 11 0 4 1; #X connect 12 0 5 1; #X restore 137 373 pd pan~; #X floatatom 276 336 5 0 0 0 - - -; #X floatatom 99 348 5 0 0 0 - - -; #X msg 93 328 0.2; #X msg 334 299 0.8; #X obj 337 277 loadbang; #X obj 47 309 loadbang; #X obj 148 514 dac~; #X obj 132 482 *~ 0.5; #X obj 184 485 *~ 0.5; #X obj 247 439 hsl 100 15 0.01 1 1 0 empty empty empty -2 -8 0 10 -262144 -1 -1 0 1; #X obj 242 409 r \$0-VOL; #X obj 164 64 catch~ \$0-SCORE1; #X obj 270 63 catch~ \$0-SCORE2; #X obj 375 64 catch~ \$0-SCORE3; #X obj 56 65 catch~ \$0-SCORE0; #X connect 0 0 11 0; #X connect 0 1 12 0; #X connect 1 0 0 0; #X connect 2 0 3 0; #X connect 3 0 11 0; #X connect 3 1 12 0; #X connect 4 0 0 1; #X connect 5 0 3 1; #X connect 6 0 5 0; #X connect 7 0 4 0; #X connect 8 0 7 0; #X connect 9 0 6 0; #X connect 11 0 10 0; #X connect 12 0 10 1; #X connect 13 0 12 1; #X connect 13 0 11 1; #X connect 14 0 13 0; #X connect 15 0 2 0; #X connect 16 0 1 0; #X connect 17 0 1 0; #X connect 18 0 2 0; #X restore 455 68 pd \$0-audio; #X text 25 143 comments megalegoland@yahoo.fr; #X obj 455 42 r \$0-PLAYNOTE; #N canvas 395 343 481 340 \$0-group 0; #X obj 46 230 s \$0newgroup; #N canvas 372 34 606 563 \$0-note-array 0; #X obj 110 2 inlet; #X obj 450 158 pointer; #N canvas 0 0 525 509 \$0-makeflag 0; #X obj 2 3 inlet; #X msg 78 319 1; #X msg 136 317 2; #X msg 200 320 3; #X msg 272 322 4; #X msg 42 318 0; #N canvas 460 299 276 232 \$0-clip-0-7 0; #X obj 136 13 inlet; #X obj 134 191 outlet; #X obj 134 163 spigot; #X obj 163 129 &; #X obj 118 59 t a a a; #X obj 145 99 >= 0; #X obj 179 98 <= 7; #X connect 0 0 4 0; #X connect 2 0 1 0; #X connect 3 0 2 1; #X connect 4 0 2 0; #X connect 4 1 5 0; #X connect 4 2 6 0; #X connect 5 0 3 0; #X connect 6 0 3 1; #X restore 34 232 pd \$0-clip-0-7; #N canvas 460 299 280 236 \$0-clip-8-15 0; #X obj 136 13 inlet; #X obj 134 191 outlet; #X obj 134 163 spigot; #X obj 163 129 &; #X obj 118 59 t a a a; #X obj 146 99 >= 8; #X obj 184 100 <= 15; #X connect 0 0 4 0; #X connect 2 0 1 0; #X connect 3 0 2 1; #X connect 4 0 2 0; #X connect 4 1 5 0; #X connect 4 2 6 0; #X connect 5 0 3 0; #X connect 6 0 3 1; #X restore 124 233 pd \$0-clip-8-15; #N canvas 460 299 280 236 \$0-clip-16-31 0; #X obj 136 13 inlet; #X obj 134 191 outlet; #X obj 134 163 spigot; #X obj 163 129 &; #X obj 118 59 t a a a; #X obj 146 99 >= 16; #X obj 184 100 <= 23; #X connect 0 0 4 0; #X connect 2 0 1 0; #X connect 3 0 2 1; #X connect 4 0 2 0; #X connect 4 1 5 0; #X connect 4 2 6 0; #X connect 5 0 3 0; #X connect 6 0 3 1; #X restore 219 231 pd \$0-clip-16-31; #N canvas 460 299 288 244 \$0-clip-32-63 0; #X obj 136 13 inlet; #X obj 134 191 outlet; #X obj 134 163 spigot; #X obj 163 129 &; #X obj 118 59 t a a a; #X obj 146 99 >= 24; #X obj 185 100 <= 31; #X connect 0 0 4 0; #X connect 2 0 1 0; #X connect 3 0 2 1; #X connect 4 0 2 0; #X connect 4 1 5 0; #X connect 4 2 6 0; #X connect 5 0 3 0; #X connect 6 0 3 1; #X restore 321 232 pd \$0-clip-32-63; #X obj 422 233 t a a; #X obj 440 261 >= 64; #X obj 426 293 spigot; #X obj 15 51 unpack f f f; #X obj 28 408 pack f f f; #X obj 43 149 outlet; #X obj 29 434 outlet; #X obj 2 320 f; #X obj 35 174 t b a a a a a; #X text 116 172 give number of flags following note length fraction divider; #X obj 2 25 t b a; #X obj 15 89 t a b; #X obj 35 118 f; #X connect 0 0 20 0; #X connect 1 0 14 1; #X connect 2 0 14 1; #X connect 3 0 14 1; #X connect 4 0 14 1; #X connect 5 0 14 1; #X connect 6 0 5 0; #X connect 7 0 1 0; #X connect 8 0 2 0; #X connect 9 0 3 0; #X connect 10 0 12 0; #X connect 10 1 11 0; #X connect 11 0 12 1; #X connect 12 0 4 0; #X connect 13 0 21 0; #X connect 13 1 22 1; #X connect 13 2 14 2; #X connect 14 0 16 0; #X connect 17 0 14 0; #X connect 18 1 6 0; #X connect 18 2 7 0; #X connect 18 3 8 0; #X connect 18 4 9 0; #X connect 18 5 10 0; #X connect 20 0 17 0; #X connect 20 1 13 0; #X connect 21 0 17 1; #X connect 21 1 22 0; #X connect 22 0 15 0; #X connect 22 0 18 0; #X restore 29 141 pd \$0-makeflag; #X msg 450 136 traverse \$1 \, bang; #X obj 105 32 route len xy; #X obj 449 60 r \$0-STAFF; #X obj 449 115 symbol; #X obj 256 131 t a b; #X obj 254 108 list; #N canvas 499 384 426 284 \$0-group-properties 0; #X obj 18 72 inlet; #X obj 12 52 plot notes 0 0 0 0 0; #X obj 17 150 outlet; #X obj 332 78 inlet; #X obj 20 183 drawnumber -v showdiv div divx divy 0; #X obj 12 13 struct \$0-group float x float y float dir float div float showdiv float divx float divy float p array notes \$0-note; #X obj 18 93 t a b; #X msg 178 102 1; #X obj 18 128 append \$0-group x y dir div p; #X connect 0 0 6 0; #X connect 3 0 8 5; #X connect 6 0 8 0; #X connect 6 1 7 0; #X connect 7 0 8 4; #X connect 8 0 2 0; #X restore 359 186 pd \$0-group-properties; #X obj 189 179 setsize \$0-group notes; #X obj 139 210 f 0; #X obj 192 209 + 1; #X msg 132 174 0; #X obj 141 232 t b a a a; #X obj 200 287 i; #X obj 36 182 t a b b a b; #X obj 200 310 t a a; #X obj 390 385 element \$0-group notes; #N canvas 360 151 470 521 \$0-makenote 0; #X obj 57 18 inlet; #X obj 36 409 outlet; #X obj 57 46 unpack f f f; #X obj 35 252 i; #X obj 300 335 * -1; #X obj 300 314 + 20; #X obj 216 312 sel 0 1; #X msg 216 335 999; #X msg 244 335 0; #X obj 10 20 inlet; #X text 218 292 dot color; #X text 311 289 stem size; #X obj 10 85 t b b; #X obj 144 22 inlet; #X obj 206 20 r \$0-LENGTH; #X obj 160 44 t b a; #X obj 167 96 / 1; #X obj 202 75 inlet; #X obj 202 97 sel 0; #X msg 48 201 0; #N canvas 450 54 318 303 \$0-accum 0; #X obj 212 193 f 0; #X obj 182 192 + 1; #X obj 212 168 0; #X obj 163 27 inlet; #X obj 183 79 route float; #X obj 166 245 outlet; #X obj 166 220 f; #X obj 217 26 inlet; #X obj 217 147 b; #X obj 163 50 t b a; #X text 148 11 add number; #X text 219 11 reset; #X connect 0 0 1 1; #X connect 1 0 0 0; #X connect 1 0 6 1; #X connect 2 0 0 0; #X connect 3 0 9 0; #X connect 4 0 1 0; #X connect 6 0 5 0; #X connect 7 0 8 0; #X connect 8 0 2 0; #X connect 9 0 6 0; #X connect 9 1 4 0; #X restore 166 143 pd \$0-accum; #X obj 202 119 t b b; #X obj 145 310 sel 0 1; #X msg 145 333 999; #X msg 173 333 0; #X text 154 261 note color; #X obj 143 280 >= 3; #X obj 300 215 spigot; #X obj 189 216 sel 0; #X msg 261 264 0; #X text 193 202 removes stem; #X text 220 171 check if note has a stem; #X obj 189 173 >= 2; #X obj 212 451 outlet; #X obj 19 313 t a a; #X obj 166 74 i 335; #X obj 35 384 pack 0 0 999 1 999 -20 3; #X connect 0 0 2 0; #X connect 2 0 27 0; #X connect 2 0 36 1; #X connect 2 1 36 3; #X connect 2 2 6 0; #X connect 3 0 34 0; #X connect 4 0 36 5; #X connect 5 0 4 0; #X connect 6 0 7 0; #X connect 6 1 8 0; #X connect 7 0 36 4; #X connect 8 0 36 4; #X connect 9 0 12 0; #X connect 12 0 8 0; #X connect 12 1 3 0; #X connect 13 0 15 0; #X connect 13 0 26 0; #X connect 14 0 35 1; #X connect 15 0 35 0; #X connect 15 1 16 1; #X connect 15 1 32 0; #X connect 16 0 20 0; #X connect 17 0 18 0; #X connect 18 0 21 0; #X connect 19 0 3 1; #X connect 20 0 3 1; #X connect 21 0 19 0; #X connect 21 1 20 1; #X connect 22 0 23 0; #X connect 22 1 24 0; #X connect 23 0 36 2; #X connect 24 0 36 2; #X connect 26 0 22 0; #X connect 27 0 5 0; #X connect 28 0 29 0; #X connect 29 0 4 0; #X connect 32 0 27 1; #X connect 32 0 28 0; #X connect 34 0 36 0; #X connect 34 1 33 0; #X connect 35 0 16 0; #X connect 36 0 1 0; #X restore 66 367 pd \$0-makenote; #X obj 227 332 element \$0-group notes; #X msg 167 349 \$2; #X obj 132 423 +; #X obj 64 495 set \$0-note x y filled numflags dot stem-y stem-x; #N canvas 451 60 423 347 \$0-makedivnumber 0; #X obj 134 26 inlet; #X obj 276 22 inlet; #X obj 134 64 / 2; #X obj 276 69 get \$0-group div; #X obj 126 264 set \$0-group showdiv divx divy; #X obj 276 43 t a a; #X obj 113 167 sel 0; #X obj 126 228 pack 0 f -35; #X msg 109 191 0; #X msg 134 192 1; #X obj 134 135 f; #X obj 134 94 t b a; #X connect 0 0 2 0; #X connect 1 0 5 0; #X connect 2 0 11 0; #X connect 3 0 10 1; #X connect 5 0 3 0; #X connect 5 1 4 3; #X connect 6 0 8 0; #X connect 6 1 9 0; #X connect 7 0 4 0; #X connect 8 0 7 0; #X connect 9 0 7 0; #X connect 10 0 6 0; #X connect 11 0 10 0; #X connect 11 1 7 1; #X restore 224 458 pd \$0-makedivnumber; #N canvas 456 204 509 497 \$0-draw-flag 0; #X obj 31 282 until; #X obj 32 225 clip 0 4; #X obj 31 250 t f b; #X msg 72 281 0; #X obj 31 308 f 0; #X obj 60 308 + 1; #X obj 31 334 t f f; #X obj 292 200 moses; #X obj 32 74 t f b f; #X obj 366 19 inlet; #X obj 267 292 set \$0-note stem-x; #X obj 292 173 get \$0-note stem-y; #X obj 78 97 setsize \$0-note flags; #X obj 306 354 element \$0-note flags; #X obj 33 28 inlet; #X obj 31 373 * 4; #X msg 227 324 5; #X msg 252 324 -5; #X msg 283 262 3; #X msg 312 259 -3; #X obj 31 411 pack 0 6 10; #X obj 194 374 i; #X obj 201 221 inlet; #X obj 122 136 inlet; #X msg 115 374 0; #X msg 152 373 6; #N canvas 572 73 374 413 \$0-flagtype 0; #X obj 271 71 inlet; #X obj 146 225 <= 1; #X obj 78 45 inlet; #X obj 115 278 spigot; #X obj 30 263 spigot; #X obj 61 228 >= 2; #X obj 115 226 b; #X obj 119 104 r \$0-LENGTH; #X obj 83 103 t b a; #X obj 89 153 / 1; #X obj 30 387 outlet; #X text 66 27 note's length; #X text 270 55 number of notes; #X obj 211 32 inlet; #X text 185 17 note number; #X obj 203 230 != 2; #X obj 114 316 outlet; #X obj 201 273 sel 0; #X obj 187 317 f; #X obj 163 278 / -2; #X obj 83 75 f; #X obj 177 77 t b a; #X obj 262 101 t b a a; #X obj 280 158 - 1; #X obj 270 266 outlet; #X obj 89 131 f 330; #X connect 0 0 22 0; #X connect 1 0 3 1; #X connect 2 0 20 1; #X connect 3 0 16 0; #X connect 4 0 10 0; #X connect 5 0 4 1; #X connect 6 0 3 0; #X connect 7 0 25 1; #X connect 8 0 25 0; #X connect 8 1 9 1; #X connect 9 0 6 0; #X connect 9 0 4 0; #X connect 9 0 19 0; #X connect 9 0 24 0; #X connect 13 0 21 0; #X connect 15 0 4 1; #X connect 15 0 3 1; #X connect 15 0 17 0; #X connect 17 0 18 0; #X connect 18 0 10 0; #X connect 19 0 18 1; #X connect 20 0 8 0; #X connect 21 0 20 0; #X connect 21 1 15 0; #X connect 22 1 23 0; #X connect 22 2 1 0; #X connect 22 2 5 0; #X connect 23 0 15 1; #X connect 25 0 9 0; #X restore 115 323 pd \$0-flagtype; #X text 104 120 length fraction; #X text 353 3 pointer; #X text 23 11 number of flags; #X obj 149 275 inlet; #X text 127 258 note number; #X text 172 201 number of notes; #X obj 157 410 outlet; #X obj 251 409 outlet; #X obj 31 445 set \$0-flag y h direction; #X obj 153 171 set \$0-note l; #X obj 117 171 f; #X connect 0 0 4 0; #X connect 1 0 2 0; #X connect 2 0 0 0; #X connect 2 1 3 0; #X connect 3 0 4 1; #X connect 4 0 5 0; #X connect 4 0 6 0; #X connect 5 0 4 1; #X connect 6 0 15 0; #X connect 6 1 13 0; #X connect 7 0 16 0; #X connect 7 0 18 0; #X connect 7 1 17 0; #X connect 7 1 19 0; #X connect 8 0 1 0; #X connect 8 1 37 0; #X connect 8 2 12 0; #X connect 9 0 12 1; #X connect 9 0 10 1; #X connect 9 0 13 1; #X connect 9 0 11 0; #X connect 9 0 36 1; #X connect 11 0 7 0; #X connect 13 0 35 3; #X connect 14 0 8 0; #X connect 15 0 20 0; #X connect 16 0 21 1; #X connect 17 0 21 1; #X connect 18 0 10 0; #X connect 19 0 10 0; #X connect 20 0 35 0; #X connect 21 0 20 2; #X connect 22 0 26 2; #X connect 23 0 37 1; #X connect 24 0 20 2; #X connect 25 0 20 1; #X connect 26 0 20 1; #X connect 26 0 24 0; #X connect 26 0 33 0; #X connect 26 1 21 0; #X connect 26 1 25 0; #X connect 26 2 34 0; #X connect 30 0 26 1; #X connect 37 0 36 0; #X connect 37 0 26 0; #X restore 160 393 pd \$0-draw-flag; #X obj 110 74 t a a b; #X connect 0 0 4 0; #X connect 1 0 9 1; #X connect 2 0 16 0; #X connect 2 1 19 2; #X connect 2 1 25 1; #X connect 3 0 1 0; #X connect 4 0 26 0; #X connect 4 1 8 1; #X connect 4 2 2 0; #X connect 5 0 6 1; #X connect 6 0 3 0; #X connect 7 0 9 0; #X connect 7 1 6 0; #X connect 8 0 7 0; #X connect 9 0 10 1; #X connect 9 0 18 1; #X connect 9 0 20 1; #X connect 9 0 24 1; #X connect 11 0 12 0; #X connect 11 0 14 0; #X connect 12 0 11 1; #X connect 13 0 11 1; #X connect 14 1 19 3; #X connect 14 2 18 0; #X connect 14 3 15 1; #X connect 15 0 17 0; #X connect 16 0 21 0; #X connect 16 1 15 0; #X connect 16 2 19 0; #X connect 16 3 19 1; #X connect 16 4 11 0; #X connect 17 0 25 2; #X connect 17 1 20 0; #X connect 18 0 23 7; #X connect 19 0 23 0; #X connect 19 1 22 1; #X connect 20 0 25 4; #X connect 21 0 25 0; #X connect 22 0 24 0; #X connect 25 0 22 0; #X connect 26 0 13 0; #X connect 26 0 25 3; #X connect 26 1 10 0; #X connect 26 2 8 0; #X restore 142 266 pd \$0-note-array; #X obj 143 231 r \$0newgroup; #X obj 45 93 r \$0-NOTE; #X text 28 52 len : ; #X text 27 69 :; #X text 26 26 xy : nothing>; #X text 113 68 note \, ; #X msg 78 171 xy 50 320 0 0 \, len 3 \, 20 16 0 \, 30 8 \, 0; #X connect 2 0 1 0; #X connect 3 0 0 0; #X connect 8 0 0 0; #X restore 277 68 pd \$0-group; #N canvas 406 112 531 522 \$0-Gmove0 0; #N canvas 270 142 371 558 \$0-Gpointer 0; #X msg 95 466 next; #X obj 107 375 + 1; #X obj 95 447 until; #X obj 129 509 outlet; #X obj 138 420 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X msg 109 349 1; #X obj 60 425 moses 1; #X obj 80 374 i 1; #N canvas 0 0 379 274 \$0-pd-dollar0-name 0; #X obj 126 45 inlet; #X text 125 25 In: subpatch-name; #X obj 126 153 makefilename pd-%s; #X obj 126 73 list; #X obj 126 101 symbol; #X obj 126 176 outlet; #X obj 126 127 makefilename \$0-%s; #X connect 0 0 3 0; #X connect 2 0 5 0; #X connect 3 0 4 0; #X connect 4 0 6 0; #X connect 6 0 2 0; #X restore 152 339 pd \$0-pd-dollar0-name; #X obj 61 405 i 1; #X obj 10 208 r \$0-GM; #X obj 152 275 spigot; #X msg 156 239 1; #X obj 152 298 b; #X obj 127 486 pointer; #X obj 43 154 t b a b; #X obj 184 112 inlet; #X obj 44 62 inlet; #X obj 151 381 t b b a; #X msg 152 360 traverse \$1; #X obj 184 164 t a b a; #X msg 211 273 symbol \$1-display; #X obj 152 318 symbol; #X msg 193 226 0; #X connect 0 0 14 0; #X connect 1 0 7 1; #X connect 2 0 0 0; #X connect 4 0 2 1; #X connect 5 0 7 1; #X connect 6 1 2 0; #X connect 7 0 1 0; #X connect 7 0 9 1; #X connect 8 0 19 0; #X connect 9 0 6 0; #X connect 10 0 11 0; #X connect 11 0 13 0; #X connect 12 0 11 1; #X connect 13 0 22 0; #X connect 14 0 3 0; #X connect 15 0 12 0; #X connect 15 2 7 0; #X connect 16 0 20 0; #X connect 17 0 15 0; #X connect 18 0 9 0; #X connect 18 2 14 0; #X connect 19 0 18 0; #X connect 20 0 23 0; #X connect 20 1 5 0; #X connect 20 2 21 0; #X connect 21 0 22 1; #X connect 22 0 8 0; #X connect 23 0 11 1; #X restore 54 150 pd \$0-Gpointer; #X obj 39 125 spigot; #X obj 141 86 spigot; #N canvas 0 0 474 324 \$0-demux4 0; #X obj 142 23 inlet; #X obj 280 25 inlet; #X obj 97 248 outlet; #X obj 152 248 outlet; #X obj 212 248 outlet; #X obj 275 251 outlet; #X obj 205 56 == 0; #X obj 112 126 spigot; #X obj 235 67 == 1; #X obj 186 125 spigot; #X obj 265 66 == 2; #X obj 258 123 spigot; #X obj 296 65 == 3; #X obj 62 130 spigot; #X connect 0 0 11 0; #X connect 0 0 9 0; #X connect 0 0 7 0; #X connect 0 0 13 0; #X connect 1 0 12 0; #X connect 1 0 10 0; #X connect 1 0 8 0; #X connect 1 0 6 0; #X connect 6 0 13 1; #X connect 7 0 3 0; #X connect 8 0 7 1; #X connect 9 0 4 0; #X connect 10 0 9 1; #X connect 11 0 5 0; #X connect 12 0 11 1; #X connect 13 0 2 0; #X restore 53 306 pd \$0-demux4; #X obj 82 272 get \$0-group dir; #X obj 54 248 t a a; #X text 20 415 move the note group; #X text 196 271 get direction to move note \, 0 ->E 1->N 2->W 3->S ; #N canvas 0 0 440 241 \$0-downward 0; #X obj 145 4 inlet; #X obj 214 139 spigot; #X obj 212 116 sel 200; #X obj 72 48 get \$0-note y x; #X msg 219 163 0; #X obj 282 103 <= 300; #X obj 101 158 set \$0-group y; #X obj 260 182 set \$0-group dir; #X obj 308 80 r \$0-LENGTH; #X obj 257 18 r \$0-HEIGTH; #X obj 81 92 + 1; #X obj 96 72 r \$0-SPEED; #X obj 329 20 r \$0-ROOF; #X obj 288 54 + 50; #X obj 145 23 t a a; #X connect 0 0 14 0; #X connect 1 0 4 0; #X connect 2 0 1 0; #X connect 3 0 10 0; #X connect 3 1 5 0; #X connect 4 0 7 0; #X connect 5 0 1 1; #X connect 8 0 5 1; #X connect 9 0 13 0; #X connect 10 0 2 0; #X connect 10 0 6 0; #X connect 11 0 10 1; #X connect 12 0 13 1; #X connect 13 0 2 1; #X connect 14 0 3 0; #X connect 14 1 7 1; #X connect 14 1 6 1; #X restore 343 393 pd \$0-downward; #N canvas 63 53 438 589 \$0-backward 0; #X obj 69 18 inlet; #N canvas 0 0 462 312 \$0-group-direction 0; #X obj 160 23 inlet; #X obj 114 143 outlet; #X obj 263 227 outlet; #X obj 225 180 spigot; #X obj 223 157 sel 50; #X msg 225 233 3; #X obj 269 156 <= 200; #X obj 186 301 set \$0-group x; #X obj 226 255 set \$0-group dir; #X obj 169 82 get \$0-group x y; #X obj 296 302 r \$0GPOINTER; #X obj 317 232 r \$0GPOINTER; #X obj 300 132 r \$0-HEIGTH; #X obj 201 104 r \$0-SPEED; #X obj 225 200 t b b; #X obj 185 149 - 1; #X connect 0 0 9 0; #X connect 3 0 14 0; #X connect 4 0 3 0; #X connect 5 0 8 0; #X connect 6 0 3 1; #X connect 9 0 1 0; #X connect 9 0 4 0; #X connect 9 0 15 0; #X connect 9 1 6 0; #X connect 10 0 7 1; #X connect 11 0 8 1; #X connect 12 0 6 1; #X connect 13 0 15 1; #X connect 14 0 5 0; #X connect 14 1 2 0; #X connect 15 0 7 0; #X restore 281 83 pd \$0-group-direction; #X obj 259 118 get \$0-group x p; #X obj 236 170 <= 200; #X obj 265 139 r \$0-CURSOR; #X obj 273 202 &; #X obj 194 205 spigot; #X obj 194 239 t b b a b a a; #X obj 315 251 t b a; #X msg 315 279 0; #X obj 315 298 set \$0-group p; #X obj 157 301 element \$0-group notes; #X obj 237 56 t a a a; #X obj 157 322 get \$0-note l x y; #X obj 200 416 i; #X obj 164 344 t b a b a; #X obj 334 383 r \$0-BPM; #X obj 335 403 * 8; #X obj 273 449 /; #X obj 275 404 t b a; #X obj 271 468 t a a; #N canvas 409 91 518 368 \$0-groupsize 0; #X obj 156 9 inlet; #X obj 246 8 inlet; #X obj 195 289 outlet; #X obj 187 44 getsize \$0-group notes; #X obj 179 192 spigot; #N canvas 0 0 454 304 \$0-cnt 0; #X obj 90 107 i; #X obj 116 108 + 1; #X obj 97 22 inlet; #X obj 95 277 outlet; #X obj 144 23 inlet; #X obj 94 176 mod 4; #X msg 127 65 0; #X connect 0 0 1 0; #X connect 0 0 5 0; #X connect 1 0 0 1; #X connect 2 0 0 0; #X connect 4 0 6 0; #X connect 4 0 5 1; #X connect 5 0 3 0; #X connect 6 0 0 1; #X restore 185 223 pd \$0-cnt; #X msg 186 140 0; #X obj 185 250 t a a; #X obj 187 78 t b a; #X msg 270 124 1; #X obj 186 107 sel; #X floatatom 228 97 5 0 0 0 - - -; #X obj 101 172 + 1; #X connect 0 0 4 0; #X connect 1 0 3 0; #X connect 1 0 9 0; #X connect 3 0 8 0; #X connect 4 0 5 0; #X connect 5 0 7 0; #X connect 6 0 4 1; #X connect 7 0 2 0; #X connect 7 1 12 0; #X connect 8 1 10 1; #X connect 8 1 5 1; #X connect 9 0 4 1; #X connect 10 0 6 0; #X connect 12 0 10 0; #X restore 161 276 pd \$0-groupsize; #X floatatom 307 496 5 0 0 0 - - -; #X obj 273 430 f 1920; #X obj 31 384 del 125; #X obj 273 382 clip 1 64; #X obj 173 505 pack f 80 250; #X text 62 0 pointer; #X obj 208 481 inlet; #X text 199 463 range; #X obj 173 540 outlet; #X connect 0 0 12 0; #X connect 2 0 3 0; #X connect 2 1 5 1; #X connect 3 0 5 0; #X connect 4 0 3 1; #X connect 5 0 6 1; #X connect 6 0 7 0; #X connect 7 1 21 0; #X connect 7 2 21 1; #X connect 7 4 11 1; #X connect 7 5 8 0; #X connect 8 0 9 0; #X connect 8 1 10 1; #X connect 9 0 10 0; #X connect 11 0 13 0; #X connect 12 0 6 0; #X connect 12 1 2 0; #X connect 12 2 1 0; #X connect 13 0 15 0; #X connect 13 2 14 1; #X connect 14 0 26 0; #X connect 15 0 24 0; #X connect 15 2 14 0; #X connect 15 3 25 0; #X connect 16 0 17 0; #X connect 17 0 23 1; #X connect 18 0 20 0; #X connect 19 0 23 0; #X connect 19 1 18 1; #X connect 20 0 24 1; #X connect 20 1 22 0; #X connect 20 1 26 2; #X connect 21 0 11 0; #X connect 23 0 18 0; #X connect 24 0 21 0; #X connect 25 0 19 0; #X connect 26 0 30 0; #X connect 28 0 26 1; #X restore 215 393 pd \$0-backward; #N canvas 25 257 380 409 \$0-upward 0; #X obj 78 2 inlet; #X obj 97 211 spigot; #X msg 97 245 2; #X obj 75 120 - 1; #X obj 182 123 >= 300; #X obj 75 360 set \$0-group y; #X obj 97 309 set \$0-group dir; #X obj 75 74 get \$0-group y x; #X obj 97 188 sel 50; #X obj 190 102 r \$0-LENGTH; #X obj 91 99 r \$0-SPEED; #X obj 102 149 r \$0-ROOF; #X msg 285 274 1; #X obj 76 33 t a a a; #X obj 183 240 b; #X obj 260 307 set \$0-group p; #X connect 0 0 13 0; #X connect 1 0 2 0; #X connect 1 0 14 0; #X connect 2 0 6 0; #X connect 3 0 5 0; #X connect 3 0 8 0; #X connect 4 0 1 1; #X connect 7 0 3 0; #X connect 7 1 4 0; #X connect 8 0 1 0; #X connect 9 0 4 1; #X connect 10 0 3 1; #X connect 11 0 8 1; #X connect 12 0 15 0; #X connect 13 0 7 0; #X connect 13 2 15 1; #X connect 13 2 5 1; #X connect 13 2 6 1; #X connect 14 0 12 0; #X restore 120 393 pd \$0-upward; #N canvas 0 94 428 235 \$0-forward 0; #X obj 103 16 inlet; #X obj 236 130 sel 300; #X msg 242 177 1; #X obj 237 151 spigot; #X obj 61 119 + 1; #X obj 36 71 get \$0-group x y; #X obj 147 204 set \$0-group dir; #X obj 47 179 set \$0-group x; #X obj 282 127 >= 100; #X obj 270 83 r \$0-LENGTH; #X obj 63 93 r \$0-SPEED; #X obj 308 104 r \$0-ROOF; #X obj 111 41 t a a; #X connect 0 0 12 0; #X connect 1 0 3 0; #X connect 2 0 6 0; #X connect 3 0 2 0; #X connect 4 0 1 0; #X connect 4 0 7 0; #X connect 5 0 4 0; #X connect 5 1 8 0; #X connect 8 0 3 1; #X connect 9 0 1 1; #X connect 10 0 4 1; #X connect 11 0 8 1; #X connect 12 0 5 0; #X connect 12 1 6 1; #X connect 12 1 7 1; #X restore 23 392 pd \$0-forward; #X text 234 415 reading happens here; #X obj 40 28 route len; #X obj 44 -11 r \$0newgroup; #X obj 144 -13 r \$0-SCORE; #X obj 53 175 t a a; #X obj 81 201 s \$0GPOINTER; #X obj 159 50 == 0; #X msg 143 131 0; #X obj 214 110 r \$0-INIT; #X obj 144 7 t a a; #X msg 165 29 \$1; #X obj 141 106 t b a; #X msg 188 299 \$5; #X text 55 375 0; #X text 138 375 1; #X text 231 375 2; #X text 369 373 3; #X text 15 3 comment; #N canvas 0 0 482 372 \$0-play 0; #X obj 131 215 makenote 80 200; #X obj 112 130 - 24; #X obj 112 156 abs; #X obj 112 108 / 5; #X obj 131 191 + 50; #X obj 147 157 * 24; #N canvas 0 10 407 472 s 0; #X obj 51 208 mtof; #X obj 51 157 stripnote; #X obj 202 213 select; #X obj 193 107 float; #X obj 202 181 float; #X obj 51 34 unpack; #X obj 132 264 line~; #X obj 193 136 sel 0; #X obj 53 412 hip~ 5; #X obj 52 336 *~; #X obj 51 235 phasor~; #X obj 51 259 -~ 0.5; #X obj 52 287 cos~; #X obj 140 311 *~; #X obj 52 311 +~ 1; #X obj 140 359 cos~; #X text 56 185 pitch; #X obj 53 358 *~; #X obj 132 211 / 127; #X obj 140 335 *~ 2; #X obj 161 288 +~ 0.5; #X obj 51 14 inlet; #X obj 53 437 outlet~; #X msg 133 238 \$1 10; #X msg 202 239 0 10; #N canvas 0 0 1012 688 \$0-adsr 0; #X obj 105 111 inlet; #X obj 435 151 inlet; #X text 101 86 trigger; #X obj 105 139 sel 0; #X obj 244 155 t b; #X obj 166 264 f \$1; #X obj 166 289 pack 0 \$2; #X obj 492 151 inlet; #X obj 438 281 del \$2; #X obj 458 429 line~; #X obj 462 304 f \$4; #X obj 501 379 pack 0 \$3; #X obj 554 151 inlet; #X obj 616 151 inlet; #X obj 689 150 inlet; #X msg 105 170 stop; #X obj 612 306 pack 0 \$5; #X text 435 129 level; #X obj 501 355 * \$1; #X obj 458 454 outlet~; #X text 102 378 and pack with; #X text 103 398 attack time; #X text 31 126 if zero; #X text 32 143 release; #X text 12 160 and cancel; #X text 43 177 decay; #X text 284 272 on attack \, set a; #X text 278 305 recall sustain value; #X text 315 378 pack with decay time; #X text 605 332 on release ramp; #X text 606 349 back to zero; #X obj 462 329 * 0.01; #X text 47 567 Objects such as "f" and "pack" can be given dollar sign arguments to initialize their contents from adsr's creation arguments. Inlets are supplied to change them on the fly.; #X text 13 2 ADSR ENVELOPE; #X text 488 129 attack; #X text 555 128 decay; #X text 609 129 sustain; #X text 686 129 release; #X text 202 71 attack; #X obj 204 92 moses; #X obj 194 122 t b b; #X msg 128 290 0; #X text 20 273 optionally; #X text 10 291 bash to zero; #X text 25 246 ATTACK:; #X text 49 477 When you send this patch a positive trigger it schedules a line~ to do an attack and decay \, and if zero \, it starts the release ramp.; #X text 495 629 Updated for Pd version 0.37; #X text 255 89 test for negative trigger; #X text 253 113 if so \, zero; #X text 254 129 the output; #X text 278 165 in any case; #X text 303 355 multiply by peak level; #X text 280 286 delay for sustain; #X text 276 328 convert from percent; #X text 155 340 ... then; #X text 103 359 recall peak level; #X text 439 113 peak; #X text 281 149 ... do this; #X text 47 529 Negative triggers cause the output to jump to zero and then attack (instead of attacking from the current location).; #X text 208 1 Arguments: level \, attack time \, decay time \, sustain level \, release time. A \, D \, and R are in msec and S is in percent. This patch is used as an abstraction in various examples.; #X connect 0 0 3 0; #X connect 1 0 5 1; #X connect 1 0 18 1; #X connect 3 0 15 0; #X connect 3 0 16 0; #X connect 3 1 39 0; #X connect 4 0 5 0; #X connect 4 0 8 0; #X connect 5 0 6 0; #X connect 6 0 9 0; #X connect 7 0 6 1; #X connect 7 0 8 1; #X connect 8 0 10 0; #X connect 9 0 19 0; #X connect 10 0 31 0; #X connect 11 0 9 0; #X connect 12 0 11 1; #X connect 13 0 10 1; #X connect 14 0 16 1; #X connect 15 0 8 0; #X connect 16 0 9 0; #X connect 18 0 11 0; #X connect 31 0 18 0; #X connect 39 0 40 0; #X connect 39 1 4 0; #X connect 40 0 4 0; #X connect 40 1 41 0; #X connect 41 0 9 0; #X restore 247 366 pd \$0-adsr; #X obj 53 382 *~; #X obj 202 75 t b f b; #X obj 264 327 unpack f f f f f; #X obj 306 166 r \$0-ADSR; #X msg 246 246 1; #X obj 190 404 *~ 0.01; #X connect 0 0 10 0; #X connect 1 0 2 1; #X connect 1 0 0 0; #X connect 2 0 24 0; #X connect 3 0 7 0; #X connect 4 0 2 0; #X connect 5 0 1 0; #X connect 5 0 27 0; #X connect 5 1 1 1; #X connect 5 1 3 1; #X connect 6 0 17 1; #X connect 6 0 20 0; #X connect 7 0 4 0; #X connect 7 1 18 0; #X connect 8 0 22 0; #X connect 9 0 17 0; #X connect 10 0 11 0; #X connect 11 0 13 0; #X connect 11 0 12 0; #X connect 12 0 14 0; #X connect 13 0 19 0; #X connect 14 0 9 0; #X connect 15 0 9 1; #X connect 17 0 26 0; #X connect 18 0 23 0; #X connect 19 0 15 0; #X connect 20 0 13 1; #X connect 21 0 5 0; #X connect 23 0 6 0; #X connect 24 0 6 0; #X connect 25 0 31 0; #X connect 26 0 8 0; #X connect 27 0 3 0; #X connect 27 1 4 1; #X connect 27 2 30 0; #X connect 28 0 25 1; #X connect 28 1 25 2; #X connect 28 2 25 3; #X connect 28 3 25 4; #X connect 28 4 25 5; #X connect 29 0 28 0; #X connect 30 0 25 0; #X connect 31 0 26 1; #X restore 135 272 pd s; #X obj 132 241 pack f f; #X obj 148 14 inlet; #X obj 144 41 unpack f f f; #X obj 134 302 throw~ \$0-SCORE0; #X connect 0 0 7 0; #X connect 0 1 7 1; #X connect 1 0 2 0; #X connect 2 0 4 0; #X connect 3 0 1 0; #X connect 4 0 0 0; #X connect 5 0 4 1; #X connect 6 0 10 0; #X connect 7 0 6 0; #X connect 8 0 9 0; #X connect 9 0 3 0; #X connect 9 1 5 0; #X connect 9 2 0 2; #X restore 215 443 pd \$0-play; #X connect 0 0 16 0; #X connect 1 0 0 0; #X connect 2 0 23 0; #X connect 3 0 11 0; #X connect 3 1 10 0; #X connect 3 2 9 0; #X connect 3 3 8 0; #X connect 4 0 3 1; #X connect 5 0 3 0; #X connect 5 1 4 0; #X connect 9 0 30 0; #X connect 13 0 1 0; #X connect 14 0 13 0; #X connect 15 0 21 0; #X connect 16 0 5 0; #X connect 16 1 17 0; #X connect 18 0 2 1; #X connect 18 0 1 1; #X connect 19 0 0 1; #X connect 20 0 19 0; #X connect 21 0 2 0; #X connect 21 1 22 0; #X connect 22 0 18 0; #X connect 23 0 19 0; #X connect 23 1 24 0; #X connect 24 0 9 1; #X restore 366 66 pd \$0-Gmove0; #N canvas 505 173 514 518 \$0-Gmove1 0; #N canvas 270 142 371 558 \$0-Gpointer 0; #X msg 95 466 next; #X obj 107 375 + 1; #X obj 95 447 until; #X obj 129 509 outlet; #X obj 138 420 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X msg 109 349 1; #X obj 60 425 moses 1; #X obj 80 374 i 1; #N canvas 0 0 379 274 \$0-pd-dollar0-name 0; #X obj 126 45 inlet; #X text 125 25 In: subpatch-name; #X obj 126 153 makefilename pd-%s; #X obj 126 73 list; #X obj 126 101 symbol; #X obj 126 176 outlet; #X obj 126 127 makefilename \$0-%s; #X connect 0 0 3 0; #X connect 2 0 5 0; #X connect 3 0 4 0; #X connect 4 0 6 0; #X connect 6 0 2 0; #X restore 152 339 pd \$0-pd-dollar0-name; #X obj 61 405 i 1; #X obj 10 208 r \$0-GM; #X obj 152 275 spigot; #X msg 156 239 1; #X obj 152 298 b; #X obj 127 486 pointer; #X obj 43 154 t b a b; #X obj 184 112 inlet; #X obj 44 62 inlet; #X obj 151 381 t b b a; #X msg 152 360 traverse \$1; #X obj 184 164 t a b a; #X msg 211 273 symbol \$1-display; #X obj 152 318 symbol; #X msg 193 226 0; #X connect 0 0 14 0; #X connect 1 0 7 1; #X connect 2 0 0 0; #X connect 4 0 2 1; #X connect 5 0 7 1; #X connect 6 1 2 0; #X connect 7 0 1 0; #X connect 7 0 9 1; #X connect 8 0 19 0; #X connect 9 0 6 0; #X connect 10 0 11 0; #X connect 11 0 13 0; #X connect 12 0 11 1; #X connect 13 0 22 0; #X connect 14 0 3 0; #X connect 15 0 12 0; #X connect 15 2 7 0; #X connect 16 0 20 0; #X connect 17 0 15 0; #X connect 18 0 9 0; #X connect 18 2 14 0; #X connect 19 0 18 0; #X connect 20 0 23 0; #X connect 20 1 5 0; #X connect 20 2 21 0; #X connect 21 0 22 1; #X connect 22 0 8 0; #X connect 23 0 11 1; #X restore 54 150 pd \$0-Gpointer; #X obj 39 125 spigot; #X obj 141 86 spigot; #N canvas 0 0 474 324 \$0-demux4 0; #X obj 142 23 inlet; #X obj 280 25 inlet; #X obj 97 248 outlet; #X obj 152 248 outlet; #X obj 212 248 outlet; #X obj 275 251 outlet; #X obj 205 56 == 0; #X obj 112 126 spigot; #X obj 235 67 == 1; #X obj 186 125 spigot; #X obj 265 66 == 2; #X obj 258 123 spigot; #X obj 296 65 == 3; #X obj 62 130 spigot; #X connect 0 0 11 0; #X connect 0 0 9 0; #X connect 0 0 7 0; #X connect 0 0 13 0; #X connect 1 0 12 0; #X connect 1 0 10 0; #X connect 1 0 8 0; #X connect 1 0 6 0; #X connect 6 0 13 1; #X connect 7 0 3 0; #X connect 8 0 7 1; #X connect 9 0 4 0; #X connect 10 0 9 1; #X connect 11 0 5 0; #X connect 12 0 11 1; #X connect 13 0 2 0; #X restore 53 306 pd \$0-demux4; #X obj 82 272 get \$0-group dir; #X obj 54 248 t a a; #X text 20 415 move the note group; #X text 196 271 get direction to move note \, 0 ->E 1->N 2->W 3->S ; #N canvas 0 0 440 241 \$0-downward 0; #X obj 145 4 inlet; #X obj 214 139 spigot; #X obj 212 116 sel 200; #X obj 72 48 get \$0-note y x; #X msg 219 163 0; #X obj 282 103 <= 300; #X obj 101 158 set \$0-group y; #X obj 260 182 set \$0-group dir; #X obj 308 80 r \$0-LENGTH; #X obj 257 18 r \$0-HEIGTH; #X obj 81 92 + 1; #X obj 96 72 r \$0-SPEED; #X obj 329 20 r \$0-ROOF; #X obj 288 54 + 50; #X obj 145 23 t a a; #X connect 0 0 14 0; #X connect 1 0 4 0; #X connect 2 0 1 0; #X connect 3 0 10 0; #X connect 3 1 5 0; #X connect 4 0 7 0; #X connect 5 0 1 1; #X connect 8 0 5 1; #X connect 9 0 13 0; #X connect 10 0 2 0; #X connect 10 0 6 0; #X connect 11 0 10 1; #X connect 12 0 13 1; #X connect 13 0 2 1; #X connect 14 0 3 0; #X connect 14 1 7 1; #X connect 14 1 6 1; #X restore 343 393 pd \$0-downward; #N canvas 63 53 438 589 \$0-backward 0; #X obj 69 18 inlet; #N canvas 0 0 462 312 \$0-group-direction 0; #X obj 160 23 inlet; #X obj 114 143 outlet; #X obj 263 227 outlet; #X obj 225 180 spigot; #X obj 223 157 sel 50; #X msg 225 233 3; #X obj 269 156 <= 200; #X obj 186 301 set \$0-group x; #X obj 226 255 set \$0-group dir; #X obj 169 82 get \$0-group x y; #X obj 296 302 r \$0GPOINTER; #X obj 317 232 r \$0GPOINTER; #X obj 300 132 r \$0-HEIGTH; #X obj 201 104 r \$0-SPEED; #X obj 225 200 t b b; #X obj 185 149 - 1; #X connect 0 0 9 0; #X connect 3 0 14 0; #X connect 4 0 3 0; #X connect 5 0 8 0; #X connect 6 0 3 1; #X connect 9 0 1 0; #X connect 9 0 4 0; #X connect 9 0 15 0; #X connect 9 1 6 0; #X connect 10 0 7 1; #X connect 11 0 8 1; #X connect 12 0 6 1; #X connect 13 0 15 1; #X connect 14 0 5 0; #X connect 14 1 2 0; #X connect 15 0 7 0; #X restore 281 83 pd \$0-group-direction; #X obj 259 118 get \$0-group x p; #X obj 236 170 <= 200; #X obj 265 139 r \$0-CURSOR; #X obj 273 202 &; #X obj 194 205 spigot; #X obj 194 239 t b b a b a a; #X obj 315 251 t b a; #X msg 315 279 0; #X obj 315 298 set \$0-group p; #X obj 157 301 element \$0-group notes; #X obj 237 56 t a a a; #X obj 157 322 get \$0-note l x y; #X obj 200 416 i; #X obj 164 344 t b a b a; #X obj 334 383 r \$0-BPM; #X obj 335 403 * 8; #X obj 273 449 /; #X obj 275 404 t b a; #X obj 271 468 t a a; #N canvas 409 91 518 368 \$0-groupsize 0; #X obj 156 9 inlet; #X obj 246 8 inlet; #X obj 195 289 outlet; #X obj 187 44 getsize \$0-group notes; #X obj 179 192 spigot; #N canvas 0 0 454 304 \$0-cnt 0; #X obj 90 107 i; #X obj 116 108 + 1; #X obj 97 22 inlet; #X obj 95 277 outlet; #X obj 144 23 inlet; #X obj 94 176 mod 4; #X msg 127 65 0; #X connect 0 0 1 0; #X connect 0 0 5 0; #X connect 1 0 0 1; #X connect 2 0 0 0; #X connect 4 0 6 0; #X connect 4 0 5 1; #X connect 5 0 3 0; #X connect 6 0 0 1; #X restore 185 223 pd \$0-cnt; #X msg 186 140 0; #X obj 185 250 t a a; #X obj 187 78 t b a; #X msg 270 124 1; #X obj 186 107 sel; #X floatatom 228 97 5 0 0 0 - - -; #X obj 101 172 + 1; #X connect 0 0 4 0; #X connect 1 0 3 0; #X connect 1 0 9 0; #X connect 3 0 8 0; #X connect 4 0 5 0; #X connect 5 0 7 0; #X connect 6 0 4 1; #X connect 7 0 2 0; #X connect 7 1 12 0; #X connect 8 1 10 1; #X connect 8 1 5 1; #X connect 9 0 4 1; #X connect 10 0 6 0; #X connect 12 0 10 0; #X restore 161 276 pd \$0-groupsize; #X floatatom 307 496 5 0 0 0 - - -; #X obj 273 430 f 1920; #X obj 31 384 del 125; #X obj 273 382 clip 1 64; #X obj 173 505 pack f 80 250; #X text 62 0 pointer; #X obj 208 481 inlet; #X text 199 463 range; #X obj 173 540 outlet; #X connect 0 0 12 0; #X connect 2 0 3 0; #X connect 2 1 5 1; #X connect 3 0 5 0; #X connect 4 0 3 1; #X connect 5 0 6 1; #X connect 6 0 7 0; #X connect 7 1 21 0; #X connect 7 2 21 1; #X connect 7 4 11 1; #X connect 7 5 8 0; #X connect 8 0 9 0; #X connect 8 1 10 1; #X connect 9 0 10 0; #X connect 11 0 13 0; #X connect 12 0 6 0; #X connect 12 1 2 0; #X connect 12 2 1 0; #X connect 13 0 15 0; #X connect 13 2 14 1; #X connect 14 0 26 0; #X connect 15 0 24 0; #X connect 15 2 14 0; #X connect 15 3 25 0; #X connect 16 0 17 0; #X connect 17 0 23 1; #X connect 18 0 20 0; #X connect 19 0 23 0; #X connect 19 1 18 1; #X connect 20 0 24 1; #X connect 20 1 22 0; #X connect 20 1 26 2; #X connect 21 0 11 0; #X connect 23 0 18 0; #X connect 24 0 21 0; #X connect 25 0 19 0; #X connect 26 0 30 0; #X connect 28 0 26 1; #X restore 215 393 pd \$0-backward; #N canvas 25 257 380 409 \$0-upward 0; #X obj 78 2 inlet; #X obj 97 211 spigot; #X msg 97 245 2; #X obj 75 120 - 1; #X obj 182 123 >= 300; #X obj 75 360 set \$0-group y; #X obj 97 309 set \$0-group dir; #X obj 75 74 get \$0-group y x; #X obj 97 188 sel 50; #X obj 190 102 r \$0-LENGTH; #X obj 91 99 r \$0-SPEED; #X obj 102 149 r \$0-ROOF; #X msg 285 274 1; #X obj 76 33 t a a a; #X obj 183 240 b; #X obj 260 307 set \$0-group p; #X connect 0 0 13 0; #X connect 1 0 2 0; #X connect 1 0 14 0; #X connect 2 0 6 0; #X connect 3 0 5 0; #X connect 3 0 8 0; #X connect 4 0 1 1; #X connect 7 0 3 0; #X connect 7 1 4 0; #X connect 8 0 1 0; #X connect 9 0 4 1; #X connect 10 0 3 1; #X connect 11 0 8 1; #X connect 12 0 15 0; #X connect 13 0 7 0; #X connect 13 2 15 1; #X connect 13 2 5 1; #X connect 13 2 6 1; #X connect 14 0 12 0; #X restore 120 393 pd \$0-upward; #N canvas 0 94 428 235 \$0-forward 0; #X obj 103 16 inlet; #X obj 236 130 sel 300; #X msg 242 177 1; #X obj 237 151 spigot; #X obj 61 119 + 1; #X obj 36 71 get \$0-group x y; #X obj 147 204 set \$0-group dir; #X obj 47 179 set \$0-group x; #X obj 282 127 >= 100; #X obj 270 83 r \$0-LENGTH; #X obj 63 93 r \$0-SPEED; #X obj 308 104 r \$0-ROOF; #X obj 111 41 t a a; #X connect 0 0 12 0; #X connect 1 0 3 0; #X connect 2 0 6 0; #X connect 3 0 2 0; #X connect 4 0 1 0; #X connect 4 0 7 0; #X connect 5 0 4 0; #X connect 5 1 8 0; #X connect 8 0 3 1; #X connect 9 0 1 1; #X connect 10 0 4 1; #X connect 11 0 8 1; #X connect 12 0 5 0; #X connect 12 1 6 1; #X connect 12 1 7 1; #X restore 23 392 pd \$0-forward; #X text 234 415 reading happens here; #X obj 40 28 route len; #X obj 44 -11 r \$0newgroup; #X obj 144 -13 r \$0-SCORE; #X obj 53 175 t a a; #X obj 81 201 s \$0GPOINTER; #X obj 214 110 r \$0-INIT; #X obj 144 7 t a a; #X msg 165 29 \$1; #X obj 141 106 t b a; #X msg 188 299 \$5; #X text 55 375 0; #X text 138 375 1; #X text 231 375 2; #X text 369 373 3; #X text 15 3 comment; #X obj 159 50 == 1; #X msg 143 131 1; #N canvas 0 0 482 372 \$0-play 0; #X obj 131 215 makenote 80 200; #X obj 112 130 - 24; #X obj 112 156 abs; #X obj 112 108 / 5; #X obj 131 191 + 50; #X obj 147 157 * 24; #N canvas 0 10 407 472 s 0; #X obj 51 208 mtof; #X obj 51 157 stripnote; #X obj 202 213 select; #X obj 193 107 float; #X obj 202 181 float; #X obj 51 34 unpack; #X obj 132 264 line~; #X obj 193 136 sel 0; #X obj 53 412 hip~ 5; #X obj 52 336 *~; #X obj 51 235 phasor~; #X obj 51 259 -~ 0.5; #X obj 52 287 cos~; #X obj 140 311 *~; #X obj 52 311 +~ 1; #X obj 140 359 cos~; #X text 56 185 pitch; #X obj 53 358 *~; #X obj 132 211 / 127; #X obj 140 335 *~ 2; #X obj 161 288 +~ 0.5; #X obj 51 14 inlet; #X obj 53 437 outlet~; #X msg 133 238 \$1 10; #X msg 202 239 0 10; #N canvas 0 0 1012 688 \$0-adsr 0; #X obj 105 111 inlet; #X obj 435 151 inlet; #X text 101 86 trigger; #X obj 105 139 sel 0; #X obj 244 155 t b; #X obj 166 264 f \$1; #X obj 166 289 pack 0 \$2; #X obj 492 151 inlet; #X obj 438 281 del \$2; #X obj 458 429 line~; #X obj 462 304 f \$4; #X obj 501 379 pack 0 \$3; #X obj 554 151 inlet; #X obj 616 151 inlet; #X obj 689 150 inlet; #X msg 105 170 stop; #X obj 612 306 pack 0 \$5; #X text 435 129 level; #X obj 501 355 * \$1; #X obj 458 454 outlet~; #X text 102 378 and pack with; #X text 103 398 attack time; #X text 31 126 if zero; #X text 32 143 release; #X text 12 160 and cancel; #X text 43 177 decay; #X text 284 272 on attack \, set a; #X text 278 305 recall sustain value; #X text 315 378 pack with decay time; #X text 605 332 on release ramp; #X text 606 349 back to zero; #X obj 462 329 * 0.01; #X text 47 567 Objects such as "f" and "pack" can be given dollar sign arguments to initialize their contents from adsr's creation arguments. Inlets are supplied to change them on the fly.; #X text 13 2 ADSR ENVELOPE; #X text 488 129 attack; #X text 555 128 decay; #X text 609 129 sustain; #X text 686 129 release; #X text 202 71 attack; #X obj 204 92 moses; #X obj 194 122 t b b; #X msg 128 290 0; #X text 20 273 optionally; #X text 10 291 bash to zero; #X text 25 246 ATTACK:; #X text 49 477 When you send this patch a positive trigger it schedules a line~ to do an attack and decay \, and if zero \, it starts the release ramp.; #X text 495 629 Updated for Pd version 0.37; #X text 255 89 test for negative trigger; #X text 253 113 if so \, zero; #X text 254 129 the output; #X text 278 165 in any case; #X text 303 355 multiply by peak level; #X text 280 286 delay for sustain; #X text 276 328 convert from percent; #X text 155 340 ... then; #X text 103 359 recall peak level; #X text 439 113 peak; #X text 281 149 ... do this; #X text 47 529 Negative triggers cause the output to jump to zero and then attack (instead of attacking from the current location).; #X text 208 1 Arguments: level \, attack time \, decay time \, sustain level \, release time. A \, D \, and R are in msec and S is in percent. This patch is used as an abstraction in various examples.; #X connect 0 0 3 0; #X connect 1 0 5 1; #X connect 1 0 18 1; #X connect 3 0 15 0; #X connect 3 0 16 0; #X connect 3 1 39 0; #X connect 4 0 5 0; #X connect 4 0 8 0; #X connect 5 0 6 0; #X connect 6 0 9 0; #X connect 7 0 6 1; #X connect 7 0 8 1; #X connect 8 0 10 0; #X connect 9 0 19 0; #X connect 10 0 31 0; #X connect 11 0 9 0; #X connect 12 0 11 1; #X connect 13 0 10 1; #X connect 14 0 16 1; #X connect 15 0 8 0; #X connect 16 0 9 0; #X connect 18 0 11 0; #X connect 31 0 18 0; #X connect 39 0 40 0; #X connect 39 1 4 0; #X connect 40 0 4 0; #X connect 40 1 41 0; #X connect 41 0 9 0; #X restore 247 366 pd \$0-adsr; #X obj 53 382 *~; #X obj 202 75 t b f b; #X obj 264 327 unpack f f f f f; #X obj 306 166 r \$0-ADSR; #X msg 246 246 1; #X obj 190 404 *~ 0.01; #X connect 0 0 10 0; #X connect 1 0 2 1; #X connect 1 0 0 0; #X connect 2 0 24 0; #X connect 3 0 7 0; #X connect 4 0 2 0; #X connect 5 0 1 0; #X connect 5 0 27 0; #X connect 5 1 1 1; #X connect 5 1 3 1; #X connect 6 0 17 1; #X connect 6 0 20 0; #X connect 7 0 4 0; #X connect 7 1 18 0; #X connect 8 0 22 0; #X connect 9 0 17 0; #X connect 10 0 11 0; #X connect 11 0 13 0; #X connect 11 0 12 0; #X connect 12 0 14 0; #X connect 13 0 19 0; #X connect 14 0 9 0; #X connect 15 0 9 1; #X connect 17 0 26 0; #X connect 18 0 23 0; #X connect 19 0 15 0; #X connect 20 0 13 1; #X connect 21 0 5 0; #X connect 23 0 6 0; #X connect 24 0 6 0; #X connect 25 0 31 0; #X connect 26 0 8 0; #X connect 27 0 3 0; #X connect 27 1 4 1; #X connect 27 2 30 0; #X connect 28 0 25 1; #X connect 28 1 25 2; #X connect 28 2 25 3; #X connect 28 3 25 4; #X connect 28 4 25 5; #X connect 29 0 28 0; #X connect 30 0 25 0; #X connect 31 0 26 1; #X restore 135 272 pd s; #X obj 132 241 pack f f; #X obj 148 14 inlet; #X obj 144 41 unpack f f f; #X obj 134 302 throw~ \$0-SCORE0; #X connect 0 0 7 0; #X connect 0 1 7 1; #X connect 1 0 2 0; #X connect 2 0 4 0; #X connect 3 0 1 0; #X connect 4 0 0 0; #X connect 5 0 4 1; #X connect 6 0 10 0; #X connect 7 0 6 0; #X connect 8 0 9 0; #X connect 9 0 3 0; #X connect 9 1 5 0; #X connect 9 2 0 2; #X restore 215 443 pd \$0-play; #X connect 0 0 16 0; #X connect 1 0 0 0; #X connect 2 0 21 0; #X connect 3 0 11 0; #X connect 3 1 10 0; #X connect 3 2 9 0; #X connect 3 3 8 0; #X connect 4 0 3 1; #X connect 5 0 3 0; #X connect 5 1 4 0; #X connect 9 0 30 0; #X connect 13 0 1 0; #X connect 14 0 13 0; #X connect 15 0 19 0; #X connect 16 0 5 0; #X connect 16 1 17 0; #X connect 18 0 29 0; #X connect 19 0 2 0; #X connect 19 1 20 0; #X connect 20 0 28 0; #X connect 21 0 29 0; #X connect 21 1 22 0; #X connect 22 0 9 1; #X connect 28 0 2 1; #X connect 28 0 1 1; #X connect 29 0 0 1; #X restore 368 90 pd \$0-Gmove1; #N canvas 449 174 516 532 \$0-Gmove2 0; #N canvas 270 142 371 558 \$0-Gpointer 0; #X msg 95 466 next; #X obj 107 375 + 1; #X obj 95 447 until; #X obj 129 509 outlet; #X obj 138 420 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X msg 109 349 1; #X obj 60 425 moses 1; #X obj 80 374 i 1; #N canvas 0 0 379 274 \$0-pd-dollar0-name 0; #X obj 126 45 inlet; #X text 125 25 In: subpatch-name; #X obj 126 153 makefilename pd-%s; #X obj 126 73 list; #X obj 126 101 symbol; #X obj 126 176 outlet; #X obj 126 127 makefilename \$0-%s; #X connect 0 0 3 0; #X connect 2 0 5 0; #X connect 3 0 4 0; #X connect 4 0 6 0; #X connect 6 0 2 0; #X restore 152 339 pd \$0-pd-dollar0-name; #X obj 61 405 i 1; #X obj 10 208 r \$0-GM; #X obj 152 275 spigot; #X msg 156 239 1; #X obj 152 298 b; #X obj 127 486 pointer; #X obj 43 154 t b a b; #X obj 184 112 inlet; #X obj 44 62 inlet; #X obj 151 381 t b b a; #X msg 152 360 traverse \$1; #X obj 184 164 t a b a; #X msg 211 273 symbol \$1-display; #X obj 152 318 symbol; #X msg 193 226 0; #X connect 0 0 14 0; #X connect 1 0 7 1; #X connect 2 0 0 0; #X connect 4 0 2 1; #X connect 5 0 7 1; #X connect 6 1 2 0; #X connect 7 0 1 0; #X connect 7 0 9 1; #X connect 8 0 19 0; #X connect 9 0 6 0; #X connect 10 0 11 0; #X connect 11 0 13 0; #X connect 12 0 11 1; #X connect 13 0 22 0; #X connect 14 0 3 0; #X connect 15 0 12 0; #X connect 15 2 7 0; #X connect 16 0 20 0; #X connect 17 0 15 0; #X connect 18 0 9 0; #X connect 18 2 14 0; #X connect 19 0 18 0; #X connect 20 0 23 0; #X connect 20 1 5 0; #X connect 20 2 21 0; #X connect 21 0 22 1; #X connect 22 0 8 0; #X connect 23 0 11 1; #X restore 54 150 pd \$0-Gpointer; #X obj 39 125 spigot; #X obj 141 86 spigot; #N canvas 0 0 474 324 \$0-demux4 0; #X obj 142 23 inlet; #X obj 280 25 inlet; #X obj 97 248 outlet; #X obj 152 248 outlet; #X obj 212 248 outlet; #X obj 275 251 outlet; #X obj 205 56 == 0; #X obj 112 126 spigot; #X obj 235 67 == 1; #X obj 186 125 spigot; #X obj 265 66 == 2; #X obj 258 123 spigot; #X obj 296 65 == 3; #X obj 62 130 spigot; #X connect 0 0 11 0; #X connect 0 0 9 0; #X connect 0 0 7 0; #X connect 0 0 13 0; #X connect 1 0 12 0; #X connect 1 0 10 0; #X connect 1 0 8 0; #X connect 1 0 6 0; #X connect 6 0 13 1; #X connect 7 0 3 0; #X connect 8 0 7 1; #X connect 9 0 4 0; #X connect 10 0 9 1; #X connect 11 0 5 0; #X connect 12 0 11 1; #X connect 13 0 2 0; #X restore 53 306 pd \$0-demux4; #X obj 82 272 get \$0-group dir; #X obj 54 248 t a a; #X text 20 415 move the note group; #X text 196 271 get direction to move note \, 0 ->E 1->N 2->W 3->S ; #N canvas 0 0 440 241 \$0-downward 0; #X obj 145 4 inlet; #X obj 214 139 spigot; #X obj 212 116 sel 200; #X obj 72 48 get \$0-note y x; #X msg 219 163 0; #X obj 282 103 <= 300; #X obj 101 158 set \$0-group y; #X obj 260 182 set \$0-group dir; #X obj 308 80 r \$0-LENGTH; #X obj 257 18 r \$0-HEIGTH; #X obj 81 92 + 1; #X obj 96 72 r \$0-SPEED; #X obj 329 20 r \$0-ROOF; #X obj 288 54 + 50; #X obj 145 23 t a a; #X connect 0 0 14 0; #X connect 1 0 4 0; #X connect 2 0 1 0; #X connect 3 0 10 0; #X connect 3 1 5 0; #X connect 4 0 7 0; #X connect 5 0 1 1; #X connect 8 0 5 1; #X connect 9 0 13 0; #X connect 10 0 2 0; #X connect 10 0 6 0; #X connect 11 0 10 1; #X connect 12 0 13 1; #X connect 13 0 2 1; #X connect 14 0 3 0; #X connect 14 1 7 1; #X connect 14 1 6 1; #X restore 343 393 pd \$0-downward; #N canvas 63 53 438 589 \$0-backward 0; #X obj 69 18 inlet; #N canvas 0 0 462 312 \$0-group-direction 0; #X obj 160 23 inlet; #X obj 114 143 outlet; #X obj 263 227 outlet; #X obj 225 180 spigot; #X obj 223 157 sel 50; #X msg 225 233 3; #X obj 269 156 <= 200; #X obj 186 301 set \$0-group x; #X obj 226 255 set \$0-group dir; #X obj 169 82 get \$0-group x y; #X obj 296 302 r \$0GPOINTER; #X obj 317 232 r \$0GPOINTER; #X obj 300 132 r \$0-HEIGTH; #X obj 201 104 r \$0-SPEED; #X obj 225 200 t b b; #X obj 185 149 - 1; #X connect 0 0 9 0; #X connect 3 0 14 0; #X connect 4 0 3 0; #X connect 5 0 8 0; #X connect 6 0 3 1; #X connect 9 0 1 0; #X connect 9 0 4 0; #X connect 9 0 15 0; #X connect 9 1 6 0; #X connect 10 0 7 1; #X connect 11 0 8 1; #X connect 12 0 6 1; #X connect 13 0 15 1; #X connect 14 0 5 0; #X connect 14 1 2 0; #X connect 15 0 7 0; #X restore 281 83 pd \$0-group-direction; #X obj 259 118 get \$0-group x p; #X obj 236 170 <= 200; #X obj 265 139 r \$0-CURSOR; #X obj 273 202 &; #X obj 194 205 spigot; #X obj 194 239 t b b a b a a; #X obj 315 251 t b a; #X msg 315 279 0; #X obj 315 298 set \$0-group p; #X obj 157 301 element \$0-group notes; #X obj 237 56 t a a a; #X obj 157 322 get \$0-note l x y; #X obj 200 416 i; #X obj 164 344 t b a b a; #X obj 334 383 r \$0-BPM; #X obj 335 403 * 8; #X obj 273 449 /; #X obj 275 404 t b a; #X obj 271 468 t a a; #N canvas 409 91 518 368 \$0-groupsize 0; #X obj 156 9 inlet; #X obj 246 8 inlet; #X obj 195 289 outlet; #X obj 187 44 getsize \$0-group notes; #X obj 179 192 spigot; #N canvas 0 0 454 304 \$0-cnt 0; #X obj 90 107 i; #X obj 116 108 + 1; #X obj 97 22 inlet; #X obj 95 277 outlet; #X obj 144 23 inlet; #X obj 94 176 mod 4; #X msg 127 65 0; #X connect 0 0 1 0; #X connect 0 0 5 0; #X connect 1 0 0 1; #X connect 2 0 0 0; #X connect 4 0 6 0; #X connect 4 0 5 1; #X connect 5 0 3 0; #X connect 6 0 0 1; #X restore 185 223 pd \$0-cnt; #X msg 186 140 0; #X obj 185 250 t a a; #X obj 187 78 t b a; #X msg 270 124 1; #X obj 186 107 sel; #X floatatom 228 97 5 0 0 0 - - -; #X obj 101 172 + 1; #X connect 0 0 4 0; #X connect 1 0 3 0; #X connect 1 0 9 0; #X connect 3 0 8 0; #X connect 4 0 5 0; #X connect 5 0 7 0; #X connect 6 0 4 1; #X connect 7 0 2 0; #X connect 7 1 12 0; #X connect 8 1 10 1; #X connect 8 1 5 1; #X connect 9 0 4 1; #X connect 10 0 6 0; #X connect 12 0 10 0; #X restore 161 276 pd \$0-groupsize; #X floatatom 307 496 5 0 0 0 - - -; #X obj 273 430 f 1920; #X obj 31 384 del 125; #X obj 273 382 clip 1 64; #X obj 173 505 pack f 80 250; #X text 62 0 pointer; #X obj 208 481 inlet; #X text 199 463 range; #X obj 173 540 outlet; #X connect 0 0 12 0; #X connect 2 0 3 0; #X connect 2 1 5 1; #X connect 3 0 5 0; #X connect 4 0 3 1; #X connect 5 0 6 1; #X connect 6 0 7 0; #X connect 7 1 21 0; #X connect 7 2 21 1; #X connect 7 4 11 1; #X connect 7 5 8 0; #X connect 8 0 9 0; #X connect 8 1 10 1; #X connect 9 0 10 0; #X connect 11 0 13 0; #X connect 12 0 6 0; #X connect 12 1 2 0; #X connect 12 2 1 0; #X connect 13 0 15 0; #X connect 13 2 14 1; #X connect 14 0 26 0; #X connect 15 0 24 0; #X connect 15 2 14 0; #X connect 15 3 25 0; #X connect 16 0 17 0; #X connect 17 0 23 1; #X connect 18 0 20 0; #X connect 19 0 23 0; #X connect 19 1 18 1; #X connect 20 0 24 1; #X connect 20 1 22 0; #X connect 20 1 26 2; #X connect 21 0 11 0; #X connect 23 0 18 0; #X connect 24 0 21 0; #X connect 25 0 19 0; #X connect 26 0 30 0; #X connect 28 0 26 1; #X restore 215 393 pd \$0-backward; #N canvas 25 257 380 409 \$0-upward 0; #X obj 78 2 inlet; #X obj 97 211 spigot; #X msg 97 245 2; #X obj 75 120 - 1; #X obj 182 123 >= 300; #X obj 75 360 set \$0-group y; #X obj 97 309 set \$0-group dir; #X obj 75 74 get \$0-group y x; #X obj 97 188 sel 50; #X obj 190 102 r \$0-LENGTH; #X obj 91 99 r \$0-SPEED; #X obj 102 149 r \$0-ROOF; #X msg 285 274 1; #X obj 76 33 t a a a; #X obj 183 240 b; #X obj 260 307 set \$0-group p; #X connect 0 0 13 0; #X connect 1 0 2 0; #X connect 1 0 14 0; #X connect 2 0 6 0; #X connect 3 0 5 0; #X connect 3 0 8 0; #X connect 4 0 1 1; #X connect 7 0 3 0; #X connect 7 1 4 0; #X connect 8 0 1 0; #X connect 9 0 4 1; #X connect 10 0 3 1; #X connect 11 0 8 1; #X connect 12 0 15 0; #X connect 13 0 7 0; #X connect 13 2 15 1; #X connect 13 2 5 1; #X connect 13 2 6 1; #X connect 14 0 12 0; #X restore 120 393 pd \$0-upward; #N canvas 0 94 428 235 \$0-forward 0; #X obj 103 16 inlet; #X obj 236 130 sel 300; #X msg 242 177 1; #X obj 237 151 spigot; #X obj 61 119 + 1; #X obj 36 71 get \$0-group x y; #X obj 147 204 set \$0-group dir; #X obj 47 179 set \$0-group x; #X obj 282 127 >= 100; #X obj 270 83 r \$0-LENGTH; #X obj 63 93 r \$0-SPEED; #X obj 308 104 r \$0-ROOF; #X obj 111 41 t a a; #X connect 0 0 12 0; #X connect 1 0 3 0; #X connect 2 0 6 0; #X connect 3 0 2 0; #X connect 4 0 1 0; #X connect 4 0 7 0; #X connect 5 0 4 0; #X connect 5 1 8 0; #X connect 8 0 3 1; #X connect 9 0 1 1; #X connect 10 0 4 1; #X connect 11 0 8 1; #X connect 12 0 5 0; #X connect 12 1 6 1; #X connect 12 1 7 1; #X restore 23 392 pd \$0-forward; #X text 234 415 reading happens here; #X obj 40 28 route len; #X obj 44 -11 r \$0newgroup; #X obj 144 -13 r \$0-SCORE; #X obj 53 175 t a a; #X obj 81 201 s \$0GPOINTER; #X obj 214 110 r \$0-INIT; #X obj 144 7 t a a; #X msg 165 29 \$1; #X obj 141 106 t b a; #X msg 188 299 \$5; #X text 55 375 0; #X text 138 375 1; #X text 231 375 2; #X text 369 373 3; #X text 15 3 comment; #X obj 159 50 == 2; #X msg 143 131 2; #N canvas 0 0 482 372 \$0-play 0; #X obj 131 215 makenote 80 200; #X obj 112 130 - 24; #X obj 112 156 abs; #X obj 112 108 / 5; #X obj 131 191 + 50; #X obj 147 157 * 24; #N canvas 0 10 407 472 s 0; #X obj 51 208 mtof; #X obj 51 157 stripnote; #X obj 202 213 select; #X obj 193 107 float; #X obj 202 181 float; #X obj 51 34 unpack; #X obj 132 264 line~; #X obj 193 136 sel 0; #X obj 53 412 hip~ 5; #X obj 52 336 *~; #X obj 51 235 phasor~; #X obj 51 259 -~ 0.5; #X obj 52 287 cos~; #X obj 140 311 *~; #X obj 52 311 +~ 1; #X obj 140 359 cos~; #X text 56 185 pitch; #X obj 53 358 *~; #X obj 132 211 / 127; #X obj 140 335 *~ 2; #X obj 161 288 +~ 0.5; #X obj 51 14 inlet; #X obj 53 437 outlet~; #X msg 133 238 \$1 10; #X msg 202 239 0 10; #N canvas 0 0 1012 688 \$0-adsr 0; #X obj 105 111 inlet; #X obj 435 151 inlet; #X text 101 86 trigger; #X obj 105 139 sel 0; #X obj 244 155 t b; #X obj 166 264 f \$1; #X obj 166 289 pack 0 \$2; #X obj 492 151 inlet; #X obj 438 281 del \$2; #X obj 458 429 line~; #X obj 462 304 f \$4; #X obj 501 379 pack 0 \$3; #X obj 554 151 inlet; #X obj 616 151 inlet; #X obj 689 150 inlet; #X msg 105 170 stop; #X obj 612 306 pack 0 \$5; #X text 435 129 level; #X obj 501 355 * \$1; #X obj 458 454 outlet~; #X text 102 378 and pack with; #X text 103 398 attack time; #X text 31 126 if zero; #X text 32 143 release; #X text 12 160 and cancel; #X text 43 177 decay; #X text 284 272 on attack \, set a; #X text 278 305 recall sustain value; #X text 315 378 pack with decay time; #X text 605 332 on release ramp; #X text 606 349 back to zero; #X obj 462 329 * 0.01; #X text 47 567 Objects such as "f" and "pack" can be given dollar sign arguments to initialize their contents from adsr's creation arguments. Inlets are supplied to change them on the fly.; #X text 13 2 ADSR ENVELOPE; #X text 488 129 attack; #X text 555 128 decay; #X text 609 129 sustain; #X text 686 129 release; #X text 202 71 attack; #X obj 204 92 moses; #X obj 194 122 t b b; #X msg 128 290 0; #X text 20 273 optionally; #X text 10 291 bash to zero; #X text 25 246 ATTACK:; #X text 49 477 When you send this patch a positive trigger it schedules a line~ to do an attack and decay \, and if zero \, it starts the release ramp.; #X text 495 629 Updated for Pd version 0.37; #X text 255 89 test for negative trigger; #X text 253 113 if so \, zero; #X text 254 129 the output; #X text 278 165 in any case; #X text 303 355 multiply by peak level; #X text 280 286 delay for sustain; #X text 276 328 convert from percent; #X text 155 340 ... then; #X text 103 359 recall peak level; #X text 439 113 peak; #X text 281 149 ... do this; #X text 47 529 Negative triggers cause the output to jump to zero and then attack (instead of attacking from the current location).; #X text 208 1 Arguments: level \, attack time \, decay time \, sustain level \, release time. A \, D \, and R are in msec and S is in percent. This patch is used as an abstraction in various examples.; #X connect 0 0 3 0; #X connect 1 0 5 1; #X connect 1 0 18 1; #X connect 3 0 15 0; #X connect 3 0 16 0; #X connect 3 1 39 0; #X connect 4 0 5 0; #X connect 4 0 8 0; #X connect 5 0 6 0; #X connect 6 0 9 0; #X connect 7 0 6 1; #X connect 7 0 8 1; #X connect 8 0 10 0; #X connect 9 0 19 0; #X connect 10 0 31 0; #X connect 11 0 9 0; #X connect 12 0 11 1; #X connect 13 0 10 1; #X connect 14 0 16 1; #X connect 15 0 8 0; #X connect 16 0 9 0; #X connect 18 0 11 0; #X connect 31 0 18 0; #X connect 39 0 40 0; #X connect 39 1 4 0; #X connect 40 0 4 0; #X connect 40 1 41 0; #X connect 41 0 9 0; #X restore 247 366 pd \$0-adsr; #X obj 53 382 *~; #X obj 202 75 t b f b; #X obj 264 327 unpack f f f f f; #X obj 306 166 r \$0-ADSR; #X msg 246 246 1; #X obj 190 404 *~ 0.01; #X connect 0 0 10 0; #X connect 1 0 2 1; #X connect 1 0 0 0; #X connect 2 0 24 0; #X connect 3 0 7 0; #X connect 4 0 2 0; #X connect 5 0 1 0; #X connect 5 0 27 0; #X connect 5 1 1 1; #X connect 5 1 3 1; #X connect 6 0 17 1; #X connect 6 0 20 0; #X connect 7 0 4 0; #X connect 7 1 18 0; #X connect 8 0 22 0; #X connect 9 0 17 0; #X connect 10 0 11 0; #X connect 11 0 13 0; #X connect 11 0 12 0; #X connect 12 0 14 0; #X connect 13 0 19 0; #X connect 14 0 9 0; #X connect 15 0 9 1; #X connect 17 0 26 0; #X connect 18 0 23 0; #X connect 19 0 15 0; #X connect 20 0 13 1; #X connect 21 0 5 0; #X connect 23 0 6 0; #X connect 24 0 6 0; #X connect 25 0 31 0; #X connect 26 0 8 0; #X connect 27 0 3 0; #X connect 27 1 4 1; #X connect 27 2 30 0; #X connect 28 0 25 1; #X connect 28 1 25 2; #X connect 28 2 25 3; #X connect 28 3 25 4; #X connect 28 4 25 5; #X connect 29 0 28 0; #X connect 30 0 25 0; #X connect 31 0 26 1; #X restore 135 272 pd s; #X obj 132 241 pack f f; #X obj 148 14 inlet; #X obj 144 41 unpack f f f; #X obj 134 302 throw~ \$0-SCORE0; #X connect 0 0 7 0; #X connect 0 1 7 1; #X connect 1 0 2 0; #X connect 2 0 4 0; #X connect 3 0 1 0; #X connect 4 0 0 0; #X connect 5 0 4 1; #X connect 6 0 10 0; #X connect 7 0 6 0; #X connect 8 0 9 0; #X connect 9 0 3 0; #X connect 9 1 5 0; #X connect 9 2 0 2; #X restore 215 443 pd \$0-play; #X connect 0 0 16 0; #X connect 1 0 0 0; #X connect 2 0 21 0; #X connect 3 0 11 0; #X connect 3 1 10 0; #X connect 3 2 9 0; #X connect 3 3 8 0; #X connect 4 0 3 1; #X connect 5 0 3 0; #X connect 5 1 4 0; #X connect 9 0 30 0; #X connect 13 0 1 0; #X connect 14 0 13 0; #X connect 15 0 19 0; #X connect 16 0 5 0; #X connect 16 1 17 0; #X connect 18 0 29 0; #X connect 19 0 2 0; #X connect 19 1 20 0; #X connect 20 0 28 0; #X connect 21 0 29 0; #X connect 21 1 22 0; #X connect 22 0 9 1; #X connect 28 0 2 1; #X connect 28 0 1 1; #X connect 29 0 0 1; #X restore 369 110 pd \$0-Gmove2; #N canvas 432 153 512 516 \$0-Gmove3 0; #N canvas 270 142 371 558 \$0-Gpointer 0; #X msg 95 466 next; #X obj 107 375 + 1; #X obj 95 447 until; #X obj 129 509 outlet; #X obj 138 420 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X msg 109 349 1; #X obj 60 425 moses 1; #X obj 80 374 i 1; #N canvas 0 0 379 274 \$0-pd-dollar0-name 0; #X obj 126 45 inlet; #X text 125 25 In: subpatch-name; #X obj 126 153 makefilename pd-%s; #X obj 126 73 list; #X obj 126 101 symbol; #X obj 126 176 outlet; #X obj 126 127 makefilename \$0-%s; #X connect 0 0 3 0; #X connect 2 0 5 0; #X connect 3 0 4 0; #X connect 4 0 6 0; #X connect 6 0 2 0; #X restore 152 339 pd \$0-pd-dollar0-name; #X obj 61 405 i 1; #X obj 10 208 r \$0-GM; #X obj 152 275 spigot; #X msg 156 239 1; #X obj 152 298 b; #X obj 127 486 pointer; #X obj 43 154 t b a b; #X obj 184 112 inlet; #X obj 44 62 inlet; #X obj 151 381 t b b a; #X msg 152 360 traverse \$1; #X obj 184 164 t a b a; #X msg 211 273 symbol \$1-display; #X obj 152 318 symbol; #X msg 193 226 0; #X connect 0 0 14 0; #X connect 1 0 7 1; #X connect 2 0 0 0; #X connect 4 0 2 1; #X connect 5 0 7 1; #X connect 6 1 2 0; #X connect 7 0 1 0; #X connect 7 0 9 1; #X connect 8 0 19 0; #X connect 9 0 6 0; #X connect 10 0 11 0; #X connect 11 0 13 0; #X connect 12 0 11 1; #X connect 13 0 22 0; #X connect 14 0 3 0; #X connect 15 0 12 0; #X connect 15 2 7 0; #X connect 16 0 20 0; #X connect 17 0 15 0; #X connect 18 0 9 0; #X connect 18 2 14 0; #X connect 19 0 18 0; #X connect 20 0 23 0; #X connect 20 1 5 0; #X connect 20 2 21 0; #X connect 21 0 22 1; #X connect 22 0 8 0; #X connect 23 0 11 1; #X restore 54 150 pd \$0-Gpointer; #X obj 39 125 spigot; #X obj 141 86 spigot; #N canvas 0 0 474 324 \$0-demux4 0; #X obj 142 23 inlet; #X obj 280 25 inlet; #X obj 97 248 outlet; #X obj 152 248 outlet; #X obj 212 248 outlet; #X obj 275 251 outlet; #X obj 205 56 == 0; #X obj 112 126 spigot; #X obj 235 67 == 1; #X obj 186 125 spigot; #X obj 265 66 == 2; #X obj 258 123 spigot; #X obj 296 65 == 3; #X obj 62 130 spigot; #X connect 0 0 11 0; #X connect 0 0 9 0; #X connect 0 0 7 0; #X connect 0 0 13 0; #X connect 1 0 12 0; #X connect 1 0 10 0; #X connect 1 0 8 0; #X connect 1 0 6 0; #X connect 6 0 13 1; #X connect 7 0 3 0; #X connect 8 0 7 1; #X connect 9 0 4 0; #X connect 10 0 9 1; #X connect 11 0 5 0; #X connect 12 0 11 1; #X connect 13 0 2 0; #X restore 53 306 pd \$0-demux4; #X obj 82 272 get \$0-group dir; #X obj 54 248 t a a; #X text 20 415 move the note group; #X text 196 271 get direction to move note \, 0 ->E 1->N 2->W 3->S ; #N canvas 0 0 440 241 \$0-downward 0; #X obj 145 4 inlet; #X obj 214 139 spigot; #X obj 212 116 sel 200; #X obj 72 48 get \$0-note y x; #X msg 219 163 0; #X obj 282 103 <= 300; #X obj 101 158 set \$0-group y; #X obj 260 182 set \$0-group dir; #X obj 308 80 r \$0-LENGTH; #X obj 257 18 r \$0-HEIGTH; #X obj 81 92 + 1; #X obj 96 72 r \$0-SPEED; #X obj 329 20 r \$0-ROOF; #X obj 288 54 + 50; #X obj 145 23 t a a; #X connect 0 0 14 0; #X connect 1 0 4 0; #X connect 2 0 1 0; #X connect 3 0 10 0; #X connect 3 1 5 0; #X connect 4 0 7 0; #X connect 5 0 1 1; #X connect 8 0 5 1; #X connect 9 0 13 0; #X connect 10 0 2 0; #X connect 10 0 6 0; #X connect 11 0 10 1; #X connect 12 0 13 1; #X connect 13 0 2 1; #X connect 14 0 3 0; #X connect 14 1 7 1; #X connect 14 1 6 1; #X restore 343 393 pd \$0-downward; #N canvas 63 53 438 589 \$0-backward 0; #X obj 69 18 inlet; #N canvas 0 0 462 312 \$0-group-direction 0; #X obj 160 23 inlet; #X obj 114 143 outlet; #X obj 263 227 outlet; #X obj 225 180 spigot; #X obj 223 157 sel 50; #X msg 225 233 3; #X obj 269 156 <= 200; #X obj 186 301 set \$0-group x; #X obj 226 255 set \$0-group dir; #X obj 169 82 get \$0-group x y; #X obj 296 302 r \$0GPOINTER; #X obj 317 232 r \$0GPOINTER; #X obj 300 132 r \$0-HEIGTH; #X obj 201 104 r \$0-SPEED; #X obj 225 200 t b b; #X obj 185 149 - 1; #X connect 0 0 9 0; #X connect 3 0 14 0; #X connect 4 0 3 0; #X connect 5 0 8 0; #X connect 6 0 3 1; #X connect 9 0 1 0; #X connect 9 0 4 0; #X connect 9 0 15 0; #X connect 9 1 6 0; #X connect 10 0 7 1; #X connect 11 0 8 1; #X connect 12 0 6 1; #X connect 13 0 15 1; #X connect 14 0 5 0; #X connect 14 1 2 0; #X connect 15 0 7 0; #X restore 281 83 pd \$0-group-direction; #X obj 259 118 get \$0-group x p; #X obj 236 170 <= 200; #X obj 265 139 r \$0-CURSOR; #X obj 273 202 &; #X obj 194 205 spigot; #X obj 194 239 t b b a b a a; #X obj 315 251 t b a; #X msg 315 279 0; #X obj 315 298 set \$0-group p; #X obj 157 301 element \$0-group notes; #X obj 237 56 t a a a; #X obj 157 322 get \$0-note l x y; #X obj 200 416 i; #X obj 164 344 t b a b a; #X obj 334 383 r \$0-BPM; #X obj 335 403 * 8; #X obj 273 449 /; #X obj 275 404 t b a; #X obj 271 468 t a a; #N canvas 409 91 518 368 \$0-groupsize 0; #X obj 156 9 inlet; #X obj 246 8 inlet; #X obj 195 289 outlet; #X obj 187 44 getsize \$0-group notes; #X obj 179 192 spigot; #N canvas 0 0 454 304 \$0-cnt 0; #X obj 90 107 i; #X obj 116 108 + 1; #X obj 97 22 inlet; #X obj 95 277 outlet; #X obj 144 23 inlet; #X obj 94 176 mod 4; #X msg 127 65 0; #X connect 0 0 1 0; #X connect 0 0 5 0; #X connect 1 0 0 1; #X connect 2 0 0 0; #X connect 4 0 6 0; #X connect 4 0 5 1; #X connect 5 0 3 0; #X connect 6 0 0 1; #X restore 185 223 pd \$0-cnt; #X msg 186 140 0; #X obj 185 250 t a a; #X obj 187 78 t b a; #X msg 270 124 1; #X obj 186 107 sel; #X floatatom 228 97 5 0 0 0 - - -; #X obj 101 172 + 1; #X connect 0 0 4 0; #X connect 1 0 3 0; #X connect 1 0 9 0; #X connect 3 0 8 0; #X connect 4 0 5 0; #X connect 5 0 7 0; #X connect 6 0 4 1; #X connect 7 0 2 0; #X connect 7 1 12 0; #X connect 8 1 10 1; #X connect 8 1 5 1; #X connect 9 0 4 1; #X connect 10 0 6 0; #X connect 12 0 10 0; #X restore 161 276 pd \$0-groupsize; #X floatatom 307 496 5 0 0 0 - - -; #X obj 273 430 f 1920; #X obj 31 384 del 125; #X obj 273 382 clip 1 64; #X obj 173 505 pack f 80 250; #X text 62 0 pointer; #X obj 208 481 inlet; #X text 199 463 range; #X obj 173 540 outlet; #X connect 0 0 12 0; #X connect 2 0 3 0; #X connect 2 1 5 1; #X connect 3 0 5 0; #X connect 4 0 3 1; #X connect 5 0 6 1; #X connect 6 0 7 0; #X connect 7 1 21 0; #X connect 7 2 21 1; #X connect 7 4 11 1; #X connect 7 5 8 0; #X connect 8 0 9 0; #X connect 8 1 10 1; #X connect 9 0 10 0; #X connect 11 0 13 0; #X connect 12 0 6 0; #X connect 12 1 2 0; #X connect 12 2 1 0; #X connect 13 0 15 0; #X connect 13 2 14 1; #X connect 14 0 26 0; #X connect 15 0 24 0; #X connect 15 2 14 0; #X connect 15 3 25 0; #X connect 16 0 17 0; #X connect 17 0 23 1; #X connect 18 0 20 0; #X connect 19 0 23 0; #X connect 19 1 18 1; #X connect 20 0 24 1; #X connect 20 1 22 0; #X connect 20 1 26 2; #X connect 21 0 11 0; #X connect 23 0 18 0; #X connect 24 0 21 0; #X connect 25 0 19 0; #X connect 26 0 30 0; #X connect 28 0 26 1; #X restore 215 393 pd \$0-backward; #N canvas 25 257 380 409 \$0-upward 0; #X obj 78 2 inlet; #X obj 97 211 spigot; #X msg 97 245 2; #X obj 75 120 - 1; #X obj 182 123 >= 300; #X obj 75 360 set \$0-group y; #X obj 97 309 set \$0-group dir; #X obj 75 74 get \$0-group y x; #X obj 97 188 sel 50; #X obj 190 102 r \$0-LENGTH; #X obj 91 99 r \$0-SPEED; #X obj 102 149 r \$0-ROOF; #X msg 285 274 1; #X obj 76 33 t a a a; #X obj 183 240 b; #X obj 260 307 set \$0-group p; #X connect 0 0 13 0; #X connect 1 0 2 0; #X connect 1 0 14 0; #X connect 2 0 6 0; #X connect 3 0 5 0; #X connect 3 0 8 0; #X connect 4 0 1 1; #X connect 7 0 3 0; #X connect 7 1 4 0; #X connect 8 0 1 0; #X connect 9 0 4 1; #X connect 10 0 3 1; #X connect 11 0 8 1; #X connect 12 0 15 0; #X connect 13 0 7 0; #X connect 13 2 15 1; #X connect 13 2 5 1; #X connect 13 2 6 1; #X connect 14 0 12 0; #X restore 120 393 pd \$0-upward; #N canvas 0 94 428 235 \$0-forward 0; #X obj 103 16 inlet; #X obj 236 130 sel 300; #X msg 242 177 1; #X obj 237 151 spigot; #X obj 61 119 + 1; #X obj 36 71 get \$0-group x y; #X obj 147 204 set \$0-group dir; #X obj 47 179 set \$0-group x; #X obj 282 127 >= 100; #X obj 270 83 r \$0-LENGTH; #X obj 63 93 r \$0-SPEED; #X obj 308 104 r \$0-ROOF; #X obj 111 41 t a a; #X connect 0 0 12 0; #X connect 1 0 3 0; #X connect 2 0 6 0; #X connect 3 0 2 0; #X connect 4 0 1 0; #X connect 4 0 7 0; #X connect 5 0 4 0; #X connect 5 1 8 0; #X connect 8 0 3 1; #X connect 9 0 1 1; #X connect 10 0 4 1; #X connect 11 0 8 1; #X connect 12 0 5 0; #X connect 12 1 6 1; #X connect 12 1 7 1; #X restore 23 392 pd \$0-forward; #X text 234 415 reading happens here; #X obj 40 28 route len; #X obj 44 -11 r \$0newgroup; #X obj 144 -13 r \$0-SCORE; #X obj 53 175 t a a; #X obj 81 201 s \$0GPOINTER; #X obj 214 110 r \$0-INIT; #X obj 144 7 t a a; #X msg 165 29 \$1; #X obj 141 106 t b a; #X msg 188 299 \$5; #X text 55 375 0; #X text 138 375 1; #X text 231 375 2; #X text 369 373 3; #X text 15 3 comment; #X obj 159 50 == 3; #X msg 143 131 3; #N canvas 0 0 482 372 \$0-play 0; #X obj 131 215 makenote 80 200; #X obj 112 130 - 24; #X obj 112 156 abs; #X obj 112 108 / 5; #X obj 131 191 + 50; #X obj 147 157 * 24; #N canvas 0 10 407 472 s 0; #X obj 51 208 mtof; #X obj 51 157 stripnote; #X obj 202 213 select; #X obj 193 107 float; #X obj 202 181 float; #X obj 51 34 unpack; #X obj 132 264 line~; #X obj 193 136 sel 0; #X obj 53 412 hip~ 5; #X obj 52 336 *~; #X obj 51 235 phasor~; #X obj 51 259 -~ 0.5; #X obj 52 287 cos~; #X obj 140 311 *~; #X obj 52 311 +~ 1; #X obj 140 359 cos~; #X text 56 185 pitch; #X obj 53 358 *~; #X obj 132 211 / 127; #X obj 140 335 *~ 2; #X obj 161 288 +~ 0.5; #X obj 51 14 inlet; #X obj 53 437 outlet~; #X msg 133 238 \$1 10; #X msg 202 239 0 10; #N canvas 0 0 1012 688 \$0-adsr 0; #X obj 105 111 inlet; #X obj 435 151 inlet; #X text 101 86 trigger; #X obj 105 139 sel 0; #X obj 244 155 t b; #X obj 166 264 f \$1; #X obj 166 289 pack 0 \$2; #X obj 492 151 inlet; #X obj 438 281 del \$2; #X obj 458 429 line~; #X obj 462 304 f \$4; #X obj 501 379 pack 0 \$3; #X obj 554 151 inlet; #X obj 616 151 inlet; #X obj 689 150 inlet; #X msg 105 170 stop; #X obj 612 306 pack 0 \$5; #X text 435 129 level; #X obj 501 355 * \$1; #X obj 458 454 outlet~; #X text 102 378 and pack with; #X text 103 398 attack time; #X text 31 126 if zero; #X text 32 143 release; #X text 12 160 and cancel; #X text 43 177 decay; #X text 284 272 on attack \, set a; #X text 278 305 recall sustain value; #X text 315 378 pack with decay time; #X text 605 332 on release ramp; #X text 606 349 back to zero; #X obj 462 329 * 0.01; #X text 47 567 Objects such as "f" and "pack" can be given dollar sign arguments to initialize their contents from adsr's creation arguments. Inlets are supplied to change them on the fly.; #X text 13 2 ADSR ENVELOPE; #X text 488 129 attack; #X text 555 128 decay; #X text 609 129 sustain; #X text 686 129 release; #X text 202 71 attack; #X obj 204 92 moses; #X obj 194 122 t b b; #X msg 128 290 0; #X text 20 273 optionally; #X text 10 291 bash to zero; #X text 25 246 ATTACK:; #X text 49 477 When you send this patch a positive trigger it schedules a line~ to do an attack and decay \, and if zero \, it starts the release ramp.; #X text 495 629 Updated for Pd version 0.37; #X text 255 89 test for negative trigger; #X text 253 113 if so \, zero; #X text 254 129 the output; #X text 278 165 in any case; #X text 303 355 multiply by peak level; #X text 280 286 delay for sustain; #X text 276 328 convert from percent; #X text 155 340 ... then; #X text 103 359 recall peak level; #X text 439 113 peak; #X text 281 149 ... do this; #X text 47 529 Negative triggers cause the output to jump to zero and then attack (instead of attacking from the current location).; #X text 208 1 Arguments: level \, attack time \, decay time \, sustain level \, release time. A \, D \, and R are in msec and S is in percent. This patch is used as an abstraction in various examples.; #X connect 0 0 3 0; #X connect 1 0 5 1; #X connect 1 0 18 1; #X connect 3 0 15 0; #X connect 3 0 16 0; #X connect 3 1 39 0; #X connect 4 0 5 0; #X connect 4 0 8 0; #X connect 5 0 6 0; #X connect 6 0 9 0; #X connect 7 0 6 1; #X connect 7 0 8 1; #X connect 8 0 10 0; #X connect 9 0 19 0; #X connect 10 0 31 0; #X connect 11 0 9 0; #X connect 12 0 11 1; #X connect 13 0 10 1; #X connect 14 0 16 1; #X connect 15 0 8 0; #X connect 16 0 9 0; #X connect 18 0 11 0; #X connect 31 0 18 0; #X connect 39 0 40 0; #X connect 39 1 4 0; #X connect 40 0 4 0; #X connect 40 1 41 0; #X connect 41 0 9 0; #X restore 247 366 pd \$0-adsr; #X obj 53 382 *~; #X obj 202 75 t b f b; #X obj 264 327 unpack f f f f f; #X obj 306 166 r \$0-ADSR; #X msg 246 246 1; #X obj 190 404 *~ 0.01; #X connect 0 0 10 0; #X connect 1 0 2 1; #X connect 1 0 0 0; #X connect 2 0 24 0; #X connect 3 0 7 0; #X connect 4 0 2 0; #X connect 5 0 1 0; #X connect 5 0 27 0; #X connect 5 1 1 1; #X connect 5 1 3 1; #X connect 6 0 17 1; #X connect 6 0 20 0; #X connect 7 0 4 0; #X connect 7 1 18 0; #X connect 8 0 22 0; #X connect 9 0 17 0; #X connect 10 0 11 0; #X connect 11 0 13 0; #X connect 11 0 12 0; #X connect 12 0 14 0; #X connect 13 0 19 0; #X connect 14 0 9 0; #X connect 15 0 9 1; #X connect 17 0 26 0; #X connect 18 0 23 0; #X connect 19 0 15 0; #X connect 20 0 13 1; #X connect 21 0 5 0; #X connect 23 0 6 0; #X connect 24 0 6 0; #X connect 25 0 31 0; #X connect 26 0 8 0; #X connect 27 0 3 0; #X connect 27 1 4 1; #X connect 27 2 30 0; #X connect 28 0 25 1; #X connect 28 1 25 2; #X connect 28 2 25 3; #X connect 28 3 25 4; #X connect 28 4 25 5; #X connect 29 0 28 0; #X connect 30 0 25 0; #X connect 31 0 26 1; #X restore 135 272 pd s; #X obj 132 241 pack f f; #X obj 148 14 inlet; #X obj 144 41 unpack f f f; #X obj 134 302 throw~ \$0-SCORE0; #X connect 0 0 7 0; #X connect 0 1 7 1; #X connect 1 0 2 0; #X connect 2 0 4 0; #X connect 3 0 1 0; #X connect 4 0 0 0; #X connect 5 0 4 1; #X connect 6 0 10 0; #X connect 7 0 6 0; #X connect 8 0 9 0; #X connect 9 0 3 0; #X connect 9 1 5 0; #X connect 9 2 0 2; #X restore 215 443 pd \$0-play; #X connect 0 0 16 0; #X connect 1 0 0 0; #X connect 2 0 21 0; #X connect 3 0 11 0; #X connect 3 1 10 0; #X connect 3 2 9 0; #X connect 3 3 8 0; #X connect 4 0 3 1; #X connect 5 0 3 0; #X connect 5 1 4 0; #X connect 9 0 30 0; #X connect 13 0 1 0; #X connect 14 0 13 0; #X connect 15 0 19 0; #X connect 16 0 5 0; #X connect 16 1 17 0; #X connect 18 0 29 0; #X connect 19 0 2 0; #X connect 19 1 20 0; #X connect 20 0 28 0; #X connect 21 0 29 0; #X connect 21 1 22 0; #X connect 22 0 9 1; #X connect 28 0 2 1; #X connect 28 0 1 1; #X connect 29 0 0 1; #X restore 369 131 pd \$0-Gmove3; #X connect 2 0 4 0; #X connect 4 0 3 0; #X connect 5 0 4 0; #X connect 6 0 4 1;