#N canvas 0 0 1028 729 10; #X obj 46 309 line~; #X obj 47 482 lin-xfade.mmb~; #X obj 153 461 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144 -1 -1 0 1; #X obj 141 336 vphasor.mmb~; #X msg 231 308 0; #X text 260 307 sync phases; #X obj 48 684 dac~; #X obj 78 600 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144 -1 -1 0 1; #X obj 74 628 dbtorms; #X obj 48 654 *~; #X text 146 445 bl-saw; #X text 222 445 perfect saw; #X text 295 461 <-- move this slider to compare; #X obj 683 174 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X msg 683 196 \; pd dsp \$1; #X obj 137 406 +~ 1; #X obj 137 381 *~ -2; #N canvas 0 22 450 300 (subpatch) 0; #X array \$0-spectrum 512 float 0; #X coords 0 1 512 0 400 140 1; #X restore 541 452 graph; #X obj 86 518 spectrum.mmb~ \$0-spectrum; #X msg 46 284 \$1 20; #N canvas 0 22 450 300 (subpatch) 0; #X array \$0-waveform 200 float 0; #X coords 0 1 199 -1 400 140 1; #X restore 541 276 graph; #N canvas 0 22 450 300 waveform 0; #X obj 132 78 inlet~; #X obj 132 209 tabwrite~ \$0-waveform; #X obj 199 170 metro 150; #X obj 199 87 loadbang; #X msg 199 120 1; #X obj 259 115 r pd; #X obj 259 138 route dsp; #X connect 0 0 1 0; #X connect 2 0 1 0; #X connect 3 0 4 0; #X connect 4 0 2 0; #X connect 5 0 6 0; #X connect 6 0 2 0; #X restore 88 556 pd waveform; #X obj 46 363 bl-saw.mmb~; #X obj 536 100 bl-init.mmb \$0; #X floatatom 84 146 5 0 0 0 - - -; #X obj 112 213 b; #X obj 112 234 /; #X obj 111 193 f; #X msg 45 147 1; #X obj 176 426 *~ -1; #X obj 55 259 * 44100; #X msg 121 147 bang; #X text 17 130 press "1" \, set n \, and bang; #X msg 399 219 0.466772; #X text 395 200 Listen to the aliasing (approx.):; #X text 64 35 *Derived from the "bl-saw.mmb~-help.pd"-patch; #X obj 117 80 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1; #X obj 117 100 metro 3000; #X obj 212 65 loadbang; #X obj 212 86 f 1; #X obj 111 259 * 0.5; #X obj 236 424 print~; #X msg 360 169 bang; #X msg 363 132 bang; #X text 397 126 print just after sync-bang and watch console \; =>no offset; #X text 394 163 print again some time later \; => offset "comes back" due to numerical errors!; #X msg 159 170 -0.5; #X msg 164 190 0.5; #X obj 137 234 b; #X text 150 252 (In general it depends on \; if we start at 0 or end at 1); #X text 275 568 see the DC coming back (numerical error)==>; #X obj 184 361 +~ 0; #X text 190 162 I dont know how or why.. \; Use one or the other!!! \; Seems to cange somehow.. \; ..on dsp-change?!!; #X connect 0 0 3 0; #X connect 0 0 22 0; #X connect 1 0 9 0; #X connect 1 0 21 0; #X connect 1 0 18 0; #X connect 2 0 1 2; #X connect 3 0 51 0; #X connect 4 0 3 1; #X connect 4 0 22 1; #X connect 7 0 8 0; #X connect 8 0 9 1; #X connect 9 0 6 1; #X connect 9 0 6 0; #X connect 13 0 14 0; #X connect 15 0 29 0; #X connect 16 0 15 0; #X connect 19 0 0 0; #X connect 22 0 1 0; #X connect 24 0 27 0; #X connect 25 0 26 0; #X connect 26 0 30 0; #X connect 26 0 40 0; #X connect 27 0 26 1; #X connect 27 0 25 0; #X connect 28 0 26 0; #X connect 29 0 1 1; #X connect 30 0 19 0; #X connect 31 0 4 0; #X connect 33 0 2 0; #X connect 36 0 37 0; #X connect 37 0 31 0; #X connect 38 0 39 0; #X connect 39 0 36 0; #X connect 40 0 51 1; #X connect 42 0 41 0; #X connect 43 0 31 0; #X connect 43 0 42 0; #X connect 46 0 40 1; #X connect 46 0 48 0; #X connect 47 0 40 1; #X connect 47 0 48 0; #X connect 48 0 40 0; #X connect 51 0 16 0; #X connect 51 0 41 0;