aboutsummaryrefslogtreecommitdiff
path: root/externals/grill/fftease/pd
diff options
context:
space:
mode:
authorThomas Grill <xovo@users.sourceforge.net>2003-01-19 21:11:59 +0000
committerThomas Grill <xovo@users.sourceforge.net>2003-01-19 21:11:59 +0000
commitcada39a002fbbe9bc848f963c3eb7faa65122228 (patch)
treea6b4c611989fa15cf0f59c656c81a2e388041324 /externals/grill/fftease/pd
parent9ff5ccdea43ff2a954c1a400516dc6858e188e9c (diff)
""
svn path=/trunk/; revision=345
Diffstat (limited to 'externals/grill/fftease/pd')
-rw-r--r--externals/grill/fftease/pd/burrow.pd71
-rw-r--r--externals/grill/fftease/pd/cross.pd77
-rw-r--r--externals/grill/fftease/pd/dentist.pd49
-rw-r--r--externals/grill/fftease/pd/disarray.pd68
-rw-r--r--externals/grill/fftease/pd/drown.pd61
-rw-r--r--externals/grill/fftease/pd/ether.pd67
-rw-r--r--externals/grill/fftease/pd/morphine.pd77
-rw-r--r--externals/grill/fftease/pd/scrape.pd72
-rw-r--r--externals/grill/fftease/pd/shapee.pd62
-rw-r--r--externals/grill/fftease/pd/swinger.pd62
-rw-r--r--externals/grill/fftease/pd/taint.pd83
-rw-r--r--externals/grill/fftease/pd/thresher.pd44
-rw-r--r--externals/grill/fftease/pd/vacancy.pd97
-rw-r--r--externals/grill/fftease/pd/xsyn.pd61
14 files changed, 884 insertions, 67 deletions
diff --git a/externals/grill/fftease/pd/burrow.pd b/externals/grill/fftease/pd/burrow.pd
index 8b66f0f5..e4adade1 100644
--- a/externals/grill/fftease/pd/burrow.pd
+++ b/externals/grill/fftease/pd/burrow.pd
@@ -1,32 +1,72 @@
-#N canvas 398 240 594 360 12;
+#N canvas 143 237 600 366 12;
#X msg 17 161 getattributes;
#X obj 391 278 print A;
#X obj 161 210 burrow~ -30 -18 0;
#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
1 1;
#X msg 17 103 enable \$1;
-#X obj 184 78 tgl 20 0 empty empty inverse_filtering 0 -6 0 10 -225271
--1 -1 1 1;
-#X msg 184 102 invert \$1;
-#X obj 373 78 nbx 5 18 -100 0 0 0 empty empty filtering_threshold(dB)
-0 -6 0 10 -225271 -1 -1 -82 256;
+#X obj 211 78 tgl 20 0 empty empty inverse_filtering 0 -6 0 10 -225271
+-1 -1 0 1;
+#X msg 211 102 invert \$1;
+#X obj 373 78 nbx 5 18 -100 0 0 1 empty empty filtering_threshold(dB)
+0 -6 0 10 -225271 -1 -1 -30 256;
#X msg 373 100 thresh \$1;
-#X obj 374 145 nbx 5 18 -100 0 0 0 empty empty filter_multiplier(dB)
-0 -6 0 10 -225271 -1 -1 -12 256;
+#X obj 374 145 nbx 5 18 -100 0 0 1 empty empty filter_multiplier(dB)
+0 -6 0 10 -225271 -1 -1 -18 256;
#X msg 374 167 mult \$1;
#X obj 161 275 *~;
#X obj 202 280 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
--261681 -1 -1 8000 1;
+-261681 -1 -1 10000 1;
#X obj 150 312 dac~;
-#X obj 162 162 adc~ 1;
#X text 390 297 print attributes;
#X text 15 143 list attributes;
#X obj 16 8 cnv 15 550 40 empty empty burrow~ 10 22 0 24 -260818 -1
0;
#X text 188 8 FFTease (C)Lyon \, Penrose (for Max/MSP);
#X text 188 28 flext port by Thomas Grill;
-#X obj 292 162 adc~ 2;
#X text 222 231 threshold \, multiplier \, invert;
+#X obj 138 80 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
+-1;
+#N canvas 35 47 456 306 schubert 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/schubert.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 233 172 pd schubert;
+#N canvas 35 47 460 310 nixon 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/nixon.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 161 172 pd nixon;
+#X msg 17 259 getthresh;
+#X msg 17 284 getmult;
+#X msg 17 234 getinvert;
+#X text 15 213 get attributes;
#X connect 0 0 2 0;
#X connect 2 0 11 0;
#X connect 2 1 1 0;
@@ -41,5 +81,10 @@
#X connect 11 0 13 0;
#X connect 11 0 13 1;
#X connect 12 0 11 1;
-#X connect 14 0 2 0;
-#X connect 20 0 2 1;
+#X connect 20 0 21 0;
+#X connect 20 0 22 0;
+#X connect 21 0 2 1;
+#X connect 22 0 2 0;
+#X connect 23 0 2 0;
+#X connect 24 0 2 0;
+#X connect 25 0 2 0;
diff --git a/externals/grill/fftease/pd/cross.pd b/externals/grill/fftease/pd/cross.pd
index 9801cf09..593927c7 100644
--- a/externals/grill/fftease/pd/cross.pd
+++ b/externals/grill/fftease/pd/cross.pd
@@ -1,22 +1,72 @@
-#N canvas 140 138 596 362 12;
+#N canvas 275 53 604 370 12;
#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
1 1;
#X msg 17 103 enable \$1;
-#X obj 284 86 nbx 5 18 -100 0 0 0 empty empty threshold(dB) 0 -6 0
-10 -225271 -1 -1 0 256;
+#X obj 312 84 nbx 5 18 -100 0 0 1 empty empty threshold(dB) 0 -6 0
+10 -225271 -1 -1 -86 256;
#X obj 161 275 *~;
#X obj 202 280 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
--261681 -1 -1 8500 1;
+-261681 -1 -1 11800 1;
#X obj 150 312 dac~;
#X obj 16 8 cnv 15 550 40 empty empty cross~ 10 22 0 24 -260818 -1
0;
#X text 188 8 FFTease (C)Lyon \, Penrose (for Max/MSP);
#X text 188 28 flext port by Thomas Grill;
#X obj 161 210 cross~;
-#X obj 284 163 sig~;
-#X obj 283 115 + 100;
-#X obj 284 138 dbtorms;
-#X obj 162 162 adc~ 1 2;
+#X obj 312 161 sig~;
+#X obj 311 113 + 100;
+#X obj 312 136 dbtorms;
+#X obj 161 80 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
+-1;
+#N canvas 35 47 456 306 schubert 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/schubert.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 162 175 pd schubert;
+#N canvas 35 47 460 310 nixon 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/nixon.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 183 142 pd nixon;
+#X msg 17 161 getattributes;
+#X text 15 143 list attributes;
+#X text 15 215 get attributes;
+#X obj 445 85 tgl 25 1 empty empty memorize 0 -6 0 10 -225271 -1 -1
+1 1;
+#X text 371 182 partials below the threshold;
+#X text 370 200 are taken from the previous;
+#X text 370 216 frame;
+#X obj 391 278 print A;
+#X text 390 297 print attributes;
+#X msg 17 234 getmemorize;
+#X text 373 165 memorize defaults to 1;
+#X msg 445 117 memorize \$1;
#X connect 0 0 1 0;
#X connect 1 0 9 0;
#X connect 2 0 11 0;
@@ -24,8 +74,15 @@
#X connect 3 0 5 1;
#X connect 4 0 3 1;
#X connect 9 0 3 0;
+#X connect 9 1 23 0;
#X connect 10 0 9 2;
#X connect 11 0 12 0;
#X connect 12 0 10 0;
-#X connect 13 0 9 0;
-#X connect 13 1 9 1;
+#X connect 13 0 14 0;
+#X connect 13 0 15 0;
+#X connect 14 0 9 0;
+#X connect 15 0 9 1;
+#X connect 16 0 9 0;
+#X connect 19 0 27 0;
+#X connect 25 0 9 0;
+#X connect 27 0 9 0;
diff --git a/externals/grill/fftease/pd/dentist.pd b/externals/grill/fftease/pd/dentist.pd
index 5bcabbd3..7434e57a 100644
--- a/externals/grill/fftease/pd/dentist.pd
+++ b/externals/grill/fftease/pd/dentist.pd
@@ -1,9 +1,9 @@
-#N canvas 140 138 598 364 12;
+#N canvas 45 260 600 366 12;
#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
1 1;
#X msg 17 103 enable \$1;
-#X obj 374 91 nbx 5 18 0 20000 0 0 empty empty knee_frq 0 -6 0 10 -225271
--1 -1 1375 256;
+#X obj 417 91 nbx 5 18 0 20000 0 0 empty empty knee_frq 0 -6 0 10 -225271
+-1 -1 0 256;
#X obj 211 272 *~;
#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
-261681 -1 -1 10200 1;
@@ -14,16 +14,38 @@
#X text 198 28 flext port by Thomas Grill;
#X msg 14 181 getattributes;
#X obj 432 255 print A;
-#X obj 294 90 bng 25 250 50 0 empty empty reshuffle 0 -6 0 8 -225271
+#X obj 337 90 bng 25 250 50 0 empty empty reshuffle 0 -6 0 8 -225271
-1 -1;
-#X msg 374 123 knee \$1;
-#X obj 452 91 nbx 5 18 0 1000 0 0 empty empty teeth 0 -6 0 10 -225271
--1 -1 6 256;
-#X msg 452 123 teeth \$1;
-#X text 343 207 knee frq. \, teeth;
-#X obj 211 207 dentist~ 1000 10;
-#X obj 211 84 adc~ 1;
+#X msg 417 123 knee \$1;
+#X obj 495 91 nbx 5 18 0 1000 0 0 empty empty teeth 0 -6 0 10 -225271
+-1 -1 0 256;
+#X msg 495 123 teeth \$1;
+#X text 348 209 knee frq. \, teeth;
+#X obj 211 208 dentist~ 1000 10;
#X text 14 164 list attributes;
+#X obj 212 92 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
+-1;
+#N canvas 35 47 456 306 schubert 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/schubert.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 212 156 pd schubert;
+#X text 15 222 get attributes;
+#X msg 15 239 getknee;
+#X msg 15 267 getteeth;
#X connect 0 0 1 0;
#X connect 1 0 16 0;
#X connect 2 0 12 0;
@@ -37,4 +59,7 @@
#X connect 14 0 16 0;
#X connect 16 0 3 0;
#X connect 16 1 10 0;
-#X connect 17 0 16 0;
+#X connect 18 0 19 0;
+#X connect 19 0 16 0;
+#X connect 21 0 16 0;
+#X connect 22 0 16 0;
diff --git a/externals/grill/fftease/pd/disarray.pd b/externals/grill/fftease/pd/disarray.pd
index 3bdd36b4..b07a619d 100644
--- a/externals/grill/fftease/pd/disarray.pd
+++ b/externals/grill/fftease/pd/disarray.pd
@@ -1,12 +1,12 @@
-#N canvas 140 138 600 366 12;
+#N canvas 68 275 606 372 12;
#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
1 1;
#X msg 17 103 enable \$1;
-#X obj 369 88 nbx 5 18 0 20000 0 0 empty empty knee_frq 0 -6 0 10 -225271
--1 -1 0 256;
+#X obj 369 88 nbx 5 18 0 20000 0 1 empty empty knee_frq 0 -6 0 10 -225271
+-1 -1 1300 256;
#X obj 211 272 *~;
#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
--261681 -1 -1 8600 1;
+-261681 -1 -1 9600 1;
#X obj 200 309 dac~;
#X obj 16 8 cnv 15 550 40 empty empty disarray~ 10 22 0 24 -260818
-1 0;
@@ -14,28 +14,54 @@
#X text 206 27 flext port by Thomas Grill;
#X msg 14 181 getattributes;
#X obj 427 281 print A;
-#X obj 211 84 adc~ 1;
#X text 14 164 list attributes;
#X obj 211 217 disarray~ 1300 0 20;
-#X msg 369 120 freq \$1;
-#X obj 296 87 bng 25 250 50 0 empty empty reshuffle 0 -6 0 8 -225271
+#X obj 281 89 bng 25 250 50 0 empty empty reshuffle 0 -6 0 10 -225271
-1 -1;
-#X obj 454 88 nbx 5 18 0 1000 0 0 empty empty shuffle_count 0 -6 0
-10 -225271 -1 -1 0 256;
-#X msg 454 120 shcnt \$1;
-#X text 292 199 knee frq \, quality \, shuffle count;
+#X obj 454 88 nbx 5 18 0 1000 0 1 empty empty shuffle_count 0 -6 0
+10 -225271 -1 -1 20 256;
#X text 424 300 attributes;
+#X text 15 219 get attributes;
+#X obj 207 89 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
+-1;
+#N canvas 35 47 456 306 schubert 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/schubert.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 212 154 pd schubert;
+#X msg 369 120 knee \$1;
+#X msg 454 120 partials \$1;
+#X msg 15 238 getknee;
+#X msg 16 263 getpartials;
+#X text 292 199 knee frq \, quality \, partials;
+#X text 367 218 (these are the defaults);
#X connect 0 0 1 0;
-#X connect 1 0 13 0;
-#X connect 2 0 14 0;
+#X connect 1 0 12 0;
+#X connect 2 0 19 0;
#X connect 3 0 5 0;
#X connect 3 0 5 1;
#X connect 4 0 3 1;
-#X connect 9 0 13 0;
-#X connect 11 0 13 0;
-#X connect 13 0 3 0;
-#X connect 13 1 10 0;
-#X connect 14 0 13 0;
-#X connect 15 0 13 0;
-#X connect 16 0 17 0;
-#X connect 17 0 13 0;
+#X connect 9 0 12 0;
+#X connect 12 0 3 0;
+#X connect 12 1 10 0;
+#X connect 13 0 12 0;
+#X connect 14 0 20 0;
+#X connect 17 0 18 0;
+#X connect 18 0 12 0;
+#X connect 19 0 12 0;
+#X connect 20 0 12 0;
+#X connect 21 0 12 0;
+#X connect 22 0 12 0;
diff --git a/externals/grill/fftease/pd/drown.pd b/externals/grill/fftease/pd/drown.pd
new file mode 100644
index 00000000..2e492311
--- /dev/null
+++ b/externals/grill/fftease/pd/drown.pd
@@ -0,0 +1,61 @@
+#N canvas 140 138 612 378 12;
+#X obj 17 90 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
+1 1;
+#X msg 17 115 enable \$1;
+#X obj 166 272 *~;
+#X obj 207 277 hsl 128 15 0.001 1000 1 1 empty empty volume -2 -6 0
+10 -261681 -1 -1 9700 1;
+#X obj 155 309 dac~;
+#X obj 16 8 cnv 15 550 40 empty empty drown~ 10 22 0 24 -260818 -1
+0;
+#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP);
+#X text 206 27 flext port by Thomas Grill;
+#X obj 294 97 nbx 5 18 -100 0 0 1 empty empty threshold 0 -6 0 10 -225271
+-1 -1 -75 256;
+#X obj 166 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
+-1;
+#N canvas 35 47 456 306 schubert 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/schubert.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 166 126 pd schubert;
+#X obj 166 217 drown~;
+#X obj 384 174 sig~ 1;
+#X obj 385 99 nbx 5 18 -100 10 0 1 empty empty multiplication_factor
+0 -6 0 10 -225271 -1 -1 -18 256;
+#X obj 292 175 sig~ 1;
+#X obj 294 125 + 100;
+#X obj 385 125 + 100;
+#X obj 385 148 dbtorms;
+#X obj 293 149 dbtorms;
+#X obj 405 324 denude~;
+#X text 403 345 alternative naming;
+#X connect 0 0 1 0;
+#X connect 1 0 11 0;
+#X connect 2 0 4 0;
+#X connect 2 0 4 1;
+#X connect 3 0 2 1;
+#X connect 8 0 15 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 11 0 2 0;
+#X connect 12 0 11 2;
+#X connect 13 0 16 0;
+#X connect 14 0 11 1;
+#X connect 15 0 18 0;
+#X connect 16 0 17 0;
+#X connect 17 0 12 0;
+#X connect 18 0 14 0;
diff --git a/externals/grill/fftease/pd/ether.pd b/externals/grill/fftease/pd/ether.pd
index 3448f300..720fe466 100644
--- a/externals/grill/fftease/pd/ether.pd
+++ b/externals/grill/fftease/pd/ether.pd
@@ -1,10 +1,10 @@
-#N canvas 140 138 600 366 12;
+#N canvas 140 138 602 368 12;
#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
1 1;
#X msg 17 103 enable \$1;
#X obj 211 272 *~;
#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
--261681 -1 -1 7800 1;
+-261681 -1 -1 8600 1;
#X obj 200 309 dac~;
#X obj 16 8 cnv 15 550 40 empty empty ether~ 10 22 0 24 -260818 -1
0;
@@ -13,16 +13,57 @@
#X msg 14 181 getattributes;
#X obj 427 281 print A;
#X text 14 164 list attributes;
-#X obj 419 87 nbx 5 18 0 1000 0 0 empty empty index 0 -6 0 10 -225271
--1 -1 56 256;
+#X obj 499 84 nbx 5 18 0 1000 0 0 empty empty index 0 -6 0 10 -225271
+-1 -1 22 256;
#X text 424 300 attributes;
-#X msg 307 120 invert \$1;
-#X obj 307 86 tgl 25 0 empty empty invert 0 -6 0 8 -225271 -1 -1 1
+#X msg 387 117 invert \$1;
+#X obj 387 83 tgl 25 0 empty empty invert 0 -6 0 8 -225271 -1 -1 0
1;
-#X msg 419 119 index \$1;
+#X msg 499 116 index \$1;
#X obj 211 217 ether~ 1;
-#X text 280 215 quality \, invert \, index;
-#X obj 211 84 adc~;
+#X text 287 212 quality \, invert \, index;
+#X obj 211 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
+-1;
+#N canvas 35 47 456 306 schubert 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/schubert.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 271 172 pd schubert;
+#N canvas 35 47 460 310 nixon 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/nixon.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 212 148 pd nixon;
+#X text 15 213 get attributes;
+#X msg 15 230 getinvert;
+#X msg 16 259 getindex;
+#X text 287 228 (defaults are 0 \, 0 \, 0);
#X connect 0 0 1 0;
#X connect 1 0 16 0;
#X connect 2 0 4 0;
@@ -35,5 +76,9 @@
#X connect 15 0 16 0;
#X connect 16 0 2 0;
#X connect 16 1 9 0;
-#X connect 18 0 16 0;
-#X connect 18 1 16 1;
+#X connect 18 0 19 0;
+#X connect 18 0 20 0;
+#X connect 19 0 16 1;
+#X connect 20 0 16 0;
+#X connect 22 0 16 0;
+#X connect 23 0 16 0;
diff --git a/externals/grill/fftease/pd/morphine.pd b/externals/grill/fftease/pd/morphine.pd
new file mode 100644
index 00000000..b8ae6f2f
--- /dev/null
+++ b/externals/grill/fftease/pd/morphine.pd
@@ -0,0 +1,77 @@
+#N canvas 140 138 606 372 12;
+#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
+1 1;
+#X msg 17 103 enable \$1;
+#X obj 211 272 *~;
+#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
+-261681 -1 -1 10000 1;
+#X obj 200 309 dac~;
+#X obj 16 8 cnv 15 550 40 empty empty morphine~ 10 22 0 24 -260818
+-1 0;
+#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP);
+#X text 206 27 flext port by Thomas Grill;
+#X msg 14 181 getattributes;
+#X obj 427 281 print A;
+#X text 14 164 list attributes;
+#X obj 414 86 nbx 5 18 0.001 1 1 1 empty empty index 0 -6 0 10 -225271
+-1 -1 0.001 256;
+#X text 424 300 attributes;
+#X msg 414 110 index \$1;
+#X obj 211 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
+-1;
+#N canvas 35 47 456 306 schubert 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/schubert.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 210 184 pd schubert;
+#N canvas 35 47 460 310 nixon 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/nixon.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 307 186 pd nixon;
+#X text 15 215 get attributes;
+#X msg 16 234 getindex;
+#X text 477 87 (0...1);
+#X obj 211 217 morphine~ 0.05;
+#X text 336 219 index (defaults to 0);
+#X connect 0 0 1 0;
+#X connect 1 0 20 0;
+#X connect 2 0 4 0;
+#X connect 2 0 4 1;
+#X connect 3 0 2 1;
+#X connect 8 0 20 0;
+#X connect 11 0 13 0;
+#X connect 13 0 20 0;
+#X connect 14 0 15 0;
+#X connect 14 0 16 0;
+#X connect 15 0 20 0;
+#X connect 16 0 20 1;
+#X connect 18 0 20 0;
+#X connect 20 0 2 0;
+#X connect 20 1 9 0;
diff --git a/externals/grill/fftease/pd/scrape.pd b/externals/grill/fftease/pd/scrape.pd
new file mode 100644
index 00000000..c99187ee
--- /dev/null
+++ b/externals/grill/fftease/pd/scrape.pd
@@ -0,0 +1,72 @@
+#N canvas 140 138 606 372 12;
+#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
+1 1;
+#X msg 17 103 enable \$1;
+#X obj 211 272 *~;
+#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
+-261681 -1 -1 9800 1;
+#X obj 200 309 dac~;
+#X obj 16 8 cnv 15 550 40 empty empty scrape~ 10 22 0 24 -260818 -1
+0;
+#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP);
+#X text 206 27 flext port by Thomas Grill;
+#X msg 14 181 getattributes;
+#X obj 427 281 print A;
+#X text 14 164 list attributes;
+#X obj 423 90 nbx 5 18 10 20000 1 1 empty empty knee 0 -6 0 10 -225271
+-1 -1 1000 256;
+#X text 424 300 attributes;
+#X obj 211 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
+-1;
+#N canvas 35 47 456 306 schubert 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/schubert.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 210 184 pd schubert;
+#X text 15 215 get attributes;
+#X obj 319 89 nbx 5 18 -100 0 0 1 empty empty multiplier 0 -6 0 10
+-225271 -1 -1 -60 256;
+#X obj 318 183 sig~ 1;
+#X obj 318 116 + 100;
+#X obj 318 143 dbtorms;
+#X msg 16 234 getknee;
+#X msg 16 257 getcutoff;
+#X msg 423 114 knee \$1;
+#X obj 505 90 nbx 5 18 10 20000 1 1 empty empty cutoff 0 -6 0 10 -225271
+-1 -1 2000 256;
+#X msg 505 114 cutoff \$1;
+#X obj 211 217 scrape~ 1000 2000;
+#X text 361 219 knee \, cutoff;
+#X connect 0 0 1 0;
+#X connect 1 0 25 0;
+#X connect 2 0 4 0;
+#X connect 2 0 4 1;
+#X connect 3 0 2 1;
+#X connect 8 0 25 0;
+#X connect 11 0 22 0;
+#X connect 13 0 14 0;
+#X connect 14 0 25 0;
+#X connect 16 0 18 0;
+#X connect 17 0 25 1;
+#X connect 18 0 19 0;
+#X connect 19 0 17 0;
+#X connect 20 0 25 0;
+#X connect 21 0 25 0;
+#X connect 22 0 25 0;
+#X connect 23 0 24 0;
+#X connect 24 0 25 0;
+#X connect 25 0 2 0;
+#X connect 25 1 9 0;
diff --git a/externals/grill/fftease/pd/shapee.pd b/externals/grill/fftease/pd/shapee.pd
new file mode 100644
index 00000000..75305fb0
--- /dev/null
+++ b/externals/grill/fftease/pd/shapee.pd
@@ -0,0 +1,62 @@
+#N canvas 140 138 612 378 12;
+#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
+1 1;
+#X msg 17 103 enable \$1;
+#X obj 211 272 *~;
+#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
+-261681 -1 -1 10700 1;
+#X obj 200 309 dac~;
+#X obj 16 8 cnv 15 550 40 empty empty shapee~ 10 22 0 24 -260818 -1
+0;
+#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP);
+#X text 206 27 flext port by Thomas Grill;
+#X obj 211 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
+-1;
+#N canvas 35 47 458 308 schubert 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/schubert.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 210 184 pd schubert;
+#N canvas 35 47 460 310 nixon 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/nixon.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 307 184 pd nixon;
+#X text 298 219 quality (defaults to 0);
+#X obj 211 217 shapee~ 1;
+#X connect 0 0 1 0;
+#X connect 1 0 12 0;
+#X connect 2 0 4 0;
+#X connect 2 0 4 1;
+#X connect 3 0 2 1;
+#X connect 8 0 9 0;
+#X connect 8 0 10 0;
+#X connect 9 0 12 0;
+#X connect 10 0 12 1;
+#X connect 12 0 2 0;
diff --git a/externals/grill/fftease/pd/swinger.pd b/externals/grill/fftease/pd/swinger.pd
new file mode 100644
index 00000000..deb7058f
--- /dev/null
+++ b/externals/grill/fftease/pd/swinger.pd
@@ -0,0 +1,62 @@
+#N canvas 275 53 610 376 12;
+#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
+1 1;
+#X msg 17 103 enable \$1;
+#X obj 198 275 *~;
+#X obj 239 280 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
+-261681 -1 -1 10300 1;
+#X obj 187 312 dac~;
+#X obj 16 8 cnv 15 550 40 empty empty swinger~ 10 22 0 24 -260818 -1
+0;
+#X text 188 8 FFTease (C)Lyon \, Penrose (for Max/MSP);
+#X text 188 28 flext port by Thomas Grill;
+#X obj 198 80 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
+-1;
+#N canvas 35 47 456 306 schubert 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/schubert.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 199 175 pd schubert;
+#N canvas 35 47 460 310 nixon 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/nixon.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 274 144 pd nixon;
+#X obj 198 210 swinger~ 1;
+#X text 284 210 quality (defaults to 0);
+#X connect 0 0 1 0;
+#X connect 1 0 11 0;
+#X connect 2 0 4 0;
+#X connect 2 0 4 1;
+#X connect 3 0 2 1;
+#X connect 8 0 9 0;
+#X connect 8 0 10 0;
+#X connect 9 0 11 0;
+#X connect 10 0 11 1;
+#X connect 11 0 2 0;
diff --git a/externals/grill/fftease/pd/taint.pd b/externals/grill/fftease/pd/taint.pd
new file mode 100644
index 00000000..00f859af
--- /dev/null
+++ b/externals/grill/fftease/pd/taint.pd
@@ -0,0 +1,83 @@
+#N canvas 140 138 614 380 12;
+#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
+1 1;
+#X msg 17 103 enable \$1;
+#X obj 211 272 *~;
+#X obj 252 277 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
+-261681 -1 -1 10000 1;
+#X obj 200 309 dac~;
+#X obj 16 8 cnv 15 550 40 empty empty taint~ 10 22 0 24 -260818 -1
+0;
+#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP);
+#X text 206 27 flext port by Thomas Grill;
+#X msg 14 181 getattributes;
+#X obj 427 281 print A;
+#X text 14 164 list attributes;
+#X obj 480 89 nbx 5 18 -100 0 0 1 empty empty thresh 0 -6 0 10 -225271
+-1 -1 -60 256;
+#X text 424 300 attributes;
+#X obj 211 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
+-1;
+#N canvas 35 47 456 306 schubert 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/schubert.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 210 184 pd schubert;
+#N canvas 35 47 460 310 nixon 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/nixon.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 302 185 pd nixon;
+#X text 15 215 get attributes;
+#X obj 211 217 taint~ -60 0;
+#X msg 481 125 thresh \$1;
+#X obj 391 89 tgl 25 1 empty empty invert 0 -6 0 10 -225271 -1 -1 0
+1;
+#X msg 391 125 invert \$1;
+#X msg 16 258 getthresh;
+#X msg 16 234 getinvert;
+#X text 319 217 threshold \, invert (default -10 \, 0);
+#X connect 0 0 1 0;
+#X connect 1 0 17 0;
+#X connect 2 0 4 0;
+#X connect 2 0 4 1;
+#X connect 3 0 2 1;
+#X connect 8 0 17 0;
+#X connect 11 0 18 0;
+#X connect 13 0 14 0;
+#X connect 13 0 15 0;
+#X connect 14 0 17 0;
+#X connect 15 0 17 1;
+#X connect 17 0 2 0;
+#X connect 17 1 9 0;
+#X connect 18 0 17 0;
+#X connect 19 0 20 0;
+#X connect 20 0 17 0;
+#X connect 21 0 17 0;
+#X connect 22 0 17 0;
diff --git a/externals/grill/fftease/pd/thresher.pd b/externals/grill/fftease/pd/thresher.pd
new file mode 100644
index 00000000..13201212
--- /dev/null
+++ b/externals/grill/fftease/pd/thresher.pd
@@ -0,0 +1,44 @@
+#N canvas 140 138 626 392 12;
+#X obj 17 86 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
+1 1;
+#X msg 17 111 enable \$1;
+#X obj 219 288 *~;
+#X obj 260 293 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
+-261681 -1 -1 10300 1;
+#X obj 208 325 dac~;
+#X obj 16 8 cnv 15 550 40 empty empty thresher~ 10 22 0 24 -260818
+-1 0;
+#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP);
+#X text 206 27 flext port by Thomas Grill;
+#X obj 467 297 print A;
+#X text 464 316 attributes;
+#X obj 219 92 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
+-1;
+#N canvas 35 47 460 310 nixon 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/nixon.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 219 184 pd nixon;
+#X obj 218 227 thresher~;
+#X connect 0 0 1 0;
+#X connect 1 0 12 0;
+#X connect 2 0 4 0;
+#X connect 2 0 4 1;
+#X connect 3 0 2 1;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 2 0;
+#X connect 12 1 8 0;
diff --git a/externals/grill/fftease/pd/vacancy.pd b/externals/grill/fftease/pd/vacancy.pd
new file mode 100644
index 00000000..b191f16a
--- /dev/null
+++ b/externals/grill/fftease/pd/vacancy.pd
@@ -0,0 +1,97 @@
+#N canvas 140 138 622 388 12;
+#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
+1 1;
+#X msg 17 103 enable \$1;
+#X obj 179 284 *~;
+#X obj 220 289 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
+-261681 -1 -1 11000 1;
+#X obj 168 321 dac~;
+#X obj 16 8 cnv 15 550 40 empty empty vacancy~ 10 22 0 24 -260818 -1
+0;
+#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP);
+#X text 206 27 flext port by Thomas Grill;
+#X msg 14 181 getattributes;
+#X obj 427 293 print A;
+#X text 14 164 list attributes;
+#X obj 276 91 nbx 5 18 -100 0 0 1 empty empty threshold 0 -6 0 10 -225271
+-1 -1 -31 256;
+#X text 424 312 attributes;
+#X obj 179 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
+-1;
+#N canvas 35 47 456 306 schubert 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/schubert.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 180 174 pd schubert;
+#N canvas 35 47 460 310 nixon 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/nixon.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 316 175 pd nixon;
+#X text 15 215 get attributes;
+#X msg 275 129 thresh \$1;
+#X obj 363 91 tgl 25 1 empty empty invert 0 -6 0 10 -225271 -1 -1 0
+1;
+#X msg 363 127 invert \$1;
+#X msg 16 235 getthresh;
+#X msg 16 259 getinvert;
+#X obj 179 203 vacancy~ -30 0 1 0;
+#X obj 451 91 tgl 25 1 empty empty use_rms 0 -6 0 10 -225271 -1 -1
+1 1;
+#X obj 520 91 tgl 25 1 empty empty swap_phase 0 -6 0 10 -225271 -1
+-1 0 1;
+#X msg 451 127 rms \$1;
+#X msg 520 127 swap \$1;
+#X text 256 226 threshold \, invert \, rms \, swap;
+#X msg 16 283 getrms;
+#X msg 17 308 getswap;
+#X connect 0 0 1 0;
+#X connect 1 0 22 0;
+#X connect 2 0 4 0;
+#X connect 2 0 4 1;
+#X connect 3 0 2 1;
+#X connect 8 0 22 0;
+#X connect 11 0 17 0;
+#X connect 13 0 14 0;
+#X connect 13 0 15 0;
+#X connect 14 0 22 0;
+#X connect 15 0 22 1;
+#X connect 17 0 22 0;
+#X connect 18 0 19 0;
+#X connect 19 0 22 0;
+#X connect 20 0 22 0;
+#X connect 21 0 22 0;
+#X connect 22 0 2 0;
+#X connect 22 1 9 0;
+#X connect 23 0 25 0;
+#X connect 24 0 26 0;
+#X connect 25 0 22 0;
+#X connect 26 0 22 0;
+#X connect 28 0 22 0;
+#X connect 29 0 22 0;
diff --git a/externals/grill/fftease/pd/xsyn.pd b/externals/grill/fftease/pd/xsyn.pd
new file mode 100644
index 00000000..e665bfd8
--- /dev/null
+++ b/externals/grill/fftease/pd/xsyn.pd
@@ -0,0 +1,61 @@
+#N canvas 140 138 589 373 12;
+#X obj 17 78 tgl 20 1 empty empty enable_dsp 0 -6 0 10 -225271 -1 -1
+1 1;
+#X msg 17 103 enable \$1;
+#X obj 214 284 *~;
+#X obj 255 289 hsl 128 15 0.001 10 1 1 empty empty volume -2 -6 0 10
+-261681 -1 -1 10500 1;
+#X obj 203 321 dac~;
+#X obj 16 8 cnv 15 550 40 empty empty xsyn~ 10 22 0 24 -260818 -1 0
+;
+#X text 206 7 FFTease (C)Lyon \, Penrose (for Max/MSP);
+#X text 206 27 flext port by Thomas Grill;
+#X obj 214 88 bng 25 250 50 0 empty empty start 0 -6 0 8 -261689 -1
+-1;
+#N canvas 35 47 456 306 schubert 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/schubert.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 215 174 pd schubert;
+#N canvas 35 47 460 310 nixon 0;
+#X obj 51 234 outlet~;
+#X obj 51 188 readsf~ 1;
+#X obj 51 19 inlet;
+#X msg 27 80 1;
+#X obj 52 115 t f b;
+#X obj 51 44 route bang 1 0;
+#X msg 86 149 open ../media/nixon.aiff;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 1 6 0;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 5 2 1 0;
+#X connect 6 0 1 0;
+#X restore 249 150 pd nixon;
+#X obj 214 203 xsyn~;
+#X connect 0 0 1 0;
+#X connect 1 0 11 0;
+#X connect 2 0 4 0;
+#X connect 2 0 4 1;
+#X connect 3 0 2 1;
+#X connect 8 0 9 0;
+#X connect 8 0 10 0;
+#X connect 9 0 11 0;
+#X connect 10 0 11 1;
+#X connect 11 0 2 0;