From 3faf17f7b713905f582def227df90dac15f3468d Mon Sep 17 00:00:00 2001 From: "N.N." Date: Tue, 10 Jul 2007 07:47:46 +0000 Subject: This commit was generated by cvs2svn to compensate for changes in r7969, which included commits to RCS files with non-trunk default branches. svn path=/trunk/abstractions/s-abstractions/; revision=7970 --- blosc/bandlimited_oscillators.pd | 10 ++ blosc/blsaw~-help.pd | 78 +++++++++ blosc/blsaw~.pd | 297 ++++++++++++++++++++++++++++++++ blosc/blsquare~-help.pd | 80 +++++++++ blosc/blsquare~.pd | 342 +++++++++++++++++++++++++++++++++++++ blosc/bltriangle~-help.pd | 80 +++++++++ blosc/bltriangle~.pd | 357 +++++++++++++++++++++++++++++++++++++++ 7 files changed, 1244 insertions(+) create mode 100644 blosc/bandlimited_oscillators.pd create mode 100644 blosc/blsaw~-help.pd create mode 100644 blosc/blsaw~.pd create mode 100644 blosc/blsquare~-help.pd create mode 100644 blosc/blsquare~.pd create mode 100644 blosc/bltriangle~-help.pd create mode 100644 blosc/bltriangle~.pd (limited to 'blosc') diff --git a/blosc/bandlimited_oscillators.pd b/blosc/bandlimited_oscillators.pd new file mode 100644 index 0000000..a039e94 --- /dev/null +++ b/blosc/bandlimited_oscillators.pd @@ -0,0 +1,10 @@ +#N canvas 501 290 343 157 10; +#N canvas 690 174 154 104 abslist 0; +#X msg 19 11 blsaw~; +#X msg 20 38 blsquare~; +#X msg 20 65 bltriangle~; +#X restore 12 12 pd abslist; +#X msg 12 37 version 0.2.0; +#X text 13 64 bandlimited oscillators; +#X text 13 84 copyright by roman haefeli; +#X text 14 106 published under the gnu public license; diff --git a/blosc/blsaw~-help.pd b/blosc/blsaw~-help.pd new file mode 100644 index 0000000..c78799d --- /dev/null +++ b/blosc/blsaw~-help.pd @@ -0,0 +1,78 @@ +#N canvas 285 15 647 568 10; +#X obj 31 224 *~; +#X obj 32 253 dac~; +#X obj 111 243 pow 2; +#X obj 114 218 hsl 128 15 0 1 0 0 empty empty volume -2 -8 0 10 -262144 +-1 -1 3100 1; +#X obj 111 284 line~; +#X obj 111 263 pack f 20; +#X obj 283 212 cnv 15 350 130 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X text 290 223 synopsis:; +#X text 289 278 inlet1: signal (frequency); +#X text 289 298 inlet2: float (set phase); +#X obj 184 354 cnv 15 450 120 empty empty empty 20 12 0 14 -241291 +-66577 0; +#X floatatom 262 408 7 0 0 0 - - -; +#X text 315 410 Hz; +#X text 194 408 border @; +#X text 14 519 copyright by Roman Haefeli; +#X text 14 540 published under the GNU Public License; +#X obj 244 484 cnv 15 390 25 empty empty empty 20 12 0 14 -258699 -66577 +0; +#X text 252 490 due to bandlimitation peaks above/below +/-1 may occur +; +#X obj 34 61 hsl 128 15 20 17000 1 0 empty empty frequency -2 -8 0 +10 -262144 -1 -1 7544 1; +#X obj 31 83 pack f 100; +#X obj 31 104 line~; +#X msg 18 493 version 0.2.0; +#X text 220 83 if the instance containing the tables is deleted \, +the other instances won't work anymore. reload the patch then.; +#X text 261 361 try different values for :; +#N canvas 573 67 190 308 compute_bandlimited_range 0; +#X msg 21 34 get_num_of_tables; +#X obj 21 97 route num_of_tables; +#X obj 21 12 loadbang; +#X obj 21 128 t b f; +#X obj 21 152 samplerate~; +#X obj 21 174 / 2; +#X obj 21 203 /; +#X obj 21 229 outlet; +#X obj 21 56 s BLSAW; +#X obj 21 76 r BLSAW; +#X obj 51 177 + 1; +#X connect 0 0 8 0; +#X connect 1 0 3 0; +#X connect 2 0 0 0; +#X connect 3 0 4 0; +#X connect 3 1 10 0; +#X connect 4 0 5 0; +#X connect 5 0 6 0; +#X connect 6 0 7 0; +#X connect 9 0 1 0; +#X connect 10 0 6 1; +#X restore 262 379 pd compute_bandlimited_range; +#X text 260 431 if frequency above border -> bandlimited saw; +#X text 260 447 if frequency below border -> raw saw; +#X text 290 250 [blsaw~ ]; +#X text 290 319 outlet: signal (bandlimited saw at given f); +#X text 219 28 if [blsaw~] is instantiated more than once \, only the +first instance creates the tables. if the argument value differs \, +the biggest is taken.; +#X text 221 129 the number of tables is at the same time the number +of harmonics of the table with the highest number of harmonics. this +value defines also the frequency \, below which [blsaw~] switches to +a raw saw.; +#X obj 32 151 blsaw~ 40; +#X connect 0 0 1 0; +#X connect 0 0 1 1; +#X connect 2 0 5 0; +#X connect 3 0 2 0; +#X connect 4 0 0 1; +#X connect 5 0 4 0; +#X connect 18 0 19 0; +#X connect 19 0 20 0; +#X connect 20 0 31 0; +#X connect 24 0 11 0; +#X connect 31 0 0 0; diff --git a/blosc/blsaw~.pd b/blosc/blsaw~.pd new file mode 100644 index 0000000..8969f73 --- /dev/null +++ b/blosc/blsaw~.pd @@ -0,0 +1,297 @@ +#N canvas 62 77 344 334 10; +#X text 120 257 copyright by Roman Haefeli; +#X text 36 284 Published under the GNU Public License; +#N canvas 0 0 646 649 oscillator~ 0; +#N canvas 314 100 498 265 number_of_harmonics_allowed 0; +#X obj 135 68 / 2; +#X obj 15 151 /; +#X obj 135 44 samplerate~; +#X obj 15 98 t b f; +#X text 241 49 sr / 2 = nyquist frequency; +#X obj 15 229 outlet; +#X obj 14 18 inlet~; +#X obj 15 121 f; +#X obj 135 21 loadbang; +#X text 104 209 harmonics never should exceed the nyquist frequency +; +#X obj 15 49 snapshot~; +#X obj 78 21 bang~; +#X obj 15 72 change; +#X obj 15 177 int; +#X obj 15 200 change; +#X connect 0 0 7 1; +#X connect 1 0 13 0; +#X connect 2 0 0 0; +#X connect 3 0 7 0; +#X connect 3 1 1 1; +#X connect 6 0 10 0; +#X connect 7 0 1 0; +#X connect 8 0 2 0; +#X connect 10 0 12 0; +#X connect 11 0 10 0; +#X connect 12 0 3 0; +#X connect 13 0 14 0; +#X connect 14 0 5 0; +#X restore 161 113 pd number_of_harmonics_allowed; +#X obj 40 33 inlet~; +#X obj 39 456 outlet~; +#X obj 287 374 snapshot~; +#X obj 206 273 == 0; +#X obj 206 377 f; +#X obj 206 356 sel 1; +#X obj 246 320 change; +#X obj 287 348 sel 1; +#X text 33 494 number of harmononics; +#X text 32 512 without exceeding nyquist; +#X text 31 531 at given frequeny:; +#X text 251 520 best method:; +#X obj 559 178 inlet; +#X text 565 150 phase; +#X text 340 346 sync phase \, when switching dsp on; +#X msg 408 69 get_num_of_tables; +#X obj 408 132 route num_of_tables; +#X obj 408 23 loadbang; +#X obj 40 272 phasor~; +#X text 196 81 get the number of tables ->; +#X text 227 496 |; +#X text 227 505 |; +#X text 227 514 |; +#X text 227 523 |; +#X text 227 533 |; +#X text 227 542 |; +#X text 227 551 |; +#X text 227 560 |; +#X text 227 567 |; +#X text 227 576 |; +#X text 227 585 |; +#X text 227 594 |; +#X text 227 604 |; +#X text 25 541 __________________________________________________; +#X text 25 575 __________________________________________________; +#X obj 161 223 >; +#X obj 408 91 s BLSAW; +#X obj 408 111 r BLSAW; +#X text 246 563 bandlimited saw; +#X text 245 595 raw saw; +#X obj 161 143 t f f; +#X text 199 221 switch to raw saw \, when number of allowed harmonics +exceeds num_of_tables; +#X text 32 565 0 < n <= num_of_tables; +#X text 40 596 n > num_of_tables; +#N canvas 0 0 448 226 bandlimited_saw 0; +#X obj 16 31 inlet~; +#X obj 71 33 inlet; +#X obj 261 34 inlet; +#X obj 17 192 outlet~; +#X msg 71 96 set \$1; +#X obj 261 124 switch~; +#X obj 347 36 inlet; +#X text 69 14 choose table; +#X text 346 17 set phase; +#X text 256 14 switch dsp; +#X obj 71 71 makefilename BLSAW%d; +#X obj 17 134 tabosc4~; +#X connect 0 0 11 0; +#X connect 1 0 10 0; +#X connect 2 0 5 0; +#X connect 4 0 11 0; +#X connect 6 0 11 1; +#X connect 10 0 4 0; +#X connect 11 0 3 0; +#X restore 166 405 pd bandlimited_saw; +#N canvas 438 301 207 227 raw_saw 0; +#X obj 6 16 inlet~; +#X obj 7 156 outlet~; +#X obj 118 21 inlet; +#X obj 118 46 switch~; +#X obj 7 66 *~ -2; +#X obj 7 92 +~ 1; +#X connect 0 0 4 0; +#X connect 2 0 3 0; +#X connect 4 0 5 0; +#X connect 5 0 1 0; +#X restore 40 401 pd raw_saw; +#X obj 408 46 del 0; +#X connect 0 0 41 0; +#X connect 1 0 45 0; +#X connect 1 0 0 0; +#X connect 1 0 19 0; +#X connect 3 0 45 3; +#X connect 4 0 6 0; +#X connect 4 0 7 0; +#X connect 5 0 45 1; +#X connect 6 0 5 0; +#X connect 7 0 8 0; +#X connect 7 0 45 2; +#X connect 8 0 3 0; +#X connect 13 0 45 3; +#X connect 13 0 19 1; +#X connect 16 0 37 0; +#X connect 17 0 36 1; +#X connect 18 0 47 0; +#X connect 19 0 3 0; +#X connect 19 0 46 0; +#X connect 36 0 4 0; +#X connect 36 0 46 1; +#X connect 38 0 17 0; +#X connect 41 0 36 0; +#X connect 41 1 5 1; +#X connect 45 0 2 0; +#X connect 46 0 2 0; +#X connect 47 0 16 0; +#X restore 19 161 pd oscillator~; +#X obj 19 136 inlet~; +#X obj 112 137 inlet; +#X obj 19 185 outlet~; +#N canvas 555 327 605 504 lookup-table-creation 0; +#X obj 15 195 until; +#X obj 15 217 f; +#X obj 50 217 + 1; +#X obj 58 195 1; +#X obj 80 345 pack f s; +#X obj 15 125 t f b b; +#X msg 136 270 clear; +#X obj 15 248 t b f f; +#X obj 15 407 f; +#X obj 15 474 send; +#X msg 80 374 obj 10 \$1 table \$2 515; +#X text 282 374 create the necessary tables; +#X text 238 439 fill each table with the appropriate sinesum \,; +#X text 237 457 respectively the appropriate number of harmonics.; +#X obj 131 318 makefilename BLSAW%d; +#N canvas 535 94 218 342 bandlimited_saw_sinesum 0; +#X obj 43 67 until; +#X obj 21 38 t b f b; +#X obj 84 67 1; +#X obj 43 99 f 1; +#X obj 84 99 + 1; +#X obj 43 194 list prepend; +#X obj 154 195 list; +#X obj 21 233 list; +#X obj 135 129 b; +#X obj 21 278 list trim; +#X obj 21 16 inlet; +#X obj 21 300 outlet; +#X obj 21 256 list prepend sinesum 512; +#X obj 43 143 pow -1; +#X obj 43 167 * 0.63662; +#X text 120 167 = 2 / pi; +#X connect 0 0 3 0; +#X connect 1 0 7 0; +#X connect 1 1 0 0; +#X connect 1 2 2 0; +#X connect 1 2 8 0; +#X connect 2 0 3 1; +#X connect 3 0 4 0; +#X connect 3 0 13 0; +#X connect 4 0 3 1; +#X connect 5 0 6 0; +#X connect 5 0 7 1; +#X connect 6 0 5 1; +#X connect 7 0 12 0; +#X connect 8 0 7 1; +#X connect 8 0 5 1; +#X connect 9 0 11 0; +#X connect 10 0 1 0; +#X connect 12 0 9 0; +#X connect 13 0 14 0; +#X connect 14 0 5 0; +#X restore 15 442 pd bandlimited_saw_sinesum; +#X obj 80 317 * 20; +#X obj 80 396 s pd-\$0-lookup-tables-saw; +#X obj 138 123 r \$0-create_additional_tables; +#X obj 15 28 r \$0-create_tables; +#X obj 15 66 \$1; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 1 0 7 0; +#X connect 2 0 1 1; +#X connect 3 0 1 1; +#X connect 4 0 10 0; +#X connect 5 0 0 0; +#X connect 5 1 3 0; +#X connect 5 2 6 0; +#X connect 6 0 17 0; +#X connect 7 0 8 0; +#X connect 7 1 16 0; +#X connect 7 2 8 1; +#X connect 7 2 14 0; +#X connect 8 0 15 0; +#X connect 10 0 17 0; +#X connect 14 0 4 1; +#X connect 14 0 9 1; +#X connect 15 0 9 0; +#X connect 16 0 4 0; +#X connect 18 0 0 0; +#X connect 19 0 20 0; +#X connect 20 0 5 0; +#X restore 22 66 pd lookup-table-creation; +#N canvas 647 5 291 900 \$0-lookup-tables-saw 0; +#X restore 22 94 pd \$0-lookup-tables-saw; +#X msg 204 226 version 0.2.0; +#N canvas 169 33 537 620 singleton-communication 0; +#X obj 127 22 loadbang; +#X obj 171 100 + 1; +#X obj 16 96 spigot; +#X obj 149 153 == 1; +#X obj 127 47 t b b b; +#X obj 270 225 \$1; +#X obj 127 184 t b b; +#X msg 270 246 newdollar1 \$1; +#X obj 125 396 > \$1; +#X obj 134 419 sel 1; +#X obj 134 441 f; +#X text 189 397 if new is bigger \, use new number_of_tables; +#X obj 134 373 t f f f; +#X obj 178 502 - \$1; +#X obj 178 526 moses 1; +#X obj 222 549 s \$0-create_additional_tables; +#X obj 127 214 f; +#X obj 127 240 sel 1; +#X obj 127 264 s \$0-create_tables; +#X obj 18 348 route get_num_of_tables newdollar1; +#X obj 18 423 \$1; +#X msg 18 461 num_of_tables \$1; +#X obj 171 77 value BLSAW.instance; +#X obj 149 131 value BLSAW.instance; +#X obj 270 267 s BLSAW; +#X obj 16 69 r BLSAW; +#X obj 16 120 s \$0-BLSAW; +#X obj 18 319 r \$0-BLSAW; +#X obj 18 488 s BLSAW; +#X connect 0 0 4 0; +#X connect 1 0 23 0; +#X connect 2 0 26 0; +#X connect 3 0 2 1; +#X connect 3 0 16 1; +#X connect 4 0 6 0; +#X connect 4 1 23 0; +#X connect 4 2 22 0; +#X connect 5 0 7 0; +#X connect 6 0 16 0; +#X connect 6 1 5 0; +#X connect 7 0 24 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 10 0 8 1; +#X connect 10 0 13 1; +#X connect 10 0 20 1; +#X connect 12 0 8 0; +#X connect 12 1 10 1; +#X connect 12 2 13 0; +#X connect 13 0 14 0; +#X connect 14 1 15 0; +#X connect 16 0 17 0; +#X connect 17 0 18 0; +#X connect 19 0 20 0; +#X connect 19 1 12 0; +#X connect 20 0 21 0; +#X connect 21 0 28 0; +#X connect 22 0 1 0; +#X connect 23 0 3 0; +#X connect 25 0 2 0; +#X connect 27 0 19 0; +#X restore 21 36 pd singleton-communication; +#X connect 2 0 5 0; +#X connect 3 0 2 0; +#X connect 4 0 2 1; diff --git a/blosc/blsquare~-help.pd b/blosc/blsquare~-help.pd new file mode 100644 index 0000000..2f0ef28 --- /dev/null +++ b/blosc/blsquare~-help.pd @@ -0,0 +1,80 @@ +#N canvas 257 21 661 564 10; +#X obj 31 224 *~; +#X obj 32 253 dac~; +#X obj 111 243 pow 2; +#X obj 114 218 hsl 128 15 0 1 0 0 empty empty volume -2 -8 0 10 -262144 +-1 -1 200 1; +#X obj 111 284 line~; +#X obj 111 263 pack f 20; +#X obj 283 212 cnv 15 350 130 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X text 290 223 synopsis:; +#X text 289 278 inlet1: signal (frequency); +#X text 289 298 inlet2: float (set phase); +#X text 290 319 outlet: signal (bandlimited square at given f); +#X obj 184 354 cnv 15 450 120 empty empty empty 20 12 0 14 -241291 +-66577 0; +#N canvas 573 67 190 308 compute_bandlimited_range 0; +#X msg 21 34 get_num_of_tables; +#X obj 21 56 s BLSQUARE; +#X obj 21 76 r BLSQUARE; +#X obj 21 97 route num_of_tables; +#X obj 21 12 loadbang; +#X obj 21 128 t b f; +#X obj 21 152 samplerate~; +#X obj 21 174 / 2; +#X obj 51 194 * 2; +#X obj 51 217 + 1; +#X obj 21 238 /; +#X obj 21 264 outlet; +#X connect 0 0 1 0; +#X connect 2 0 3 0; +#X connect 3 0 5 0; +#X connect 4 0 0 0; +#X connect 5 0 6 0; +#X connect 5 1 8 0; +#X connect 6 0 7 0; +#X connect 7 0 10 0; +#X connect 8 0 9 0; +#X connect 9 0 10 1; +#X connect 10 0 11 0; +#X restore 262 383 pd compute_bandlimited_range; +#X floatatom 262 408 7 0 0 0 - - -; +#X text 315 410 Hz; +#X text 260 431 if frequency above border -> bandlimited square; +#X text 260 447 if frequency below border -> raw square; +#X text 194 408 border @; +#X text 14 519 copyright by Roman Haefeli; +#X text 14 540 published under the GNU Public License; +#X obj 244 484 cnv 15 390 25 empty empty empty 20 12 0 14 -258699 -66577 +0; +#X text 252 490 due to bandlimitation peaks above/below +/-1 may occur +; +#X obj 34 61 hsl 128 15 20 17000 1 0 empty empty frequency -2 -8 0 +10 -262144 -1 -1 5613 1; +#X obj 31 83 pack f 100; +#X obj 31 104 line~; +#X obj 32 151 blsquare~ 30; +#X msg 18 493 version 0.2.0; +#X text 290 250 [blsquare~ ]; +#X text 219 28 if [blsquare~] is instantiated more than once \, only +the first instance creates the tables. if the argument value differs +\, the biggest is taken.; +#X text 220 83 if the instance containing the tables is deleted \, +the other instances won't work anymore. reload the patch then.; +#X text 261 361 try different values for :; +#X text 221 129 the number of tables is at the same time the number +of harmonics of the table with the highest number of harmonics. this +value defines also the frequency \, below which [blsquare~] switches +to a raw square.; +#X connect 0 0 1 0; +#X connect 0 0 1 1; +#X connect 2 0 5 0; +#X connect 3 0 2 0; +#X connect 4 0 0 1; +#X connect 5 0 4 0; +#X connect 12 0 13 0; +#X connect 22 0 23 0; +#X connect 23 0 24 0; +#X connect 24 0 25 0; +#X connect 25 0 0 0; diff --git a/blosc/blsquare~.pd b/blosc/blsquare~.pd new file mode 100644 index 0000000..bb9c0d8 --- /dev/null +++ b/blosc/blsquare~.pd @@ -0,0 +1,342 @@ +#N canvas 257 128 333 328 10; +#X text 137 277 copyright by Roman Haefeli; +#X text 53 304 Published under the GNU Public License; +#N canvas 0 0 655 649 oscillator 0; +#N canvas 314 100 514 407 number_of_harmonics_allowed 0; +#X obj 135 68 / 2; +#X obj 15 151 /; +#X obj 15 174 int; +#X obj 135 44 samplerate~; +#X obj 15 241 * 0.5; +#X obj 15 261 int; +#X obj 15 282 * 2; +#X obj 15 221 - 1; +#X obj 15 305 + 1; +#X obj 15 328 change; +#X obj 15 199 change; +#X obj 15 98 t b f; +#X text 241 49 sr / 2 = nyquist frequency; +#X obj 15 353 outlet; +#X obj 14 18 inlet~; +#X obj 15 121 f; +#X obj 135 21 loadbang; +#X text 119 216 harmonics never should exceed the nyquist frequency +; +#X obj 15 49 snapshot~; +#X obj 78 21 bang~; +#X obj 15 72 change; +#X connect 0 0 15 1; +#X connect 1 0 2 0; +#X connect 2 0 10 0; +#X connect 3 0 0 0; +#X connect 4 0 5 0; +#X connect 5 0 6 0; +#X connect 6 0 8 0; +#X connect 7 0 4 0; +#X connect 8 0 9 0; +#X connect 9 0 13 0; +#X connect 10 0 7 0; +#X connect 11 0 15 0; +#X connect 11 1 1 1; +#X connect 14 0 18 0; +#X connect 15 0 1 0; +#X connect 16 0 3 0; +#X connect 18 0 20 0; +#X connect 19 0 18 0; +#X connect 20 0 11 0; +#X restore 150 113 pd number_of_harmonics_allowed; +#N canvas 499 174 190 222 raw_square 0; +#X obj 19 13 inlet~; +#X obj 19 180 outlet~; +#X obj 102 18 inlet; +#X obj 102 43 switch~; +#X obj 19 122 -~; +#X obj 19 48 -~ 0.5; +#X obj 18 76 wrap~; +#X obj 18 99 -~ 0.5; +#X obj 19 148 *~ 2; +#X connect 0 0 5 0; +#X connect 2 0 3 0; +#X connect 4 0 8 0; +#X connect 5 0 6 0; +#X connect 5 0 4 1; +#X connect 6 0 7 0; +#X connect 7 0 4 0; +#X connect 8 0 1 0; +#X restore 29 404 pd raw_square; +#N canvas 0 0 448 226 bandlimited_square 0; +#X obj 16 31 inlet~; +#X obj 71 33 inlet; +#X obj 261 34 inlet; +#X obj 17 192 outlet~; +#X msg 71 96 set \$1; +#X obj 261 124 switch~; +#X obj 347 36 inlet; +#X text 69 14 choose table; +#X text 346 17 set phase; +#X text 256 14 switch dsp; +#X obj 71 71 makefilename BLSQUARE%d; +#X obj 17 134 tabosc4~; +#X connect 0 0 11 0; +#X connect 1 0 10 0; +#X connect 2 0 5 0; +#X connect 4 0 11 0; +#X connect 6 0 11 1; +#X connect 10 0 4 0; +#X connect 11 0 3 0; +#X restore 155 405 pd bandlimited_square; +#X obj 166 192 * 2; +#X obj 297 374 snapshot~; +#X obj 150 143 t f f f; +#X obj 202 273 == 0; +#X obj 202 377 f; +#X obj 202 356 sel 1; +#X obj 249 319 change; +#X obj 297 348 sel 1; +#X obj 548 178 inlet; +#X text 550 151 phase; +#X text 350 346 sync phase \, when switching dsp on; +#X text 188 221 switch to raw square \, when number of allowed harmonics +exceeds num_of_tables*2; +#X msg 397 69 get_num_of_tables; +#X obj 397 91 s BLSQUARE; +#X obj 397 111 r BLSQUARE; +#X obj 397 132 route num_of_tables; +#X obj 397 11 loadbang; +#X obj 29 272 phasor~; +#X text 185 81 get the number of tables ->; +#X obj 150 223 >; +#X obj 30 7 inlet~; +#X obj 28 456 outlet~; +#X text 33 494 number of harmononics; +#X text 32 512 without exceeding nyquist; +#X text 31 531 at given frequeny:; +#X text 251 520 best method:; +#X text 245 595 raw square; +#X text 246 563 bandlimited square; +#X text 227 496 |; +#X text 227 505 |; +#X text 227 514 |; +#X text 227 523 |; +#X text 227 533 |; +#X text 227 542 |; +#X text 227 551 |; +#X text 227 560 |; +#X text 227 567 |; +#X text 227 576 |; +#X text 227 585 |; +#X text 227 594 |; +#X text 227 604 |; +#X text 25 541 __________________________________________________; +#X text 25 575 __________________________________________________; +#X text 40 596 n > num_of_tables*2; +#X text 32 565 0 < n < num_of_tables*2; +#X obj 397 42 del 0; +#X connect 0 0 5 0; +#X connect 1 0 24 0; +#X connect 2 0 24 0; +#X connect 3 0 22 1; +#X connect 4 0 2 3; +#X connect 5 0 22 0; +#X connect 5 1 7 1; +#X connect 6 0 8 0; +#X connect 6 0 9 0; +#X connect 7 0 2 1; +#X connect 8 0 7 0; +#X connect 9 0 10 0; +#X connect 9 0 2 2; +#X connect 10 0 4 0; +#X connect 11 0 2 3; +#X connect 11 0 20 1; +#X connect 15 0 16 0; +#X connect 17 0 18 0; +#X connect 18 0 3 0; +#X connect 19 0 48 0; +#X connect 20 0 1 0; +#X connect 20 0 4 0; +#X connect 22 0 1 1; +#X connect 22 0 6 0; +#X connect 23 0 20 0; +#X connect 23 0 0 0; +#X connect 23 0 2 0; +#X connect 48 0 15 0; +#X restore 20 188 pd oscillator; +#X obj 19 161 inlet~; +#X obj 106 161 inlet; +#X obj 20 214 outlet~; +#X msg 221 246 version 0.2.0; +#N canvas 555 327 605 504 lookup-table-creation 0; +#N canvas 535 94 265 461 bandlimited_square_sinesum 0; +#X obj 43 67 until; +#X obj 21 38 t b f b; +#X obj 84 67 1; +#X obj 43 99 f 1; +#X obj 84 99 + 1; +#X obj 43 125 t f f; +#X obj 43 153 % 2; +#X obj 43 176 sel 0 1; +#X obj 43 203 0; +#X obj 69 203 f; +#X obj 69 227 t b f; +#X obj 69 249 pack 1 f; +#X obj 69 274 /; +#X obj 43 334 list prepend; +#X obj 142 335 list; +#X obj 21 363 list; +#X obj 154 252 b; +#X obj 21 408 list trim; +#X obj 21 16 inlet; +#X obj 21 430 outlet; +#X obj 21 386 list prepend sinesum 512; +#X obj 69 299 * 1.27324; +#X text 145 298 = 4 / pi; +#X connect 0 0 3 0; +#X connect 1 0 15 0; +#X connect 1 1 0 0; +#X connect 1 2 2 0; +#X connect 1 2 16 0; +#X connect 2 0 3 1; +#X connect 3 0 4 0; +#X connect 3 0 5 0; +#X connect 4 0 3 1; +#X connect 5 0 6 0; +#X connect 5 1 9 1; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 7 1 9 0; +#X connect 8 0 13 0; +#X connect 9 0 10 0; +#X connect 10 0 11 0; +#X connect 10 1 11 1; +#X connect 11 0 12 0; +#X connect 12 0 21 0; +#X connect 13 0 14 0; +#X connect 13 0 15 1; +#X connect 14 0 13 1; +#X connect 15 0 20 0; +#X connect 16 0 15 1; +#X connect 16 0 13 1; +#X connect 17 0 19 0; +#X connect 18 0 1 0; +#X connect 20 0 17 0; +#X connect 21 0 13 0; +#X restore 15 442 pd bandlimited_square_sinesum; +#X obj 15 195 until; +#X obj 15 217 f; +#X obj 50 217 + 1; +#X obj 58 195 1; +#X obj 15 238 * 2; +#X obj 15 260 - 1; +#X obj 80 345 pack f s; +#X obj 15 100 t f b b; +#X msg 136 270 clear; +#X obj 80 317 * 10; +#X obj 15 282 t b f f; +#X obj 15 407 f; +#X obj 15 474 send; +#X msg 80 374 obj 10 \$1 table \$2 515; +#X obj 131 318 makefilename BLSQUARE%d; +#X text 131 214 for synthesizing a square only odd numbers of harmonics +; +#X text 131 231 occur. ( 1 \, 3 \, 5 \, 7 \, etc.); +#X text 282 374 create the necessary tables; +#X text 238 439 fill each table with the appropriate sinesum \,; +#X text 237 457 respectively the appropriate number of harmonics.; +#X obj 138 123 r \$0-create_additional_tables; +#X obj 15 33 r \$0-create_tables; +#X obj 15 66 \$1; +#X obj 80 396 s pd-\$0-lookup-tables-square; +#X connect 0 0 13 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 0 5 0; +#X connect 3 0 2 1; +#X connect 4 0 2 1; +#X connect 5 0 6 0; +#X connect 6 0 11 0; +#X connect 7 0 14 0; +#X connect 8 0 1 0; +#X connect 8 1 4 0; +#X connect 8 2 9 0; +#X connect 9 0 24 0; +#X connect 10 0 7 0; +#X connect 11 0 12 0; +#X connect 11 1 10 0; +#X connect 11 2 12 1; +#X connect 11 2 15 0; +#X connect 12 0 0 0; +#X connect 14 0 24 0; +#X connect 15 0 7 1; +#X connect 15 0 13 1; +#X connect 21 0 1 0; +#X connect 22 0 23 0; +#X connect 23 0 8 0; +#X restore 21 70 pd lookup-table-creation; +#N canvas 647 5 291 900 \$0-lookup-tables-square 0; +#X restore 21 105 pd \$0-lookup-tables-square; +#N canvas 169 33 537 620 singleton-communication 0; +#X obj 16 69 r BLSQUARE; +#X obj 127 22 loadbang; +#X obj 171 77 value BLSQUARE.instance; +#X obj 171 100 + 1; +#X obj 149 131 value BLSQUARE.instance; +#X obj 16 96 spigot; +#X obj 149 153 == 1; +#X obj 16 120 s \$0-BLSQUARE; +#X obj 18 319 r \$0-BLSQUARE; +#X obj 127 47 t b b b; +#X obj 270 225 \$1; +#X obj 127 184 t b b; +#X msg 270 246 newdollar1 \$1; +#X obj 270 267 s BLSQUARE; +#X obj 125 396 > \$1; +#X obj 134 419 sel 1; +#X obj 134 441 f; +#X text 189 397 if new is bigger \, use new number_of_tables; +#X obj 134 373 t f f f; +#X obj 178 502 - \$1; +#X obj 178 526 moses 1; +#X obj 222 549 s \$0-create_additional_tables; +#X obj 127 214 f; +#X obj 127 240 sel 1; +#X obj 127 264 s \$0-create_tables; +#X obj 18 348 route get_num_of_tables newdollar1; +#X obj 18 423 \$1; +#X msg 18 461 num_of_tables \$1; +#X obj 18 488 s BLSQUARE; +#X connect 0 0 5 0; +#X connect 1 0 9 0; +#X connect 2 0 3 0; +#X connect 3 0 4 0; +#X connect 4 0 6 0; +#X connect 5 0 7 0; +#X connect 6 0 5 1; +#X connect 6 0 22 1; +#X connect 8 0 25 0; +#X connect 9 0 11 0; +#X connect 9 1 4 0; +#X connect 9 2 2 0; +#X connect 10 0 12 0; +#X connect 11 0 22 0; +#X connect 11 1 10 0; +#X connect 12 0 13 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 14 1; +#X connect 16 0 19 1; +#X connect 16 0 26 1; +#X connect 18 0 14 0; +#X connect 18 1 16 1; +#X connect 18 2 19 0; +#X connect 19 0 20 0; +#X connect 20 1 21 0; +#X connect 22 0 23 0; +#X connect 23 0 24 0; +#X connect 25 0 26 0; +#X connect 25 1 18 0; +#X connect 26 0 27 0; +#X connect 27 0 28 0; +#X restore 21 36 pd singleton-communication; +#X connect 2 0 5 0; +#X connect 3 0 2 0; +#X connect 4 0 2 1; diff --git a/blosc/bltriangle~-help.pd b/blosc/bltriangle~-help.pd new file mode 100644 index 0000000..1b03069 --- /dev/null +++ b/blosc/bltriangle~-help.pd @@ -0,0 +1,80 @@ +#N canvas 351 47 650 572 10; +#X obj 31 224 *~; +#X obj 32 253 dac~; +#X obj 111 243 pow 2; +#X obj 114 218 hsl 128 15 0 1 0 0 empty empty volume -2 -8 0 10 -262144 +-1 -1 0 1; +#X obj 111 284 line~; +#X obj 111 263 pack f 20; +#X obj 283 212 cnv 15 350 130 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X text 290 223 synopsis:; +#X text 289 278 inlet1: signal (frequency); +#X text 289 298 inlet2: float (set phase); +#X text 290 319 outlet: signal (bandlimited square at given f); +#X obj 183 354 cnv 15 450 120 empty empty empty 20 12 0 14 -241291 +-66577 0; +#X floatatom 262 408 7 0 0 0 - - -; +#X text 315 410 Hz; +#X text 194 408 border @; +#X text 14 519 copyright by Roman Haefeli; +#X text 14 540 published under the GNU Public License; +#X obj 244 484 cnv 15 390 25 empty empty empty 20 12 0 14 -258699 -66577 +0; +#X text 252 490 due to bandlimitation peaks above/below +/-1 may occur +; +#X obj 34 61 hsl 128 15 20 17000 1 0 empty empty frequency -2 -8 0 +10 -262144 -1 -1 3000 1; +#X obj 31 83 pack f 100; +#X obj 31 104 line~; +#X msg 18 493 version 0.2.0; +#X text 220 83 if the instance containing the tables is deleted \, +the other instances won't work anymore. reload the patch then.; +#X text 261 361 try different values for :; +#N canvas 573 67 190 308 compute_bandlimited_range 0; +#X msg 21 34 get_num_of_tables; +#X obj 21 97 route num_of_tables; +#X obj 21 12 loadbang; +#X obj 21 128 t b f; +#X obj 21 152 samplerate~; +#X obj 21 174 / 2; +#X obj 51 194 * 2; +#X obj 51 217 + 1; +#X obj 21 238 /; +#X obj 21 264 outlet; +#X obj 21 56 s BLTRIANGLE; +#X obj 21 76 r BLTRIANGLE; +#X connect 0 0 10 0; +#X connect 1 0 3 0; +#X connect 2 0 0 0; +#X connect 3 0 4 0; +#X connect 3 1 6 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 7 0; +#X connect 7 0 8 1; +#X connect 8 0 9 0; +#X connect 11 0 1 0; +#X restore 262 383 pd compute_bandlimited_range; +#X text 219 28 if [bltriangle~] is instantiated more than once \, only +the first instance creates the tables. if the argument value differs +\, the biggest is taken.; +#X text 221 129 the number of tables is at the same time the number +of harmonics of the table with the highest number of harmonics. this +value defines also the frequency \, below which [bltriangle~] switches +to a raw triangle.; +#X text 290 250 [bltriangle~ ]; +#X text 260 431 if frequency above border -> bandlimited triangle; +#X text 260 447 if frequency below border -> raw triangle; +#X obj 32 151 bltriangle~ 20; +#X connect 0 0 1 0; +#X connect 0 0 1 1; +#X connect 2 0 5 0; +#X connect 3 0 2 0; +#X connect 4 0 0 1; +#X connect 5 0 4 0; +#X connect 19 0 20 0; +#X connect 20 0 21 0; +#X connect 21 0 31 0; +#X connect 25 0 12 0; +#X connect 31 0 0 0; diff --git a/blosc/bltriangle~.pd b/blosc/bltriangle~.pd new file mode 100644 index 0000000..3d63937 --- /dev/null +++ b/blosc/bltriangle~.pd @@ -0,0 +1,357 @@ +#N canvas 203 22 341 345 10; +#X text 130 266 copyright by Roman Haefeli; +#X text 46 293 Published under the GNU Public License; +#N canvas 0 0 626 647 oscilllator~ 0; +#N canvas 314 100 514 407 number_of_harmonics_allowed 0; +#X obj 135 68 / 2; +#X obj 15 151 /; +#X obj 15 174 int; +#X obj 135 44 samplerate~; +#X obj 15 241 * 0.5; +#X obj 15 261 int; +#X obj 15 282 * 2; +#X obj 15 221 - 1; +#X obj 15 305 + 1; +#X obj 15 328 change; +#X obj 15 199 change; +#X obj 15 98 t b f; +#X text 241 49 sr / 2 = nyquist frequency; +#X obj 15 353 outlet; +#X obj 14 18 inlet~; +#X obj 15 121 f; +#X obj 135 21 loadbang; +#X text 119 216 harmonics never should exceed the nyquist frequency +; +#X obj 15 49 snapshot~; +#X obj 78 21 bang~; +#X obj 15 72 change; +#X connect 0 0 15 1; +#X connect 1 0 2 0; +#X connect 2 0 10 0; +#X connect 3 0 0 0; +#X connect 4 0 5 0; +#X connect 5 0 6 0; +#X connect 6 0 8 0; +#X connect 7 0 4 0; +#X connect 8 0 9 0; +#X connect 9 0 13 0; +#X connect 10 0 7 0; +#X connect 11 0 15 0; +#X connect 11 1 1 1; +#X connect 14 0 18 0; +#X connect 15 0 1 0; +#X connect 16 0 3 0; +#X connect 18 0 20 0; +#X connect 19 0 18 0; +#X connect 20 0 11 0; +#X restore 161 113 pd number_of_harmonics_allowed; +#X obj 40 33 inlet~; +#X obj 39 463 outlet~; +#X obj 177 192 * 2; +#X obj 322 360 snapshot~; +#X obj 161 143 t f f f; +#X obj 218 273 == 0; +#X obj 218 377 f; +#X obj 218 356 sel 1; +#X obj 270 302 change; +#X obj 322 334 sel 1; +#X text 33 494 number of harmononics; +#X text 32 512 without exceeding nyquist; +#X text 31 531 at given frequeny:; +#X text 251 520 best method:; +#X obj 559 178 inlet; +#X text 565 150 phase; +#X text 375 332 sync phase \, when switching dsp on; +#X text 199 221 switch to raw square \, when number of allowed harmonics +exceeds num_of_tables*2; +#X msg 408 69 get_num_of_tables; +#X obj 408 132 route num_of_tables; +#X obj 408 20 loadbang; +#X obj 40 272 phasor~; +#X text 196 81 get the number of tables ->; +#X text 227 496 |; +#X text 227 505 |; +#X text 227 514 |; +#X text 227 523 |; +#X text 227 533 |; +#X text 227 542 |; +#X text 227 551 |; +#X text 227 560 |; +#X text 227 567 |; +#X text 227 576 |; +#X text 227 585 |; +#X text 227 594 |; +#X text 227 604 |; +#X text 25 541 __________________________________________________; +#X text 25 575 __________________________________________________; +#X obj 161 223 >; +#X text 40 596 n > num_of_tables*2; +#X text 32 565 0 < n < num_of_tables*2; +#X obj 408 91 s BLTRIANGLE; +#X obj 408 111 r BLTRIANGLE; +#N canvas 499 174 200 210 raw_triangle 0; +#X obj 19 13 inlet~; +#X obj 18 159 outlet~; +#X obj 102 18 inlet; +#X obj 102 43 switch~; +#X obj 43 41 *~ -1; +#X obj 43 63 +~ 1; +#X obj 19 86 min~; +#X obj 18 110 *~ 4; +#X obj 18 136 -~ 1; +#X connect 0 0 6 0; +#X connect 0 0 4 0; +#X connect 2 0 3 0; +#X connect 4 0 5 0; +#X connect 5 0 6 1; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 8 0 1 0; +#X restore 40 411 pd raw_triangle; +#N canvas 0 0 448 226 bandlimited_triangle 0; +#X obj 16 31 inlet~; +#X obj 71 33 inlet; +#X obj 261 34 inlet; +#X obj 17 192 outlet~; +#X msg 71 96 set \$1; +#X obj 261 124 switch~; +#X obj 347 36 inlet; +#X text 69 14 choose table; +#X text 346 17 set phase; +#X text 256 14 switch dsp; +#X obj 71 71 makefilename BLTRIANGLE%d; +#X obj 17 134 tabosc4~; +#X connect 0 0 11 0; +#X connect 1 0 10 0; +#X connect 2 0 5 0; +#X connect 4 0 11 0; +#X connect 6 0 11 1; +#X connect 10 0 4 0; +#X connect 11 0 3 0; +#X restore 166 412 pd bandlimited_triangle; +#X text 246 563 bandlimited triangle; +#X text 245 595 raw triangle; +#X obj 84 247 + 0.25; +#X obj 322 385 + 0.75; +#X obj 408 45 del 0; +#X connect 0 0 5 0; +#X connect 1 0 45 0; +#X connect 1 0 0 0; +#X connect 1 0 22 0; +#X connect 3 0 39 1; +#X connect 4 0 49 0; +#X connect 5 0 39 0; +#X connect 5 1 7 1; +#X connect 6 0 8 0; +#X connect 6 0 9 0; +#X connect 7 0 45 1; +#X connect 8 0 7 0; +#X connect 9 0 10 0; +#X connect 9 0 45 2; +#X connect 10 0 4 0; +#X connect 15 0 45 3; +#X connect 15 0 48 0; +#X connect 19 0 42 0; +#X connect 20 0 3 0; +#X connect 21 0 50 0; +#X connect 22 0 44 0; +#X connect 22 0 4 0; +#X connect 39 0 44 1; +#X connect 39 0 6 0; +#X connect 43 0 20 0; +#X connect 44 0 2 0; +#X connect 45 0 2 0; +#X connect 48 0 22 1; +#X connect 49 0 45 3; +#X connect 50 0 19 0; +#X restore 22 168 pd oscilllator~; +#X obj 21 137 inlet~; +#X obj 122 137 inlet; +#X obj 21 196 outlet~; +#N canvas 555 327 605 504 lookup-table-creation 0; +#X obj 15 195 until; +#X obj 15 217 f; +#X obj 50 217 + 1; +#X obj 58 195 1; +#X obj 15 238 * 2; +#X obj 15 260 - 1; +#X obj 80 345 pack f s; +#X obj 15 105 t f b b; +#X msg 136 270 clear; +#X obj 80 317 * 10; +#X obj 15 282 t b f f; +#X obj 15 407 f; +#X obj 15 474 send; +#X msg 80 374 obj 10 \$1 table \$2 515; +#X text 131 231 occur. ( 1 \, 3 \, 5 \, 7 \, etc.); +#X text 282 374 create the necessary tables; +#X text 238 439 fill each table with the appropriate sinesum \,; +#X text 237 457 respectively the appropriate number of harmonics.; +#X obj 131 318 makefilename BLTRIANGLE%d; +#N canvas 535 94 364 553 bandlimited_triangle_sinesum 0; +#X obj 43 67 until; +#X obj 21 38 t b f b; +#X obj 84 67 1; +#X obj 43 99 f 1; +#X obj 43 415 list prepend; +#X obj 142 416 list; +#X obj 21 444 list; +#X obj 21 489 list trim; +#X obj 21 16 inlet; +#X obj 21 511 outlet; +#X obj 21 467 list prepend sinesum 512; +#X obj 191 274 b; +#X obj 83 99 + 1; +#X obj 43 175 sel 0 1; +#X obj 43 200 0; +#X obj 70 201 f; +#X obj 43 125 t f f; +#X obj 43 151 mod 2; +#X obj 100 245 mod 4; +#X obj 70 222 t f f; +#X obj 100 267 sel 3; +#X obj 136 290 b; +#X obj 100 290 -1; +#X obj 136 312 1; +#X obj 70 323 pow -2; +#X obj 70 349 *; +#X obj 70 376 * 0.810571; +#X text 163 375 = 8 / (pi^2); +#X connect 0 0 3 0; +#X connect 1 0 6 0; +#X connect 1 1 0 0; +#X connect 1 2 2 0; +#X connect 1 2 11 0; +#X connect 2 0 3 1; +#X connect 3 0 12 0; +#X connect 3 0 16 0; +#X connect 4 0 5 0; +#X connect 4 0 6 1; +#X connect 5 0 4 1; +#X connect 6 0 10 0; +#X connect 7 0 9 0; +#X connect 8 0 1 0; +#X connect 10 0 7 0; +#X connect 11 0 6 1; +#X connect 11 0 4 1; +#X connect 12 0 3 1; +#X connect 13 0 14 0; +#X connect 13 1 15 0; +#X connect 14 0 4 0; +#X connect 15 0 19 0; +#X connect 16 0 17 0; +#X connect 16 1 15 1; +#X connect 17 0 13 0; +#X connect 18 0 20 0; +#X connect 19 0 24 0; +#X connect 19 1 18 0; +#X connect 20 0 22 0; +#X connect 20 1 21 0; +#X connect 21 0 23 0; +#X connect 22 0 25 1; +#X connect 23 0 25 1; +#X connect 24 0 25 0; +#X connect 25 0 26 0; +#X connect 26 0 4 0; +#X restore 15 442 pd bandlimited_triangle_sinesum; +#X text 131 214 for synthesizing a triangle only odd numbered of harmonics +; +#X obj 15 16 r \$0-create_tables; +#X obj 15 59 \$1; +#X obj 122 142 r \$0-create_additional_tables; +#X obj 80 410 s pd-\$0-lookup-tables-triangle; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 1 0 4 0; +#X connect 2 0 1 1; +#X connect 3 0 1 1; +#X connect 4 0 5 0; +#X connect 5 0 10 0; +#X connect 6 0 13 0; +#X connect 7 0 0 0; +#X connect 7 1 3 0; +#X connect 7 2 8 0; +#X connect 8 0 24 0; +#X connect 9 0 6 0; +#X connect 10 0 11 0; +#X connect 10 1 9 0; +#X connect 10 2 11 1; +#X connect 10 2 18 0; +#X connect 11 0 19 0; +#X connect 13 0 24 0; +#X connect 18 0 6 1; +#X connect 18 0 12 1; +#X connect 19 0 12 0; +#X connect 21 0 22 0; +#X connect 22 0 7 0; +#X connect 23 0 0 0; +#X restore 21 63 pd lookup-table-creation; +#N canvas 169 33 537 620 singleton-communication 0; +#X obj 127 22 loadbang; +#X obj 171 100 + 1; +#X obj 16 96 spigot; +#X obj 149 153 == 1; +#X obj 127 47 t b b b; +#X obj 270 225 \$1; +#X obj 127 184 t b b; +#X msg 270 246 newdollar1 \$1; +#X obj 125 396 > \$1; +#X obj 134 419 sel 1; +#X obj 134 441 f; +#X text 189 397 if new is bigger \, use new number_of_tables; +#X obj 134 373 t f f f; +#X obj 178 502 - \$1; +#X obj 178 526 moses 1; +#X obj 222 549 s \$0-create_additional_tables; +#X obj 127 214 f; +#X obj 127 240 sel 1; +#X obj 127 264 s \$0-create_tables; +#X obj 18 348 route get_num_of_tables newdollar1; +#X obj 18 423 \$1; +#X msg 18 461 num_of_tables \$1; +#X obj 171 77 value BLTRIANGLE.instance; +#X obj 149 131 value BLTRIANGLE.instance; +#X obj 270 267 s BLTRIANGLE; +#X obj 16 69 r BLTRIANGLE; +#X obj 16 120 s \$0-BLTRIANGLE; +#X obj 18 319 r \$0-BLTRIANGLE; +#X obj 18 488 s BLTRIANGLE; +#X connect 0 0 4 0; +#X connect 1 0 23 0; +#X connect 2 0 26 0; +#X connect 3 0 2 1; +#X connect 3 0 16 1; +#X connect 4 0 6 0; +#X connect 4 1 23 0; +#X connect 4 2 22 0; +#X connect 5 0 7 0; +#X connect 6 0 16 0; +#X connect 6 1 5 0; +#X connect 7 0 24 0; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 10 0 8 1; +#X connect 10 0 13 1; +#X connect 10 0 20 1; +#X connect 12 0 8 0; +#X connect 12 1 10 1; +#X connect 12 2 13 0; +#X connect 13 0 14 0; +#X connect 14 1 15 0; +#X connect 16 0 17 0; +#X connect 17 0 18 0; +#X connect 19 0 20 0; +#X connect 19 1 12 0; +#X connect 20 0 21 0; +#X connect 21 0 28 0; +#X connect 22 0 1 0; +#X connect 23 0 3 0; +#X connect 25 0 2 0; +#X connect 27 0 19 0; +#X restore 21 36 pd singleton-communication; +#X msg 214 235 version 0.2.0; +#N canvas 647 5 291 900 \$0-lookup-tables-triangle 0; +#X restore 21 91 pd \$0-lookup-tables-triangle; +#X connect 2 0 5 0; +#X connect 3 0 2 0; +#X connect 4 0 2 1; -- cgit v1.2.1