Sometimes, a receive~ doesn't get the input of a send~ until the next tick (it depends on what order they are sorted in). To control that, put in sub-patches as shown (in a digfferent context) in the example, G05.execution.order.pd
cheers Miller On Mon, Sep 12, 2016 at 11:36:47PM +0200, oliver wrote: > hi, > > i recently ran into a problem that makes me feel i don't quite understand > PD's dataflow yet. > > i refer to PD's example patch > > "B16.long-varispeed.pd" > > that deals with the problem of long tables and proper playback in arbitrary > speeds. i admit that i don't fully understand what's going on there, but i > got it to work with no problem on even very long files by just copy/pasting > miller's solution ;-) > > now here's my problem: > > in the example patch, all audio-signal cords are connected directly (to > snapshot~ and tabread4~). i wanted to do the same thing with send~/receive~ > pairs in order have a "master phasor" to drive several tabread4~ objects in > abstractions. > > but when i do this i'm getting bad clicks. > > i'm pretty sure this has something to do with PD's block size and a send~ > object obviously being one block behind. am i wrong ? > > i'm really trying to get my head around this and understand the nature of > this problem. > could someone explain what is really going on here technically ? > or probably suggest a solution ? > > example patch is attached > > best > > oliver > > > -- > \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ > /////////////// http://pendler.klingt.org ////////////// > \\\\\\\\\\\\\\\ http://oliver.klingt.org \\\\\\\\\\\\\\ > //////////////////////////////////////////////////////// > \\\\\\\\ LIVE-BUILDER (music improvisation tool): \\\\\\ > ////////////// http://tinyurl.com/qaohv35 ////////////// > \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ > #N canvas 74 113 1203 820 10; > #X obj 527 97 phasor~, f 11; > #X floatatom 23 77 5 -100 1000 0 - - -, f 5; > #X obj 527 147 tabread4~ \$0-tab; > #X obj 526 119 *~ 1e+006; > #X obj 881 118 samplerate~; > #X obj 881 142 / 2; > #X obj 870 56 loadbang; > #X obj 870 193 tabwrite~ \$0-tab; > #X obj 881 166 osc~; > #X obj 870 97 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 > -1; > #X msg 894 79 \; pd dsp 1; > #X obj 869 221 table \$0-tab 1e+006; > #X text 863 27 and will take about 20 seconds to fill.; > #X text 863 11 *** The table is now 1 million points \,; > #X obj 527 69 / 1e+006; > #X text 74 74 playback speed \, samples/sec; > #X text 602 89 naive way: just; > #X text 601 100 run a phasor; > #X text 601 112 into tabread4~; > #X text 534 46 cycles/sec; > #X text 534 36 convert to; > #X text 514 216 BAD; > #X text 109 156 <- reset phase. 0.5 causes trouble for the "bad" way. > ; > #X obj 23 26 loadbang; > #X msg 23 50 1000; > #X obj 23 100 s \$0-speed; > #X obj 527 13 r \$0-speed; > #X obj 26 182 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144 > -1 -1 6350 1; > #X obj 23 204 s \$0-playbackpos; > #X msg 23 156 0.5; > #X msg 59 156 0.01; > #X obj 590 70 r \$0-playbackpos; > #X obj 15 264 cnv 15 580 500 empty empty this_works 20 12 0 14 -233017 > -159808 0; > #X obj 607 264 cnv 15 580 500 empty empty > this_doesn't_____(same_stuff_but_uses_send~_instead_of_patch_cords) > 20 12 0 14 -261682 -159808 0; > #X obj 252 497 metro 100; > #X obj 31 400 phasor~; > #X obj 252 527 snapshot~; > #X obj 251 426 loadbang; > #X msg 252 449 1; > #X obj 221 606 +; > #X obj 32 574 tabread4~ \$0-tab; > #X obj 250 598 f; > #X obj 194 582 t f f; > #X floatatom 305 623 8 0 0 0 - - -, f 8; > #X obj 221 630 t f b; > #X obj 254 659 f; > #X obj 221 659 -; > #X floatatom 300 575 8 0 0 0 - - -, f 8; > #X obj 203 686 -; > #X obj 252 478 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 > 1; > #X obj 32 428 -~ 0.5; > #X obj 123 725 + 0.5; > #X floatatom 203 713 8 0 0 0 - - -, f 8; > #X obj 383 490 samplerate~; > #X obj 337 517 /; > #X obj 337 490 t f b; > #X obj 254 558 +; > #X obj 123 703 / 10000; > #X obj 32 453 *~ 10000; > #X obj 337 541 * 10000; > #X text 304 636 new onset is phase plus old onset; > #X obj 194 328 * 1e+006; > #X text 301 589 extrapolated phase of next sample; > #X text 278 660 new onset minus old onset; > #X text 266 686 back up phasor output by amount the onset advanced > ; > #X text 264 699 (approximately zero but not exactly because of; > #X text 266 713 truncation error!); > #X obj 194 354 t b f; > #X text 253 328 convert to samples; > #X text 236 354 set both last-onset and previous-onset; > #X text 215 376 ... and also reset phasor.; > #X text 119 741 convert phase back to range 0-1; > #X text 92 440 convert phase to; > #X text 92 454 range +/-5000; > #X obj 31 374 / 10000; > #X text 81 377 cycles/sec; > #X text 81 367 convert to; > #X text 309 440 in order to change onset to reflect it; > #X text 309 424 Each 100 msec \, poll phase of phasor~; > #X text 371 510 extrapolate snapshot of phase by one; > #X text 370 523 sample to sync with next block; > #X text 40 651 GOOD; > #X msg 193 379 0; > #X obj 31 349 r \$0-speed; > #X obj 194 305 r \$0-playbackpos; > #X obj 838 493 metro 100; > #X obj 615 356 phasor~; > #X obj 838 523 snapshot~; > #X obj 837 422 loadbang; > #X msg 838 445 1; > #X obj 807 602 +; > #X obj 616 570 tabread4~ \$0-tab; > #X obj 836 594 f; > #X obj 780 578 t f f; > #X floatatom 891 619 8 0 0 0 - - -, f 8; > #X obj 807 626 t f b; > #X obj 840 655 f; > #X obj 807 655 -; > #X floatatom 886 571 8 0 0 0 - - -, f 8; > #X obj 789 682 -; > #X obj 838 474 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 > 1; > #X obj 616 384 -~ 0.5; > #X obj 709 721 + 0.5; > #X floatatom 789 709 8 0 0 0 - - -, f 8; > #X obj 969 486 samplerate~; > #X obj 923 513 /; > #X obj 923 486 t f b; > #X obj 840 554 +; > #X obj 709 699 / 10000; > #X obj 616 409 *~ 10000; > #X obj 923 537 * 10000; > #X text 890 632 new onset is phase plus old onset; > #X obj 780 324 * 1e+006; > #X text 887 585 extrapolated phase of next sample; > #X text 864 656 new onset minus old onset; > #X text 852 682 back up phasor output by amount the onset advanced > ; > #X text 850 695 (approximately zero but not exactly because of; > #X text 852 709 truncation error!); > #X obj 780 350 t b f; > #X text 839 324 convert to samples; > #X text 822 350 set both last-onset and previous-onset; > #X text 801 372 ... and also reset phasor.; > #X text 705 737 convert phase back to range 0-1; > #X text 670 397 convert phase to; > #X text 670 411 range +/-5000; > #X obj 615 330 / 10000; > #X text 665 333 cycles/sec; > #X text 665 323 convert to; > #X text 895 436 in order to change onset to reflect it; > #X text 895 420 Each 100 msec \, poll phase of phasor~; > #X text 957 506 extrapolate snapshot of phase by one; > #X text 956 519 sample to sync with next block; > #X msg 779 375 0; > #X obj 615 305 r \$0-speed; > #X obj 780 301 r \$0-playbackpos; > #X obj 15 282 cnv 15 580 10 empty empty empty 20 12 0 14 -233017 -159808 > 0; > #X obj 607 283 cnv 15 580 10 empty empty empty 20 12 0 14 -261682 -159808 > 0; > #X obj 615 431 send~ \$0-phasor; > #X obj 616 544 receive~ \$0-phasor; > #X obj 718 493 receive~ \$0-phasor; > #X text 610 645 SHOULD BE GOOD \, BUT CRACKLES; > #X obj 513 193 dac~; > #X obj 526 169 *~; > #X obj 555 171 hsl 50 15 0.01 1 1 0 empty empty volume 10 7 0 10 -257985 > -1 -1 0 1; > #X obj 552 192 - 0.01; > #X obj 19 623 dac~; > #X obj 32 599 *~; > #X obj 61 601 hsl 50 15 0.01 1 1 0 empty empty volume 10 7 0 10 -257985 > -1 -1 0 1; > #X obj 58 622 - 0.01; > #X obj 611 619 dac~; > #X obj 624 595 *~; > #X obj 653 597 hsl 50 15 0.01 1 1 0 empty empty volume 10 7 0 10 -257985 > -1 -1 0 1; > #X obj 650 618 - 0.01; > #X obj 7 132 del 12000; > #X connect 0 0 3 0; > #X connect 1 0 25 0; > #X connect 2 0 142 0; > #X connect 3 0 2 0; > #X connect 4 0 5 0; > #X connect 5 0 8 0; > #X connect 6 0 9 0; > #X connect 6 0 10 0; > #X connect 8 0 7 0; > #X connect 9 0 4 0; > #X connect 9 0 7 0; > #X connect 14 0 0 0; > #X connect 23 0 24 0; > #X connect 23 0 153 0; > #X connect 24 0 1 0; > #X connect 26 0 14 0; > #X connect 27 0 28 0; > #X connect 29 0 27 0; > #X connect 30 0 27 0; > #X connect 31 0 0 1; > #X connect 34 0 36 0; > #X connect 35 0 50 0; > #X connect 36 0 56 0; > #X connect 37 0 38 0; > #X connect 38 0 49 0; > #X connect 39 0 41 0; > #X connect 39 0 44 0; > #X connect 39 0 40 1; > #X connect 39 0 43 0; > #X connect 40 0 146 0; > #X connect 41 0 39 1; > #X connect 42 0 48 0; > #X connect 42 1 39 0; > #X connect 44 0 45 1; > #X connect 44 0 46 0; > #X connect 44 1 45 0; > #X connect 45 0 46 1; > #X connect 46 0 48 1; > #X connect 48 0 52 0; > #X connect 48 0 57 0; > #X connect 49 0 34 0; > #X connect 50 0 58 0; > #X connect 51 0 35 1; > #X connect 53 0 54 1; > #X connect 54 0 59 0; > #X connect 55 0 54 0; > #X connect 55 1 53 0; > #X connect 56 0 42 0; > #X connect 56 0 47 0; > #X connect 57 0 51 0; > #X connect 58 0 36 0; > #X connect 58 0 40 0; > #X connect 59 0 56 1; > #X connect 61 0 67 0; > #X connect 67 0 82 0; > #X connect 67 1 45 1; > #X connect 67 1 39 1; > #X connect 74 0 35 0; > #X connect 74 0 55 0; > #X connect 82 0 42 0; > #X connect 83 0 74 0; > #X connect 84 0 61 0; > #X connect 85 0 87 0; > #X connect 86 0 101 0; > #X connect 87 0 107 0; > #X connect 88 0 89 0; > #X connect 89 0 100 0; > #X connect 90 0 92 0; > #X connect 90 0 95 0; > #X connect 90 0 91 1; > #X connect 90 0 94 0; > #X connect 91 0 150 0; > #X connect 92 0 90 1; > #X connect 93 0 99 0; > #X connect 93 1 90 0; > #X connect 95 0 96 1; > #X connect 95 0 97 0; > #X connect 95 1 96 0; > #X connect 96 0 97 1; > #X connect 97 0 99 1; > #X connect 99 0 103 0; > #X connect 99 0 108 0; > #X connect 100 0 85 0; > #X connect 101 0 109 0; > #X connect 102 0 86 1; > #X connect 104 0 105 1; > #X connect 105 0 110 0; > #X connect 106 0 105 0; > #X connect 106 1 104 0; > #X connect 107 0 93 0; > #X connect 107 0 98 0; > #X connect 108 0 102 0; > #X connect 109 0 137 0; > #X connect 110 0 107 1; > #X connect 112 0 118 0; > #X connect 118 0 132 0; > #X connect 118 1 96 1; > #X connect 118 1 90 1; > #X connect 125 0 86 0; > #X connect 125 0 106 0; > #X connect 132 0 93 0; > #X connect 133 0 125 0; > #X connect 134 0 112 0; > #X connect 138 0 91 0; > #X connect 139 0 87 0; > #X connect 142 0 141 0; > #X connect 142 0 141 1; > #X connect 143 0 144 0; > #X connect 144 0 142 1; > #X connect 146 0 145 0; > #X connect 146 0 145 1; > #X connect 147 0 148 0; > #X connect 148 0 146 1; > #X connect 150 0 149 0; > #X connect 150 0 149 1; > #X connect 151 0 152 0; > #X connect 152 0 150 1; > #X connect 153 0 29 0; > _______________________________________________ > [email protected] mailing list > UNSUBSCRIBE and account-management -> > https://lists.puredata.info/listinfo/pd-list _______________________________________________ [email protected] mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
