Browse Source

reworked levels system

normalised sensor value between level min and max
sublevel detection
normalised sensor value by level
Etienne Landon 9 years ago
parent
commit
a80709fd6a
2 changed files with 482 additions and 412 deletions
  1. 218 202
      uki-score/ESP_sensors.pd
  2. 264 210
      uki-score/UKI_v3.pd

+ 218 - 202
uki-score/ESP_sensors.pd

@@ -1,216 +1,232 @@
-#N canvas 29 601 543 381 10;
-#X obj 61 75 r UKI_ESP_\$1;
+#N canvas 15 601 578 324 10;
+#X obj 61 55 r UKI_ESP_\$1;
 #X text 102 13 \$1 : sensor/player number;
-#N canvas 1 53 450 300 mean 0;
+#X obj 254 90 vsl 10 55 0 1024 0 0 empty empty empty 0 -9 0 10 -262144
+-1 -1 290 1;
+#X obj 271 90 vsl 10 55 0 1024 0 0 empty empty empty 0 -9 0 10 -262144
+-1 -1 0 1;
+#N canvas 567 152 1300 819 levels 0;
+#X obj 72 35 inlet;
+#X obj 72 191 moses 0.15;
+#X obj 129 213 moses 0.3;
+#X obj 180 235 moses 0.45;
+#X obj 237 257 moses 0.6;
+#X obj 288 277 moses 0.8;
+#X obj 224 135 r level_thresholds;
+#X obj 224 157 unpack f f f f f;
+#X obj 72 393 /;
+#X obj 89 339 r level_thresholds;
+#X msg 89 361 \$5;
+#X obj 129 427 /;
+#X obj 146 363 r level_thresholds;
+#X msg 146 385 \$4 \$5;
+#X obj 146 407 -;
+#X obj 180 449 /;
+#X obj 237 483 /;
+#X obj 254 419 r level_thresholds;
+#X obj 254 463 -;
+#X obj 195 386 r level_thresholds;
+#X obj 195 430 -;
+#X msg 195 408 \$3 \$4;
+#X msg 254 441 \$2 \$3;
+#X obj 288 511 /;
+#X obj 340 545 /;
+#X obj 357 481 r level_thresholds;
+#X obj 357 525 -;
+#X obj 303 448 r level_thresholds;
+#X obj 303 492 -;
+#X msg 303 470 \$1 \$2;
+#X msg 357 503 1 \$1;
+#X obj 280 83 hsl 128 12 0 1 0 0 empty empty empty 25 6 0 10 -262144
+-1 -1 0 1;
+#X obj 129 235 -;
+#X obj 180 257 -;
+#X obj 237 279 -;
+#X obj 288 300 -;
+#X obj 339 299 -;
+#X obj 340 567 pack 0 5;
+#X obj 288 533 pack 0 4;
+#X obj 237 505 pack 0 3;
+#X obj 180 471 pack 0 2;
+#X obj 129 449 pack 0 1;
+#X obj 72 415 pack 0 0;
+#X obj 72 607 s \$0-sensor_sublevel;
+#X obj 574 67 r \$0-sensor_sublevel;
+#X obj 574 89 unpack f f;
+#X obj 631 112 change;
+#X obj 631 134 t f f;
+#X obj 631 233 pack f f;
+#X obj 631 164 / 2;
+#X obj 631 186 i;
+#X obj 631 208 + 1;
+#X obj 631 256 list prepend \$1;
+#X obj 631 281 s /player;
+#X obj 574 311 list prepend \$1;
+#X obj 574 333 s /sensor_level_norm;
+#X connect 0 0 1 0;
+#X connect 1 0 8 0;
+#X connect 1 1 2 0;
+#X connect 2 0 32 0;
+#X connect 2 1 3 0;
+#X connect 3 0 33 0;
+#X connect 3 1 4 0;
+#X connect 4 0 34 0;
+#X connect 4 1 5 0;
+#X connect 5 0 35 0;
+#X connect 5 1 36 0;
+#X connect 6 0 7 0;
+#X connect 7 0 5 1;
+#X connect 7 0 36 1;
+#X connect 7 1 4 1;
+#X connect 7 1 35 1;
+#X connect 7 2 3 1;
+#X connect 7 2 34 1;
+#X connect 7 3 2 1;
+#X connect 7 3 33 1;
+#X connect 7 4 1 1;
+#X connect 7 4 32 1;
+#X connect 8 0 42 0;
+#X connect 9 0 10 0;
+#X connect 10 0 8 1;
+#X connect 11 0 41 0;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 14 0 11 1;
+#X connect 15 0 40 0;
+#X connect 16 0 39 0;
+#X connect 17 0 22 0;
+#X connect 18 0 16 1;
+#X connect 19 0 21 0;
+#X connect 20 0 15 1;
+#X connect 21 0 20 0;
+#X connect 22 0 18 0;
+#X connect 23 0 38 0;
+#X connect 24 0 37 0;
+#X connect 25 0 30 0;
+#X connect 26 0 24 1;
+#X connect 27 0 29 0;
+#X connect 28 0 23 1;
+#X connect 29 0 28 0;
+#X connect 30 0 26 0;
+#X connect 31 0 1 0;
+#X connect 32 0 11 0;
+#X connect 33 0 15 0;
+#X connect 34 0 16 0;
+#X connect 35 0 23 0;
+#X connect 36 0 24 0;
+#X connect 37 0 43 0;
+#X connect 38 0 43 0;
+#X connect 39 0 43 0;
+#X connect 40 0 43 0;
+#X connect 41 0 43 0;
+#X connect 42 0 43 0;
+#X connect 44 0 45 0;
+#X connect 45 0 54 0;
+#X connect 45 1 46 0;
+#X connect 46 0 47 0;
+#X connect 47 0 49 0;
+#X connect 47 1 48 1;
+#X connect 48 0 52 0;
+#X connect 49 0 50 0;
+#X connect 50 0 51 0;
+#X connect 51 0 48 0;
+#X connect 52 0 53 0;
+#X connect 54 0 55 0;
+#X restore 61 224 pd levels;
+#X obj 125 195 list prepend \$1;
+#X obj 125 214 s /sensor;
+#X obj 286 88 vradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144 -1
+-1 1;
+#X obj 305 100 vradio 8 1 0 6 empty empty empty 0 -8 0 10 -262144 -1
+-1 0;
+#X obj 286 37 unpack f f;
+#N canvas 519 205 450 300 \$0-oscillo 0;
+#X obj 85 30 inlet;
+#X obj 120 122 list split 1;
+#X obj 85 152 list prepend;
+#X obj 85 64 t f b;
+#X obj 120 93 tabdump \$1-sensor;
+#X obj 85 174 tabset \$1-sensor;
+#X connect 0 0 3 0;
+#X connect 1 1 2 1;
+#X connect 2 0 5 0;
+#X connect 3 0 2 0;
+#X connect 3 1 4 0;
+#X connect 4 0 1 0;
+#X restore 145 174 pd \$0-oscillo;
+#X obj 318 82 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#N canvas 440 169 425 256 \$1-oscillo 0;
+#N canvas 1 53 450 300 \$0-gop 0;
+#N canvas 1 53 450 250 (subpatch) 0;
+#X array \$1-sensor 2000 float 2;
+#X coords 1420.43 1024 2000 0 400 200 1 0 0;
+#X restore 4 15 graph;
+#X obj 6 218 hsl 395 15 0 1950 0 0 empty empty empty -2 -8 0 10 -228856
+-1 -1 0 1;
+#X obj 3 238 pack 0 \$1;
+#X msg 3 265 \; \$2-sensor bounds \$1 1024 2000 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X coords 0 -1 1 1 410 240 2 0 0;
+#X restore 6 6 pd \$0-gop;
+#X restore 415 59 pd \$1-oscillo;
+#X obj 345 98 f \$1;
+#X msg 345 121 \; pd-\$1-oscillo vis 1 \, editmode 0;
+#N canvas 1 53 424 233 mean 0;
 #X obj 84 46 inlet;
-#X obj 84 168 outlet;
+#X obj 84 178 outlet;
 #X text 44 12 ici bientôt un système incroyable pour gérer ces capteurs
 ;
 #X obj 84 90 list-abs/list-mean;
 #X obj 142 117 vsl 10 50 0 1024 0 0 empty empty empty 0 -9 0 10 -262144
--1 -1 435 1;
+-1 -1 323 1;
 #X obj 84 68 list-abs/last-x 10;
 #X connect 0 0 5 0;
 #X connect 3 0 4 0;
 #X connect 3 0 1 0;
 #X connect 5 0 3 0;
-#X restore 61 105 pd mean;
-#X obj 262 84 vsl 10 55 0 1024 0 0 empty empty empty 0 -9 0 10 -262144
--1 -1 243 1;
-#X obj 279 84 vsl 10 55 0 1024 0 0 empty empty empty 0 -9 0 10 -262144
--1 -1 479 1;
-#N canvas 817 484 1300 819 levels 0;
-#X obj 289 17 inlet;
-#X obj 782 151 r /game/level/3;
-#X obj 782 174 unpack f f;
-#X obj 749 260 &&;
-#X obj 812 208 < 600;
-#X obj 769 329 route 1;
-#X obj 290 699 outlet;
-#X obj 506 174 unpack f f;
-#X obj 520 387 route 1;
-#X obj 296 174 unpack f f;
-#X obj 290 257 &&;
-#X obj 320 387 route 1;
-#X obj 296 151 r /game/level/1;
-#X obj 506 151 r /game/level/2;
-#X obj 500 305 &&;
-#X obj 749 288 == 0;
-#X obj 500 284 == 0;
-#X msg 769 452 3;
-#X obj 290 291 == 0;
-#X obj 290 322 &&;
-#X msg 290 361 0;
-#X obj 316 208 < 100;
-#X obj 290 237 >= 0;
-#X obj 749 213 >= 400;
-#X obj 290 341 route 1;
-#X obj 527 203 < 300;
-#X obj 500 237 >= 200;
-#X obj 500 260 &&;
-#X obj 289 56 t f f f f;
-#X text 158 93 comment;
-#X text 161 340 si hors tous levels;
-#X text 950 256 ajout sublevels : si dans level \, si >;
-#X obj 843 347 -;
-#X obj 843 369 * -0.5;
-#X text 866 348 level min - max;
-#X text 888 370 invert \, /2;
-#X obj 843 391 +;
-#X obj 843 324 t a f;
-#X obj 828 413 >;
-#X text 871 391 + level min;
-#X obj 843 301 r /game/level/3;
-#X obj 769 501 pack f f;
-#X obj 749 117 t f f f;
-#X obj 812 372 f;
-#X obj 857 433 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
-1;
-#X obj 824 440 + 4;
-#X obj 769 351 t b b;
-#X obj 594 418 -;
-#X obj 594 440 * -0.5;
-#X text 617 419 level min - max;
-#X text 639 441 invert \, /2;
-#X obj 594 462 +;
-#X obj 594 395 t a f;
-#X obj 579 484 >;
-#X text 622 462 + level min;
-#X obj 520 572 pack f f;
-#X obj 563 443 f;
-#X obj 608 504 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
-1;
-#X obj 520 422 t b b;
-#X msg 520 523 2;
-#X obj 575 511 + 2;
-#X obj 594 372 r /game/level/2;
-#X obj 394 418 -;
-#X obj 394 440 * -0.5;
-#X text 417 419 level min - max;
-#X text 439 441 invert \, /2;
-#X obj 394 462 +;
-#X obj 394 395 t a f;
-#X obj 379 484 >;
-#X text 422 462 + level min;
-#X obj 320 572 pack f f;
-#X obj 363 443 f;
-#X obj 408 504 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
-1;
-#X obj 320 422 t b b;
-#X msg 320 523 1;
-#X obj 375 511 + 0;
-#X obj 394 372 r /game/level/1;
-#X obj 499 117 t f f f;
-#X obj 289 117 t f f f;
-#X connect 0 0 28 0;
-#X connect 1 0 2 0;
-#X connect 2 0 23 1;
-#X connect 2 1 4 1;
-#X connect 3 0 15 0;
-#X connect 3 0 5 0;
-#X connect 4 0 3 1;
-#X connect 5 0 46 0;
-#X connect 7 0 26 1;
-#X connect 7 1 25 1;
-#X connect 8 0 58 0;
-#X connect 9 0 22 1;
-#X connect 9 1 21 1;
-#X connect 10 0 18 0;
-#X connect 10 0 11 0;
-#X connect 11 0 73 0;
-#X connect 12 0 9 0;
-#X connect 13 0 7 0;
-#X connect 14 0 19 1;
-#X connect 15 0 14 1;
-#X connect 16 0 14 0;
-#X connect 17 0 41 0;
-#X connect 18 0 19 0;
-#X connect 19 0 24 0;
-#X connect 20 0 6 0;
-#X connect 21 0 10 1;
-#X connect 22 0 10 0;
-#X connect 23 0 3 0;
-#X connect 24 0 20 0;
-#X connect 25 0 27 1;
-#X connect 26 0 27 0;
-#X connect 27 0 16 0;
-#X connect 27 0 8 0;
-#X connect 28 1 78 0;
-#X connect 28 2 77 0;
-#X connect 28 3 42 0;
-#X connect 32 0 33 0;
-#X connect 33 0 36 0;
-#X connect 36 0 38 1;
-#X connect 37 0 32 0;
-#X connect 37 1 36 1;
-#X connect 38 0 44 0;
-#X connect 38 0 45 0;
-#X connect 40 0 37 0;
-#X connect 41 0 6 0;
-#X connect 42 0 23 0;
-#X connect 42 1 4 0;
-#X connect 42 2 43 1;
-#X connect 43 0 38 0;
-#X connect 45 0 41 1;
-#X connect 46 0 17 0;
-#X connect 46 1 43 0;
-#X connect 47 0 48 0;
-#X connect 48 0 51 0;
-#X connect 51 0 53 1;
-#X connect 52 0 47 0;
-#X connect 52 1 51 1;
-#X connect 53 0 57 0;
-#X connect 53 0 60 0;
-#X connect 55 0 6 0;
-#X connect 56 0 53 0;
-#X connect 58 0 59 0;
-#X connect 58 1 56 0;
-#X connect 59 0 55 0;
-#X connect 60 0 55 1;
-#X connect 61 0 52 0;
-#X connect 62 0 63 0;
-#X connect 63 0 66 0;
-#X connect 66 0 68 1;
-#X connect 67 0 62 0;
-#X connect 67 1 66 1;
-#X connect 68 0 72 0;
-#X connect 68 0 75 0;
-#X connect 70 0 6 0;
-#X connect 71 0 68 0;
-#X connect 73 0 74 0;
-#X connect 73 1 71 0;
-#X connect 74 0 70 0;
-#X connect 75 0 70 1;
-#X connect 76 0 67 0;
-#X connect 77 0 26 0;
-#X connect 77 1 25 0;
-#X connect 77 1 56 1;
-#X connect 78 0 22 0;
-#X connect 78 1 21 0;
-#X connect 78 2 71 1;
-#X restore 61 194 pd levels;
-#X msg 236 239 set \$1 \$2;
-#X msg 236 261 1 0;
-#X obj 125 144 list prepend \$1;
-#X obj 125 163 s /sensor;
-#X obj 61 246 list prepend \$1;
-#X obj 61 271 s /player;
-#X obj 294 82 vradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144 -1
--1 1;
-#X obj 313 94 vradio 8 1 0 6 empty empty empty 0 -8 0 10 -262144 -1
--1 0;
-#X obj 142 201 unpack f f;
-#X connect 0 0 3 0;
+#X restore 61 125 pd mean;
+#N canvas 1 53 450 300 norm 0;
+#X obj 191 60 r level_max;
+#X obj 224 80 r level_min;
+#X obj 191 126 -;
+#X obj 224 100 t b f f;
+#X obj 158 177 / 1024;
+#X obj 158 157 -;
+#X text 205 176 sensor_norm;
+#X obj 158 199 limit 0 1;
+#X obj 158 19 inlet;
+#X obj 158 221 outlet;
 #X connect 0 0 2 0;
-#X connect 2 0 4 0;
-#X connect 2 0 5 0;
-#X connect 2 0 8 0;
+#X connect 1 0 3 0;
+#X connect 2 0 4 1;
+#X connect 3 0 2 0;
+#X connect 3 1 2 1;
+#X connect 3 2 5 1;
+#X connect 4 0 7 0;
+#X connect 5 0 4 0;
+#X connect 7 0 9 0;
+#X connect 8 0 5 0;
+#X restore 61 147 pd norm;
+#X obj 286 -5 r /player;
+#X obj 286 17 route \$1;
+#X msg 61 77 1024 \$1;
+#X obj 61 99 -;
+#X connect 0 0 19 0;
 #X connect 5 0 6 0;
-#X connect 5 0 10 0;
-#X connect 5 0 14 0;
-#X connect 6 0 7 0;
-#X connect 8 0 9 0;
-#X connect 10 0 11 0;
-#X connect 14 0 12 0;
-#X connect 14 1 13 0;
+#X connect 9 0 7 0;
+#X connect 9 1 8 0;
+#X connect 11 0 13 0;
+#X connect 13 0 14 0;
+#X connect 15 0 16 0;
+#X connect 16 0 10 0;
+#X connect 16 0 4 0;
+#X connect 16 0 5 0;
+#X connect 16 0 3 0;
+#X connect 17 0 18 0;
+#X connect 18 0 9 0;
+#X connect 19 0 20 0;
+#X connect 20 0 15 0;
+#X connect 20 0 2 0;
 #X coords 0 -1 1 1 85 90 1 250 60;

+ 264 - 210
uki-score/UKI_v3.pd

@@ -1,4 +1,4 @@
-#N canvas 43 453 1054 498 10;
+#N canvas 48 501 689 471 10;
 #N canvas 44 697 485 278 gem 0;
 #N canvas 1106 545 676 481 bloodcells 0;
 #X obj 32 46 gemhead;
@@ -337,7 +337,7 @@
 #X connect 6 0 5 0;
 #X connect 7 0 5 0;
 #X restore 376 380 pd gem;
-#N canvas 804 140 702 421 variables_list 0;
+#N canvas 802 140 702 421 variables_list 0;
 #X text 47 15 /game;
 #X text 100 16 /players - number of players;
 #X text 104 40 /start - start a new game;
@@ -353,125 +353,8 @@ of nth level;
 sensor value [0..1];
 #X text 110 237 /game/level_sync n - evenement de sync level n;
 #X restore 381 450 pd variables_list;
-#N canvas 1098 512 450 290 sound_sends 0;
-#X obj 70 -3 r /game/end;
-#X obj 159 38 r /game/level_sync;
-#X obj 284 62 r /player/scaled;
-#X obj 75 273 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
-1;
-#X obj 72 221 spigot;
-#X obj 233 219 r /game/start;
-#X msg 337 257 1;
-#X msg 195 266 /game/level_sync 3;
-#X obj 331 106 r /game/players;
-#X obj 367 132 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
-1;
-#X obj 331 131 >= 4;
-#X obj 235 243 t b b b;
-#X obj 70 92 t b a;
-#X msg 69 114 0;
-#X msg 173 182 connect 192.168.0.100 9000;
-#X obj 8 211 loadbang;
-#X obj 70 17 list prepend /game/end;
-#X obj 159 68 list prepend /game/level_sync;
-#X obj 284 82 list prepend /player/scaled;
-#X obj 331 155 list prepend /game/players;
-#X obj 71 180 mrpeach/packOSC;
-#X obj 71 245 mrpeach/udpsend;
-#X obj 72 64 list trim;
-#X obj 160 89 list trim;
-#X obj 257 104 list trim;
-#X connect 0 0 16 0;
-#X connect 1 0 17 0;
-#X connect 2 0 18 0;
-#X connect 4 0 21 0;
-#X connect 5 0 11 0;
-#X connect 6 0 4 1;
-#X connect 7 0 20 0;
-#X connect 8 0 10 0;
-#X connect 10 0 9 0;
-#X connect 10 0 19 0;
-#X connect 11 0 7 0;
-#X connect 11 1 10 0;
-#X connect 11 2 6 0;
-#X connect 12 0 13 0;
-#X connect 12 1 20 0;
-#X connect 13 0 4 1;
-#X connect 14 0 21 0;
-#X connect 15 0 14 0;
-#X connect 16 0 22 0;
-#X connect 17 0 23 0;
-#X connect 18 0 24 0;
-#X connect 19 0 20 0;
-#X connect 20 0 4 0;
-#X connect 21 0 3 0;
-#X connect 22 0 12 0;
-#X connect 23 0 20 0;
-#X connect 24 0 20 0;
-#X restore 512 354 pd sound_sends;
-#N canvas 1002 367 854 381 video_sends 0;
-#X obj 70 27 r /game/end;
-#X obj 159 38 r /game/level_sync;
-#X obj 334 42 r /player/scaled;
-#X obj 75 323 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
-1;
-#X obj 233 219 r /game/start;
-#X msg 337 257 1;
-#X msg 200 316 /game/level_sync 3;
-#X obj 331 106 r /game/players;
-#X obj 235 243 t b b b;
-#X obj 70 92 t b a;
-#X msg 69 114 0;
-#X obj 71 180 spigot;
-#X obj -2 201 loadbang;
-#X obj 159 107 r /game/score;
-#X msg -13 227 connect 127.0.0.1 8000;
-#X obj 331 155 list prepend /game/players;
-#X obj 71 261 mrpeach/packOSC;
-#X obj 72 295 mrpeach/udpsend;
-#X obj 331 177 list trim;
-#X obj 241 275 list prepend /game/start;
-#X obj 241 297 list trim;
-#X obj 334 62 list prepend /player/scaled;
-#X obj 334 84 list trim;
-#X obj 159 128 list prepend /game/score;
-#X obj 159 150 list trim;
-#X obj 159 62 list prepend /game/level_sync;
-#X obj 159 84 list trim;
-#X obj 70 47 list prepend /game/end;
-#X obj 70 69 list trim;
-#X connect 0 0 27 0;
-#X connect 1 0 25 0;
-#X connect 2 0 21 0;
-#X connect 4 0 8 0;
-#X connect 5 0 11 1;
-#X connect 7 0 15 0;
-#X connect 8 1 19 0;
-#X connect 8 2 5 0;
-#X connect 9 0 10 0;
-#X connect 9 1 11 0;
-#X connect 10 0 11 1;
-#X connect 11 0 16 0;
-#X connect 12 0 14 0;
-#X connect 13 0 23 0;
-#X connect 14 0 17 0;
-#X connect 15 0 18 0;
-#X connect 16 0 17 0;
-#X connect 17 0 3 0;
-#X connect 18 0 16 0;
-#X connect 19 0 20 0;
-#X connect 20 0 16 0;
-#X connect 21 0 22 0;
-#X connect 22 0 11 0;
-#X connect 23 0 24 0;
-#X connect 24 0 11 0;
-#X connect 25 0 26 0;
-#X connect 26 0 11 0;
-#X connect 27 0 28 0;
-#X connect 28 0 9 0;
-#X restore 512 376 pd video_sends;
 #X obj 29 13 zexy;
-#N canvas 294 470 905 475 UKI_sensors 0;
+#N canvas 691 314 1135 592 UKI_sensors 0;
 #X floatatom 262 134 3 0 0 0 - - -, f 3;
 #X floatatom 289 134 3 0 0 0 - - -, f 3;
 #X floatatom 316 134 3 0 0 0 - - -, f 3;
@@ -485,78 +368,103 @@ sensor value [0..1];
 #X obj 120 191 print;
 #X obj 57 211 t a a;
 #X obj 57 275 s;
-#X obj 533 44 ESP_sensors 2;
 #X msg 57 231 \$2, f 4;
 #X obj 57 191 list;
 #X msg 84 251 symbol \$1;
 #X text 84 276 send to ESP_sensors;
-#X obj 308 411 s /game/level/1;
-#X obj 308 387 pack f f;
-#X obj 352 361 t b f;
-#X obj 419 387 pack f f;
-#X obj 463 361 t b f;
-#X obj 419 411 s /game/level/2;
-#X obj 529 387 pack f f;
-#X obj 573 361 t b f;
-#X obj 530 411 s /game/level/3;
-#X obj 355 267 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
--1 -1;
-#X msg 308 335 0;
-#X msg 351 334 330;
-#X msg 419 334 331;
-#X msg 464 335 660;
-#X msg 529 331 661;
-#X msg 573 331 1024;
-#X obj 698 325 r /sensor;
-#X obj 698 412 print;
-#X obj 749 352 r /player;
-#X obj 355 239 loadbang;
 #X obj 440 44 ESP_sensors 1;
-#X obj 626 44 ESP_sensors 3;
 #X obj 719 44 ESP_sensors 4;
+#X obj 533 44 ESP_sensors 2;
+#X obj 626 44 ESP_sensors 3;
 #X obj 440 144 ESP_sensors 5;
 #X obj 533 144 ESP_sensors 6;
 #X obj 626 144 ESP_sensors 7;
 #X obj 719 144 ESP_sensors 8;
+#X obj 932 62 r level_1/2;
+#X text 957 32 levels %;
+#X obj 932 84 t f f f;
+#X obj 1040 104 / 2;
+#X obj 857 159 r level_2/3;
+#X obj 896 226 / 2;
+#X obj 896 248 +;
+#X obj 896 201 -;
+#X obj 985 127 f;
+#X obj 876 274 f;
+#X obj 857 179 t f f f;
+#X msg 857 320 1 \$1;
+#X obj 857 300 t f f;
+#X floatatom 1031 160 5 0 0 0 - - -, f 5;
+#X obj 857 342 -;
+#X obj 857 384 +;
+#X obj 857 362 / 2;
+#X obj 923 438 pack f f f f f;
+#X obj 932 148 t b b f f;
+#X obj 993 481 list prepend set;
+#X obj 993 503 list trim;
+#X msg 993 525 0.8 0.6 0.45 0.3 0.15;
+#X obj 923 460 s level_thresholds;
+#X obj 445 250 hsl 128 12 0 1024 0 0 level_min set_level_min level_min
+25 6 0 10 -262144 -1 -1 0 1;
+#X obj 445 300 hsl 128 12 0 1024 0 0 level_max set_level_max level_max
+25 6 0 10 -262144 -1 -1 12700 1;
+#X obj 445 267 hsl 128 12 0 1 0 0 level_1/2 set_level_1/2 level_1/2_%
+25 6 0 10 -262144 -1 -1 3810 1;
+#X obj 445 283 hsl 128 12 0 1 0 0 level_2/3 set_level_2/3 level_2/3_%
+25 6 0 10 -262144 -1 -1 7620 1;
+#X text 578 247 absolute minimum level (default 0);
+#X text 579 297 absolute maximum level (default 1024);
+#X text 579 272 % between min/max levels;
+#X msg 431 329 \; set_level_min 0 \; set_level_1/2 0.3 \; set_level_2/3
+0.6 \; set_level_max 1024;
+#X obj 431 311 bng 8 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
 #X connect 5 0 0 0;
 #X connect 5 1 1 0;
 #X connect 5 2 2 0;
 #X connect 5 3 3 0;
 #X connect 5 4 4 0;
 #X connect 7 2 5 0;
-#X connect 8 0 15 0;
+#X connect 8 0 14 0;
 #X connect 9 0 8 0;
 #X connect 9 1 7 0;
-#X connect 11 0 14 0;
-#X connect 11 1 16 0;
-#X connect 14 0 12 0;
-#X connect 15 0 11 0;
-#X connect 16 0 12 1;
-#X connect 19 0 18 0;
-#X connect 20 0 19 0;
-#X connect 20 1 19 1;
-#X connect 21 0 23 0;
-#X connect 22 0 21 0;
-#X connect 22 1 21 1;
-#X connect 24 0 26 0;
-#X connect 25 0 24 0;
-#X connect 25 1 24 1;
-#X connect 27 0 28 0;
-#X connect 27 0 29 0;
-#X connect 27 0 30 0;
-#X connect 27 0 31 0;
-#X connect 27 0 32 0;
-#X connect 27 0 33 0;
-#X connect 28 0 19 0;
-#X connect 29 0 20 0;
-#X connect 30 0 21 0;
-#X connect 31 0 22 0;
-#X connect 32 0 24 0;
-#X connect 33 0 25 0;
-#X connect 37 0 27 0;
-#X coords 0 -1 1 1 380 230 1 430 20;
-#X restore 29 34 pd UKI_sensors;
-#N canvas 432 172 1320 864 score_system-old 0;
+#X connect 11 0 13 0;
+#X connect 11 1 15 0;
+#X connect 13 0 12 0;
+#X connect 14 0 11 0;
+#X connect 15 0 12 1;
+#X connect 25 0 27 0;
+#X connect 27 0 43 0;
+#X connect 27 1 33 0;
+#X connect 27 2 28 0;
+#X connect 28 0 42 4;
+#X connect 29 0 35 0;
+#X connect 30 0 31 0;
+#X connect 31 0 42 2;
+#X connect 32 0 30 0;
+#X connect 33 0 38 0;
+#X connect 33 0 42 3;
+#X connect 34 0 42 1;
+#X connect 35 0 37 0;
+#X connect 35 1 34 0;
+#X connect 35 2 32 0;
+#X connect 36 0 39 0;
+#X connect 37 0 36 0;
+#X connect 37 1 40 1;
+#X connect 39 0 41 0;
+#X connect 40 0 42 0;
+#X connect 41 0 40 0;
+#X connect 42 0 44 0;
+#X connect 42 0 47 0;
+#X connect 43 0 42 0;
+#X connect 43 1 32 0;
+#X connect 43 2 32 1;
+#X connect 43 3 31 1;
+#X connect 44 0 45 0;
+#X connect 45 0 46 0;
+#X connect 56 0 55 0;
+#X coords 0 -1 1 1 380 300 1 430 20;
+#X restore 28 35 pd UKI_sensors;
+#N canvas 430 172 1320 864 score_system-old 0;
 #X obj 111 -65 r sensors;
 #X obj 111 -21 t l l b;
 #X msg 111 -1 \$2;
@@ -781,7 +689,7 @@ sensor value [0..1];
 #X obj 669 -167 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
 -1 -1;
 #X floatatom 685 192 5 0 0 0 - - -, f 5;
-#X obj 165 549 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+#X obj 165 549 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
 1;
 #X obj -38 297 r /game/level_sync;
 #X obj -37 321 t b b;
@@ -789,15 +697,15 @@ sensor value [0..1];
 #X msg -46 398 1;
 #X obj -38 374 delay;
 #X obj 107 383 spigot 1;
-#X obj 50 407 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+#X obj 50 407 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
 1;
 #X obj 444 -78 route 1 2;
 #X msg 445 -55 \$2;
 #X msg 475 -55 \$2;
 #X obj 546 -2 vradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144 -1
--1 2;
-#X obj 566 -2 vradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144 -1
 -1 1;
+#X obj 566 -2 vradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144 -1
+-1 2;
 #X obj -38 267 r /game/start;
 #X obj 154 596 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
 -1 -1;
@@ -986,7 +894,7 @@ sensor value [0..1];
 #X connect 132 0 1 0;
 #X connect 133 0 62 0;
 #X restore 375 407 pd score_system-old;
-#N canvas 259 141 814 608 UKI_game&score 1;
+#N canvas 247 141 814 608 UKI_game&score 0;
 #X obj 71 10 r /player;
 #X obj 71 38 t a a a;
 #X obj 71 130 unpack f f f;
@@ -1037,10 +945,11 @@ table;
 #X obj 524 372 r /number_of_players;
 #X obj 504 502 r /number_of_players;
 #X msg 5 17 2 1 1;
+#X obj 152 173 route 0;
 #X connect 0 0 1 0;
 #X connect 1 0 2 0;
 #X connect 2 0 8 0;
-#X connect 2 1 13 0;
+#X connect 2 1 44 0;
 #X connect 8 0 14 0;
 #X connect 8 1 11 0;
 #X connect 8 2 7 1;
@@ -1079,36 +988,181 @@ table;
 #X connect 41 0 37 1;
 #X connect 42 0 36 1;
 #X connect 43 0 1 0;
-#X restore 29 268 pd UKI_game&score;
-#X obj 636 8 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1
-;
-#X obj 635 28 metro 100;
-#X obj 635 180 array;
-#X obj 635 50 random 1024;
-#X obj 692 146 array get test;
-#X obj 692 175 list split 1;
-#X obj 658 205 list prepend;
-#X obj 657 117 t f b;
-#X obj 658 227 array set test;
-#X obj 635 72 / 512;
-#X obj 635 94 - 1;
-#X obj 819 64 array define test 500;
-#X msg 837 144 \; test bounds 0 1 500 -1;
-#X msg 845 238 \; test bounds Xmin Ymin Xmax Ymax;
-#X msg 851 196 \; test bounds \$1 0 500 1024;
-#X floatatom 935 178 5 0 0 0 - - -, f 5;
-#X obj 490 52 r UKI_ESP_2;
-#X obj 492 83 r /sensor;
-#X obj 492 105 route 2;
-#X connect 8 0 9 0;
-#X connect 9 0 11 0;
+#X connect 44 1 13 0;
+#X restore 29 418 pd UKI_game&score;
+#X obj 448 130 r /sensor;
+#X obj 429 180 r /player;
+#N canvas 1098 512 450 290 sound_sends-old 0;
+#X obj 70 -3 r /game/end;
+#X obj 159 38 r /game/level_sync;
+#X obj 284 62 r /player/scaled;
+#X obj 75 273 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 72 221 spigot;
+#X obj 233 219 r /game/start;
+#X msg 337 257 1;
+#X msg 195 266 /game/level_sync 3;
+#X obj 331 106 r /game/players;
+#X obj 367 132 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 331 131 >= 4;
+#X obj 235 243 t b b b;
+#X obj 70 92 t b a;
+#X msg 69 114 0;
+#X msg 173 182 connect 192.168.0.100 9000;
+#X obj 8 211 loadbang;
+#X obj 70 17 list prepend /game/end;
+#X obj 159 68 list prepend /game/level_sync;
+#X obj 284 82 list prepend /player/scaled;
+#X obj 331 155 list prepend /game/players;
+#X obj 71 180 mrpeach/packOSC;
+#X obj 71 245 mrpeach/udpsend;
+#X obj 72 64 list trim;
+#X obj 160 89 list trim;
+#X obj 257 104 list trim;
+#X connect 0 0 16 0;
+#X connect 1 0 17 0;
+#X connect 2 0 18 0;
+#X connect 4 0 21 0;
+#X connect 5 0 11 0;
+#X connect 6 0 4 1;
+#X connect 7 0 20 0;
+#X connect 8 0 10 0;
+#X connect 10 0 9 0;
+#X connect 10 0 19 0;
+#X connect 11 0 7 0;
+#X connect 11 1 10 0;
+#X connect 11 2 6 0;
 #X connect 12 0 13 0;
-#X connect 13 1 14 1;
-#X connect 14 0 16 0;
+#X connect 12 1 20 0;
+#X connect 13 0 4 1;
+#X connect 14 0 21 0;
 #X connect 15 0 14 0;
-#X connect 15 1 12 0;
-#X connect 17 0 18 0;
-#X connect 18 0 15 0;
-#X connect 23 0 22 0;
+#X connect 16 0 22 0;
+#X connect 17 0 23 0;
+#X connect 18 0 24 0;
+#X connect 19 0 20 0;
+#X connect 20 0 4 0;
+#X connect 21 0 3 0;
+#X connect 22 0 12 0;
+#X connect 23 0 20 0;
+#X connect 24 0 20 0;
+#X restore 512 354 pd sound_sends-old;
+#N canvas 1002 367 854 381 video_sends-old 0;
+#X obj 70 27 r /game/end;
+#X obj 159 38 r /game/level_sync;
+#X obj 334 42 r /player/scaled;
+#X obj 75 323 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 233 219 r /game/start;
+#X msg 337 257 1;
+#X msg 200 316 /game/level_sync 3;
+#X obj 331 106 r /game/players;
+#X obj 235 243 t b b b;
+#X obj 70 92 t b a;
+#X msg 69 114 0;
+#X obj 71 180 spigot;
+#X obj -2 201 loadbang;
+#X obj 159 107 r /game/score;
+#X msg -13 227 connect 127.0.0.1 8000;
+#X obj 331 155 list prepend /game/players;
+#X obj 71 261 mrpeach/packOSC;
+#X obj 72 295 mrpeach/udpsend;
+#X obj 331 177 list trim;
+#X obj 241 275 list prepend /game/start;
+#X obj 241 297 list trim;
+#X obj 334 62 list prepend /player/scaled;
+#X obj 334 84 list trim;
+#X obj 159 128 list prepend /game/score;
+#X obj 159 150 list trim;
+#X obj 159 62 list prepend /game/level_sync;
+#X obj 159 84 list trim;
+#X obj 70 47 list prepend /game/end;
+#X obj 70 69 list trim;
+#X connect 0 0 27 0;
+#X connect 1 0 25 0;
+#X connect 2 0 21 0;
+#X connect 4 0 8 0;
+#X connect 5 0 11 1;
+#X connect 7 0 15 0;
+#X connect 8 1 19 0;
+#X connect 8 2 5 0;
+#X connect 9 0 10 0;
+#X connect 9 1 11 0;
+#X connect 10 0 11 1;
+#X connect 11 0 16 0;
+#X connect 12 0 14 0;
+#X connect 13 0 23 0;
+#X connect 14 0 17 0;
+#X connect 15 0 18 0;
+#X connect 16 0 17 0;
+#X connect 17 0 3 0;
+#X connect 18 0 16 0;
+#X connect 19 0 20 0;
+#X connect 20 0 16 0;
+#X connect 21 0 22 0;
+#X connect 22 0 11 0;
+#X connect 23 0 24 0;
+#X connect 24 0 11 0;
 #X connect 25 0 26 0;
-#X connect 26 0 15 0;
+#X connect 26 0 11 0;
+#X connect 27 0 28 0;
+#X connect 28 0 9 0;
+#X restore 512 376 pd video_sends-old;
+#N canvas 720 194 608 431 SOUND_SEND 1;
+#X obj 324 134 route 1 2 3 4 5 6 7 8;
+#X msg 152 342 connect 192.168.1.38 9111;
+#X obj 87 367 mrpeach/udpsend;
+#X obj 87 283 packOSC;
+#X obj 308 224 list prepend /sensors;
+#X obj 308 246 list trim;
+#X obj 140 214 list trim;
+#X obj 140 192 list prepend /player;
+#X obj 140 80 r /player;
+#X obj 140 102 t a a;
+#X obj 140 170 spigot;
+#X msg 173 121 \$2;
+#X obj 173 142 != 0;
+#X obj 87 51 r /number_of_players;
+#X msg 87 73 /off;
+#X obj 87 305 spigot;
+#X obj 324 114 r /sensor_level_norm;
+#X obj 308 156 pack f f f f f f f f f;
+#X obj 308 80 metro 40;
+#X obj 308 29 loadbang;
+#X obj 308 57 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 308 178 route 0;
+#X obj 353 204 print;
+#X connect 0 0 17 1;
+#X connect 0 1 17 2;
+#X connect 0 2 17 3;
+#X connect 0 3 17 4;
+#X connect 0 4 17 5;
+#X connect 0 5 17 6;
+#X connect 0 6 17 7;
+#X connect 0 7 17 8;
+#X connect 1 0 2 0;
+#X connect 2 0 20 0;
+#X connect 2 0 15 1;
+#X connect 3 0 15 0;
+#X connect 4 0 5 0;
+#X connect 5 0 3 0;
+#X connect 6 0 3 0;
+#X connect 7 0 6 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 9 1 11 0;
+#X connect 10 0 7 0;
+#X connect 11 0 12 0;
+#X connect 12 0 10 1;
+#X connect 13 0 14 0;
+#X connect 14 0 3 0;
+#X connect 15 0 2 0;
+#X connect 16 0 0 0;
+#X connect 17 0 21 0;
+#X connect 18 0 17 0;
+#X connect 19 0 20 0;
+#X connect 20 0 18 0;
+#X connect 21 0 4 0;
+#X restore 39 368 pd SOUND_SEND;