#N canvas 241 181 652 514 12;
#N canvas 0 0 600 400 (subpatch) 0;
#X restore 23 13 pd;
#X text 57 14 - subpatch;
#X obj 180 13 inlet;
#X text 238 12 - control inlet;
#X obj 410 12 inlet~;
#X text 480 12 - audio inlet;
#X obj 180 41 outlet;
#X text 238 43 - control outlet;
#X obj 410 40 outlet~;
#X text 480 40 - audio outlet;
#X text 15 77 Type "pd" into an object box to make a subpatch. When
in run mode you can click on the object to open the subpatch. You can
name the subpatch with an argument:;
#N canvas 156 300 518 221 my-subpatch 0;
#X text 49 96 this is a subpatch for the "pd" help window.;
#X restore 111 134 pd my-subpatch;
#X text 19 161 and you can put inlets and outlets by making "inlet"
objects \, etc \, in the subpatch (open the patch below to see them.)
;
#X obj 361 329 print~;
#X obj 359 249 sig~ 12;
#X floatatom 50 253 0 0 0 0 - - -;
#X floatatom 50 305 0 0 0 0 - - -;
#X text 388 306 (check that audio is on);
#X text 20 232 messages in and out;
#X text 329 226 audio in and out;
#X text 10 444 see also:;
#X obj 94 444 block~;
#X obj 371 307 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#N canvas 868 141 634 613 up/downsampling 0;
#X obj 29 395 print~;
#X obj 47 369 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 152 397 print~;
#X obj 170 371 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 276 395 print~;
#X obj 294 369 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#N canvas 0 0 450 300 (subpatch) 0;
#X array \$0-tab 64 float 3;
#A 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
#X coords 0 1 64 -1 200 140 1;
#X restore 285 180 graph;
#X obj 354 360 s \$0-tab;
#X msg 353 333 const 0 \, 0 0 1;
#X obj 176 243 print~;
#X obj 176 218 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 24 191 tabreceive~ \$0-tab;
#N canvas 162 294 571 346 test-subpatch-upsampled 0;
#X obj 40 17 block~ 128 1 2;
#X obj 43 144 inlet~ hold;
#X obj 318 149 inlet~ lin;
#X obj 183 200 print~;
#X obj 201 174 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X obj 43 204 print~;
#X obj 61 178 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
-1;
#X obj 317 209 print~;
#X obj 334 183 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X text 42 49 Upsampling methods:;
#X text 41 109 sample/hold;
#X text 300 114 linear interpolation;
#X obj 183 144 inlet~ pad;
#X text 183 113 zero-padded;
#X text 43 245 The default \, if no method is specified \, is sample/hold.
;
#X connect 1 0 5 0;
#X connect 2 0 7 0;
#X connect 4 0 3 0;
#X connect 6 0 5 0;
#X connect 8 0 7 0;
#X connect 12 0 3 0;
#X restore 24 295 pd test-subpatch-upsampled;
#N canvas 45 42 585 267 test-subpatch-downsampled 0;
#X obj 367 153 outlet~ lin;
#X text 206 173 sample/hold;
#X text 364 177 linear interpolation;
#X text 197 19 upsampling methods:;
#X obj 40 17 block~ 32 1 0.5;
#X text 18 169 interleaved zeros;
#X obj 21 83 tabreceive~ \$0-tab;
#X obj 23 146 outlet~ pad;
#X obj 209 149 outlet~ hold;
#X connect 6 0 0 0;
#X connect 6 0 7 0;
#X connect 6 0 8 0;
#X restore 28 339 pd test-subpatch-downsampled;
#X text 50 11 When a subpatch is reblocked to a higher or lower sample
rate \, the inlet~ and outlet~ objects offer a choice of three upsampling
methods. (The inlet~ upsamples when entering a subpatch with a higher
sample rate \; the outlet~ upsamples when leaving a subpatch of _lower_
sample rate \, as demonstrated below.) There is no corresponding choice
of downsampling method - downsampling is done simply by dropping the
extra samples.;
#X msg 127 541 \; pd compatibility 0.43;
#X text 27 469 COMPATIBILITY NOTE: in Pd versions before 0.44 \, the
default method was "pad". To get the old behavior \, either change
the patch to specify "pad" \, or set "compatibility" to 0.43 in Pd's
command line or by a message:;
#X connect 1 0 0 0;
#X connect 3 0 2 0;
#X connect 5 0 4 0;
#X connect 8 0 7 0;
#X connect 10 0 9 0;
#X connect 11 0 12 0;
#X connect 11 0 12 2;
#X connect 11 0 9 0;
#X connect 11 0 12 1;
#X connect 13 0 0 0;
#X connect 13 1 2 0;
#X connect 13 2 4 0;
#X restore 20 370 pd up/downsampling;
#N canvas 103 180 600 392 subpatch-with-inlets-and-outlets 0;
#X obj 64 83 inlet;
#X text 16 53 control inlet for receiving messages;
#X floatatom 64 111 0 0 0 0 - - -;
#X floatatom 67 212 0 0 0 0 - - -;
#X obj 67 244 outlet;
#X text 31 182 control outlet for sending message;
#X obj 399 78 inlet~;
#X obj 399 129 print~;
#X msg 414 103 bang;
#X obj 398 271 outlet~;
#X obj 398 245 sig~ 34;
#X text 392 32 same for;
#X text 393 51 signals.;
#X connect 0 0 2 0;
#X connect 3 0 4 0;
#X connect 6 0 7 0;
#X connect 8 0 7 0;
#X connect 10 0 9 0;
#X restore 50 279 pd subpatch-with-inlets-and-outlets;
#X text 193 368 <- here are some ugly details on;
#X text 219 386 up/downsampling for inlet~ and outlet~;
#X text 390 435 updated for Pd version 0.44;
#X text 183 470 (documents new default upsampling behavior for reblocked
inlet~ and outlet~.);
#X connect 14 0 24 1;
#X connect 15 0 24 0;
#X connect 22 0 13 0;
#X connect 24 0 16 0;
#X connect 24 1 13 0;
