aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xsignal/streamin~.c6
-rwxr-xr-xsignal/streamin~.pd88
-rwxr-xr-xsignal/streamout~.c68
-rwxr-xr-xsignal/streamout~.pd235
4 files changed, 287 insertions, 110 deletions
diff --git a/signal/streamin~.c b/signal/streamin~.c
index 824543e..437de67 100755
--- a/signal/streamin~.c
+++ b/signal/streamin~.c
@@ -1,5 +1,5 @@
-/* Written by Guenter Geiger <geiger@debian.org> (C) 1999 */
+/* Written by Guenter Geiger <geiger@xdv.org> (C) 1999 */
#include <m_pd.h>
#include "stream.h"
@@ -30,7 +30,7 @@
#ifdef unix
#define NONBLOCKED
#endif
-#define INBUFSIZE 8192
+
#define MAXFRAMES 128
#define MAXFRAMESIZE 256
#define AVERAGENUM 10
@@ -349,7 +349,7 @@ static void streamin_print(t_streamin* x)
for (i=0;i<AVERAGENUM;i++)
avg += x->average[i];
post("last size = %d, avg size = %d, %d underflows",
- QUEUESIZE,avg,x->underflow);
+ QUEUESIZE,avg/AVERAGENUM,x->underflow);
}
diff --git a/signal/streamin~.pd b/signal/streamin~.pd
index e248f27..f583714 100755
--- a/signal/streamin~.pd
+++ b/signal/streamin~.pd
@@ -1,41 +1,47 @@
-#N canvas 248 65 623 459 12;
-#X obj 49 95 print~;
-#X msg 49 67 bang;
-#X obj 27 24 streamin~ 3000;
-#X obj 132 210 streamout~;
-#X msg 132 108 disconnect;
-#X obj 372 72 osc~;
-#X obj 372 47 sig~ 220;
-#X floatatom 372 20 0 0 0;
-#X msg 285 162 format float;
-#X msg 284 184 format 16bit;
-#X text 14 432 (C) 1999 Guenter Geiger;
-#X msg 286 204 format 8bit;
-#X floatatom 132 235 0 0 0;
-#X text 21 295 The streamin~ object just takes the portnumber it is
-listening to as it's argument.;
-#X text 23 334 For help on the streamout object \, see the streamout.pd
-patch.;
-#X obj 27 159 dac~;
-#X obj 355 115 *~ 0.1;
-#X floatatom 418 88 0 0 0;
-#X floatatom 149 159 0 0 0;
-#X msg 285 252 connect gige 3001;
-#X msg 132 86 connect localhost 3000;
-#X connect 1 0 0 0;
-#X connect 2 0 0 0;
-#X connect 2 0 15 0;
-#X connect 2 0 15 1;
-#X connect 3 0 12 0;
-#X connect 4 0 3 0;
-#X connect 5 0 16 0;
-#X connect 6 0 5 0;
-#X connect 7 0 6 0;
-#X connect 8 0 3 0;
-#X connect 9 0 3 0;
-#X connect 11 0 3 0;
-#X connect 16 0 3 0;
-#X connect 17 0 16 1;
-#X connect 18 0 3 0;
-#X connect 19 0 3 0;
-#X connect 20 0 3 0;
+#N canvas 248 65 623 459 12;
+#X obj 45 133 print~;
+#X msg 45 105 bang;
+#X obj 23 62 streamin~ 3000;
+#X obj 132 210 streamout~;
+#X msg 132 108 disconnect;
+#X obj 371 87 osc~;
+#X obj 371 65 sig~ 220;
+#X floatatom 371 42 0 0 0 0 - - -;
+#X msg 285 162 format float;
+#X msg 284 184 format 16bit;
+#X text 14 432 (C) 1999 Guenter Geiger;
+#X msg 286 204 format 8bit;
+#X floatatom 132 235 0 0 0 0 - - -;
+#X text 21 295 The streamin~ object just takes the portnumber it is
+listening to as it's argument.;
+#X text 23 334 For help on the streamout object \, see the streamout.pd
+patch.;
+#X obj 23 197 dac~;
+#X obj 355 115 *~ 0.1;
+#X floatatom 418 88 0 0 0 0 - - -;
+#X floatatom 149 159 0 0 0 0 - - -;
+#X msg 285 252 connect gige 3001;
+#X msg 132 86 connect localhost 3000;
+#X msg 23 8 reset 4;
+#X msg 40 32 print;
+#X text 96 8 reset \, using n frames (default = 128);
+#X text 96 32 print queue info;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 2 0 15 0;
+#X connect 2 0 15 1;
+#X connect 3 0 12 0;
+#X connect 4 0 3 0;
+#X connect 5 0 16 0;
+#X connect 6 0 5 0;
+#X connect 7 0 6 0;
+#X connect 8 0 3 0;
+#X connect 9 0 3 0;
+#X connect 11 0 3 0;
+#X connect 16 0 3 0;
+#X connect 17 0 16 1;
+#X connect 18 0 3 0;
+#X connect 19 0 3 0;
+#X connect 20 0 3 0;
+#X connect 21 0 2 0;
+#X connect 22 0 2 0;
diff --git a/signal/streamout~.c b/signal/streamout~.c
index f691860..16150b7 100755
--- a/signal/streamout~.c
+++ b/signal/streamout~.c
@@ -72,11 +72,9 @@ typedef struct _streamout
static void streamout_tempbuf(t_streamout *x,int size) {
if (x->cbuf && x->tbufsize) freebytes(x->cbuf,x->tbufsize);
- x->tbufsize=size;
+ x->tbufsize=size*sizeof(float)*x->x_tag.channels;
if (!x->cbuf)
- x->cbuf = getbytes(size*sizeof(short));
- else
- x->cbuf = resizebytes(x->cbuf,x->nsamples*sizeof(short),size*sizeof(short));
+ x->cbuf = getbytes(x->tbufsize);
x->nsamples = size;
}
@@ -156,11 +154,19 @@ static void streamout_connect(t_streamout *x, t_symbol *hostname, t_floatarg fpo
static t_int *streamout_perform(t_int *w)
{
t_streamout* x = (t_streamout*) (w[1]);
- t_float *in = (t_float *)(w[2]);
+ t_float *in[4];
char* bp;
- int n = (int)(w[3]);
- int length = n*SF_SIZEOF(x->x_tag.format);
+ int n;
+ int length;
int sent = 0;
+ int i;
+ int chans = x->x_tag.channels;
+
+
+ for (i=0;i<chans;i++)
+ in[i] = (t_float *)(w[2+i]);
+ n = (int)(w[2+i]);
+ length = n*SF_SIZEOF(x->x_tag.format)*chans;
if (n != x->nsamples)
streamout_tempbuf(x,n);
@@ -168,20 +174,30 @@ static t_int *streamout_perform(t_int *w)
x->x_tag.framesize=length;
x->x_tag.count++;
/* format the buffer */
- bp = (char*)in;
+
switch (x->x_tag.format) {
+ case SF_FLOAT: {
+ float* cibuf =(float*) x->cbuf;
+ bp = (char*) x->cbuf;
+ for (i=0;i<chans;i++)
+ while (n--)
+ *cibuf++ = *(in[i]++);
+ break;
+ }
case SF_16BIT: {
short* cibuf =(short*) x->cbuf;
bp = (char*) x->cbuf;
- while (n--)
- *cibuf++ = (short) 32767.0 * *in++;
+ for (i=0;i<chans;i++)
+ while (n--)
+ *cibuf++ = (short) 32767.0 * *in[i]++;
break;
}
case SF_8BIT: {
unsigned char* cbuf = (char*) x->cbuf;
bp = (char*) x->cbuf;
- while (n--)
- *cbuf++ = (unsigned char)(128. * (1.0 + *in++));
+ for (i=0;i<chans;i++)
+ while (n--)
+ *cbuf++ = (unsigned char)(127. * (1.0 + *in[i]++));
break;
}
default:
@@ -224,14 +240,30 @@ static t_int *streamout_perform(t_int *w)
}
}
}
- return (w+4);
+ return (w+3+chans);
}
static void streamout_dsp(t_streamout *x, t_signal **sp)
{
- dsp_add(streamout_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+ switch (x->x_tag.channels) {
+ case 1:
+ dsp_add(streamout_perform, 3, x,sp[0]->s_vec, sp[0]->s_n);
+ post("one channel mode");
+ break;
+ case 2:
+ dsp_add(streamout_perform, 4, x,sp[0]->s_vec, sp[1]->s_vec,sp[0]->s_n);
+ post("two channel mode");
+ break;
+ case 4:
+ dsp_add(streamout_perform, 6, x,sp[0]->s_vec, sp[1]->s_vec,
+ sp[2]->s_vec,sp[3]->s_vec,sp[0]->s_n);
+ post("four channel mode");
+ break;
+ default:
+ post("streamout: %d channels not supported",x->x_tag.channels);
+ }
}
@@ -276,11 +308,13 @@ static void streamout_float(t_streamout* x,t_float arg)
-static void *streamout_new(t_symbol* prot)
+static void *streamout_new(t_symbol* prot,float channels)
{
t_streamout *x = (t_streamout *)pd_new(streamout_class);
outlet_new(&x->x_obj, &s_float);
+ if (channels == 0) channels = 1;
+
x->hostname = gensym("localhost");
x->portno = 3000;
x->x_fd = -1;
@@ -291,7 +325,7 @@ static void *streamout_new(t_symbol* prot)
x->x_protocol = SOCK_DGRAM;
x->x_tag.format = SF_FLOAT;
- x->x_tag.channels = 1;
+ x->x_tag.channels = channels;
x->x_tag.version = 1;
x->cbuf = NULL;
streamout_tempbuf(x,64);
@@ -310,7 +344,7 @@ static void streamout_free(t_streamout* x)
void streamout_tilde_setup(void)
{
streamout_class = class_new(gensym("streamout~"), (t_newmethod) streamout_new, (t_method) streamout_free,
- sizeof(t_streamout), 0, A_DEFSYM, 0);
+ sizeof(t_streamout), 0, A_DEFSYM,A_DEFFLOAT, 0);
class_addmethod(streamout_class, (t_method) streamout_connect,
gensym("connect"), A_SYMBOL, A_DEFFLOAT, 0);
class_addmethod(streamout_class, (t_method) streamout_disconnect,
diff --git a/signal/streamout~.pd b/signal/streamout~.pd
index 56b2ece..ff1868c 100755
--- a/signal/streamout~.pd
+++ b/signal/streamout~.pd
@@ -1,49 +1,186 @@
-#N canvas 45 154 820 483 12;
-#X floatatom 227 194 0 0 0;
-#X msg 46 32 disconnect;
-#X obj 368 72 osc~;
-#X floatatom 368 20 0 0 0;
-#X obj 368 44 sig~ 220;
-#X text 13 239 The format message sets the transmission format;
-#X text 11 419 Hopefully we will sometimes have a version where we can compress it for transmission over the "real" net.;
-#X text 14 462 (C) 1999 Guenter Geiger;
-#X obj 455 21 streamin~ 3001;
-#X obj 448 78 dac~;
-#X msg 156 68 connect tritonus 3000;
-#X msg 20 113 format float;
-#X msg 20 144 format 16bit;
-#X text 13 256 format float: send float numbers;
-#X text 12 275 format 16bit: send 16 bit integers;
-#X msg 20 176 format 8bit;
-#X text 380 246 host:;
-#X text 13 219 format:;
-#X obj 227 162 streamout~ localhost 3000;
-#X text 379 193 connect:;
-#X text 378 210 connect sets the host and portnumber and immediatly tries to connect .;
-#X text 380 263 Set the host name and connect to the host \, if a connection was active.;
-#X msg 250 100 1;
-#X msg 284 100 0;
-#X text 379 298 disconnect (0);
-#X text 378 315 disconnect and 0 disconnect the object;
-#X text 379 335 1:;
-#X text 376 352 if the number 1 is sent to streamout \, the object connects to the stored host and portnumber. Default is localhost \, port number 3000;
-#X obj 366 107 *~ 0.01;
-#X msg 179 12 connect gige 15001;
-#X msg 156 37 connect localhost 3001;
-#X text 12 292 format 8bit: send 8 bit integers;
-#X connect 1 0 18 0;
-#X connect 2 0 28 0;
-#X connect 3 0 4 0;
-#X connect 4 0 2 0;
-#X connect 8 0 9 0;
-#X connect 8 0 9 1;
-#X connect 10 0 18 0;
-#X connect 11 0 18 0;
-#X connect 12 0 18 0;
-#X connect 15 0 18 0;
-#X connect 18 0 0 0;
-#X connect 22 0 18 0;
-#X connect 23 0 18 0;
-#X connect 28 0 18 0;
-#X connect 29 0 18 0;
-#X connect 30 0 18 0;
+#N canvas 45 154 991 483 12;
+#X floatatom 227 194 0 0 0 0 - - -;
+#X msg 46 32 disconnect;
+#X obj 369 71 osc~;
+#X floatatom 368 20 0 0 0 0 - - -;
+#X obj 368 44 sig~ 220;
+#X text 9 224 The format message sets the transmission format;
+#X text 14 462 (C) 1999 Guenter Geiger;
+#X obj 455 21 streamin~ 3001;
+#X obj 448 78 dac~;
+#X msg 156 68 connect tritonus 3000;
+#X msg 20 113 format float;
+#X msg 20 144 format 16bit;
+#X text 9 241 format float: send float numbers;
+#X text 8 260 format 16bit: send 16 bit integers;
+#X msg 20 176 format 8bit;
+#X text 445 259 host:;
+#X text 9 206 format:;
+#X text 444 206 connect:;
+#X text 443 223 connect sets the host and portnumber and immediatly
+tries to connect .;
+#X text 445 276 Set the host name and connect to the host \, if a connection
+was active.;
+#X msg 250 100 1;
+#X msg 284 100 0;
+#X text 444 311 disconnect (0);
+#X text 443 328 disconnect and 0 disconnect the object;
+#X text 444 348 1:;
+#X text 441 365 if the number 1 is sent to streamout \, the object
+connects to the stored host and portnumber. Default is localhost \,
+port number 3000;
+#X msg 179 12 connect gige 15001;
+#X msg 156 37 connect localhost 3001;
+#X text 8 277 format 8bit: send 8 bit integers;
+#X obj 227 162 streamout~;
+#N canvas 0 0 450 300 graph1 0;
+#X array array1 900 float 1;
+#A 0 0.0890625 0.0875 0.0859375 0.084375 0.0828125 0.08125 0.0796875
+0.0773438 0.0757812 0.0734375 0.0710938 0.0695313 0.0671875 0.0648438
+0.0625 0.0601563 0.0578125 0.0546875 0.0523438 0.05 0.046875 0.0445313
+0.0414063 0.0390625 0.0359375 0.0328125 0.0296875 0.0273438 0.0242188
+0.0210938 0.0179687 0.0148437 0.0117188 0.00859375 0.00546875 0.00234375
+-0.00078125 -0.00390625 -0.00703125 -0.0101563 -0.0132813 -0.0164063
+-0.01875 -0.021875 -0.025 -0.028125 -0.03125 -0.034375 -0.0367188 -0.0398437
+-0.0429688 -0.0453125 -0.0484375 -0.0507812 -0.0539063 -0.05625 -0.0585938
+-0.0617188 -0.0640625 -0.0664062 -0.06875 -0.0710938 -0.0726563 -0.075
+-0.0773438 -0.0789063 -0.08125 -0.0828125 -0.084375 -0.0859375 -0.0875
+-0.0890625 -0.090625 -0.0921875 -0.0929688 -0.0945313 -0.0953125 -0.0960938
+-0.096875 -0.0976562 -0.0984375 -0.0992187 -0.0992187 -0.1 -0.1 -0.1
+-0.1 -0.1 -0.1 -0.1 -0.1 -0.0992187 -0.0984375 -0.0984375 -0.0976562
+-0.096875 -0.0960938 -0.0945313 -0.09375 -0.0929688 -0.0914062 -0.0898438
+-0.0882813 -0.0875 -0.0851563 -0.0835937 -0.0820312 -0.0804688 -0.078125
+-0.0765625 -0.0742188 -0.071875 -0.0703125 -0.0679687 -0.065625 -0.0632813
+-0.0601563 -0.0578125 -0.0554687 -0.0523438 -0.05 -0.0476562 -0.0445313
+-0.0414063 -0.0390625 -0.0359375 -0.0328125 -0.0296875 -0.0273438 -0.0242188
+-0.0210938 -0.0179687 -0.0148437 -0.0117188 -0.00859375 -0.00546875
+-0.00234375 0.00078125 0.00390625 0.00703125 0.0101563 0.0132813 0.0164063
+0.01875 0.021875 0.025 0.028125 0.03125 0.034375 0.0367188 0.0398437
+0.0429688 0.0453125 0.0484375 0.0507812 0.053125 0.05625 0.0585938
+0.0609375 0.0632813 0.065625 0.0679687 0.0703125 0.071875 0.0742188
+0.0765625 0.078125 0.0796875 0.0820312 0.0835937 0.0851563 0.0867188
+0.0882813 0.0890625 0.090625 0.0914062 0.0929688 0.09375 0.0945313
+0.0953125 0.0960938 0.096875 0.096875 0.0976562 0.0976562 0.0976562
+0.0976562 0.0976562 0.0976562 0.0976562 0.0976562 0.096875 0.096875
+0.0960938 0.0953125 0.0945313 0.09375 0.0929688 0.0914062 0.090625
+0.0890625 0.0882813 0.0867188 0.0851563 0.0835937 0.0820312 0.0804688
+0.078125 0.0765625 0.0742188 0.0726563 0.0703125 0.0679687 0.065625
+0.0632813 0.0609375 0.0585938 0.05625 0.0539063 0.0507812 0.0484375
+0.0453125 0.0429688 0.0398437 0.0375 0.034375 0.03125 0.028125 0.0257812
+0.0226563 0.0195312 0.0164063 0.0132813 0.0101563 0.00703125 0.00390625
+0.00078125 -0.00234375 -0.00546875 -0.00859375 -0.0117188 -0.0148437
+-0.0179687 -0.0210938 -0.0234375 -0.0265625 -0.0296875 -0.0328125 -0.0359375
+-0.0382813 -0.0414063 -0.0445313 -0.046875 -0.05 -0.0523438 -0.0554687
+-0.0578125 -0.0601563 -0.0625 -0.0648438 -0.0671875 -0.0695313 -0.071875
+-0.0742188 -0.0765625 -0.078125 -0.0804688 -0.0820312 -0.0835937 -0.0851563
+-0.0867188 -0.0882813 -0.0898438 -0.0914062 -0.0921875 -0.09375 -0.0945313
+-0.0960938 -0.096875 -0.0976562 -0.0984375 -0.0984375 -0.0992187 -0.1
+-0.1 -0.1 -0.1 -0.1 -0.1 -0.1 -0.1 -0.0992187 -0.0992187 -0.0984375
+-0.0976562 -0.096875 -0.0960938 -0.0953125 -0.0945313 -0.0929688 -0.0921875
+-0.090625 -0.0890625 -0.0875 -0.0859375 -0.084375 -0.0828125 -0.08125
+-0.0789063 -0.0773438 -0.075 -0.0734375 -0.0710938 -0.06875 -0.0664062
+-0.0640625 -0.0617188 -0.059375 -0.05625 -0.0539063 -0.0515625 -0.0484375
+-0.0460938 -0.0429688 -0.0398437 -0.0375 -0.034375 -0.03125 -0.028125
+-0.0257812 -0.0226563 -0.0195312 -0.0164063 -0.0132813 -0.0101563 -0.00703125
+-0.00390625 -0.00078125 0.00234375 0.00546875 0.00859375 0.0117188
+0.0148437 0.0179687 0.0210938 0.0234375 0.0265625 0.0296875 0.0328125
+0.0359375 0.0382813 0.0414063 0.04375 0.046875 0.0492188 0.0523438
+0.0546875 0.0570313 0.0601563 0.0625 0.0648438 0.0671875 0.06875 0.0710938
+0.0734375 0.075 0.0773438 0.0789063 0.08125 0.0828125 0.084375 0.0859375
+0.0875 0.0882813 0.0898438 0.0914062 0.0921875 0.0929688 0.09375 0.0953125
+0.0953125 0.0960938 0.096875 0.0976562 0.0976562 0.0976562 0.0976562
+0.0976562 0.0976562 0.0976562 0.0976562 0.096875 0.096875 0.0960938
+0.0953125 0.0953125 0.09375 0.0929688 0.0921875 0.0914062 0.0898438
+0.0882813 0.0875 0.0859375 0.084375 0.0828125 0.08125 0.0789063 0.0773438
+0.075 0.0734375 0.0710938 0.06875 0.0671875 0.0648438 0.0625 0.0601563
+0.0570313 0.0546875 0.0523438 0.0492188 0.046875 0.04375 0.0414063
+0.0382813 0.0359375 0.0328125 0.0296875 0.0265625 0.0234375 0.0210938
+0.0179687 0.0148437 0.0117188 0.00859375 0.00546875 0.00234375 -0.00078125
+-0.00390625 -0.00703125 -0.0101563 -0.0132813 -0.0164063 -0.0195312
+-0.0226563 -0.0257812 -0.028125 -0.03125 -0.034375 -0.0375 -0.0398437
+-0.0429688 -0.0460938 -0.0484375 -0.0515625 -0.0539063 -0.05625 -0.059375
+-0.0617188 -0.0640625 -0.0664062 -0.06875 -0.0710938 -0.0734375 -0.075
+-0.0773438 -0.0789063 -0.08125 -0.0828125 -0.084375 -0.0859375 -0.0875
+-0.0890625 -0.090625 -0.0921875 -0.0929688 -0.0945313 -0.0953125 -0.0960938
+-0.096875 -0.0976562 -0.0984375 -0.0992187 -0.0992187 -0.1 -0.1 -0.1
+-0.1 -0.1 -0.1 -0.1 -0.1 -0.0992187 -0.0984375 -0.0984375 -0.0976562
+-0.096875 -0.0960938 -0.0945313 -0.09375 -0.0921875 -0.0914062 -0.0898438
+-0.0882813 -0.0867188 -0.0851563 -0.0835937 -0.0820312 -0.0796875 -0.078125
+-0.0757812 -0.0742188 -0.071875 -0.0695313 -0.0671875 -0.0648438 -0.0625
+-0.0601563 -0.0578125 -0.0554687 -0.0523438 -0.05 -0.046875 -0.0445313
+-0.0414063 -0.0382813 -0.0359375 -0.0328125 -0.0296875 -0.0265625 -0.0234375
+-0.0210938 -0.0179687 -0.0148437 -0.0117188 -0.00859375 -0.00546875
+-0.00234375 0.00078125 0.00390625 0.00703125 0.0101563 0.0132813 0.0164063
+0.0195312 0.0226563 0.0257812 0.028125 0.03125 0.034375 0.0375 0.0398437
+0.0429688 0.0453125 0.0484375 0.0507812 0.0539063 0.05625 0.0585938
+0.0609375 0.0632813 0.065625 0.0679687 0.0703125 0.0726563 0.0742188
+0.0765625 0.078125 0.0804688 0.0820312 0.0835937 0.0851563 0.0867188
+0.0882813 0.0890625 0.090625 0.0914062 0.0929688 0.09375 0.0945313
+0.0953125 0.0960938 0.096875 0.096875 0.0976562 0.0976562 0.0976562
+0.0976562 0.0976562 0.0976562 0.0976562 0.0976562 0.096875 0.096875
+0.0960938 0.0953125 0.0945313 0.09375 0.0929688 0.0914062 0.090625
+0.0890625 0.0882813 0.0867188 0.0851563 0.0835937 0.0820312 0.0796875
+0.078125 0.0765625 0.0742188 0.071875 0.0703125 0.0679687 0.065625
+0.0632813 0.0609375 0.0585938 0.05625 0.053125 0.0507812 0.0484375
+0.0453125 0.0421875 0.0398437 0.0367188 0.034375 0.03125 0.028125 0.025
+0.021875 0.01875 0.0164063 0.0132813 0.0101563 0.00703125 0.00390625
+0.00078125 -0.00234375 -0.00546875 -0.00859375 -0.0117188 -0.0148437
+-0.0179687 -0.0210938 -0.0242188 -0.0273438 -0.0304688 -0.0328125 -0.0359375
+-0.0390625 -0.0414063 -0.0445313 -0.0476562 -0.05 -0.053125 -0.0554687
+-0.0578125 -0.0601563 -0.0632813 -0.065625 -0.0679687 -0.0703125 -0.071875
+-0.0742188 -0.0765625 -0.078125 -0.0804688 -0.0820312 -0.0835937 -0.0859375
+-0.0875 -0.0882813 -0.0898438 -0.0914062 -0.0929688 -0.09375 -0.0945313
+-0.0960938 -0.096875 -0.0976562 -0.0984375 -0.0984375 -0.0992187 -0.1
+-0.1 -0.1 -0.1 -0.1 -0.1 -0.1 -0.1 -0.0992187 -0.0992187 -0.0984375
+-0.0976562 -0.096875 -0.0960938 -0.0953125 -0.0945313 -0.0929688 -0.0921875
+-0.090625 -0.0890625 -0.0875 -0.0859375 -0.084375 -0.0828125 -0.08125
+-0.0789063 -0.0773438 -0.075 -0.0726563 -0.0710938 -0.06875 -0.0664062
+-0.0640625 -0.0617188 -0.0585938 -0.05625 -0.0539063 -0.0507812 -0.0484375
+-0.0453125 -0.0429688 -0.0398437 -0.0367188 -0.034375 -0.03125 -0.028125
+-0.025 -0.021875 -0.01875 -0.015625 -0.0132813 -0.0101563 -0.00703125
+-0.00390625 -0.00078125 0.00234375 0.00546875 0.00859375 0.0117188
+0.0148437 0.0179687 0.0210938 0.0242188 0.0273438 0.0296875 0.0328125
+0.0359375 0.0390625 0.0414063 0.0445313 0.046875 0.05 0.0523438 0.0546875
+0.0578125 0.0601563 0.0625 0.0648438 0.0671875 0.0695313 0.0710938
+0.0734375 0.0757812 0.0773438 0.0796875 0.08125 0.0828125 0.084375
+0.0859375 0.0875 0.0890625 0.0898438 0.0914062 0.0921875 0.0929688
+0.0945313 0.0953125 0.0960938 0.0960938 0.096875 0.0976562 0.0976562
+0.0976562 0.0976562 0.0976562 0.0976562 0.0976562 0.0976562 0.096875
+0.096875 0.0960938 0.0953125 0.0945313 0.09375 0.0929688 0.0921875
+0.090625 0.0898438 0.0882813 0.0875 0.0859375 0.084375 0.0828125 0.0804688
+0.0789063 0.0773438 0.075 0.0734375 0.0710938 0.06875 0.0664062 0.0640625
+0.0617188 0.059375 0.0570313 0.0546875 0.0515625 0.0492188 0.046875
+0.04375 0.0414063 0.0382813 0.0351562 0.0320312 0.0296875 0.0265625
+0.0234375 0.0203125 0.0171875 0.0140625 0.0109375 0.0078125 0.00546875
+0.00234375 -0.00078125 -0.00390625 -0.00703125 -0.0101563 -0.0132813
+-0.0164063 -0.0195312 -0.0226563 -0.0257812 -0.0289063 -0.0320312 -0.034375
+-0.0375 -0.040625 -0.0429688 -0.0460938 -0.0492188 -0.0515625 -0.0539063
+-0.0570313 -0.059375 -0.0617188 -0.0640625 -0.0664062 -0.06875 -0.0710938
+-0.0734375 -0.0757812 -0.0773438 -0.0796875 -0.08125 -0.0828125 -0.0851563
+-0.0867188 -0.0882813 -0.0890625 -0.090625 -0.0921875 -0.0929688 -0.0945313
+-0.0953125 -0.0960938 -0.096875 -0.0976562 -0.0984375 -0.0992187 -0.0992187
+-0.1 -0.1 -0.1 -0.1 -0.1 -0.1 -0.1 -0.1 -0.0992187 -0.0984375 -0.0984375
+-0.0976562 -0.096875 -0.0953125 -0.0945313;
+#X coords 0 1 899 -1 200 140 1;
+#X restore 689 52 graph;
+#X obj 460 140 tabwrite~ array1;
+#X msg 541 79 bang;
+#X obj 458 47 *~ 0.1;
+#X connect 1 0 29 0;
+#X connect 2 0 29 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 0;
+#X connect 7 0 33 0;
+#X connect 9 0 29 0;
+#X connect 10 0 29 0;
+#X connect 11 0 29 0;
+#X connect 14 0 29 0;
+#X connect 20 0 29 0;
+#X connect 21 0 29 0;
+#X connect 26 0 29 0;
+#X connect 27 0 29 0;
+#X connect 29 0 0 0;
+#X connect 32 0 31 0;
+#X connect 33 0 8 0;
+#X connect 33 0 8 1;
+#X connect 33 0 31 0;