aboutsummaryrefslogtreecommitdiff
path: root/pd/doc/4.fft.examples/02.noisefft.pd
blob: 65b4d92fa02325628f0071f83e2f0f2cac050e7c (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
#N canvas 24 0 884 580 12;
#X obj 279 320 sig~;
#X obj 187 375 *~;
#X floatatom 279 274 0 0 0;
#X floatatom 183 273 0 0 0;
#X obj 183 319 sig~;
#X text 10 246 frequency;
#N canvas 45 63 925 609 fft-analysis 0;
#X obj 241 228 + 1;
#X msg 313 322 0;
#X obj 127 190 *~;
#X obj 38 69 *~;
#X obj 37 38 *~;
#X obj 72 436 *~;
#X graph graph1 0 0 1024 1 476 244 876 44;
#X array fftout 1024 float 0;
#X pop;
#X obj 37 4 inlet~;
#X obj 37 436 *~;
#X obj 94 271 tabsend~ fftout;
#X obj 76 38 tabreceive~ hanning;
#X obj 38 116 rfft~;
#X obj 37 461 rifft~;
#X obj 37 517 outlet~;
#X text 88 21 Hanning window;
#X text 31 94 forward real FFT;
#X text 52 479 inverse real FFT;
#X obj 36 555 block~ 1024 2;
#X obj 72 69 sig~ 0.03125;
#X graph graph1 0 0 1024 1 476 554 876 354;
#X array mask 1024 float 0;
#X pop;
#X obj 94 190 *~;
#X obj 94 214 +~;
#X floatatom 241 253 0 0 0;
#X msg 247 105 0;
#X obj 175 184 float;
#X obj 226 184 + 1;
#X obj 175 123 bang~;
#X obj 175 148 spigot;
#X floatatom 303 86 0 0 0;
#X obj 101 314 tabreceive~ mask;
#X obj 241 277 t b b f;
#X obj 266 322 /;
#X msg 266 298 1;
#X obj 78 344 -~;
#X obj 266 358 sig~;
#X obj 313 298 sel 0;
#X obj 247 388 *~;
#X obj 212 419 +~;
#X obj 227 446 tabsend~ mask;
#X floatatom 313 358 0 0 0;
#X obj 175 209 t f f;
#X text 100 231 power is square;
#X text 100 245 modulus of FFT;
#X obj 303 36 loadbang;
#X obj 298 181 <;
#X msg 253 36 bang;
#X text 237 11 click to make an average;
#X obj 91 408 sig~ 0.03125;
#X text 574 249 power spectrum of this window;
#X text 338 70 Set the number;
#X text 340 85 of frames to;
#X text 342 101 average;
#X text 593 573 average power spectrum;
#X text 272 253 current frame;
#X text 284 378 weight of new;
#X text 275 391 frame in moving;
#X text 304 404 average;
#X msg 303 61 100;
#X connect 0 0 22 0;
#X connect 1 0 34 0;
#X connect 1 0 39 0;
#X connect 2 0 21 1;
#X connect 3 0 11 0;
#X connect 4 0 3 0;
#X connect 5 0 12 1;
#X connect 7 0 4 0;
#X connect 8 0 12 0;
#X connect 10 0 4 1;
#X connect 11 0 8 0;
#X connect 11 0 20 0;
#X connect 11 0 20 1;
#X connect 11 1 5 0;
#X connect 11 1 2 0;
#X connect 11 1 2 1;
#X connect 12 0 13 0;
#X connect 18 0 3 1;
#X connect 20 0 21 0;
#X connect 21 0 9 0;
#X connect 21 0 33 0;
#X connect 22 0 30 0;
#X connect 23 0 24 1;
#X connect 23 0 44 0;
#X connect 24 0 40 0;
#X connect 24 0 25 0;
#X connect 25 0 24 1;
#X connect 26 0 27 0;
#X connect 27 0 24 0;
#X connect 28 0 44 1;
#X connect 29 0 33 1;
#X connect 29 0 37 1;
#X connect 30 1 32 0;
#X connect 30 2 31 1;
#X connect 31 0 34 0;
#X connect 31 0 39 0;
#X connect 32 0 31 0;
#X connect 33 0 36 0;
#X connect 34 0 36 1;
#X connect 35 0 1 0;
#X connect 36 0 37 0;
#X connect 37 0 38 0;
#X connect 40 0 44 0;
#X connect 40 1 0 0;
#X connect 43 0 57 0;
#X connect 44 0 27 1;
#X connect 44 0 35 0;
#X connect 45 0 23 0;
#X connect 47 0 8 1;
#X connect 47 0 5 1;
#X connect 57 0 28 0;
#X restore 99 412 pd fft-analysis;
#X obj 99 275 sig~;
#X obj 99 297 phasor~;
#X obj 99 319 cos~;
#X floatatom 99 253 0 0 0;
#X graph graph1 0 -1 1024 1 431 525 687 325;
#X array scope 1024 float 0;
#X pop;
#X obj 105 439 tabwrite~ scope;
#X msg 49 418 bang;
#X obj 99 230 / 256;
#X floatatom 98 165 0 0 0;
#X text 10 155 frequency;
#X text 21 175 in bins;
#X text 16 259 in Hz.;
#X text 42 398 scope;
#N canvas 84 23 767 580 hanning-window 0;
#X obj 92 198 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 171 0;
#X text 48 59 CALCULATE HANNING;
#X text 45 71 WINDOW TABLE;
#X graph graph1 0 -1 1024 1 290 509 690 209;
#X array hanning 1024 float 0;
#X pop;
#X msg 290 521 \; hanning resize 1024;
#X obj 114 145 / 1024;
#X obj 114 168 sig~;
#X text 175 148 sample rate / window size;
#X msg 23 94 bang;
#X obj 66 269 sig~ 0.5;
#X obj 49 300 *~;
#X obj 22 38 loadbang;
#X obj 113 117 samplerate~;
#X connect 0 0 1 0;
#X connect 1 0 3 1;
#X connect 3 0 15 0;
#X connect 4 0 3 0;
#X connect 5 0 0 1;
#X connect 10 0 11 0;
#X connect 11 0 0 0;
#X connect 13 0 2 0;
#X connect 13 0 5 0;
#X connect 13 0 17 0;
#X connect 14 0 15 1;
#X connect 15 0 2 0;
#X connect 16 0 13 0;
#X connect 17 0 10 0;
#X restore 328 203 pd hanning-window;
#X obj 99 346 *~;
#X text 177 250 oscillator;
#X obj 166 349 noise~;
#X text 278 249 noise;
#X obj 99 374 +~;
#X text 214 232 amplitudes;
#X msg 26 84 \; pd dsp 1;
#X obj 98 207 *;
#X obj 135 181 loadbang;
#X obj 135 205 samplerate~;
#X text 22 51 CLICK HERE;
#X floatatom 673 67 0 0 0;
#N canvas 194 37 397 591 output 0;
#X obj 61 212 t b;
#X obj 61 147 f;
#X obj 62 76 inlet;
#X text 73 46 mute;
#X obj 61 238 f;
#X msg 127 248 0;
#X msg 61 106 bang;
#X obj 62 167 moses 1;
#X obj 127 224 t b f;
#X obj 93 462 outlet;
#X msg 92 428 set \$1;
#X obj 78 286 s master-amp;
#X obj 175 130 r master-amp;
#X obj 91 360 r master-amp;
#X obj 175 158 moses 1;
#X obj 212 420 dbtorms;
#X obj 213 442 pack 0 100;
#X obj 214 466 s master-out;
#X connect 0 0 4 0;
#X connect 1 0 7 0;
#X connect 2 0 6 0;
#X connect 4 0 11 0;
#X connect 5 0 11 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 12 0 1 1;
#X connect 12 0 14 0;
#X connect 13 0 10 0;
#X connect 13 0 15 0;
#X connect 14 1 4 1;
#X connect 15 0 16 0;
#X connect 16 0 17 0;
#X restore 673 43 pd output;
#X msg 673 19 mute;
#X text 710 70 AMPLITUDE;
#X obj 673 93 s master-amp;
#X text 241 9 NOISE FLOOR MEASUREMENT;
#X text 149 31 This patch shows how you can average the RMS spectra
of many windows of an incoming "noise floor" signal to estimate its
spectrum. We'll use this in the "denoiser" patch \, next.;
#X text 30 65 TO START;
#X obj 99 515 dac~;
#X obj 132 467 r master-out;
#X text 148 100 The controls below let you send a mixture of a sine
wave and white noise. The analysis is done in a subwindow.;
#X obj 132 490 line~;
#X obj 99 490 *~;
#X obj 183 295 dbtorms;
#X obj 279 297 dbtorms;
#X connect 0 0 1 1;
#X connect 1 0 25 1;
#X connect 2 0 46 0;
#X connect 3 0 45 0;
#X connect 4 0 21 1;
#X connect 6 0 12 0;
#X connect 6 0 44 0;
#X connect 7 0 8 0;
#X connect 8 0 9 0;
#X connect 9 0 21 0;
#X connect 10 0 7 0;
#X connect 13 0 12 0;
#X connect 14 0 10 0;
#X connect 15 0 28 0;
#X connect 21 0 25 0;
#X connect 23 0 1 0;
#X connect 25 0 6 0;
#X connect 28 0 14 0;
#X connect 29 0 30 0;
#X connect 30 0 28 1;
#X connect 32 0 36 0;
#X connect 33 0 32 0;
#X connect 34 0 33 0;
#X connect 41 0 43 0;
#X connect 43 0 44 1;
#X connect 44 0 40 0;
#X connect 44 0 40 1;
#X connect 45 0 4 0;
#X connect 46 0 0 0;