[PD] grain patch producing clicks

Frank Barknecht fbar at footils.org
Tue May 23 19:09:16 CEST 2006


Hallo,
dafydd hughes hat gesagt: // dafydd hughes wrote:

> It looks like a mismatch between envelope and sample reading.  The
> clicks seem to happen because the amplitude envelope and the tabread4~
> aren't synchronized.  What happens is the tabread object gets its new
> starting position while the envelope is still in mid-grain.  The
> solution is to make sure each voice is inactive before starting a new
> grain.
> 
> David Golightly made a great granular delay line patch (I think based
> on a paper by Ross Bencina) maybe a year and a bit ago which used a
> scheduler to send info to each voice.  As I remember, the scheduler
> kept track of which voices were playing and sent the messages to the
> next available note.  Another way is to let the voice pass the message
> to the next voice if it's already busy.

I changed the patch to do just that and introduced an abstraction for
the voices, because I'm lazy. The blocking is in [pd block] in
pd_voice.pd. However while this gets rid of the clicks, it brings
another problem with the patch to daylight, which you will immediatly
hear, if you try it: it doesn't sound like a cloud of grains, but very
regular. I didn't understand what the [expr $f1; $f1/1; $f1/2 ...] is
supposed to do. In the original patch, the numbers get send to a [del]
object where they get translated to a simple bang. 

I once did another granular patch that uses a [phasor~] instead of a
[metro] to drive the grains. Basically the phasor~ output is used to
drive a cosine envelope similar to the packets example in Miller's
docs. It also is used to read out the table with [tabread4~] or a
delay line with [vd~]. [samphold~]'s are used to get click-free
operation. I attached this patch as well (phasorgrain~). It normally
uses Memento to allow comfortable remote control of the settings, but
I ripped this part out to not confuse those without Memento.

Ciao
-- 
 Frank Barknecht                 _ ______footils.org_ __goto10.org__
-------------- next part --------------
#N struct 1006-graph float x float y array 1006-2dtemplate 1006-2d
;
#N struct 1006-2d float x float y;
#N struct 1006-samplewindow float x float y array 1006-windowtemplate
1006-window;
#N struct 1006-window float x float y;
#N canvas 129 27 676 497 10;
#X obj 54 84 sk-lens;
#X obj 66 405 dac~;
#X obj 325 74 loadbang;
#X msg 325 95 \; pd dsp 1;
#X text 260 148 click the load button to open a soundfile;
#X text 258 175 then hit the 1/0 toggle to turn the abstraction on
;
#X connect 0 0 1 0;
#X connect 0 1 1 1;
#X connect 2 0 3 0;
-------------- next part --------------
#N struct 1003-graph float x float y array 1003-2dtemplate 1003-2d
;
#N struct 1003-2d float x float y;
#N struct 1003-samplewindow float x float y array 1003-windowtemplate
1003-window;
#N struct 1003-window float x float y;
#N canvas 204 115 546 406 10;
#N canvas 198 107 659 556 guts 0;
#X obj 27 439 soundfiler;
#X obj 27 348 openpanel;
#X msg 27 419 read -resize \$1 \$2-grain;
#X obj 27 397 pack s f;
#X obj 27 373 t s b;
#X obj 70 373 f \$0;
#X obj 27 326 r \$0-openfile;
#X obj 27 460 s \$0-samplesize;
#X obj 412 65 r \$0-on/off;
#X obj 24 13 cnv 15 170 180 empty empty data_structures 20 12 1 14
-233017 -66577 0;
#N canvas 412 172 741 352 graph 0;
#X obj 46 43 struct \$0-graph float x float y array \$0-2dtemplate
\$0-2d;
#X obj 47 106 filledpolygon 778 100 2 0 0 0 100 100 100 100 0 0 0;
#X obj 46 81 plot \$0-2dtemplate 999 0 0 0 0;
#X restore 51 40 pd graph;
#N canvas 311 154 522 372 2d 0;
#X obj 37 49 drawpolygon 900 2 -5 0 0 -5 5 0 0 5 -5 0;
#X obj 37 20 struct \$0-2d float x float y;
#X restore 51 60 pd 2d;
#N canvas 0 22 482 332 samplewindow 0;
#X obj 51 17 struct \$0-samplewindow float x float y array \$0-windowtemplate
\$0-window;
#X obj 50 57 plot \$0-windowtemplate 999 0 0 0 0;
#X restore 51 90 pd samplewindow;
#N canvas 388 98 486 336 window 0;
#X obj 38 51 struct \$0-window float x float y;
#X obj 37 77 drawpolygon 900 1 0 0 0 40;
#X restore 51 111 pd window;
#X obj 207 15 cnv 15 120 250 empty empty voices 20 12 1 14 -233017
-66577 0;
#X obj 503 35 r \$0-clockspeed;
#X obj 503 56 t b f;
#X obj 503 78 f 60000;
#X obj 503 99 /;
#X obj 451 124 metro;
#N canvas 20 22 553 513 track 0;
#X obj 187 39 f \$0;
#X obj 187 61 makefilename pd-%d-grid;
#X msg 187 82 traverse \$1 \, next;
#X msg 44 105 1;
#X obj 44 80 t b b;
#X obj 44 22 r \$0-on/off;
#X obj 58 235 s \$0-x;
#X obj 143 269 s \$0-y;
#X obj 44 127 element \$0-graph \$0-2dtemplate;
#X obj 44 156 get \$0-2d x y;
#X obj 187 105 pointer;
#X obj 130 226 * -1;
#X obj 44 394 set \$0-window x;
#X obj 220 279 f \$0;
#X msg 220 322 traverse \$1 \, next;
#X obj 220 345 pointer;
#X obj 220 301 makefilename pd-%d-sample;
#X obj 44 292 t f b b;
#X obj 104 291 t f b b;
#X obj 144 371 element \$0-samplewindow \$0-windowtemplate;
#X obj 66 315 f 0;
#X obj 126 314 f 1;
#X obj 44 49 metro 100;
#X obj 421 132 r \$0-lensjitter;
#X obj 366 166 spigot;
#X obj 366 188 random;
#X obj 44 185 +;
#X obj 130 185 +;
#X obj 366 93 r \$0-globalclock;
#X obj 44 206 clip 0 100;
#X obj 130 205 - 100;
#X obj 130 246 clip 0 100;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 10 0;
#X connect 3 0 8 0;
#X connect 4 0 3 0;
#X connect 4 1 0 0;
#X connect 5 0 22 0;
#X connect 8 0 9 0;
#X connect 9 0 26 0;
#X connect 9 1 27 0;
#X connect 10 0 8 1;
#X connect 11 0 31 0;
#X connect 13 0 16 0;
#X connect 14 0 15 0;
#X connect 15 0 19 1;
#X connect 16 0 14 0;
#X connect 17 0 12 0;
#X connect 17 1 20 0;
#X connect 17 2 13 0;
#X connect 18 0 12 0;
#X connect 18 1 21 0;
#X connect 18 2 13 0;
#X connect 19 0 12 1;
#X connect 20 0 19 0;
#X connect 21 0 19 0;
#X connect 22 0 4 0;
#X connect 23 0 24 1;
#X connect 23 0 25 1;
#X connect 24 0 25 0;
#X connect 25 0 27 1;
#X connect 25 0 26 1;
#X connect 26 0 29 0;
#X connect 27 0 30 0;
#X connect 28 0 24 0;
#X connect 29 0 6 0;
#X connect 29 0 17 0;
#X connect 30 0 11 0;
#X connect 31 0 7 0;
#X connect 31 0 18 0;
#X restore 50 139 pd track;
#N canvas 0 22 431 555 reset 0;
#X obj 183 228 f \$0;
#X obj 183 249 makefilename pd-%d-grid;
#X msg 183 275 \; \$1 clear;
#X obj 51 376 append \$0-graph x y;
#X obj 138 356 pointer;
#X obj 138 290 f \$0;
#X obj 138 311 makefilename pd-%d-grid;
#X msg 138 333 traverse \$1 \, bang;
#X obj 51 352 unpack;
#X obj 51 262 t b b b;
#X msg 51 324 0 0;
#X obj 205 51 f \$0;
#X msg 205 98 \; \$1 clear;
#X obj 160 179 pointer;
#X obj 160 113 f \$0;
#X msg 160 156 traverse \$1 \, bang;
#X obj 73 175 unpack;
#X obj 73 80 t b b b;
#X msg 73 144 0 0;
#X obj 205 72 makefilename pd-%d-sample;
#X obj 160 134 makefilename pd-%d-sample;
#X obj 73 199 append \$0-samplewindow x y;
#X obj 29 502 setsize \$0-samplewindow \$0-windowtemplate;
#X msg 29 468 2;
#X obj 138 477 pointer;
#X obj 138 411 f \$0;
#X obj 138 432 makefilename pd-%d-sample;
#X obj 29 422 t b b;
#X obj 29 44 t b b b;
#X msg 138 454 traverse \$1 \, next;
#X obj 29 23 loadbang;
#X obj 113 22 r \$0-reset;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 4 0 3 2;
#X connect 5 0 6 0;
#X connect 6 0 7 0;
#X connect 7 0 4 0;
#X connect 8 0 3 0;
#X connect 8 1 3 1;
#X connect 9 0 10 0;
#X connect 9 1 5 0;
#X connect 9 2 0 0;
#X connect 10 0 8 0;
#X connect 11 0 19 0;
#X connect 13 0 21 2;
#X connect 14 0 20 0;
#X connect 15 0 13 0;
#X connect 16 0 21 0;
#X connect 16 1 21 1;
#X connect 17 0 18 0;
#X connect 17 1 14 0;
#X connect 17 2 11 0;
#X connect 18 0 16 0;
#X connect 19 0 12 0;
#X connect 20 0 15 0;
#X connect 23 0 22 0;
#X connect 24 0 22 1;
#X connect 25 0 26 0;
#X connect 26 0 29 0;
#X connect 27 0 23 0;
#X connect 27 1 25 0;
#X connect 28 0 27 0;
#X connect 28 1 9 0;
#X connect 28 2 17 0;
#X connect 29 0 24 0;
#X connect 30 0 28 0;
#X connect 31 0 28 0;
#X restore 50 162 pd reset;
#X obj 50 231 r \$0-on/off;
#X obj 451 191 random;
#X obj 488 169 *;
#X obj 488 146 r \$0-grainjitter;
#X obj 451 220 expr $f1 \; $f1/2 \; $f1/3 \; $f1/4 \; $f1/5 \; $f1/6
\; $f1/7 \; $f1/8 \; $f1/9;
#X obj 226 474 *~;
#X obj 293 443 vline~;
#X obj 293 423 pack 0 30;
#X obj 293 401 dbtorms;
#X obj 293 379 r \$0-amplitude;
#X obj 226 234 *~ 0.1;
#X obj 209 285 cnv 15 120 60 empty empty delay 20 12 1 14 -233017 -66577
0;
#N canvas 0 22 660 490 delay 0;
#X obj 66 157 vline~;
#X obj 66 137 pack 0 100;
#X obj 15 91 r \$0-delaytime;
#X obj 212 162 *~;
#X obj 228 142 vline~;
#X obj 228 122 pack 0 30;
#X obj 228 31 r \$0-feedback;
#X obj 145 357 *~;
#X obj 161 311 pack 0 30;
#X obj 244 357 *~;
#X obj 260 311 pack 0 30;
#X obj 184 246 expr $f1 \; if ($f1>63 \, (127-$f1)/63 \, 1) \; if ($f1<63
\, $f1/63 \, 1);
#X obj 260 334 vline~;
#X obj 161 334 vline~;
#X obj 185 388 +~;
#X obj 184 219 r \$0-wetdrymix;
#X obj 66 35 inlet~;
#X obj 185 411 outlet~;
#X obj 66 71 delwrite~ \$0-delL 1000;
#X obj 66 178 vd~ \$0-delL 0;
#X obj 365 158 vline~;
#X obj 365 138 pack 0 100;
#X obj 511 163 *~;
#X obj 527 143 vline~;
#X obj 527 123 pack 0 30;
#X obj 365 72 delwrite~ \$0-delR 1000;
#X obj 365 179 vd~ \$0-delR 0;
#X obj 344 358 *~;
#X obj 360 312 pack 0 30;
#X obj 443 358 *~;
#X obj 459 312 pack 0 30;
#X obj 459 335 vline~;
#X obj 360 335 vline~;
#X obj 384 389 +~;
#X obj 384 412 outlet~;
#X obj 364 43 inlet~;
#X connect 0 0 19 0;
#X connect 1 0 0 0;
#X connect 2 0 1 0;
#X connect 2 0 21 0;
#X connect 3 0 18 0;
#X connect 4 0 3 1;
#X connect 5 0 4 0;
#X connect 6 0 5 0;
#X connect 6 0 24 0;
#X connect 7 0 14 0;
#X connect 8 0 13 0;
#X connect 9 0 14 1;
#X connect 10 0 12 0;
#X connect 11 1 8 0;
#X connect 11 1 28 0;
#X connect 11 2 10 0;
#X connect 11 2 30 0;
#X connect 12 0 9 1;
#X connect 13 0 7 1;
#X connect 14 0 17 0;
#X connect 15 0 11 0;
#X connect 16 0 7 0;
#X connect 16 0 18 0;
#X connect 19 0 3 0;
#X connect 19 0 9 0;
#X connect 20 0 26 0;
#X connect 21 0 20 0;
#X connect 22 0 25 0;
#X connect 23 0 22 1;
#X connect 24 0 23 0;
#X connect 26 0 22 0;
#X connect 26 0 29 0;
#X connect 27 0 33 0;
#X connect 28 0 32 0;
#X connect 29 0 33 1;
#X connect 30 0 31 0;
#X connect 31 0 29 1;
#X connect 32 0 27 1;
#X connect 33 0 34 0;
#X connect 35 0 25 0;
#X connect 35 0 27 0;
#X restore 226 312 pd delay;
#X obj 369 155 s \$0-globalclock;
#X obj 50 252 switch~;
#X obj 277 234 *~ 0.1;
#X obj 277 473 *~;
#X obj 226 495 outlet~;
#X obj 277 495 outlet~;
#X obj 226 58 pd_voice \$0;
#X obj 226 196 pd_voice \$0;
#X obj 226 78 pd_voice \$0;
#X obj 226 97 pd_voice \$0;
#X obj 226 117 pd_voice \$0;
#X obj 226 137 pd_voice \$0;
#X obj 226 157 pd_voice \$0;
#X obj 226 176 pd_voice \$0;
#X connect 0 0 7 0;
#X connect 1 0 4 0;
#X connect 2 0 0 0;
#X connect 3 0 2 0;
#X connect 4 0 3 0;
#X connect 4 1 5 0;
#X connect 5 0 3 1;
#X connect 6 0 1 0;
#X connect 8 0 19 0;
#X connect 15 0 16 0;
#X connect 16 0 17 0;
#X connect 16 1 18 1;
#X connect 17 0 18 0;
#X connect 18 0 19 1;
#X connect 18 0 24 1;
#X connect 19 0 23 0;
#X connect 19 0 35 0;
#X connect 22 0 36 0;
#X connect 23 0 26 0;
#X connect 24 0 23 1;
#X connect 25 0 24 0;
#X connect 26 1 41 2;
#X connect 26 2 43 2;
#X connect 26 3 44 2;
#X connect 26 4 45 2;
#X connect 26 5 46 2;
#X connect 26 6 47 2;
#X connect 26 7 48 2;
#X connect 26 8 42 2;
#X connect 27 0 39 0;
#X connect 28 0 27 1;
#X connect 28 0 38 1;
#X connect 29 0 28 0;
#X connect 30 0 29 0;
#X connect 31 0 30 0;
#X connect 32 0 34 0;
#X connect 34 0 27 0;
#X connect 34 1 38 0;
#X connect 37 0 34 1;
#X connect 38 0 40 0;
#X connect 41 0 43 0;
#X connect 41 1 43 1;
#X connect 42 0 32 0;
#X connect 42 1 37 0;
#X connect 43 0 44 0;
#X connect 43 1 44 1;
#X connect 44 0 45 0;
#X connect 44 1 45 1;
#X connect 45 0 46 0;
#X connect 45 1 46 1;
#X connect 46 0 47 0;
#X connect 46 1 47 1;
#X connect 47 0 48 0;
#X connect 47 1 48 1;
#X connect 48 0 42 0;
#X connect 48 1 42 1;
#X restore 9 316 pd guts;
#X obj 121 56 nbx 5 14 0.1 1e+37 0 1 \$0-grainspeed empty grainspeed
0 -6 1 10 -262144 -1 -1 0.59 256;
#X obj 124 80 hsl 60 15 0 1 0 1 \$0-grainlevel empty grainlevel 0 8
1 10 -262144 -1 -1 2500 1;
#X obj 124 98 hsl 60 15 0 1000 0 1 \$0-attack empty attack 0 8 1 10
-262144 -1 -1 700 1;
#X obj 124 116 hsl 60 15 0 1000 0 1 \$0-decay empty decay 0 8 1 10
-262144 -1 -1 1500 1;
#X obj 121 29 nbx 5 14 0 1e+37 0 1 \$0-clockspeed empty clockspeed
0 -6 1 10 -262144 -1 -1 700 256;
#X obj 124 152 hsl 60 15 1 10 0 1 \$0-grainjitter empty grainjitter
0 8 1 10 -262144 -1 -1 4500 1;
#N canvas 0 22 272 362 1003-grid 0;
#X scalar 1003-graph 0 0 \; 32 33 \; \;;
#X coords 0 0 100 100 100 100 1;
#X restore 5 112 pd \$0-grid;
#N canvas 0 22 596 407 1003-sample 0;
#X scalar 1003-samplewindow 0 0 \; 36 0 \; 63 0 \; \;;
#X coords 0 0 100 40 100 40 1;
#X restore 5 213 pd \$0-sample;
#N canvas 0 22 450 300 graph1 0;
#X array \$0-grain 86754 float 2;
#X coords 0 1 86754 -1 100 40 1;
#X restore 5 213 graph;
#X obj 124 239 hsl 60 15 0 127 0 1 \$0-wetdrymix empty dry/wet 0 8
1 10 -262144 -1 -1 2100 1;
#X obj 124 200 hsl 60 15 0 1000 0 1 \$0-delaytime empty delay 0 8 1
10 -262144 -1 -1 1300 1;
#X obj 124 220 hsl 60 15 0 1 0 1 \$0-feedback empty feedback 0 8 1
10 -262144 -1 -1 1800 1;
#X obj 124 134 hsl 60 15 0 10 0 1 \$0-lensjitter empty lensjitter 0
8 1 10 -262144 -1 -1 3000 1;
#X obj 6 262 bng 15 250 50 0 \$0-reset empty empty 0 -6 0 8 -262144
-1 -1;
#X obj 124 170 hsl 60 15 0 127 0 1 \$0-pan \$0-jitterin pan 0 8 1 10
-262144 -1 -1 2900 1;
#X obj 9 339 outlet~;
#X obj 60 339 outlet~;
#X text 28 262 <--2d reset;
#X obj 4 23 tgl 40 0 \$0-on/off empty 1/0 8 22 1 18 -228992 -1 -262144
1 1;
#X obj 5 69 bng 40 250 50 0 \$0-openfile empty load 4 22 1 16 -228992
-66577 -262144;
#X obj 66 25 vsl 40 80 0 127 0 1 \$0-amplitude empty amp 3 15 1 16
-228992 -1 -262144 7200 1;
#X connect 0 0 16 0;
#X connect 0 1 17 0;
#X coords 0 -1 1 1 190 280 1 0 0;
-------------- next part --------------
#N canvas 0 0 768 608 10;
#X obj 493 87 r \$1-samplesize;
#X obj 338 45 r \$1-x;
#X obj 477 44 r \$1-y;
#X obj 477 108 *;
#X obj 354 88 r \$1-samplesize;
#X obj 338 109 *;
#X obj 323 245 vline~;
#X msg 323 223 \$1 \, \$2 \$3;
#X obj 323 192 pack 0 0 0;
#X obj 323 170 f;
#X obj 355 170 f;
#X obj 388 170 f;
#X obj 404 128 r \$1-grainspeed;
#X obj 323 267 tabread4~ \$1-grain;
#X obj 146 284 vline~;
#X obj 146 251 pack;
#X obj 169 177 r \$1-attack;
#X obj 169 214 f;
#X obj 211 215 del;
#X obj 135 177 b;
#X obj 135 215 f;
#X obj 234 195 r \$1-decay;
#X obj 211 250 pack;
#X obj 151 151 r \$1-grainlevel;
#X obj 290 311 *~;
#X obj 135 38 inlet;
#X obj 16 535 outlet~;
#X obj 404 150 * 1000;
#X obj 16 506 +~;
#X obj 32 464 inlet~;
#X obj 71 535 outlet~;
#X obj 71 506 +~;
#X obj 87 464 inlet~;
#X obj 207 352 expr $f1 \; if ($f1>63 \, (127-$f1)/63 \, 1) \; if ($f1<63
\, $f1/63 \, 1);
#X obj 290 440 *~;
#X obj 306 399 pack 0 30;
#X obj 306 419 vline~;
#X obj 389 440 *~;
#X obj 405 399 pack 0 30;
#X obj 405 419 vline~;
#X obj 207 332 f;
#X obj 219 311 r \$1-pan;
#X obj 135 82 t b b b b b;
#X obj 338 67 / 100;
#X obj 477 66 / 100;
#N canvas 0 0 657 389 block 0;
#X obj 142 233 spigot 1;
#X obj 186 310 outlet;
#X obj 142 67 inlet;
#X obj 193 207 0;
#X obj 225 206 1;
#X obj 225 161 del;
#X obj 250 116 t b a;
#X obj 241 137 +;
#X obj 241 74 r \$1-attack;
#X obj 250 94 r \$1-decay;
#X text 375 154 Block while envelope is active.;
#X obj 142 259 t b b a;
#X obj 184 182 del 0;
#X connect 0 0 11 0;
#X connect 2 0 0 0;
#X connect 3 0 0 1;
#X connect 4 0 0 1;
#X connect 5 0 4 0;
#X connect 6 0 7 0;
#X connect 6 1 7 1;
#X connect 7 0 5 1;
#X connect 8 0 7 0;
#X connect 9 0 6 0;
#X connect 11 0 5 0;
#X connect 11 1 12 0;
#X connect 11 2 1 0;
#X connect 12 0 3 0;
#X restore 135 58 pd block;
#X connect 0 0 3 1;
#X connect 1 0 43 0;
#X connect 2 0 44 0;
#X connect 3 0 10 1;
#X connect 4 0 5 1;
#X connect 5 0 9 1;
#X connect 6 0 13 0;
#X connect 7 0 6 0;
#X connect 8 0 7 0;
#X connect 9 0 8 0;
#X connect 10 0 8 1;
#X connect 11 0 8 2;
#X connect 12 0 27 0;
#X connect 13 0 24 1;
#X connect 14 0 24 0;
#X connect 15 0 14 0;
#X connect 16 0 17 0;
#X connect 17 0 18 1;
#X connect 17 0 15 1;
#X connect 18 0 22 0;
#X connect 19 0 20 0;
#X connect 19 0 18 0;
#X connect 20 0 15 0;
#X connect 21 0 22 1;
#X connect 22 0 14 0;
#X connect 23 0 20 1;
#X connect 24 0 34 0;
#X connect 24 0 37 0;
#X connect 25 0 45 0;
#X connect 27 0 11 1;
#X connect 28 0 26 0;
#X connect 29 0 28 1;
#X connect 31 0 30 0;
#X connect 32 0 31 1;
#X connect 33 1 35 0;
#X connect 33 2 38 0;
#X connect 34 0 28 0;
#X connect 35 0 36 0;
#X connect 36 0 34 1;
#X connect 37 0 31 0;
#X connect 38 0 39 0;
#X connect 39 0 37 1;
#X connect 40 0 33 0;
#X connect 41 0 40 1;
#X connect 42 0 19 0;
#X connect 42 1 9 0;
#X connect 42 2 10 0;
#X connect 42 3 11 0;
#X connect 42 4 40 0;
#X connect 43 0 5 0;
#X connect 44 0 3 0;
#X connect 45 0 42 0;
-------------- next part --------------
#N canvas 625 515 450 300 10;
#N canvas 375 219 569 589 grain 0;
#X obj 207 232 cos~;
#X obj 207 131 -~ 0.5;
#X obj 207 209 clip~ -0.5 0.5;
#X obj 207 255 +~ 1;
#X obj 208 401 *~;
#X floatatom 207 86 4 0 0 2 grain-rate - -;
#X obj 207 278 *~ 0.5;
#X text 257 240 raised;
#X obj 207 186 *~ 1;
#X floatatom 231 158 5 0 0 0 - - -;
#N canvas 372 184 827 457 grainphs~ 0;
#X floatatom 61 38 5 0 0 0 size - -;
#X obj 221 218 *~;
#X obj 220 375 +~;
#X obj 358 304 * 44.1;
#X obj 237 188 samphold~;
#X obj 242 350 samphold~;
#X obj 378 158 inlet~;
#X floatatom 61 58 5 0 0 0 start - -;
#X obj 219 404 outlet~;
#X obj 222 38 inlet~;
#X text 224 18 grain phasor;
#X text 404 27 envelope phasor-in \, to only change settings when envelope
is zero. This is to avoid clicks.;
#X text 277 404 to tabread4~;
#X text 482 101 start of grain in msec;
#X text 452 73 grain size in msecs (assuming SR of 44.1 kHz);
#X obj 241 241 noise~;
#X obj 241 306 *~ 0;
#X obj 358 247 * 44.1;
#X floatatom 149 59 5 0 0 0 rnd-st - -;
#X obj 241 330 +~ 0;
#X floatatom 149 39 5 0 0 0 rnd-sz - -;
#X obj 238 136 *~ 0;
#X obj 295 111 * 44.1;
#X obj 238 160 +~ 0;
#X obj 293 157 * 44.1;
#X obj 358 281 r \$0-start;
#X obj 358 228 r \$0-start-r;
#X obj 293 134 r \$0-size;
#X obj 295 82 r \$0-size-r;
#X obj 241 261 +~ 1;
#X obj 242 284 *~ 0.5;
#X obj 237 69 noise~;
#X obj 576 127 noise~;
#X obj 577 316 outlet~;
#X text 638 312 panning;
#X obj 649 142 r \$0-pan-r;
#X obj 577 198 *~ 0;
#X obj 576 233 samphold~;
#X floatatom 650 180 5 0 0 0 - - -;
#X connect 1 0 2 0;
#X connect 2 0 8 0;
#X connect 3 0 19 1;
#X connect 4 0 1 1;
#X connect 5 0 2 1;
#X connect 6 0 4 1;
#X connect 6 0 5 1;
#X connect 6 0 37 1;
#X connect 9 0 1 0;
#X connect 15 0 29 0;
#X connect 16 0 19 0;
#X connect 17 0 16 1;
#X connect 19 0 5 0;
#X connect 21 0 23 0;
#X connect 22 0 21 1;
#X connect 23 0 4 0;
#X connect 24 0 23 1;
#X connect 25 0 3 0;
#X connect 26 0 17 0;
#X connect 27 0 24 0;
#X connect 28 0 22 0;
#X connect 29 0 30 0;
#X connect 30 0 16 0;
#X connect 31 0 21 0;
#X connect 32 0 36 0;
#X connect 35 0 36 1;
#X connect 36 0 37 0;
#X connect 37 0 33 0;
#X connect 38 0 36 1;
#X coords 0 0 1 1 170 60 0;
#X restore 345 281 pd grainphs~;
#X obj 153 54 inlet;
#X obj 314 76 inlet;
#X obj 206 552 outlet~;
#X obj 243 38 r \$0-grain-rate;
#X obj 284 145 r \$0-bw;
#X obj 461 304 r \$0-source;
#X msg 456 325 set \$1;
#X obj 345 355 tabread4~ \$0-x;
#X obj 457 354 table \$0-x;
#X obj 207 107 phasor~;
#X obj 264 550 outlet~;
#X obj 263 511 *~;
#X obj 263 407 sig~ 1;
#X obj 207 513 *~;
#X obj 340 405 sig~ 1;
#X obj 263 438 +~;
#X obj 390 404 *~ -1;
#X obj 341 440 +~;
#X obj 341 462 *~ 0.5;
#X obj 263 465 *~ 0.5;
#X obj 412 497 snapshot~;
#X floatatom 414 525 5 0 0 0 - - -;
#X obj 410 475 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
-1;
#X obj 334 497 snapshot~;
#X floatatom 336 525 5 0 0 0 - - -;
#X obj 208 365 *~;
#N canvas 0 0 450 300 vol 0;
#X obj 185 188 samphold~;
#X obj 220 43 noise~;
#X obj 220 108 *~ 0;
#X obj 220 63 +~ 1;
#X obj 221 86 *~ 0.5;
#X obj 184 227 outlet~;
#X obj 276 85 r \$0-vol-r;
#X obj 134 99 sig~ 1;
#X obj 186 167 -~;
#X obj 134 67 r \$0-vol;
#X obj 204 141 *~;
#X obj 244 159 inlet~;
#X connect 0 0 5 0;
#X connect 1 0 3 0;
#X connect 2 0 10 1;
#X connect 3 0 4 0;
#X connect 4 0 2 0;
#X connect 6 0 2 1;
#X connect 7 0 8 0;
#X connect 7 0 10 0;
#X connect 8 0 0 0;
#X connect 9 0 7 0;
#X connect 10 0 8 1;
#X connect 11 0 0 1;
#X restore 225 334 pd vol;
#X connect 0 0 3 0;
#X connect 1 0 8 0;
#X connect 2 0 0 0;
#X connect 3 0 6 0;
#X connect 4 0 24 0;
#X connect 4 0 22 0;
#X connect 5 0 20 0;
#X connect 6 0 36 0;
#X connect 8 0 2 0;
#X connect 9 0 8 1;
#X connect 10 0 18 0;
#X connect 10 1 26 1;
#X connect 10 1 27 0;
#X connect 11 0 20 0;
#X connect 12 0 20 1;
#X connect 14 0 20 0;
#X connect 15 0 8 1;
#X connect 16 0 17 0;
#X connect 17 0 18 0;
#X connect 18 0 4 1;
#X connect 20 0 1 0;
#X connect 20 0 10 1;
#X connect 20 0 10 0;
#X connect 20 0 37 0;
#X connect 22 0 21 0;
#X connect 23 0 26 0;
#X connect 24 0 13 0;
#X connect 25 0 28 0;
#X connect 26 0 30 0;
#X connect 27 0 28 1;
#X connect 28 0 29 0;
#X connect 29 0 22 1;
#X connect 29 0 31 0;
#X connect 30 0 24 1;
#X connect 30 0 34 0;
#X connect 31 0 32 0;
#X connect 33 0 31 0;
#X connect 33 0 34 0;
#X connect 34 0 35 0;
#X connect 36 0 4 0;
#X connect 37 0 36 1;
#X restore 236 94 pd grain;
#X obj 235 187 outlet~;
#X obj 30 50 nbx 5 14 -1e+37 1e+37 0 0 \$0-grain-rate \$0-grain-rate
grain-rate 0 -6 0 10 -233017 -1 -1 0 256;
#X obj 30 75 nbx 5 14 -1e+37 1e+37 0 0 \$0-bw \$0-bw bw 0 -6 0 10 -225280
-1 -1 0 256;
#X obj 30 102 nbx 5 14 -1e+37 1e+37 0 0 \$0-start empty start 0 -6
0 10 -24198 -1 -1 0 256;
#X obj 91 102 nbx 5 14 -1e+37 1e+37 0 0 \$0-start-r \$0-start-r start-r
0 -6 0 10 -225271 -1 -1 0 256;
#X obj 175 22 inlet;
#X obj 278 32 inlet;
#X obj 330 32 inlet;
#X obj 31 130 nbx 5 14 -1e+37 1e+37 0 0 \$0-size \$0-size size 0 -6
0 10 -260818 -1 -1 0 256;
#X obj 92 130 nbx 5 14 -1e+37 1e+37 0 0 \$0-size-r \$0-size-r size-r
0 -6 0 10 -261681 -1 -1 0 256;
#X symbolatom 31 160 14 0 0 2 source - #0-source;
#X obj 29 238 r \$0-source;
#X msg 30 263 set \$1;
#X obj 227 24 inlet;
#X obj 225 52 s \$0-start;
#X obj 27 177 hsl 128 15 0 1 0 0 \$0-pan-r \$0-pan-r pan-r 50 8 0 8
-262144 -1 -1 0 1;
#X obj 328 134 outlet;
#X obj 260 165 outlet~;
#X obj 27 212 hsl 128 15 0 1 0 0 \$0-vol-r \$0-vol-r vol-r 50 8 0 8
-262144 -1 -1 0 1;
#X obj 27 194 hsl 128 15 0 1 0 0 \$0-vol \$0-vol vol 50 8 0 8 -262144
-1 -1 0 1;
#X connect 0 0 1 0;
#X connect 0 1 18 0;
#X connect 6 0 0 0;
#X connect 7 0 0 1;
#X connect 12 0 13 0;
#X connect 13 0 11 0;
#X connect 14 0 15 0;
#X coords 0 -1 1 1 140 210 1 20 20;
-------------- next part --------------
#N canvas 202 208 663 534 10;
#X obj 74 59 phasorgrain~;
#X obj 303 423 table source;
#X obj 298 390 soundfiler;
#X msg 298 370 read -resize \$1 source;
#X obj 299 348 openpanel;
#X msg 300 331 bang;
#X obj 74 320 *~ 0.2;
#X obj 123 320 *~ 0.2;
#X obj 74 342 dac~;
#X obj 150 299 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
-1 -1 10900 1;
#X obj 223 60 phasorgrain~;
#X text 389 194 set "source" to the source table;
#X connect 0 0 6 0;
#X connect 0 1 7 0;
#X connect 3 0 2 0;
#X connect 4 0 3 0;
#X connect 5 0 4 0;
#X connect 6 0 8 0;
#X connect 7 0 8 1;
#X connect 9 0 7 1;
#X connect 9 0 6 1;
#X connect 10 0 6 0;
#X connect 10 1 7 0;


More information about the Pd-list mailing list