This file is indexed.

/usr/share/sitplus/pd/fft-pitchshifter.pd is in sitplus-data 1.0.3-5.1build5.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
#N canvas 282 231 743 420 10;
#N canvas 511 112 616 776 fft-analysis 0;
#X obj 51 477 *~;
#X obj 18 477 *~;
#X obj 18 499 -~;
#X obj 167 475 *~;
#X obj 136 475 *~;
#X obj 136 497 +~;
#X obj 109 193 *~;
#X obj 78 193 *~;
#X obj 50 193 *~;
#X obj 19 193 *~;
#X obj 19 218 +~;
#X obj 127 379 *~;
#X obj 20 622 *~;
#X obj 236 175 rfft~;
#X obj 108 161 rfft~;
#X obj 19 564 rifft~;
#X obj 21 646 outlet~;
#X obj 97 379 *~;
#X obj 97 401 +~;
#X obj 124 218 -~;
#X obj 18 431 *~;
#X obj 51 432 *~;
#X obj 21 728 block~;
#X obj 19 349 +~ 1e-015;
#X obj 19 598 *~;
#X obj 52 598 tabreceive~ \$0-hann;
#X obj 127 643 expr 2/(3*$f1);
#X obj 415 626 loadbang;
#X msg 21 703 set \$1 4;
#X obj 97 425 q8_rsqrt~;
#X obj 121 69 *~;
#X obj 89 69 *~;
#X obj 89 91 +~;
#X obj 159 94 q8_rsqrt~;
#X obj 159 71 +~ 1e-020;
#X obj 73 119 *~;
#X obj 19 118 *~;
#X obj 29 245 lrshift~ 1;
#X obj 24 269 lrshift~ -1;
#X obj 141 245 lrshift~ 1;
#X obj 133 269 lrshift~ -1;
#X obj 35 300 *~;
#X obj 159 312 *~;
#X obj 19 325 +~;
#X obj 125 331 +~;
#N canvas 139 105 520 694 read-windows 0;
#X obj 18 358 line~;
#X obj 16 523 outlet~;
#X obj 125 531 outlet~;
#X text 220 313 "back" window 1/4 cycle behind "front" one;
#X obj 16 441 vd~ \$0-input;
#X obj 123 443 vd~ \$0-input;
#X obj 18 266 pack f f;
#X obj 31 143 t b f;
#X obj 31 184 -;
#X obj 90 145 *;
#X obj 90 114 - 1;
#X obj 90 57 mtof;
#X obj 90 77 / 440;
#X obj 90 38 + 69;
#X obj 353 123 samplerate~;
#X obj 328 102 t f b;
#X obj 328 141 /;
#X obj 328 163 * 1000;
#X obj 90 16 * 0.01;
#X text 376 163 window size (ms);
#X obj 18 207 f;
#X obj 164 468 tabreceive~ \$0-hann;
#X obj 16 492 *~;
#X obj 124 503 *~;
#X obj 18 75 bang~;
#X obj 197 286 *;
#X obj 206 263 t b f;
#X text 235 288 stretched window size (ms);
#X obj 90 -6 r \$0-transpo;
#X obj 328 81 r \$0-window-size;
#X obj 220 210 / 4;
#X text 252 207 computation time for an overlap of 4;
#X obj 18 230 / 4;
#X obj 71 229 / 4;
#X obj 17 393 +~;
#X obj 193 310 / 4;
#X obj 135 369 / 4;
#X text 47 395 '+' since a bigger value in vd~ means 'earlier'.;
#X text 114 110 subtract speed of read-out \, when;
#X text 114 122 delay-time is static;
#X text 134 37 convert cents of halftones to read-out speed;
#X text 41 229 *);
#X text 93 229 *);
#X text 162 367 *);
#X text 67 336 *);
#X obj 18 287 t l b;
#X obj 43 333 / 4;
#X text 57 165 initial delay (ms);
#X text 71 307 initial delay (ms);
#X text 21 556 *);
#X text 24 572 it seems that if a time is specified in ms instead of
samples \, the value has to be divided by the overlap factor (4 in
this case) in order for the vd~ to read out the desired amount of samples.
i'm still unsure what the reason for this might be.;
#X obj 31 164 20;
#X obj 43 309 20;
#X connect 0 0 5 0;
#X connect 0 0 34 0;
#X connect 4 0 22 0;
#X connect 5 0 23 0;
#X connect 6 0 45 0;
#X connect 7 0 51 0;
#X connect 7 1 8 1;
#X connect 8 0 20 1;
#X connect 9 0 7 0;
#X connect 10 0 9 0;
#X connect 11 0 12 0;
#X connect 12 0 10 0;
#X connect 12 0 25 0;
#X connect 13 0 11 0;
#X connect 14 0 16 1;
#X connect 15 0 16 0;
#X connect 15 1 14 0;
#X connect 16 0 17 0;
#X connect 17 0 9 1;
#X connect 17 0 26 0;
#X connect 17 0 30 0;
#X connect 18 0 13 0;
#X connect 20 0 32 0;
#X connect 21 0 23 1;
#X connect 21 0 22 1;
#X connect 22 0 1 0;
#X connect 23 0 2 0;
#X connect 24 0 20 0;
#X connect 25 0 35 0;
#X connect 26 0 25 0;
#X connect 26 1 25 1;
#X connect 28 0 18 0;
#X connect 29 0 15 0;
#X connect 30 0 33 0;
#X connect 32 0 6 0;
#X connect 33 0 6 1;
#X connect 34 0 4 0;
#X connect 35 0 36 0;
#X connect 36 0 34 1;
#X connect 45 0 0 0;
#X connect 45 1 52 0;
#X connect 46 0 0 0;
#X connect 51 0 8 0;
#X connect 52 0 46 0;
#X restore 379 86 pd read-windows;
#X obj 137 543 tabsend~ \$0-prev-imag;
#X obj 136 567 tabsend~ \$0-prev-real;
#X obj 73 29 tabreceive~ \$0-prev-imag;
#X obj 20 8 tabreceive~ \$0-prev-real;
#X obj 415 648 \$0;
#X obj 21 679 r \$0-window-size;
#X obj 127 622 r \$0-window-size;
#X text 231 333 the left part is taken from miller puckette's audio
example I07.phase.vocoder.pd from the doc.;
#X obj 187 290 r \$0-lock;
#X msg 415 669 \; \$1-window-size 2048 \; \$1-transpo 0 \; \$1-lock
1 \;;
#X connect 0 0 2 1;
#X connect 1 0 2 0;
#X connect 2 0 15 0;
#X connect 2 0 47 0;
#X connect 3 0 5 1;
#X connect 4 0 5 0;
#X connect 5 0 15 1;
#X connect 5 0 46 0;
#X connect 6 0 19 1;
#X connect 7 0 19 0;
#X connect 8 0 10 1;
#X connect 9 0 10 0;
#X connect 10 0 38 0;
#X connect 10 0 37 0;
#X connect 10 0 43 0;
#X connect 11 0 18 1;
#X connect 12 0 16 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 24 0;
#X connect 17 0 18 0;
#X connect 18 0 29 0;
#X connect 19 0 39 0;
#X connect 19 0 40 0;
#X connect 19 0 44 0;
#X connect 20 0 1 0;
#X connect 20 0 4 0;
#X connect 21 0 0 0;
#X connect 21 0 3 0;
#X connect 23 0 17 1;
#X connect 23 0 17 0;
#X connect 23 0 20 0;
#X connect 24 0 12 0;
#X connect 25 0 24 1;
#X connect 26 0 12 1;
#X connect 27 0 50 0;
#X connect 28 0 22 0;
#X connect 29 0 20 1;
#X connect 29 0 21 1;
#X connect 30 0 32 1;
#X connect 31 0 32 0;
#X connect 32 0 34 0;
#X connect 33 0 35 1;
#X connect 33 0 36 1;
#X connect 34 0 33 0;
#X connect 35 0 8 0;
#X connect 35 0 7 0;
#X connect 36 0 9 0;
#X connect 36 0 6 0;
#X connect 37 0 41 0;
#X connect 38 0 41 0;
#X connect 39 0 42 0;
#X connect 40 0 42 0;
#X connect 41 0 43 1;
#X connect 42 0 44 1;
#X connect 43 0 23 0;
#X connect 44 0 11 0;
#X connect 44 0 11 1;
#X connect 44 0 21 0;
#X connect 45 0 14 0;
#X connect 45 1 13 0;
#X connect 48 0 30 1;
#X connect 48 0 30 0;
#X connect 48 0 35 0;
#X connect 49 0 31 1;
#X connect 49 0 31 0;
#X connect 49 0 36 0;
#X connect 50 0 55 0;
#X connect 51 0 28 0;
#X connect 52 0 26 0;
#X connect 54 0 41 1;
#X connect 54 0 42 1;
#X restore 205 145 pd fft-analysis;
#N canvas 260 22 667 789 phase-tables 0;
#N canvas 0 0 450 300 (subpatch) 0;
#X array \$0-prev-imag 4096 float 0;
#X coords 0 1000 4096 -1000 400 300 1;
#X restore 169 326 graph;
#N canvas 0 0 450 300 (subpatch) 0;
#X array \$0-prev-real 4096 float 0;
#X coords 0 500 4096 -500 400 300 1;
#X restore 170 17 graph;
#X restore 328 174 pd phase-tables;
#N canvas 0 110 400 404 hann-window 0;
#N canvas 0 0 450 300 (subpatch) 0;
#X array \$0-hann 2048 float 0;
#X coords 0 1 2047 0 300 100 1;
#X restore 36 253 graph;
#X obj 288 130 osc~;
#X obj 288 155 *~ -0.5;
#X obj 288 179 +~ 0.5;
#X obj 241 212 tabwrite~ \$0-hann;
#X obj 26 118 samplerate~;
#X obj 26 142 /;
#X msg 161 71 resize \$1;
#X obj 161 95 s \$0-hann;
#X msg 292 95 0;
#X obj 240 96 t f b;
#X obj 26 67 r \$0-window-size;
#X obj 26 166 s \$0-window-hz;
#X obj 240 70 r \$0-window-hz;
#X obj 26 94 t b f f;
#X text 22 8 calculate Hann window table (variable window size) and
constants window-hz (fundamental frequency of analysis).;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 5 0 6 0;
#X connect 6 0 12 0;
#X connect 7 0 8 0;
#X connect 9 0 1 1;
#X connect 10 0 1 0;
#X connect 10 1 4 0;
#X connect 10 1 9 0;
#X connect 11 0 14 0;
#X connect 13 0 10 0;
#X connect 14 0 5 0;
#X connect 14 1 6 1;
#X connect 14 2 7 0;
#X restore 328 198 pd hann-window;
#X obj 204 105 delwrite~ \$0-input 1000;
#X obj 204 33 inlet~;
#X obj 206 232 outlet~;
#X obj 376 111 s \$0-transpo;
#X obj 285 36 inlet;
#X text 330 34 transposition in cents;
#X obj 517 107 s \$0-window-size;
#X obj 492 36 inlet;
#X obj 376 87 f;
#X obj 492 59 t b f;
#X text 535 35 window size in samples;
#X text 534 51 (e.g. 512 \, 1024 \, 2048 4096);
#X text 537 67 init-value is 2048;
#X obj 96 90 != 0;
#X obj 101 285 switch~;
#X obj 88 127 route 1;
#X msg 70 243 1;
#X msg 126 243 0;
#X msg 95 191 stop;
#X obj 68 158 t b b;
#X obj 126 219 delay;
#X msg 127 155 200;
#X text 51 309 Trick to clear the delay buffer before subpatch get
switched off;
#X connect 0 0 5 0;
#X connect 4 0 3 0;
#X connect 7 0 11 0;
#X connect 7 0 16 0;
#X connect 10 0 12 0;
#X connect 11 0 6 0;
#X connect 12 0 11 0;
#X connect 12 1 9 0;
#X connect 16 0 18 0;
#X connect 18 0 22 0;
#X connect 18 1 24 0;
#X connect 19 0 17 0;
#X connect 20 0 17 0;
#X connect 21 0 23 0;
#X connect 22 0 19 0;
#X connect 22 1 21 0;
#X connect 23 0 20 0;
#X connect 24 0 23 0;