diff --git a/l2ork_addons/K12/math_netsend.pd b/l2ork_addons/K12/math_netsend.pd
index 1844d06f6ffe7502e1ab91bb9f2a0afd1bdaef48..87ccffde1c35f6b0966c7dd367c29c581d5d8223 100644
--- a/l2ork_addons/K12/math_netsend.pd
+++ b/l2ork_addons/K12/math_netsend.pd
@@ -1,6 +1,7 @@
 #N canvas 571 62 452 350 10;
 #X obj 162 62 loadbang;
-#X obj 162 159 ggee/image @pd_extra/K12/objects/math_netsend.png;
+#X obj 162 159 ggee/image @pd_extra/K12/objects/signal_netsend.png
+;
 #X obj 34 128 inlet;
 #X obj 59 54 preset_node k12;
 #X obj 34 325 outlet;
diff --git a/l2ork_addons/K12/math_routebytag.pd b/l2ork_addons/K12/math_routebytag.pd
new file mode 100644
index 0000000000000000000000000000000000000000..093a57db50a28774b317049dee29cb47a0496563
--- /dev/null
+++ b/l2ork_addons/K12/math_routebytag.pd
@@ -0,0 +1,22 @@
+#N canvas 571 62 452 350 10;
+#X obj 162 62 loadbang;
+#X obj 162 159 ggee/image @pd_extra/K12/objects/math_routebytag.png
+;
+#X obj 121 228 inlet;
+#X obj 59 54 preset_node k12;
+#X obj 121 278 outlet;
+#X symbolatom 121 167 13 0 0 0 - - -;
+#X text 181 179 tag;
+#X obj 23 104 loadbang;
+#X msg 23 126 set ...;
+#X msg 162 85 open @pd_extra/K12/objects/math_routebytag.png;
+#X obj 121 253 route;
+#X connect 0 0 9 0;
+#X connect 2 0 10 0;
+#X connect 3 0 5 0;
+#X connect 5 0 10 1;
+#X connect 7 0 8 0;
+#X connect 8 0 5 0;
+#X connect 9 0 1 0;
+#X connect 10 0 4 0;
+#X coords 0 -1 1 1 89 89 2 117 127;
diff --git a/l2ork_addons/K12/math_tag.pd b/l2ork_addons/K12/math_tag.pd
index 9b834f4d1138cdff28816383300ba8eb5d1e2b31..7a4803ad12ac814fdf4fb6dedf3f75f17a7857fc 100644
--- a/l2ork_addons/K12/math_tag.pd
+++ b/l2ork_addons/K12/math_tag.pd
@@ -1,32 +1,21 @@
 #N canvas 571 62 452 350 10;
 #X obj 162 62 loadbang;
-#X obj 162 159 ggee/image @pd_extra/K12/objects/math_netreceive.png
-;
-#X obj 239 121 inlet;
+#X obj 162 159 ggee/image @pd_extra/K12/objects/math_tag.png;
+#X obj 121 228 inlet;
 #X obj 59 54 preset_node k12;
-#X obj 121 276 outlet;
+#X obj 121 278 outlet;
 #X msg 162 85 open @pd_extra/K12/objects/math_tag.png;
 #X symbolatom 121 167 13 0 0 0 - - -;
 #X text 181 179 tag;
 #X obj 23 104 loadbang;
 #X msg 23 126 set ...;
-#X symbolatom 249 200 10 0 0 0 - - -;
-#X obj 172 307 print a;
-#X obj 221 307 print b;
-#X floatatom 315 200 5 0 0 0 - - -;
-#X floatatom 211 167 5 0 0 0 - - -;
-#X obj 121 253 route a;
+#X obj 121 253 list prepend;
 #X connect 0 0 5 0;
-#X connect 2 0 15 0;
+#X connect 2 0 10 0;
 #X connect 3 0 6 0;
 #X connect 5 0 1 0;
-#X connect 6 0 15 1;
+#X connect 6 0 10 1;
 #X connect 8 0 9 0;
 #X connect 9 0 6 0;
-#X connect 10 0 15 0;
-#X connect 13 0 15 0;
-#X connect 14 0 15 1;
-#X connect 15 0 4 0;
-#X connect 15 0 11 0;
-#X connect 15 1 12 0;
+#X connect 10 0 4 0;
 #X coords 0 -1 1 1 89 89 2 117 127;
diff --git a/l2ork_addons/K12/objects/math_routebytag.png b/l2ork_addons/K12/objects/math_routebytag.png
index 85cf28f8854bf20f418a978751fc4d6bfb762ab5..9cd6465eb0b69ae1cd310ec0df92b498264966d9 100755
Binary files a/l2ork_addons/K12/objects/math_routebytag.png and b/l2ork_addons/K12/objects/math_routebytag.png differ
diff --git a/l2ork_addons/K12/signal_netreceive.pd b/l2ork_addons/K12/signal_netreceive.pd
new file mode 100644
index 0000000000000000000000000000000000000000..4d6a43bdc793181f0fe5f1647d2e2868f198e89d
--- /dev/null
+++ b/l2ork_addons/K12/signal_netreceive.pd
@@ -0,0 +1,19 @@
+#N canvas 571 62 483 350 10;
+#X obj 162 62 loadbang;
+#X obj 162 159 ggee/image @pd_extra/K12/objects/signal_netreceive.png
+;
+#X obj 59 54 preset_node k12;
+#X obj 121 164 nbx 5 19 -1e+37 1e+37 0 0 \$0-s-null \$0-r-null empty
+0 -8 0 16 -262144 -1 -1 0 256 1;
+#X msg 121 230 port \$1;
+#X text 178 179 port;
+#X obj 121 253 mrpeach/udpreceive~ 8008 1 1024;
+#X obj 121 276 outlet~;
+#X msg 162 85 open @pd_extra/K12/objects/signal_netreceive.png;
+#X connect 0 0 8 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 6 0;
+#X connect 6 0 7 0;
+#X connect 8 0 1 0;
+#X coords 0 -1 1 1 89 89 2 117 127;
diff --git a/l2ork_addons/K12/signal_netsend.pd b/l2ork_addons/K12/signal_netsend.pd
new file mode 100644
index 0000000000000000000000000000000000000000..67ad098295d2566ec19bcb8a6c04602c52440b51
--- /dev/null
+++ b/l2ork_addons/K12/signal_netsend.pd
@@ -0,0 +1,34 @@
+#N canvas 571 62 452 350 10;
+#X obj 162 62 loadbang;
+#X obj 162 159 ggee/image @pd_extra/K12/objects/signal_netsend.png
+;
+#X obj 59 54 preset_node k12;
+#X obj 121 180 nbx 5 19 -1e+37 1e+37 0 0 \$0-s-null \$0-r-null empty
+0 -8 0 16 -262144 -1 -1 3000 256 1;
+#X text 178 194 port;
+#X msg 52 268 disconnect \, connect \$1 \$2;
+#X symbolatom 121 161 13 0 0 0 - - -;
+#X text 118 145 address;
+#X obj 52 246 pack s f;
+#X obj 95 225 t b f;
+#X obj 215 110 loadbang;
+#X msg 215 132 set localhost;
+#X msg 215 153 set 3000;
+#X obj 34 303 mrpeach/udpsend~ 1 1024;
+#X obj 34 128 inlet~;
+#X msg 162 85 open @pd_extra/K12/objects/signal_netsend.png;
+#X connect 0 0 15 0;
+#X connect 2 0 3 0;
+#X connect 3 0 9 0;
+#X connect 5 0 13 0;
+#X connect 6 0 8 0;
+#X connect 8 0 5 0;
+#X connect 9 0 8 0;
+#X connect 9 1 8 1;
+#X connect 10 0 11 0;
+#X connect 10 0 12 0;
+#X connect 11 0 6 0;
+#X connect 12 0 3 0;
+#X connect 14 0 13 0;
+#X connect 15 0 1 0;
+#X coords 0 -1 1 1 89 89 2 117 127;
diff --git a/l2ork_addons/K12/signal_player.pd b/l2ork_addons/K12/signal_player.pd
new file mode 100644
index 0000000000000000000000000000000000000000..93a35048d19c3881d332852d9e1e87ed37d27b8f
--- /dev/null
+++ b/l2ork_addons/K12/signal_player.pd
@@ -0,0 +1,176 @@
+#N canvas 432 106 428 449 10;
+#X obj 141 205 ggee/image @pd_extra/K12/objects/signal_player.png;
+#X obj 142 91 loadbang;
+#X obj -11 91 inlet;
+#X obj 99 220 hsl 78 11 0 100 0 1 \$0-s-null \$0-r-null start 26 5
+0 10 -262144 -1 -1 0 1;
+#X obj 99 233 hsl 78 11 0 100 0 1 \$0-s-null \$0-r-null end 31 6 0
+10 -262144 -1 -1 7700 1;
+#X obj 167 203 tgl 15 0 \$0-tgl-s \$0-tgl-play-r empty 17 7 0 10 -4034
+-1 -1 0 1;
+#X text 157 186 play;
+#X obj -11 113 t 1 f;
+#X obj 234 174 preset_node k12;
+#X obj 234 150 preset_node k12;
+#X msg 142 114 open @pd_extra/K12/objects/signal_player.png;
+#X obj 99 91 inlet;
+#X obj 207 427 outlet;
+#X obj 99 203 bng 15 250 50 0 empty empty empty 17 7 0 10 -257985 -1
+-1;
+#X text 96 186 open;
+#X obj 35 425 tabread4~ \$0-buffer;
+#X obj 35 508 outlet~;
+#N canvas 755 199 523 405 fileio_logic 0;
+#X obj 142 -23 inlet;
+#X obj 142 159 patch_name 99;
+#X obj 142 203 tosymbol;
+#X obj 142 359 soundfiler;
+#X obj 199 284 \$0;
+#X obj 199 261 loadbang;
+#X obj 142 312 pack s f;
+#X msg 142 335 read \$1 \$2-buffer;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-buffer 480000 float 2;
+#X coords 0 1 480000 -1 101 53 1 0 0;
+#X restore 355 171 graph;
+#X text 45 -25 load a new file;
+#X obj 247 58 \$0;
+#X msg 247 80 \; \$1-buffer const 0;
+#X obj 142 181 openpanel;
+#X symbolatom 142 226 10 0 0 0 - - -;
+#X obj 39 177 preset_node k12;
+#X obj 142 -1 t b b;
+#X obj 231 202 wavinfo;
+#X obj 231 224 outlet;
+#X obj 275 224 outlet;
+#X connect 0 0 15 0;
+#X connect 1 0 12 0;
+#X connect 2 0 13 0;
+#X connect 4 0 6 1;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
+#X connect 7 0 3 0;
+#X connect 10 0 11 0;
+#X connect 12 0 2 0;
+#X connect 12 0 16 0;
+#X connect 13 0 14 0;
+#X connect 13 0 6 0;
+#X connect 14 0 13 0;
+#X connect 15 0 1 0;
+#X connect 15 1 10 0;
+#X connect 16 0 17 0;
+#X connect 16 3 18 0;
+#X restore 47 270 pd fileio_logic;
+#X obj 35 400 line~;
+#N canvas 571 227 380 308 play_logic 0;
+#X obj 155 54 inlet;
+#X obj 227 230 t b f;
+#X obj 200 54 inlet;
+#X obj 11 49 inlet;
+#X obj 266 230 t b f;
+#X obj 303 230 t b f;
+#X obj 11 71 - 60;
+#X obj 11 115 expr pow(2 \, $f1);
+#X obj 11 93 / 12;
+#X obj 155 160 t f f;
+#X obj 11 138 t b f;
+#X obj 200 160 t f f;
+#X obj 86 308 pack 0 0 0 0;
+#X obj 86 329 outlet;
+#X obj 182 284 expr (abs($f2-$f1))/$f3*1000/$f4;
+#X obj 244 54 inlet;
+#X obj 155 76 / 100;
+#X obj 200 76 / 100;
+#X obj 155 128 *;
+#X obj 200 128 *;
+#X obj 289 54 inlet;
+#X obj 244 76 t b f;
+#X connect 0 0 16 0;
+#X connect 1 0 14 0;
+#X connect 1 1 14 1;
+#X connect 2 0 17 0;
+#X connect 3 0 6 0;
+#X connect 4 0 14 0;
+#X connect 4 1 14 2;
+#X connect 5 0 14 0;
+#X connect 5 1 14 3;
+#X connect 6 0 8 0;
+#X connect 7 0 10 0;
+#X connect 8 0 7 0;
+#X connect 9 0 12 1;
+#X connect 9 1 14 0;
+#X connect 10 0 12 0;
+#X connect 10 1 5 0;
+#X connect 11 0 12 2;
+#X connect 11 1 1 0;
+#X connect 12 0 13 0;
+#X connect 14 0 12 3;
+#X connect 15 0 21 0;
+#X connect 16 0 18 0;
+#X connect 17 0 19 0;
+#X connect 18 0 9 0;
+#X connect 19 0 11 0;
+#X connect 20 0 4 0;
+#X connect 21 0 19 0;
+#X connect 21 0 18 0;
+#X connect 21 1 19 1;
+#X connect 21 1 18 1;
+#X restore 207 338 pd play_logic;
+#X msg 35 377 \$2 \, \$3 \$4;
+#X obj 207 262 sel 1;
+#X obj 207 382 delay;
+#X msg 207 360 \$4;
+#X obj 207 316 f 60;
+#N canvas 289 190 450 300 envelope_logic 0;
+#X obj 145 50 inlet;
+#X msg 145 72 \$4;
+#X obj 145 94 t f f;
+#X obj 172 116 - 10;
+#X obj 145 116 - 5;
+#X obj 145 138 pack 0 0;
+#X msg 145 160 0 \, 1 5 \, 1 \$2 5 \, 0 5 \$1;
+#X obj 145 182 vline~;
+#X obj 145 204 outlet~;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 2 1 3 0;
+#X connect 3 0 5 1;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X restore 85 446 pd envelope_logic;
+#X obj 35 477 *~;
+#X obj 207 404 t 1 0;
+#X connect 1 0 10 0;
+#X connect 2 0 7 0;
+#X connect 3 0 9 0;
+#X connect 3 0 19 1;
+#X connect 4 0 8 0;
+#X connect 4 0 19 2;
+#X connect 5 0 21 0;
+#X connect 7 0 5 0;
+#X connect 7 1 24 1;
+#X connect 8 0 4 0;
+#X connect 9 0 3 0;
+#X connect 10 0 0 0;
+#X connect 11 0 5 0;
+#X connect 13 0 17 0;
+#X connect 15 0 26 0;
+#X connect 17 0 19 3;
+#X connect 17 1 19 4;
+#X connect 18 0 15 0;
+#X connect 19 0 20 0;
+#X connect 19 0 23 0;
+#X connect 19 0 25 0;
+#X connect 20 0 18 0;
+#X connect 21 0 24 0;
+#X connect 22 0 27 0;
+#X connect 23 0 22 0;
+#X connect 24 0 19 0;
+#X connect 25 0 26 1;
+#X connect 26 0 16 0;
+#X connect 27 0 12 0;
+#X connect 27 1 5 0;
+#X coords 0 -1 1 1 89 89 2 96 173;
diff --git a/l2ork_addons/K12/signal_sampler.pd b/l2ork_addons/K12/signal_sampler.pd
index d1c6424a958247e1ca5450110946faf4b05b05b4..42e3bed8f2f36c4c6ffe43b56d5d61af2b208b8d 100755
--- a/l2ork_addons/K12/signal_sampler.pd
+++ b/l2ork_addons/K12/signal_sampler.pd
@@ -1,21 +1,21 @@
-#N canvas 581 112 443 488 10;
+#N canvas 581 112 466 542 10;
 #X obj 141 205 ggee/image @pd_extra/K12/objects/signal_sampler.png
 ;
 #X obj 142 91 loadbang;
 #X obj 59 128 inlet;
 #X obj -16 128 inlet~;
 #X msg 142 114 open @pd_extra/K12/objects/signal_sampler.png;
-#X obj -15 415 tabwrite~ \$0-buffer;
+#X obj -15 452 tabwrite~ \$0-buffer;
 #X msg 186 329 stop;
-#X obj 140 454 tabread4~ \$0-buffer;
+#X obj 140 494 tabread4~ \$0-buffer;
 #X obj 99 203 tgl 15 0 \$0-tgl-s \$0-tgl-r empty 17 7 0 10 -258113
 -1 -1 0 1;
 #X obj 99 220 hsl 78 11 0 100 0 1 \$0-s-null \$0-r-null start 26 5
 0 10 -262144 -1 -1 0 1;
 #X obj 99 233 hsl 78 11 0 100 0 1 \$0-s-null \$0-r-null end 31 6 0
-10 -262144 -1 -1 2000 1;
+10 -262144 -1 -1 7700 1;
 #X text 95 187 rec;
-#X obj 140 537 outlet~;
+#X obj 140 577 outlet~;
 #X obj 140 282 sel 1 0;
 #X obj 47 307 delay 10000;
 #X obj 139 203 nbx 1 14 0 9 0 0 empty empty empty 0 -8 0 12 -262144
@@ -47,11 +47,14 @@
 #X obj 142 -1 t b f 1 b;
 #X obj 247 58 \$0;
 #X msg 247 80 \; \$1-buffer const 0;
+#X obj 35 300 wavinfo;
+#X obj 77 322 outlet;
 #X connect 0 0 19 0;
 #X connect 1 0 4 0;
 #X connect 1 1 4 1;
 #X connect 2 0 3 1;
 #X connect 3 0 10 0;
+#X connect 3 0 22 0;
 #X connect 3 1 9 0;
 #X connect 4 0 2 0;
 #X connect 5 0 1 0;
@@ -73,16 +76,15 @@
 #X connect 19 2 3 0;
 #X connect 19 3 20 0;
 #X connect 20 0 21 0;
-#X restore 40 465 pd fileio_logic;
-#X obj 140 429 line~;
-#N canvas 0 0 360 260 play_logic 0;
+#X connect 22 3 23 0;
+#X restore -40 356 pd fileio_logic;
+#X obj 140 469 line~;
+#N canvas 463 197 360 260 play_logic 0;
 #X obj 155 94 inlet;
 #X obj 200 136 * 4800;
 #X obj 155 136 * 4800;
 #X obj 223 190 t b f;
 #X obj 200 94 inlet;
-#X obj 262 136 samplerate~;
-#X obj 262 112 loadbang;
 #X obj 11 49 inlet;
 #X obj 262 190 t b f;
 #X obj 299 190 t b f;
@@ -95,43 +97,43 @@
 #X obj 86 268 pack 0 0 0 0;
 #X obj 86 289 outlet;
 #X obj 170 244 expr (abs($f2-$f1))/$f3*1000/$f4;
+#X obj 245 94 inlet;
 #X connect 0 0 2 0;
-#X connect 1 0 15 0;
-#X connect 2 0 13 0;
-#X connect 3 0 18 0;
-#X connect 3 1 18 1;
+#X connect 1 0 13 0;
+#X connect 2 0 11 0;
+#X connect 3 0 16 0;
+#X connect 3 1 16 1;
 #X connect 4 0 1 0;
 #X connect 5 0 8 0;
-#X connect 6 0 5 0;
-#X connect 7 0 10 0;
-#X connect 8 0 18 0;
-#X connect 8 1 18 2;
-#X connect 9 0 18 0;
-#X connect 9 1 18 3;
-#X connect 10 0 12 0;
-#X connect 11 0 14 0;
-#X connect 12 0 11 0;
-#X connect 13 0 16 1;
-#X connect 13 1 18 0;
-#X connect 14 0 16 0;
-#X connect 14 1 9 0;
-#X connect 15 0 16 2;
-#X connect 15 1 3 0;
-#X connect 16 0 17 0;
-#X connect 18 0 16 3;
-#X restore 275 311 pd play_logic;
-#X msg 140 406 \$2 \, \$3 \$4;
+#X connect 6 0 16 0;
+#X connect 6 1 16 2;
+#X connect 7 0 16 0;
+#X connect 7 1 16 3;
+#X connect 8 0 10 0;
+#X connect 9 0 12 0;
+#X connect 10 0 9 0;
+#X connect 11 0 14 1;
+#X connect 11 1 16 0;
+#X connect 12 0 14 0;
+#X connect 12 1 7 0;
+#X connect 13 0 14 2;
+#X connect 13 1 3 0;
+#X connect 14 0 15 0;
+#X connect 16 0 14 3;
+#X connect 17 0 6 0;
+#X restore 275 401 pd play_logic;
+#X msg 140 446 \$2 \, \$3 \$4;
 #X obj 111 69 loadbang;
 #X msg 111 91 0;
 #X obj 167 203 tgl 15 0 \$0-tgl-s \$0-tgl-play-r empty 17 7 0 10 -4034
 -1 -1 0 1;
 #X text 157 186 play;
-#X obj 275 255 sel 1;
+#X obj 275 295 sel 1;
 #X obj 59 150 t 1 f;
-#X obj 275 355 delay;
-#X msg 275 377 0;
-#X msg 275 333 \$4;
-#X obj 275 289 f 60;
+#X obj 275 465 delay;
+#X msg 275 487 0;
+#X msg 275 443 \$4;
+#X obj 275 329 f 60;
 #N canvas 289 190 450 300 envelope_logic 0;
 #X obj 145 50 inlet;
 #X msg 145 72 \$4;
@@ -151,8 +153,8 @@
 #X connect 5 0 6 0;
 #X connect 6 0 7 0;
 #X connect 7 0 8 0;
-#X restore 190 475 pd envelope_logic;
-#X obj 140 506 *~;
+#X restore 190 515 pd envelope_logic;
+#X obj 140 546 *~;
 #X obj 47 329 t b 0;
 #X obj 148 342 \$0;
 #X msg 148 364 \; \$1-buffer const 0;
@@ -178,6 +180,7 @@
 #X connect 14 0 33 0;
 #X connect 15 0 17 0;
 #X connect 15 0 37 0;
+#X connect 17 0 19 3;
 #X connect 18 0 7 0;
 #X connect 19 0 20 0;
 #X connect 19 0 29 0;
diff --git a/l2ork_addons/K12/voice2.wav b/l2ork_addons/K12/voice2.wav
new file mode 100644
index 0000000000000000000000000000000000000000..d5d944b1620dd2cc7174b722e248aee8c3cddd09
Binary files /dev/null and b/l2ork_addons/K12/voice2.wav differ