aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--abstractions/README28
-rw-r--r--abstractions/_pan~math.pd55
-rw-r--r--abstractions/bpe.py91
-rw-r--r--abstractions/dacer~.pd21
-rw-r--r--abstractions/exp4~.pd35
-rw-r--r--abstractions/exp6~.pd55
-rw-r--r--abstractions/exp8~.pd75
-rw-r--r--abstractions/faculty.pd40
-rw-r--r--abstractions/find_hid-help.pd12
-rw-r--r--abstractions/find_hid.py75
-rw-r--r--abstractions/ftanh~.pd18
-rw-r--r--abstractions/le3dp.pd135
-rw-r--r--abstractions/msg_queue-help.pd14
-rw-r--r--abstractions/msg_queue.pd18
-rw-r--r--abstractions/panS~-help.pd20
-rw-r--r--abstractions/panS~.pd24
-rw-r--r--abstractions/pan~.pd22
-rw-r--r--abstractions/pre_switch.pd28
-rw-r--r--abstractions/sender-help.pd10
-rw-r--r--abstractions/sender.pd15
-rw-r--r--abstractions/sigmoid_booster~.pd35
-rw-r--r--abstractions/switcher.pd14
-rw-r--r--abstractions/tbEnvify~-help.pd27
-rw-r--r--abstractions/tbEnvify~.pd85
-rw-r--r--abstractions/tbEnvify~/_bpe_stuff.pd34
-rw-r--r--abstractions/tbEnvify~/_env_lookup~.pd31
-rw-r--r--abstractions/tbEnvify~/bpe.pd21
-rw-r--r--abstractions/tbEnvify~/bpe_rampsmooth.pd49
-rw-r--r--abstractions/tbEnvify~/bpe_slide.pd48
-rw-r--r--abstractions/tbEnvify~/hanning.pd54
-rw-r--r--abstractions/tbEnvify~/sine.pd48
-rw-r--r--abstractions/tbEnvify~/triangle.pd65
-rw-r--r--abstractions/volctl~.pd22
-rw-r--r--abstractions/xfade-help.pd68
-rw-r--r--abstractions/xfade.pd68
-rw-r--r--abstractions/xfadeS.pd83
36 files changed, 1543 insertions, 0 deletions
diff --git a/abstractions/README b/abstractions/README
new file mode 100644
index 0000000..f4cf5bf
--- /dev/null
+++ b/abstractions/README
@@ -0,0 +1,28 @@
+**********************************************************************
+
+a set of useful and useless abstractions and py/pyext scripts, that i'm
+using in my daily work
+
+some of them are cleanly written, some even have documentation
+they require a number of externals, but no exotic ones ...
+
+Copyright (C) 2005 Tim Blechmann, TimBlechmann@gmx.net
+
+**********************************************************************
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; see the file COPYING. If not, write to
+the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+**********************************************************************
diff --git a/abstractions/_pan~math.pd b/abstractions/_pan~math.pd
new file mode 100644
index 0000000..a759253
--- /dev/null
+++ b/abstractions/_pan~math.pd
@@ -0,0 +1,55 @@
+#N canvas 356 113 633 535 10;
+#X obj 47 21 inlet;
+#X obj 47 72 clip -45 45;
+#X obj 47 93 deg2rad;
+#X obj 47 115 t b b f f;
+#X obj 105 136 sin;
+#X obj 105 157 v \$0-sin;
+#X obj 85 196 v \$0-cos;
+#X obj 85 176 cos;
+#X obj 66 215 t b b;
+#X obj 66 234 v \$0-cos;
+#X obj 66 270 +;
+#X obj 47 342 t b b;
+#X obj 47 361 v \$0-cos;
+#X obj 47 416 *;
+#X obj 301 55 expr sqrt(2) / 2;
+#X obj 271 14 loadbang;
+#X obj 66 289 *;
+#X obj 66 308 outlet;
+#X obj 47 435 outlet;
+#X text 43 465 as discribed in http://www.csounds.com/ezine/autumn1999/beginners/
+;
+#X obj 271 34 t b b;
+#X obj 96 253 v \$0-sin;
+#X obj 77 380 v \$0-sin;
+#X obj 47 397 -;
+#X text 43 503 (c) Tim Blechmann 2005 \, $Id: _pan~math.pd 221 2005-12-17 18:31:17Z tim $;
+#X obj 271 55 \$1;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 11 0;
+#X connect 3 1 8 0;
+#X connect 3 2 7 0;
+#X connect 3 3 4 0;
+#X connect 4 0 5 0;
+#X connect 7 0 6 0;
+#X connect 8 0 9 0;
+#X connect 8 1 21 0;
+#X connect 9 0 10 0;
+#X connect 10 0 16 0;
+#X connect 11 0 12 0;
+#X connect 11 1 22 0;
+#X connect 12 0 23 0;
+#X connect 13 0 18 0;
+#X connect 14 0 13 1;
+#X connect 14 0 16 1;
+#X connect 15 0 20 0;
+#X connect 16 0 17 0;
+#X connect 20 0 25 0;
+#X connect 20 1 14 0;
+#X connect 21 0 10 1;
+#X connect 22 0 23 1;
+#X connect 23 0 13 0;
+#X connect 25 0 1 0;
diff --git a/abstractions/bpe.py b/abstractions/bpe.py
new file mode 100644
index 0000000..7a54b2c
--- /dev/null
+++ b/abstractions/bpe.py
@@ -0,0 +1,91 @@
+# $Id: bpe.py,v 1.2 2005-12-17 17:52:01 timblech Exp $
+#
+# Copyright (C) 2005 Tim Blechmann
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+
+
+import pyext
+
+def parse_arguments(*args):
+ duration = args[0]
+ if duration == 0:
+ return args[1:]
+
+ length = len(args)
+ durations = []
+ breakpoints = []
+ for i in range(1,length):
+ if i % 2 == 0:
+ durations.append(args[i])
+ else:
+ breakpoints.append(args[i])
+ duration_factor = duration / reduce(lambda x,y: x + y, durations)
+
+ durations = map(lambda x: x*duration_factor, durations)
+
+ ret = []
+
+ for i in range(len(durations)):
+ ret.append(breakpoints[i])
+ ret.append(durations[i])
+ ret[-2] = ret[0]
+ return ret
+
+class Bpe(pyext._class):
+ _inlets = 1
+ _outlets = 1
+
+ def list_1(self, *args):
+ if args[0] != 0:
+ self._outlet(1,parse_arguments(*args))
+
+class VolBpe(pyext._class):
+ _inlets = 3
+ _outlets = 1
+
+ def __init__(self, dollar1):
+ try:
+ self.duration = 1000 / dollar1
+ except:
+ self.duration = 1000
+ self._detach = 1
+ self._priority(-20)
+
+ self.bpe = []
+ self.running = False
+
+ def list_1(self, *args):
+ arglist = list(args)
+ arguments = [self.duration] + arglist
+ self.bpe = arglist
+ self._outlet(1,parse_arguments(*arguments))
+ if not self.running:
+ self._outlet(1, None)
+ self.running = True
+
+ def float_2(self, freq):
+ self.duration = 1000 / freq;
+ arguments = self.duration + self.bpe
+ self._outlet(1,parse_arguments(*arguments))
+
+
+ def float_3(self, switch):
+ if switch == 0:
+ self._outlet(1, self.bpe[0], 0, self.bpe[0], self.duration)
+ else:
+ self._outlet(1, self.bpe)
+
diff --git a/abstractions/dacer~.pd b/abstractions/dacer~.pd
new file mode 100644
index 0000000..dc57667
--- /dev/null
+++ b/abstractions/dacer~.pd
@@ -0,0 +1,21 @@
+#N canvas 222 205 333 242 10;
+#X obj 4 91 inlet~;
+#X obj 109 91 inlet~;
+#X obj 4 129 volctl~ 0 100;
+#X obj 109 129 volctl~ 0 100;
+#X obj 34 180 dac~;
+#X floatatom 17 20 5 0 0 0 - - -;
+#X obj 4 110 hip~ 5;
+#X obj 109 110 hip~ 5;
+#X obj 47 67 dbtorms;
+#X text 11 217 (c) Tim Blechmann 2005 \, $Id: dacer~.pd 221 2005-12-17 18:31:17Z tim $;
+#X connect 0 0 6 0;
+#X connect 1 0 7 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 1;
+#X connect 5 0 8 0;
+#X connect 6 0 2 0;
+#X connect 7 0 3 0;
+#X connect 8 0 2 1;
+#X connect 8 0 3 1;
+#X coords 0 0 1 1 60 40 1 0 0;
diff --git a/abstractions/exp4~.pd b/abstractions/exp4~.pd
new file mode 100644
index 0000000..2d7af0a
--- /dev/null
+++ b/abstractions/exp4~.pd
@@ -0,0 +1,35 @@
+#N canvas 458 85 450 300 10;
+#X obj 16 227 outlet~;
+#X obj 16 204 +~ 1;
+#X text 17 272 (c) Tim Blechmann 2005 \, $Id: exp4~.pd 221 2005-12-17
+18:31:17Z tim $;
+#X text 17 252 4th order taylor approximation of exp(x);
+#X obj 16 8 inlet~;
+#X obj 33 46 *~;
+#X obj 33 70 *~ 0.5;
+#X obj 101 46 *~;
+#X obj 196 46 *~;
+#X obj 100 105 *~ 0;
+#X obj 123 67 faculty 3;
+#X obj 123 86 !/ 1;
+#X obj 196 108 *~ 0;
+#X obj 219 89 !/ 1;
+#X obj 219 70 faculty 4;
+#X connect 1 0 0 0;
+#X connect 4 0 5 0;
+#X connect 4 0 5 1;
+#X connect 4 0 7 1;
+#X connect 4 0 1 0;
+#X connect 5 0 6 0;
+#X connect 5 0 7 0;
+#X connect 5 0 8 0;
+#X connect 5 0 8 1;
+#X connect 6 0 1 0;
+#X connect 7 0 9 0;
+#X connect 8 0 12 0;
+#X connect 9 0 1 0;
+#X connect 10 0 11 0;
+#X connect 11 0 9 1;
+#X connect 12 0 1 0;
+#X connect 13 0 12 1;
+#X connect 14 0 13 0;
diff --git a/abstractions/exp6~.pd b/abstractions/exp6~.pd
new file mode 100644
index 0000000..260bb4f
--- /dev/null
+++ b/abstractions/exp6~.pd
@@ -0,0 +1,55 @@
+#N canvas 324 188 561 309 10;
+#X obj 16 8 inlet~;
+#X obj 16 227 outlet~;
+#X obj 16 204 +~ 1;
+#X obj 33 46 *~;
+#X obj 33 70 *~ 0.5;
+#X obj 101 46 *~;
+#X obj 196 46 *~;
+#X text 17 272 (c) Tim Blechmann 2005 \, $Id: exp6~.pd 221 2005-12-17
+18:31:17Z tim $;
+#X text 17 252 6th order taylor approximation of exp(x);
+#X obj 100 105 *~ 0;
+#X obj 123 67 faculty 3;
+#X obj 123 86 !/ 1;
+#X obj 196 108 *~ 0;
+#X obj 219 89 !/ 1;
+#X obj 219 70 faculty 4;
+#X obj 298 48 *~;
+#X obj 299 110 *~ 0;
+#X obj 322 91 !/ 1;
+#X obj 322 72 faculty 5;
+#X obj 410 44 *~;
+#X obj 411 106 *~ 0;
+#X obj 434 87 !/ 1;
+#X obj 434 68 faculty 6;
+#X connect 0 0 3 0;
+#X connect 0 0 3 1;
+#X connect 0 0 2 0;
+#X connect 0 0 5 1;
+#X connect 0 0 15 1;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 3 0 5 0;
+#X connect 3 0 6 0;
+#X connect 3 0 6 1;
+#X connect 4 0 2 0;
+#X connect 5 0 9 0;
+#X connect 5 0 19 0;
+#X connect 5 0 19 1;
+#X connect 6 0 12 0;
+#X connect 6 0 15 0;
+#X connect 9 0 2 0;
+#X connect 10 0 11 0;
+#X connect 11 0 9 1;
+#X connect 12 0 2 0;
+#X connect 13 0 12 1;
+#X connect 14 0 13 0;
+#X connect 15 0 16 0;
+#X connect 16 0 2 0;
+#X connect 17 0 16 1;
+#X connect 18 0 17 0;
+#X connect 19 0 20 0;
+#X connect 20 0 2 0;
+#X connect 21 0 20 1;
+#X connect 22 0 21 0;
diff --git a/abstractions/exp8~.pd b/abstractions/exp8~.pd
new file mode 100644
index 0000000..c270b05
--- /dev/null
+++ b/abstractions/exp8~.pd
@@ -0,0 +1,75 @@
+#N canvas 0 0 808 341 10;
+#X obj 16 8 inlet~;
+#X obj 16 227 outlet~;
+#X obj 16 204 +~ 1;
+#X obj 33 46 *~;
+#X obj 33 70 *~ 0.5;
+#X obj 101 46 *~;
+#X obj 196 46 *~;
+#X text 17 272 (c) Tim Blechmann 2005 \, $Id: exp6~.pd 221 2005-12-17
+18:31:17Z tim $;
+#X obj 100 105 *~ 0;
+#X obj 123 67 faculty 3;
+#X obj 123 86 !/ 1;
+#X obj 196 108 *~ 0;
+#X obj 219 89 !/ 1;
+#X obj 219 70 faculty 4;
+#X obj 298 48 *~;
+#X obj 299 110 *~ 0;
+#X obj 322 91 !/ 1;
+#X obj 322 72 faculty 5;
+#X obj 410 44 *~;
+#X obj 411 106 *~ 0;
+#X obj 434 87 !/ 1;
+#X obj 434 68 faculty 6;
+#X text 17 252 8th order taylor approximation of exp(x);
+#X obj 530 50 *~;
+#X obj 531 112 *~ 0;
+#X obj 554 93 !/ 1;
+#X obj 642 46 *~;
+#X obj 643 108 *~ 0;
+#X obj 666 89 !/ 1;
+#X obj 554 74 faculty 7;
+#X obj 666 70 faculty 8;
+#X connect 0 0 3 0;
+#X connect 0 0 3 1;
+#X connect 0 0 2 0;
+#X connect 0 0 5 1;
+#X connect 0 0 14 1;
+#X connect 0 0 23 1;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 3 0 5 0;
+#X connect 3 0 6 0;
+#X connect 3 0 6 1;
+#X connect 4 0 2 0;
+#X connect 5 0 8 0;
+#X connect 5 0 18 0;
+#X connect 5 0 18 1;
+#X connect 6 0 11 0;
+#X connect 6 0 14 0;
+#X connect 6 0 26 0;
+#X connect 6 0 26 1;
+#X connect 8 0 2 0;
+#X connect 9 0 10 0;
+#X connect 10 0 8 1;
+#X connect 11 0 2 0;
+#X connect 12 0 11 1;
+#X connect 13 0 12 0;
+#X connect 14 0 15 0;
+#X connect 15 0 2 0;
+#X connect 16 0 15 1;
+#X connect 17 0 16 0;
+#X connect 18 0 19 0;
+#X connect 18 0 23 0;
+#X connect 19 0 2 0;
+#X connect 20 0 19 1;
+#X connect 21 0 20 0;
+#X connect 23 0 24 0;
+#X connect 24 0 2 0;
+#X connect 25 0 24 1;
+#X connect 26 0 27 0;
+#X connect 27 0 2 0;
+#X connect 28 0 27 1;
+#X connect 29 0 25 0;
+#X connect 30 0 28 0;
diff --git a/abstractions/faculty.pd b/abstractions/faculty.pd
new file mode 100644
index 0000000..90d224c
--- /dev/null
+++ b/abstractions/faculty.pd
@@ -0,0 +1,40 @@
+#N canvas 399 222 427 326 10;
+#X obj 24 38 int;
+#X obj 43 104 until;
+#X obj 62 128 f;
+#X obj 92 178 f;
+#X obj 92 111 - 1;
+#X obj 62 152 t f f;
+#X obj 24 62 t b f f b;
+#X obj 24 217 f;
+#X obj 62 200 t f f;
+#X obj 24 238 outlet;
+#X obj 24 14 inlet;
+#X obj 62 178 *;
+#X obj 82 86 f 1;
+#X obj 43 84 - 1;
+#X text 22 287 (c) Tim Blechmann 2005 \, $Id: faculty.pd 222 2005-12-17
+18:32:31Z tim $;
+#X text 22 265 faculty patch;
+#X obj 115 1 init \$1;
+#X obj 115 21 sel 0;
+#X connect 0 0 6 0;
+#X connect 1 0 2 0;
+#X connect 2 0 5 0;
+#X connect 3 0 11 1;
+#X connect 4 0 2 1;
+#X connect 5 0 11 0;
+#X connect 5 1 4 0;
+#X connect 6 0 7 0;
+#X connect 6 1 13 0;
+#X connect 6 2 2 0;
+#X connect 6 3 12 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 1;
+#X connect 8 1 3 0;
+#X connect 10 0 0 0;
+#X connect 11 0 8 0;
+#X connect 12 0 3 0;
+#X connect 13 0 1 0;
+#X connect 16 0 17 0;
+#X connect 17 1 0 0;
diff --git a/abstractions/find_hid-help.pd b/abstractions/find_hid-help.pd
new file mode 100644
index 0000000..f645fa6
--- /dev/null
+++ b/abstractions/find_hid-help.pd
@@ -0,0 +1,12 @@
+#N canvas 0 0 450 300 10;
+#X obj 51 100 py find_hid find;
+#X obj 51 122 print;
+#X msg 51 65 reload;
+#X text 53 239 (c) Tim Blechmann 2005 \, $Id: find_hid-help.pd 221 2005-12-17 18:31:17Z tim $
+;
+#X text 49 153 find device in linux udevfs;
+#X msg 158 69 "manufacturer=Logitech" "product=USB-PS/2 Optical Mouse"
+;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 5 0 0 1;
diff --git a/abstractions/find_hid.py b/abstractions/find_hid.py
new file mode 100644
index 0000000..93800c1
--- /dev/null
+++ b/abstractions/find_hid.py
@@ -0,0 +1,75 @@
+# Python script to search the udev file system for devices
+# Copyright (C) 2005 Tim Blechmann
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; see the file COPYING. If not, write to
+# the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+# Boston, MA 02111-1307, USA.
+#
+# $Id: find_hid.py,v 1.3 2005-12-17 17:52:01 timblech Exp $
+#
+
+from os import popen, listdir
+
+def parse_device(event, rules):
+ pipe = popen('udevinfo -a -p /sys/class/input/%s' % event)
+
+ line = pipe.readline()
+ while line:
+ line.strip()
+ if '==' in line:
+ setting, value = line.split('==')
+ setting = setting.strip()
+ if '{' in setting:
+ setting = setting.split('{')[1].split('}')[0]
+ value = value.strip().strip('"')
+
+ if setting in rules:
+ if rules [setting] == value:
+ # we matched one rule, so we remove it from the pending rules
+ del rules[setting]
+
+ line = pipe.readline()
+
+ if len(rules) == 0:
+ pipe.close()
+ print event
+ return float(event.strip("event"))
+
+ pipe.close()
+ return -1
+
+def find (*args):
+ name = ""
+ for token in args:
+ name+=" " + str(token)
+
+ name = name.strip()
+ rules = name.split('" "')
+ rules = map (lambda x: x.strip('"'), rules)
+
+ ruledict = dict()
+
+ for rule in rules:
+ setting, value = rule.split('=',1)
+ ruledict[setting] = value
+ rules = ruledict
+
+ events = filter(lambda x: "event" in x, listdir('/sys/class/input/'))
+
+ for event in events:
+ ret = parse_device(event, dict(rules))
+ if ret != -1:
+ return int(ret)
+
+ return -1
diff --git a/abstractions/ftanh~.pd b/abstractions/ftanh~.pd
new file mode 100644
index 0000000..dfd923f
--- /dev/null
+++ b/abstractions/ftanh~.pd
@@ -0,0 +1,18 @@
+#N canvas 572 83 570 197 10;
+#X obj 41 10 inlet~;
+#X obj 41 129 outlet~;
+#X text 44 162 (c) Tim Blechmann 2005 \, $Id: ftanh~.pd 223 2005-12-17 18:51:09Z tim $;
+#X obj 42 33 *~ 2;
+#X obj 74 77 +~ 1;
+#X obj 42 77 -~ 1;
+#X obj 42 103 /~;
+#X obj 42 55 exp8~;
+#X text 120 43 a fast tanh interpolation \, accurate to about 55 db
+in the range [-1 \, 1];
+#X connect 0 0 3 0;
+#X connect 3 0 7 0;
+#X connect 4 0 6 1;
+#X connect 5 0 6 0;
+#X connect 6 0 1 0;
+#X connect 7 0 4 0;
+#X connect 7 0 5 0;
diff --git a/abstractions/le3dp.pd b/abstractions/le3dp.pd
new file mode 100644
index 0000000..35d19dc
--- /dev/null
+++ b/abstractions/le3dp.pd
@@ -0,0 +1,135 @@
+#N canvas 163 335 546 315 10;
+#X obj 8 10 init 1;
+#N canvas 95 25 450 300 axis 0;
+#X obj -80 4 inlet;
+#X obj 117 121 zmap_lin 255 0 0 1;
+#X obj 117 187 s le3dp-throttle;
+#X obj -80 41 route abs_x abs_y abs_rz abs_throttle abs_hat0x abs_hat0y
+;
+#X obj 182 61 s le3dp-hatx;
+#X obj 248 81 s le3dp-haty;
+#X obj 314 61 assert;
+#N canvas 498 328 450 300 z 0;
+#X obj 24 15 inlet;
+#X obj 24 164 s le3dp-z;
+#X obj 24 45 moses 128;
+#X obj 82 65 moses 144;
+#X obj 82 85 b;
+#X obj 82 104 0;
+#X obj 24 141 zmap_lin 0 128 -1 0;
+#X obj 140 85 zmap_lin 144 255 0 1;
+#X connect 0 0 2 0;
+#X connect 2 0 6 0;
+#X connect 2 1 3 0;
+#X connect 3 0 4 0;
+#X connect 3 1 7 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
+#X connect 6 0 1 0;
+#X connect 7 0 1 0;
+#X restore 51 109 pd z;
+#N canvas 496 358 450 300 x 0;
+#X obj -70 11 inlet;
+#X obj -70 145 s le3dp-x;
+#X obj -70 31 moses 508;
+#X obj -12 50 moses 520;
+#X obj -12 69 b;
+#X obj -12 88 0;
+#X obj -70 126 zmap_lin 0 508 -1 0;
+#X obj 46 69 zmap_lin 520 1023 0 1;
+#X connect 0 0 2 0;
+#X connect 2 0 6 0;
+#X connect 2 1 3 0;
+#X connect 3 0 4 0;
+#X connect 3 1 7 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
+#X connect 6 0 1 0;
+#X connect 7 0 1 0;
+#X restore -80 80 pd x;
+#N canvas 496 358 450 300 y 0;
+#X obj -70 11 inlet;
+#X obj -12 69 b;
+#X obj -12 88 0;
+#X obj -70 145 s le3dp-y;
+#X obj -70 31 moses 486;
+#X obj -12 50 moses 512;
+#X obj -70 126 zmap_lin 0 486 -1 0;
+#X obj 46 69 zmap_lin 512 1023 0 1;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 4 0 6 0;
+#X connect 4 1 5 0;
+#X connect 5 0 1 0;
+#X connect 5 1 7 0;
+#X connect 6 0 3 0;
+#X connect 7 0 3 0;
+#X restore -15 82 pd y;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 3 0 8 0;
+#X connect 3 1 9 0;
+#X connect 3 2 7 0;
+#X connect 3 3 1 0;
+#X connect 3 4 4 0;
+#X connect 3 5 5 0;
+#X connect 3 6 6 0;
+#X restore 8 245 pd axis;
+#X obj 8 221 route abs key;
+#N canvas 0 0 450 300 buttons 0;
+#X obj 12 10 inlet;
+#X obj 12 32 route btn_0 btn_1 btn_2 btn_3 btn_4 btn_5 btn_6 btn_7
+btn_8 btn_9 btn_10 btn_11;
+#X obj 12 68 s le3dp-b1;
+#X obj 386 186 s le3dp-b12;
+#X obj 352 166 s le3dp-b11;
+#X obj 318 146 s le3dp-b10;
+#X obj 284 126 s le3dp-b9;
+#X obj 250 106 s le3dp-b8;
+#X obj 216 86 s le3dp-b7;
+#X obj 182 190 s le3dp-b6;
+#X obj 148 165 s le3dp-b5;
+#X obj 114 138 s le3dp-b4;
+#X obj 80 116 s le3dp-b3;
+#X obj 46 92 s le3dp-b2;
+#X obj 420 70 assert;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 13 0;
+#X connect 1 2 12 0;
+#X connect 1 3 11 0;
+#X connect 1 4 10 0;
+#X connect 1 5 9 0;
+#X connect 1 6 8 0;
+#X connect 1 7 7 0;
+#X connect 1 8 6 0;
+#X connect 1 9 5 0;
+#X connect 1 10 4 0;
+#X connect 1 11 3 0;
+#X connect 1 12 14 0;
+#X restore 51 266 pd buttons;
+#X obj 38 172 prepend open;
+#X obj 38 84 py find_hid;
+#X obj 8 39 t f b;
+#X obj 8 199 hid;
+#X obj 38 106 route -1;
+#X obj 38 126 0;
+#X obj 8 148 spigot 1;
+#X text 12 294 (c) Tim Blechmann 2005 \, $Id: le3dp.pd 221 2005-12-17 18:31:17Z tim $;
+#X text 116 220 abstraction to use a Logitech Extreme 3D Joystick with
+hid under linux;
+#X msg 38 60 find "product=Logitech Extreme 3D";
+#X connect 0 0 6 0;
+#X connect 2 0 1 0;
+#X connect 2 1 3 0;
+#X connect 4 0 7 0;
+#X connect 5 0 8 0;
+#X connect 6 0 10 0;
+#X connect 6 1 13 0;
+#X connect 7 0 2 0;
+#X connect 8 0 9 0;
+#X connect 8 1 4 0;
+#X connect 9 0 10 1;
+#X connect 10 0 7 0;
+#X connect 13 0 5 1;
diff --git a/abstractions/msg_queue-help.pd b/abstractions/msg_queue-help.pd
new file mode 100644
index 0000000..2bd7671
--- /dev/null
+++ b/abstractions/msg_queue-help.pd
@@ -0,0 +1,14 @@
+#N canvas 0 0 386 215 10;
+#X obj 28 98 msg_queue;
+#X obj 28 131 print;
+#X msg 86 23 123;
+#X msg 86 43 234;
+#X msg 86 63 345;
+#X obj 28 59 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 30 169 (c) Tim Blechmann 2005 \, $Id: msg_queue-help.pd 221 2005-12-17 18:31:17Z tim $;
+#X connect 0 0 1 0;
+#X connect 2 0 0 1;
+#X connect 3 0 0 1;
+#X connect 4 0 0 1;
+#X connect 5 0 0 0;
diff --git a/abstractions/msg_queue.pd b/abstractions/msg_queue.pd
new file mode 100644
index 0000000..899c9ad
--- /dev/null
+++ b/abstractions/msg_queue.pd
@@ -0,0 +1,18 @@
+#N canvas 418 284 367 172 10;
+#X obj 18 9 inlet dump;
+#X obj 44 29 inlet add;
+#X obj 18 72 fifop;
+#X obj 18 31 b;
+#X text 21 149 (c) Tim Blechmann 2005 \, $Id: msg_queue.pd 221 2005-12-17 18:31:17Z tim $;
+#X obj 18 91 t b a;
+#X obj 48 129 outlet;
+#X obj 44 48 prepend list;
+#X obj 48 110 list trim;
+#X connect 0 0 3 0;
+#X connect 1 0 7 0;
+#X connect 2 0 5 0;
+#X connect 3 0 2 0;
+#X connect 5 0 2 0;
+#X connect 5 1 8 0;
+#X connect 7 0 2 0;
+#X connect 8 0 6 0;
diff --git a/abstractions/panS~-help.pd b/abstractions/panS~-help.pd
new file mode 100644
index 0000000..bd45349
--- /dev/null
+++ b/abstractions/panS~-help.pd
@@ -0,0 +1,20 @@
+#N canvas 599 324 443 253 10;
+#X obj 35 176 dacer~;
+#X obj 54 16 osc~ 440;
+#X obj 69 35 osc~ 444;
+#X obj 53 90 panS~;
+#X obj 198 35 osc~ 440;
+#X obj 199 73 pan~;
+#X obj 179 177 dacer~;
+#X floatatom 83 63 5 0 0 0 - - -;
+#X floatatom 222 57 5 0 0 0 - - -;
+#X text 36 233 (c) Tim Blechmann 2005 \, $Id: panS~-help.pd 221 2005-12-17 18:31:17Z tim $;
+#X connect 1 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 0 0;
+#X connect 3 1 0 1;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 5 1 6 1;
+#X connect 7 0 3 2;
+#X connect 8 0 5 1;
diff --git a/abstractions/panS~.pd b/abstractions/panS~.pd
new file mode 100644
index 0000000..f51badd
--- /dev/null
+++ b/abstractions/panS~.pd
@@ -0,0 +1,24 @@
+#N canvas 162 192 507 282 10;
+#X obj 35 13 inlet~;
+#X obj 132 14 inlet~;
+#X obj 196 15 inlet pan;
+#X obj 35 131 volctl~ 0 100;
+#X obj 132 131 volctl~ 0 100;
+#X obj 35 150 outlet~;
+#X obj 132 150 outlet~;
+#X text 365 190 \$1: pan;
+#X text 365 210 \$2: ramp;
+#X text 33 249 (c) Tim Blechmann 2005 \, $Id: panS~.pd 221 2005-12-17 18:31:17Z tim $;
+#X obj 391 43 init \$2;
+#X obj 391 65 moses 0;
+#X obj 196 64 _pan~math \$1;
+#X connect 0 0 3 0;
+#X connect 1 0 4 0;
+#X connect 2 0 12 0;
+#X connect 3 0 5 0;
+#X connect 4 0 6 0;
+#X connect 10 0 11 0;
+#X connect 11 1 4 2;
+#X connect 11 1 3 2;
+#X connect 12 0 3 1;
+#X connect 12 1 4 1;
diff --git a/abstractions/pan~.pd b/abstractions/pan~.pd
new file mode 100644
index 0000000..b413a8d
--- /dev/null
+++ b/abstractions/pan~.pd
@@ -0,0 +1,22 @@
+#N canvas 685 294 476 248 10;
+#X obj 35 23 inlet~;
+#X obj 131 23 inlet pan;
+#X obj 35 113 volctl~ 0 100;
+#X obj 146 113 volctl~ 0 100;
+#X obj 35 132 outlet~;
+#X obj 146 132 outlet~;
+#X text 40 182 (c) Tim Blechmann 2005 \, $Id: pan~.pd 221 2005-12-17 18:31:17Z tim $;
+#X obj 315 33 init \$2;
+#X obj 315 55 moses 0;
+#X text 311 126 \$1: pan;
+#X text 311 146 \$2: ramp;
+#X obj 131 80 _pan~math \$1;
+#X connect 0 0 2 0;
+#X connect 0 0 3 0;
+#X connect 1 0 11 0;
+#X connect 2 0 4 0;
+#X connect 3 0 5 0;
+#X connect 7 0 8 0;
+#X connect 8 1 3 2;
+#X connect 11 0 2 1;
+#X connect 11 1 3 1;
diff --git a/abstractions/pre_switch.pd b/abstractions/pre_switch.pd
new file mode 100644
index 0000000..50193de
--- /dev/null
+++ b/abstractions/pre_switch.pd
@@ -0,0 +1,28 @@
+#N canvas 0 0 450 300 10;
+#X obj 36 116 t b b;
+#X obj 105 193 0;
+#X obj 66 137 zl reg stop;
+#X obj 36 192 1;
+#X obj 36 91 sel 1 0;
+#X obj 105 170 delay \$1;
+#X obj 36 39 inlet switch;
+#X obj 36 231 outlet switch~;
+#X text 38 17 \$1: switch delay;
+#X obj 36 69 change;
+#X obj 197 38 inlet delay;
+#X obj 197 59 moses 0;
+#X obj 197 79 assert;
+#X text 35 265 (c) Tim Blechmann 2005 \, $Id: pre_switch.pd 221 2005-12-17 18:31:17Z tim $;
+#X connect 0 0 3 0;
+#X connect 0 1 2 0;
+#X connect 1 0 7 0;
+#X connect 2 0 5 0;
+#X connect 3 0 7 0;
+#X connect 4 0 0 0;
+#X connect 4 1 5 0;
+#X connect 5 0 1 0;
+#X connect 6 0 9 0;
+#X connect 9 0 4 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 11 1 5 1;
diff --git a/abstractions/sender-help.pd b/abstractions/sender-help.pd
new file mode 100644
index 0000000..54aca0c
--- /dev/null
+++ b/abstractions/sender-help.pd
@@ -0,0 +1,10 @@
+#N canvas 640 296 387 142 10;
+#X obj 29 68 sender;
+#X obj 154 16 r sendname;
+#X floatatom 154 39 5 0 0 0 - - -;
+#X msg 29 15 sendname 1;
+#X msg 29 41 sendname 2;
+#X text 23 92 (c) Tim Blechmann 2005 \, $Id: sender-help.pd 221 2005-12-17 18:31:17Z tim $;
+#X connect 1 0 2 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
diff --git a/abstractions/sender.pd b/abstractions/sender.pd
new file mode 100644
index 0000000..65a886f
--- /dev/null
+++ b/abstractions/sender.pd
@@ -0,0 +1,15 @@
+#N canvas 0 0 378 221 10;
+#X obj 30 59 zl slice 1;
+#X obj 30 98 buddy 2;
+#X obj 30 149 forward;
+#X obj 74 117 prepend send;
+#X obj 30 18 inlet;
+#X text 31 170 (c) Tim Blechmann 2005 \, $Id: sender.pd 221 2005-12-17 18:31:17Z tim $;
+#X obj 30 38 list trim;
+#X connect 0 0 1 1;
+#X connect 0 1 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 3 0;
+#X connect 3 0 2 0;
+#X connect 4 0 6 0;
+#X connect 6 0 0 0;
diff --git a/abstractions/sigmoid_booster~.pd b/abstractions/sigmoid_booster~.pd
new file mode 100644
index 0000000..68b0401
--- /dev/null
+++ b/abstractions/sigmoid_booster~.pd
@@ -0,0 +1,35 @@
+#N canvas 488 227 567 322 10;
+#X obj 69 40 dbtorms;
+#X obj 69 21 inlet pregain;
+#X obj 26 1 inlet~;
+#X obj 26 78 *~ -5;
+#X obj 26 135 pow~;
+#X obj 26 154 +~ 1;
+#X obj 26 222 -~ 1;
+#X obj 123 216 dbtorms;
+#X obj 123 197 inlet postgain;
+#X obj 26 262 outlet~;
+#X obj 26 59 volctl~ \$1 10;
+#X obj 26 241 volctl~ \$2 10;
+#X obj 49 97 init 1;
+#X obj 49 116 exp;
+#X text 203 21 direct port of TAP Sigmoid Booster by Tom Szilagyi \,
+except that it's using pd's db scaling instead of tap's;
+#X obj 26 181 sig~ 2;
+#X obj 26 203 /~;
+#X text 28 287 (c) Tim Blechmann 2005 \, $Id: sigmoid_booster~.pd 221 2005-12-17 18:31:17Z tim $;
+#X connect 0 0 10 1;
+#X connect 1 0 0 0;
+#X connect 2 0 10 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 16 1;
+#X connect 6 0 11 0;
+#X connect 7 0 11 1;
+#X connect 8 0 7 0;
+#X connect 10 0 3 0;
+#X connect 11 0 9 0;
+#X connect 12 0 13 0;
+#X connect 13 0 4 1;
+#X connect 15 0 16 0;
+#X connect 16 0 6 0;
diff --git a/abstractions/switcher.pd b/abstractions/switcher.pd
new file mode 100644
index 0000000..96fc6fe
--- /dev/null
+++ b/abstractions/switcher.pd
@@ -0,0 +1,14 @@
+#N canvas 567 330 438 173 10;
+#X obj 36 15 inlet switch;
+#X obj 36 79 outlet factor;
+#X obj 66 118 outlet switch~;
+#X obj 36 60 t f f;
+#X text 220 18 \$1: switch delay;
+#X obj 36 38 change;
+#X obj 66 99 pre_switch \$1;
+#X text 42 155 (c) Tim Blechmann 2005 \, $Id: switcher.pd 221 2005-12-17 18:31:17Z tim $;
+#X connect 0 0 5 0;
+#X connect 3 0 1 0;
+#X connect 3 1 6 0;
+#X connect 5 0 3 0;
+#X connect 6 0 2 0;
diff --git a/abstractions/tbEnvify~-help.pd b/abstractions/tbEnvify~-help.pd
new file mode 100644
index 0000000..4b438f6
--- /dev/null
+++ b/abstractions/tbEnvify~-help.pd
@@ -0,0 +1,27 @@
+#N canvas 394 35 818 634 10;
+#X obj 21 324 tbEnvify~;
+#X obj 291 185 Scope~ 456 390 256 3 128 -1 1 0 0 0 0 102 255 51 135
+135 135 0;
+#X obj 21 366 dacer~;
+#X msg 173 40 1000 sine 1 0.1;
+#X msg 151 9 1000 triangle 1 0.1;
+#X msg 183 64 1000 hanning 1 0.1;
+#X msg 193 85 1000 bpe 0 0 1 1 0.2 1 0 1;
+#X obj 20 272 osc~ 440;
+#X msg 204 109 1000 bpe-smooth 0 0 1 1 0.2 1 0 1 2000 8000;
+#X msg 214 133 1000 bpe-slide 0 0 1 1 0.2 1 0 1 4000 8000;
+#X text 344 36 (c) Tim Blechmann 2005 \, $Id: tbEnvify~-help.pd 221 2005-12-17 18:31:17Z tim $;
+#X text 344 17 a simple envelope generator;
+#X obj 99 351 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X connect 0 0 1 0;
+#X connect 0 0 2 0;
+#X connect 0 0 2 1;
+#X connect 0 1 12 0;
+#X connect 3 0 0 1;
+#X connect 4 0 0 1;
+#X connect 5 0 0 1;
+#X connect 6 0 0 1;
+#X connect 7 0 0 0;
+#X connect 8 0 0 1;
+#X connect 9 0 0 1;
diff --git a/abstractions/tbEnvify~.pd b/abstractions/tbEnvify~.pd
new file mode 100644
index 0000000..83282be
--- /dev/null
+++ b/abstractions/tbEnvify~.pd
@@ -0,0 +1,85 @@
+#N canvas 599 226 536 134 10;
+#X obj 28 19 inlet~;
+#X obj 28 81 outlet~;
+#N canvas 171 233 452 345 controls 0;
+#X obj 54 13 inlet;
+#X obj 54 255 s \$0-triangle;
+#X text 96 13 duration type (arguments);
+#X text 105 217 type duration (arguments);
+#X obj 54 139 zl slice 2;
+#X obj 54 194 zl join;
+#X obj 54 165 zl rev;
+#X obj 84 57 zl len;
+#X obj 54 36 t a a;
+#X obj 84 79 <= 2;
+#X obj 54 104 demux;
+#X obj 147 166 zl rev;
+#X obj 107 274 s \$0-sine;
+#X obj 160 293 s \$0-hanning;
+#X obj 213 313 s \$0-bpe;
+#X obj 285 264 s \$0-bpe_rampsmooth;
+#X obj 54 236 route triangle sine hanning bpe bpe-smooth bpe-slide
+;
+#X obj 302 313 s \$0-bpe_slide;
+#X connect 0 0 8 0;
+#X connect 4 0 6 0;
+#X connect 4 1 5 1;
+#X connect 5 0 16 0;
+#X connect 6 0 5 0;
+#X connect 7 0 9 0;
+#X connect 8 0 10 0;
+#X connect 8 1 7 0;
+#X connect 9 0 10 1;
+#X connect 10 0 4 0;
+#X connect 10 1 11 0;
+#X connect 11 0 16 0;
+#X connect 16 0 1 0;
+#X connect 16 1 12 0;
+#X connect 16 2 13 0;
+#X connect 16 3 14 0;
+#X connect 16 4 15 0;
+#X connect 16 5 17 0;
+#X restore 142 41 pd controls;
+#N canvas 138 140 450 300 envelopes 0;
+#X obj 170 8 r \$0-triangle;
+#X obj 142 50 r \$0-sine;
+#X obj 14 69 ./tbEnvify~/sine \$0;
+#X obj 163 90 r \$0-hanning;
+#X obj 14 109 ./tbEnvify~/hanning \$0;
+#X obj 14 7 inlet~;
+#X obj 14 266 outlet~;
+#X text 223 42 ugly but fast and no latency;
+#X obj 135 133 r \$0-bpe;
+#X obj 212 173 r \$0-bpe_rampsmooth;
+#X obj 179 213 r \$0-bpe_slide;
+#X obj 14 159 ./tbEnvify~/bpe \$0;
+#X obj 14 193 ./tbEnvify~/bpe_rampsmooth \$0;
+#X obj 14 233 ./tbEnvify~/bpe_slide \$0;
+#X obj 14 27 ./tbEnvify~/triangle \$0;
+#X connect 0 0 14 1;
+#X connect 1 0 2 1;
+#X connect 2 0 6 0;
+#X connect 3 0 4 1;
+#X connect 4 0 6 0;
+#X connect 5 0 2 0;
+#X connect 5 0 4 0;
+#X connect 5 0 11 0;
+#X connect 5 0 12 0;
+#X connect 5 0 13 0;
+#X connect 5 0 14 0;
+#X connect 8 0 11 1;
+#X connect 9 0 12 1;
+#X connect 10 0 13 1;
+#X connect 11 0 6 0;
+#X connect 12 0 6 0;
+#X connect 13 0 6 0;
+#X connect 14 0 6 0;
+#X restore 28 45 pd envelopes;
+#X obj 142 17 inlet duration_type_volume_(arguments);
+#X text 31 105 (c) Tim Blechmann 2005 \, $Id: tbEnvify~.pd 221 2005-12-17 18:31:17Z tim $;
+#X obj 252 84 outlet done;
+#X obj 252 62 r \$0-done;
+#X connect 0 0 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 2 0;
+#X connect 7 0 6 0;
diff --git a/abstractions/tbEnvify~/_bpe_stuff.pd b/abstractions/tbEnvify~/_bpe_stuff.pd
new file mode 100644
index 0000000..a8ad161
--- /dev/null
+++ b/abstractions/tbEnvify~/_bpe_stuff.pd
@@ -0,0 +1,34 @@
+#N canvas 0 0 631 540 10;
+#X obj 204 21 inlet control;
+#X obj 455 328 1;
+#X obj 413 286 delay;
+#X obj 413 307 0;
+#X obj 455 198 t b b;
+#X obj 485 219 zl reg stop;
+#X obj 413 350 pre_switch 10;
+#X obj 55 131 t b a;
+#X obj 55 250 bpe ---;
+#X obj 413 267 10;
+#X obj 204 42 t a b;
+#X obj 413 399 outlet switch~;
+#X obj 55 286 outlet factor;
+#X obj 77 309 outlet time;
+#X obj 55 80 py bpe parse_arguments @detach 0;
+#X text 47 460 (c) Tim Blechmann 2005 \, $Id: _bpe_stuff.pd 221 2005-12-17 18:31:17Z tim $;
+#X connect 0 0 10 0;
+#X connect 1 0 6 0;
+#X connect 2 0 3 0;
+#X connect 3 0 6 0;
+#X connect 4 0 1 0;
+#X connect 4 1 5 0;
+#X connect 5 0 2 0;
+#X connect 6 0 11 0;
+#X connect 7 0 8 0;
+#X connect 7 1 8 0;
+#X connect 8 0 12 0;
+#X connect 8 1 13 0;
+#X connect 8 2 9 0;
+#X connect 9 0 2 0;
+#X connect 10 0 14 1;
+#X connect 10 1 4 0;
+#X connect 14 0 7 0;
diff --git a/abstractions/tbEnvify~/_env_lookup~.pd b/abstractions/tbEnvify~/_env_lookup~.pd
new file mode 100644
index 0000000..37d63e7
--- /dev/null
+++ b/abstractions/tbEnvify~/_env_lookup~.pd
@@ -0,0 +1,31 @@
+#N canvas 518 105 575 385 10;
+#X obj 45 31 inlet duration;
+#X obj 148 31 inlet peak_time;
+#X obj 45 98 *;
+#X obj 45 61 t f f;
+#X obj 45 215 t b f;
+#X obj 67 148 delay;
+#X obj 45 119 t f f f;
+#X obj 89 169 !-;
+#X obj 67 193 pack 0 f;
+#X obj 45 276 line~;
+#X text 339 80 \$1 max_scaling;
+#X obj 45 246 pack \$1 f;
+#X obj 45 299 outlet~;
+#X text 101 300 outlet function;
+#X text 47 329 (c) Tim Blechmann 2005 \, $Id: _env_lookup~.pd 221 2005-12-17 18:31:17Z tim $;
+#X connect 0 0 3 0;
+#X connect 1 0 2 1;
+#X connect 2 0 6 0;
+#X connect 3 0 2 0;
+#X connect 3 1 7 1;
+#X connect 4 0 11 0;
+#X connect 4 1 11 1;
+#X connect 5 0 8 0;
+#X connect 6 0 4 0;
+#X connect 6 1 5 0;
+#X connect 6 2 7 0;
+#X connect 7 0 8 1;
+#X connect 8 0 9 0;
+#X connect 9 0 12 0;
+#X connect 11 0 9 0;
diff --git a/abstractions/tbEnvify~/bpe.pd b/abstractions/tbEnvify~/bpe.pd
new file mode 100644
index 0000000..dc3b093
--- /dev/null
+++ b/abstractions/tbEnvify~/bpe.pd
@@ -0,0 +1,21 @@
+#N canvas 365 133 534 216 10;
+#X obj 13 5 volctl~ 0 0;
+#X obj 198 -39 inlet control;
+#X obj 13 -43 inlet~;
+#X obj 13 26 outlet~;
+#X text 298 -40 duration [bp time] * n;
+#X obj 198 -12 _bpe_stuff;
+#X text 17 99 (c) Tim Blechmann 2005 \, $Id: bpe.pd 221 2005-12-17 18:31:17Z tim $;
+#X obj 263 75 switch~;
+#X obj 263 10 t f f;
+#X obj 293 31 sel 0;
+#X obj 293 52 s \$1-done;
+#X connect 0 0 3 0;
+#X connect 1 0 5 0;
+#X connect 2 0 0 0;
+#X connect 5 0 0 1;
+#X connect 5 1 0 2;
+#X connect 5 2 8 0;
+#X connect 8 0 7 0;
+#X connect 8 1 9 0;
+#X connect 9 0 10 0;
diff --git a/abstractions/tbEnvify~/bpe_rampsmooth.pd b/abstractions/tbEnvify~/bpe_rampsmooth.pd
new file mode 100644
index 0000000..11cb56e
--- /dev/null
+++ b/abstractions/tbEnvify~/bpe_rampsmooth.pd
@@ -0,0 +1,49 @@
+#N canvas 20 105 625 441 10;
+#X obj 204 15 inlet control;
+#X obj 19 11 inlet~;
+#X obj 19 379 outlet~;
+#X text 304 14 duration [bp time] * n;
+#X obj 204 92 _bpe_stuff;
+#X obj 204 47 zl ecils 2;
+#X obj 19 360 *~;
+#X obj 36 164 pack f f;
+#X obj 36 188 line~;
+#X obj 36 231 rampsmooth~;
+#X obj 162 131 unpack f f;
+#X obj 162 193 prepend rampup;
+#X obj 227 214 prepend rampdown;
+#X obj 72 262 edge~;
+#X obj 102 282 0;
+#X text 21 407 (c) Tim Blechmann 2005 \, $Id: bpe_rampsmooth.pd 195 2005-11-20 01:25:43Z tim
+$;
+#X obj 269 243 sel 1;
+#X obj 269 264 1;
+#X obj 269 299 pre_switch 10;
+#X obj 269 384 switch~;
+#X obj 269 319 t f f;
+#X obj 299 340 sel 0;
+#X obj 299 361 s \$1-done;
+#X connect 0 0 5 0;
+#X connect 1 0 6 0;
+#X connect 4 0 7 0;
+#X connect 4 1 7 1;
+#X connect 4 2 16 0;
+#X connect 5 0 4 0;
+#X connect 5 1 10 0;
+#X connect 6 0 2 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 9 0 6 1;
+#X connect 9 0 13 0;
+#X connect 10 0 11 0;
+#X connect 10 1 12 0;
+#X connect 11 0 9 0;
+#X connect 12 0 9 0;
+#X connect 13 1 14 0;
+#X connect 14 0 18 0;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 18 0 20 0;
+#X connect 20 0 19 0;
+#X connect 20 1 21 0;
+#X connect 21 0 22 0;
diff --git a/abstractions/tbEnvify~/bpe_slide.pd b/abstractions/tbEnvify~/bpe_slide.pd
new file mode 100644
index 0000000..9352fec
--- /dev/null
+++ b/abstractions/tbEnvify~/bpe_slide.pd
@@ -0,0 +1,48 @@
+#N canvas 84 183 625 441 10;
+#X obj 204 15 inlet control;
+#X obj 19 11 inlet~;
+#X obj 19 379 outlet~;
+#X text 304 14 duration [bp time] * n;
+#X obj 204 92 _bpe_stuff;
+#X obj 204 47 zl ecils 2;
+#X obj 19 360 *~;
+#X obj 36 164 pack f f;
+#X obj 36 188 line~;
+#X obj 162 124 unpack f f;
+#X obj 162 152 t f f;
+#X obj 227 152 t f f;
+#X obj 269 242 sel 1;
+#X obj 269 263 1;
+#X obj 121 261 edge~;
+#X obj 37 231 slide~;
+#X obj 151 281 0;
+#X text 21 417 (c) Tim Blechmann 2005 \, $Id: bpe_slide.pd 221 2005-12-17 18:31:17Z tim $;
+#X obj 269 298 pre_switch 10;
+#X obj 269 383 switch~;
+#X obj 269 318 t f f;
+#X obj 299 339 sel 0;
+#X obj 299 360 s \$1-done;
+#X connect 0 0 5 0;
+#X connect 1 0 6 0;
+#X connect 4 0 7 0;
+#X connect 4 1 7 1;
+#X connect 4 2 12 0;
+#X connect 5 0 4 0;
+#X connect 5 1 9 0;
+#X connect 6 0 2 0;
+#X connect 7 0 8 0;
+#X connect 8 0 15 0;
+#X connect 9 0 10 0;
+#X connect 9 1 11 0;
+#X connect 10 0 15 1;
+#X connect 11 0 15 2;
+#X connect 12 0 13 0;
+#X connect 13 0 18 0;
+#X connect 14 1 16 0;
+#X connect 15 0 6 1;
+#X connect 15 0 14 0;
+#X connect 16 0 18 0;
+#X connect 18 0 20 0;
+#X connect 20 0 19 0;
+#X connect 20 1 21 0;
+#X connect 21 0 22 0;
diff --git a/abstractions/tbEnvify~/hanning.pd b/abstractions/tbEnvify~/hanning.pd
new file mode 100644
index 0000000..d02d5e6
--- /dev/null
+++ b/abstractions/tbEnvify~/hanning.pd
@@ -0,0 +1,54 @@
+#N canvas 121 117 559 504 10;
+#X obj 177 15 inlet control;
+#X obj 177 40 t a b;
+#X text 277 14 duration peak peak_time;
+#X obj 177 65 unpack f f f;
+#X obj 19 378 *~ 0;
+#X obj 20 359 *~;
+#X obj 365 268 1;
+#X obj 323 226 delay;
+#X obj 323 247 0;
+#X obj 323 204 + 10;
+#X obj 365 138 t b b;
+#X obj 395 159 zl reg stop;
+#X obj 323 290 pre_switch 10;
+#X obj 56 335 +~ 1;
+#X obj 216 361 * 0.5;
+#X obj 177 92 t f f;
+#X obj 55 288 cos~;
+#X obj 56 312 *~ -1;
+#X obj 19 11 inlet~;
+#X obj 19 399 outlet~;
+#X obj 55 268 _env_lookup~ 0.5;
+#X text 21 433 (c) Tim Blechmann 2005 \, $Id: hanning.pd 221 2005-12-17 18:31:17Z tim $;
+#X obj 323 379 switch~;
+#X obj 323 314 t f f;
+#X obj 353 335 sel 0;
+#X obj 353 356 s \$1-done;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X connect 1 1 10 0;
+#X connect 3 0 15 0;
+#X connect 3 1 14 0;
+#X connect 3 2 20 1;
+#X connect 4 0 19 0;
+#X connect 5 0 4 0;
+#X connect 6 0 12 0;
+#X connect 7 0 8 0;
+#X connect 8 0 12 0;
+#X connect 9 0 7 0;
+#X connect 10 0 6 0;
+#X connect 10 1 11 0;
+#X connect 11 0 7 0;
+#X connect 12 0 23 0;
+#X connect 13 0 5 1;
+#X connect 14 0 4 1;
+#X connect 15 0 20 0;
+#X connect 15 1 9 0;
+#X connect 16 0 17 0;
+#X connect 17 0 13 0;
+#X connect 18 0 5 0;
+#X connect 20 0 16 0;
+#X connect 23 0 22 0;
+#X connect 23 1 24 0;
+#X connect 24 0 25 0;
diff --git a/abstractions/tbEnvify~/sine.pd b/abstractions/tbEnvify~/sine.pd
new file mode 100644
index 0000000..1c23e90
--- /dev/null
+++ b/abstractions/tbEnvify~/sine.pd
@@ -0,0 +1,48 @@
+#N canvas 0 0 555 438 10;
+#X obj 177 15 inlet control;
+#X obj 177 40 t a b;
+#X text 277 14 duration peak peak_time;
+#X obj 177 65 unpack f f f;
+#X obj 55 288 sinx~;
+#X obj 19 338 *~ 0;
+#X obj 20 315 *~;
+#X obj 365 268 1;
+#X obj 323 226 delay;
+#X obj 323 247 0;
+#X obj 323 204 + 10;
+#X obj 365 138 t b b;
+#X obj 395 159 zl reg stop;
+#X obj 323 290 pre_switch 10;
+#X obj 55 268 _env_lookup~ 1.5708;
+#X obj 177 92 t f f;
+#X obj 19 11 inlet~;
+#X obj 19 359 outlet~;
+#X text 19 405 (c) Tim Blechmann 2005 \, $Id: sine.pd 221 2005-12-17 18:31:17Z tim $;
+#X obj 323 375 switch~;
+#X obj 323 310 t f f;
+#X obj 353 331 sel 0;
+#X obj 353 352 s \$1-done;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X connect 1 1 11 0;
+#X connect 3 0 15 0;
+#X connect 3 1 5 1;
+#X connect 3 2 14 1;
+#X connect 4 0 6 1;
+#X connect 5 0 17 0;
+#X connect 6 0 5 0;
+#X connect 7 0 13 0;
+#X connect 8 0 9 0;
+#X connect 9 0 13 0;
+#X connect 10 0 8 0;
+#X connect 11 0 7 0;
+#X connect 11 1 12 0;
+#X connect 12 0 8 0;
+#X connect 13 0 20 0;
+#X connect 14 0 4 0;
+#X connect 15 0 14 0;
+#X connect 15 1 10 0;
+#X connect 16 0 6 0;
+#X connect 20 0 19 0;
+#X connect 20 1 21 0;
+#X connect 21 0 22 0;
diff --git a/abstractions/tbEnvify~/triangle.pd b/abstractions/tbEnvify~/triangle.pd
new file mode 100644
index 0000000..8b6b55c
--- /dev/null
+++ b/abstractions/tbEnvify~/triangle.pd
@@ -0,0 +1,65 @@
+#N canvas 569 176 587 435 10;
+#X obj 19 292 volctl~ 0 0;
+#X obj 177 15 inlet control;
+#X obj 413 369 switch~;
+#X obj 177 40 t a b;
+#X obj 455 258 1;
+#X obj 413 226 delay;
+#X obj 413 247 0;
+#X obj 177 120 *;
+#X obj 55 156 t b f;
+#X obj 199 168 delay;
+#X obj 177 139 t f f f;
+#X obj 221 189 !-;
+#X obj 177 92 t f f f;
+#X obj 199 212 t b b;
+#X obj 229 238 f;
+#X obj 199 238 0;
+#X text 277 14 duration peak peak_time;
+#X obj 177 65 unpack f f f;
+#X obj 55 176 f;
+#X obj 413 204 + 10;
+#X obj 455 138 t b b;
+#X obj 485 159 zl reg stop;
+#X obj 413 280 pre_switch 10;
+#X obj 19 11 inlet~;
+#X obj 19 313 outlet~;
+#X obj 413 304 t f f;
+#X obj 443 325 sel 0;
+#X obj 443 346 s \$1-done;
+#X text 23 391 (c) Tim Blechmann 2005 \, $Id: triangle.pd 221 2005-12-17 18:31:17Z tim $;
+#X connect 0 0 24 0;
+#X connect 1 0 3 0;
+#X connect 3 0 17 0;
+#X connect 3 1 20 0;
+#X connect 4 0 22 0;
+#X connect 5 0 6 0;
+#X connect 6 0 22 0;
+#X connect 7 0 10 0;
+#X connect 8 0 18 0;
+#X connect 8 1 0 2;
+#X connect 9 0 13 0;
+#X connect 10 0 8 0;
+#X connect 10 1 9 0;
+#X connect 10 2 11 0;
+#X connect 11 0 14 1;
+#X connect 12 0 7 0;
+#X connect 12 1 11 1;
+#X connect 12 2 19 0;
+#X connect 13 0 15 0;
+#X connect 13 1 14 0;
+#X connect 14 0 0 2;
+#X connect 15 0 0 1;
+#X connect 17 0 12 0;
+#X connect 17 1 18 1;
+#X connect 17 2 7 1;
+#X connect 18 0 0 1;
+#X connect 19 0 5 0;
+#X connect 20 0 4 0;
+#X connect 20 1 21 0;
+#X connect 21 0 5 0;
+#X connect 22 0 25 0;
+#X connect 23 0 0 0;
+#X connect 25 0 2 0;
+#X connect 25 1 26 0;
+#X connect 26 0 27 0;
diff --git a/abstractions/volctl~.pd b/abstractions/volctl~.pd
new file mode 100644
index 0000000..b4122fb
--- /dev/null
+++ b/abstractions/volctl~.pd
@@ -0,0 +1,22 @@
+#N canvas 428 171 462 309 10;
+#X obj 28 13 inlet~;
+#X obj 28 219 outlet~;
+#X obj 28 179 *~;
+#X obj 44 160 line~;
+#X obj 44 139 pack \$1 \$2;
+#X obj 109 115 inlet ramp_time;
+#X obj 44 53 loadbang;
+#X text 143 42 \$1: initial gain;
+#X text 143 62 \$2: initial ramp time;
+#X text 27 245 for all the people \, who are afraid to use devel or
+my volctl~ external;
+#X obj 44 75 inlet factor;
+#X text 27 275 (c) Tim Blechmann 2005 \, $Id: volctl~.pd 219 2005-12-17
+18:21:06Z tim $;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 1;
+#X connect 4 0 3 0;
+#X connect 5 0 4 1;
+#X connect 6 0 4 0;
+#X connect 10 0 4 0;
diff --git a/abstractions/xfade-help.pd b/abstractions/xfade-help.pd
new file mode 100644
index 0000000..a0bd368
--- /dev/null
+++ b/abstractions/xfade-help.pd
@@ -0,0 +1,68 @@
+#N canvas 151 330 809 334 10;
+#X obj 62 74 xfade 0 100;
+#X obj 98 102 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 134 104 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#N canvas 0 0 450 300 sig1 0;
+#X obj 38 99 osc~ 440;
+#X obj 38 123 outlet~;
+#X obj 162 119 switch~;
+#X obj 162 99 inlet switch~;
+#X connect 0 0 1 0;
+#X connect 3 0 2 0;
+#X restore 62 18 pd sig1;
+#N canvas 0 0 450 300 sig2 0;
+#X obj 38 123 outlet~;
+#X obj 162 119 switch~;
+#X obj 162 99 inlet switch~;
+#X obj 38 99 osc~ 220;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X restore 98 48 pd sig2;
+#X obj 62 144 dacer~;
+#X floatatom 150 76 5 0 0 0 - - -;
+#X text 69 212 (c) Tim Blechmann 2005 \, $Id: xfade-help.pd 221 2005-12-17 18:31:17Z tim $;
+#X obj 348 118 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X obj 375 118 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#N canvas 0 0 450 300 sig1 0;
+#X obj 38 99 osc~ 440;
+#X obj 38 123 outlet~;
+#X obj 162 119 switch~;
+#X obj 162 99 inlet switch~;
+#X connect 0 0 1 0;
+#X connect 3 0 2 0;
+#X restore 296 34 pd sig1;
+#N canvas 0 0 450 300 sig2 0;
+#X obj 38 123 outlet~;
+#X obj 162 119 switch~;
+#X obj 162 99 inlet switch~;
+#X obj 38 99 osc~ 220;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X restore 334 58 pd sig2;
+#X obj 296 160 dacer~;
+#X floatatom 408 90 5 0 0 0 - - -;
+#X obj 296 90 xfadeS 0 100;
+#X connect 0 0 5 0;
+#X connect 0 0 5 1;
+#X connect 0 1 1 0;
+#X connect 0 2 2 0;
+#X connect 1 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 1;
+#X connect 6 0 0 2;
+#X connect 8 0 10 0;
+#X connect 9 0 11 0;
+#X connect 10 0 14 0;
+#X connect 10 0 14 1;
+#X connect 11 0 14 2;
+#X connect 11 0 14 3;
+#X connect 13 0 14 4;
+#X connect 14 0 12 0;
+#X connect 14 1 12 1;
+#X connect 14 2 8 0;
+#X connect 14 3 9 0;
diff --git a/abstractions/xfade.pd b/abstractions/xfade.pd
new file mode 100644
index 0000000..a1fb280
--- /dev/null
+++ b/abstractions/xfade.pd
@@ -0,0 +1,68 @@
+#N canvas 399 50 792 461 10;
+#X obj 35 24 inlet~;
+#X obj 187 24 inlet~;
+#X obj 35 366 outlet~;
+#X text 456 26 0 bis 100;
+#X text 36 4 0;
+#X text 169 5 100;
+#X obj 380 25 inlet fade;
+#X obj 380 180 t f f;
+#X obj 380 160 * 0.01;
+#X obj 380 204 !- 1;
+#X obj 380 48 clip 0 100;
+#X obj 410 223 sqrt;
+#X obj 380 244 sqrt;
+#N canvas 5 26 523 273 init 0;
+#X obj 9 21 init \$1;
+#X obj 187 20 init \$2;
+#X obj 187 83 10;
+#X obj 187 63 b;
+#X obj 187 40 moses 0;
+#X obj 231 63 sel 0;
+#X obj 9 43 outlet initial_state;
+#X obj 187 112 outlet fade_time;
+#X connect 0 0 6 0;
+#X connect 1 0 4 0;
+#X connect 2 0 7 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 1 5 0;
+#X connect 5 0 2 0;
+#X connect 5 1 7 0;
+#X restore 241 73 pd init;
+#X text 521 82 \$1: initial value;
+#X obj 380 328 != 0;
+#X obj 380 366 outlet switch~_1;
+#X obj 500 328 != 0;
+#X obj 500 366 outlet switch~_2;
+#X obj 380 347 pre_switch 20;
+#X obj 187 342 volctl~ 0 \$2;
+#X obj 35 342 volctl~ 1 \$2;
+#X text 521 102 \$2: interpolation time;
+#X obj 586 273 + 10;
+#X text 36 426 (c) Tim Blechmann 2005 \, $Id: xfade.pd 221 2005-12-17 18:31:17Z tim $;
+#X obj 500 347 pre_switch 20;
+#X connect 0 0 21 0;
+#X connect 1 0 20 0;
+#X connect 6 0 10 0;
+#X connect 7 0 9 0;
+#X connect 7 1 11 0;
+#X connect 8 0 7 0;
+#X connect 9 0 12 0;
+#X connect 10 0 8 0;
+#X connect 11 0 17 0;
+#X connect 11 0 20 1;
+#X connect 12 0 15 0;
+#X connect 12 0 21 1;
+#X connect 13 0 8 0;
+#X connect 13 1 21 2;
+#X connect 13 1 20 2;
+#X connect 13 1 23 0;
+#X connect 15 0 19 0;
+#X connect 17 0 25 0;
+#X connect 19 0 16 0;
+#X connect 20 0 2 0;
+#X connect 21 0 2 0;
+#X connect 23 0 19 1;
+#X connect 23 0 25 1;
+#X connect 25 0 18 0;
diff --git a/abstractions/xfadeS.pd b/abstractions/xfadeS.pd
new file mode 100644
index 0000000..ac26b5f
--- /dev/null
+++ b/abstractions/xfadeS.pd
@@ -0,0 +1,83 @@
+#N canvas 0 0 949 473 10;
+#X obj 45 24 inlet~;
+#X obj 357 24 inlet~;
+#X obj 45 416 outlet~;
+#X text 626 26 0 bis 100;
+#X text 46 4 0;
+#X text 358 6 100;
+#X obj 550 25 inlet fade;
+#X obj 550 180 t f f;
+#X obj 550 160 * 0.01;
+#X obj 550 204 !- 1;
+#X obj 550 48 clip 0 100;
+#X obj 580 223 sqrt;
+#X obj 550 244 sqrt;
+#N canvas 5 26 523 273 init 0;
+#X obj 9 21 init \$1;
+#X obj 187 20 init \$2;
+#X obj 187 83 10;
+#X obj 187 63 b;
+#X obj 187 40 moses 0;
+#X obj 231 63 sel 0;
+#X obj 9 43 outlet initial_state;
+#X obj 187 112 outlet fade_time;
+#X connect 0 0 6 0;
+#X connect 1 0 4 0;
+#X connect 2 0 7 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 1 5 0;
+#X connect 5 0 2 0;
+#X connect 5 1 7 0;
+#X restore 409 69 pd init;
+#X text 691 82 \$1: initial value;
+#X obj 550 328 != 0;
+#X obj 550 366 outlet switch~_1;
+#X obj 670 328 != 0;
+#X obj 670 366 outlet switch~_2;
+#X obj 670 347 pre_switch 20;
+#X obj 550 347 pre_switch 20;
+#X obj 357 342 volctl~ 0 \$2;
+#X obj 45 342 volctl~ 1 \$2;
+#X text 691 102 \$2: interpolation time;
+#X obj 135 24 inlet~;
+#X obj 135 416 outlet~;
+#X text 136 4 0;
+#X obj 135 342 volctl~ 1 \$2;
+#X obj 237 24 inlet~;
+#X obj 237 342 volctl~ 0 \$2;
+#X text 238 6 100;
+#X obj 756 283 + 10;
+#X text 45 447 (c) Tim Blechmann 2005 \, $Id: xfadeS.pd 221 2005-12-17 18:31:17Z tim $;
+#X connect 0 0 22 0;
+#X connect 1 0 21 0;
+#X connect 6 0 10 0;
+#X connect 7 0 9 0;
+#X connect 7 1 11 0;
+#X connect 8 0 7 0;
+#X connect 9 0 12 0;
+#X connect 10 0 8 0;
+#X connect 11 0 17 0;
+#X connect 11 0 21 1;
+#X connect 11 0 29 1;
+#X connect 12 0 15 0;
+#X connect 12 0 22 1;
+#X connect 12 0 27 1;
+#X connect 13 0 8 0;
+#X connect 13 1 22 2;
+#X connect 13 1 21 2;
+#X connect 13 1 27 2;
+#X connect 13 1 29 2;
+#X connect 13 1 31 1;
+#X connect 15 0 20 0;
+#X connect 17 0 19 0;
+#X connect 19 0 18 0;
+#X connect 20 0 16 0;
+#X connect 21 0 25 0;
+#X connect 22 0 2 0;
+#X connect 24 0 27 0;
+#X connect 27 0 25 0;
+#X connect 28 0 29 0;
+#X connect 29 0 2 0;
+#X connect 31 0 20 1;
+#X connect 31 0 19 1;