[PD] patched-up sources available

IOhannes m zmoelnig zmoelnig at iem.kug.ac.at
Mon Nov 19 01:20:21 CET 2001


> I have one suggestion, which is that I think "block" should really
> interpret "2" as upsampling by 2, not downsampling... this would be an
> easy change to make but I'm not sure how much pain it will cause those of
> you already using sample rate conversion.

i agree to this (i have written the downsampling things first and have
extended them to do both up- and downsampling later; that's why "2"
means downsampling now, instead of upsampling)
but the changes should be made soon, to prevent people from using it as
it is now;

so patch again: (or do the simple changes in d_ugen.c yourself before
using the up/downsampling features)


mfg.cds.sad
IOhannes
-------------- next part --------------
diff -Naur pd-0.35-test3/doc/3.audio.examples/74.up.downsampling.pd pd-0.35-mytest/doc/3.audio.examples/74.up.downsampling.pd
--- pd-0.35-test3/doc/3.audio.examples/74.up.downsampling.pd	Sat Nov 17 09:19:27 2001
+++ pd-0.35-mytest/doc/3.audio.examples/74.up.downsampling.pd	Mon Nov 19 13:37:49 2001
@@ -1,4 +1,4 @@
-#N canvas 15 36 1089 690 10;
+#N canvas 32 42 1089 690 10;
 #X obj 57 567 osc~ 412;
 #X floatatom 58 543 5 0 0;
 #X obj 122 595 tabwrite~ scope;
@@ -6,35 +6,35 @@
 #X msg 205 43 bang;
 #X obj 42 191 tabwrite~ scope;
 #X msg 54 165 bang;
-#N canvas 470 197 600 400 simple 0;
+#N canvas 335 193 600 400 simple 0;
 #X obj 185 46 inlet;
 #X obj 185 102 tabwrite~ scope;
-#X obj 317 103 block~ 64 1 4;
 #X obj 78 38 inlet~;
 #X obj 78 258 outlet~;
+#X obj 317 103 block~ 64 1 0.25;
 #X connect 0 0 1 0;
-#X connect 3 0 1 0;
-#X connect 3 0 4 0;
+#X connect 2 0 1 0;
+#X connect 2 0 3 0;
 #X restore 42 64 pd simple downsampling 4;
-#X msg 451 42 bang;
+#X msg 452 40 bang;
 #X obj 275 190 tabwrite~ scope;
 #X msg 287 164 bang;
 #X graph graph2 0 -1 511 1 297 629 897 489;
 #X array scope 512 float 0;
 #X pop;
-#X msg 683 45 bang;
+#X msg 669 44 bang;
 #X obj 520 193 tabwrite~ scope;
 #X msg 532 167 bang;
-#X msg 929 44 bang;
+#X msg 958 43 bang;
 #X obj 753 192 tabwrite~ scope;
 #X msg 765 166 bang;
-#N canvas 255 160 600 400 simple 0;
+#N canvas 235 161 600 400 simple 0;
 #X obj 185 74 inlet;
 #X obj 185 102 tabwrite~ scope;
 #X obj 78 38 inlet~;
 #X obj 78 258 outlet~;
-#X obj 317 103 block~ 64 1 0.25;
 #X text 130 38 zero-padding upsampling;
+#X obj 317 103 block~ 64 1 4;
 #X connect 0 0 1 0;
 #X connect 2 0 1 0;
 #X connect 2 0 3 0;
@@ -54,38 +54,36 @@
 #X obj 152 416 tabwrite~ scope;
 #X msg 158 370 bang;
 #X text 43 431 zero-padded;
-#N canvas 220 161 600 400 downsampling 0;
-#X obj 317 103 block~ 64 1 4;
+#N canvas 176 162 600 400 downsampling 0;
 #X obj 78 38 inlet~;
 #X obj 78 258 outlet~;
 #X obj 152 258 outlet~ hold;
-#X connect 1 0 2 0;
-#X connect 1 0 3 0;
+#X obj 318 103 block~ 64 1 0.25;
+#X connect 0 0 1 0;
+#X connect 0 0 2 0;
 #X restore 41 288 pd downsampling 4 (mixed);
-#N canvas 215 161 600 400 bad 0;
+#N canvas 137 106 600 400 bad 0;
 #X obj 185 81 inlet;
 #X obj 185 102 tabwrite~ scope;
-#X obj 78 258 outlet~ lin;
-#X obj 78 38 inlet~ lin;
-#X text 172 257 "lin" is for linear upsampling;
-#X text 160 39 "lin" has no meaning when downsampling;
 #X obj 317 103 block~ 64 2;
+#X obj 78 38 inlet~;
+#X obj 78 258 outlet~;
 #X connect 0 0 1 0;
 #X connect 3 0 1 0;
-#X connect 3 0 2 0;
+#X connect 3 0 4 0;
 #X restore 711 288 pd bad overlap;
 #X msg 1018 263 bang;
 #X obj 841 415 tabwrite~ scope;
 #X msg 853 389 bang;
 #X obj 841 264 r~ sine;
-#N canvas 172 172 600 400 bad 0;
+#N canvas 160 172 600 400 bad 0;
 #X obj 185 81 inlet;
 #X obj 185 102 tabwrite~ scope;
 #X obj 78 258 outlet~ lin;
 #X obj 78 38 inlet~ lin;
 #X text 172 257 "lin" is for linear upsampling;
 #X text 160 39 "lin" has no meaning when downsampling;
-#X obj 317 103 block~ 64 2 0.5;
+#X obj 317 103 block~ 64 2 2;
 #X connect 0 0 1 0;
 #X connect 3 0 1 0;
 #X connect 3 0 2 0;
@@ -95,54 +93,54 @@
 #X msg 335 391 bang;
 #X obj 323 266 r~ sine;
 #X text 155 433 sample&hold;
-#X msg 653 265 bang;
+#X msg 660 265 bang;
 #X obj 511 416 tabwrite~ scope;
 #X msg 523 390 bang;
 #X obj 511 265 r~ sine;
-#N canvas 184 119 600 400 downsampled 0;
+#N canvas 167 119 600 400 downsampled 0;
 #X obj 185 81 inlet;
 #X obj 185 102 tabwrite~ scope;
 #X obj 78 258 outlet~ lin;
 #X obj 78 230 *~ 0.5;
-#X obj 317 103 block~ 128 2 2;
 #X obj 78 38 inlet~;
+#X obj 317 103 block~ 128 2 0.5;
 #X connect 0 0 1 0;
 #X connect 3 0 2 0;
-#X connect 5 0 1 0;
-#X connect 5 0 3 0;
+#X connect 4 0 1 0;
+#X connect 4 0 3 0;
 #X restore 511 289 pd downsampled overlap;
-#N canvas 97 100 600 400 upsampled 0;
+#N canvas 88 100 600 400 upsampled 0;
 #X obj 185 81 inlet;
 #X obj 185 102 tabwrite~ scope;
 #X obj 78 258 outlet~ lin;
 #X obj 78 38 inlet~ lin;
-#X obj 317 103 block~ 256 2 0.5;
 #X obj 78 230 *~ 0.5;
+#X obj 317 103 block~ 256 2 2;
 #X connect 0 0 1 0;
 #X connect 3 0 1 0;
-#X connect 3 0 5 0;
-#X connect 5 0 2 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 0;
 #X restore 323 290 pd upsampled overlap;
-#N canvas 214 111 600 400 upsampling 0;
+#N canvas 164 135 600 400 upsampling 0;
 #X obj 185 81 inlet;
 #X obj 185 102 tabwrite~ scope;
 #X obj 78 38 inlet~ hold;
 #X obj 78 258 outlet~;
 #X text 160 39 "hold" is for sample&hold upsampling;
-#X text 397 128 0.25=1/4 --> 4* upsampling;
-#X obj 317 103 block~ 64 1 0.0625;
+#X obj 317 103 block~ 64 1 16;
 #X connect 0 0 1 0;
 #X connect 2 0 1 0;
 #X connect 2 0 3 0;
 #X restore 753 65 pd upsampling 16 (sample&hold);
-#N canvas 246 175 600 400 downsampling 0;
+#N canvas 166 169 600 400 downsampling 0;
 #X obj 185 81 inlet;
 #X obj 185 102 tabwrite~ scope;
 #X obj 78 258 outlet~ lin;
 #X obj 78 38 inlet~ lin;
 #X text 172 257 "lin" is for linear upsampling;
 #X text 160 39 "lin" has no meaning when downsampling;
-#X obj 320 102 block~ 64 1 8;
+#X obj 320 102 block~ 64 1 0.125;
+#X text 330 131 0.125 = 1/8 = 8*downsampling;
 #X connect 0 0 1 0;
 #X connect 3 0 1 0;
 #X connect 3 0 2 0;
diff -Naur pd-0.35-test3/src/d_ugen.c pd-0.35-mytest/src/d_ugen.c
--- pd-0.35-test3/src/d_ugen.c	Sat Nov 17 09:21:14 2001
+++ pd-0.35-mytest/src/d_ugen.c	Mon Nov 19 13:38:17 2001
@@ -135,7 +135,7 @@
 } t_block;
 
 static void *block_new(t_floatarg fvecsize, t_floatarg foverlap,
-		       t_floatarg fdownsample)  /* IOhannes */
+		       t_floatarg fupsample)  /* IOhannes */
 {
     int vecsize = fvecsize;
     int overlap = foverlap;
@@ -147,13 +147,13 @@
     	vecsize = 0;	/* this means we'll get it from parent later. */
 
     /* IOhannes { */
-    if (fdownsample <= 0) downsample = upsample = 1;
-    else if (fdownsample >= 1) {
-      downsample = fdownsample;
-      upsample   = 1;
+    if (fupsample <= 0) downsample = upsample = 1;
+    else if (fupsample >= 1) {
+      upsample = fupsample;
+      downsample   = 1; 
     } else {
-      upsample = 1.0 / fdownsample;
-      downsample   = 1;
+      downsample = 1. / fupsample;
+      upsample   = 1;
     }
     /* } IOhannes */
 
@@ -196,9 +196,9 @@
 }
 
 static void *switch_new(t_floatarg fvecsize, t_floatarg foverlap,
-			t_floatarg fdownsample) /* IOhannes */
+			t_floatarg fupsample) /* IOhannes */
 {
-    t_block *x = (t_block *)(block_new(fvecsize, foverlap, fdownsample)); /* IOhannes */
+    t_block *x = (t_block *)(block_new(fvecsize, foverlap, fupsample)); /* IOhannes */
     x->x_switched = 1;
     x->x_switchon = 0;
     return (x);


More information about the Pd-list mailing list