diff options
author | Guenter Geiger <ggeiger@users.sourceforge.net> | 2003-03-20 19:16:35 +0000 |
---|---|---|
committer | Guenter Geiger <ggeiger@users.sourceforge.net> | 2003-03-20 19:16:35 +0000 |
commit | 9056179fcd52793c16112471d1d7fed45722194c (patch) | |
tree | 6367029852093ba5f9fd4d2d188c5464af79cd27 /externals/build/doc | |
parent | 79646ab9709aad75a2cf8d2a7ee4843e178b6382 (diff) |
added creb library
svn path=/trunk/; revision=487
Diffstat (limited to 'externals/build/doc')
24 files changed, 1058 insertions, 0 deletions
diff --git a/externals/build/doc/bdiag~.pd b/externals/build/doc/bdiag~.pd new file mode 100644 index 00000000..f5e835f9 --- /dev/null +++ b/externals/build/doc/bdiag~.pd @@ -0,0 +1,97 @@ +#N canvas 34 203 724 407 10; +#X obj 34 45 metro; +#X msg 34 20 bang; +#X floatatom 76 20 5 0 0; +#X obj 34 327 dist~ 1; +#X obj 24 359 dac~; +#N canvas 731 115 262 403 systemparams 1; +#X floatatom 81 47 5 0 0; +#X floatatom 125 47 5 0 0; +#X floatatom 81 74 5 0 0; +#X floatatom 125 74 5 0 0; +#X floatatom 81 102 5 0 0; +#X floatatom 125 102 5 0 0; +#X floatatom 81 129 5 0 0; +#X floatatom 125 129 5 0 0; +#X floatatom 81 157 5 0 0; +#X floatatom 125 157 5 0 0; +#X floatatom 81 184 5 0 0; +#X floatatom 125 184 5 0 0; +#X floatatom 81 212 5 0 0; +#X floatatom 125 212 5 0 0; +#X floatatom 81 239 5 0 0; +#X floatatom 125 239 5 0 0; +#X obj 28 65 bdft 1; +#X obj 27 93 bdft 2; +#X obj 28 120 bdft 3; +#X obj 28 175 bdft 7; +#X obj 28 202 bdft 11; +#X obj 28 230 bdft 17; +#X obj 28 257 bdft 30; +#X obj 28 319 outlet; +#X text 20 23 frequency detune and damping; +#X text 49 283 bdft argument = harmonic; +#X obj 28 147 bdft 5; +#X connect 0 0 16 0; +#X connect 1 0 16 1; +#X connect 2 0 17 0; +#X connect 3 0 17 1; +#X connect 4 0 18 0; +#X connect 5 0 18 1; +#X connect 6 0 26 0; +#X connect 7 0 26 1; +#X connect 8 0 19 0; +#X connect 9 0 19 1; +#X connect 10 0 20 0; +#X connect 11 0 20 1; +#X connect 12 0 21 0; +#X connect 13 0 21 1; +#X connect 14 0 22 0; +#X connect 15 0 22 1; +#X connect 16 0 23 0; +#X connect 17 0 23 0; +#X connect 18 0 23 0; +#X connect 19 0 23 0; +#X connect 20 0 23 0; +#X connect 21 0 23 0; +#X connect 22 0 23 0; +#X connect 26 0 23 0; +#X restore 89 76 pd systemparams; +#X obj 34 93 bdiag~; +#X obj 34 129 ibfft~; +#X obj 34 232 dynwav~; +#X obj 34 283 vol~; +#X floatatom 57 257 5 0 0; +#X floatatom 78 168 5 0 0; +#X obj 78 196 phasor~; +#X text 258 168 the [eig <index> <real> <imag>] message sets the eigenvalue +for the corresponding block. there are n/2 blocks \, with n the dsp +blocksize.; +#X text 259 223 you can use [timefreq <index> <60dB time> <frequency>] +for a more appropriate initialization of the eigenvalues using decay +time in milliseconds and oscillation frequency in Hz.; +#X text 256 18 bdiag~: parallel block diagonal state space model (parallel +2d rotations) see bdiag.c for more info. the state equations for one +block are:; +#X text 300 70 state1 = real * state1 - imag * state2 + input1; +#X text 300 85 state2 = real * state2 + imag * state1 + input2; +#X text 258 121 this module is intended to "filter" spectral data produced +by bfft or other short time spectral transforms like dwt.; +#X text 256 279 [bang] or [random] set the state vector to a random +value. [reset] sets it to 0; +#X text 256 327 this patch uses of bdiag~ \, ibfft~ and dynwav~ to +build a 32 voice harmonic modal synth \, with the state excited with +white noise on bang.; +#X connect 0 0 6 0; +#X connect 1 0 0 0; +#X connect 2 0 0 1; +#X connect 3 0 4 0; +#X connect 3 0 4 1; +#X connect 5 0 6 0; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 8 0 9 0; +#X connect 9 0 3 0; +#X connect 10 0 9 1; +#X connect 11 0 12 0; +#X connect 12 0 8 1; diff --git a/externals/build/doc/bfft~.pd b/externals/build/doc/bfft~.pd new file mode 100644 index 00000000..62507f9d --- /dev/null +++ b/externals/build/doc/bfft~.pd @@ -0,0 +1,18 @@ +#N canvas 488 64 480 309 10; +#X obj 17 62 osc~ 500; +#X floatatom 17 -11 5 0 0; +#X obj 17 23 * 187.5; +#X obj 17 180 tabsend~ scope; +#N canvas 0 0 450 300 graph2 0; +#X array scope 64 float 0; +#X coords 0 1 63 -1 200 140 1; +#X restore 233 16 graph; +#X obj 18 113 bfft~; +#X obj 71 112 ibfft~; +#X text 12 -60 spectrum: (DC \, NY) \, (R1 \, I1) \, ...(RN-1 \, IN-1) +; +#X text 13 -74 like fft~ but normalized and; +#X connect 0 0 5 0; +#X connect 1 0 2 0; +#X connect 2 0 0 0; +#X connect 5 0 3 0; diff --git a/externals/build/doc/biquadseries~.pd b/externals/build/doc/biquadseries~.pd new file mode 100644 index 00000000..89d7ce0a --- /dev/null +++ b/externals/build/doc/biquadseries~.pd @@ -0,0 +1,22 @@ +#N canvas 389 207 533 299 10; +#X obj 37 246 dac~; +#X msg 81 132 butterLP \$1; +#X msg 173 131 butterHP \$1; +#X floatatom 81 105 5 0 0; +#X floatatom 173 104 5 0 0; +#X obj 48 78 *~; +#X floatatom 82 55 5 0 0; +#X obj 48 35 noise~; +#X text 269 132 butterworth lowpass and highpass; +#X text 181 178 creation argument: number of 2nd order sections; +#X obj 48 178 biquadseries~ 4; +#X text 173 22 biquadseries~ second order iir series section; +#X connect 1 0 10 0; +#X connect 2 0 10 0; +#X connect 3 0 1 0; +#X connect 4 0 2 0; +#X connect 5 0 10 0; +#X connect 6 0 5 1; +#X connect 7 0 5 0; +#X connect 10 0 0 0; +#X connect 10 0 0 1; diff --git a/externals/build/doc/bwin~.pd b/externals/build/doc/bwin~.pd new file mode 100644 index 00000000..7f630d8d --- /dev/null +++ b/externals/build/doc/bwin~.pd @@ -0,0 +1,53 @@ +#N canvas 62 558 450 300 10; +#N canvas 409 279 692 500 windowing 1; +#X obj 62 441 outlet~; +#X obj 62 65 inlet~; +#X obj 62 142 bfft~; +#X obj 62 365 ibfft~; +#X floatatom 85 173 5 0 0; +#X obj 62 199 vol~; +#X text 60 6 bwin~ multiplies a signal block with a window; +#X text 211 310 after maximizing the spectrum is multiplied by a pink +noise envelope; +#X obj 62 250 dist~ 1; +#X text 211 105 apply analysis window; +#X text 211 172 set drive; +#X text 212 251 soft clip spectral data; +#X text 212 133 transform block to freq domain; +#X text 210 360 transform block back to time domain; +#X text 212 401 undo analysis window + apply synthesis window; +#X text 212 39 this example is a poor man's spectral maximizer using +bwin~ bfft~ bifft~ and dist~; +#X obj 62 225 bwin~ bfft_blue; +#X obj 62 327 bwin~ bfft_pink; +#X obj 62 401 bwin~ hann/hamming; +#X obj 62 106 bwin~ hamming; +#X msg 344 207 type bfft_db/octave \$1; +#X floatatom 517 172 5 0 0; +#X msg 345 277 type bfft_db/octave \$1; +#X obj 545 427 block~ 16384 2; +#X floatatom 519 244 5 0 0; +#X connect 1 0 19 0; +#X connect 2 0 5 0; +#X connect 3 0 18 0; +#X connect 4 0 5 1; +#X connect 5 0 16 0; +#X connect 8 0 17 0; +#X connect 16 0 8 0; +#X connect 17 0 3 0; +#X connect 18 0 0 0; +#X connect 19 0 2 0; +#X connect 20 0 16 0; +#X connect 21 0 20 0; +#X connect 22 0 17 0; +#X connect 24 0 22 0; +#X restore 53 88 pd windowing; +#X obj 41 219 dac~; +#X obj 53 150 vol~; +#X floatatom 76 124 5 0 0; +#X obj 53 41 adc~ 7; +#X connect 0 0 2 0; +#X connect 2 0 1 0; +#X connect 2 0 1 1; +#X connect 3 0 2 1; +#X connect 4 0 0 0; diff --git a/externals/build/doc/cheby~.pd b/externals/build/doc/cheby~.pd new file mode 100644 index 00000000..1cf1f94d --- /dev/null +++ b/externals/build/doc/cheby~.pd @@ -0,0 +1,43 @@ +#N canvas 262 87 566 348 10; +#X obj 130 230 cheby~ 4; +#X msg 147 149 coef 1 \$1; +#X floatatom 147 93 5 0 0; +#X obj 147 117 dbtorms; +#X obj 124 313 dac~; +#X obj 130 281 vol~; +#X floatatom 156 261 5 0 0; +#X obj 40 113 osc~; +#X floatatom 40 88 5 0 0; +#X floatatom 226 94 5 0 0; +#X obj 226 118 dbtorms; +#X floatatom 305 94 5 0 0; +#X obj 305 118 dbtorms; +#X floatatom 384 93 5 0 0; +#X obj 384 117 dbtorms; +#X msg 226 150 coef 2 \$1; +#X msg 305 150 coef 3 \$1; +#X msg 384 150 coef 4 \$1; +#X text 96 3 chebyshev waveshaper; +#X text 207 229 creation argument: order of polynomial; +#X text 135 47 coef n x sets coefficient of nth order cheby poly to +x; +#X text 135 60 if the input is a sine wave \, these are the amplitudes +for the harmonics.; +#X connect 0 0 5 0; +#X connect 1 0 0 0; +#X connect 2 0 3 0; +#X connect 3 0 1 0; +#X connect 5 0 4 1; +#X connect 5 0 4 0; +#X connect 6 0 5 1; +#X connect 7 0 0 0; +#X connect 8 0 7 0; +#X connect 9 0 10 0; +#X connect 10 0 15 0; +#X connect 11 0 12 0; +#X connect 12 0 16 0; +#X connect 13 0 14 0; +#X connect 14 0 17 0; +#X connect 15 0 0 0; +#X connect 16 0 0 0; +#X connect 17 0 0 0; diff --git a/externals/build/doc/dist~.pd b/externals/build/doc/dist~.pd new file mode 100644 index 00000000..3533471a --- /dev/null +++ b/externals/build/doc/dist~.pd @@ -0,0 +1,17 @@ +#N canvas 497 336 450 300 10; +#X text 156 35 dist~ waveshaper; +#X text 154 53 creation argument: type (see dist.c); +#X floatatom 136 120 5 0 0; +#X obj 64 121 osc~; +#X obj 66 206 dac~; +#X floatatom 63 84 5 0 0; +#X text 189 119 right inlet: pre gain; +#X obj 148 95 hsl 128 15 0.5 20 0 0 empty empty empty -2 -6 32 8 -262144 +-1 -1 7000 1; +#X obj 64 157 dist~ 1; +#X connect 2 0 8 1; +#X connect 3 0 8 0; +#X connect 5 0 3 0; +#X connect 7 0 2 0; +#X connect 8 0 4 0; +#X connect 8 0 4 1; diff --git a/externals/build/doc/dwt~.pd b/externals/build/doc/dwt~.pd new file mode 100644 index 00000000..52986e1c --- /dev/null +++ b/externals/build/doc/dwt~.pd @@ -0,0 +1,72 @@ +#N canvas 47 99 994 611 10; +#X obj 17 62 osc~ 500; +#X msg 83 -115 predict 0.5 0.5 \, update 0.25 0.25; +#X msg 83 -76 predict -0.0625 0.5625 0.5625 -0.0625 \, update -0.03125 +0.28125 0.28125 -0.03125; +#X floatatom 24 10 5 0 0; +#X msg 201 144 mask -1 9 9 -1; +#X obj 67 279 r coef; +#X obj 82 -30 s coef; +#X obj 195 337 s coef; +#X msg 201 167 mask 3 -25 150 150 -25 3; +#X msg 216 189 mask -5 49 -245 1225 1225 -245 49 -5; +#X obj 196 39 pack; +#X floatatom 222 8 5 0 0; +#X floatatom 166 -4 5 0 0; +#X msg 171 64 coef \$1 \$2; +#X msg 191 120 mask 1 1; +#X msg 228 212 mask 35 -405 2268 -8820 39690 39690 -8820 2268 -405 +35; +#X msg 244 246 mask -63 847 -5445 22869 -76230 320166 320166 -76230 +22869 -5445 847 -63; +#X msg 245 306 predict 1 0 \, update 0 0.5; +#X obj 36 31 * 187.5; +#X obj 26 341 dwt~ 1; +#X obj 80 343 idwt~ 1; +#X msg 469 376 mask 0 0 0 35 140 -70 28 -5; +#X msg 469 352 mask 7 -45 126 -210 315 63 0 0 0 0; +#X msg 469 328 mask -21 154 -495 924 -1155 1386 231 0 0 0 0 0; +#X obj 26 443 tabsend~ scope; +#N canvas 0 0 450 300 graph2 0; +#X array scope 256 float 0; +#X coords 0 1 255 -1 200 140 1; +#X restore 718 -98 graph; +#X text 61 165 print out coefs; +#X msg 100 184 print; +#X text 315 -24 dwt~ performs a discrete wavelet transform; +#X text 315 -10 idwt~ performs the inverse transform; +#X text 309 105 mask sets the predict mask \, and uses the corresponding +update mask; +#X text 266 63 coef sets half of a symmetric predict mask; +#X text 243 286 predict and update masks can be specified explicitly +; +#X text 433 307 haar wavelet; +#X msg 672 189 even \$1; +#X floatatom 672 167 5 0 0; +#X text 570 134 even <n> is the order symmetric interpolating biorthogonal +wavelet with n vanishing moments.; +#X connect 0 0 19 0; +#X connect 1 0 6 0; +#X connect 2 0 6 0; +#X connect 3 0 18 0; +#X connect 4 0 7 0; +#X connect 5 0 20 0; +#X connect 5 0 19 0; +#X connect 8 0 7 0; +#X connect 9 0 7 0; +#X connect 10 0 13 0; +#X connect 11 0 10 1; +#X connect 12 0 10 0; +#X connect 13 0 7 0; +#X connect 14 0 7 0; +#X connect 15 0 7 0; +#X connect 16 0 7 0; +#X connect 17 0 7 0; +#X connect 18 0 0 0; +#X connect 19 0 24 0; +#X connect 21 0 7 0; +#X connect 22 0 7 0; +#X connect 23 0 7 0; +#X connect 27 0 7 0; +#X connect 34 0 7 0; +#X connect 35 0 34 0; diff --git a/externals/build/doc/dynwav~.pd b/externals/build/doc/dynwav~.pd new file mode 100644 index 00000000..59f86bdd --- /dev/null +++ b/externals/build/doc/dynwav~.pd @@ -0,0 +1,25 @@ +#N canvas 193 151 450 300 10; +#X text 96 6 dynwav~: dynamic wavetable oscillator; +#X obj 61 98 osc~; +#X floatatom 60 56 5 0 0; +#X obj 60 151 dynwav~; +#X obj 60 214 vol~; +#X floatatom 85 190 5 0 0; +#X obj 50 256 dac~; +#X obj 172 105 phasor~; +#X floatatom 172 80 5 0 0; +#X obj 107 54 bang~; +#X text 171 22 (scanned synthesis); +#X text 165 143 left inlet's dsp block = wavetable; +#X msg 107 78 0.25; +#X text 242 157 right inlet = phase (0-1); +#X connect 1 0 3 0; +#X connect 2 0 1 0; +#X connect 3 0 4 0; +#X connect 4 0 6 1; +#X connect 4 0 6 0; +#X connect 5 0 4 1; +#X connect 7 0 3 1; +#X connect 8 0 7 0; +#X connect 9 0 12 0; +#X connect 12 0 1 1; diff --git a/externals/build/doc/eadsr~.pd b/externals/build/doc/eadsr~.pd new file mode 100644 index 00000000..220ea546 --- /dev/null +++ b/externals/build/doc/eadsr~.pd @@ -0,0 +1,41 @@ +#N canvas 478 386 580 306 10; +#X obj 89 227 *~; +#X obj 105 40 metro; +#X obj 105 12 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1 +-1; +#X obj 26 203 osc~; +#X floatatom 26 171 5 0 0; +#X floatatom 135 12 5 0 0; +#X floatatom 209 117 5 0 0; +#X floatatom 208 139 5 0 0; +#X obj 77 265 dac~; +#X msg 58 12 stop; +#X msg 26 124 start; +#X msg 71 123 stop; +#X obj 105 77 del; +#X floatatom 159 50 5 0 0; +#X obj 105 197 eadsr~ 0 0; +#X text 191 81 exponential attack/decay/sustain/release envelope; +#X text 265 125 60db attack and decay time; +#X text 265 182 60db attack and decay time; +#X floatatom 209 160 5 0 0; +#X floatatom 209 180 5 0 0; +#X text 264 159 sustain level; +#X connect 0 0 8 0; +#X connect 0 0 8 1; +#X connect 1 0 10 0; +#X connect 1 0 12 0; +#X connect 2 0 1 0; +#X connect 3 0 0 0; +#X connect 4 0 3 0; +#X connect 5 0 1 1; +#X connect 6 0 14 1; +#X connect 7 0 14 2; +#X connect 9 0 1 0; +#X connect 10 0 14 0; +#X connect 11 0 14 0; +#X connect 12 0 11 0; +#X connect 13 0 12 1; +#X connect 14 0 0 1; +#X connect 18 0 14 3; +#X connect 19 0 14 4; diff --git a/externals/build/doc/ead~.pd b/externals/build/doc/ead~.pd new file mode 100644 index 00000000..9d9bc5fa --- /dev/null +++ b/externals/build/doc/ead~.pd @@ -0,0 +1,29 @@ +#N canvas 478 386 459 306 10; +#X obj 105 111 ead~ 0 0; +#X obj 89 179 *~; +#X obj 105 40 metro; +#X obj 105 12 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1 +-1; +#X obj 41 144 osc~; +#X floatatom 41 112 5 0 0; +#X floatatom 135 12 5 0 0; +#X floatatom 130 64 5 0 0; +#X floatatom 156 86 5 0 0; +#X obj 77 217 dac~; +#X text 202 71 60db attack and decay time; +#X obj 70 76 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1 +-1; +#X msg 58 12 stop; +#X text 201 51 exponential attack/decay envelope; +#X connect 0 0 1 1; +#X connect 1 0 9 0; +#X connect 1 0 9 1; +#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 6 0 2 1; +#X connect 7 0 0 1; +#X connect 8 0 0 2; +#X connect 11 0 0 0; +#X connect 12 0 2 0; diff --git a/externals/build/doc/ear~.pd b/externals/build/doc/ear~.pd new file mode 100644 index 00000000..8527a122 --- /dev/null +++ b/externals/build/doc/ear~.pd @@ -0,0 +1,35 @@ +#N canvas 478 386 459 306 10; +#X obj 89 227 *~; +#X obj 105 40 metro; +#X obj 105 12 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1 +-1; +#X obj 41 192 osc~; +#X floatatom 41 160 5 0 0; +#X floatatom 135 12 5 0 0; +#X floatatom 130 112 5 0 0; +#X floatatom 157 134 5 0 0; +#X obj 77 265 dac~; +#X msg 58 12 stop; +#X msg 26 124 start; +#X msg 71 123 stop; +#X obj 105 159 ear~ 0 0; +#X obj 105 77 del; +#X floatatom 159 50 5 0 0; +#X text 201 99 exponential attack/release envelope; +#X text 202 119 60db attack and release time; +#X connect 0 0 8 0; +#X connect 0 0 8 1; +#X connect 1 0 10 0; +#X connect 1 0 13 0; +#X connect 2 0 1 0; +#X connect 3 0 0 0; +#X connect 4 0 3 0; +#X connect 5 0 1 1; +#X connect 6 0 12 1; +#X connect 7 0 12 2; +#X connect 9 0 1 0; +#X connect 10 0 12 0; +#X connect 11 0 12 0; +#X connect 12 0 0 1; +#X connect 13 0 11 0; +#X connect 14 0 13 1; diff --git a/externals/build/doc/fdn~.pd b/externals/build/doc/fdn~.pd new file mode 100644 index 00000000..3903d639 --- /dev/null +++ b/externals/build/doc/fdn~.pd @@ -0,0 +1,61 @@ +#N canvas 310 312 826 610 10; +#X obj 146 529 vols~; +#X floatatom 203 509 5 0 0; +#X obj 143 562 dac~; +#X obj 128 131 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X msg 10 415 print; +#X floatatom 216 431 5 0 0; +#X floatatom 267 432 5 0 0; +#X obj 54 144 noise~; +#X obj 94 190 *~; +#X floatatom 203 111 5 0 0; +#X obj 146 157 ead~; +#X msg 360 119 lines 501 752 5003 7504 105 206 307 408; +#X floatatom 152 110 5 0 0; +#X msg 361 248 linear 32 100 105; +#X msg 360 271 linear 32 1000 1005; +#X msg 12 465 reset; +#X obj 142 463 fdn~ 64 40000; +#X msg 358 327 exponential 32 10 5000; +#X msg 360 292 linear 32 100 2015; +#X msg 361 224 linear 8 75 100; +#X msg 361 201 linear 32 50 2175; +#X msg 360 374 exponential 8 50 175; +#X text 186 20 fdn~ a feedback delay network; +#X text 316 468 creation arguments: <max nb delaylines> <total delay +memory in ms>; +#X text 3 396 print delay lengths; +#X text 2 448 reset state; +#X text 316 512 nb delay lines is always a multiple of 4; +#X text 358 96 specify delay line lengths manually; +#X text 359 152 specify a linear/exponential delay length range; +#X text 361 170 <type> <nb lines> <min length> <max length>; +#X text 359 430 inlets: low/high frequency reverb time (60dB time) +; +#X msg 358 351 exponential 64 1000 10; +#X connect 0 0 2 0; +#X connect 0 1 2 1; +#X connect 1 0 0 2; +#X connect 3 0 10 0; +#X connect 4 0 16 0; +#X connect 5 0 16 1; +#X connect 6 0 16 2; +#X connect 7 0 8 0; +#X connect 8 0 16 0; +#X connect 9 0 10 2; +#X connect 10 0 8 1; +#X connect 10 0 16 0; +#X connect 11 0 16 0; +#X connect 12 0 10 1; +#X connect 13 0 16 0; +#X connect 14 0 16 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X connect 16 1 0 1; +#X connect 17 0 16 0; +#X connect 18 0 16 0; +#X connect 19 0 16 0; +#X connect 20 0 16 0; +#X connect 21 0 16 0; +#X connect 31 0 16 0; diff --git a/externals/build/doc/ffpoly.pd b/externals/build/doc/ffpoly.pd new file mode 100644 index 00000000..7ec8886a --- /dev/null +++ b/externals/build/doc/ffpoly.pd @@ -0,0 +1,35 @@ +#N canvas 372 77 515 425 10; +#X text 85 14 ffpoly - compute a finite field polynomial; +#X msg 103 89 coef 0 \$1; +#X floatatom 103 65 5 0 0; +#X floatatom 181 65 5 0 0; +#X floatatom 257 65 5 0 0; +#X floatatom 334 64 5 0 0; +#X msg 181 89 coef 1 \$1; +#X msg 257 89 coef 2 \$1; +#X msg 334 89 coef 3 \$1; +#X floatatom 38 106 5 0 0; +#X obj 38 350 ffpoly 3 5; +#X text 125 350 creation args: <poly order> <field order>; +#X floatatom 38 384 5 0 0; +#X msg 334 150 order \$1; +#X floatatom 334 125 5 0 0; +#X text 332 174 finite field order; +#X floatatom 335 217 5 0 0; +#X msg 335 242 coefficients \$1; +#X text 271 279 set coefs in packed form; +#X text 203 292 digit representation in base = field order; +#X connect 1 0 10 0; +#X connect 2 0 1 0; +#X connect 3 0 6 0; +#X connect 4 0 7 0; +#X connect 5 0 8 0; +#X connect 6 0 10 0; +#X connect 7 0 10 0; +#X connect 8 0 10 0; +#X connect 9 0 10 0; +#X connect 10 0 12 0; +#X connect 13 0 10 0; +#X connect 14 0 13 0; +#X connect 16 0 17 0; +#X connect 17 0 10 0; diff --git a/externals/build/doc/filterortho~.pd b/externals/build/doc/filterortho~.pd new file mode 100644 index 00000000..e120101d --- /dev/null +++ b/externals/build/doc/filterortho~.pd @@ -0,0 +1,58 @@ +#N canvas 634 361 578 534 10; +#X obj 146 452 dac~; +#X floatatom 255 83 7 0 0; +#X floatatom 194 83 7 0 0; +#X obj 158 405 filterortho~; +#X obj 194 123 t b f; +#X floatatom 29 31 5 0 0; +#X obj 13 9 noise~; +#X floatatom 133 83 7 0 0; +#X obj 150 123 t b f; +#X obj 13 52 *~; +#X text 333 9 orthogonal biquad object; +#X obj 157 330 pack s 0 0 0; +#X obj 237 122 t b f; +#X text 137 61 freq; +#X text 213 61 Q; +#X msg 335 126 setEQ; +#X msg 335 150 setLP; +#X msg 158 363 \$1 \$2 \$3 \$4; +#X msg 336 175 setHP; +#X msg 336 201 setBP; +#X msg 336 225 setBR; +#X msg 336 251 setHS; +#X msg 337 275 setLS; +#X msg 338 299 setAP; +#X text 391 127 parametric equalizer; +#X text 390 150 lowpass; +#X text 391 175 highpass; +#X text 391 201 bandpass; +#X text 391 224 bandreject; +#X text 390 252 highshelf; +#X text 390 277 lowshelf; +#X text 391 300 allpass; +#X text 265 62 gain (only for EQ \, LS \, HS); +#X connect 1 0 12 0; +#X connect 2 0 4 0; +#X connect 3 0 0 0; +#X connect 3 0 0 1; +#X connect 4 0 11 0; +#X connect 4 1 11 2; +#X connect 5 0 9 1; +#X connect 6 0 9 0; +#X connect 7 0 8 0; +#X connect 8 0 11 0; +#X connect 8 1 11 1; +#X connect 9 0 3 0; +#X connect 11 0 17 0; +#X connect 12 0 11 0; +#X connect 12 1 11 3; +#X connect 15 0 11 0; +#X connect 16 0 11 0; +#X connect 17 0 3 0; +#X connect 18 0 11 0; +#X connect 19 0 11 0; +#X connect 20 0 11 0; +#X connect 21 0 11 0; +#X connect 22 0 11 0; +#X connect 23 0 11 0; diff --git a/externals/build/doc/fwarp.pd b/externals/build/doc/fwarp.pd new file mode 100644 index 00000000..d43a5a3a --- /dev/null +++ b/externals/build/doc/fwarp.pd @@ -0,0 +1,37 @@ +#N canvas 403 309 522 388 10; +#X obj 18 85 fwarp; +#X floatatom 18 53 5 0 0; +#X floatatom 18 121 7 0 0; +#X text 112 49 fwarp - warps a frequency using the formula; +#X obj 173 261 xfm~ 0 0 0 0; +#X obj 173 218 fwarp; +#X floatatom 173 186 5 0 0; +#X obj 117 260 osc~; +#X obj 152 324 vol~; +#X obj 152 350 dac~; +#X floatatom 212 298 5 0 0; +#X obj 351 263 xfm~ 0 0 0 0; +#X floatatom 351 188 5 0 0; +#X obj 295 262 osc~; +#X obj 330 326 vol~; +#X obj 330 352 dac~; +#X floatatom 390 300 5 0 0; +#X text 132 126 example: xfm~ uses warped frequencies; +#X text 112 67 out = tan(2pi*in/sr) * (sr/2pi); +#X connect 0 0 2 0; +#X connect 1 0 0 0; +#X connect 4 0 8 0; +#X connect 5 0 4 0; +#X connect 6 0 5 0; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 8 0 9 0; +#X connect 8 0 9 1; +#X connect 10 0 8 1; +#X connect 11 0 14 0; +#X connect 12 0 13 0; +#X connect 12 0 11 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 14 0 15 1; +#X connect 16 0 14 1; diff --git a/externals/build/doc/junction~.pd b/externals/build/doc/junction~.pd new file mode 100644 index 00000000..591e4bce --- /dev/null +++ b/externals/build/doc/junction~.pd @@ -0,0 +1,56 @@ +#N canvas 420 323 450 300 10; +#X obj 181 138 junction~ 4; +#X obj 253 167 delwrite~ del1 1000; +#X obj 123 51 vd~ del1; +#X obj 183 51 vd~ del2; +#X obj 244 51 vd~ del3; +#X obj 304 51 vd~ del4; +#X obj 123 30 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 32 10 +-262144 -1 -1 115 256; +#X obj 183 30 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 32 10 +-262144 -1 -1 87 256; +#X obj 245 31 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 32 10 +-262144 -1 -1 270 256; +#X obj 305 31 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 32 10 +-262144 -1 -1 144 256; +#X obj 63 262 dac~; +#X obj 13 121 ead~; +#X obj 30 97 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 32 10 +-262144 -1 -1 37 256; +#X obj 90 97 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 32 10 +-262144 -1 -1 77 256; +#X obj 4 97 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1 +-1; +#X obj 229 189 delwrite~ del2 1000; +#X obj 205 210 delwrite~ del3 1000; +#X obj 181 232 delwrite~ del4 1000; +#X msg 313 111 random \$1; +#X obj 314 85 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 32 10 +-262144 -1 -1 74 256; +#X text 61 5 junction~: a circular lossless signal junction; +#X obj 58 238 vols~; +#X obj 105 221 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 32 +10 -262144 -1 -1 77 256; +#X connect 0 0 17 0; +#X connect 0 0 21 0; +#X connect 0 1 16 0; +#X connect 0 1 21 1; +#X connect 0 2 15 0; +#X connect 0 3 1 0; +#X connect 2 0 0 0; +#X connect 3 0 0 1; +#X connect 4 0 0 2; +#X connect 5 0 0 3; +#X connect 6 0 2 0; +#X connect 7 0 3 0; +#X connect 8 0 4 0; +#X connect 9 0 5 0; +#X connect 11 0 0 0; +#X connect 12 0 11 1; +#X connect 13 0 11 2; +#X connect 14 0 11 0; +#X connect 18 0 0 0; +#X connect 19 0 18 0; +#X connect 21 0 10 0; +#X connect 21 1 10 1; +#X connect 22 0 21 2; diff --git a/externals/build/doc/lattice~.pd b/externals/build/doc/lattice~.pd new file mode 100644 index 00000000..45454708 --- /dev/null +++ b/externals/build/doc/lattice~.pd @@ -0,0 +1,63 @@ +#N canvas 338 162 527 557 10; +#X obj 57 -77 vsl 15 250 -1 1 0 1 empty empty empty 20 8 32 8 -262144 +-1 -1 12100 1; +#X msg 57 223 rc 0 \$1; +#X obj 88 -78 vsl 15 250 -1 1 0 1 empty empty empty 20 8 32 8 -262144 +-1 -1 7150 1; +#X obj 119 -77 vsl 15 250 -1 1 0 1 empty empty empty 20 8 32 8 -262144 +-1 -1 5150 1; +#X obj 149 -77 vsl 15 250 -1 1 0 1 empty empty empty 20 8 32 8 -262144 +-1 -1 8100 1; +#X obj 179 -77 vsl 15 250 -1 1 0 1 empty empty empty 20 8 32 8 -262144 +-1 -1 11850 1; +#X obj 210 -78 vsl 15 250 -1 1 0 1 empty empty empty 20 8 32 8 -262144 +-1 -1 15850 1; +#X obj 241 -78 vsl 15 250 -1 1 0 1 empty empty empty 20 8 32 8 -262144 +-1 -1 17550 1; +#X obj 271 -77 vsl 15 250 -1 1 0 1 empty empty empty 20 8 32 8 -262144 +-1 -1 15050 1; +#X msg 86 199 rc 1 \$1; +#X msg 118 224 rc 2 \$1; +#X msg 147 200 rc 3 \$1; +#X msg 179 223 rc 4 \$1; +#X msg 208 199 rc 5 \$1; +#X msg 240 224 rc 6 \$1; +#X msg 269 200 rc 7 \$1; +#X floatatom 154 -125 5 -1 1; +#X obj 64 302 lattice~ 8; +#X obj 6 254 noise~; +#X obj 63 363 vol~; +#X obj 63 397 dac~; +#X floatatom 85 333 5 0 0; +#X text 159 298 lattice~ a lattice filter; +#X text 139 333 [rc <index> <val>] sets reflection coefficient; +#X text 159 311 creation argument sets order; +#X connect 0 0 1 0; +#X connect 1 0 17 0; +#X connect 2 0 9 0; +#X connect 3 0 10 0; +#X connect 4 0 11 0; +#X connect 5 0 12 0; +#X connect 6 0 13 0; +#X connect 7 0 14 0; +#X connect 8 0 15 0; +#X connect 9 0 17 0; +#X connect 10 0 17 0; +#X connect 11 0 17 0; +#X connect 12 0 17 0; +#X connect 13 0 17 0; +#X connect 14 0 17 0; +#X connect 15 0 17 0; +#X connect 16 0 0 0; +#X connect 16 0 2 0; +#X connect 16 0 3 0; +#X connect 16 0 4 0; +#X connect 16 0 5 0; +#X connect 16 0 6 0; +#X connect 16 0 7 0; +#X connect 16 0 8 0; +#X connect 17 0 19 0; +#X connect 18 0 17 0; +#X connect 19 0 20 1; +#X connect 19 0 20 0; +#X connect 21 0 19 1; diff --git a/externals/build/doc/matrix~.pd b/externals/build/doc/matrix~.pd new file mode 100644 index 00000000..5a6e9d56 --- /dev/null +++ b/externals/build/doc/matrix~.pd @@ -0,0 +1,10 @@ +#N canvas 523 376 560 300 10; +#X obj 30 165 matrix~; +#X text 29 23 matrix multiplies a signal block with an arbitrary matrix +; +#X msg 69 127 load matrix.bin; +#X text 27 39 added for completeness. mainly intended for spectral +transfos; +#X text 26 73 the file format is binary floating point \, column encoded. +; +#X connect 2 0 0 0; diff --git a/externals/build/doc/permut~.pd b/externals/build/doc/permut~.pd new file mode 100644 index 00000000..c8aa822c --- /dev/null +++ b/externals/build/doc/permut~.pd @@ -0,0 +1,19 @@ +#N canvas 523 376 560 300 10; +#X text 29 10 permut~ performs a random permutation on a signal block +; +#X text 30 27 mainly intended for shuffling spectral data (dynwav) +; +#X obj 73 127 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 -1 +-1; +#X msg 96 126 random; +#X text 154 124 bang or random create a new random permutation; +#X obj 30 91 osc~; +#X obj 30 166 permut~; +#X obj 29 210 dac~; +#X floatatom 30 61 5 0 0; +#X connect 2 0 6 0; +#X connect 3 0 6 0; +#X connect 5 0 6 0; +#X connect 6 0 7 0; +#X connect 6 0 7 1; +#X connect 8 0 5 0; diff --git a/externals/build/doc/qmult~.pd b/externals/build/doc/qmult~.pd new file mode 100644 index 00000000..674df3ed --- /dev/null +++ b/externals/build/doc/qmult~.pd @@ -0,0 +1,63 @@ +#N canvas 195 283 786 398 10; +#X obj 111 145 qnorm~; +#X obj 38 71 osc~ 30; +#X obj 101 71 osc~ 40; +#X obj 163 70 osc~ 50; +#X obj 229 71 osc~ 60; +#X obj 143 319 dac~; +#X obj 123 244 vol~; +#X obj 163 244 vol~; +#X floatatom 230 230 5 0 0; +#X floatatom 58 36 5 0 0; +#X floatatom 107 36 5 0 0; +#X floatatom 159 36 5 0 0; +#X floatatom 208 36 5 0 0; +#X obj 167 282 hip~ 10; +#X obj 103 281 hip~ 10; +#X text 402 190 qmult multiplies 2 quaternion signals; +#X floatatom 347 35 5 0 0; +#X floatatom 396 35 5 0 0; +#X floatatom 448 35 5 0 0; +#X floatatom 497 35 5 0 0; +#X obj 327 70 osc~ 70; +#X obj 390 70 osc~ 80; +#X obj 452 69 osc~ 90; +#X obj 518 70 osc~ 100; +#X obj 410 136 qnorm~; +#X obj 106 195 qmult~ 0 0 0 0 0; +#X text 410 208 "quaternion ring modulation"; +#X text 403 245 the inlets are in 1 x real 3 x imag form; +#X connect 0 0 25 0; +#X connect 0 1 25 1; +#X connect 0 2 25 2; +#X connect 0 3 25 3; +#X connect 1 0 0 0; +#X connect 2 0 0 1; +#X connect 3 0 0 2; +#X connect 4 0 0 3; +#X connect 6 0 14 0; +#X connect 7 0 13 0; +#X connect 8 0 7 1; +#X connect 8 0 6 1; +#X connect 9 0 1 0; +#X connect 10 0 2 0; +#X connect 11 0 3 0; +#X connect 12 0 4 0; +#X connect 13 0 5 1; +#X connect 14 0 5 0; +#X connect 16 0 20 0; +#X connect 17 0 21 0; +#X connect 18 0 22 0; +#X connect 19 0 23 0; +#X connect 20 0 24 0; +#X connect 21 0 24 1; +#X connect 22 0 24 2; +#X connect 23 0 24 3; +#X connect 24 0 25 4; +#X connect 24 1 25 5; +#X connect 24 2 25 6; +#X connect 24 3 25 7; +#X connect 25 0 6 0; +#X connect 25 1 6 0; +#X connect 25 2 7 0; +#X connect 25 3 7 0; diff --git a/externals/build/doc/qnorm~.pd b/externals/build/doc/qnorm~.pd new file mode 100644 index 00000000..3f6a8d04 --- /dev/null +++ b/externals/build/doc/qnorm~.pd @@ -0,0 +1,35 @@ +#N canvas 334 368 513 350 10; +#X obj 119 137 qnorm~; +#X obj 96 68 osc~ 30; +#X obj 159 68 osc~ 40; +#X obj 221 67 osc~ 50; +#X obj 287 68 osc~ 60; +#X obj 131 265 dac~; +#X obj 111 190 vol~; +#X obj 151 190 vol~; +#X floatatom 185 154 5 0 0; +#X floatatom 116 33 5 0 0; +#X floatatom 165 33 5 0 0; +#X floatatom 217 33 5 0 0; +#X floatatom 266 33 5 0 0; +#X obj 155 228 hip~ 10; +#X obj 91 227 hip~ 10; +#X text 45 -2 qnorm normalizes a quaternion signal to unit norm; +#X connect 0 0 6 0; +#X connect 0 1 6 0; +#X connect 0 2 7 0; +#X connect 0 3 7 0; +#X connect 1 0 0 0; +#X connect 2 0 0 1; +#X connect 3 0 0 2; +#X connect 4 0 0 3; +#X connect 6 0 14 0; +#X connect 7 0 13 0; +#X connect 8 0 7 1; +#X connect 8 0 6 1; +#X connect 9 0 1 0; +#X connect 10 0 2 0; +#X connect 11 0 3 0; +#X connect 12 0 4 0; +#X connect 13 0 5 1; +#X connect 14 0 5 0; diff --git a/externals/build/doc/ratio.pd b/externals/build/doc/ratio.pd new file mode 100644 index 00000000..97500582 --- /dev/null +++ b/externals/build/doc/ratio.pd @@ -0,0 +1,18 @@ +#N canvas 328 388 450 300 10; +#X obj 75 99 ratio; +#X obj 103 192 osc~; +#X floatatom 131 122 5 0 0; +#X obj 103 150 *; +#X obj 103 223 dac~; +#X floatatom 75 51 5 0 0; +#X floatatom 35 135 5 0 0; +#X text 189 32 ratio is an octave shifter.; +#X text 188 46 output is between 1 and 2; +#X text 189 62 it computes 2^(log2(x)-int(log2(x))); +#X connect 0 0 3 0; +#X connect 0 0 6 0; +#X connect 1 0 4 0; +#X connect 1 0 4 1; +#X connect 2 0 3 1; +#X connect 3 0 1 0; +#X connect 5 0 0 0; diff --git a/externals/build/doc/tabreadmix~.pd b/externals/build/doc/tabreadmix~.pd new file mode 100644 index 00000000..aad25abd --- /dev/null +++ b/externals/build/doc/tabreadmix~.pd @@ -0,0 +1,45 @@ +#N canvas 466 143 551 422 10; +#X floatatom 199 254 5 0 0; +#X obj 48 315 dac~; +#X floatatom 38 40 5 0 0; +#X text 135 7 tabreadmix~ an overlap add tabread clone; +#X obj 288 362 soundfiler; +#X text 203 236 right inlet: window hop size; +#X text 249 247 (window size = 2x hop size); +#X obj 38 77 phasor~; +#X obj 38 124 *~; +#X text 136 40 usage analogous to tabread~; +#X text 136 58 only sample adressing is modulo length; +#X obj 288 311 openpanel; +#X obj 288 291 bng 15 250 50 0 empty empty empty 0 -6 32 8 -262144 +-1 -1; +#X msg 171 97 bang; +#X text 219 97 reset windowing; +#X msg 171 150 pitch \$1; +#X floatatom 171 132 5 0 0; +#X text 245 151 set window hop size corresponding to pitch; +#X floatatom 172 178 5 0 0; +#X msg 172 196 chunks \$1; +#X text 246 196 set hop size to 1/xth of length; +#X obj 374 304 table sample123; +#X msg 288 338 read -resize \$1 sample123; +#X obj 288 386 s length; +#X obj 54 100 r length; +#X obj 57 275 tabreadmix~ sample123; +#X text 136 24 simple (sample rate synchronous) playback; +#X connect 0 0 25 1; +#X connect 2 0 7 0; +#X connect 4 0 23 0; +#X connect 7 0 8 0; +#X connect 8 0 25 0; +#X connect 11 0 22 0; +#X connect 12 0 11 0; +#X connect 13 0 25 0; +#X connect 15 0 25 0; +#X connect 16 0 15 0; +#X connect 18 0 19 0; +#X connect 19 0 25 0; +#X connect 22 0 4 0; +#X connect 24 0 8 1; +#X connect 25 0 1 0; +#X connect 25 0 1 1; diff --git a/externals/build/doc/xfm~.pd b/externals/build/doc/xfm~.pd new file mode 100644 index 00000000..6b59329e --- /dev/null +++ b/externals/build/doc/xfm~.pd @@ -0,0 +1,106 @@ +#N canvas 182 174 656 604 10; +#X text 298 24 xfm~ cross frequency modulation; +#X msg 180 308 reset; +#X floatatom 231 255 5 0 0; +#X floatatom 282 255 5 0 0; +#X floatatom 332 255 5 0 0; +#X floatatom 382 255 5 0 0; +#X obj 287 514 dac~; +#X obj 231 282 lop~ 1; +#X obj 282 282 lop~ 1; +#X obj 332 282 lop~ 1; +#X obj 382 282 lop~ 1; +#X floatatom 444 268 5 0 0; +#X text 228 232 freq1; +#X text 279 232 freq2; +#X text 337 233 fb1; +#X text 381 234 fb2; +#X text 297 43 freq_osc1 = freq1 + wave_out2*fb1; +#X text 297 58 freq_osc2 = freq2 + wave_out1*fb2; +#X obj 275 99 hsl 300 15 1 20000 1 1 empty empty empty -2 -6 0 8 -262144 +-1 -1 15200 1; +#X obj 275 121 hsl 300 15 1 20000 1 1 empty empty empty -2 -6 0 8 -262144 +-1 -1 14400 1; +#X obj 276 146 hsl 300 15 1 20000 1 1 empty empty empty -2 -6 0 8 -262144 +-1 -1 18938 1; +#X obj 276 171 hsl 300 15 1 20000 1 1 empty empty empty -2 -6 0 8 -262144 +-1 -1 21000 1; +#X floatatom 487 377 5 0 0; +#X floatatom 534 375 5 0 0; +#X obj 462 348 metro; +#X floatatom 534 335 5 0 0; +#X obj 463 324 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X msg 534 306 500; +#X msg 565 305 125; +#X msg 444 241 0.1; +#X msg 495 306 1000; +#X msg 150 223 type 0; +#X msg 151 263 type 1; +#X text 42 213 square phasor; +#X text 45 158 algo type; +#X text 37 257 circular phasor; +#X text 7 371 remark: all frequencies are warped; +#X text 8 388 (f_real = arctan(2pi*f_in)/2pi); +#X obj 288 485 vols~; +#X floatatom 352 453 5 0 0; +#X text 7 416 for frequencies under 1000Hz; +#X text 8 430 this effect is minimal; +#X text 9 465 use the fwarp to convert from; +#X text 9 478 real to warped; +#X text 9 505 the square phasor type is warped too; +#X text 9 520 but not in such a nice way as the; +#X text 9 534 circular phasor; +#X text 36 229 (chaotic 4DOF); +#X text 5 272 (quasiperiodic 2DOF); +#X obj 277 325 xfm~; +#X obj 462 411 ead~ 0 0; +#X obj 442 517 dac~; +#X obj 435 451 *~; +#X obj 472 451 *~; +#X obj 443 488 vols~; +#X floatatom 507 456 5 0 0; +#X text 2 173 (can be set by creation argument); +#X connect 1 0 49 0; +#X connect 2 0 7 0; +#X connect 3 0 8 0; +#X connect 4 0 9 0; +#X connect 5 0 10 0; +#X connect 7 0 49 0; +#X connect 8 0 49 1; +#X connect 9 0 49 2; +#X connect 10 0 49 3; +#X connect 11 0 10 1; +#X connect 11 0 9 1; +#X connect 11 0 7 1; +#X connect 11 0 8 1; +#X connect 18 0 2 0; +#X connect 19 0 3 0; +#X connect 20 0 4 0; +#X connect 21 0 5 0; +#X connect 22 0 50 1; +#X connect 23 0 50 2; +#X connect 24 0 50 0; +#X connect 25 0 24 1; +#X connect 25 0 23 0; +#X connect 26 0 24 0; +#X connect 27 0 25 0; +#X connect 28 0 25 0; +#X connect 29 0 11 0; +#X connect 30 0 25 0; +#X connect 31 0 49 0; +#X connect 32 0 49 0; +#X connect 38 0 6 0; +#X connect 38 1 6 1; +#X connect 39 0 38 2; +#X connect 49 0 52 0; +#X connect 49 0 38 0; +#X connect 49 1 53 0; +#X connect 49 1 38 1; +#X connect 50 0 52 1; +#X connect 50 0 53 1; +#X connect 52 0 54 0; +#X connect 53 0 54 1; +#X connect 54 0 51 0; +#X connect 54 1 51 1; +#X connect 55 0 54 2; |