Compare commits
10 commits
f9aa8cfcd7
...
7e5ba6dd35
| Author | SHA1 | Date | |
|---|---|---|---|
| 7e5ba6dd35 | |||
| 4d56b4313b | |||
| c1185f820a | |||
| 16eac4a716 | |||
| a21d3de9a0 | |||
| 2862dcf42c | |||
| 206d768fcb | |||
| cc44e24e60 | |||
| b98355a766 | |||
| 6e88a7a1ef |
10 changed files with 2196 additions and 2737 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -2,3 +2,4 @@
|
|||
node_modules
|
||||
.DS_Store
|
||||
public/uploads
|
||||
puredata/sound-parade
|
||||
|
|
|
|||
2745
package-lock.json
generated
2745
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -19,6 +19,7 @@
|
|||
"moment-timezone": "^0.5.34",
|
||||
"nextcloud-node-client": "^1.8.2",
|
||||
"point-of-view": "^5.0.0",
|
||||
"short-uuid": "^4.2.2",
|
||||
"socket.io": "~2.3.0",
|
||||
"uuid": "^8.3.2"
|
||||
},
|
||||
|
|
@ -36,5 +37,8 @@
|
|||
],
|
||||
"devDependencies": {
|
||||
"nodemon": "^2.0.15"
|
||||
},
|
||||
"volta": {
|
||||
"node": "14.19.3"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
a.anchor {
|
||||
display: block;
|
||||
position: relative;
|
||||
top: -20vh;
|
||||
top: -6vh;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
|
|
@ -46,7 +46,7 @@ body::-webkit-scrollbar {
|
|||
height: 100vh;
|
||||
width: 100vw;
|
||||
/* z-index usage is up to you.. although there is no need of using it because the default stack context will work. */
|
||||
z-index: -1; // this is optional
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.arrow {
|
||||
|
|
|
|||
334
puredata/floating-world-sub.pd
Normal file
334
puredata/floating-world-sub.pd
Normal file
|
|
@ -0,0 +1,334 @@
|
|||
#N canvas 0 33 939 603 12;
|
||||
#X text 18 16 walker sound-parade/20220116-195752-26b5bfd0-76bb-11ec-a028-edb46eb87eb5/audio.wav
|
||||
;
|
||||
#X msg 17 491 \; pd-data3 clear;
|
||||
#N canvas 800 447 638 300 storage 1;
|
||||
#X restore 19 82 pd storage;
|
||||
#N canvas 196 114 615 428 noise 0;
|
||||
#X obj 84 300 else/f2s~ 50;
|
||||
#X obj 134 331 else/f2s~ 50;
|
||||
#X msg 84 219 1 \$1;
|
||||
#X obj 84 244 unpack f f;
|
||||
#X obj 147 170 expr ($f1/180) * pi;
|
||||
#X floatatom 147 140 5 0 0 1 deg - - 0;
|
||||
#X obj 147 99 line;
|
||||
#X floatatom 185 292 5 0 0 1 spread - - 0;
|
||||
#X msg 185 267 -0.7;
|
||||
#X obj 185 242 loadbang;
|
||||
#X obj 34 26 noise~;
|
||||
#X obj 34 51 hip~ 50;
|
||||
#X obj 34 76 lop~ 250;
|
||||
#X obj 34 101 lop~ 250;
|
||||
#X obj 34 393 dac~ 1 2 3 4 5 6 7 8;
|
||||
#X obj 147 18 inlet;
|
||||
#X obj 84 269 else/pol2car;
|
||||
#X obj 34 362 else/pan8~, f 22;
|
||||
#X obj 34 242 *~;
|
||||
#X obj 52 161 line~;
|
||||
#X msg 52 136 \$1 5000;
|
||||
#X obj 345 49 else/pi 1;
|
||||
#X obj 345 75 v pi;
|
||||
#X msg 147 68 -45 \, 315 10000;
|
||||
#X obj 147 43 metro 180000;
|
||||
#X obj 273 18 inlet;
|
||||
#X connect 0 0 17 1;
|
||||
#X connect 1 0 17 2;
|
||||
#X connect 2 0 3 0;
|
||||
#X connect 3 0 16 0;
|
||||
#X connect 3 1 16 1;
|
||||
#X connect 4 0 2 0;
|
||||
#X connect 5 0 4 0;
|
||||
#X connect 6 0 5 0;
|
||||
#X connect 7 0 17 3;
|
||||
#X connect 8 0 7 0;
|
||||
#X connect 9 0 8 0;
|
||||
#X connect 10 0 11 0;
|
||||
#X connect 11 0 12 0;
|
||||
#X connect 12 0 13 0;
|
||||
#X connect 13 0 18 0;
|
||||
#X connect 15 0 20 0;
|
||||
#X connect 15 0 24 0;
|
||||
#X connect 16 0 0 0;
|
||||
#X connect 16 1 1 0;
|
||||
#X connect 17 0 14 0;
|
||||
#X connect 17 1 14 1;
|
||||
#X connect 17 2 14 2;
|
||||
#X connect 17 3 14 3;
|
||||
#X connect 17 4 14 4;
|
||||
#X connect 17 5 14 5;
|
||||
#X connect 17 6 14 6;
|
||||
#X connect 17 7 14 7;
|
||||
#X connect 18 0 17 0;
|
||||
#X connect 19 0 18 1;
|
||||
#X connect 20 0 19 0;
|
||||
#X connect 21 0 22 0;
|
||||
#X connect 23 0 6 0;
|
||||
#X connect 24 0 23 0;
|
||||
#X connect 25 0 23 0;
|
||||
#X restore 678 356 pd noise panning;
|
||||
#X obj 678 330 tgl 15 0 empty empty KEEP\\\ SPKRS\\\ AWAKE 17 7 0 10
|
||||
#fcfcfc #000000 #000000 0 1;
|
||||
#X obj 805 341 bng 15 250 50 0 empty empty ! 17 7 0 10 #fcfcfc #000000
|
||||
#000000;
|
||||
#X obj 27 319 loadbang;
|
||||
#X msg 27 344 \; pd dsp 1;
|
||||
#N canvas 608 33 760 670 archive 0;
|
||||
#X obj 20 70 vu 20 80 empty empty -1 -8 0 10 #404040 #000000 1 0;
|
||||
#X obj 19 20 env~;
|
||||
#X obj 19 44 - 100;
|
||||
#X obj 70 70 vu 20 80 empty empty -1 -8 0 10 #404040 #000000 1 0;
|
||||
#X obj 69 20 env~;
|
||||
#X obj 69 44 - 100;
|
||||
#X obj 120 70 vu 20 80 empty empty -1 -8 0 10 #404040 #000000 1 0;
|
||||
#X obj 119 20 env~;
|
||||
#X obj 119 44 - 100;
|
||||
#X obj 170 70 vu 20 80 empty empty -1 -8 0 10 #404040 #000000 1 0;
|
||||
#X obj 169 20 env~;
|
||||
#X obj 169 44 - 100;
|
||||
#N canvas 812 185 513 527 stuff 0;
|
||||
#X obj 182 285 pointer;
|
||||
#X obj 175 456 append template3 x y w h q;
|
||||
#X obj 168 48 loadbang;
|
||||
#X obj 159 106 t b b b;
|
||||
#X msg 182 237 traverse pd-data3;
|
||||
#X msg 205 140 \; pd-data3 clear;
|
||||
#X msg 138 154 0;
|
||||
#X obj 85 180 f;
|
||||
#X obj 124 181 + 1;
|
||||
#X obj 87 156 until;
|
||||
#X obj 144 236 t b;
|
||||
#X msg 159 78 bang;
|
||||
#X obj 382 382 random 1000;
|
||||
#X obj 159 22 inlet;
|
||||
#X obj 182 314 trigger bang bang pointer;
|
||||
#X obj 239 406 + 20;
|
||||
#X obj 311 406 + 20;
|
||||
#X obj 158 408 + 10;
|
||||
#X obj 311 382 random 30;
|
||||
#X obj 239 382 random 30;
|
||||
#X obj 77 382 random 590;
|
||||
#X text 360 342 canvas size 640x350;
|
||||
#X obj 158 382 random 290;
|
||||
#X obj 95 416 640;
|
||||
#X obj 105 210 sel 1;
|
||||
#X connect 0 0 14 0;
|
||||
#X connect 2 0 11 0;
|
||||
#X connect 3 0 9 0;
|
||||
#X connect 3 1 4 0;
|
||||
#X connect 3 1 6 0;
|
||||
#X connect 3 2 5 0;
|
||||
#X connect 4 0 0 0;
|
||||
#X connect 6 0 7 1;
|
||||
#X connect 7 0 8 0;
|
||||
#X connect 7 0 24 0;
|
||||
#X connect 8 0 7 1;
|
||||
#X connect 9 0 7 0;
|
||||
#X connect 10 0 0 0;
|
||||
#X connect 11 0 3 0;
|
||||
#X connect 12 0 1 4;
|
||||
#X connect 13 0 11 0;
|
||||
#X connect 14 0 20 0;
|
||||
#X connect 14 0 23 0;
|
||||
#X connect 14 1 12 0;
|
||||
#X connect 14 1 18 0;
|
||||
#X connect 14 1 19 0;
|
||||
#X connect 14 1 22 0;
|
||||
#X connect 14 2 1 5;
|
||||
#X connect 15 0 1 2;
|
||||
#X connect 16 0 1 3;
|
||||
#X connect 17 0 1 1;
|
||||
#X connect 18 0 16 0;
|
||||
#X connect 19 0 15 0;
|
||||
#X connect 22 0 17 0;
|
||||
#X connect 23 0 1 0;
|
||||
#X connect 24 0 9 1;
|
||||
#X connect 24 1 10 0;
|
||||
#X restore 254 82 pd stuff;
|
||||
#X msg 254 31 remake;
|
||||
#X text 278 56 <= click to randomize;
|
||||
#X floatatom 558 380 5 0 0 0 - - - 0;
|
||||
#X obj 558 355 + 5000;
|
||||
#X obj 558 160 hradio 15 1 0 5 empty empty empty 0 -8 0 10 #fcfcfc
|
||||
#000000 #000000 0;
|
||||
#X obj 558 180 sel 0 1 2 3 4;
|
||||
#X msg 575 233 10000;
|
||||
#X msg 558 132 set \$1;
|
||||
#X msg 593 259 20000;
|
||||
#X msg 610 286 30000;
|
||||
#X msg 628 313 60000;
|
||||
#X msg 558 208 0;
|
||||
#X obj 558 91 random 5;
|
||||
#X obj 558 30 retro 5000 25000;
|
||||
#X obj 54 285 v n;
|
||||
#X obj 22 240 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000
|
||||
#000000;
|
||||
#X obj 22 260 t b b;
|
||||
#X obj 22 434 s ask;
|
||||
#X obj 100 220 r post;
|
||||
#X msg 22 409 get \$1;
|
||||
#X obj 100 251 makefilename sound-parade/%s/audio.wav;
|
||||
#X obj 22 335 f;
|
||||
#X obj 58 335 + 1;
|
||||
#X obj 22 360 mod;
|
||||
#X floatatom 54 310 5 0 0 0 - - - 0;
|
||||
#X floatatom 22 385 5 0 0 0 - - - 0;
|
||||
#X obj 116 175 retro 5000 25000;
|
||||
#X obj 137 443 else/dir;
|
||||
#X obj 137 590 list store;
|
||||
#X obj 107 575 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc
|
||||
#000000 #000000;
|
||||
#X obj 137 504 list prepend append;
|
||||
#X obj 137 529 list trim;
|
||||
#X obj 137 351 bng 15 250 50 0 empty empty update\\\ list 17 7 0 10
|
||||
#fcfcfc #000000 #000000;
|
||||
#X obj 137 371 t b b;
|
||||
#X obj 221 449 v n;
|
||||
#X floatatom 172 474 5 0 0 1 n - - 0;
|
||||
#X obj 137 615 s post;
|
||||
#X obj 234 553 r ask;
|
||||
#X obj 137 320 loadbang;
|
||||
#X msg 137 412 open /home/doohoyi/Downloads/sound-parade \, dump \,
|
||||
n;
|
||||
#X connect 1 0 2 0;
|
||||
#X connect 2 0 0 0;
|
||||
#X connect 4 0 5 0;
|
||||
#X connect 5 0 3 0;
|
||||
#X connect 7 0 8 0;
|
||||
#X connect 8 0 6 0;
|
||||
#X connect 10 0 11 0;
|
||||
#X connect 11 0 9 0;
|
||||
#X connect 13 0 12 0;
|
||||
#X connect 16 0 15 0;
|
||||
#X connect 17 0 18 0;
|
||||
#X connect 18 0 24 0;
|
||||
#X connect 18 1 19 0;
|
||||
#X connect 18 2 21 0;
|
||||
#X connect 18 3 22 0;
|
||||
#X connect 18 4 23 0;
|
||||
#X connect 19 0 16 0;
|
||||
#X connect 20 0 17 0;
|
||||
#X connect 21 0 16 0;
|
||||
#X connect 22 0 16 0;
|
||||
#X connect 23 0 16 0;
|
||||
#X connect 24 0 16 0;
|
||||
#X connect 25 0 20 0;
|
||||
#X connect 26 0 25 0;
|
||||
#X connect 27 0 37 0;
|
||||
#X connect 28 0 29 0;
|
||||
#X connect 29 0 34 0;
|
||||
#X connect 29 1 27 0;
|
||||
#X connect 31 0 33 0;
|
||||
#X connect 32 0 30 0;
|
||||
#X connect 34 0 35 0;
|
||||
#X connect 34 0 36 0;
|
||||
#X connect 35 0 34 1;
|
||||
#X connect 36 0 38 0;
|
||||
#X connect 37 0 36 1;
|
||||
#X connect 38 0 32 0;
|
||||
#X connect 39 0 28 0;
|
||||
#X connect 40 0 43 0;
|
||||
#X connect 40 2 48 0;
|
||||
#X connect 41 0 49 0;
|
||||
#X connect 42 0 41 0;
|
||||
#X connect 43 0 44 0;
|
||||
#X connect 44 0 41 0;
|
||||
#X connect 45 0 46 0;
|
||||
#X connect 46 0 52 0;
|
||||
#X connect 46 1 41 1;
|
||||
#X connect 48 0 47 0;
|
||||
#X connect 50 0 41 0;
|
||||
#X connect 51 0 45 0;
|
||||
#X connect 52 0 40 0;
|
||||
#X restore 16 568 pd archive;
|
||||
#N canvas 798 33 640 350 data3 1;
|
||||
#X restore 39 434 pd data3;
|
||||
#N canvas 861 486 512 300 template3 0;
|
||||
#X obj 48 98 filledpolygon q 0 1 0 0 w 0 w h 0 h;
|
||||
#X text 44 53 five numeric ("float") fields;
|
||||
#X text 48 118 drawing a rectangle \, interior color q \, border black
|
||||
and one unit thick \, through the points (0 \, 0) \, (w \, 0) \, (w
|
||||
\, h) \, and (0 \, h). Note that the three points containing variables
|
||||
become hot spots for mouse dragging.;
|
||||
#X obj 46 33 struct template3 float x float y float w float h float
|
||||
q;
|
||||
#X restore 39 459 pd template3;
|
||||
#X obj 18 122 netreceive 3000;
|
||||
#X msg 542 55 connect 192.168.43.3 3000;
|
||||
#X obj 542 80 netsend;
|
||||
#X floatatom 615 23 5 0 0 0 - - - 0;
|
||||
#X msg 136 92 listen 10000;
|
||||
#X msg 750 30 disconnect \, connect localhost 10001, f 18;
|
||||
#X obj 18 206 v keep_spkrs_alive;
|
||||
#X obj 639 226 v keep_spkrs_alive;
|
||||
#X obj 639 171 metro 1000;
|
||||
#X obj 639 126 loadbang;
|
||||
#X obj 639 151 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000
|
||||
#000000 0 1;
|
||||
#X msg 639 251 send alive_ack \$1;
|
||||
#X obj 166 325 unpack s f;
|
||||
#X msg 233 375 add2 \$1;
|
||||
#X obj 166 406 list prepend add2;
|
||||
#X obj 166 431 list trim;
|
||||
#X obj 166 456 t b a;
|
||||
#X msg 198 507 \; pd-storage obj 100 100 walker 0 20000 sound-parade/20221118-125020-1f36eca0-66f4-11ed-ba7e-b56ea38413bb/audio.wav
|
||||
;
|
||||
#X msg 279 431 set \, addsemi \, add2 pd-storage obj 100 100 walker
|
||||
;
|
||||
#X obj 233 350 t f b b;
|
||||
#X msg 256 481 add2 \$1;
|
||||
#X floatatom 256 457 5 0 0 0 - - - 0;
|
||||
#X msg 371 374 set \$1;
|
||||
#X obj 371 324 loadbang;
|
||||
#X msg 371 349 0.45;
|
||||
#X obj 73 180 v gain_adjust;
|
||||
#X obj 789 226 v gain_adjust;
|
||||
#X floatatom 863 195 5 0 0 0 - - - 0;
|
||||
#X msg 789 251 send gain_ack \$1;
|
||||
#X obj 267 115 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc
|
||||
#000000 #000000;
|
||||
#X obj 18 155 route alive gain newconn;
|
||||
#X obj 678 298 change;
|
||||
#X obj 440 108 list;
|
||||
#X connect 4 0 3 0;
|
||||
#X connect 5 0 3 1;
|
||||
#X connect 6 0 7 0;
|
||||
#X connect 11 0 41 0;
|
||||
#X connect 12 0 13 0;
|
||||
#X connect 14 0 13 0;
|
||||
#X connect 15 0 11 0;
|
||||
#X connect 16 0 13 0;
|
||||
#X connect 18 0 22 0;
|
||||
#X connect 18 0 42 0;
|
||||
#X connect 19 0 18 0;
|
||||
#X connect 19 0 37 0;
|
||||
#X connect 20 0 21 0;
|
||||
#X connect 21 0 19 0;
|
||||
#X connect 22 0 13 0;
|
||||
#X connect 23 0 25 0;
|
||||
#X connect 23 1 30 0;
|
||||
#X connect 24 0 28 0;
|
||||
#X connect 25 0 26 0;
|
||||
#X connect 26 0 27 0;
|
||||
#X connect 27 0 28 0;
|
||||
#X connect 27 1 28 0;
|
||||
#X connect 29 0 28 0;
|
||||
#X connect 30 0 24 0;
|
||||
#X connect 30 1 32 0;
|
||||
#X connect 30 2 29 0;
|
||||
#X connect 31 0 28 0;
|
||||
#X connect 32 0 31 0;
|
||||
#X connect 33 0 32 0;
|
||||
#X connect 34 0 35 0;
|
||||
#X connect 35 0 33 0;
|
||||
#X connect 37 0 33 0;
|
||||
#X connect 37 0 38 0;
|
||||
#X connect 37 0 39 0;
|
||||
#X connect 39 0 13 0;
|
||||
#X connect 40 0 12 0;
|
||||
#X connect 41 0 17 0;
|
||||
#X connect 41 1 36 0;
|
||||
#X connect 41 2 40 0;
|
||||
#X connect 41 3 23 0;
|
||||
#X connect 41 3 43 0;
|
||||
#X connect 42 0 4 0;
|
||||
#X connect 43 0 13 0;
|
||||
762
puredata/floating-world.pd
Normal file
762
puredata/floating-world.pd
Normal file
|
|
@ -0,0 +1,762 @@
|
|||
#N struct template3 float x float y float w float h float q;
|
||||
#N canvas 0 33 1440 719 12;
|
||||
#X obj 54 224 v n;
|
||||
#X obj 20 142 bng 40 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
|
||||
#X obj 22 199 t b b;
|
||||
#X obj 22 373 s ask;
|
||||
#X msg 22 348 get \$1;
|
||||
#X obj 22 274 f;
|
||||
#X obj 58 274 + 1;
|
||||
#X obj 22 299 mod;
|
||||
#X floatatom 54 249 5 0 0 0 - - - 0;
|
||||
#X floatatom 22 324 5 0 0 0 - - - 0;
|
||||
#X msg 518 143 set \$1;
|
||||
#X obj 518 61 retro 5000 25000;
|
||||
#N canvas 871 351 450 300 archive 0;
|
||||
#X obj 20 70 vu 20 80 empty empty -1 -8 0 10 #404040 #000000 1 0;
|
||||
#X obj 19 20 env~;
|
||||
#X obj 19 44 - 100;
|
||||
#X obj 70 70 vu 20 80 empty empty -1 -8 0 10 #404040 #000000 1 0;
|
||||
#X obj 69 20 env~;
|
||||
#X obj 69 44 - 100;
|
||||
#X obj 120 70 vu 20 80 empty empty -1 -8 0 10 #404040 #000000 1 0;
|
||||
#X obj 119 20 env~;
|
||||
#X obj 119 44 - 100;
|
||||
#X obj 170 70 vu 20 80 empty empty -1 -8 0 10 #404040 #000000 1 0;
|
||||
#X obj 169 20 env~;
|
||||
#X obj 169 44 - 100;
|
||||
#N canvas 812 185 513 527 stuff 0;
|
||||
#X obj 182 285 pointer;
|
||||
#X obj 175 456 append template3 x y w h q;
|
||||
#X obj 168 48 loadbang;
|
||||
#X obj 159 106 t b b b;
|
||||
#X msg 182 237 traverse pd-data3;
|
||||
#X msg 205 140 \; pd-data3 clear;
|
||||
#X msg 138 154 0;
|
||||
#X obj 85 180 f;
|
||||
#X obj 124 181 + 1;
|
||||
#X obj 87 156 until;
|
||||
#X obj 144 236 t b;
|
||||
#X msg 159 78 bang;
|
||||
#X obj 382 382 random 1000;
|
||||
#X obj 159 22 inlet;
|
||||
#X obj 182 314 trigger bang bang pointer;
|
||||
#X obj 239 406 + 20;
|
||||
#X obj 311 406 + 20;
|
||||
#X obj 158 408 + 10;
|
||||
#X obj 311 382 random 30;
|
||||
#X obj 239 382 random 30;
|
||||
#X obj 77 382 random 590;
|
||||
#X text 360 342 canvas size 640x350;
|
||||
#X obj 158 382 random 290;
|
||||
#X obj 95 416 640;
|
||||
#X obj 105 210 sel 1;
|
||||
#X connect 0 0 14 0;
|
||||
#X connect 2 0 11 0;
|
||||
#X connect 3 0 9 0;
|
||||
#X connect 3 1 4 0;
|
||||
#X connect 3 1 6 0;
|
||||
#X connect 3 2 5 0;
|
||||
#X connect 4 0 0 0;
|
||||
#X connect 6 0 7 1;
|
||||
#X connect 7 0 8 0;
|
||||
#X connect 7 0 24 0;
|
||||
#X connect 8 0 7 1;
|
||||
#X connect 9 0 7 0;
|
||||
#X connect 10 0 0 0;
|
||||
#X connect 11 0 3 0;
|
||||
#X connect 12 0 1 4;
|
||||
#X connect 13 0 11 0;
|
||||
#X connect 14 0 20 0;
|
||||
#X connect 14 0 23 0;
|
||||
#X connect 14 1 12 0;
|
||||
#X connect 14 1 18 0;
|
||||
#X connect 14 1 19 0;
|
||||
#X connect 14 1 22 0;
|
||||
#X connect 14 2 1 5;
|
||||
#X connect 15 0 1 2;
|
||||
#X connect 16 0 1 3;
|
||||
#X connect 17 0 1 1;
|
||||
#X connect 18 0 16 0;
|
||||
#X connect 19 0 15 0;
|
||||
#X connect 22 0 17 0;
|
||||
#X connect 23 0 1 0;
|
||||
#X connect 24 0 9 1;
|
||||
#X connect 24 1 10 0;
|
||||
#X restore 254 82 pd stuff;
|
||||
#X msg 254 31 remake;
|
||||
#X text 278 56 <= click to randomize;
|
||||
#X connect 1 0 2 0;
|
||||
#X connect 2 0 0 0;
|
||||
#X connect 4 0 5 0;
|
||||
#X connect 5 0 3 0;
|
||||
#X connect 7 0 8 0;
|
||||
#X connect 8 0 6 0;
|
||||
#X connect 10 0 11 0;
|
||||
#X connect 11 0 9 0;
|
||||
#X connect 13 0 12 0;
|
||||
#X restore 1346 678 pd archive;
|
||||
#N canvas 0 0 567 464 list 0;
|
||||
#X obj 115 218 else/dir;
|
||||
#X obj 115 365 list store;
|
||||
#X obj 85 350 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000;
|
||||
#X obj 115 279 list prepend append;
|
||||
#X obj 115 304 list trim;
|
||||
#X obj 22 30 bng 15 250 50 0 empty empty update\ list 17 7 0 10 #00ff04 #000000 #000000;
|
||||
#X obj 115 106 t b b;
|
||||
#X obj 199 224 v n;
|
||||
#X floatatom 150 249 5 0 0 1 n - - 0;
|
||||
#X obj 212 328 r ask;
|
||||
#X obj 115 55 loadbang;
|
||||
#X msg 115 147 open /home/doohoyi/Projects/sound-parade/puredata/sound-parade \, dump \, n;
|
||||
#X floatatom 45 52 4 0 0 1 n - - 0;
|
||||
#X obj 115 390 s ret;
|
||||
#X connect 0 0 3 0;
|
||||
#X connect 0 2 8 0;
|
||||
#X connect 0 2 12 0;
|
||||
#X connect 1 0 13 0;
|
||||
#X connect 2 0 1 0;
|
||||
#X connect 3 0 4 0;
|
||||
#X connect 4 0 1 0;
|
||||
#X connect 5 0 6 0;
|
||||
#X connect 6 0 11 0;
|
||||
#X connect 6 1 1 1;
|
||||
#X connect 8 0 7 0;
|
||||
#X connect 9 0 1 0;
|
||||
#X connect 10 0 5 0;
|
||||
#X connect 11 0 0 0;
|
||||
#X coords 0 -1 1 1 85 60 2 20 20;
|
||||
#X restore 22 512 pd list;
|
||||
#X obj 465 182 makefilename sound-parade/%s/audio.wav;
|
||||
#X floatatom 518 272 12 0 0 0 - - - 0;
|
||||
#X obj 518 227 hradio 15 1 0 5 empty empty empty 0 -8 0 10 #fcfcfc #000000 #000000 0;
|
||||
#X obj 465 207 t a b;
|
||||
#X obj 465 302 pack s f;
|
||||
#X obj 1147 388 netsend;
|
||||
#X obj 1127 35 netreceive 3000;
|
||||
#X obj 166 510 spigot;
|
||||
#X obj 205 479 tgl 20 0 empty empty to\ me(main) 10 -10 0 12 #fcfcfc #000000 #000000 0 1;
|
||||
#X obj 428 510 spigot;
|
||||
#X obj 467 479 tgl 20 0 empty empty to\ sub 0 -10 0 12 #fcfcfc #000000 #000000 0 1;
|
||||
#X obj 264 356 random 3;
|
||||
#X obj 264 381 sel 0 1 2, f 17;
|
||||
#X obj 302 431 unpack;
|
||||
#X msg 264 406 1 0;
|
||||
#X msg 302 406 0 1;
|
||||
#X msg 341 406 1 1;
|
||||
#X obj 232 274 t a b;
|
||||
#X obj 1147 282 loadbang;
|
||||
#X obj 120 114 retro 10000 100000;
|
||||
#X obj 22 62 retro 10000 50000;
|
||||
#X msg 83 192 0;
|
||||
#X obj 96 280 bng 15 250 50 0 empty empty again! 17 7 0 10 #ff8300 #000000 #000000;
|
||||
#X obj 1127 212 tgl 15 0 empty empty KEEP\ SPKRS\ AWAKE 17 7 0 10 #faff00 #000000 #000000 0 1;
|
||||
#X msg 1127 248 send alive \$1;
|
||||
#X msg 1247 357 disconnect \, connect localhost 10000, f 18;
|
||||
#X msg 1245 35 listen 10001, f 7;
|
||||
#X obj 1331 51 spigot;
|
||||
#X obj 1404 52 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1;
|
||||
#X obj 1127 122 tgl 15 0 empty empty stat:KEEP\ SPKRS\ AWAKE 17 7 0 10 #ffffff #000000 #000000 0 1;
|
||||
#X obj 264 325 spigot;
|
||||
#X obj 303 305 tgl 15 0 empty empty randomize\ stream\ select 17 7 0 10 #fcfcfc #000000 #000000 0 1;
|
||||
#X obj 303 249 loadbang;
|
||||
#X msg 303 274 1;
|
||||
#X obj 1331 76 print sub;
|
||||
#X obj 465 151 r ret;
|
||||
#X msg 1277 265 send gain \$1;
|
||||
#X msg 1327 197 set \$1;
|
||||
#X obj 1327 147 loadbang;
|
||||
#X obj 1327 222 t b a;
|
||||
#X obj 1127 91 route alive_ack gain_ack;
|
||||
#X floatatom 1252 148 5 0 0 0 stat:gain - - 0;
|
||||
#X msg 1327 172 0.45;
|
||||
#X msg 1179 332 connect 192.168.43.13 3000, f 27;
|
||||
#X obj 1147 307 t b b;
|
||||
#X msg 1147 357 send newconn;
|
||||
#X obj 750 369 list store;
|
||||
#X msg 750 344 get \$1;
|
||||
#X obj 837 243 loadbang;
|
||||
#X obj 869 368 list length;
|
||||
#X obj 837 343 t a a;
|
||||
#X floatatom 869 393 5 0 0 0 - - - 0;
|
||||
#X obj 750 272 bng 40 250 50 0 empty empty any 0 -10 0 12 #fcfcfc #000000 #000000;
|
||||
#N canvas 586 186 548 362 pupils 0;
|
||||
#X obj 37 65 unpack s f;
|
||||
#X msg 104 115 add2 \$1;
|
||||
#X obj 37 146 list prepend add2;
|
||||
#X obj 37 171 list trim;
|
||||
#X obj 37 196 t b a;
|
||||
#X msg 69 247 \; pd-storage obj 100 100 walker 0.25 50000 sound-parade/20221118-215310-f4a618c0-673f-11ed-b24c-033593aac5b3/audio.wav;
|
||||
#X msg 150 171 set \, addsemi \, add2 pd-storage obj 100 100 walker;
|
||||
#X obj 104 90 t f b b;
|
||||
#X msg 127 221 add2 \$1;
|
||||
#X floatatom 127 197 5 0 0 0 - - - 0;
|
||||
#X msg 242 114 set \$1;
|
||||
#X obj 242 64 loadbang;
|
||||
#X msg 242 89 0.25;
|
||||
#X obj 37 34 inlet;
|
||||
#X connect 0 0 2 0;
|
||||
#X connect 0 1 7 0;
|
||||
#X connect 1 0 5 0;
|
||||
#X connect 2 0 3 0;
|
||||
#X connect 3 0 4 0;
|
||||
#X connect 4 0 5 0;
|
||||
#X connect 4 1 5 0;
|
||||
#X connect 6 0 5 0;
|
||||
#X connect 7 0 1 0;
|
||||
#X connect 7 1 9 0;
|
||||
#X connect 7 2 6 0;
|
||||
#X connect 8 0 5 0;
|
||||
#X connect 9 0 8 0;
|
||||
#X connect 10 0 9 0;
|
||||
#X connect 11 0 12 0;
|
||||
#X connect 12 0 10 0;
|
||||
#X connect 13 0 0 0;
|
||||
#X restore 166 541 pd pupils;
|
||||
#N canvas 591 304 450 319 durations 1;
|
||||
#X obj 37 37 inlet;
|
||||
#X obj 37 62 sel 0 1 2 3 4;
|
||||
#X msg 37 90 0;
|
||||
#X obj 37 262 outlet;
|
||||
#X msg 55 115 10000;
|
||||
#X msg 107 195 90000;
|
||||
#X msg 89 168 60000;
|
||||
#X msg 73 140 30000;
|
||||
#X obj 37 237 + 20000;
|
||||
#X connect 0 0 1 0;
|
||||
#X connect 1 0 2 0;
|
||||
#X connect 1 1 4 0;
|
||||
#X connect 1 2 7 0;
|
||||
#X connect 1 3 6 0;
|
||||
#X connect 1 4 5 0;
|
||||
#X connect 2 0 8 0;
|
||||
#X connect 4 0 8 0;
|
||||
#X connect 5 0 8 0;
|
||||
#X connect 6 0 8 0;
|
||||
#X connect 7 0 8 0;
|
||||
#X connect 8 0 3 0;
|
||||
#X restore 518 247 pd durations;
|
||||
#X obj 232 299 s msg\$0;
|
||||
#X obj 166 426 r msg\$0;
|
||||
#X obj 428 426 r msg\$0;
|
||||
#N canvas 0 0 493 245 closet 0;
|
||||
#X msg 141 168 \; pd-data3 clear;
|
||||
#X obj 37 148 loadbang;
|
||||
#X msg 37 173 \; pd dsp 1;
|
||||
#N canvas 798 33 640 350 data3 0;
|
||||
#X scalar template3 960 217 36 22 961 \;;
|
||||
#X scalar template3 960 76 38 49 84 \;;
|
||||
#X scalar template3 960 157 30 31 343 \;;
|
||||
#X scalar template3 960 48 30 33 873 \;;
|
||||
#X scalar template3 960 79 38 39 738 \;;
|
||||
#X scalar template3 960 169 28 31 743 \;;
|
||||
#X scalar template3 960 88 36 24 874 \;;
|
||||
#X scalar template3 960 121 34 34 369 \;;
|
||||
#X scalar template3 960 234 34 45 907 \;;
|
||||
#X scalar template3 960 92 24 43 923 \;;
|
||||
#X scalar template3 960 37 36 33 552 \;;
|
||||
#X scalar template3 960 13 45 28 193 \;;
|
||||
#X scalar template3 960 46 28 38 204 \;;
|
||||
#X scalar template3 960 248 23 35 213 \;;
|
||||
#X scalar template3 960 67 42 31 66 \;;
|
||||
#X scalar template3 960 251 20 30 386 \;;
|
||||
#X scalar template3 960 281 38 23 772 \;;
|
||||
#X scalar template3 960 124 47 43 108 \;;
|
||||
#X scalar template3 960 53 45 29 512 \;;
|
||||
#X scalar template3 960 151 34 35 896 \;;
|
||||
#X scalar template3 960 211 31 33 660 \;;
|
||||
#X scalar template3 960 176 28 38 8 \;;
|
||||
#X scalar template3 960 114 37 49 393 \;;
|
||||
#X scalar template3 960 294 38 20 76 \;;
|
||||
#X scalar template3 960 77 35 20 823 \;;
|
||||
#X scalar template3 960 90 29 45 721 \;;
|
||||
#X scalar template3 960 178 34 48 617 \;;
|
||||
#X scalar template3 960 53 26 45 186 \;;
|
||||
#X scalar template3 960 74 42 21 623 \;;
|
||||
#X scalar template3 960 233 35 26 958 \;;
|
||||
#X scalar template3 960 128 22 23 498 \;;
|
||||
#X scalar template3 960 206 20 32 393 \;;
|
||||
#X scalar template3 960 209 29 40 828 \;;
|
||||
#X scalar template3 960 199 43 27 340 \;;
|
||||
#X scalar template3 960 238 41 44 258 \;;
|
||||
#X scalar template3 960 35 24 48 269 \;;
|
||||
#X scalar template3 960 296 28 43 112 \;;
|
||||
#X scalar template3 960 263 48 45 893 \;;
|
||||
#X scalar template3 960 10 25 38 24 \;;
|
||||
#X scalar template3 960 229 22 35 793 \;;
|
||||
#X scalar template3 960 106 39 25 556 \;;
|
||||
#X scalar template3 960 221 26 43 547 \;;
|
||||
#X scalar template3 960 206 26 34 829 \;;
|
||||
#X scalar template3 960 125 29 20 850 \;;
|
||||
#X scalar template3 960 89 29 20 645 \;;
|
||||
#X scalar template3 960 113 27 38 142 \;;
|
||||
#X scalar template3 960 94 47 40 112 \;;
|
||||
#X scalar template3 960 174 38 27 731 \;;
|
||||
#X scalar template3 960 68 23 26 272 \;;
|
||||
#X scalar template3 960 77 37 43 421 \;;
|
||||
#X scalar template3 960 54 43 47 721 \;;
|
||||
#X scalar template3 960 59 27 27 634 \;;
|
||||
#X scalar template3 960 112 26 23 237 \;;
|
||||
#X scalar template3 960 208 39 22 536 \;;
|
||||
#X scalar template3 960 134 27 37 407 \;;
|
||||
#X scalar template3 960 139 31 35 662 \;;
|
||||
#X scalar template3 960 101 43 30 245 \;;
|
||||
#X scalar template3 960 118 43 37 543 \;;
|
||||
#X scalar template3 960 190 23 37 828 \;;
|
||||
#X scalar template3 960 298 35 29 326 \;;
|
||||
#X scalar template3 960 13 30 33 908 \;;
|
||||
#X scalar template3 960 102 27 42 405 \;;
|
||||
#X scalar template3 960 177 39 21 49 \;;
|
||||
#X scalar template3 960 224 39 43 541 \;;
|
||||
#X scalar template3 960 216 30 42 743 \;;
|
||||
#X scalar template3 960 118 26 33 992 \;;
|
||||
#X scalar template3 960 150 49 35 541 \;;
|
||||
#X scalar template3 960 289 40 46 131 \;;
|
||||
#X scalar template3 960 17 37 47 675 \;;
|
||||
#X scalar template3 960 78 42 27 579 \;;
|
||||
#X scalar template3 960 266 39 45 182 \;;
|
||||
#X scalar template3 960 92 44 49 324 \;;
|
||||
#X scalar template3 960 129 45 20 533 \;;
|
||||
#X scalar template3 960 139 45 25 348 \;;
|
||||
#X scalar template3 960 198 37 26 255 \;;
|
||||
#X scalar template3 960 203 27 40 754 \;;
|
||||
#X scalar template3 960 60 27 46 55 \;;
|
||||
#X scalar template3 960 124 45 23 888 \;;
|
||||
#X scalar template3 960 156 40 41 949 \;;
|
||||
#X scalar template3 960 278 37 20 464 \;;
|
||||
#X scalar template3 960 286 47 27 883 \;;
|
||||
#X scalar template3 960 244 22 24 692 \;;
|
||||
#X scalar template3 960 159 40 25 360 \;;
|
||||
#X scalar template3 960 214 29 30 901 \;;
|
||||
#X scalar template3 960 224 27 40 66 \;;
|
||||
#X scalar template3 960 231 41 46 162 \;;
|
||||
#X scalar template3 960 37 43 31 991 \;;
|
||||
#X scalar template3 960 10 43 31 918 \;;
|
||||
#X scalar template3 960 259 24 23 59 \;;
|
||||
#X scalar template3 960 61 30 24 104 \;;
|
||||
#X scalar template3 960 152 35 46 750 \;;
|
||||
#X scalar template3 960 201 46 38 275 \;;
|
||||
#X scalar template3 960 153 32 42 725 \;;
|
||||
#X scalar template3 960 245 49 24 231 \;;
|
||||
#X scalar template3 960 98 32 23 952 \;;
|
||||
#X scalar template3 960 113 42 33 140 \;;
|
||||
#X scalar template3 960 57 41 41 331 \;;
|
||||
#X scalar template3 960 233 36 33 163 \;;
|
||||
#X scalar template3 960 149 44 30 817 \;;
|
||||
#X scalar template3 960 191 35 38 583 \;;
|
||||
#X scalar template3 960 220 23 47 50 \;;
|
||||
#X scalar template3 960 155 30 48 926 \;;
|
||||
#X scalar template3 960 95 36 25 974 \;;
|
||||
#X scalar template3 960 107 42 41 585 \;;
|
||||
#X scalar template3 960 123 24 39 464 \;;
|
||||
#X scalar template3 960 242 23 46 950 \;;
|
||||
#X scalar template3 960 121 28 36 955 \;;
|
||||
#X scalar template3 960 67 44 37 530 \;;
|
||||
#X scalar template3 960 215 26 22 59 \;;
|
||||
#X scalar template3 960 98 35 30 576 \;;
|
||||
#X scalar template3 960 73 40 28 700 \;;
|
||||
#X scalar template3 960 89 21 36 209 \;;
|
||||
#X scalar template3 960 31 23 38 228 \;;
|
||||
#X scalar template3 960 153 35 28 545 \;;
|
||||
#X scalar template3 960 187 41 35 554 \;;
|
||||
#X scalar template3 960 290 42 41 320 \;;
|
||||
#X scalar template3 960 219 22 22 770 \;;
|
||||
#X scalar template3 960 64 23 33 11 \;;
|
||||
#X scalar template3 960 220 29 26 771 \;;
|
||||
#X scalar template3 960 160 35 48 466 \;;
|
||||
#X scalar template3 960 79 26 24 889 \;;
|
||||
#X scalar template3 960 172 23 48 29 \;;
|
||||
#X scalar template3 960 28 44 26 9 \;;
|
||||
#X scalar template3 960 16 32 23 659 \;;
|
||||
#X scalar template3 960 168 36 44 699 \;;
|
||||
#X scalar template3 960 43 45 42 562 \;;
|
||||
#X scalar template3 960 146 48 26 332 \;;
|
||||
#X scalar template3 960 273 32 44 813 \;;
|
||||
#X scalar template3 960 276 21 47 716 \;;
|
||||
#X scalar template3 960 217 31 24 480 \;;
|
||||
#X scalar template3 960 196 29 40 211 \;;
|
||||
#X scalar template3 960 142 30 21 751 \;;
|
||||
#X scalar template3 960 289 35 39 364 \;;
|
||||
#X scalar template3 960 170 45 29 558 \;;
|
||||
#X scalar template3 960 188 35 49 24 \;;
|
||||
#X scalar template3 960 238 21 38 202 \;;
|
||||
#X scalar template3 960 50 27 36 474 \;;
|
||||
#X scalar template3 960 206 26 27 979 \;;
|
||||
#X scalar template3 960 85 33 45 554 \;;
|
||||
#X scalar template3 960 260 38 25 802 \;;
|
||||
#X scalar template3 960 226 30 34 783 \;;
|
||||
#X scalar template3 960 146 30 27 330 \;;
|
||||
#X scalar template3 960 243 21 29 990 \;;
|
||||
#X scalar template3 960 153 25 42 91 \;;
|
||||
#X scalar template3 960 280 31 24 434 \;;
|
||||
#X scalar template3 960 58 21 36 106 \;;
|
||||
#X scalar template3 960 246 34 43 929 \;;
|
||||
#X scalar template3 960 251 42 39 17 \;;
|
||||
#X scalar template3 960 62 45 24 474 \;;
|
||||
#X scalar template3 960 252 34 38 708 \;;
|
||||
#X scalar template3 960 67 34 34 373 \;;
|
||||
#X scalar template3 960 263 39 24 434 \;;
|
||||
#X scalar template3 960 104 38 30 361 \;;
|
||||
#X scalar template3 960 124 28 44 942 \;;
|
||||
#X scalar template3 960 216 24 48 230 \;;
|
||||
#X scalar template3 960 142 43 26 601 \;;
|
||||
#X scalar template3 960 167 48 20 454 \;;
|
||||
#X scalar template3 960 187 48 32 22 \;;
|
||||
#X scalar template3 960 285 31 24 314 \;;
|
||||
#X scalar template3 960 87 43 43 685 \;;
|
||||
#X scalar template3 960 111 35 27 23 \;;
|
||||
#X scalar template3 960 179 46 32 566 \;;
|
||||
#X scalar template3 960 112 38 45 848 \;;
|
||||
#X scalar template3 960 105 28 35 759 \;;
|
||||
#X scalar template3 960 42 33 20 741 \;;
|
||||
#X scalar template3 960 231 32 27 601 \;;
|
||||
#X scalar template3 960 71 25 39 958 \;;
|
||||
#X scalar template3 960 159 29 21 801 \;;
|
||||
#X scalar template3 960 20 26 20 688 \;;
|
||||
#X scalar template3 960 139 27 39 59 \;;
|
||||
#X scalar template3 960 198 26 49 677 \;;
|
||||
#X scalar template3 960 21 28 27 696 \;;
|
||||
#X scalar template3 960 203 42 33 852 \;;
|
||||
#X scalar template3 960 231 20 25 777 \;;
|
||||
#X scalar template3 960 50 45 40 446 \;;
|
||||
#X scalar template3 960 143 36 32 736 \;;
|
||||
#X scalar template3 960 128 44 42 624 \;;
|
||||
#X scalar template3 960 68 43 28 500 \;;
|
||||
#X scalar template3 960 299 38 46 609 \;;
|
||||
#X scalar template3 960 207 30 38 117 \;;
|
||||
#X scalar template3 960 297 25 42 304 \;;
|
||||
#X scalar template3 960 177 49 42 879 \;;
|
||||
#X scalar template3 960 122 47 35 920 \;;
|
||||
#X scalar template3 960 138 45 29 445 \;;
|
||||
#X scalar template3 960 299 48 22 598 \;;
|
||||
#X scalar template3 960 173 48 40 970 \;;
|
||||
#X scalar template3 960 244 38 49 37 \;;
|
||||
#X scalar template3 960 254 36 28 228 \;;
|
||||
#X scalar template3 960 258 39 42 616 \;;
|
||||
#X scalar template3 960 59 33 35 237 \;;
|
||||
#X scalar template3 960 187 46 46 524 \;;
|
||||
#X scalar template3 960 99 48 24 383 \;;
|
||||
#X scalar template3 960 107 41 38 878 \;;
|
||||
#X scalar template3 960 83 24 38 548 \;;
|
||||
#X scalar template3 960 150 31 43 853 \;;
|
||||
#X scalar template3 960 44 47 47 733 \;;
|
||||
#X scalar template3 960 169 34 30 306 \;;
|
||||
#X scalar template3 960 12 22 37 181 \;;
|
||||
#X scalar template3 960 144 24 36 400 \;;
|
||||
#X scalar template3 960 124 25 32 6 \;;
|
||||
#X scalar template3 960 141 41 49 731 \;;
|
||||
#X scalar template3 960 150 28 32 815 \;;
|
||||
#X scalar template3 960 278 25 45 449 \;;
|
||||
#X scalar template3 960 184 48 42 837 \;;
|
||||
#X scalar template3 960 255 36 46 389 \;;
|
||||
#X scalar template3 960 172 38 34 541 \;;
|
||||
#X scalar template3 960 183 28 42 690 \;;
|
||||
#X scalar template3 960 22 44 34 268 \;;
|
||||
#X scalar template3 960 263 36 29 424 \;;
|
||||
#X scalar template3 960 147 45 47 351 \;;
|
||||
#X scalar template3 960 22 42 23 219 \;;
|
||||
#X scalar template3 960 120 43 48 746 \;;
|
||||
#X scalar template3 960 162 26 43 885 \;;
|
||||
#X scalar template3 960 239 25 42 648 \;;
|
||||
#X scalar template3 960 204 27 26 38 \;;
|
||||
#X scalar template3 960 39 25 29 124 \;;
|
||||
#X scalar template3 960 192 46 41 727 \;;
|
||||
#X scalar template3 960 281 26 31 236 \;;
|
||||
#X scalar template3 960 78 30 38 55 \;;
|
||||
#X scalar template3 960 169 46 25 664 \;;
|
||||
#X scalar template3 960 261 44 46 311 \;;
|
||||
#X scalar template3 960 59 33 49 831 \;;
|
||||
#X scalar template3 960 107 20 42 86 \;;
|
||||
#X scalar template3 960 127 37 31 30 \;;
|
||||
#X scalar template3 960 228 27 45 405 \;;
|
||||
#X scalar template3 960 37 43 24 50 \;;
|
||||
#X scalar template3 960 128 39 45 850 \;;
|
||||
#X scalar template3 960 67 46 24 797 \;;
|
||||
#X scalar template3 960 53 42 21 684 \;;
|
||||
#X scalar template3 960 56 37 41 920 \;;
|
||||
#X scalar template3 960 225 37 36 975 \;;
|
||||
#X scalar template3 960 96 43 21 441 \;;
|
||||
#X scalar template3 960 87 29 43 727 \;;
|
||||
#X scalar template3 960 57 36 20 373 \;;
|
||||
#X scalar template3 960 146 34 43 996 \;;
|
||||
#X scalar template3 960 132 42 35 849 \;;
|
||||
#X scalar template3 960 54 46 40 521 \;;
|
||||
#X scalar template3 960 77 43 36 747 \;;
|
||||
#X scalar template3 960 25 48 46 350 \;;
|
||||
#X scalar template3 960 190 23 44 312 \;;
|
||||
#X scalar template3 960 69 26 25 460 \;;
|
||||
#X scalar template3 960 258 45 43 785 \;;
|
||||
#X scalar template3 960 102 49 33 885 \;;
|
||||
#X scalar template3 960 99 22 20 527 \;;
|
||||
#X scalar template3 960 56 36 23 342 \;;
|
||||
#X scalar template3 960 257 41 49 640 \;;
|
||||
#X scalar template3 960 131 36 34 352 \;;
|
||||
#X scalar template3 960 74 30 37 597 \;;
|
||||
#X scalar template3 960 183 49 24 872 \;;
|
||||
#X scalar template3 960 268 25 28 867 \;;
|
||||
#X scalar template3 960 115 34 44 411 \;;
|
||||
#X scalar template3 960 286 47 43 34 \;;
|
||||
#X scalar template3 960 138 37 28 162 \;;
|
||||
#X scalar template3 960 295 21 24 929 \;;
|
||||
#X scalar template3 960 298 33 23 625 \;;
|
||||
#X scalar template3 960 281 28 28 253 \;;
|
||||
#X scalar template3 960 291 43 44 230 \;;
|
||||
#X scalar template3 960 151 33 45 197 \;;
|
||||
#X scalar template3 960 156 24 47 965 \;;
|
||||
#X scalar template3 960 138 28 20 76 \;;
|
||||
#X scalar template3 960 93 47 34 0 \;;
|
||||
#X scalar template3 960 183 49 21 446 \;;
|
||||
#X scalar template3 960 279 37 36 809 \;;
|
||||
#X scalar template3 960 40 42 45 233 \;;
|
||||
#X scalar template3 960 266 33 33 49 \;;
|
||||
#X scalar template3 960 30 20 43 493 \;;
|
||||
#X scalar template3 960 90 32 27 355 \;;
|
||||
#X scalar template3 960 75 33 43 427 \;;
|
||||
#X scalar template3 960 213 34 26 731 \;;
|
||||
#X scalar template3 960 253 47 25 86 \;;
|
||||
#X scalar template3 960 87 44 38 299 \;;
|
||||
#X scalar template3 960 193 42 45 980 \;;
|
||||
#X scalar template3 960 13 35 25 487 \;;
|
||||
#X scalar template3 960 207 46 47 989 \;;
|
||||
#X scalar template3 640 174 47 41 929 \;;
|
||||
#X restore 163 111 pd data3;
|
||||
#N canvas 861 486 512 300 template3 0;
|
||||
#X obj 48 98 filledpolygon q 0 1 0 0 w 0 w h 0 h;
|
||||
#X text 44 53 five numeric ("float") fields;
|
||||
#X text 48 118 drawing a rectangle \, interior color q \, border black and one unit thick \, through the points (0 \, 0) \, (w \, 0) \, (w \, h) \, and (0 \, h). Note that the three points containing variables become hot spots for mouse dragging.;
|
||||
#X obj 46 33 struct template3 float x float y float w float h float q;
|
||||
#X restore 163 136 pd template3;
|
||||
#N canvas 800 33 638 300 storage 0;
|
||||
#X restore 35 85 pd storage;
|
||||
#X text 20 17 walker 0.2 25000 sound-parade/20221120-091502-60bbeed0-6868-11ed-b24c-033593aac5b3/audio.wav;
|
||||
#N canvas 196 114 615 428 noise 0;
|
||||
#X obj 84 300 else/f2s~ 50;
|
||||
#X obj 134 331 else/f2s~ 50;
|
||||
#X msg 84 219 1 \$1;
|
||||
#X obj 84 244 unpack f f;
|
||||
#X obj 147 170 expr ($f1/180) * pi;
|
||||
#X floatatom 147 140 5 0 0 1 deg - - 0;
|
||||
#X obj 147 99 line;
|
||||
#X floatatom 185 292 5 0 0 1 spread - - 0;
|
||||
#X msg 185 267 -0.7;
|
||||
#X obj 185 242 loadbang;
|
||||
#X obj 34 26 noise~;
|
||||
#X obj 34 51 hip~ 50;
|
||||
#X obj 34 76 lop~ 250;
|
||||
#X obj 34 101 lop~ 250;
|
||||
#X obj 34 393 dac~ 1 2 3 4 5 6 7 8;
|
||||
#X obj 147 18 inlet;
|
||||
#X obj 84 269 else/pol2car;
|
||||
#X obj 34 362 else/pan8~, f 22;
|
||||
#X obj 34 242 *~;
|
||||
#X obj 52 161 line~;
|
||||
#X msg 52 136 \$1 5000;
|
||||
#X obj 345 49 else/pi 1;
|
||||
#X obj 345 75 v pi;
|
||||
#X msg 147 68 -45 \, 315 10000;
|
||||
#X obj 147 43 metro 180000;
|
||||
#X obj 273 18 inlet;
|
||||
#X connect 0 0 17 1;
|
||||
#X connect 1 0 17 2;
|
||||
#X connect 2 0 3 0;
|
||||
#X connect 3 0 16 0;
|
||||
#X connect 3 1 16 1;
|
||||
#X connect 4 0 2 0;
|
||||
#X connect 5 0 4 0;
|
||||
#X connect 6 0 5 0;
|
||||
#X connect 7 0 17 3;
|
||||
#X connect 8 0 7 0;
|
||||
#X connect 9 0 8 0;
|
||||
#X connect 10 0 11 0;
|
||||
#X connect 11 0 12 0;
|
||||
#X connect 12 0 13 0;
|
||||
#X connect 13 0 18 0;
|
||||
#X connect 15 0 20 0;
|
||||
#X connect 15 0 24 0;
|
||||
#X connect 16 0 0 0;
|
||||
#X connect 16 1 1 0;
|
||||
#X connect 17 0 14 0;
|
||||
#X connect 17 1 14 1;
|
||||
#X connect 17 2 14 2;
|
||||
#X connect 17 3 14 3;
|
||||
#X connect 17 4 14 4;
|
||||
#X connect 17 5 14 5;
|
||||
#X connect 17 6 14 6;
|
||||
#X connect 17 7 14 7;
|
||||
#X connect 18 0 17 0;
|
||||
#X connect 19 0 18 1;
|
||||
#X connect 20 0 19 0;
|
||||
#X connect 21 0 22 0;
|
||||
#X connect 23 0 6 0;
|
||||
#X connect 24 0 23 0;
|
||||
#X connect 25 0 23 0;
|
||||
#X restore 319 183 pd noise panning;
|
||||
#X obj 319 157 tgl 15 0 empty empty KEEP\ SPKRS\ AWAKE 17 7 0 10 #fcfcfc #000000 #000000 0 1;
|
||||
#X obj 446 168 bng 15 250 50 0 empty empty ! 17 7 0 10 #fcfcfc #000000 #000000;
|
||||
#X connect 1 0 2 0;
|
||||
#X connect 8 0 7 0;
|
||||
#X connect 9 0 7 1;
|
||||
#X restore 1353 647 pd closet;
|
||||
#X obj 428 541 s tosub;
|
||||
#X obj 1189 426 r tosub;
|
||||
#X obj 1189 451 print;
|
||||
#X obj 1277 242 nbx 5 18 -1e+37 1e+37 0 0 empty empty gain 0 -10 0 12 #faff00 #000000 #000000 0 256;
|
||||
#X obj 465 327 s walk\$0;
|
||||
#X obj 232 249 r walk\$0;
|
||||
#X msg 837 268 109 108 107 106 105 104 103 102 101 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74, f 32;
|
||||
#X obj 764 155 list store;
|
||||
#X msg 764 130 get \$1;
|
||||
#X obj 851 59 loadbang;
|
||||
#X obj 883 154 list length;
|
||||
#X obj 851 129 t a a;
|
||||
#X floatatom 883 179 5 0 0 0 - - - 0;
|
||||
#X obj 738 52 bng 40 250 50 0 empty empty body 0 -10 0 12 #fcfcfc #000000 #000000;
|
||||
#X msg 851 84 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55, f 29;
|
||||
#X obj 569 556 list store;
|
||||
#X msg 569 531 get \$1;
|
||||
#X obj 656 460 loadbang;
|
||||
#X obj 688 555 list length;
|
||||
#X obj 656 530 t a a;
|
||||
#X floatatom 688 580 5 0 0 0 - - - 0;
|
||||
#X obj 571 451 bng 40 250 50 0 empty empty flag 0 -10 0 12 #fcfcfc #000000 #000000;
|
||||
#X msg 656 485 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39, f 27;
|
||||
#X obj 864 644 list store;
|
||||
#X msg 864 619 get \$1;
|
||||
#X obj 951 518 loadbang;
|
||||
#X obj 983 643 list length;
|
||||
#X obj 951 618 t a a;
|
||||
#X floatatom 983 668 5 0 0 0 - - - 0;
|
||||
#X obj 862 539 bng 40 250 50 0 empty empty object 0 -10 0 12 #fcfcfc #000000 #000000;
|
||||
#X msg 951 543 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0, f 32;
|
||||
#X floatatom 764 180 5 0 0 1 s:cart - cart\$0 0;
|
||||
#X floatatom 750 394 5 0 0 1 s:cart - cart\$0 0;
|
||||
#X floatatom 569 581 5 0 0 1 s:cart - cart\$0 0;
|
||||
#X floatatom 864 669 5 0 0 1 s:cart - cart\$0 0;
|
||||
#X floatatom 108 304 5 0 0 1 r:cart cart\$0 - 0;
|
||||
#X obj 569 506 count;
|
||||
#X obj 750 319 count;
|
||||
#X obj 864 594 count;
|
||||
#X obj 764 105 count;
|
||||
#X obj 875 449 retro 10000 50000;
|
||||
#X obj 583 369 retro 10000 50000;
|
||||
#X obj 684 220 retro 10000 50000;
|
||||
#X obj 735 -11 retro 10000 50000;
|
||||
#X obj 518 118 random 4;
|
||||
#X msg 142 180 21;
|
||||
#X connect 0 0 8 0;
|
||||
#X connect 1 0 2 0;
|
||||
#X connect 2 0 5 0;
|
||||
#X connect 2 1 0 0;
|
||||
#X connect 4 0 3 0;
|
||||
#X connect 5 0 6 0;
|
||||
#X connect 5 0 7 0;
|
||||
#X connect 6 0 5 1;
|
||||
#X connect 7 0 9 0;
|
||||
#X connect 8 0 7 1;
|
||||
#X connect 9 0 4 0;
|
||||
#X connect 10 0 16 0;
|
||||
#X connect 11 0 117 0;
|
||||
#X connect 14 0 17 0;
|
||||
#X connect 15 0 18 1;
|
||||
#X connect 16 0 68 0;
|
||||
#X connect 17 0 18 0;
|
||||
#X connect 17 1 16 0;
|
||||
#X connect 18 0 77 0;
|
||||
#X connect 20 0 54 0;
|
||||
#X connect 21 0 67 0;
|
||||
#X connect 22 0 21 1;
|
||||
#X connect 23 0 73 0;
|
||||
#X connect 24 0 23 1;
|
||||
#X connect 25 0 26 0;
|
||||
#X connect 26 0 28 0;
|
||||
#X connect 26 1 29 0;
|
||||
#X connect 26 2 30 0;
|
||||
#X connect 27 0 22 0;
|
||||
#X connect 27 1 24 0;
|
||||
#X connect 28 0 27 0;
|
||||
#X connect 29 0 27 0;
|
||||
#X connect 30 0 27 0;
|
||||
#X connect 31 0 69 0;
|
||||
#X connect 31 1 44 0;
|
||||
#X connect 32 0 58 0;
|
||||
#X connect 33 0 1 0;
|
||||
#X connect 34 0 1 0;
|
||||
#X connect 35 0 5 1;
|
||||
#X connect 36 0 9 0;
|
||||
#X connect 37 0 38 0;
|
||||
#X connect 38 0 19 0;
|
||||
#X connect 39 0 19 0;
|
||||
#X connect 40 0 20 0;
|
||||
#X connect 41 0 48 0;
|
||||
#X connect 42 0 41 1;
|
||||
#X connect 44 0 25 0;
|
||||
#X connect 45 0 44 1;
|
||||
#X connect 46 0 47 0;
|
||||
#X connect 47 0 45 0;
|
||||
#X connect 49 0 14 0;
|
||||
#X connect 50 0 19 0;
|
||||
#X connect 51 0 53 0;
|
||||
#X connect 52 0 56 0;
|
||||
#X connect 53 0 76 0;
|
||||
#X connect 53 1 76 0;
|
||||
#X connect 54 0 43 0;
|
||||
#X connect 54 1 55 0;
|
||||
#X connect 54 2 41 0;
|
||||
#X connect 56 0 51 0;
|
||||
#X connect 57 0 19 0;
|
||||
#X connect 58 0 59 0;
|
||||
#X connect 58 1 57 0;
|
||||
#X connect 59 0 19 0;
|
||||
#X connect 60 0 105 0;
|
||||
#X connect 61 0 60 0;
|
||||
#X connect 62 0 79 0;
|
||||
#X connect 63 0 65 0;
|
||||
#X connect 64 0 60 1;
|
||||
#X connect 64 1 63 0;
|
||||
#X connect 65 0 110 1;
|
||||
#X connect 66 0 110 0;
|
||||
#X connect 68 0 15 0;
|
||||
#X connect 70 0 21 0;
|
||||
#X connect 71 0 23 0;
|
||||
#X connect 74 0 19 0;
|
||||
#X connect 74 0 75 0;
|
||||
#X connect 76 0 50 0;
|
||||
#X connect 78 0 31 0;
|
||||
#X connect 79 0 64 0;
|
||||
#X connect 80 0 104 0;
|
||||
#X connect 81 0 80 0;
|
||||
#X connect 82 0 87 0;
|
||||
#X connect 83 0 85 0;
|
||||
#X connect 84 0 80 1;
|
||||
#X connect 84 1 83 0;
|
||||
#X connect 85 0 112 1;
|
||||
#X connect 86 0 112 0;
|
||||
#X connect 87 0 84 0;
|
||||
#X connect 88 0 106 0;
|
||||
#X connect 89 0 88 0;
|
||||
#X connect 90 0 95 0;
|
||||
#X connect 91 0 93 0;
|
||||
#X connect 92 0 88 1;
|
||||
#X connect 92 1 91 0;
|
||||
#X connect 93 0 109 1;
|
||||
#X connect 94 0 109 0;
|
||||
#X connect 95 0 92 0;
|
||||
#X connect 96 0 107 0;
|
||||
#X connect 97 0 96 0;
|
||||
#X connect 98 0 103 0;
|
||||
#X connect 99 0 101 0;
|
||||
#X connect 100 0 96 1;
|
||||
#X connect 100 1 99 0;
|
||||
#X connect 101 0 111 1;
|
||||
#X connect 102 0 111 0;
|
||||
#X connect 103 0 100 0;
|
||||
#X connect 108 0 9 0;
|
||||
#X connect 109 0 89 0;
|
||||
#X connect 110 0 61 0;
|
||||
#X connect 111 0 97 0;
|
||||
#X connect 112 0 81 0;
|
||||
#X connect 113 0 102 0;
|
||||
#X connect 114 0 94 0;
|
||||
#X connect 116 0 86 0;
|
||||
#X connect 117 0 10 0;
|
||||
#X connect 118 0 9 0;
|
||||
183
puredata/walker.pd
Normal file
183
puredata/walker.pd
Normal file
|
|
@ -0,0 +1,183 @@
|
|||
#N canvas 48 33 449 261 12;
|
||||
#X text 181 120 loadbang won't fire when this is created by 'dynamic
|
||||
patching' => we can rely on 'initbang'@iemguts, f 29;
|
||||
#N canvas 0 33 778 658 \$0-guts 1;
|
||||
#X floatatom 335 529 5 0 0 1 x_pos - - 0;
|
||||
#X obj 335 498 line;
|
||||
#N canvas 206 107 531 579 anime 0;
|
||||
#X floatatom 46 505 0 0 0 0 - - - 0;
|
||||
#X obj 46 529 set template3 x;
|
||||
#X obj 46 26 inlet;
|
||||
#X obj 148 26 inlet;
|
||||
#X obj 187 136 pointer;
|
||||
#X obj 180 307 append template3 x y w h q;
|
||||
#X obj 387 233 random 1000;
|
||||
#X obj 187 165 trigger bang bang pointer;
|
||||
#X obj 244 257 + 20;
|
||||
#X obj 316 257 + 20;
|
||||
#X obj 163 259 + 10;
|
||||
#X obj 316 233 random 30;
|
||||
#X obj 244 233 random 30;
|
||||
#X text 365 193 canvas size 640x350;
|
||||
#X obj 163 233 random 290;
|
||||
#X obj 100 237 640;
|
||||
#X obj 148 51 t b;
|
||||
#X obj 180 529 outlet;
|
||||
#X msg 187 88 traverse pd-data3 \, bang;
|
||||
#X connect 0 0 1 0;
|
||||
#X connect 2 0 0 0;
|
||||
#X connect 3 0 16 0;
|
||||
#X connect 4 0 7 0;
|
||||
#X connect 5 0 1 1;
|
||||
#X connect 5 0 17 0;
|
||||
#X connect 6 0 5 4;
|
||||
#X connect 7 0 15 0;
|
||||
#X connect 7 1 6 0;
|
||||
#X connect 7 1 11 0;
|
||||
#X connect 7 1 12 0;
|
||||
#X connect 7 1 14 0;
|
||||
#X connect 7 2 5 5;
|
||||
#X connect 8 0 5 2;
|
||||
#X connect 9 0 5 3;
|
||||
#X connect 10 0 5 1;
|
||||
#X connect 11 0 9 0;
|
||||
#X connect 12 0 8 0;
|
||||
#X connect 14 0 10 0;
|
||||
#X connect 15 0 5 0;
|
||||
#X connect 16 0 18 0;
|
||||
#X connect 18 0 4 0;
|
||||
#X restore 474 375 pd anime;
|
||||
#X msg 335 341 320;
|
||||
#X obj 103 405 pol2car;
|
||||
#X obj 103 436 else/f2s~ 50;
|
||||
#X obj 168 468 else/f2s~ 50;
|
||||
#X msg 103 355 1 \$1;
|
||||
#X obj 103 380 unpack f f;
|
||||
#X obj 176 326 expr ($f1/180) * pi;
|
||||
#X floatatom 176 296 5 0 0 1 deg - - 0;
|
||||
#X obj 176 271 line;
|
||||
#X floatatom 232 428 5 0 0 1 spread - - 0;
|
||||
#X msg 77 188 loop 1;
|
||||
#X msg 232 403 -0.7;
|
||||
#X obj 176 94 bng 15 250 50 0 empty empty send! 17 7 0 10 #fcfcfc #000000
|
||||
#000000;
|
||||
#X obj 229 36 else/pi 1;
|
||||
#X obj 229 62 v pi;
|
||||
#X obj 50 578 env~;
|
||||
#X obj 90 578 env~;
|
||||
#X obj 130 578 env~;
|
||||
#X obj 170 578 env~;
|
||||
#X floatatom 50 603 5 0 0 0 - - - 0;
|
||||
#X floatatom 90 603 5 0 0 0 - - - 0;
|
||||
#X floatatom 130 603 5 0 0 0 - - - 0;
|
||||
#X floatatom 170 603 5 0 0 0 - - - 0;
|
||||
#X obj 19 16 loadbang;
|
||||
#X obj 19 66 t b a b b;
|
||||
#X msg 39 153 open \$1;
|
||||
#X obj 561 349 del;
|
||||
#X text 671 425 done->gone;
|
||||
#X obj 561 374 t b b;
|
||||
#X text 509 170 TODO: dont't dynamically generate and use image objects
|
||||
\, but instead \, generate 200 and manage my id to grap one and that's
|
||||
it., f 31;
|
||||
#X text 476 497 now \, temporarily disabled deleting leftover rectangles
|
||||
from the list. they will just accumulate., f 31;
|
||||
#X text 490 98 scene = 112.5deg ~ 247.5deg;
|
||||
#X text 512 122 then \, select 1-4 ch.;
|
||||
#X text 492 80 motion = +45 deg -> -45 deg (315)deg;
|
||||
#X obj 232 378 loadbang;
|
||||
#X obj 561 426 canvasdelete 2;
|
||||
#X obj 39 548 dac~ 1 2 3 4 5 6;
|
||||
#X obj 39 507 else/pan8~, f 28;
|
||||
#X obj 39 246 else/player~;
|
||||
#X obj 39 341 *~ \$1;
|
||||
#X obj 367 58 f \$2;
|
||||
#X obj 19 41 symbol \$3;
|
||||
#X floatatom 176 222 5 0 0 1 duration - - 0;
|
||||
#X msg 176 246 -45 \, 315 \$1;
|
||||
#X obj 176 119 t b b b b b;
|
||||
#X obj 335 436 pack f f f;
|
||||
#X msg 335 467 \$1 \, \$2 \$3;
|
||||
#X obj 561 324 v duration\$0;
|
||||
#X obj 176 197 v duration\$0;
|
||||
#X obj 367 83 v duration\$0;
|
||||
#X obj 335 370 expr $f1*-1 \; $f1+640 \; duration\$0;
|
||||
#X obj 56 382 env~;
|
||||
#X floatatom 56 407 5 0 0 0 - - - 0;
|
||||
#X obj 105 15 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000
|
||||
#000000;
|
||||
#X obj 50 275 env~;
|
||||
#X floatatom 50 300 5 0 0 0 - - - 0;
|
||||
#X connect 0 0 2 0;
|
||||
#X connect 1 0 0 0;
|
||||
#X connect 3 0 53 0;
|
||||
#X connect 4 0 5 0;
|
||||
#X connect 4 1 6 0;
|
||||
#X connect 5 0 40 1;
|
||||
#X connect 6 0 40 2;
|
||||
#X connect 7 0 8 0;
|
||||
#X connect 8 0 4 0;
|
||||
#X connect 8 1 4 1;
|
||||
#X connect 9 0 7 0;
|
||||
#X connect 10 0 9 0;
|
||||
#X connect 11 0 10 0;
|
||||
#X connect 12 0 40 3;
|
||||
#X connect 13 0 41 0;
|
||||
#X connect 14 0 12 0;
|
||||
#X connect 15 0 47 0;
|
||||
#X connect 16 0 17 0;
|
||||
#X connect 18 0 22 0;
|
||||
#X connect 19 0 23 0;
|
||||
#X connect 20 0 24 0;
|
||||
#X connect 21 0 25 0;
|
||||
#X connect 26 0 44 0;
|
||||
#X connect 27 0 15 0;
|
||||
#X connect 27 1 28 0;
|
||||
#X connect 27 2 13 0;
|
||||
#X connect 28 0 41 0;
|
||||
#X connect 29 0 31 0;
|
||||
#X connect 31 0 38 0;
|
||||
#X connect 37 0 14 0;
|
||||
#X connect 40 0 18 0;
|
||||
#X connect 40 0 39 0;
|
||||
#X connect 40 1 19 0;
|
||||
#X connect 40 1 39 1;
|
||||
#X connect 40 2 20 0;
|
||||
#X connect 40 2 39 2;
|
||||
#X connect 40 3 21 0;
|
||||
#X connect 40 3 39 3;
|
||||
#X connect 40 4 39 4;
|
||||
#X connect 40 5 39 5;
|
||||
#X connect 41 0 42 0;
|
||||
#X connect 41 0 57 0;
|
||||
#X connect 42 0 54 0;
|
||||
#X connect 42 0 40 0;
|
||||
#X connect 43 0 52 0;
|
||||
#X connect 44 0 27 0;
|
||||
#X connect 45 0 46 0;
|
||||
#X connect 46 0 11 0;
|
||||
#X connect 47 0 51 0;
|
||||
#X connect 47 1 3 0;
|
||||
#X connect 47 2 2 1;
|
||||
#X connect 47 3 50 0;
|
||||
#X connect 47 4 43 0;
|
||||
#X connect 48 0 49 0;
|
||||
#X connect 49 0 1 0;
|
||||
#X connect 50 0 29 0;
|
||||
#X connect 51 0 45 0;
|
||||
#X connect 53 0 48 0;
|
||||
#X connect 53 1 48 1;
|
||||
#X connect 53 2 48 2;
|
||||
#X connect 54 0 55 0;
|
||||
#X connect 56 0 44 0;
|
||||
#X connect 57 0 58 0;
|
||||
#X restore 48 194 pd \$0-guts;
|
||||
#X obj 49 152 s pd-\$0-guts;
|
||||
#X obj 49 92 del;
|
||||
#X msg 49 67 300;
|
||||
#X obj 49 32 initbang;
|
||||
#X msg 49 127 loadbang;
|
||||
#X connect 3 0 6 0;
|
||||
#X connect 4 0 3 0;
|
||||
#X connect 5 0 4 0;
|
||||
#X connect 6 0 2 0;
|
||||
55
server.js
55
server.js
|
|
@ -27,6 +27,9 @@ const {
|
|||
v4: uuidv4,
|
||||
} = require('uuid');
|
||||
|
||||
//short-uuid
|
||||
const short = require('short-uuid');
|
||||
|
||||
//moment
|
||||
const moment = require("moment-timezone");
|
||||
|
||||
|
|
@ -73,6 +76,7 @@ fastify.get("/", async function (request, reply) {
|
|||
group: fields.group,
|
||||
title: fields.title,
|
||||
comment: fields.comment,
|
||||
anchor: fields.anchor
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -85,6 +89,40 @@ fastify.get("/", async function (request, reply) {
|
|||
});
|
||||
});
|
||||
|
||||
//get '/projection'
|
||||
fastify.get("/projection", async function (request, reply) {
|
||||
//get list
|
||||
let list = await fs.readdir(process.env.userdata);
|
||||
list.reverse();
|
||||
|
||||
// console.log(list);
|
||||
|
||||
let folders = [];
|
||||
for (const item of list) {
|
||||
let json = await fs.readFile(process.env.userdata + item + '/fields.json')
|
||||
.catch((err) => {
|
||||
console.error(err);
|
||||
});
|
||||
if (json != undefined) {
|
||||
var fields = JSON.parse(json.toString('utf8'));
|
||||
folders.push({
|
||||
foldername: item,
|
||||
group: fields.group,
|
||||
title: fields.title,
|
||||
comment: fields.comment,
|
||||
anchor: fields.anchor
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// console.log(folders);
|
||||
|
||||
//
|
||||
reply.view("/src/pages/projection.html", {
|
||||
list: folders
|
||||
});
|
||||
});
|
||||
|
||||
//get '/en/'
|
||||
fastify.get("/en/", async function (request, reply) {
|
||||
reply.view("/src/pages/parade.en.html", {});
|
||||
|
|
@ -111,6 +149,7 @@ fastify.get("/list", async function (request, reply) {
|
|||
group: fields.group,
|
||||
title: fields.title,
|
||||
comment: fields.comment,
|
||||
anchor: fields.anchor
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -121,6 +160,17 @@ fastify.get("/list", async function (request, reply) {
|
|||
reply.send(folders);
|
||||
});
|
||||
|
||||
//get '/short'
|
||||
fastify.get("/short", function (request, reply) {
|
||||
|
||||
let shorts = [];
|
||||
for (var idx = 0; idx < 100; idx++) {
|
||||
shorts.push(short.generate());
|
||||
}
|
||||
|
||||
reply.send(shorts);
|
||||
});
|
||||
|
||||
//get '/uploads/:foldername/:filename'
|
||||
fastify.get("/uploads/:foldername/:filename", async function (request, reply) {
|
||||
|
||||
|
|
@ -171,6 +221,7 @@ fastify.get("/fields", async function (request, reply) {
|
|||
group: fields.group,
|
||||
title: fields.title,
|
||||
comment: fields.comment,
|
||||
anchor: fields.anchor
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -241,7 +292,8 @@ fastify.post("/", async function (request, reply) {
|
|||
group: audiofile.fields.group.value,
|
||||
title: audiofile.fields.title.value,
|
||||
comment: audiofile.fields.comment.value,
|
||||
pass: audiofile.fields.pass.value
|
||||
pass: audiofile.fields.pass.value,
|
||||
anchor: short.generate()
|
||||
})));
|
||||
const image = await folder.createFile("pixels.png", await fs.readFile(pixelfile.filepath));
|
||||
//
|
||||
|
|
@ -356,6 +408,7 @@ io.on("connection", function(socket) {
|
|||
group: fields.group,
|
||||
title: fields.title,
|
||||
comment: fields.comment,
|
||||
anchor: fields.anchor
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -196,6 +196,7 @@
|
|||
</p>
|
||||
</form>
|
||||
</section>
|
||||
<section id="list">
|
||||
<section id="list_init_kr" style="display:none">
|
||||
<h1>소리 목록</h1>
|
||||
<p>제출해주신 소리는 아래 목록에 시간순으로 쌓입니다. 각각의 모양을 클릭하면, 모양에 해당하는 소리를 듣고 소리에 대한 정보를 확인할 수 있습니다.</p>
|
||||
|
|
@ -205,11 +206,10 @@
|
|||
<p>The sounds you submitted will be stacked in chronological order in the list below. By clicking on each shape,
|
||||
you can hear the sound corresponding to the shape and check the information about the sound.</p>
|
||||
</section>
|
||||
<section id="list">
|
||||
{{#each list}}
|
||||
<div class="items" foldername="{{this.foldername}}">
|
||||
<details>
|
||||
<summary><a class="anchor" id="{{this.foldername}}"></a><img class="drawing" src="/uploads/{{this.foldername}}/pixels.png" /></summary>
|
||||
<summary><a class="anchor" id="{{this.anchor}}"></a><img class="drawing" src="/uploads/{{this.foldername}}/pixels.png" /></summary>
|
||||
<audio class="sound" preload="none" controls>
|
||||
<source src="/uploads/{{this.foldername}}/audio.mp3" type="audio/mpeg">
|
||||
</audio>
|
||||
|
|
@ -247,7 +247,7 @@
|
|||
t = t + `
|
||||
<div class="items" foldername="${item.foldername}">
|
||||
<details>
|
||||
<summary><a class="anchor" id="${item.foldername}"></a><img class="drawing" src="/uploads/${item.foldername}/pixels.png" /></summary>
|
||||
<summary><a class="anchor" id="${item.anchor}"></a><img class="drawing" src="/uploads/${item.foldername}/pixels.png" /></summary>
|
||||
<audio class="sound" preload="none" controls>
|
||||
<source src="/uploads/${item.foldername}/audio.mp3" type="audio/mpeg">
|
||||
</audio>
|
||||
|
|
@ -438,6 +438,10 @@
|
|||
//**ENTRY
|
||||
// list_reload();
|
||||
|
||||
// for korean page...
|
||||
var list_intro = select("#list_init_kr");
|
||||
list_intro.style('display', 'unset');
|
||||
|
||||
var cnv = createCanvas(cols * unit + 2, rows * unit + 2);
|
||||
cnv.parent("p5");
|
||||
img = createGraphics(cols * unit + 2, rows * unit + 2);
|
||||
|
|
|
|||
815
src/pages/projection.html
Normal file
815
src/pages/projection.html
Normal file
|
|
@ -0,0 +1,815 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<title>흐름을 향하여 걷는 Walking towards the Flow</title>
|
||||
<meta itemprop="description" content="온라인 공간에 소리의 행렬을 만드는 사운드 퍼레이드입니다.">
|
||||
<meta itemprop="image" content="/thumbnail.jpg">
|
||||
<link rel="stylesheet" href="/default.css" />
|
||||
<style>
|
||||
html,
|
||||
body {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.bg {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background: unset;
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
#defaultCanvas0 {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.clear {
|
||||
display: block;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
max-width: 500px;
|
||||
}
|
||||
|
||||
#p5 {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.tools {
|
||||
padding: 1em 1em;
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.penselect {
|
||||
margin: 1em 0em;
|
||||
}
|
||||
</style>
|
||||
<script src="/js/p5-v1.1.9.min.js"></script>
|
||||
<script src="/js/socket-v2.3.0.io.slim.js"></script>
|
||||
<script src="/js/Tone-14.8.36.min.js"></script>
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@500&display=swap" rel="stylesheet" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div class="bg"></div>
|
||||
<div id="top"></div>
|
||||
<div class="parade"></div>
|
||||
<div class="entry">
|
||||
<div class="notice">
|
||||
<div class="sticky">
|
||||
<div class="first"><a href="/en/">EN</a></div>
|
||||
<div class="second"><a href="#top">퍼레이드</a></div>
|
||||
</div>
|
||||
<section>
|
||||
<h1>소개</h1>
|
||||
<p>
|
||||
«흐름을 향하여 걷는»은 온라인 공간에서 열리는 사운드 퍼레이드입니다. 이 소리의 행렬은 여러분이 보내주시는 소리가 모여 만들어지며, 누구나 참여하실 수 있습니다.
|
||||
</p>
|
||||
<p>
|
||||
소리가 흐르는 길은 별들이 순회하는 저 은하수와 같이, 언제나 그 자리에 있으면서 여러분이 소리를 듣고 있든 그렇지 않든 흐르고 있습니다.
|
||||
</p>
|
||||
<p>
|
||||
이 영원한 퍼레이드의 영속성은 우리에게 최후의 안도를 줍니다. 때로는 자신이 위성궤도를 무한히 돌고 있는 우주 부스러기라는 생각이 들다가도, 그것이 관측되는 순간 더는 외로움이나 잊혀짐이 아니라
|
||||
기억됨이 됩니다.
|
||||
</p>
|
||||
<p>
|
||||
«흐름을 향하여 걷는»은 온사이트 공연으로 함께 하실 수도 있습니다. 11월 27일(일) 진행하는 공연에서는 웹사이트에 모인 소리들이 물리적 공간에 펼쳐지고, 관객은 함께 걷고 멈추며 흐름에
|
||||
공감해주신 분들의 소리를 듣습니다.
|
||||
</p>
|
||||
<p>
|
||||
온라인으로 진행하는 소리 모집과 온사이트 공연에 많은 관심과 참여 바랍니다.<br />
|
||||
</p>
|
||||
<br>
|
||||
<div class="info">
|
||||
<p>
|
||||
소리 모집<br />
|
||||
2022년 11월 13일(일)–26일(토)
|
||||
</p>
|
||||
<p>
|
||||
공연 일정<br />
|
||||
2022년 11월 27일(일), 16:00
|
||||
</p>
|
||||
<p>
|
||||
공연 장소<br />
|
||||
서울시립미술관 서소문본관 1층 로비, 2층 러닝스테이션, 옥상정원
|
||||
</p>
|
||||
<p>
|
||||
공연 구성<br />
|
||||
무리0 약속들 — 무리1 깃발들 — 무리2 신체들 — 무리3 사물들 — 무리4 누구들
|
||||
</p>
|
||||
<p>
|
||||
공연 신청<br />
|
||||
<a href="https://zrr.kr/aHTS" target="_blank">https://zrr.kr/aHTS</a>
|
||||
</p>
|
||||
<p>
|
||||
작가<br />
|
||||
<a href="http://dianaband.info" target="_blank">다이애나밴드</a> × <a href="https://cgyoon.kr/"
|
||||
target="_blank">윤충근</a>
|
||||
</p>
|
||||
<p>
|
||||
문의<br />wonjung24@gmail.com
|
||||
</p>
|
||||
</div>
|
||||
</section>
|
||||
<section class="participation">
|
||||
<h1>참여 방법</h1>
|
||||
<ol>
|
||||
<li>1. 무리의 특성에 따라 녹음기기나 핸드폰으로 30초 가량의 소리를 녹음해주세요.
|
||||
<ol class="category">
|
||||
<li>• 무리1 깃발들 — 좋아하는 것, 가치에 대해 다섯 번 외쳐주세요.</li>
|
||||
<li>• 무리2 신체들 — 몸에서 나는 소리를 녹음해 보아요. 박수, 휘파람도 좋아요.</li>
|
||||
<li>• 무리3 사물들 — 주변 사물들의 소리를 찾아 주세요. 뽁뽁이 소리, 구슬 소리</li>
|
||||
<li>• 무리4 누구들 — 누구의 소리를 모아주세요. 반려동물, 물 소리, 산책의 장소</li>
|
||||
</ol>
|
||||
</li>
|
||||
<li>2. 녹음한 소리 파일을 업로드해주세요.</li>
|
||||
<li>3. 소리의 제목과 묘사을 입력한 뒤, 소리의 모양을 그려 제출해주세요.</li>
|
||||
<li>* 혐오 표현이 포함된 음원을 업로드하시면 삭제됩니다.</li>
|
||||
</ol>
|
||||
</section>
|
||||
<section>
|
||||
<h1>소리 제출</h1>
|
||||
<form id="form" method="POST" enctype="multipart/form-data">
|
||||
<ul class="submit">
|
||||
<li>
|
||||
<h3>1. 소리 유형</h3>
|
||||
<ul>
|
||||
<li>
|
||||
<input type="radio" name="group" autocomplete="off" value="flag" /> 무리1 깃발들
|
||||
</li>
|
||||
<li>
|
||||
<input type="radio" name="group" autocomplete="off" value="body" /> 무리2 신체들
|
||||
</li>
|
||||
<li>
|
||||
<input type="radio" name="group" autocomplete="off" value="object" /> 무리3 사물들
|
||||
</li>
|
||||
<li>
|
||||
<input type="radio" name="group" autocomplete="off" value="any" required /> 무리4 누구들
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<h3>2. 소리 파일</h3>
|
||||
<input type="file" name="audiofile" autocomplete="off" required />
|
||||
</li>
|
||||
<li>
|
||||
<h3>3. 소리 제목</h3>
|
||||
<input id="title" name="title" type="text" autocomplete="off" required />
|
||||
</li>
|
||||
<li>
|
||||
<h3>4. 소리 묘사</h3>
|
||||
<input id="comment" name="comment" type="text" autocomplete="off" required />
|
||||
</li>
|
||||
<!-- pixels.png ~ made with p5.js -->
|
||||
<li class="noscroll">
|
||||
<h3>5. 소리 모양</h3>
|
||||
<div>
|
||||
<div id="p5">
|
||||
</div>
|
||||
<div class="tools">
|
||||
<div>
|
||||
<input class="penselect" type="radio" value="pencil" name="penselect" id="penselect-pencil"
|
||||
autocomplete="off" checked>
|
||||
<label for="penselect-pencil">연필</label>
|
||||
</div>
|
||||
<div>
|
||||
<input class="penselect" type="radio" value="erasor" name="penselect" id="penselect-erasor"
|
||||
autocomplete="off">
|
||||
<label for="penselect-erasor">지우개</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<button type="button" class="clear">다시그리기!</button>
|
||||
</li>
|
||||
<li>
|
||||
<h3>6. 비밀 번호</h3>
|
||||
<input id="pass" name="pass" type="text" maxlength="2" pattern="^\d{2}$" title="암호는 숫자x2개로 해주세요."
|
||||
required />
|
||||
<small>두 자리 숫자를 입력해주세요. 업로드한 소리를 삭제할 때 쓰입니다.</small>
|
||||
</li>
|
||||
<li>
|
||||
<input id="submit" type="submit" value="보내기!" />
|
||||
<progress id="progress" max="100" value="70" style="display:none"></progress>
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
↓
|
||||
</p>
|
||||
</form>
|
||||
</section>
|
||||
<section id="list">
|
||||
<section id="list_init_kr" style="display:none">
|
||||
<h1>소리 목록</h1>
|
||||
<p>제출해주신 소리는 아래 목록에 시간순으로 쌓입니다. 각각의 모양을 클릭하면, 모양에 해당하는 소리를 듣고 소리에 대한 정보를 확인할 수 있습니다.</p>
|
||||
</section>
|
||||
<section id="list_init_en" style="display:none">
|
||||
<h1>Sound List</h1>
|
||||
<p>The sounds you submitted will be stacked in chronological order in the list below. By clicking on each shape,
|
||||
you can hear the sound corresponding to the shape and check the information about the sound.</p>
|
||||
</section>
|
||||
{{#each list}}
|
||||
<div class="items" foldername="{{this.foldername}}">
|
||||
<details>
|
||||
<summary><a class="anchor" id="{{this.anchor}}"></a><img class="drawing" src="/uploads/{{this.foldername}}/pixels.png" /></summary>
|
||||
<audio class="sound" preload="none" controls>
|
||||
<source src="/uploads/{{this.foldername}}/audio.mp3" type="audio/mpeg">
|
||||
</audio>
|
||||
<ul class="soundinfo"><hr>
|
||||
<li>유형 | <div class="group">{{this.group}}</div></li><hr>
|
||||
<li>제목 | <div class="title">{{this.title}}</div></li><hr>
|
||||
<li>묘사 | <div class="comment">{{this.comment}}</div></li><hr>
|
||||
</ul>
|
||||
<button class="preview" type="button" onclick="javascript:window.open('/preview/{{this.foldername}}', '_blank');">미리보기</button>
|
||||
<button class="delete" type="button" onclick="del(this)">삭제</button>
|
||||
</details>
|
||||
</div>
|
||||
{{/each}}
|
||||
</section>
|
||||
</div><!-- div class="notice" -->
|
||||
</div><!-- div class="entry" -->
|
||||
|
||||
<script>
|
||||
// // force https
|
||||
// var http_confirm = location.href.split(":")[0];
|
||||
// if (http_confirm == "http") {
|
||||
// window.location.replace("https://" + location.host);
|
||||
// }
|
||||
|
||||
function list_reload() {
|
||||
loadJSON('/list', list => {
|
||||
//if lang == kr
|
||||
let list_init = select('#list_init_kr').html();
|
||||
//if lang == en
|
||||
// let list_init = select('#list_init_en').html();
|
||||
|
||||
//
|
||||
var t = "";
|
||||
list.forEach(item => {
|
||||
t = t + `
|
||||
<div class="items" foldername="${item.foldername}">
|
||||
<details>
|
||||
<summary><a class="anchor" id="${item.anchor}"></a><img class="drawing" src="/uploads/${item.foldername}/pixels.png" /></summary>
|
||||
<audio class="sound" preload="none" controls>
|
||||
<source src="/uploads/${item.foldername}/audio.mp3" type="audio/mpeg">
|
||||
</audio>
|
||||
<ul class="soundinfo"><hr>
|
||||
<li>유형 | <div class="group">${item.group}</div></li><hr>
|
||||
<li>제목 | <div class="title">${item.title}</div></li><hr>
|
||||
<li>묘사 | <div class="comment">${item.comment}</div></li><hr>
|
||||
</ul>
|
||||
<button class="preview" type="button" onclick="javascript:window.open('/preview/${item.foldername}', '_blank');">미리보기</button>
|
||||
<button class="delete" type="button" onclick="del(this)">삭제</button>
|
||||
</details>
|
||||
</div>
|
||||
`;
|
||||
});
|
||||
select('#list').html(list_init + t);
|
||||
});
|
||||
};
|
||||
|
||||
var socket = io(location.host);
|
||||
var n = 0;
|
||||
var fr = 20;
|
||||
var arr = [];
|
||||
var looper;
|
||||
var score;
|
||||
var logo;
|
||||
var silence;
|
||||
var clap;
|
||||
|
||||
//promisify -> new Tone.Player
|
||||
function AudioImport(url) {
|
||||
return new Promise((resolve, reject) => {
|
||||
var audio = new Tone.Player(url, () => resolve(audio));
|
||||
});
|
||||
}
|
||||
|
||||
//**ENTRY begin >>>
|
||||
// -- https://stackoverflow.com/a/39577640
|
||||
function dataURLtoBlob(dataURL) {
|
||||
let array, binary, i, len;
|
||||
binary = atob(dataURL.split(",")[1]);
|
||||
array = [];
|
||||
i = 0;
|
||||
len = binary.length;
|
||||
while (i < len) {
|
||||
array.push(binary.charCodeAt(i));
|
||||
i++;
|
||||
}
|
||||
return new Blob([new Uint8Array(array)], {
|
||||
type: "image/png",
|
||||
});
|
||||
}
|
||||
|
||||
function submitForm(event) {
|
||||
|
||||
//TODO : first check if there is a drawing or not. (pixels)
|
||||
|
||||
//
|
||||
var submit = document.getElementById("submit");
|
||||
submit.setAttribute('disabled', 'disabled');
|
||||
select("html").style('cursor', 'progress');
|
||||
|
||||
//
|
||||
var form = document.getElementById("form");
|
||||
var fd = new FormData(form);
|
||||
|
||||
//
|
||||
var unit = 45; //mask&override 'unit' -> for crispy png.
|
||||
var img2 = createGraphics(cols * unit + 2, rows * unit + 2);
|
||||
img2.clear();
|
||||
img2.strokeWeight(0);
|
||||
img2.fill(255);
|
||||
for (var c = 0; c < cols; c++) {
|
||||
for (var r = 0; r < rows; r++) {
|
||||
if (p[c * cols + r] == 1) {
|
||||
img2.rect(c * unit + 1, r * unit + 1, unit, unit);
|
||||
}
|
||||
}
|
||||
}
|
||||
var dataurl = img2.elt.toDataURL();
|
||||
var pixels = dataURLtoBlob(dataurl);
|
||||
fd.append("pixels", pixels, "pixels.png");
|
||||
|
||||
for (var pair of fd.entries()) {
|
||||
console.log(pair[0] + ', ' + pair[1]);
|
||||
}
|
||||
|
||||
//
|
||||
var request = new XMLHttpRequest();
|
||||
//
|
||||
var progress = select("#progress");
|
||||
progress.style('display', 'unset');
|
||||
//
|
||||
request.open("POST", "/");
|
||||
request.upload.onprogress = (pe) => {
|
||||
if (pe.lengthComputable) {
|
||||
progress.elt.max = pe.total;
|
||||
progress.elt.value = pe.loaded;
|
||||
}
|
||||
}
|
||||
request.onload = function () {
|
||||
console.log('received http response');
|
||||
console.log('response status: ', request.status);
|
||||
console.log('response headers: ', request.getAllResponseHeaders());
|
||||
console.log('response body: ', request.response);
|
||||
}
|
||||
request.onloadend = () => {
|
||||
// check server's final feedback here.
|
||||
if (request.status == 200) {
|
||||
alert('감사합니다. 아래에 소리목록에서 업로드된 음원을 확인해보세요.');
|
||||
} else {
|
||||
alert('앗! 소리 파일 전송에 문제가 생겼어요\n wonjung24@gmail.com에 소리 파일을 한번 더 보내주시면 추가하겠습니다.\n 관리자 정보: 서버 응답 [' + request.status + ']');
|
||||
}
|
||||
// re-enable next upload.
|
||||
submit.removeAttribute('disabled');
|
||||
select("html").style('cursor', 'auto');
|
||||
form.reset();
|
||||
for (let a = 0; a < p.length; a++) p[a] = 0; //clear pixel-drawing, too.
|
||||
// reload list.
|
||||
list_reload();
|
||||
}
|
||||
request.send(fd);
|
||||
|
||||
//
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
const form = document.getElementById('form');
|
||||
form.addEventListener('submit', submitForm);
|
||||
|
||||
//// ---- for 'list' rendering ----
|
||||
|
||||
function del(that) {
|
||||
console.log();
|
||||
let text;
|
||||
let pass = prompt("패스워드를 맞춰보세요!", "숫자2개");
|
||||
if (/^\d{2}$/.test(pass)) {
|
||||
var target = that.parentElement.parentElement.getAttribute('foldername');
|
||||
const trydelete = async () => {
|
||||
const response = await fetch('/delete/' + target + '/' + pass);
|
||||
if (response.ok) {
|
||||
const json = await response.json();
|
||||
return Promise.resolve(json);
|
||||
} else {
|
||||
return Promise.reject('no response.');
|
||||
}
|
||||
}
|
||||
trydelete().then((resp) => {
|
||||
if (resp.result) {
|
||||
alert("지우기 성공!");
|
||||
// location.reload();
|
||||
list_reload();
|
||||
} else {
|
||||
alert("지우기 실패-");
|
||||
}
|
||||
}).catch(console.log);
|
||||
} else {
|
||||
alert("암호는 숫자2개...");
|
||||
}
|
||||
}
|
||||
|
||||
var p = [];
|
||||
var cols = 17;
|
||||
var rows = 17;
|
||||
var unit = 15; //px
|
||||
var img;
|
||||
var penselect = "pencil";
|
||||
var scrollable = true;
|
||||
// <<< end of **ENTRY
|
||||
|
||||
async function setup() {
|
||||
|
||||
//**PARADE
|
||||
noCanvas();
|
||||
if (windowWidth > 1500 && windowWidth > windowHeight) {
|
||||
fr = 120;
|
||||
} else {
|
||||
fr = 20;
|
||||
}
|
||||
frameRate(fr);
|
||||
|
||||
//
|
||||
|
||||
|
||||
//p5 'draw()' doesn't work if user is not looking at the tab.
|
||||
//noLoop(); // <-- BUT, we want 1 for ENTRY graphics!
|
||||
// --> use custom looper.
|
||||
|
||||
//**ENTRY
|
||||
// list_reload();
|
||||
|
||||
// for korean page...
|
||||
var list_intro = select("#list_init_kr");
|
||||
list_intro.style('display', 'unset');
|
||||
|
||||
var cnv = createCanvas(cols * unit + 2, rows * unit + 2);
|
||||
cnv.parent("p5");
|
||||
img = createGraphics(cols * unit + 2, rows * unit + 2);
|
||||
document.querySelectorAll('.penselect').forEach(item => item.onclick = () => {
|
||||
penselect = document.querySelector('input[name="penselect"]:checked').value;
|
||||
});
|
||||
//
|
||||
for (var i = 0; i < cols * rows; i++) p.push(0);
|
||||
document.querySelectorAll('.clear').forEach(item => item.onclick = () => {
|
||||
for (let a = 0; a < p.length; a++) p[a] = 0;
|
||||
});
|
||||
|
||||
//go to the anchor
|
||||
console.log(window.location.hash.substring(1));
|
||||
let elmnt = document.getElementById(window.location.hash.substring(1));
|
||||
if (elmnt) {
|
||||
elmnt.scrollIntoView(true);
|
||||
}
|
||||
}
|
||||
|
||||
//**ENTRY begin >>>
|
||||
function draw() {
|
||||
//clear
|
||||
clear();
|
||||
|
||||
//draw the grid
|
||||
stroke(255);
|
||||
strokeWeight(0.2);
|
||||
for (var c = 0; c < cols; c++) {
|
||||
for (var r = 0; r < rows; r++) {
|
||||
noFill();
|
||||
rect(c * unit + 1, r * unit + 1, unit, unit);
|
||||
}
|
||||
}
|
||||
|
||||
//pointer
|
||||
fill(0, 255, 0);
|
||||
strokeWeight(0);
|
||||
|
||||
//mouse way
|
||||
circle(mouseX, mouseY, 10);
|
||||
if (mouseIsPressed && mouseButton === LEFT) {
|
||||
//find slot under the pointer
|
||||
var mouseC = int(mouseX / unit);
|
||||
var mouseR = int(mouseY / unit);
|
||||
if (mouseC >= 0 && mouseC < cols && mouseR >= 0 && mouseR < rows) {
|
||||
if (penselect == "pencil") p[mouseC * cols + mouseR] = 1;
|
||||
else if (penselect == "erasor") p[mouseC * cols + mouseR] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//touch way
|
||||
if (touches.length > 0) {
|
||||
circle(touches[0].x, touches[0].y, 10);
|
||||
//find slot under the pointer
|
||||
var mouseC = int(touches[0].x / unit);
|
||||
var mouseR = int(touches[0].y / unit);
|
||||
if (mouseC >= 0 && mouseC < cols && mouseR >= 0 && mouseR < rows) {
|
||||
// if (scrollable == true) {
|
||||
// scrollable = false;
|
||||
// // firefox browser @ my android phone -> url bar auto-hiding kills drawing experience.
|
||||
// // --> https://stackoverflow.com/a/63221105
|
||||
// document.body.style.marginTop = `-${window.pageYOffset}px`;
|
||||
// document.body.style.position = 'fixed';
|
||||
// document.body.style.overflowY = 'scroll';
|
||||
// }
|
||||
if (penselect == "pencil") p[mouseC * cols + mouseR] = 1;
|
||||
else if (penselect == "erasor") p[mouseC * cols + mouseR] = 0;
|
||||
} else {
|
||||
// if (scrollable == false) {
|
||||
// scrollable = true;
|
||||
// // firefox browser @ my android phone -> url bar auto-hiding kills drawing experience.
|
||||
// // --> https://stackoverflow.com/a/63221105
|
||||
// document.body.style.position = '';
|
||||
// document.body.style.overflowY = '';
|
||||
// if (document.body.style.marginTop) {
|
||||
// const scrollTop = -parseInt(document.body.style.marginTop, 10);
|
||||
// document.body.style.marginTop = '';
|
||||
// window.scrollTo(window.pageXOffset, scrollTop);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
//draw img
|
||||
image(img, 0, 0);
|
||||
img.clear();
|
||||
img.strokeWeight(0);
|
||||
img.fill(255);
|
||||
for (var c = 0; c < cols; c++) {
|
||||
for (var r = 0; r < rows; r++) {
|
||||
if (p[c * cols + r] == 1) {
|
||||
img.rect(c * unit + 1, r * unit + 1, unit, unit);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// <<< end of **ENTRY
|
||||
|
||||
//
|
||||
var myroom = -1;
|
||||
var intro;
|
||||
var ready;
|
||||
//
|
||||
socket.on("connect", async function () {
|
||||
console.log("connected!");
|
||||
setTimeout(gotConnection, 1000);
|
||||
console.log("- injecting small delay to make sure p5js loaded. ~ 1s");
|
||||
});
|
||||
|
||||
async function gotConnection() {
|
||||
//
|
||||
console.log("- after delay!");
|
||||
//
|
||||
silence = (await AudioImport("./audio/_silence.wav")).toDestination();
|
||||
clap = (await AudioImport("./audio/clap01.mp3")).toDestination();
|
||||
|
||||
//TESTING... fixed to room 1.
|
||||
// myroom = 1;
|
||||
|
||||
if (myroom == -1 && selectAll(".roomsel").length == 0) {
|
||||
//initial connection -> ask the room number.
|
||||
|
||||
var roomsel = createDiv();
|
||||
selectAll(".parade")[0].child(roomsel);
|
||||
roomsel.class("roomsel");
|
||||
///
|
||||
var b = createButton("시작하기 Start!"); //, "1");
|
||||
var d = createDiv("흐름을 향하여 걷는 Walking towards the Flow");
|
||||
d.class("title");
|
||||
let starter = function () {
|
||||
silence.start();
|
||||
clap.start();
|
||||
// myroom = parseInt(this.value());
|
||||
myroom = 1;
|
||||
|
||||
socket.emit("room", myroom, function (res) {
|
||||
if (res) {
|
||||
console.log("entered the room -> " + myroom);
|
||||
|
||||
// myroom-indicator
|
||||
// var tag = createP(str(myroom));
|
||||
// selectAll(".parade")[0].child(tag);
|
||||
|
||||
//
|
||||
// setTimeout(function() {
|
||||
// ready = createP("퍼레이드 시작합니다!!");
|
||||
// ready.position(
|
||||
// windowWidth / 2 - windowWidth / 10,
|
||||
// windowHeight / 2
|
||||
// );
|
||||
// }, 1000);
|
||||
} else {
|
||||
console.log("rejected!");
|
||||
}
|
||||
});
|
||||
|
||||
setTimeout(() => {
|
||||
selectAll(".roomsel").forEach(item => {
|
||||
item.remove();
|
||||
// 1 second popup '.intro' div
|
||||
intro = createDiv(
|
||||
"«흐름을 향하여 걷는» 소리 행렬이 곧 나타납니다. <br>오른쪽에서 왼쪽으로 지나가는 소리가 들리지 않는다면 볼륨을 확인해주시고, 스마트폰 환경에서는 진동 모드를 해제해주세요. <br>스크롤을 내리면 참여 방법을 확인하고 소리를 업로드할 수 있으며, 스크롤을 맨 위로 올리거나 오른쪽 위의 글씨를 클릭해 퍼레이드로 다시 돌아올 수 있습니다. <br><br>The sound parade «Walking towards the Flow», appears soon. <br>If you can't hear the sound passing from right to left, check the volume, and if you're using a smartphone, turn off the vibrate mode. <br>Scroll down to see how to join and upload sound, scroll to the top or click the text “parade” on the top right to return to the parade.<br><img class='arrow' src='arrow.svg'>"
|
||||
);
|
||||
intro.class("notice intro"); //-> fadeout & disapear by css animation style.
|
||||
});
|
||||
}, 1000);
|
||||
};
|
||||
b.mouseClicked(starter);
|
||||
d.mouseClicked(starter);
|
||||
roomsel.child(d);
|
||||
roomsel.child(b);
|
||||
} else {
|
||||
//re-connection -> just connect to remembered room!
|
||||
socket.emit("room", myroom, function (res) {
|
||||
if (res) {
|
||||
console.log("entered the room -> " + myroom);
|
||||
} else {
|
||||
console.log("rejected!");
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
//var fading_factor = 0.3; //30%
|
||||
var fading_factor = 0.5; //50%
|
||||
socket.on("post", async function (post) {
|
||||
|
||||
console.log(post);
|
||||
var list = await new Promise((resolve, reject) => {
|
||||
loadJSON("/entries", (json) => resolve(json));
|
||||
})
|
||||
console.log(list);
|
||||
|
||||
// var object = post.object;
|
||||
var object = {
|
||||
"id": 1,
|
||||
"type": "abc",
|
||||
"src": "/uploads/" + list[post] + "/pixels.png",
|
||||
"audio": "/uploads/" + list[post] + "/audio.mp3",
|
||||
"alt": "알트",
|
||||
"size": {
|
||||
"base": 40,
|
||||
"random": 20
|
||||
},
|
||||
"y": {
|
||||
"base": 40,
|
||||
"random": 25
|
||||
},
|
||||
"showtime": 40000
|
||||
};
|
||||
console.log(object);
|
||||
|
||||
var img = createImg(object.src, object.alt, "", async function (im) {
|
||||
//로딩이 끝나면, start!
|
||||
var pv = new Tone.PanVol(0, -99).toDestination();
|
||||
var snd = await AudioImport(object.audio); // NOTE: url with spaces didn't work here.
|
||||
snd.connect(pv).start();
|
||||
snd.loop = true;
|
||||
|
||||
//로딩이 끝나면, show!
|
||||
im.show();
|
||||
|
||||
//그림의 크기와 초기 위치 ==> 가로 보기인 경우
|
||||
var width = 0;
|
||||
if (windowWidth > windowHeight) {
|
||||
|
||||
width = (windowHeight * (object.size.base * 0.4 + object.size.random * Math.random())) / 100; // 좀더 크게 + 40% (ratio)
|
||||
im.size(width, AUTO);
|
||||
|
||||
im.position(
|
||||
windowWidth * (1 + fading_factor),
|
||||
(windowHeight * (object.y.base + object.y.random * Math.random()) * 0.5) / 100 // 좀더 위로 위로 - 50% (ratio)
|
||||
);
|
||||
|
||||
//그림의 크기와 초기 위치 ==> 세로 보기인 경우
|
||||
} else {
|
||||
|
||||
width = (windowHeight * (object.size.base + object.size.random * Math.random())) / 100; // json에서 정한 크기 그대로. (ratio)
|
||||
im.size(width, AUTO);
|
||||
|
||||
im.position(
|
||||
windowWidth * (1 + fading_factor),
|
||||
(windowHeight * (object.y.base + object.y.random * Math.random())) / 100 // json에서 정한 위치 그대로. (ratio)
|
||||
);
|
||||
}
|
||||
|
||||
//추가 정보들
|
||||
im.attribute("data-type", object.type);
|
||||
im.attribute("data-showtime", object.showtime / 1000); //milli-sec. -> seconds.
|
||||
|
||||
//'아이콘' 들은 애니메이션을 시켜줘야 함...
|
||||
if (object.type == "icon") {
|
||||
//
|
||||
im.class("rotate");
|
||||
im.style("animation-duration", object.rotate + "s");
|
||||
var orgs = im.style("transform-origin").split(" ");
|
||||
var str = parseFloat(orgs[0]) + object.pivot.x + "px";
|
||||
str = str + " " + parseFloat(orgs[1]) + object.pivot.y + "px";
|
||||
im.style("transform-origin", str);
|
||||
//
|
||||
}
|
||||
|
||||
//로딩이 다 되면, rendering array에 추가.
|
||||
var bundle = {
|
||||
ref: object,
|
||||
img: im,
|
||||
sound: snd,
|
||||
panvol: pv,
|
||||
width: width
|
||||
};
|
||||
arr.push(bundle);
|
||||
});
|
||||
|
||||
//첨에는 hide
|
||||
img.hide();
|
||||
|
||||
});
|
||||
|
||||
//p5 'draw()' doesn't work if user is not looking at the tab.
|
||||
// --> custom looper is ok.
|
||||
var looper;
|
||||
(looper = function (timeout) {
|
||||
setTimeout(async function () {
|
||||
|
||||
//
|
||||
for (var i = arr.length - 1; i >= 0; i -= 1) {
|
||||
var bundle = arr[i];
|
||||
var img = bundle.img;
|
||||
var showtime = parseFloat(img.attribute("data-showtime"));
|
||||
var type = img.attribute("data-type");
|
||||
var x = img.position().x;
|
||||
var y = img.position().y;
|
||||
y = y + random(-1, 1);
|
||||
x = x - windowWidth / (fr * showtime);
|
||||
|
||||
//
|
||||
if (type == "icon") {
|
||||
img.style("z-index", "-1");
|
||||
}
|
||||
3;
|
||||
|
||||
img.position(x, y);
|
||||
var pan = (x / windowWidth) * 2 - 1;
|
||||
|
||||
//panning
|
||||
var snd = bundle.sound;
|
||||
var pv = bundle.panvol;
|
||||
if (x >= -bundle.width && x < windowWidth) {
|
||||
pan = ((x + bundle.width) / (windowWidth + bundle.width)) * 2 - 1;
|
||||
pv.pan.value = pan;
|
||||
pv.volume.value = 0;//(dB)
|
||||
} else {
|
||||
var range;
|
||||
var knob;
|
||||
if (x >= windowWidth) {
|
||||
range = windowWidth * fading_factor
|
||||
knob = x - windowWidth;
|
||||
pv.pan.value = 1;
|
||||
pv.volume.value = knob / range * -20;
|
||||
} else if (x < -bundle.width) {
|
||||
range = windowWidth * fading_factor
|
||||
knob = (x + bundle.width) * -1;
|
||||
pv.pan.value = -1;
|
||||
pv.volume.value = knob / range * -20;
|
||||
}
|
||||
}
|
||||
|
||||
//scroll down -> volume down
|
||||
// if (userscroll > windowHeight*2) {
|
||||
// pv.volume.value = 0; //off
|
||||
// } else if (userscroll >= windowHeight && userscroll < windowHeight*2) {
|
||||
// pv.volume.value = (1 - (userscroll - windowHeight)/windowHeight) * pv.volume.value; //fade out
|
||||
// }
|
||||
|
||||
//remove with sound fade-out
|
||||
var exit_x = -bundle.width - windowWidth * fading_factor;
|
||||
if (x < exit_x) {
|
||||
img.remove();
|
||||
snd.stop();
|
||||
delete snd;
|
||||
delete pv;
|
||||
arr.splice(i, 1);
|
||||
}
|
||||
}
|
||||
//
|
||||
|
||||
looper(1000 / fr);
|
||||
}, timeout);
|
||||
})(1000 / fr);
|
||||
|
||||
// function randomvoiceplay() {
|
||||
// (looper = function(timeout) {
|
||||
// setTimeout(function() {
|
||||
// voice[int(random(19))].play();
|
||||
// looper(random(8000, 12000));
|
||||
// }, timeout);
|
||||
// })(8000);
|
||||
// }
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
Loading…
Reference in a new issue