aboutsummaryrefslogtreecommitdiff
path: root/pd/doc/4.fft.examples/06.sheepgoat2.pd
blob: b62cc7a5936135459ae7cdeee6775a83469eac8a (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
#N canvas 5 22 761 478 12;
#N canvas 6 0 911 637 fft-analysis 0;
#X obj 581 379 *~;
#X obj 542 379 *~;
#X obj 542 407 -~;
#X obj 62 529 *~;
#X obj 318 304 *~;
#X obj 243 145 *~;
#X obj 279 144 *~;
#X obj 205 144 *~;
#X obj 166 144 *~;
#X obj 166 172 +~;
#X obj 25 597 *~;
#X floatatom 643 486;
#X obj 357 221 *~;
#X obj 94 77 *~;
#X obj 114 50 inlet~;
#X obj 37 21 tabreceive~ hanning;
#X obj 94 101 rfft~;
#X obj 25 573 rifft~;
#X obj 25 623 outlet~;
#X text 43 3 Hanning window;
#X text 123 84 forward real FFT;
#X obj 318 220 *~;
#X obj 318 249 +~;
#X obj 783 612 block~ 2048 4;
#X obj 283 45 tabreceive~ last-real;
#X text 390 13 previous analysis;
#X obj 478 45 tabreceive~ last-imag;
#X obj 318 276 rsqrt~;
#X text 390 224 inverse modulus;
#X obj 244 173 -~;
#X obj 260 304 *~;
#X obj 146 453 *~;
#X obj 100 505 tabsend~ last-real;
#X obj 138 481 tabsend~ last-imag;
#X text 174 449 sic;
#X obj 626 559 -~;
#X obj 627 586 *~;
#X obj 628 612 clip~ 0 1;
#X obj 644 435 r threshold;
#X obj 14 548 *~;
#X text 328 145 quotient (current/last);
#X obj 643 510 t f f;
#X obj 643 535 *;
#X obj 277 510 tabsend~ precess-real;
#X obj 535 327 tabreceive~ precess-real;
#X obj 724 327 tabreceive~ precess-imag;
#X obj 317 480 tabsend~ precess-imag;
#X text 621 364 imaginary part of quotient;
#X obj 539 440 *~;
#X obj 643 462 / 100;
#X text 374 270 normalized quotient \, which encodes the phase precession in the bin between two successive analyses.;
#X text 623 381 of successive phase precession;
#X text 621 397 values gives pitch stability;
#X obj 731 492 r flip;
#X obj 731 517 sel 0;
#X msg 798 547 1e+20;
#X msg 731 548 -1e+20;
#X obj 9 370 *~ 0.001;
#X obj 73 371 *~ 0.001;
#X connect 0 0 2 1;
#X connect 1 0 2 0;
#X connect 2 0 31 0;
#X connect 2 0 48 0;
#X connect 2 0 48 1;
#X connect 3 0 17 1;
#X connect 4 0 46 0;
#X connect 4 0 1 0;
#X connect 5 0 29 0;
#X connect 6 0 29 1;
#X connect 7 0 9 1;
#X connect 8 0 9 0;
#X connect 9 0 30 0;
#X connect 9 0 21 0;
#X connect 9 0 21 1;
#X connect 10 0 18 0;
#X connect 11 0 41 0;
#X connect 12 0 22 1;
#X connect 13 0 16 0;
#X connect 14 0 13 1;
#X connect 15 0 10 1;
#X connect 15 0 13 0;
#X connect 16 0 6 0;
#X connect 16 0 8 0;
#X connect 16 0 32 0;
#X connect 16 0 57 0;
#X connect 16 1 7 0;
#X connect 16 1 5 0;
#X connect 16 1 33 0;
#X connect 16 1 58 0;
#X connect 17 0 10 0;
#X connect 21 0 22 0;
#X connect 22 0 27 0;
#X connect 24 0 8 1;
#X connect 24 0 5 1;
#X connect 26 0 7 1;
#X connect 26 0 6 1;
#X connect 27 0 4 1;
#X connect 27 0 30 1;
#X connect 29 0 4 0;
#X connect 29 0 12 0;
#X connect 29 0 12 1;
#X connect 30 0 43 0;
#X connect 30 0 0 0;
#X connect 31 0 33 0;
#X connect 31 0 32 0;
#X connect 31 0 43 0;
#X connect 31 0 46 0;
#X connect 35 0 36 0;
#X connect 36 0 37 0;
#X connect 37 0 3 1;
#X connect 37 0 39 1;
#X connect 38 0 49 0;
#X connect 39 0 17 0;
#X connect 41 0 42 0;
#X connect 41 1 42 1;
#X connect 42 0 35 1;
#X connect 44 0 1 1;
#X connect 45 0 0 1;
#X connect 48 0 35 0;
#X connect 49 0 11 0;
#X connect 53 0 54 0;
#X connect 54 0 56 0;
#X connect 54 1 55 0;
#X connect 55 0 36 1;
#X connect 56 0 36 1;
#X connect 57 0 39 0;
#X connect 58 0 3 0;
#X restore 58 368 pd fft-analysis;
#X floatatom 207 217;
#X obj 58 416 dac~;
#X obj 58 388 *~;
#N canvas 662 12 796 785 previous-analysis 0;
#X graph graph1 0 -1 2048 1 344 407 744 107;
#X array last-real 2048 float;
#X pop;
#X graph graph2 0 -1 2048 1 349 719 749 419;
#X array last-imag 2048 float;
#X pop;
#X msg 43 217 \; last-real resize 2048 \; last-imag resize 2048;
#X restore 262 368 pd previous-analysis;
#X obj 207 245 s threshold;
#X obj 106 421 line~;
#X floatatom 553 78;
#N canvas 194 37 397 591 output 0;
#X obj 73 225 t b;
#X obj 73 169 f;
#X obj 73 113 inlet;
#X text 79 89 mute;
#X obj 73 253 f;
#X msg 149 271 0;
#X msg 73 141 bang;
#X obj 73 197 moses 1;
#X obj 149 243 t b f;
#X obj 107 490 outlet;
#X msg 107 462 set \$1;
#X obj 206 181 moses 1;
#X obj 249 493 dbtorms;
#X obj 249 521 pack 0 100;
#X obj 206 153 r master-lvl;
#X obj 107 424 r master-lvl;
#X obj 92 317 s master-lvl;
#X obj 249 549 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 553 50 pd output;
#X msg 553 22 mute;
#X text 596 69 MASTER;
#X text 596 84 LEVEL;
#X obj 553 106 s master-lvl;
#X obj 106 393 r master-amp;
#X obj 582 277 loadbang;
#X obj 582 305 samplerate~;
#X text 30 161 click here first;
#X obj 472 334 hip~ 5;
#X obj 472 306 adc~ 1;
#X msg 545 265 bang;
#X obj 545 306 f;
#X obj 545 334 s insamprate;
#X obj 472 362 tabwrite~ sample;
#X text 465 235 record your own sample;
#N canvas 190 37 605 462 hanning-window 0;
#X obj 108 242 phasor~;
#X obj 108 275 cos~;
#X obj 27 386 tabwrite~ hanning;
#X obj 35 297 -~;
#X obj 33 257 sig~ 1;
#X msg 44 212 0;
#X text 166 16 CALCULATE HANNING;
#X text 166 32 WINDOW TABLE;
#X graph graph1 0 -1 2047 1 369 373 569 223;
#X array hanning 2048 float;
#X pop;
#X obj 109 154 / 1024;
#X obj 109 201 sig~;
#X text 171 152 sample rate / window size;
#X msg 27 169 bang;
#X obj 78 316 sig~ 0.5;
#X obj 58 353 *~;
#X obj 79 113 samplerate~;
#X obj 29 27 r window-size;
#X obj 29 62 t b f;
#X msg 385 402 \; hanning resize 2048;
#X connect 0 0 1 0;
#X connect 1 0 3 1;
#X connect 3 0 14 0;
#X connect 4 0 3 0;
#X connect 5 0 0 1;
#X connect 9 0 10 0;
#X connect 10 0 0 0;
#X connect 12 0 2 0;
#X connect 12 0 5 0;
#X connect 13 0 14 1;
#X connect 14 0 2 0;
#X connect 15 0 9 0;
#X connect 16 0 17 0;
#X connect 17 0 15 0;
#X connect 17 0 12 0;
#X connect 17 1 9 1;
#X restore 262 340 pd hanning-window;
#X text 121 15 PITCHED/UNPITCHED SEPARATION;
#X floatatom 356 205;
#X obj 356 233 s flip;
#X msg 356 177 0;
#X text 363 129 select:;
#X text 326 157 pitched;
#X text 391 156 noisy;
#X msg 391 176 1;
#X text 198 155 threshold;
#X text 204 171 (range;
#X text 207 189 0-100);
#X text 21 73 A low threshold means to let only very coherent signals through. A high one permits more of the signal to be considered "pitched". You can select either to hear the pitched or the noisy part.;
#N canvas 0 0 843 816 phase-precession 0;
#X graph graph1 0 -1 2048 1 349 423 749 123;
#X array precess-real 2048 float;
#X pop;
#X graph graph2 0 -1 2048 1 348 749 748 449;
#X array precess-imag 2048 float;
#X pop;
#X msg 45 91 \; precess-real resize 2048 \; precess-imag resize 2048;
#X restore 262 396 pd phase-precession;
#X msg 23 182 \; window-size 2048 \; flip 0 \; pd dsp 1;
#X text 20 35 Another patch to separate pitched from unpitched signals. This one does a frequency estimate for each bin and checks whether the frequency seems to be changing quickly or not.;
#X floatatom 58 323;
#X text 143 302 noise;
#X text 84 282 amplitudes;
#X floatatom 143 319;
#N canvas 190 43 534 552 test-signal 0;
#X obj 134 293 tabread4~ sample;
#X obj 134 268 line~;
#X obj 95 146 f;
#X obj 184 123 r insamprate;
#X obj 320 380 *~;
#X obj 136 350 *~;
#X obj 323 261 noise~;
#X obj 136 397 +~;
#X obj 164 351 dbtorms;
#X obj 346 380 dbtorms;
#X obj 164 328 inlet;
#X obj 346 358 inlet;
#X obj 323 337 *~;
#X obj 323 283 bp~ 2000 7;
#X obj 136 449 outlet~;
#X obj 110 98 r insamplength;
#X msg 134 247 0 \, \$1 \$2;
#X obj 134 221 pack 0 0;
#X obj 180 199 /;
#X obj 184 147 * 0.001;
#X obj 180 171 t b f;
#X text 312 234 nasty non-flat noise;
#X obj 136 422 hip~ 5;
#X obj 90 7 loadbang;
#X text 242 13 sample playback;
#X msg 90 27 1;
#X obj 89 67 metro 1000;
#X floatatom 89 46;
#X obj 346 314 phasor~ 3000;
#X connect 0 0 5 0;
#X connect 1 0 0 0;
#X connect 2 0 17 0;
#X connect 2 0 18 0;
#X connect 3 0 19 0;
#X connect 4 0 7 1;
#X connect 5 0 7 0;
#X connect 6 0 13 0;
#X connect 7 0 22 0;
#X connect 8 0 5 1;
#X connect 9 0 4 1;
#X connect 10 0 8 0;
#X connect 11 0 9 0;
#X connect 12 0 4 0;
#X connect 13 0 12 0;
#X connect 15 0 2 1;
#X connect 16 0 1 0;
#X connect 17 0 16 0;
#X connect 18 0 17 1;
#X connect 18 0 26 1;
#X connect 19 0 20 0;
#X connect 20 0 18 0;
#X connect 20 1 18 1;
#X connect 22 0 14 0;
#X connect 23 0 25 0;
#X connect 25 0 27 0;
#X connect 26 0 2 0;
#X connect 27 0 26 0;
#X connect 28 0 12 1;
#X restore 58 345 pd test-signal;
#X text 53 301 sampler;
#X text 549 158 read a sample;
#X msg 459 179 \; read-sample ../sound/bell.aiff 44100;
#N canvas 132 255 634 335 insample 0;
#X graph graph1 0 -1 155947 1 180 168 580 18;
#X array sample 155948 float;
#X pop;
#X obj 19 70 r read-sample;
#X obj 19 95 unpack s f;
#X obj 53 121 s insamprate;
#X obj 19 171 soundfiler;
#X msg 19 147 read -resize \$1 sample;
#X obj 19 201 s insamplength;
#X msg 357 197 \; sample resize 220500 \; insamplength 220500;
#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 restore 261 310 pd insample;
#X connect 0 0 3 0;
#X connect 1 0 5 0;
#X connect 3 0 2 0;
#X connect 3 0 2 1;
#X connect 6 0 3 1;
#X connect 7 0 12 0;
#X connect 8 0 7 0;
#X connect 9 0 8 0;
#X connect 13 0 6 0;
#X connect 14 0 15 0;
#X connect 15 0 20 1;
#X connect 17 0 22 0;
#X connect 18 0 17 0;
#X connect 19 0 20 0;
#X connect 19 0 22 0;
#X connect 20 0 21 0;
#X connect 26 0 27 0;
#X connect 28 0 26 0;
#X connect 32 0 26 0;
#X connect 40 0 44 0;
#X connect 43 0 44 1;
#X connect 44 0 0 0;