From 57045df5fe3ec557e57dc7434ac1a07b5521bffc Mon Sep 17 00:00:00 2001 From: Guenter Geiger Date: Mon, 29 Jul 2002 17:06:19 +0000 Subject: This commit was generated by cvs2svn to compensate for changes in r58, which included commits to RCS files with non-trunk default branches. svn path=/trunk/; revision=59 --- pd/doc/3.audio.examples/25.bandlimited.pd | 166 ++++++++++++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 pd/doc/3.audio.examples/25.bandlimited.pd (limited to 'pd/doc/3.audio.examples/25.bandlimited.pd') diff --git a/pd/doc/3.audio.examples/25.bandlimited.pd b/pd/doc/3.audio.examples/25.bandlimited.pd new file mode 100644 index 00000000..f49bcb68 --- /dev/null +++ b/pd/doc/3.audio.examples/25.bandlimited.pd @@ -0,0 +1,166 @@ +#N canvas 21 90 540 752 12; +#X floatatom 183 91; +#X obj 183 115 mtof; +#X floatatom 340 183; +#X obj 164 431 -~; +#N canvas 391 51 561 806 tables 1; +#X graph graph1 0 -1 1002 1 99 322 499 22; +#X array array1 1002 float; +#X pop; +#X graph graph1 0 -1 882 1 96 684 496 384; +#X array array2 882 float; +#X pop; +#X text 138 326 ---------------- 1002 samples ---------------; +#X text 150 693 ---------------- 0.02 sec ---------------; +#X restore 33 201 pd tables; +#N canvas 104 390 728 408 make-table 0; +#X obj 469 146 cos~; +#X obj 303 146 cos~; +#X obj 255 141 cos~; +#X msg 199 210 bang; +#X obj 255 229 tabwrite~ array1; +#X text 366 79 period is 2000 samples \, twice the table length; +#X msg 94 94 \; pd dsp 1; +#X text 118 286 this network puts a half cycle of a band-limited square wave into the table "array1."; +#X text 114 335 logically the half-cycle is in samples 1 through 1000 \; samples 0 and 1001 are provided so that the 4-point interpolation will work everywhere.; +#X text 401 57 back the phase up one sample; +#X msg 336 56 -0.0005; +#X obj 171 16 loadbang; +#X obj 303 120 *~ 3; +#X obj 468 122 *~ 5; +#X obj 303 171 *~ 0.33333; +#X obj 468 172 *~ -0.2; +#X obj 255 169 *~ -1; +#X msg 171 38 bang; +#X obj 254 80 phasor~ 22.05; +#X obj 255 202 *~ 0.57692; +#X connect 0 0 15 0; +#X connect 1 0 14 0; +#X connect 2 0 16 0; +#X connect 3 0 4 0; +#X connect 10 0 18 1; +#X connect 11 0 17 0; +#X connect 12 0 1 0; +#X connect 13 0 0 0; +#X connect 14 0 19 0; +#X connect 15 0 19 0; +#X connect 16 0 19 0; +#X connect 17 0 10 0; +#X connect 17 0 6 0; +#X connect 17 0 3 0; +#X connect 18 0 2 0; +#X connect 18 0 12 0; +#X connect 18 0 13 0; +#X connect 19 0 4 0; +#X restore 34 224 pd make-table; +#X obj 183 163 sig~; +#X obj 341 283 /~; +#X obj 357 256 clip~ 1 999999; +#X obj 183 218 phasor~; +#X obj 196 301 *~; +#X obj 196 325 clip~ -0.5 0.5; +#X floatatom 183 139; +#X obj 196 397 tabread4~ array1; +#X floatatom 340 135; +#X obj 340 206 * 0.33333; +#X obj 340 159 mtof; +#X text 374 110 band limit (MIDI units); +#X text 220 78 pitch; +#X obj 340 87 loadbang; +#X msg 340 111 130; +#X obj 340 230 sig~; +#X text 246 139 frequency; +#X obj 196 349 *~ 1000; +#X obj 196 373 +~ 501; +#X obj 183 242 -~ 0.5; +#X floatatom 206 441; +#N canvas 159 26 495 266 output 0; +#X obj 338 160 t b; +#X obj 338 110 f; +#X obj 338 60 inlet; +#X text 344 29 mute; +#X obj 338 185 f; +#X msg 425 178 0; +#X msg 338 85 bang; +#X obj 338 135 moses 1; +#X obj 425 153 t b f; +#X obj 397 117 moses 1; +#X obj 83 148 dbtorms; +#X obj 397 92 r master-lvl; +#X obj 83 42 r master-lvl; +#X obj 338 210 s master-lvl; +#X obj 22 181 inlet~; +#X obj 199 41 inlet; +#X text 199 18 level; +#X obj 199 100 s master-lvl; +#X msg 96 65 set \$1; +#X obj 96 89 outlet; +#X msg 214 64 \; pd dsp 1; +#X obj 83 194 line~; +#X obj 22 212 *~; +#X obj 22 241 dac~; +#X obj 83 171 pack 0 50; +#X text 20 158 audio; +#X text 93 110 show level; +#X connect 0 0 4 0; +#X connect 1 0 7 0; +#X connect 2 0 6 0; +#X connect 4 0 13 0; +#X connect 5 0 13 0; +#X connect 6 0 1 0; +#X connect 7 0 0 0; +#X connect 7 1 8 0; +#X connect 8 0 5 0; +#X connect 9 1 4 1; +#X connect 10 0 24 0; +#X connect 11 0 1 1; +#X connect 11 0 9 0; +#X connect 12 0 10 0; +#X connect 12 0 18 0; +#X connect 14 0 22 0; +#X connect 15 0 17 0; +#X connect 15 0 20 0; +#X connect 18 0 19 0; +#X connect 21 0 22 1; +#X connect 22 0 23 0; +#X connect 22 0 23 1; +#X connect 24 0 21 0; +#X restore 177 469 pd output; +#X msg 235 441 MUTE; +#X text 276 440 <-- output amplitude; +#X text 27 503 Patch to make an approximately band-limited sawtooth. This is useful if you intend to use sawtooth generators above about 200 Hz. \, perhaps to use any of the techniques shown in the previous four patches.; +#X text 28 562 We generate a perfect square wave at Nyquist/6 \; this will have partials 1 \, 3 \, and 5 \, but the Nyquist frequency at partial 6 will cut off the rest of the partials. This is stored in array1 using the "make-table" subpatch.; +#X text 64 34 BAND-LIMITED SAWTOOTH GENERATOR; +#X obj 43 459 tabwrite~ array2; +#X msg 44 435 bang; +#X text 28 632 Now any time we wish to make a discontinuity in the output signal \, we make it look exactly like the bandlimited square wave looks. We do this by reading through the table we recorded \, carefully adding a "digital" \, non-band-limited \, sawtooth to "array1" so that the discontinuities in the two cancel out and what you have left is the transition in the table.; +#X text 338 737 updated for Pd version 0.26; +#X text 41 409 graph output; +#X connect 0 0 1 0; +#X connect 1 0 12 0; +#X connect 2 0 15 0; +#X connect 3 0 27 0; +#X connect 3 0 33 0; +#X connect 6 0 8 0; +#X connect 6 0 9 0; +#X connect 7 0 10 1; +#X connect 8 0 7 1; +#X connect 9 0 25 0; +#X connect 10 0 11 0; +#X connect 11 0 23 0; +#X connect 12 0 6 0; +#X connect 13 0 3 0; +#X connect 14 0 16 0; +#X connect 15 0 21 0; +#X connect 16 0 2 0; +#X connect 19 0 20 0; +#X connect 20 0 14 0; +#X connect 21 0 7 0; +#X connect 23 0 24 0; +#X connect 24 0 13 0; +#X connect 25 0 10 0; +#X connect 25 0 3 1; +#X connect 26 0 27 1; +#X connect 27 0 26 0; +#X connect 28 0 27 2; +#X connect 34 0 33 0; -- cgit v1.2.1