#N canvas 107 43 678 678 12;
#X obj 48 10 block~;
#X text 112 11 (and switch~) - block size and on/off control for DSP
;
#X text 44 40 The block~ and switch~ objects set the block size \,
overlap \, and up/down-sampling ratio for the window. (The overlap
and resampling ratio are relative to the super-patch.);
#X text 45 230 You may have at most one block~/switch~ object in any
window.;
#X text 45 176 A switch~ with no arguments does not reblock audio computation
-- in other words \, block size and sample rate are as in the parent
patch.;
#X text 46 531 see also:;
#X obj 134 531 fft~;
#X text 44 567 ... and the control.blocksize and up.downsampling audio
example patches.;
#X text 194 459 <--- example usage in subpatch;
#X text 43 92 Switch~ \, in addition \, allows you to switch DSP on
and off for the window. All subwindows are also switched. (If a subwindow
of a switched window is also switched \, both switches must be on for
the subwindow's audio DSP to run. Pd's global DSP must also be on.)
;
#N canvas 372 22 695 381 block-example 0;
#X obj 258 238 bang~;
#X obj 258 264 t b b;
#X obj 258 290 timer;
#X floatatom 258 319 5 0 0 0 - - -, f 5;
#X obj 54 30 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
;
#X msg 78 53 set 4096 1 1;
#X msg 78 108 set 4096 2 1;
#X msg 78 79 set 8192 1 1;
#X msg 81 138 set 4096 1 0.5;
#X msg 81 165 set 4096 1 2;
#X obj 52 192 switch~ 4096 1 1;
#X obj 258 347 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X text 94 25 <--- switch this subpatch on and off;
#X text 209 53 <--- block size 4096 \, no overlap \, no resampling
;
#X text 206 81 <--- bigger block size;
#X text 208 109 <--- double overlap;
#X text 219 142 <--- downsampled by factor of 2;
#X text 218 167 <--- upsampled by factor of 2;
#X text 206 194 <--- creation arguments (if any) initialize blocking
;
#X text 317 317 <--- measured time (msec) between blocks;
#X text 245 209 (args are blocksize \, overlap \, up/downsampling)
;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 1 1 2 1;
#X connect 2 0 3 0;
#X connect 3 0 11 0;
#X connect 4 0 10 0;
#X connect 5 0 10 0;
#X connect 6 0 10 0;
#X connect 7 0 10 0;
#X connect 8 0 10 0;
#X connect 9 0 10 0;
#X restore 41 457 pd block-example;
#N canvas 112 205 599 297 block-interations 0;
#X text 32 61 Dac~ and adc~ don't work correctly if reblocked \, nor
if a parent window is reblocked \, even if the window containing the
dac~ or adc~ is reblocked back to the default block size and sample
rate.;
#X text 33 209 Patches using send~/receive~ or throw~/catch~ to intercommunicate
must have the same blocking -- and if their parents are blocked bigger
than they are \, there might be wierdness.;
#X text 31 128 If using send~ or delwrite~ from a switched-off patch
\, the output of corresponding receive~ and delread~ objects in other
\, running patches will cycle old input (and sound like garbage). Throw~
may be switched with impunity \, but not catch~.;
#X text 32 11 INTERACTIONS BETWEEN BLOCK~/SWITCH~ AND OTHER OBJECTS
IN PD;
#X restore 40 482 pd block-interations;
#X text 44 269 Pd's default block size is 64 samples. The inlet~ and
outlet~ objects reblock signals to adjust for differences between parent
and subpatch \, but only power-of-two adjustments are possible. So
for "normal" audio computations \, all blocks should also be power-of-two
in size. HOWEVER \, if you have no inlet~ or outlet~ you may specify
any other block size. This is intended for later use in video processing.
;
#X text 45 395 Switch~ takes a "bang" message that causes one block
of DSP to be computed. This might be useful for pre-computing waveforms
or window functions \, or also for video processing.;
#X text 214 484 <-- BUG!! block~/switch~ and dac~/adc~ are incompatible
;
#N canvas 0 22 581 315 block-interations 0;
#X text 32 11 You can use the switch~ object to single-step dsp in
a subpatch. This might be useful for block operations that don't want
to be synced to the sample clock: loading a window function in a table
\, or copying one table to another:;
#X obj 136 193 noise~;
#X obj 136 225 tabwrite~ zzzz;
#X obj 33 154 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#N canvas 0 22 450 300 (subpatch) 0;
#X array zzzz 256 float 2;
#X coords 0 1 256 -1 256 140 1;
#X restore 300 116 graph;
#X obj 33 228 switch~ 256;
#X text 25 111 turn DSP on and click to;
#X text 26 127 randomize the table at right:;
#X connect 1 0 2 0;
#X connect 3 0 2 0;
#X connect 3 0 5 0;
#X restore 40 505 pd block-interations;
#X text 395 628 updated for Pd version 0.43;
#X text 214 505 <-- weird 'bang' feature lets you single-step DSP;
