#N canvas 208 208 1600 817 12; #X obj 171 186 cnv 15 70 55 empty empty empty 20 12 0 14 #bbbbbb #404040 0; #X obj 98 211 cnv 15 75 30 empty empty empty 20 12 0 14 #bbbbbb #404040 0; #X obj 554 207 cnv 15 163 75 empty empty empty 20 12 0 14 #bbbbbb #404040 0; #X obj 557 69 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1; #X obj 557 89 metro 500; #X obj 557 113 s \$0-m; #X obj 13 260 r \$0-m; #X obj 331 47 cos~; #X obj 331 113 dac~; #X floatatom 331 3 5 0 0 0 - - - 0; #X obj 64 260 -~; #X obj 436 165 snapshot~; #X obj 436 130 bng 30 250 50 0 empty empty empty 17 7 0 10 #dfdfdf #000000 #000000; #X text 468 136 set phase; #X obj 269 45 osc~; #X obj 247 139 tabwrite~ \$0-cos; #X obj 247 115 r \$0-m; #X floatatom 617 66 5 0 0 0 - - - 0; #X obj 557 21 loadbang; #X floatatom 557 238 8 0 0 0 - - - 0; #X obj 557 186 del 0; #X obj 436 83 key; #X obj 436 107 sel 32; #X text 483 107 spacebar; #N canvas 0 50 450 250 (subpatch) 0; #X array \$0-asin 441 float 2; #X array \$0-cos 441 float 2; #X array \$0-pp 441 float 2; #X coords 0 1 441 -1 200 140 1; #X restore 255 257 graph; #X obj 64 284 tabwrite~ \$0-pp; #X obj 557 142 spigot; #X obj 557 166 bng 15 250 50 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000; #X obj 557 214 array max \$0-pp; #X obj 100 217 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1; #X obj 82 237 *~; #X obj 100 169 loadbang; #X msg 100 193 1; #X text 119 210 0 phase 1 diff, f 8; #X obj 116 248 s \$0-diff; #X obj 619 123 r \$0-diff; #X obj 331 89 *~ 1; #X obj 356 71 tgl 15 0 empty empty empty 17 7 0 10 #fcfcfc #000000 #000000 0 1; #X text 258 29 same as; #X obj 557 45 del 1200; #X text 460 283 <<; #X text 460 351 <<; #X text 616 232 always an error, f 8; #X text 179 184 diff prints phase error, f 9; #X text 13 317 single precision phase jitter!? >>; #N canvas 104 104 854 524 getphase~ 0; #X obj 181 13 inlet~; #X obj 22 143 tabwrite~ \$0-asin; #X obj 181 100 expr~ asin($v1); #X obj 181 124 /~; #N canvas 125 39 855 631 tri2saw~ 0; #X obj 90 80 abs~; #X obj 90 175 *~; #X obj 37 170 sig~ 1; #X obj 37 194 -~; #X obj 233 175 *~; #X obj 37 243 /~ 2; #N canvas 78 78 373 483 tri.is.falling~ 0; #X obj 25 71 rzero_rev~ 0; #X obj 25 100 -~; #X obj 25 156 clip~ 0 1; #X obj 25 123 *~ 1e+32; #X text 93 144 1=falling part of tri, f 9; #X obj 25 20 inlet~; #X obj 25 180 outlet~; #X text 114 64 1 sample delay, f 8; #X connect 0 0 1 0; #X connect 1 0 3 0; #X connect 2 0 6 0; #X connect 3 0 2 0; #X connect 5 0 0 0; #X connect 5 0 1 1; #X restore 268 99 pd tri.is.falling~; #X text 260 177 rising clean dry; #X obj 90 56 inlet~; #X obj 37 267 outlet~; #X text 257 14 //tri to saw waveshaper; #X text 70 221 saw at double frequency; #X text 35 137 invert falling part of tri, f 16; #X obj 37 219 +~; #X obj 251 127 sig~ 1; #X obj 251 151 -~; #X text 155 175 muxing; #X connect 0 0 1 0; #X connect 0 0 4 0; #X connect 0 0 6 0; #X connect 1 0 3 1; #X connect 2 0 3 0; #X connect 3 0 13 0; #X connect 4 0 13 1; #X connect 5 0 9 0; #X connect 6 0 1 1; #X connect 6 0 15 1; #X connect 8 0 0 0; #X connect 13 0 5 0; #X connect 14 0 15 0; #X connect 15 0 4 1; #X restore 181 163 pd tri2saw~; #X msg 294 61 1; #X obj 294 83 atan; #X obj 294 105 * 2; #X obj 294 39 loadbang; #X text 324 105 pi/2; #X obj 22 119 r \$0-m; #X obj 181 211 outlet~; #X text 235 211 phase~; #X text 227 12 normalized cosine~; #N canvas 138 96 695 591 freqdivider~ 0; #N canvas 52 52 1141 699 SHflipflop 0; #X obj 55 189 samphold~; #X obj 71 213 *~ -1; #X obj 71 136 loadbang; #X msg 71 160 set 1; #X obj 54 294 outlet~; #X obj 210 71 inlet~; #N canvas 0 50 450 250 (subpatch) 0; #X array \$0_fb 1 float 2; #X coords 0 1 1 -1 200 140 1 0 0; #X restore 321 158 graph; #X obj 70 234 tabsend~ \$0_fb; #X obj 55 110 tabreceive~ \$0_fb; #X obj 326 113 block~ 1 1 1; #X connect 0 0 1 0; #X connect 0 0 4 0; #X connect 1 0 7 0; #X connect 2 0 3 0; #X connect 3 0 0 0; #X connect 5 0 0 1; #X connect 8 0 0 0; #X restore 57 51 pd SHflipflop; #X obj 57 75 /~ 2; #X obj 39 131 +~; #X obj 57 99 -~ 0.5; #X obj 39 155 /~ 2; #X obj 39 179 +~ 0.5; #X obj 39 13 inlet~; #X obj 39 203 outlet~; #X text 37 255 https://forum.pdpatchrepo.info/topic/13918/signal-logic-clocks-division-and-sequences/ , f 43; #X text 36 239 freqdivider~ from jameslo; #X connect 0 0 1 0; #X connect 1 0 3 0; #X connect 2 0 4 0; #X connect 3 0 2 1; #X connect 4 0 5 0; #X connect 5 0 7 0; #X connect 6 0 0 0; #X connect 6 0 2 0; #X restore 181 187 pd freqdivider~; #X text 290 187 divide freq by 2; #X connect 0 0 2 0; #X connect 2 0 3 0; #X connect 3 0 1 0; #X connect 3 0 4 0; #X connect 4 0 14 0; #X connect 5 0 6 0; #X connect 6 0 7 0; #X connect 7 0 3 1; #X connect 8 0 5 0; #X connect 10 0 1 0; #X connect 14 0 11 0; #X restore 64 146 pd getphase~; #X obj 331 25 phasor~ 220; #X text 469 317 [snapshot~] sets phase to same same; #X text 454 317 <<; #X text 476 347 ...but sometimes 180 degree shift occurs, f 31; #X text 616 260 at phase 0/1; #X text 11 11 **************************; #X text 11 38 **************************; #X text 12 23 calculates [osc~]'s phase; #X connect 3 0 4 0; #X connect 4 0 5 0; #X connect 4 0 26 0; #X connect 6 0 25 0; #X connect 7 0 15 0; #X connect 7 0 36 0; #X connect 7 0 45 0; #X connect 9 0 46 0; #X connect 10 0 25 0; #X connect 11 0 46 1; #X connect 12 0 11 0; #X connect 16 0 15 0; #X connect 17 0 4 1; #X connect 18 0 39 0; #X connect 20 0 28 0; #X connect 21 0 22 0; #X connect 22 0 12 0; #X connect 26 0 27 0; #X connect 27 0 20 0; #X connect 28 0 19 0; #X connect 29 0 30 1; #X connect 29 0 34 0; #X connect 30 0 10 1; #X connect 31 0 32 0; #X connect 32 0 29 0; #X connect 35 0 26 1; #X connect 36 0 8 0; #X connect 37 0 36 1; #X connect 39 0 3 0; #X connect 45 0 10 0; #X connect 45 0 11 0; #X connect 46 0 7 0; #X connect 46 0 30 0;