aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--externals/grill/flext/source/flthr.cpp15
-rw-r--r--externals/grill/vasp/pd-ex/loudness.pd207
-rw-r--r--externals/grill/xsample/pd/xrecord~.pd291
3 files changed, 366 insertions, 147 deletions
diff --git a/externals/grill/flext/source/flthr.cpp b/externals/grill/flext/source/flthr.cpp
index d2430041..d15e33d0 100644
--- a/externals/grill/flext/source/flthr.cpp
+++ b/externals/grill/flext/source/flthr.cpp
@@ -69,14 +69,14 @@ bool flext::StartHelper()
// now we have to wait for thread helper to initialize
while(!thrhelpid || !thrhelpcond) Sleep(0.001);
- // we are reading for threading now!
+ // we are ready for threading now!
}
return ok;
}
#if 0
/*! \brief Stop helper thread
- \note not called!
+ \note Never called!
*/
bool flext::StopHelper()
{
@@ -85,6 +85,7 @@ bool flext::StopHelper()
}
#endif
+
//! Static helper thread function
void flext::ThrHelper(void *)
{
@@ -242,7 +243,7 @@ bool flext_base::StopThreads()
{
thr_entry *t;
- // signal termination
+ // signal termination for all object's threads
tlmutex.Lock();
for(t = thrhead; t; t = t->nxt) {
if(t->This() == this) t->shouldexit = true;
@@ -254,12 +255,16 @@ bool flext_base::StopThreads()
// wait for thread termination (1 second max.)
int cnt;
for(int wi = 0; wi < 100; ++wi) {
- cnt = 0;
+ // lock and count this object's threads
tlmutex.Lock();
- for(t = thrhead; t; t = t->nxt)
+ for(cnt = 0,t = thrhead; t; t = t->nxt)
if(t->This() == this) ++cnt;
tlmutex.Unlock();
+
+ // if no threads are remaining, we are done
if(!cnt) break;
+
+ // Wait
Sleep(0.01f);
}
diff --git a/externals/grill/vasp/pd-ex/loudness.pd b/externals/grill/vasp/pd-ex/loudness.pd
new file mode 100644
index 00000000..0aa18a02
--- /dev/null
+++ b/externals/grill/vasp/pd-ex/loudness.pd
@@ -0,0 +1,207 @@
+#N canvas 258 35 637 398 12;
+#N canvas 0 0 450 300 graph1 0;
+#X array filter 1024 float 1;
+#A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
+#A 1000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
+#X coords 0 10 1023 -10 200 140 1;
+#X restore 412 91 graph;
+#X obj 171 129 table buf 10;
+#X obj 37 128 wedit buf;
+#X obj 44 203 bng 25 250 50 0 empty empty start 0 -6 0 8 -24198 -1
+-1;
+#N canvas 289 57 385 501 do 0;
+#X obj 40 20 inlet;
+#X obj 38 452 outlet;
+#X obj 38 175 vasp.parts;
+#X msg 40 91 vasp buf;
+#N canvas 0 0 256 335 accum 0;
+#X obj 31 158 +;
+#X obj 65 159 f;
+#X obj 32 95 t f b;
+#X obj 64 229 /;
+#X obj 111 158 1;
+#X obj 112 183 +;
+#X obj 146 184 f;
+#X obj 32 53 inlet;
+#X obj 64 276 outlet;
+#X obj 169 53 inlet;
+#X text 171 28 reset;
+#X text 31 31 value;
+#X obj 169 79 t b;
+#X obj 167 106 0;
+#X connect 0 0 1 0;
+#X connect 1 0 0 1;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X connect 2 1 4 0;
+#X connect 3 0 8 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 5 1;
+#X connect 6 0 3 1;
+#X connect 7 0 2 0;
+#X connect 9 0 12 0;
+#X connect 12 0 13 0;
+#X connect 13 0 1 1;
+#X connect 13 0 6 1;
+#X restore 37 382 pd accum;
+#X text 129 174 loop over fragments;
+#X text 112 380 make average of fragments;
+#X msg 102 217 radio detach 1;
+#X obj 122 126 vasp.f?;
+#X obj 139 92 vasp.! @ref filter;
+#X obj 138 261 vasp.db2pow;
+#X obj 40 52 t b b;
+#N canvas 0 0 257 314 frag 0;
+#X obj 40 210 vasp.rms;
+#X obj 40 92 vasp.rfft;
+#X obj 40 176 vasp.r!fft;
+#X obj 40 136 vasp.*;
+#X obj 41 65 vasp.!;
+#X obj 44 25 inlet;
+#X obj 39 248 outlet;
+#X obj 152 22 inlet;
+#X connect 0 0 6 0;
+#X connect 1 0 3 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 4 0 1 0;
+#X connect 5 0 4 0;
+#X connect 7 0 3 1;
+#X restore 37 319 pd frag;
+#X text 107 315 filter fragment and calc rms;
+#X connect 0 0 11 0;
+#X connect 2 0 12 0;
+#X connect 3 0 2 0;
+#X connect 4 0 1 0;
+#X connect 7 0 12 0;
+#X connect 8 0 2 1;
+#X connect 9 0 8 0;
+#X connect 9 0 10 0;
+#X connect 10 0 12 1;
+#X connect 11 0 3 0;
+#X connect 11 1 4 1;
+#X connect 11 1 7 0;
+#X connect 11 1 9 0;
+#X connect 12 0 4 0;
+#X restore 44 284 pd do;
+#X obj 44 348 nbx 5 18 -1e+037 1e+037 0 0 empty empty empty 0 -6 0
+14 -261689 -1 -1 0.699669 256;
+#N canvas 277 107 454 304 2db 0;
+#X obj 38 19 inlet;
+#X obj 40 58 powtodb;
+#X obj 40 88 - 100;
+#X obj 41 124 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X restore 44 311 pd 2db;
+#X text 36 101 load/play buffer;
+#X msg 44 246 vasp buf;
+#X text 129 347 weighted loudness (decibels);
+#N canvas 312 40 678 619 filter 0;
+#X obj 46 26 inlet;
+#X obj 46 544 vasp.= @ref filter;
+#X obj 46 508 t b a;
+#X obj 45 572 vasp.u;
+#X msg 44 104 0;
+#X obj 43 60 route flat dbA dbB dbC;
+#X msg 87 102 env -77.8 8 -56.7 16 -39.4 31.5 -26.2 63 -16.1 125 -8.6
+250 -3.2 500 0 1000 1.2 2000 1 4000 -1.1 8000 -6.6 16000 -15.8 31500
+;
+#X obj 392 11 loadbang;
+#X obj 392 36 samplerate~;
+#X obj 45 476 vasp.tilt;
+#X obj 107 448 /;
+#X text 156 336 large enough temporary buffer;
+#X obj 44 338 vasp.! 100000;
+#X obj 296 66 / 2;
+#X obj 462 14 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 295 38 r smpfrq;
+#X obj 43 365 vasp.=;
+#X obj 44 309 t b a;
+#X obj 67 422 vasp.f?;
+#X obj 44 394 t a a b;
+#X obj 134 421 vasp.s? @ref filter;
+#X msg 129 158 env -43.6 8 -28.5 16 -17.1 31.5 -9.3 63 -4.2 125 -1.3
+250 -0.3 500 0 1000 -0.1 2000 -0.7 4000 -2.9 8000 -8.4 16000 -17.6
+31500;
+#X msg 170 221 env -17.7 8 -8.5 16 -3 31.5 -0.8 63 -0.2 125 0 250 0
+500 0 1000 -0.2 2000 -0.8 4000 -3 8000 -8.5 16000 -17.7 31500;
+#X text 124 476 resample;
+#X connect 0 0 5 0;
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;
+#X connect 2 1 1 1;
+#X connect 4 0 17 0;
+#X connect 5 0 4 0;
+#X connect 5 1 6 0;
+#X connect 5 2 21 0;
+#X connect 5 3 22 0;
+#X connect 6 0 17 0;
+#X connect 7 0 8 0;
+#X connect 8 0 13 0;
+#X connect 9 0 2 0;
+#X connect 10 0 9 1;
+#X connect 12 0 16 0;
+#X connect 13 0 12 1;
+#X connect 14 0 8 0;
+#X connect 15 0 13 0;
+#X connect 16 0 19 0;
+#X connect 17 0 12 0;
+#X connect 17 1 16 1;
+#X connect 18 0 10 0;
+#X connect 19 0 9 0;
+#X connect 19 1 18 0;
+#X connect 19 2 20 0;
+#X connect 20 0 10 1;
+#X connect 21 0 17 0;
+#X connect 22 0 17 0;
+#X restore 471 344 pd filter;
+#X msg 416 300 flat;
+#X msg 464 299 dbA;
+#X obj 11 10 cnv 15 600 50 empty empty loudness 10 22 0 24 -260818
+-1 0;
+#X text 202 41 http://www.parasitaere-kapazitaeten.net;
+#X text 203 25 needs vasp and wedit;
+#X text 203 10 get weighted loudness \, (C)2003 Thomas Grill;
+#X msg 499 299 dbB;
+#X msg 536 300 dbC;
+#X connect 3 0 8 0;
+#X connect 4 0 6 0;
+#X connect 6 0 5 0;
+#X connect 8 0 4 0;
+#X connect 11 0 10 0;
+#X connect 12 0 10 0;
+#X connect 17 0 10 0;
+#X connect 18 0 10 0;
diff --git a/externals/grill/xsample/pd/xrecord~.pd b/externals/grill/xsample/pd/xrecord~.pd
index 80c09f65..c9bfc7ce 100644
--- a/externals/grill/xsample/pd/xrecord~.pd
+++ b/externals/grill/xsample/pd/xrecord~.pd
@@ -1,142 +1,149 @@
-#N canvas 134 12 857 610 12;
-#X obj 14 15 bng 15 250 50 0 empty empty empty 20 8 0 8 -258699 -1
--1;
-#X msg 13 35 stop;
-#X floatatom 165 248 5 0 0;
-#X floatatom 219 248 5 0 0;
-#X floatatom 190 170 5 0 0;
-#X floatatom 239 171 5 0 0;
-#N canvas 0 0 450 300 graph7 0;
-#X array buf 10000 float 0;
-#X coords 0 1 9999 -1 200 140 1;
-#X restore 52 431 graph;
-#X obj 91 212 xrecord~ buf;
-#X msg 11 69 reset;
-#X obj 70 287 snapshot~;
-#X floatatom 72 312 7 0 0;
-#X obj 18 220 loadbang;
-#X msg 10 99 help;
-#X obj 175 96 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 1 1
-;
-#X msg 193 93 loop \$1;
-#X msg 173 36 0;
-#X msg 209 36 200;
-#X msg 172 64 draw \$1;
-#X obj 411 275 bng 15 250 50 0 empty empty empty 20 8 0 8 -258699 -1
--1;
-#X msg 410 295 stop;
-#X floatatom 565 485 5 0 0;
-#X floatatom 619 485 5 0 0;
-#X floatatom 568 427 5 0 0;
-#X floatatom 617 428 5 0 0;
-#X obj 500 458 xrecord~ buf;
-#X msg 409 334 reset;
-#X obj 500 518 snapshot~;
-#X floatatom 500 548 7 0 0;
-#X obj 411 446 loadbang;
-#X obj 537 242 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 0
-1;
-#X msg 556 239 loop \$1;
-#X msg 452 206 0;
-#X msg 451 234 draw \$1;
-#X obj 538 265 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 1
-1;
-#X msg 556 263 sigmode \$1;
-#X msg 409 360 print;
-#X obj 581 353 hsl 128 15 -0.001 1 0 1 empty empty empty 20 8 0 8 -225271
--1 -1 12700 1;
-#X obj 537 291 tgl 15 0 empty empty empty 20 8 0 8 -225271 -1 -1 0
-1;
-#X msg 557 288 mixmode \$1;
-#X floatatom 629 381 8 0 0;
-#X obj 411 473 metro 30;
-#X obj 18 247 metro 30;
-#X obj 640 21 osc~ 10;
-#X obj 86 78 r~ rec;
-#X obj 482 339 r~ rec;
-#X obj 678 95 s~ rec;
-#X obj 623 48 *~ 1;
-#X obj 622 25 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 1 1
-;
-#X obj 719 50 *~ 1;
-#X obj 718 27 tgl 15 0 empty empty empty 20 8 0 8 -225271 -1 -1 0 1
-;
-#X obj 736 23 adc~;
-#X text 198 149 min/max position;
-#X text 166 267 min/max position;
-#X text 262 96 looping on/off;
-#X text 237 65 display refresh;
-#X text 52 13 start;
-#X text 53 35 stop;
-#X text 26 270 position signal;
-#X text 619 238 looping on/off;
-#X text 644 264 signal mode on/off;
-#X text 700 381 trigger signal;
-#X text 379 121 <----- message triggered;
-#X text 173 368 signal triggered ------->;
-#X text 493 185 click to activate auto update;
-#X text 432 271 start;
-#X text 450 295 stop;
-#X text 538 307 mix-in by trigger signal on/off;
-#X msg 153 170 all;
-#X msg 488 206 100;
-#X obj 521 426 line~;
-#X msg 520 401 \$1 20;
-#X msg 9 135 getattributes;
-#X obj 208 211 print A;
-#X msg 10 163 getbuffer;
-#X connect 0 0 7 0;
-#X connect 1 0 7 0;
-#X connect 4 0 7 2;
-#X connect 5 0 7 3;
-#X connect 7 0 9 0;
-#X connect 7 1 2 0;
-#X connect 7 2 3 0;
-#X connect 7 4 72 0;
-#X connect 8 0 7 0;
-#X connect 9 0 10 0;
-#X connect 11 0 41 0;
-#X connect 12 0 7 0;
-#X connect 13 0 14 0;
-#X connect 14 0 7 0;
-#X connect 15 0 17 0;
-#X connect 16 0 17 0;
-#X connect 17 0 7 0;
-#X connect 18 0 24 0;
-#X connect 19 0 24 0;
-#X connect 22 0 24 2;
-#X connect 23 0 24 3;
-#X connect 24 0 26 0;
-#X connect 24 1 20 0;
-#X connect 24 2 21 0;
-#X connect 25 0 24 0;
-#X connect 26 0 27 0;
-#X connect 28 0 40 0;
-#X connect 29 0 30 0;
-#X connect 30 0 24 0;
-#X connect 31 0 32 0;
-#X connect 32 0 24 0;
-#X connect 33 0 34 0;
-#X connect 34 0 24 0;
-#X connect 35 0 24 0;
-#X connect 36 0 39 0;
-#X connect 36 0 70 0;
-#X connect 37 0 38 0;
-#X connect 38 0 24 0;
-#X connect 40 0 26 0;
-#X connect 41 0 9 0;
-#X connect 42 0 46 0;
-#X connect 43 0 7 0;
-#X connect 44 0 24 0;
-#X connect 46 0 45 0;
-#X connect 47 0 46 1;
-#X connect 48 0 45 0;
-#X connect 49 0 48 1;
-#X connect 50 0 48 0;
-#X connect 50 1 48 0;
-#X connect 67 0 7 0;
-#X connect 68 0 32 0;
-#X connect 69 0 24 1;
-#X connect 70 0 69 0;
-#X connect 71 0 7 0;
-#X connect 73 0 7 0;
+#N canvas 134 12 859 612 12;
+#X obj 14 15 bng 15 250 50 0 empty empty empty 20 8 0 8 -258699 -1
+-1;
+#X msg 13 35 stop;
+#X floatatom 165 248 5 0 0 0 - - -;
+#X floatatom 219 248 5 0 0 0 - - -;
+#X floatatom 190 170 5 0 0 0 - - -;
+#X floatatom 239 171 5 0 0 0 - - -;
+#N canvas 0 0 450 300 graph7 0;
+#X array buf 10000 float 0;
+#X coords 0 1 9999 -1 200 140 1;
+#X restore 52 431 graph;
+#X obj 91 212 xrecord~ buf;
+#X msg 11 69 reset;
+#X obj 70 287 snapshot~;
+#X floatatom 72 312 7 0 0 0 - - -;
+#X obj 18 220 loadbang;
+#X msg 10 99 help;
+#X obj 175 96 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 1 1
+;
+#X msg 193 93 loop \$1;
+#X msg 173 36 0;
+#X msg 209 36 200;
+#X msg 172 64 draw \$1;
+#X obj 411 275 bng 15 250 50 0 empty empty empty 20 8 0 8 -258699 -1
+-1;
+#X msg 410 295 stop;
+#X floatatom 565 485 5 0 0 0 - - -;
+#X floatatom 619 485 5 0 0 0 - - -;
+#X floatatom 568 427 5 0 0 0 - - -;
+#X floatatom 617 428 5 0 0 0 - - -;
+#X obj 500 458 xrecord~ buf;
+#X msg 409 334 reset;
+#X obj 500 518 snapshot~;
+#X floatatom 500 548 7 0 0 0 - - -;
+#X obj 411 446 loadbang;
+#X obj 537 242 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 1
+1;
+#X msg 556 239 loop \$1;
+#X msg 452 206 0;
+#X msg 451 234 draw \$1;
+#X obj 538 265 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 1
+1;
+#X msg 556 263 sigmode \$1;
+#X msg 409 360 print;
+#X obj 581 353 hsl 128 15 -0.001 1 0 1 empty empty empty 20 8 0 8 -225271
+-1 -1 3200 1;
+#X obj 537 291 tgl 15 0 empty empty empty 20 8 0 8 -225271 -1 -1 1
+1;
+#X msg 557 288 mixmode \$1;
+#X floatatom 629 381 8 0 0 0 - - -;
+#X obj 411 473 metro 30;
+#X obj 18 247 metro 30;
+#X obj 640 21 osc~ 10;
+#X obj 86 78 r~ rec;
+#X obj 482 339 r~ rec;
+#X obj 626 84 s~ rec;
+#X obj 623 48 *~ 1;
+#X obj 622 25 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 1 1
+;
+#X obj 719 50 *~ 1;
+#X obj 718 27 tgl 15 0 empty empty empty 20 8 0 8 -225271 -1 -1 0 1
+;
+#X obj 736 23 adc~;
+#X text 198 149 min/max position;
+#X text 166 267 min/max position;
+#X text 262 96 looping on/off;
+#X text 237 65 display refresh;
+#X text 52 13 start;
+#X text 53 35 stop;
+#X text 26 270 position signal;
+#X text 619 238 looping on/off;
+#X text 644 264 signal mode on/off;
+#X text 700 381 trigger signal;
+#X text 379 121 <----- message triggered;
+#X text 173 368 signal triggered ------->;
+#X text 493 185 click to activate auto update;
+#X text 432 271 start;
+#X text 450 295 stop;
+#X text 538 307 mix-in by trigger signal on/off;
+#X msg 153 170 all;
+#X msg 488 206 100;
+#X obj 521 426 line~;
+#X msg 520 401 \$1 20;
+#X msg 9 135 getattributes;
+#X obj 208 211 print A;
+#X msg 10 163 getbuffer;
+#X obj 542 51 *~ 1;
+#X obj 541 28 tgl 15 1 empty empty empty 20 8 0 8 -225271 -1 -1 0 1
+;
+#X obj 561 24 noise~;
+#X connect 0 0 7 0;
+#X connect 1 0 7 0;
+#X connect 4 0 7 2;
+#X connect 5 0 7 3;
+#X connect 7 0 9 0;
+#X connect 7 1 2 0;
+#X connect 7 2 3 0;
+#X connect 7 4 72 0;
+#X connect 8 0 7 0;
+#X connect 9 0 10 0;
+#X connect 11 0 41 0;
+#X connect 12 0 7 0;
+#X connect 13 0 14 0;
+#X connect 14 0 7 0;
+#X connect 15 0 17 0;
+#X connect 16 0 17 0;
+#X connect 17 0 7 0;
+#X connect 18 0 24 0;
+#X connect 19 0 24 0;
+#X connect 22 0 24 2;
+#X connect 23 0 24 3;
+#X connect 24 0 26 0;
+#X connect 24 1 20 0;
+#X connect 24 2 21 0;
+#X connect 25 0 24 0;
+#X connect 26 0 27 0;
+#X connect 28 0 40 0;
+#X connect 29 0 30 0;
+#X connect 30 0 24 0;
+#X connect 31 0 32 0;
+#X connect 32 0 24 0;
+#X connect 33 0 34 0;
+#X connect 34 0 24 0;
+#X connect 35 0 24 0;
+#X connect 36 0 39 0;
+#X connect 36 0 70 0;
+#X connect 37 0 38 0;
+#X connect 38 0 24 0;
+#X connect 40 0 26 0;
+#X connect 41 0 9 0;
+#X connect 42 0 46 0;
+#X connect 43 0 7 0;
+#X connect 44 0 24 0;
+#X connect 46 0 45 0;
+#X connect 47 0 46 1;
+#X connect 48 0 45 0;
+#X connect 49 0 48 1;
+#X connect 50 0 48 0;
+#X connect 50 1 48 0;
+#X connect 67 0 7 0;
+#X connect 68 0 32 0;
+#X connect 69 0 24 1;
+#X connect 70 0 69 0;
+#X connect 71 0 7 0;
+#X connect 73 0 7 0;
+#X connect 74 0 45 0;
+#X connect 75 0 74 1;
+#X connect 76 0 74 0;