aboutsummaryrefslogtreecommitdiff
path: root/pd/doc/4.fft.examples/10.phaselockedvoc.pd
blob: 7eea2f57f7c1d90233da5d76f6ec5d11917d7948 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
#N canvas 117 53 719 544 12;
#X floatatom 279 354 0 0 0;
#X msg 563 169 bang;
#X floatatom 186 351 0 0 0;
#X floatatom 84 350 0 0 0;
#N canvas 5 5 986 679 fft-analysis 0;
#X obj 177 242 *~;
#X obj 146 242 *~;
#X obj 146 264 -~;
#X obj 242 243 *~;
#X obj 211 243 *~;
#X obj 211 265 +~;
#X obj 256 73 *~;
#X obj 225 73 *~;
#X obj 197 73 *~;
#X obj 166 73 *~;
#X obj 166 95 +~;
#X obj 136 124 *~;
#X obj 49 560 *~;
#X obj 365 179 rfft~;
#X obj 291 34 rfft~;
#X obj 490 598 *~;
#X obj 685 288 r window-size;
#X obj 751 201 r sample-rate;
#X obj 609 234 f;
#X obj 603 52 r sample-rate;
#X obj 578 29 r window-size;
#X obj 601 98 t b f;
#X obj 578 121 /;
#X obj 520 598 *~;
#X obj 50 540 *~;
#X obj 66 517 rifft~;
#X obj 50 586 outlet~;
#X obj 625 446 print~;
#X msg 624 418 bang;
#X text 115 517 inverse real FFT;
#X obj 589 210 bang~;
#X obj 516 424 line~;
#X obj 578 143 * 1000;
#X text 630 136 window size (msec);
#X obj 603 76 * 4;
#X obj 632 159 r speed;
#X obj 709 160 r location;
#X obj 640 235 +;
#X obj 633 200 *;
#X msg 710 188 0;
#X obj 609 341 +;
#X obj 600 298 t f f;
#X msg 516 396 \$1 \, \$2 \$3;
#X obj 516 369 pack 0 0 0;
#X obj 752 229 / 1000;
#X obj 609 269 *;
#X text 639 270 reading location (samples);
#X obj 637 381 / 4;
#X text 669 386 hop size (samples);
#X obj 564 464 sig~;
#X obj 534 463 +~;
#X text 638 82 (overlap times parent SR);
#X text 638 69 local sample rate;
#X obj 103 10 tabreceive~ phase-real;
#X obj 106 124 *~;
#X obj 106 146 +~;
#X obj 106 170 rsqrt~;
#X obj 225 95 -~;
#X obj 147 200 *~;
#X obj 207 200 *~;
#X obj 266 9 tabreceive~ phase-imag;
#X obj 31 481 sig~;
#X obj 14 411 t b f;
#X msg 14 432 1;
#X obj 28 455 /;
#X obj 187 496 tabsend~ phase-real;
#X obj 288 474 tabsend~ phase-imag;
#X obj 50 71 sig~ 1.5e-20;
#X obj 632 180 * 0.01;
#X obj 691 212 s speed;
#X obj 474 263 s see-location;
#X obj 598 618 block~ 2048 4;
#X floatatom 672 360 0 0 0;
#X obj 670 339 *;
#X obj 829 234 r transpo;
#X obj 829 256 * 0.01;
#X obj 831 277 + 69;
#X obj 832 298 mtof;
#X obj 832 320 / 440;
#X obj 689 316 t b f;
#X obj 14 390 r window-size;
#X floatatom 835 353 0 0 0;
#X obj 551 543 tabreceive~ hanning;
#X obj 534 489 tabread4~ sample;
#X obj 516 515 tabread4~ sample;
#X obj 145 422 -~;
#X obj 249 385 r lock;
#X obj 162 291 ../../extra/lrshift~ 1;
#X obj 154 315 ../../extra/lrshift~ -1;
#X obj 227 339 ../../extra/lrshift~ 1;
#X obj 219 363 ../../extra/lrshift~ -1;
#X obj 210 432 -~;
#X obj 161 397 *~ 0;
#X obj 226 408 *~ 0;
#X connect 0 0 2 1;
#X connect 1 0 2 0;
#X connect 2 0 87 0;
#X connect 2 0 88 0;
#X connect 2 0 85 0;
#X connect 3 0 5 1;
#X connect 4 0 5 0;
#X connect 5 0 89 0;
#X connect 5 0 90 0;
#X connect 5 0 91 0;
#X connect 6 0 57 1;
#X connect 7 0 57 0;
#X connect 8 0 10 1;
#X connect 9 0 10 0;
#X connect 10 0 58 1;
#X connect 10 0 54 0;
#X connect 10 0 54 1;
#X connect 11 0 55 1;
#X connect 12 0 26 0;
#X connect 13 0 1 1;
#X connect 13 0 3 1;
#X connect 13 1 0 1;
#X connect 13 1 4 1;
#X connect 14 0 9 1;
#X connect 14 0 7 1;
#X connect 14 1 6 1;
#X connect 14 1 8 1;
#X connect 15 0 14 0;
#X connect 16 0 73 0;
#X connect 17 0 44 0;
#X connect 18 0 37 0;
#X connect 18 0 45 0;
#X connect 18 0 70 0;
#X connect 19 0 34 0;
#X connect 20 0 22 0;
#X connect 21 0 22 0;
#X connect 21 1 22 1;
#X connect 22 0 32 0;
#X connect 23 0 13 0;
#X connect 24 0 12 0;
#X connect 25 0 24 1;
#X connect 28 0 27 0;
#X connect 30 0 18 0;
#X connect 31 0 27 0;
#X connect 31 0 50 0;
#X connect 31 0 84 0;
#X connect 32 0 43 2;
#X connect 32 0 38 1;
#X connect 34 0 21 0;
#X connect 35 0 68 0;
#X connect 36 0 39 0;
#X connect 36 0 18 1;
#X connect 37 0 18 1;
#X connect 38 0 37 1;
#X connect 39 0 69 0;
#X connect 40 0 43 1;
#X connect 41 0 43 0;
#X connect 41 1 40 0;
#X connect 42 0 31 0;
#X connect 43 0 42 0;
#X connect 44 0 45 1;
#X connect 45 0 41 0;
#X connect 47 0 49 0;
#X connect 49 0 50 1;
#X connect 50 0 83 0;
#X connect 53 0 9 0;
#X connect 53 0 6 0;
#X connect 54 0 55 0;
#X connect 55 0 56 0;
#X connect 56 0 58 0;
#X connect 56 0 59 0;
#X connect 57 0 59 1;
#X connect 57 0 11 0;
#X connect 57 0 11 1;
#X connect 58 0 1 0;
#X connect 58 0 4 0;
#X connect 59 0 0 0;
#X connect 59 0 3 0;
#X connect 60 0 7 0;
#X connect 60 0 8 0;
#X connect 61 0 24 0;
#X connect 62 0 63 0;
#X connect 62 1 64 1;
#X connect 63 0 64 0;
#X connect 64 0 61 0;
#X connect 67 0 10 0;
#X connect 68 0 38 0;
#X connect 72 0 47 0;
#X connect 72 0 40 1;
#X connect 73 0 72 0;
#X connect 74 0 75 0;
#X connect 75 0 76 0;
#X connect 76 0 77 0;
#X connect 77 0 78 0;
#X connect 78 0 79 0;
#X connect 78 0 81 0;
#X connect 79 0 73 0;
#X connect 79 1 73 1;
#X connect 80 0 62 0;
#X connect 82 0 23 1;
#X connect 82 0 15 1;
#X connect 82 0 12 1;
#X connect 83 0 23 0;
#X connect 84 0 15 0;
#X connect 85 0 65 0;
#X connect 85 0 25 0;
#X connect 86 0 93 1;
#X connect 86 0 92 1;
#X connect 87 0 92 0;
#X connect 88 0 92 0;
#X connect 89 0 93 0;
#X connect 90 0 93 0;
#X connect 91 0 66 0;
#X connect 91 0 25 1;
#X connect 92 0 85 1;
#X connect 93 0 91 1;
#X restore 37 422 pd fft-analysis;
#X obj 37 508 dac~;
#N canvas 260 23 647 768 phase-tables 0;
#N canvas 0 0 450 300 graph2 0;
#X array phase-imag 4096 float 0;
#X coords 0 1 4096 -1 400 300 1;
#X restore 172 290 graph;
#N canvas 0 0 450 300 graph3 0;
#X array phase-real 4096 float 0;
#X coords 0 1 4096 -1 400 300 1;
#X restore 170 17 graph;
#X msg 167 564 \; phase-real resize 4096 \; phase-imag resize 4096
;
#X restore 419 489 pd phase-tables;
#X obj 37 448 hip~ 5;
#X obj 37 478 *~;
#N canvas 249 280 600 398 loc&precess 0;
#X floatatom 160 229 0 0 0;
#X msg 270 175 set \$1;
#X obj 269 207 outlet;
#X obj 83 267 outlet;
#X obj 171 71 r location;
#X msg 82 235 set \$1;
#X obj 269 149 r speed;
#X obj 55 70 r see-location;
#X obj 67 102 t b f;
#X obj 82 214 f;
#X obj 54 127 int;
#X obj 54 151 sel 0;
#X msg 153 102 1;
#X msg 201 101 0;
#X obj 110 179 del 300;
#X connect 1 0 2 0;
#X connect 4 0 8 0;
#X connect 5 0 3 0;
#X connect 6 0 1 0;
#X connect 7 0 8 0;
#X connect 8 0 10 0;
#X connect 8 1 9 1;
#X connect 9 0 5 0;
#X connect 10 0 11 0;
#X connect 11 0 12 0;
#X connect 11 0 14 0;
#X connect 12 0 10 1;
#X connect 13 0 10 1;
#X connect 14 0 13 0;
#X connect 14 0 9 0;
#X restore 84 322 pd loc&precess;
#N canvas 0 0 600 400 setlocprecess 0;
#X obj 173 82 inlet;
#X obj 73 80 inlet;
#X obj 169 105 s speed;
#X obj 74 105 s location;
#X connect 0 0 2 0;
#X connect 1 0 3 0;
#X restore 84 373 pd setlocprecess;
#X msg 41 333 0;
#X obj 606 182 adc~;
#X obj 279 379 s transpo;
#X obj 277 305 r transpo;
#X msg 277 331 set \$1;
#X msg 404 287 \; location 0 \; speed 200;
#N canvas 138 111 767 761 hanning-window 0;
#X obj 92 206 phasor~;
#X obj 92 234 cos~;
#X obj 23 328 tabwrite~ hanning;
#X obj 30 252 -~;
#X obj 28 218 sig~ 1;
#X msg 37 180 0;
#X text 141 13 CALCULATE HANNING;
#X text 141 27 WINDOW TABLE;
#N canvas 0 0 450 300 graph1 0;
#X array hanning 4096 float 0;
#X coords 0 1 4096 -1 400 300 1;
#X restore 275 281 graph;
#X obj 93 171 sig~;
#X text 175 148 sample rate / window size;
#X msg 23 144 bang;
#X obj 66 269 sig~ 0.5;
#X obj 49 300 *~;
#X obj 94 80 samplerate~;
#X obj 25 23 r window-size;
#X obj 25 53 t b f;
#X msg 275 547 \; hanning resize 4096;
#X obj 93 132 /;
#X connect 0 0 1 0;
#X connect 1 0 3 1;
#X connect 3 0 13 0;
#X connect 4 0 3 0;
#X connect 5 0 0 1;
#X connect 9 0 0 0;
#X connect 11 0 2 0;
#X connect 11 0 5 0;
#X connect 12 0 13 1;
#X connect 13 0 2 0;
#X connect 14 0 18 0;
#X connect 15 0 16 0;
#X connect 16 0 14 0;
#X connect 16 0 11 0;
#X connect 16 1 18 1;
#X connect 18 0 9 0;
#X restore 417 512 pd hanning-window;
#X msg 25 192 \; window-size 2048 \; transpo 0 \; pd dsp 1;
#X floatatom 587 68 0 0 0;
#N canvas 194 37 397 591 output 0;
#X obj 62 191 t b;
#X obj 62 144 f;
#X obj 62 96 inlet;
#X text 67 76 mute;
#X obj 62 215 f;
#X msg 127 230 0;
#X msg 62 120 bang;
#X obj 62 167 moses 1;
#X obj 127 207 t b f;
#X obj 91 417 outlet;
#X msg 91 393 set \$1;
#X obj 175 154 moses 1;
#X obj 212 419 dbtorms;
#X obj 212 443 pack 0 100;
#X obj 175 130 r master-lvl;
#X obj 91 360 r master-lvl;
#X obj 78 269 s master-lvl;
#X obj 212 467 s master-amp;
#X connect 0 0 4 0;
#X connect 1 0 7 0;
#X connect 2 0 6 0;
#X connect 4 0 16 0;
#X connect 5 0 16 0;
#X connect 6 0 1 0;
#X connect 7 0 0 0;
#X connect 7 1 8 0;
#X connect 8 0 5 0;
#X connect 10 0 9 0;
#X connect 11 1 4 1;
#X connect 12 0 13 0;
#X connect 13 0 17 0;
#X connect 14 0 1 1;
#X connect 14 0 11 0;
#X connect 15 0 10 0;
#X connect 15 0 12 0;
#X restore 587 44 pd output;
#X msg 587 20 mute;
#X text 624 60 MASTER;
#X text 623 74 LEVEL;
#X obj 587 92 s master-lvl;
#X text 35 173 click here first;
#X obj 81 506 line~;
#X obj 81 482 r master-amp;
#X text 49 271 set location;
#X text 48 285 and stop;
#X text 48 299 precession;
#X text 166 270 precession;
#X text 165 286 speed in;
#X text 165 300 hundredths;
#X text 275 264 transposition;
#X text 276 282 in cents;
#X text 512 242 examples;
#X text 407 266 contraction;
#X text 623 265 expansion;
#X msg 612 288 \; location 0 \; speed 10;
#X obj 419 360 loadbang;
#X obj 423 383 samplerate~;
#X obj 419 405 s sample-rate;
#N canvas 132 255 846 368 insample 0;
#N canvas 0 0 450 300 graph1 0;
#X array sample 92615 float 0;
#X coords 0 1 92614 -1 400 150 1;
#X restore 406 155 graph;
#X obj 12 19 r read-sample;
#X obj 12 132 unpack s f;
#X obj 46 158 s insamprate;
#X obj 12 208 soundfiler;
#X msg 12 184 read -resize \$1 sample;
#X obj 12 238 s insamplength;
#X msg 20 289 \; sample resize 220500 \; insamplength 220500;
#X obj 22 46 inlet;
#X obj 22 73 openpanel;
#X obj 22 101 pack s 50;
#X connect 1 0 2 0;
#X connect 2 0 5 0;
#X connect 2 1 3 0;
#X connect 4 0 6 0;
#X connect 5 0 4 0;
#X connect 8 0 9 0;
#X connect 9 0 10 0;
#X connect 10 0 2 0;
#X restore 419 463 pd insample;
#X msg 190 163 \; read-sample ../sound/bell.aiff \; transpo 0;
#X msg 190 217 \; read-sample ../sound/voice.wav \; transpo -530;
#X obj 563 204 tabwrite~ sample;
#X obj 583 411 s lock;
#X floatatom 583 386 0 0 0;
#X msg 584 359 0;
#X msg 618 358 1;
#X text 135 18 PHASE LOCKING VOCODER;
#X text 32 46 This is a spin on the phase vocoder which prevents beating
between adjacent channels of the FFT. This is described in "Phase Locked
Vocoder" (reprinted on MSP's web page) and further improved by Laroche
and Dolson \, reported in ICMC97.;
#X obj 419 440 bng 15 250 50 0 empty empty read-sample 20 8 0 12 -262144
-1 -1;
#X text 528 265 normal;
#X msg 507 288 \; location 0 \; speed 100;
#X connect 0 0 13 0;
#X connect 1 0 46 0;
#X connect 2 0 10 1;
#X connect 3 0 10 0;
#X connect 4 0 7 0;
#X connect 7 0 8 0;
#X connect 8 0 5 0;
#X connect 8 0 5 1;
#X connect 9 0 3 0;
#X connect 9 1 2 0;
#X connect 11 0 3 0;
#X connect 12 0 46 0;
#X connect 14 0 15 0;
#X connect 15 0 0 0;
#X connect 19 0 24 0;
#X connect 20 0 19 0;
#X connect 21 0 20 0;
#X connect 26 0 8 1;
#X connect 27 0 26 0;
#X connect 40 0 41 0;
#X connect 41 0 42 0;
#X connect 48 0 47 0;
#X connect 49 0 48 0;
#X connect 50 0 48 0;
#X connect 53 0 43 0;