[PD] fmbox patch for d/l, improv

Frank Barknecht fbar at footils.org
Fri Dec 8 18:28:46 CET 2006


Hallo,
padawan12 hat gesagt: // padawan12 wrote:

> The difference between using a named send~ and a connection
> is negligable or null, but there's a disadvantage (and feature!)
> to using [send~] and [receive~] which is a 1 sample delay.

Small correction: Actually there is either no delay or a delay of one
block, which normally is 64 samples. See attached patch which I'm
working on to illustrate the problem and the "correct" workaround.

To make a feedback audio connection - like you use for FM feedback -
you cannot get any smaller delay than one block, though. If that is
important, a similar solution like we discussed in the PVC Karplus-
Strong thread: [block~ 1].

Also see
http://crca.ucsd.edu/~msp/techniques/latest/book-html/node119.html and 
http://crca.ucsd.edu/~msp/techniques/latest/book-html/node120.html

> There's also a lovely feature (hideous bug) that means
> the order you create sends and receives makes a difference,
> but otherwise don't worry about the efficiency.

This is the "incorrect" workaround to avoid the one-block delay that
might happen with s~/r~. 

Ciao
-- 
 Frank Barknecht                 _ ______footils.org_ __goto10.org__
-------------- next part --------------
#N canvas 141 73 1133 606 10;
#N canvas 0 0 450 300 (subpatch) 0;
#X array \$0-orig 128 float 2;
#X coords 0 1 128 0 200 140 1;
#X restore 634 35 graph;
#N canvas 0 0 450 300 (subpatch) 0;
#X array \$0-delayed 128 float 2;
#X coords 0 1 128 0 200 140 1;
#X restore 634 195 graph;
#X obj 212 305 tabwrite~ \$0-orig;
#X obj 139 394 tabwrite~ \$0-delayed;
#N canvas 0 0 450 300 (subpatch) 0;
#X array \$0-delayed2 128 float 2;
#X coords 0 1 128 0 200 140 1;
#X restore 634 355 graph;
#X obj 212 230 phasor~ 1000;
#X obj 436 347 tabwrite~ \$0-delayed2;
#X obj 155 366 r \$0-plot;
#X obj 452 316 r \$0-plot;
#X obj 221 284 r \$0-plot;
#X obj 906 120 s \$0-plot;
#N canvas 0 0 450 300 (subpatch) 0;
#X array \$0-orig-del 128 float 2;
#X coords 0 1 128 -1 200 140 1;
#X restore 854 195 graph;
#X obj 89 429 -~;
#X obj 119 429 r \$0-plot;
#X obj 90 465 tabwrite~ \$0-orig-del;
#N canvas 0 0 450 300 (subpatch) 0;
#X array \$0-orig-del2 128 float 2;
#X coords 0 1 128 -1 200 140 1;
#X restore 854 355 graph;
#X obj 345 426 -~;
#X obj 355 451 r \$0-plot;
#X obj 346 472 tabwrite~ \$0-orig-del2;
#N canvas 0 0 418 241 format 0;
#X obj 55 107 s \$0-orig;
#X obj 55 131 s \$0-delayed;
#X obj 55 25 loadbang;
#X obj 55 159 s \$0-delayed2;
#X obj 256 187 s \$0-orig-del;
#X obj 245 133 s \$0-orig-del2;
#X msg 245 108 bounds 0 1 128 -1;
#X msg 263 73 const 0;
#X msg 55 81 xticks 32 32 64;
#X msg 55 53 bounds 0 1 128 0;
#X connect 2 0 9 0;
#X connect 2 0 8 0;
#X connect 2 0 6 0;
#X connect 6 0 5 0;
#X connect 6 0 4 0;
#X connect 7 0 5 0;
#X connect 7 0 0 0;
#X connect 7 0 1 0;
#X connect 7 0 3 0;
#X connect 7 0 4 0;
#X connect 8 0 0 0;
#X connect 8 0 1 0;
#X connect 8 0 3 0;
#X connect 8 0 4 0;
#X connect 8 0 5 0;
#X connect 9 0 0 0;
#X connect 9 0 1 0;
#X connect 9 0 3 0;
#X restore 906 146 pd format;
#X floatatom 212 208 5 0 0 0 - - -;
#X obj 212 182 *;
#X obj 265 144 samplerate~;
#X msg 265 118 bang;
#X floatatom 212 99 5 0 0 2 block-multiple-frequency - -;
#X msg 906 41 bang;
#X obj 265 172 / 64;
#X obj 316 120 loadbang;
#X obj 212 120 / 100;
#X obj 43 229 cnv 15 100 30 empty empty Good: 20 12 1 14 -233017 -66577
0;
#X obj 417 225 cnv 15 100 30 empty empty Bad: 20 12 1 14 -233017 -66577
0;
#X text 142 494 differences between orig and sent signal;
#X obj 918 76 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 918 97 metro 200;
#N canvas 475 185 600 400 sender1 0;
#X obj 18 207 outlet~;
#X obj 18 81 inlet~;
#X obj 29 106 s~ \$0-del;
#X connect 1 0 0 0;
#X connect 1 0 2 0;
#X restore 76 309 pd sender1;
#N canvas 0 0 280 330 receiv1 0;
#X obj 96 108 inlet~;
#X obj 96 264 outlet~;
#X obj 162 205 outlet~;
#X obj 163 126 r~ \$0-del;
#X connect 0 0 1 0;
#X connect 3 0 2 0;
#X restore 75 367 pd receiv1;
#N canvas 475 185 600 400 receiv2 0;
#X obj 18 207 outlet~;
#X obj 18 81 inlet~;
#X obj 162 205 outlet~;
#X obj 163 126 r~ \$0-del2;
#X connect 1 0 0 0;
#X connect 3 0 2 0;
#X restore 371 317 pd receiv2;
#N canvas 0 0 543 485 sender2 0;
#X obj 96 108 inlet~;
#X obj 96 264 outlet~;
#X obj 125 142 s~ \$0-del2;
#X connect 0 0 1 0;
#X connect 0 0 2 0;
#X restore 370 375 pd sender2;
#X msg 389 82 125;
#X obj 389 60 loadbang;
#X msg 423 82 100;
#X obj 264 191 t b a;
#X text 14 16 Ordering DSP execution using subpatches to avoid unwanted
block-delays in s~ and r~:;
#X msg 459 82 150;
#X connect 5 0 34 0;
#X connect 5 0 2 0;
#X connect 5 0 36 0;
#X connect 5 0 12 0;
#X connect 5 0 16 0;
#X connect 7 0 3 0;
#X connect 8 0 6 0;
#X connect 9 0 2 0;
#X connect 12 0 14 0;
#X connect 13 0 14 0;
#X connect 16 0 18 0;
#X connect 17 0 18 0;
#X connect 20 0 5 0;
#X connect 21 0 20 0;
#X connect 22 0 26 0;
#X connect 23 0 22 0;
#X connect 24 0 28 0;
#X connect 25 0 10 0;
#X connect 26 0 41 0;
#X connect 27 0 22 0;
#X connect 28 0 21 0;
#X connect 32 0 33 0;
#X connect 33 0 10 0;
#X connect 34 0 35 0;
#X connect 35 1 3 0;
#X connect 35 1 12 1;
#X connect 36 0 37 0;
#X connect 36 1 6 0;
#X connect 36 1 16 1;
#X connect 38 0 24 0;
#X connect 39 0 38 0;
#X connect 40 0 24 0;
#X connect 41 0 21 0;
#X connect 41 1 21 1;
#X connect 43 0 24 0;


More information about the Pd-list mailing list