From dd5ac2e76720932af409a803bb04381781a644e8 Mon Sep 17 00:00:00 2001
From: Jonathan Wilkes <jon.w.wilkes@gmail.com>
Date: Fri, 14 Aug 2015 20:45:40 -0400
Subject: [PATCH] ported: "added rjlib to the base install to support added K12
 functionality" from pd-l2ork: 640d3c53ad8cd592b1d757b988e27d3ada2b1779

---
 l2ork_addons/rjlib/Makefile                   |  26 +
 l2ork_addons/rjlib/README                     |  28 +
 l2ork_addons/rjlib/abs/reverb-echo.pd         |  24 +
 l2ork_addons/rjlib/accelerate.pd              |  90 ++
 l2ork_addons/rjlib/analysepitch.pd            |  23 +
 l2ork_addons/rjlib/analysesimpleonset.pd      |  37 +
 l2ork_addons/rjlib/hilbert~.pd                |  27 +
 l2ork_addons/rjlib/playback.pd                |  13 +
 l2ork_addons/rjlib/recorder.pd                |  36 +
 l2ork_addons/rjlib/reverb.pd                  |  99 ++
 l2ork_addons/rjlib/rj/OVERVIEW.pd             |  68 ++
 l2ork_addons/rjlib/rj/c.txt                   |   5 +
 l2ork_addons/rjlib/rj/c_adsr-help.pd          |  58 ++
 l2ork_addons/rjlib/rj/c_adsr.pd               |  96 ++
 l2ork_addons/rjlib/rj/c_adsrj-help.pd         |  54 +
 l2ork_addons/rjlib/rj/c_adsrj.pd              |  40 +
 l2ork_addons/rjlib/rj/c_mphasor-help.pd       |  68 ++
 l2ork_addons/rjlib/rj/c_mphasor.pd            |  87 ++
 l2ork_addons/rjlib/rj/c_multimetro-help.pd    |  45 +
 l2ork_addons/rjlib/rj/c_multimetro.pd         |  55 ++
 l2ork_addons/rjlib/rj/c_xfade-help.pd         |  31 +
 l2ork_addons/rjlib/rj/c_xfade.pd              |  23 +
 l2ork_addons/rjlib/rj/e.txt                   |  14 +
 l2ork_addons/rjlib/rj/e_alias-help.pd         |  30 +
 l2ork_addons/rjlib/rj/e_alias.pd              |  49 +
 l2ork_addons/rjlib/rj/e_chorus-help.pd        |  60 ++
 l2ork_addons/rjlib/rj/e_chorus.pd             | 121 +++
 l2ork_addons/rjlib/rj/e_chorusr-help.pd       |  62 ++
 l2ork_addons/rjlib/rj/e_chorusr.pd            | 131 +++
 l2ork_addons/rjlib/rj/e_fbdelay-help.pd       |  87 ++
 l2ork_addons/rjlib/rj/e_fbdelay.pd            |  85 ++
 l2ork_addons/rjlib/rj/e_fbdelay2.pd           |  17 +
 l2ork_addons/rjlib/rj/e_freqshift-help.pd     |  22 +
 l2ork_addons/rjlib/rj/e_freqshift.pd          |  52 +
 l2ork_addons/rjlib/rj/e_pan-help.pd           |  25 +
 l2ork_addons/rjlib/rj/e_pan.pd                |  54 +
 l2ork_addons/rjlib/rj/e_phaser-help.pd        |  72 ++
 l2ork_addons/rjlib/rj/e_phaser.pd             |  70 ++
 l2ork_addons/rjlib/rj/e_pingpong-help.pd      |  93 ++
 l2ork_addons/rjlib/rj/e_pingpong.pd           | 127 +++
 l2ork_addons/rjlib/rj/e_pitchshift-help.pd    |  15 +
 l2ork_addons/rjlib/rj/e_pitchshift.pd         | 131 +++
 l2ork_addons/rjlib/rj/e_reslop-help.pd        |  47 +
 l2ork_addons/rjlib/rj/e_reslop.pd             |  42 +
 l2ork_addons/rjlib/rj/e_reverb-help.pd        |  42 +
 l2ork_addons/rjlib/rj/e_reverb.pd             | 258 +++++
 l2ork_addons/rjlib/rj/e_softclip-help.pd      |  54 +
 l2ork_addons/rjlib/rj/e_softclip.pd           |  93 ++
 l2ork_addons/rjlib/rj/e_vocoder-help.pd       | 136 +++
 l2ork_addons/rjlib/rj/e_vocoder.pd            | 156 +++
 l2ork_addons/rjlib/rj/jon~.pd                 | 919 ++++++++++++++++++
 l2ork_addons/rjlib/rj/m.txt                   |   3 +
 l2ork_addons/rjlib/rj/m_bpm2ms-help.pd        |  28 +
 l2ork_addons/rjlib/rj/m_bpm2ms.pd             |   9 +
 l2ork_addons/rjlib/rj/m_scale-help.pd         | 109 +++
 l2ork_addons/rjlib/rj/m_scale.pd              | 153 +++
 l2ork_addons/rjlib/rj/m_speedlimit-help.pd    |  26 +
 l2ork_addons/rjlib/rj/m_speedlimit.pd         |  59 ++
 l2ork_addons/rjlib/rj/rjdispatch-help.pd      |  67 ++
 l2ork_addons/rjlib/rj/rjdispatch.pd           |  28 +
 l2ork_addons/rjlib/rj/rjloader-help.pd        |   3 +
 l2ork_addons/rjlib/rj/rjloader.pd             |  26 +
 l2ork_addons/rjlib/rj/s.txt                   |  10 +
 l2ork_addons/rjlib/rj/s_blsaw-help.pd         |  25 +
 l2ork_addons/rjlib/rj/s_blsaw.pd              |  11 +
 l2ork_addons/rjlib/rj/s_blsquare-help.pd      |  43 +
 l2ork_addons/rjlib/rj/s_blsquare.pd           |  60 ++
 l2ork_addons/rjlib/rj/s_buzz-help.pd          |  39 +
 l2ork_addons/rjlib/rj/s_buzz.pd               | 106 ++
 l2ork_addons/rjlib/rj/s_fplaytable.pd         |  19 +
 l2ork_addons/rjlib/rj/s_fplaytable2.pd        |  23 +
 l2ork_addons/rjlib/rj/s_guitar-help.pd        |  71 ++
 l2ork_addons/rjlib/rj/s_guitar.pd             | 309 ++++++
 l2ork_addons/rjlib/rj/s_looper-help.pd        |  72 ++
 l2ork_addons/rjlib/rj/s_looper.pd             | 153 +++
 l2ork_addons/rjlib/rj/s_playtable-help.pd     |  69 ++
 l2ork_addons/rjlib/rj/s_playtable.pd          | 298 ++++++
 l2ork_addons/rjlib/rj/s_playtable2-help.pd    |  75 ++
 l2ork_addons/rjlib/rj/s_playtable2.pd         |  39 +
 l2ork_addons/rjlib/rj/s_rhodey-help.pd        | 119 +++
 l2ork_addons/rjlib/rj/s_rhodey.pd             | 212 ++++
 l2ork_addons/rjlib/rj/sssad.pd                | 257 +++++
 l2ork_addons/rjlib/rj/u.txt                   |   6 +
 l2ork_addons/rjlib/rj/u_fade-help.pd          |  10 +
 l2ork_addons/rjlib/rj/u_fade.pd               |  21 +
 l2ork_addons/rjlib/rj/u_record-help.pd        |  77 ++
 l2ork_addons/rjlib/rj/u_record.pd             | 225 +++++
 l2ork_addons/rjlib/rj/u_samplebank-help.pd    |  57 ++
 l2ork_addons/rjlib/rj/u_samplebank.pd         |  65 ++
 l2ork_addons/rjlib/rj/u_samplebank2-help.pd   |  59 ++
 l2ork_addons/rjlib/rj/u_samplebank2.pd        |  66 ++
 l2ork_addons/rjlib/rj/u_splicetrans-help.pd   | 160 +++
 l2ork_addons/rjlib/rj/u_splicetrans.pd        | 136 +++
 l2ork_addons/rjlib/rj/u_stereo-help.pd        |  16 +
 l2ork_addons/rjlib/rj/u_stereo.pd             |  16 +
 l2ork_addons/rjlib/rjXYZshake-help.pd         |  41 +
 l2ork_addons/rjlib/rjXYZshake.pd              | 116 +++
 l2ork_addons/rjlib/rj_fft.pd                  | 194 ++++
 l2ork_addons/rjlib/rjdispatch-help.pd         |  67 ++
 l2ork_addons/rjlib/rjdispatch.pd              |  28 +
 l2ork_addons/rjlib/rjloader-help.pd           |   3 +
 l2ork_addons/rjlib/rjloader.pd                |  26 +
 l2ork_addons/rjlib/rjsave-ex-help.pd          |  49 +
 l2ork_addons/rjlib/rjsave-ex.pd               |  19 +
 l2ork_addons/rjlib/soundinput.pd              |  55 ++
 l2ork_addons/rjlib/soundoutput.pd             |  63 ++
 l2ork_addons/rjlib/src/makefile               |  53 +
 l2ork_addons/rjlib/src/makefile_mingw         |  36 +
 l2ork_addons/rjlib/src/rj_accum-help.pd       | 218 +++++
 l2ork_addons/rjlib/src/rj_accum.c             | 195 ++++
 .../rjlib/src/rj_barkflux_accum~-help.pd      | 214 ++++
 l2ork_addons/rjlib/src/rj_barkflux_accum~.c   | 372 +++++++
 l2ork_addons/rjlib/src/rj_centroid~-help.pd   | 207 ++++
 l2ork_addons/rjlib/src/rj_centroid~.c         |  98 ++
 l2ork_addons/rjlib/src/rj_senergy~-help.pd    | 207 ++++
 l2ork_addons/rjlib/src/rj_senergy~.c          |  90 ++
 l2ork_addons/rjlib/src/rj_zcr~-help.pd        |   9 +
 l2ork_addons/rjlib/src/rj_zcr~.c              | 109 +++
 l2ork_addons/rjlib/sssad.pd                   | 257 +++++
 l2ork_addons/rjlib/touch.pd                   | 253 +++++
 l2ork_addons/tar_em_up.sh                     |   2 +
 packages/linux_make/default.settings          |   3 +-
 122 files changed, 10515 insertions(+), 1 deletion(-)
 create mode 100644 l2ork_addons/rjlib/Makefile
 create mode 100644 l2ork_addons/rjlib/README
 create mode 100644 l2ork_addons/rjlib/abs/reverb-echo.pd
 create mode 100644 l2ork_addons/rjlib/accelerate.pd
 create mode 100644 l2ork_addons/rjlib/analysepitch.pd
 create mode 100644 l2ork_addons/rjlib/analysesimpleonset.pd
 create mode 100644 l2ork_addons/rjlib/hilbert~.pd
 create mode 100644 l2ork_addons/rjlib/playback.pd
 create mode 100644 l2ork_addons/rjlib/recorder.pd
 create mode 100644 l2ork_addons/rjlib/reverb.pd
 create mode 100644 l2ork_addons/rjlib/rj/OVERVIEW.pd
 create mode 100644 l2ork_addons/rjlib/rj/c.txt
 create mode 100644 l2ork_addons/rjlib/rj/c_adsr-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/c_adsr.pd
 create mode 100644 l2ork_addons/rjlib/rj/c_adsrj-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/c_adsrj.pd
 create mode 100644 l2ork_addons/rjlib/rj/c_mphasor-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/c_mphasor.pd
 create mode 100644 l2ork_addons/rjlib/rj/c_multimetro-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/c_multimetro.pd
 create mode 100644 l2ork_addons/rjlib/rj/c_xfade-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/c_xfade.pd
 create mode 100644 l2ork_addons/rjlib/rj/e.txt
 create mode 100644 l2ork_addons/rjlib/rj/e_alias-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_alias.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_chorus-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_chorus.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_chorusr-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_chorusr.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_fbdelay-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_fbdelay.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_fbdelay2.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_freqshift-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_freqshift.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_pan-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_pan.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_phaser-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_phaser.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_pingpong-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_pingpong.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_pitchshift-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_pitchshift.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_reslop-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_reslop.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_reverb-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_reverb.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_softclip-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_softclip.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_vocoder-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/e_vocoder.pd
 create mode 100644 l2ork_addons/rjlib/rj/jon~.pd
 create mode 100644 l2ork_addons/rjlib/rj/m.txt
 create mode 100644 l2ork_addons/rjlib/rj/m_bpm2ms-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/m_bpm2ms.pd
 create mode 100644 l2ork_addons/rjlib/rj/m_scale-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/m_scale.pd
 create mode 100644 l2ork_addons/rjlib/rj/m_speedlimit-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/m_speedlimit.pd
 create mode 100644 l2ork_addons/rjlib/rj/rjdispatch-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/rjdispatch.pd
 create mode 100644 l2ork_addons/rjlib/rj/rjloader-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/rjloader.pd
 create mode 100644 l2ork_addons/rjlib/rj/s.txt
 create mode 100644 l2ork_addons/rjlib/rj/s_blsaw-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/s_blsaw.pd
 create mode 100644 l2ork_addons/rjlib/rj/s_blsquare-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/s_blsquare.pd
 create mode 100644 l2ork_addons/rjlib/rj/s_buzz-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/s_buzz.pd
 create mode 100644 l2ork_addons/rjlib/rj/s_fplaytable.pd
 create mode 100644 l2ork_addons/rjlib/rj/s_fplaytable2.pd
 create mode 100644 l2ork_addons/rjlib/rj/s_guitar-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/s_guitar.pd
 create mode 100644 l2ork_addons/rjlib/rj/s_looper-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/s_looper.pd
 create mode 100644 l2ork_addons/rjlib/rj/s_playtable-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/s_playtable.pd
 create mode 100644 l2ork_addons/rjlib/rj/s_playtable2-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/s_playtable2.pd
 create mode 100644 l2ork_addons/rjlib/rj/s_rhodey-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/s_rhodey.pd
 create mode 100644 l2ork_addons/rjlib/rj/sssad.pd
 create mode 100644 l2ork_addons/rjlib/rj/u.txt
 create mode 100644 l2ork_addons/rjlib/rj/u_fade-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/u_fade.pd
 create mode 100644 l2ork_addons/rjlib/rj/u_record-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/u_record.pd
 create mode 100644 l2ork_addons/rjlib/rj/u_samplebank-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/u_samplebank.pd
 create mode 100644 l2ork_addons/rjlib/rj/u_samplebank2-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/u_samplebank2.pd
 create mode 100644 l2ork_addons/rjlib/rj/u_splicetrans-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/u_splicetrans.pd
 create mode 100644 l2ork_addons/rjlib/rj/u_stereo-help.pd
 create mode 100644 l2ork_addons/rjlib/rj/u_stereo.pd
 create mode 100644 l2ork_addons/rjlib/rjXYZshake-help.pd
 create mode 100644 l2ork_addons/rjlib/rjXYZshake.pd
 create mode 100644 l2ork_addons/rjlib/rj_fft.pd
 create mode 100644 l2ork_addons/rjlib/rjdispatch-help.pd
 create mode 100644 l2ork_addons/rjlib/rjdispatch.pd
 create mode 100644 l2ork_addons/rjlib/rjloader-help.pd
 create mode 100644 l2ork_addons/rjlib/rjloader.pd
 create mode 100644 l2ork_addons/rjlib/rjsave-ex-help.pd
 create mode 100644 l2ork_addons/rjlib/rjsave-ex.pd
 create mode 100644 l2ork_addons/rjlib/soundinput.pd
 create mode 100644 l2ork_addons/rjlib/soundoutput.pd
 create mode 100644 l2ork_addons/rjlib/src/makefile
 create mode 100644 l2ork_addons/rjlib/src/makefile_mingw
 create mode 100644 l2ork_addons/rjlib/src/rj_accum-help.pd
 create mode 100644 l2ork_addons/rjlib/src/rj_accum.c
 create mode 100644 l2ork_addons/rjlib/src/rj_barkflux_accum~-help.pd
 create mode 100644 l2ork_addons/rjlib/src/rj_barkflux_accum~.c
 create mode 100644 l2ork_addons/rjlib/src/rj_centroid~-help.pd
 create mode 100644 l2ork_addons/rjlib/src/rj_centroid~.c
 create mode 100644 l2ork_addons/rjlib/src/rj_senergy~-help.pd
 create mode 100644 l2ork_addons/rjlib/src/rj_senergy~.c
 create mode 100644 l2ork_addons/rjlib/src/rj_zcr~-help.pd
 create mode 100644 l2ork_addons/rjlib/src/rj_zcr~.c
 create mode 100644 l2ork_addons/rjlib/sssad.pd
 create mode 100644 l2ork_addons/rjlib/touch.pd

diff --git a/l2ork_addons/rjlib/Makefile b/l2ork_addons/rjlib/Makefile
new file mode 100644
index 000000000..25afbab3f
--- /dev/null
+++ b/l2ork_addons/rjlib/Makefile
@@ -0,0 +1,26 @@
+#! /usr/bin/make
+
+# available targets:
+#   clean: clean everything
+#   all: compile objective-c application
+#   package: prepare a zip file of the app
+#   upload: upload app to a phone
+# 
+# use "make upload IPHONE=<iphone_ip>" to build and upload to device
+
+# name of the application
+TRG=RjDj
+# version
+VER=0.5
+# ip of the phone to install it to
+IPHONE?=192.168.1.36
+# user name to upload with
+IPHONE_USER=mobile
+
+SCENE_LOC=/var/mobile/Applications/RJ/rjlib
+
+RSYNC=rsync
+RSYNC_OPTS=-av --delete-after --exclude .svn
+
+upload:
+	$(RSYNC) $(RSYNC_OPTS) ./ $(IPHONE_USER)@$(IPHONE):$(SCENE_LOC) || echo "make sure rsync is installed on the phone"
diff --git a/l2ork_addons/rjlib/README b/l2ork_addons/rjlib/README
new file mode 100644
index 000000000..cb073a9cf
--- /dev/null
+++ b/l2ork_addons/rjlib/README
@@ -0,0 +1,28 @@
+
+Global messages from rjlib:
+
+1) receiver "accelerate", 
+   module accelerate.pd
+   - magnitude float: gives the magnitude of an accelerator motion
+   - pitch float: the pitch 
+   - roll float: the roll 
+   - x float: raw x value
+   - y float: raw y value
+   - z loat: raw z value
+
+2) receiver "touch"  ??? TODO: document
+   module touch.pd
+   - tap float: 
+   - speed1.delta.1 float
+   - speed2.delta.2 float
+   - speed float float
+
+3) receiver analyse 
+   module analysepitch.pd
+   - pitch float: a pitch value when a pitched sound is detected
+   - continuouspitch float: always delivers a pitch
+   - onset bang: bang if an onset is detected
+   module analysesimpleonset.pd
+   configuration: onset_threshold float: default value 10
+   - simpleonset bang: cheap, basic onset detector
+
diff --git a/l2ork_addons/rjlib/abs/reverb-echo.pd b/l2ork_addons/rjlib/abs/reverb-echo.pd
new file mode 100644
index 000000000..b45cc52d8
--- /dev/null
+++ b/l2ork_addons/rjlib/abs/reverb-echo.pd
@@ -0,0 +1,24 @@
+#N canvas 840 189 600 492 12;
+#X obj 66 95 inlet~;
+#X obj 130 96 inlet~;
+#X obj 68 216 outlet~;
+#X obj 141 215 outlet~;
+#X obj 67 143 +~;
+#X obj 140 141 -~;
+#X obj 141 165 delwrite~ \$1 \$2;
+#X obj 140 191 delread~ \$1 \$2;
+#X text 48 14 This appears as an abstraction in patch G08.reverb.pd
+;
+#X text 27 267 This network makes two copies of the (stereo) input
+\, one in phase \, the other out of phase and delayed. The total frequency
+response is flat. The total signal power out is exactly twice that
+of the input \, no matter what freqiencies the input contains. This
+is used to increase echo density \, by stacking several of these units
+with different delay times. Each stage doubles the echo density.;
+#X connect 0 0 4 0;
+#X connect 0 0 5 0;
+#X connect 1 0 4 1;
+#X connect 1 0 5 1;
+#X connect 4 0 2 0;
+#X connect 5 0 6 0;
+#X connect 7 0 3 0;
diff --git a/l2ork_addons/rjlib/accelerate.pd b/l2ork_addons/rjlib/accelerate.pd
new file mode 100644
index 000000000..0b12d1ce8
--- /dev/null
+++ b/l2ork_addons/rjlib/accelerate.pd
@@ -0,0 +1,90 @@
+#N canvas 537 40 360 283 10;
+#N canvas 79 298 269 329 magnitude 0;
+#X obj 14 17 r #accelerate;
+#X obj 14 48 unpack f f f;
+#X obj 14 108 *;
+#X obj 76 108 *;
+#X obj 135 108 *;
+#X obj 14 138 +;
+#X obj 14 168 +;
+#X obj 14 198 pow 0.5;
+#X obj 14 258 s accelerate;
+#X msg 14 228 magnitude \$1;
+#X msg 14 78 \$1 \$1;
+#X msg 76 78 \$1 \$1;
+#X msg 135 78 \$1 \$1;
+#X connect 0 0 1 0;
+#X connect 1 0 10 0;
+#X connect 1 1 11 0;
+#X connect 1 2 12 0;
+#X connect 2 0 5 0;
+#X connect 3 0 5 1;
+#X connect 4 0 6 1;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 9 0;
+#X connect 9 0 8 0;
+#X connect 10 0 2 0;
+#X connect 11 0 3 0;
+#X connect 12 0 4 0;
+#X restore 16 22 pd magnitude;
+#N canvas 123 87 366 291 pitch 0;
+#X obj 31 25 r #accelerate;
+#X obj 31 205 s accelerate;
+#X obj 31 85 /;
+#X obj 31 115 atan;
+#X msg 31 175 pitch \$1;
+#X obj 31 145 * -1;
+#X obj 31 55 list split 1;
+#X connect 0 0 6 0;
+#X connect 2 0 3 0;
+#X connect 3 0 5 0;
+#X connect 4 0 1 0;
+#X connect 5 0 4 0;
+#X connect 6 1 2 0;
+#X restore 16 52 pd pitch;
+#N canvas 256 44 307 244 roll 0;
+#X obj 14 17 r #accelerate;
+#X obj 14 47 unpack f f f;
+#X obj 14 167 s accelerate;
+#X msg 14 137 roll \$1;
+#X obj 14 77 /;
+#X obj 14 107 atan;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 1 2 4 1;
+#X connect 3 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 3 0;
+#X restore 16 82 pd roll;
+#X text 16 187 Author: Roman Haefeli;
+#N canvas 166 94 327 239 x_y_z 0;
+#X obj 14 17 r #accelerate;
+#X obj 14 77 s accelerate;
+#X msg 14 47 x \$1 \, y \$2 \, z \$3;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X restore 16 112 pd x_y_z;
+#X text 15 168 Version: 2008-07-14;
+#N canvas 0 22 223 279 status 0;
+#X obj 14 17 r #accelerate;
+#X obj 14 77 f 150;
+#X obj 14 107 del;
+#X obj 14 167 change;
+#X obj 14 47 t b b;
+#X msg 14 197 status \$1;
+#X obj 14 227 s accelerate;
+#X obj 104 117 f 1;
+#X obj 14 137 f 0;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 2 0 8 0;
+#X connect 3 0 5 0;
+#X connect 4 0 1 0;
+#X connect 4 1 7 0;
+#X connect 5 0 6 0;
+#X connect 7 0 3 0;
+#X connect 8 0 3 0;
+#X restore 16 142 pd status;
+#X text 16 207 Revision: 2008-09-19 eerne: minor enhancement;
+#X text 16 227 2008-09-20 eerne: added status;
diff --git a/l2ork_addons/rjlib/analysepitch.pd b/l2ork_addons/rjlib/analysepitch.pd
new file mode 100644
index 000000000..0a0d170fc
--- /dev/null
+++ b/l2ork_addons/rjlib/analysepitch.pd
@@ -0,0 +1,23 @@
+#N canvas 486 22 450 300 10;
+#X obj 119 128 fiddle~;
+#X obj 153 263 s analyse;
+#X obj 119 65 adc~;
+#X floatatom 43 235 5 0 0 0 - - -;
+#X msg 92 202 pitch \$1;
+#X msg 263 201 continuouspitch \$1;
+#X msg 169 202 onset bang;
+#X obj 264 178 unpack;
+#X obj 169 64 r inputvolume;
+#X obj 120 99 *~ 1;
+#X connect 0 0 4 0;
+#X connect 0 0 3 0;
+#X connect 0 1 6 0;
+#X connect 0 2 7 0;
+#X connect 2 0 9 0;
+#X connect 2 1 9 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 1 0;
+#X connect 7 0 5 0;
+#X connect 8 0 9 1;
+#X connect 9 0 0 0;
diff --git a/l2ork_addons/rjlib/analysesimpleonset.pd b/l2ork_addons/rjlib/analysesimpleonset.pd
new file mode 100644
index 000000000..c93a86456
--- /dev/null
+++ b/l2ork_addons/rjlib/analysesimpleonset.pd
@@ -0,0 +1,37 @@
+#N canvas 270 63 551 550 10;
+#X obj 96 61 adc~;
+#X obj 97 121 env~;
+#X obj 152 62 inlet;
+#X obj 203 63 r onset_threshold;
+#X obj 167 268 change;
+#X obj 167 290 sel 1;
+#X obj 167 389 s analyse;
+#X floatatom 180 153 5 0 0 0 - - -;
+#X obj 97 182 -;
+#X obj 97 159 t f f;
+#X obj 125 339 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 70 213 t f f;
+#X obj 79 268 spigot;
+#X obj 168 328 float;
+#X msg 168 362 simpleonset \$1;
+#X obj 103 236 > 3;
+#X connect 0 0 1 0;
+#X connect 0 1 1 0;
+#X connect 1 0 7 0;
+#X connect 1 0 9 0;
+#X connect 2 0 15 1;
+#X connect 3 0 15 1;
+#X connect 4 0 5 0;
+#X connect 5 0 10 0;
+#X connect 5 0 13 0;
+#X connect 8 0 11 0;
+#X connect 9 0 8 1;
+#X connect 9 1 8 0;
+#X connect 11 0 12 0;
+#X connect 11 1 15 0;
+#X connect 12 0 13 1;
+#X connect 13 0 14 0;
+#X connect 14 0 6 0;
+#X connect 15 0 4 0;
+#X connect 15 0 12 1;
diff --git a/l2ork_addons/rjlib/hilbert~.pd b/l2ork_addons/rjlib/hilbert~.pd
new file mode 100644
index 000000000..152c2082a
--- /dev/null
+++ b/l2ork_addons/rjlib/hilbert~.pd
@@ -0,0 +1,27 @@
+#N canvas 269 0 593 306 12;
+#X obj 105 92 biquad~ 0.83774 -0.06338 0.06338 -0.83774 1;
+#X obj 105 66 biquad~ 1.94632 -0.94657 0.94657 -1.94632 1;
+#X obj 86 149 biquad~ -0.02569 0.260502 -0.260502 0.02569 1;
+#X obj 86 175 biquad~ 1.8685 -0.870686 0.870686 -1.8685 1;
+#X obj 86 39 inlet~;
+#X obj 105 121 outlet~;
+#X obj 86 202 outlet~;
+#X text 34 232 This is a pair of 4th-order all-pass filters whose outputs
+somehow manage to be about 90 degrees out of phase from each other.
+Both have different phases from the original. Adapted from a 4X patch
+by Emmanuel Favreau \, circa 1982;
+#X obj 502 39 inlet;
+#X text 461 13 bang to clear;
+#X text 80 16 signal in;
+#X msg 502 112 clear;
+#X connect 0 0 5 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 6 0;
+#X connect 4 0 1 0;
+#X connect 4 0 2 0;
+#X connect 8 0 11 0;
+#X connect 11 0 1 0;
+#X connect 11 0 0 0;
+#X connect 11 0 2 0;
+#X connect 11 0 3 0;
diff --git a/l2ork_addons/rjlib/playback.pd b/l2ork_addons/rjlib/playback.pd
new file mode 100644
index 000000000..1f68566d9
--- /dev/null
+++ b/l2ork_addons/rjlib/playback.pd
@@ -0,0 +1,13 @@
+#N canvas 461 160 618 519 10;
+#X obj 19 103 readsf~ 2;
+#X msg 19 79 open \$1 \, 1;
+#X obj 19 57 symbol;
+#X obj 20 7 r #transport;
+#X obj 19 30 route playback;
+#X obj 19 132 soundoutput;
+#X connect 0 0 5 0;
+#X connect 0 1 5 1;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 0;
diff --git a/l2ork_addons/rjlib/recorder.pd b/l2ork_addons/rjlib/recorder.pd
new file mode 100644
index 000000000..54bc8bd64
--- /dev/null
+++ b/l2ork_addons/rjlib/recorder.pd
@@ -0,0 +1,36 @@
+#N canvas 512 221 504 404 10;
+#X obj 184 376 writesf~ 2;
+#X obj 144 16 r #transport;
+#X obj 156 127 route scene;
+#X floatatom 48 209 5 0 0 0 - - -;
+#X obj 48 188 random 30000;
+#X obj 49 135 route record;
+#X obj 48 166 sel 1;
+#X msg 72 285 open \$1 \, start;
+#X msg 143 310 stop;
+#X obj 199 323 catch~ rec1;
+#X obj 286 323 catch~ rec2;
+#X obj 69 375 print;
+#X msg 159 199 set \$1_%d.wav;
+#X obj 159 150 symbol;
+#X obj 158 179 makefilename %s;
+#X obj 72 234 makefilename record_%d.wav;
+#X connect 1 0 2 0;
+#X connect 1 0 5 0;
+#X connect 2 0 13 0;
+#X connect 3 0 15 0;
+#X connect 4 0 3 0;
+#X connect 5 0 6 0;
+#X connect 5 1 8 0;
+#X connect 6 0 4 0;
+#X connect 7 0 0 0;
+#X connect 7 0 11 0;
+#X connect 8 0 0 0;
+#X connect 8 0 11 0;
+#X connect 9 0 0 0;
+#X connect 10 0 0 1;
+#X connect 12 0 11 0;
+#X connect 12 0 15 0;
+#X connect 13 0 14 0;
+#X connect 14 0 12 0;
+#X connect 15 0 7 0;
diff --git a/l2ork_addons/rjlib/reverb.pd b/l2ork_addons/rjlib/reverb.pd
new file mode 100644
index 000000000..d505617a0
--- /dev/null
+++ b/l2ork_addons/rjlib/reverb.pd
@@ -0,0 +1,99 @@
+#N canvas 390 121 790 517 10;
+#X obj 91 17 inlet~;
+#X obj 344 225 +~;
+#X obj 386 225 +~;
+#X obj 615 453 outlet~;
+#X obj 685 453 outlet~;
+#X obj 305 288 +~;
+#X obj 414 289 +~;
+#X obj 347 288 -~;
+#X obj 454 288 -~;
+#X obj 305 327 +~;
+#X obj 349 328 +~;
+#X obj 393 329 -~;
+#X obj 432 329 -~;
+#X obj 680 172 inlet;
+#X obj 680 244 / 200;
+#X obj 680 196 min 100;
+#X obj 680 219 max 0;
+#X obj 306 465 delwrite~ loop-del1 60;
+#X obj 351 443 delwrite~ loop-del2 71.9345;
+#X obj 432 397 delwrite~ loop-del4 95.945;
+#X obj 365 164 delread~ loop-del1 60;
+#X obj 407 189 delread~ loop-del2 71.9345;
+#X obj 475 243 delread~ loop-del4 95.945;
+#X obj 453 218 delread~ loop-del3 86.7545;
+#X obj 393 420 delwrite~ loop-del3 86.7545;
+#X obj 91 41 abs/reverb-echo echo-del1 5.43216;
+#X obj 91 65 abs/reverb-echo echo-del2 8.45346;
+#X obj 91 89 abs/reverb-echo echo-del3 13.4367;
+#X obj 91 113 abs/reverb-echo echo-del4 21.5463;
+#X obj 91 137 abs/reverb-echo echo-del5 34.3876;
+#X obj 91 161 abs/reverb-echo echo-del6 55.5437;
+#X obj 305 354 *~ \$1;
+#X obj 350 355 *~ \$1;
+#X obj 392 356 *~ \$1;
+#X obj 433 357 *~ \$1;
+#X obj 746 174 inlet;
+#X obj 746 198 min 100;
+#X obj 746 221 max 0;
+#X obj 706 364 / 100;
+#X obj 709 403 *~ \$2;
+#X obj 652 393 *~ \$2;
+#X connect 0 0 25 0;
+#X connect 0 0 3 0;
+#X connect 0 0 4 0;
+#X connect 1 0 5 0;
+#X connect 1 0 7 0;
+#X connect 1 0 40 0;
+#X connect 2 0 5 1;
+#X connect 2 0 7 1;
+#X connect 2 0 39 0;
+#X connect 5 0 9 0;
+#X connect 5 0 11 0;
+#X connect 6 0 11 1;
+#X connect 6 0 9 1;
+#X connect 7 0 10 0;
+#X connect 7 0 12 0;
+#X connect 8 0 10 1;
+#X connect 8 0 12 1;
+#X connect 9 0 31 0;
+#X connect 10 0 32 0;
+#X connect 11 0 33 0;
+#X connect 12 0 34 0;
+#X connect 13 0 15 0;
+#X connect 14 0 31 1;
+#X connect 14 0 32 1;
+#X connect 14 0 33 1;
+#X connect 14 0 34 1;
+#X connect 15 0 16 0;
+#X connect 16 0 14 0;
+#X connect 20 0 1 1;
+#X connect 21 0 2 1;
+#X connect 22 0 6 1;
+#X connect 22 0 8 1;
+#X connect 23 0 6 0;
+#X connect 23 0 8 0;
+#X connect 25 0 26 0;
+#X connect 25 1 26 1;
+#X connect 26 0 27 0;
+#X connect 26 1 27 1;
+#X connect 27 0 28 0;
+#X connect 27 1 28 1;
+#X connect 28 0 29 0;
+#X connect 28 1 29 1;
+#X connect 29 0 30 0;
+#X connect 29 1 30 1;
+#X connect 30 0 1 0;
+#X connect 30 1 2 0;
+#X connect 31 0 17 0;
+#X connect 32 0 18 0;
+#X connect 33 0 24 0;
+#X connect 34 0 19 0;
+#X connect 35 0 36 0;
+#X connect 36 0 37 0;
+#X connect 37 0 38 0;
+#X connect 38 0 39 1;
+#X connect 38 0 40 1;
+#X connect 39 0 4 0;
+#X connect 40 0 3 0;
diff --git a/l2ork_addons/rjlib/rj/OVERVIEW.pd b/l2ork_addons/rjlib/rj/OVERVIEW.pd
new file mode 100644
index 000000000..ee6ea6e00
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/OVERVIEW.pd
@@ -0,0 +1,68 @@
+#N canvas 722 176 296 279 10;
+#N canvas 0 0 682 744 \$0-overview 1;
+#X restore 85 182 pd \$0-overview;
+#N canvas 337 123 417 469 dump 0;
+#X obj 94 243 textfile;
+#X obj 94 277 t a b;
+#X obj 128 301 f;
+#X obj 160 302 + 1;
+#X obj 94 401 s pd-\$0-overview;
+#X obj 94 351 list;
+#X msg 172 247 1;
+#X obj 94 211 until;
+#X obj 74 41 inlet;
+#X obj 74 76 list;
+#X msg 258 199 print;
+#X msg 115 184 read \$1 cr \, rewind;
+#X msg 239 247 clear;
+#X msg 94 373 obj 100 \$2 \$1;
+#X obj 239 42 inlet;
+#X obj 128 324 * 45;
+#X msg 74 113 symbol \$1.txt;
+#X obj 74 152 t b b a b;
+#X msg 74 427 vis 1;
+#X connect 0 0 1 0;
+#X connect 0 1 7 1;
+#X connect 1 0 5 0;
+#X connect 1 1 2 0;
+#X connect 2 0 3 0;
+#X connect 2 0 15 0;
+#X connect 3 0 2 1;
+#X connect 5 0 13 0;
+#X connect 6 0 2 1;
+#X connect 7 0 0 0;
+#X connect 8 0 9 0;
+#X connect 9 0 16 0;
+#X connect 10 0 0 0;
+#X connect 11 0 0 0;
+#X connect 12 0 4 0;
+#X connect 13 0 4 0;
+#X connect 14 0 12 0;
+#X connect 15 0 5 1;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 17 1 7 0;
+#X connect 17 2 11 0;
+#X connect 17 3 12 0;
+#X connect 17 3 6 0;
+#X connect 18 0 4 0;
+#X restore 84 154 pd dump;
+#X msg 110 33 s;
+#X text 138 33 ynths;
+#X msg 110 54 e;
+#X text 138 54 ffects;
+#X msg 111 77 m;
+#X text 139 77 appings;
+#X msg 111 99 c;
+#X text 139 99 controllers;
+#X msg 111 122 u;
+#X text 139 122 tilities;
+#X msg 143 154 clear;
+#X text 85 211 Help-click any object to;
+#X text 84 229 open the help file!;
+#X connect 2 0 1 0;
+#X connect 4 0 1 0;
+#X connect 6 0 1 0;
+#X connect 8 0 1 0;
+#X connect 10 0 1 0;
+#X connect 12 0 1 1;
diff --git a/l2ork_addons/rjlib/rj/c.txt b/l2ork_addons/rjlib/rj/c.txt
new file mode 100644
index 000000000..f32c3c922
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/c.txt
@@ -0,0 +1,5 @@
+c_adsr
+c_adsrj
+c_mphasor
+c_multimetro
+c_xfade
diff --git a/l2ork_addons/rjlib/rj/c_adsr-help.pd b/l2ork_addons/rjlib/rj/c_adsr-help.pd
new file mode 100644
index 000000000..22e328729
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/c_adsr-help.pd
@@ -0,0 +1,58 @@
+#N canvas 256 30 668 776 10;
+#X text 51 13 c_adsr: ADSR ENVELOPE;
+#X text 85 151 When you send this patch a positive trigger it schedules
+a line~ to do an attack and decay \, and if zero \, it starts the release
+ramp.;
+#X text 86 204 Negative triggers cause the output to jump to zero and
+then attack (instead of attacking from the current location).;
+#X obj 196 357 / 127;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-adsr 44100 float 2;
+#X coords 0 1 44100 -1 200 140 1;
+#X restore 118 558 graph;
+#X obj 119 513 tabwrite~ \$0-adsr;
+#X obj 87 292 t a b;
+#X msg 87 270 80;
+#X obj 87 335 makenote 100 400;
+#X obj 196 383 t a a;
+#X floatatom 141 311 5 0 0 2 velocity - -;
+#X floatatom 256 290 5 0 0 1 A - -;
+#X floatatom 286 315 5 0 0 1 D - -;
+#X floatatom 316 343 5 0 0 1 S(%) - -;
+#X floatatom 347 368 5 0 0 1 R - -;
+#X text 85 46 This is the classical Miller S. Puckette linear ADSR
+envelope \, but with vline~ instead of line~ inside for a bit of extra
+timing accuracy.;
+#X text 86 102 Arguments: peak level \, attack time \, decay time \,
+sustain level \, release time. A \, D \, and R are in msec and S is
+in percent!;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-adsr-quartic 44100 float 2;
+#X coords 0 1 44100 -1 200 140 1;
+#X restore 347 558 graph;
+#X obj 347 518 tabwrite~ \$0-adsr-quartic;
+#X obj 119 449 t b b;
+#X obj 345 465 *~;
+#X obj 346 494 *~;
+#X obj 196 411 c_adsr 1 80 100 80 200;
+#X text 385 473 simple curved envelope;
+#X connect 3 0 9 0;
+#X connect 6 0 8 0;
+#X connect 6 1 19 0;
+#X connect 7 0 6 0;
+#X connect 8 1 3 0;
+#X connect 9 0 22 0;
+#X connect 9 1 22 1;
+#X connect 10 0 8 1;
+#X connect 11 0 22 2;
+#X connect 12 0 22 3;
+#X connect 13 0 22 4;
+#X connect 14 0 22 5;
+#X connect 19 0 5 0;
+#X connect 19 1 18 0;
+#X connect 20 0 21 0;
+#X connect 20 0 21 1;
+#X connect 21 0 18 0;
+#X connect 22 0 5 0;
+#X connect 22 0 20 0;
+#X connect 22 0 20 1;
diff --git a/l2ork_addons/rjlib/rj/c_adsr.pd b/l2ork_addons/rjlib/rj/c_adsr.pd
new file mode 100644
index 000000000..a12957f01
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/c_adsr.pd
@@ -0,0 +1,96 @@
+#N canvas 131 27 1006 740 10;
+#X obj 105 111 inlet;
+#X obj 435 151 inlet;
+#X text 101 86 trigger;
+#X obj 105 139 sel 0;
+#X obj 244 155 t b;
+#X obj 166 264 f \$1;
+#X obj 166 289 pack 0 \$2;
+#X obj 492 151 inlet;
+#X obj 438 281 del \$2;
+#X obj 462 304 f \$4;
+#X obj 501 379 pack 0 \$3;
+#X obj 554 151 inlet;
+#X obj 616 151 inlet;
+#X obj 689 150 inlet;
+#X msg 105 170 stop;
+#X obj 612 306 pack 0 \$5;
+#X text 435 129 level;
+#X obj 501 355 * \$1;
+#X obj 458 454 outlet~;
+#X text 102 378 and pack with;
+#X text 103 398 attack time;
+#X text 31 126 if zero;
+#X text 32 143 release;
+#X text 12 160 and cancel;
+#X text 43 177 decay;
+#X text 284 272 on attack \, set a;
+#X text 278 305 recall sustain value;
+#X text 315 378 pack with decay time;
+#X text 605 332 on release ramp;
+#X text 606 349 back to zero;
+#X obj 462 329 * 0.01;
+#X text 47 567 Objects such as "f" and "pack" can be given dollar sign
+arguments to initialize their contents from adsr's creation arguments.
+Inlets are supplied to change them on the fly.;
+#X text 13 2 ADSR ENVELOPE;
+#X text 488 129 attack;
+#X text 555 128 decay;
+#X text 609 129 sustain;
+#X text 686 129 release;
+#X text 202 71 attack;
+#X obj 204 92 moses;
+#X obj 194 122 t b b;
+#X msg 128 290 0;
+#X text 20 273 optionally;
+#X text 10 291 bash to zero;
+#X text 25 246 ATTACK:;
+#X text 49 477 When you send this patch a positive trigger it schedules
+a line~ to do an attack and decay \, and if zero \, it starts the release
+ramp.;
+#X text 495 629 Updated for Pd version 0.37;
+#X text 255 89 test for negative trigger;
+#X text 253 113 if so \, zero;
+#X text 254 129 the output;
+#X text 278 165 in any case;
+#X text 303 355 multiply by peak level;
+#X text 280 286 delay for sustain;
+#X text 276 328 convert from percent;
+#X text 155 340 ... then;
+#X text 103 359 recall peak level;
+#X text 439 113 peak;
+#X text 281 149 ... do this;
+#X text 47 529 Negative triggers cause the output to jump to zero and
+then attack (instead of attacking from the current location).;
+#X text 208 1 Arguments: level \, attack time \, decay time \, sustain
+level \, release time. A \, D \, and R are in msec and S is in percent.
+This patch is used as an abstraction in various examples.;
+#X obj 458 429 vline~;
+#X connect 0 0 3 0;
+#X connect 1 0 5 1;
+#X connect 1 0 17 1;
+#X connect 3 0 14 0;
+#X connect 3 0 15 0;
+#X connect 3 1 38 0;
+#X connect 4 0 5 0;
+#X connect 4 0 8 0;
+#X connect 5 0 6 0;
+#X connect 6 0 59 0;
+#X connect 7 0 6 1;
+#X connect 7 0 8 1;
+#X connect 8 0 9 0;
+#X connect 9 0 30 0;
+#X connect 10 0 59 0;
+#X connect 11 0 10 1;
+#X connect 12 0 9 1;
+#X connect 13 0 15 1;
+#X connect 14 0 8 0;
+#X connect 15 0 59 0;
+#X connect 17 0 10 0;
+#X connect 30 0 17 0;
+#X connect 38 0 39 0;
+#X connect 38 1 4 0;
+#X connect 39 0 4 0;
+#X connect 39 1 40 0;
+#X connect 40 0 59 0;
+#X connect 59 0 18 0;
diff --git a/l2ork_addons/rjlib/rj/c_adsrj-help.pd b/l2ork_addons/rjlib/rj/c_adsrj-help.pd
new file mode 100644
index 000000000..05f03b4b9
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/c_adsrj-help.pd
@@ -0,0 +1,54 @@
+#N canvas 282 52 718 684 10;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-adsr 44100 float 2;
+#X coords 0 1 44100 -1 200 140 1;
+#X restore 118 488 graph;
+#X obj 119 443 tabwrite~ \$0-adsr;
+#X obj 87 232 t a b;
+#X msg 87 210 80;
+#X obj 87 275 makenote 100 400;
+#X floatatom 141 251 5 0 0 2 velocity - -;
+#X floatatom 349 218 5 0 0 1 A - -;
+#X floatatom 413 218 5 0 0 1 D - -;
+#X floatatom 475 218 5 0 0 1 S(%) - -;
+#X floatatom 547 218 5 0 0 1 R - -;
+#X msg 349 237 A \$1;
+#X msg 413 237 D \$1;
+#X msg 475 238 S \$1;
+#X msg 547 238 R \$1;
+#X text 51 13 c_adsrj: ADSR ENVELOPE with GUI and state saving;
+#X floatatom 153 316 5 0 0 0 - - -;
+#X text 475 336 Remote control;
+#X obj 478 453 s RJ_SCENE_LOAD;
+#X obj 196 351 c_adsrj myadsr;
+#X text 85 46 This is a variation on the classical Miller S. Puckette
+linear ADSR envelope which has a GUI included and is rj-save enabled.
+;
+#X text 86 102 Arguments: NAME \, attack time \, decay time \, sustain
+level \, release time. A \, D \, and R are in msec and S is in percent!
+;
+#X obj 478 406 list prepend c_adsrj-myadsr;
+#X obj 478 430 list trim;
+#X msg 478 362 A 50 \, D 80 \, S 70 \, R 300;
+#X text 378 568 Also see;
+#X obj 448 566 c_adsr 1 20 30 90 300;
+#X text 86 152 Trigger input is taken to be a number specifiying midi
+velocity (0-127) which will also set the peak level.;
+#X connect 2 0 4 0;
+#X connect 2 1 1 0;
+#X connect 3 0 2 0;
+#X connect 4 1 15 0;
+#X connect 4 1 18 0;
+#X connect 5 0 4 1;
+#X connect 6 0 10 0;
+#X connect 7 0 11 0;
+#X connect 8 0 12 0;
+#X connect 9 0 13 0;
+#X connect 10 0 18 1;
+#X connect 11 0 18 1;
+#X connect 12 0 18 1;
+#X connect 13 0 18 1;
+#X connect 18 0 1 0;
+#X connect 21 0 22 0;
+#X connect 22 0 17 0;
+#X connect 23 0 21 0;
diff --git a/l2ork_addons/rjlib/rj/c_adsrj.pd b/l2ork_addons/rjlib/rj/c_adsrj.pd
new file mode 100644
index 000000000..80a07e00c
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/c_adsrj.pd
@@ -0,0 +1,40 @@
+#N canvas 255 130 736 454 10;
+#X obj 101 204 inlet;
+#X obj 101 254 t a a;
+#X obj 128 284 abs;
+#X obj 101 229 / 127;
+#X obj 451 59 inlet;
+#X obj 451 84 rjdispatch \$0 A;
+#X obj 451 109 rjdispatch \$0 D;
+#X obj 451 134 rjdispatch \$0 S;
+#X obj 451 159 rjdispatch \$0 R;
+#X obj 508 59 rjloader c_adsrj-\$1 \$0;
+#X obj 106 132 nbx 3 14 -1e+37 1e+37 0 0 \$0-A \$0-A A 0 -8 1 10 -262144
+-1 -1 151 256;
+#X obj 155 282 r \$0-A;
+#X obj 183 301 r \$0-D;
+#X obj 210 326 r \$0-S;
+#X obj 238 348 r \$0-R;
+#X obj 101 407 outlet~;
+#X obj 142 132 nbx 3 14 -1e+37 1e+37 0 0 \$0-D \$0-D D 0 -8 1 10 -262144
+-1 -1 53 256;
+#X obj 178 132 nbx 3 14 -1e+37 1e+37 0 0 \$0-S \$0-S S 0 -8 1 10 -262144
+-1 -1 41 256;
+#X obj 214 132 nbx 4 14 -1e+37 1e+37 0 0 \$0-R \$0-R R 0 -8 1 10 -262144
+-1 -1 74 256;
+#X obj 101 377 c_adsr 1 \$2 \$3 \$4 \$5;
+#X connect 0 0 3 0;
+#X connect 1 0 19 0;
+#X connect 1 1 2 0;
+#X connect 2 0 19 1;
+#X connect 3 0 1 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 11 0 19 2;
+#X connect 12 0 19 3;
+#X connect 13 0 19 4;
+#X connect 14 0 19 5;
+#X connect 19 0 15 0;
+#X coords 0 -1 1 1 160 50 1 100 100;
diff --git a/l2ork_addons/rjlib/rj/c_mphasor-help.pd b/l2ork_addons/rjlib/rj/c_mphasor-help.pd
new file mode 100644
index 000000000..03e6aa34c
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/c_mphasor-help.pd
@@ -0,0 +1,68 @@
+#N canvas 26 24 904 644 10;
+#X obj 205 473 hsl 128 15 0 1 0 0 empty empty 0...1 10 7 1 10 -262144
+-1 -1 5056 1;
+#X msg 202 342 on \$1;
+#X obj 202 323 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 148 525 timer;
+#X obj 148 503 t b b;
+#X floatatom 148 549 5 0 0 0 - - -;
+#X floatatom 202 437 5 0 0 0 - - -;
+#X obj 384 340 hsl 128 15 0 1 0 0 empty empty phase(0...1) -2 -8 1
+10 -262144 -1 -1 1500 1;
+#X floatatom 155 322 5 0 0 2 freq - -;
+#X obj 155 342 / 100;
+#X msg 252 342 updates \$1;
+#X floatatom 252 322 5 0 0 0 - - -;
+#X floatatom 381 361 5 0 0 1 phase - -;
+#X obj 381 381 / 100;
+#X obj 202 407 c_mphasor 0.3 20;
+#X text 93 16 c_mphasor;
+#X text 130 68 Generates a message rate sawtooth ramp between 0...1
+with variable frequency and update period.;
+#X text 129 120 Arguments:;
+#X text 221 119 c_mphasor <freq Hz> <update period ms>;
+#X text 128 143 Inlet 0:;
+#X text 223 184 - on 0/1: switch on or off;
+#X text 223 144 - float number sets frequency in Hz \, negative frequencies
+give falling ramp;
+#X text 131 248 Inlet 1:;
+#X obj 619 554 table \$0-sinewave 1024;
+#X obj 620 531 s \$0-sinewave;
+#X msg 620 508 sinesum 1024 1;
+#X obj 620 483 loadbang;
+#X obj 419 479 * 1024;
+#X obj 419 502 + 1;
+#X obj 419 526 tabread \$0-sinewave;
+#X obj 422 550 hsl 128 15 -1 1 0 0 empty empty -1...1 10 7 1 10 -262144
+-1 -1 10164 1;
+#X text 414 452 c_mphasor can be used to make a sinewave LFO like this:
+;
+#X text 382 406 phases wrap around;
+#X text 129 40 Message rate phasor object \, useful for building LFOs.
+;
+#X text 222 210 - updates NUM: set update period in milliseconds (minimum
+2ms);
+#X text 221 246 - set and output phase like in [phasor~]. Range is
+0-1 \, values outside this are wrapped around.;
+#X connect 1 0 14 0;
+#X connect 2 0 1 0;
+#X connect 3 0 5 0;
+#X connect 4 0 3 0;
+#X connect 4 1 3 1;
+#X connect 6 0 0 0;
+#X connect 7 0 14 1;
+#X connect 8 0 9 0;
+#X connect 9 0 14 0;
+#X connect 10 0 14 0;
+#X connect 11 0 10 0;
+#X connect 12 0 13 0;
+#X connect 13 0 14 1;
+#X connect 14 0 6 0;
+#X connect 14 0 4 0;
+#X connect 14 0 27 0;
+#X connect 25 0 24 0;
+#X connect 26 0 25 0;
+#X connect 27 0 28 0;
+#X connect 28 0 29 0;
+#X connect 29 0 30 0;
diff --git a/l2ork_addons/rjlib/rj/c_mphasor.pd b/l2ork_addons/rjlib/rj/c_mphasor.pd
new file mode 100644
index 000000000..4654a938a
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/c_mphasor.pd
@@ -0,0 +1,87 @@
+#N canvas 137 114 832 614 10;
+#X obj 93 47 inlet;
+#X text 101 27 freq;
+#X obj 26 190 loadbang;
+#X obj 93 390 outlet;
+#X obj 406 53 inlet;
+#X obj 93 321 f 0;
+#X obj 127 321 + 1;
+#X obj 262 215 f \$1;
+#X obj 125 218 f \$2;
+#X obj 154 145 loadbang;
+#X obj 93 267 metro;
+#N canvas 565 325 520 366 \$0-calc-increment 0;
+#X obj 165 68 inlet;
+#X obj 54 66 inlet;
+#X obj 165 129 /;
+#X obj 165 100 swap 1000;
+#X obj 165 221 / 1;
+#X text 165 43 freq;
+#X obj 165 296 outlet;
+#X text 164 315 counter increment;
+#X obj 54 293 outlet;
+#X text 48 319 metro period;
+#X obj 165 166 t b a;
+#X text 211 219 inverse number of updates per sweep;
+#X text 54 43 update period;
+#X obj 54 127 max 2;
+#X connect 0 0 3 0;
+#X connect 1 0 13 0;
+#X connect 2 0 10 0;
+#X connect 3 0 2 0;
+#X connect 3 1 2 1;
+#X connect 4 0 6 0;
+#X connect 10 0 4 0;
+#X connect 10 1 4 1;
+#X connect 13 0 4 0;
+#X connect 13 0 8 0;
+#X restore 125 245 pd \$0-calc-increment;
+#X obj 154 170 t b b;
+#X text 412 198 [c_mphasor <freq> <update period>];
+#X text 404 33 phase (0-1);
+#X obj 93 83 route on updates float;
+#X floatatom 314 301 5 0 0 0 - - -;
+#N canvas 105 5 620 333 \$0-wrap 0;
+#X obj 75 88 int;
+#X obj 43 114 -;
+#X obj 43 62 t a a;
+#X obj 43 194 +;
+#X obj 43 136 t a a;
+#X obj 75 161 < 0;
+#X obj 43 36 inlet;
+#X obj 43 221 t a a;
+#X obj 75 249 outlet;
+#X obj 43 275 outlet;
+#X text 112 40 wraparound between 0 and +1 \, also for negative numbers
+;
+#X connect 0 0 1 1;
+#X connect 1 0 4 0;
+#X connect 2 0 1 0;
+#X connect 2 1 0 0;
+#X connect 3 0 7 0;
+#X connect 4 0 3 0;
+#X connect 4 1 5 0;
+#X connect 5 0 3 1;
+#X connect 6 0 2 0;
+#X connect 7 0 9 0;
+#X connect 7 1 8 0;
+#X restore 93 348 pd \$0-wrap;
+#X connect 0 0 15 0;
+#X connect 2 0 10 0;
+#X connect 4 0 5 0;
+#X connect 5 0 17 0;
+#X connect 6 0 5 1;
+#X connect 7 0 11 1;
+#X connect 8 0 11 0;
+#X connect 9 0 12 0;
+#X connect 10 0 5 0;
+#X connect 11 0 10 1;
+#X connect 11 1 6 1;
+#X connect 11 1 16 0;
+#X connect 12 0 8 0;
+#X connect 12 1 7 0;
+#X connect 15 0 10 0;
+#X connect 15 1 8 0;
+#X connect 15 2 7 0;
+#X connect 17 0 3 0;
+#X connect 17 1 6 0;
diff --git a/l2ork_addons/rjlib/rj/c_multimetro-help.pd b/l2ork_addons/rjlib/rj/c_multimetro-help.pd
new file mode 100644
index 000000000..a1111169d
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/c_multimetro-help.pd
@@ -0,0 +1,45 @@
+#N canvas 201 94 943 509 10;
+#X obj 172 194 tgl 15 0 empty empty on/off 17 7 1 10 -262144 -1 -1
+0 1;
+#X floatatom 172 309 5 0 0 0 - - -;
+#X floatatom 237 221 5 0 0 2 length - -;
+#X text 184 60 args: 1) pattern length;
+#X text 236 131 2) pattern length;
+#X text 234 152 3) (list of) periods \, will be cycled.;
+#X floatatom 302 223 5 0 0 2 period - -;
+#X text 228 76 2) single period;
+#X obj 172 361 timer;
+#X obj 172 384 list prepend;
+#X obj 172 336 t b b a;
+#X msg 172 437;
+#X msg 172 410 set \$1 \$2;
+#X text 369 209 also lists are possible;
+#X msg 367 232 200 300 400 150;
+#X text 502 229 == duration of beat0==200 \, duration of beat1=300
+\, duration of beat2=400 \, duration of beat3=150 and so on for beat([modulo
+pattern length] modulo period list-length).;
+#X msg 132 409 set;
+#X text 366 60 or "set POS" message;
+#X msg 97 219 set 3;
+#X msg 183 230 bang;
+#X msg 185 252 stop;
+#X text 182 109 inlets: 1) 0/1 rsp bang/stop for start/stop;
+#X obj 172 278 c_multimetro 16 125;
+#X text 161 26 variable period metro with counter inside.;
+#X obj 60 26 c_multimetro;
+#X connect 0 0 22 0;
+#X connect 1 0 10 0;
+#X connect 2 0 22 1;
+#X connect 6 0 22 2;
+#X connect 8 0 9 0;
+#X connect 9 0 12 0;
+#X connect 10 0 8 0;
+#X connect 10 1 8 1;
+#X connect 10 2 9 1;
+#X connect 12 0 11 0;
+#X connect 14 0 22 2;
+#X connect 16 0 11 0;
+#X connect 18 0 22 0;
+#X connect 19 0 22 0;
+#X connect 20 0 22 0;
+#X connect 22 0 1 0;
diff --git a/l2ork_addons/rjlib/rj/c_multimetro.pd b/l2ork_addons/rjlib/rj/c_multimetro.pd
new file mode 100644
index 000000000..9f2785aa5
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/c_multimetro.pd
@@ -0,0 +1,55 @@
+#N canvas 365 298 539 494 10;
+#X obj 192 296 list;
+#X obj 361 53 inlet;
+#X obj 391 211 list length;
+#X obj 361 167 t a a;
+#X obj 192 323 list split 1;
+#X msg 232 352 \$1;
+#X obj 271 251 f 0;
+#X obj 299 251 + 1;
+#X obj 271 300 mod 1;
+#X obj 121 281 delay;
+#X obj 192 221 t b b;
+#X obj 370 402 outlet;
+#X obj 192 169 select 1 0;
+#X obj 52 53 inlet;
+#X msg 236 220 stop;
+#X obj 310 52 inlet;
+#X obj 271 272 mod \$1;
+#X obj 381 101 loadbang;
+#X obj 381 133 f \$2;
+#X msg 95 112 1;
+#X obj 52 88 route set bang stop;
+#X msg 138 111 0;
+#X text 51 31 control;
+#X text 303 32 length;
+#X text 362 32 period(s);
+#X connect 0 0 4 0;
+#X connect 1 0 3 0;
+#X connect 2 0 8 1;
+#X connect 3 0 0 1;
+#X connect 3 1 2 0;
+#X connect 4 1 5 0;
+#X connect 5 0 9 0;
+#X connect 6 0 16 0;
+#X connect 7 0 6 1;
+#X connect 8 0 4 1;
+#X connect 9 0 10 0;
+#X connect 10 0 0 0;
+#X connect 10 1 6 0;
+#X connect 12 0 10 0;
+#X connect 12 1 14 0;
+#X connect 13 0 20 0;
+#X connect 14 0 9 0;
+#X connect 15 0 16 1;
+#X connect 16 0 7 0;
+#X connect 16 0 8 0;
+#X connect 16 0 11 0;
+#X connect 17 0 18 0;
+#X connect 18 0 3 0;
+#X connect 19 0 12 0;
+#X connect 20 0 6 1;
+#X connect 20 1 19 0;
+#X connect 20 2 21 0;
+#X connect 20 3 12 0;
+#X connect 21 0 12 0;
diff --git a/l2ork_addons/rjlib/rj/c_xfade-help.pd b/l2ork_addons/rjlib/rj/c_xfade-help.pd
new file mode 100644
index 000000000..b264a4ac2
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/c_xfade-help.pd
@@ -0,0 +1,31 @@
+#N canvas 386 259 738 465 10;
+#X obj 232 201 hsl 128 15 0 1 0 0 empty empty 0-1 -2 -8 1 10 -262144
+-1 -1 0 1;
+#X obj 229 252 pack 0 10;
+#X obj 150 182 osc~ 440;
+#X obj 173 232 noise~;
+#X obj 151 374 soundoutput;
+#X floatatom 229 230 5 0 0 0 - - -;
+#X obj 151 313 c_xfade;
+#X text 84 24 c_xfade;
+#X text 110 52 Linear crossfader. 0 to last inlet gives left signal
+\, 1 gives only right signal. Values in between get interpolated linearly.
+;
+#X text 109 111 A list of two or three numbers in last inlet can be
+used to set interpolation time and delay - internally this is connected
+to [vline~];
+#X obj 395 196 hsl 128 15 0 1 0 0 empty empty 0-1 -2 -8 1 10 -262144
+-1 -1 0 1;
+#X floatatom 392 224 5 0 0 0 - - -;
+#X obj 392 253 pack 0 200 500;
+#X text 508 252 third number is predelay;
+#X connect 0 0 5 0;
+#X connect 1 0 6 2;
+#X connect 2 0 6 0;
+#X connect 3 0 6 1;
+#X connect 5 0 1 0;
+#X connect 6 0 4 0;
+#X connect 6 0 4 1;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 6 2;
diff --git a/l2ork_addons/rjlib/rj/c_xfade.pd b/l2ork_addons/rjlib/rj/c_xfade.pd
new file mode 100644
index 000000000..2f93806a2
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/c_xfade.pd
@@ -0,0 +1,23 @@
+#N canvas 230 196 783 283 10;
+#X obj 76 87 inlet~;
+#X obj 142 87 inlet~;
+#X obj 77 198 outlet~;
+#X obj 201 87 inlet;
+#X obj 201 127 vline~;
+#X obj 141 136 -~;
+#X obj 141 156 *~;
+#X text 371 150 (1-x)*a + x*b;
+#X text 371 167 = a - x*a + x*b;
+#X text 371 184 = a + x*(b - a);
+#X text 366 119 x: fade factor (0-1);
+#X text 366 90 a: sig from inlet~ 0;
+#X text 339 50 Linear crossfade according to the following calculation:
+;
+#X text 367 104 b: sig from inlet~ 1;
+#X connect 0 0 5 1;
+#X connect 0 0 2 0;
+#X connect 1 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 6 1;
+#X connect 5 0 6 0;
+#X connect 6 0 2 0;
diff --git a/l2ork_addons/rjlib/rj/e.txt b/l2ork_addons/rjlib/rj/e.txt
new file mode 100644
index 000000000..4c7d12286
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e.txt
@@ -0,0 +1,14 @@
+e_alias
+e_chorus
+e_chorusr
+e_fbdelay
+e_fbdelay2
+e_freqshift
+e_pan
+e_phaser
+e_pingpong
+e_pitchshift
+e_reslop
+e_reverb
+e_softclip
+e_vocoder
diff --git a/l2ork_addons/rjlib/rj/e_alias-help.pd b/l2ork_addons/rjlib/rj/e_alias-help.pd
new file mode 100644
index 000000000..521a80aab
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_alias-help.pd
@@ -0,0 +1,30 @@
+#N canvas 0 0 709 451 10;
+#X obj 162 189 osc~ 220;
+#X obj 161 212 *~ 0.5;
+#X floatatom 256 206 5 0 0 0 - - -;
+#X obj 161 316 soundoutput;
+#X obj 161 248 e_alias name 4;
+#X msg 256 225 alias \$1;
+#X obj 72 41 e_alias;
+#X text 152 42 distort by reducing the sample rate to generate aliasing
+;
+#X text 145 85 Args: <name> <aliasing factor>;
+#X text 147 117 Inlet0~: signal to distort;
+#X text 154 135 Inlet1: alias <number>;
+#X obj 303 310 tabwrite~ \$0-scope;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-scope 441 float 2;
+#X coords 0 1 441 -1 200 140 1;
+#X restore 446 188 graph;
+#X obj 303 288 metro 100;
+#X obj 303 269 tgl 15 0 empty empty scope 17 7 1 10 -262144 -1 -1 1
+1;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 2 0 5 0;
+#X connect 4 0 3 0;
+#X connect 4 0 3 1;
+#X connect 4 0 11 0;
+#X connect 5 0 4 1;
+#X connect 13 0 11 0;
+#X connect 14 0 13 0;
diff --git a/l2ork_addons/rjlib/rj/e_alias.pd b/l2ork_addons/rjlib/rj/e_alias.pd
new file mode 100644
index 000000000..91ea19975
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_alias.pd
@@ -0,0 +1,49 @@
+#N canvas 547 326 767 536 10;
+#X obj 193 76 inlet~;
+#X obj 192 491 outlet~;
+#X obj 253 360 phasor~;
+#X obj 194 389 samphold~;
+#X obj 253 107 samplerate~;
+#X obj 253 74 loadbang;
+#X floatatom 305 452 10 0 0 0 - - -;
+#X msg 325 73 bang;
+#X obj 411 70 inlet;
+#X obj 267 291 t b a;
+#X obj 253 327 / 1;
+#X obj 279 184 loadbang;
+#X msg 267 259 1;
+#X obj 267 236 moses 1;
+#X obj 267 209 f \$2;
+#X obj 467 71 rjloader e_alias-\$1 \$0;
+#X obj 412 98 rjdispatch \$0 alias;
+#X obj 267 164 r \$0-alias;
+#X obj 412 119 rjdispatch \$0 freq;
+#X obj 294 326 r \$0-freq;
+#X obj 195 461 c_xfade;
+#X msg 241 439 \$1 10;
+#X obj 241 418 r \$0-dry;
+#X obj 413 142 rjdispatch \$0 dry;
+#X connect 0 0 3 0;
+#X connect 0 0 20 1;
+#X connect 2 0 3 1;
+#X connect 3 0 20 0;
+#X connect 4 0 10 0;
+#X connect 5 0 4 0;
+#X connect 7 0 4 0;
+#X connect 8 0 16 0;
+#X connect 9 0 10 0;
+#X connect 9 1 10 1;
+#X connect 10 0 6 0;
+#X connect 10 0 2 0;
+#X connect 11 0 14 0;
+#X connect 12 0 9 0;
+#X connect 13 0 12 0;
+#X connect 13 1 9 0;
+#X connect 14 0 13 0;
+#X connect 16 0 18 0;
+#X connect 17 0 14 0;
+#X connect 18 0 23 0;
+#X connect 19 0 2 0;
+#X connect 20 0 1 0;
+#X connect 21 0 20 2;
+#X connect 22 0 21 0;
diff --git a/l2ork_addons/rjlib/rj/e_chorus-help.pd b/l2ork_addons/rjlib/rj/e_chorus-help.pd
new file mode 100644
index 000000000..75bd8740c
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_chorus-help.pd
@@ -0,0 +1,60 @@
+#N canvas 406 231 594 419 10;
+#X msg 242 248 help;
+#X msg 296 187 mod \$1;
+#X msg 230 186 freq \$1;
+#X text 45 34 e_chorus;
+#X text 63 62 a simple stereo chorus effect;
+#X obj 296 164 / 100;
+#X floatatom 296 144 5 0 0 2 mod - -;
+#X obj 230 164 / 100;
+#X floatatom 230 144 5 0 0 2 freq - -;
+#X obj 115 297 soundoutput;
+#X obj 114 248 e_chorus mychorus;
+#X floatatom 115 144 5 0 0 2 pitch - -;
+#N canvas 0 0 690 655 guitar 0;
+#X obj 132 187 vline~;
+#X obj 150 209 noise~;
+#X obj 131 311 *~;
+#X msg 132 162 0.8 10 \, 0 20 10;
+#X msg 274 296 delayfreq \$1;
+#X obj 274 255 mtof;
+#X obj 132 77 inlet;
+#X obj 130 426 outlet~;
+#X obj 299 332 loadbang;
+#X obj 150 238 bp~ 3000 7;
+#X obj 164 266 bp~ 5107 10;
+#X obj 132 99 t b a;
+#X obj 130 397 e_fbdelay guitar 2000;
+#X text 316 76 Karplus-Strong pluck;
+#X msg 299 357 feedback 0.99999 \, lpfreq 3200;
+#X connect 0 0 2 0;
+#X connect 1 0 9 0;
+#X connect 1 0 10 0;
+#X connect 2 0 12 0;
+#X connect 3 0 0 0;
+#X connect 4 0 12 2;
+#X connect 5 0 4 0;
+#X connect 6 0 11 0;
+#X connect 8 0 14 0;
+#X connect 9 0 2 1;
+#X connect 10 0 2 1;
+#X connect 11 0 3 0;
+#X connect 11 1 5 0;
+#X connect 12 0 7 0;
+#X connect 14 0 12 2;
+#X restore 115 161 pd guitar;
+#X msg 369 186 freq 0.8 \, mod 1.3;
+#X obj 369 166 loadbang;
+#X connect 0 0 10 1;
+#X connect 1 0 10 1;
+#X connect 2 0 10 1;
+#X connect 5 0 1 0;
+#X connect 6 0 5 0;
+#X connect 7 0 2 0;
+#X connect 8 0 7 0;
+#X connect 10 0 9 0;
+#X connect 10 1 9 1;
+#X connect 11 0 12 0;
+#X connect 12 0 10 0;
+#X connect 13 0 10 1;
+#X connect 14 0 13 0;
diff --git a/l2ork_addons/rjlib/rj/e_chorus.pd b/l2ork_addons/rjlib/rj/e_chorus.pd
new file mode 100644
index 000000000..58015c569
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_chorus.pd
@@ -0,0 +1,121 @@
+#N canvas 0 0 783 320 10;
+#N canvas 376 147 756 534 engine 0;
+#X obj 179 259 cos~;
+#X obj 179 282 +~ 1;
+#X obj 266 143 +~ 0.25;
+#X obj 266 258 cos~;
+#X obj 266 281 +~ 1;
+#X obj 179 425 outlet~;
+#X obj 266 426 outlet~;
+#X obj 365 190 +~ 0.25;
+#X obj 365 257 cos~;
+#X obj 365 280 +~ 1;
+#X obj 460 230 +~ 0.25;
+#X obj 460 255 cos~;
+#X obj 460 278 +~ 1;
+#X obj 14 32 inlet~;
+#X obj 535 284 line~;
+#X obj 535 263 pack 0 50;
+#X obj 460 339 *~;
+#X obj 365 341 *~;
+#X obj 266 342 *~;
+#X obj 179 343 *~;
+#X obj 180 94 line~;
+#X obj 180 73 pack 0 50;
+#X obj 179 124 phasor~;
+#X obj 365 424 outlet~;
+#X obj 460 421 outlet~;
+#X text 609 238 modulation;
+#X text 174 28 frequence;
+#X obj 179 404 vd~ \$0-c;
+#X obj 266 404 vd~ \$0-c;
+#X obj 365 402 vd~ \$0-c;
+#X obj 460 400 vd~ \$0-c;
+#X obj 180 48 r \$0-freq;
+#X obj 535 239 r \$0-mod;
+#X obj 460 376 +~ 0;
+#X obj 366 376 +~ 0;
+#X obj 266 379 +~ 0;
+#X obj 180 376 +~ 0;
+#N canvas 314 253 450 300 sampledur 0;
+#X obj 70 100 samplerate~;
+#X obj 70 144 swap 1000;
+#X obj 70 172 /;
+#X obj 70 51 loadbang;
+#X msg 82 77 bang;
+#X obj 70 205 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 2 1;
+#X connect 2 0 5 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X restore 546 343 pd sampledur;
+#X obj 14 91 delwrite~ \$0-c 2000;
+#X obj 14 63 *~ 0.5;
+#X obj 525 198 loadbang;
+#X obj 525 220 0.2;
+#X connect 0 0 1 0;
+#X connect 1 0 19 0;
+#X connect 2 0 3 0;
+#X connect 2 0 7 0;
+#X connect 3 0 4 0;
+#X connect 4 0 18 0;
+#X connect 7 0 8 0;
+#X connect 7 0 10 0;
+#X connect 8 0 9 0;
+#X connect 9 0 17 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 16 0;
+#X connect 13 0 39 0;
+#X connect 14 0 16 1;
+#X connect 14 0 17 1;
+#X connect 14 0 18 1;
+#X connect 14 0 19 1;
+#X connect 15 0 14 0;
+#X connect 16 0 33 0;
+#X connect 17 0 34 0;
+#X connect 18 0 35 0;
+#X connect 19 0 36 0;
+#X connect 20 0 22 0;
+#X connect 21 0 20 0;
+#X connect 22 0 0 0;
+#X connect 22 0 2 0;
+#X connect 27 0 5 0;
+#X connect 28 0 6 0;
+#X connect 29 0 23 0;
+#X connect 30 0 24 0;
+#X connect 31 0 21 0;
+#X connect 32 0 15 0;
+#X connect 33 0 30 0;
+#X connect 34 0 29 0;
+#X connect 35 0 28 0;
+#X connect 36 0 27 0;
+#X connect 37 0 33 1;
+#X connect 37 0 34 1;
+#X connect 37 0 35 1;
+#X connect 37 0 36 1;
+#X connect 39 0 38 0;
+#X connect 40 0 41 0;
+#X connect 41 0 14 0;
+#X restore 118 108 pd engine;
+#X obj 118 83 inlet~;
+#X obj 118 215 outlet~;
+#X obj 177 215 outlet~;
+#X obj 347 85 inlet;
+#X obj 347 112 rjdispatch \$0 freq;
+#X obj 347 134 rjdispatch \$0 mod;
+#X obj 404 84 rjloader e_chorus-\$1 \$0;
+#X text 120 37 a simple chorus;
+#X obj 583 70 loadbang;
+#X msg 583 95 freq 0.8 \, mod 1.8;
+#X connect 0 0 2 0;
+#X connect 0 1 3 0;
+#X connect 0 2 2 0;
+#X connect 0 3 3 0;
+#X connect 1 0 0 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 9 0 10 0;
+#X connect 10 0 5 0;
diff --git a/l2ork_addons/rjlib/rj/e_chorusr-help.pd b/l2ork_addons/rjlib/rj/e_chorusr-help.pd
new file mode 100644
index 000000000..2513986cb
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_chorusr-help.pd
@@ -0,0 +1,62 @@
+#N canvas 343 144 621 479 10;
+#X msg 257 266 help;
+#X msg 308 204 mod \$1;
+#X msg 242 203 freq \$1;
+#X obj 308 181 / 100;
+#X floatatom 308 161 5 0 0 2 mod - -;
+#X obj 242 181 / 100;
+#X floatatom 242 161 5 0 0 2 freq - -;
+#X obj 120 314 soundoutput;
+#X floatatom 120 161 5 0 0 2 pitch - -;
+#N canvas 0 0 690 655 guitar 0;
+#X obj 132 187 vline~;
+#X obj 150 209 noise~;
+#X obj 131 311 *~;
+#X msg 132 162 0.8 10 \, 0 20 10;
+#X msg 274 296 delayfreq \$1;
+#X obj 274 255 mtof;
+#X obj 132 77 inlet;
+#X obj 130 426 outlet~;
+#X obj 299 332 loadbang;
+#X obj 150 238 bp~ 3000 7;
+#X obj 164 266 bp~ 5107 10;
+#X obj 132 99 t b a;
+#X text 316 76 Karplus-Strong pluck;
+#X msg 299 357 feedback 0.99999 \, lpfreq 3200;
+#X obj 130 397 e_fbdelay guitar 2000;
+#X connect 0 0 2 0;
+#X connect 1 0 9 0;
+#X connect 1 0 10 0;
+#X connect 2 0 14 0;
+#X connect 3 0 0 0;
+#X connect 4 0 14 2;
+#X connect 5 0 4 0;
+#X connect 6 0 11 0;
+#X connect 8 0 13 0;
+#X connect 9 0 2 1;
+#X connect 10 0 2 1;
+#X connect 11 0 3 0;
+#X connect 11 1 5 0;
+#X connect 13 0 14 2;
+#X connect 14 0 7 0;
+#X restore 120 178 pd guitar;
+#X msg 374 203 freq 0.8 \, mod 1.3;
+#X obj 374 183 loadbang;
+#X text 91 68 another simple stereo chorus. This is a Roland design
+with delays driven by frequency dividers at 1 \, 1/2 \, 1/4 \, 1/8
+times the base chorus frequency instead of phase shifters.;
+#X obj 119 265 e_chorusr mychorus;
+#X text 67 46 e_chorusr;
+#X connect 0 0 13 1;
+#X connect 1 0 13 1;
+#X connect 2 0 13 1;
+#X connect 3 0 1 0;
+#X connect 4 0 3 0;
+#X connect 5 0 2 0;
+#X connect 6 0 5 0;
+#X connect 8 0 9 0;
+#X connect 9 0 13 0;
+#X connect 10 0 13 1;
+#X connect 11 0 10 0;
+#X connect 13 0 7 0;
+#X connect 13 1 7 1;
diff --git a/l2ork_addons/rjlib/rj/e_chorusr.pd b/l2ork_addons/rjlib/rj/e_chorusr.pd
new file mode 100644
index 000000000..d5c3529e2
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_chorusr.pd
@@ -0,0 +1,131 @@
+#N canvas 0 0 879 443 10;
+#N canvas 376 147 756 534 engine 0;
+#X obj 179 259 cos~;
+#X obj 179 282 +~ 1;
+#X obj 266 258 cos~;
+#X obj 266 281 +~ 1;
+#X obj 179 425 outlet~;
+#X obj 266 426 outlet~;
+#X obj 365 257 cos~;
+#X obj 365 280 +~ 1;
+#X obj 460 255 cos~;
+#X obj 460 278 +~ 1;
+#X obj 14 32 inlet~;
+#X obj 535 284 line~;
+#X obj 535 263 pack 0 50;
+#X obj 460 339 *~;
+#X obj 365 341 *~;
+#X obj 266 342 *~;
+#X obj 179 343 *~;
+#X obj 180 94 line~;
+#X obj 180 73 pack 0 50;
+#X obj 179 124 phasor~;
+#X obj 365 424 outlet~;
+#X obj 460 421 outlet~;
+#X text 609 238 modulation;
+#X obj 179 404 vd~ \$0-c;
+#X obj 266 404 vd~ \$0-c;
+#X obj 365 402 vd~ \$0-c;
+#X obj 460 400 vd~ \$0-c;
+#X obj 180 28 r \$0-freq;
+#X obj 535 239 r \$0-mod;
+#X obj 460 376 +~ 0;
+#X obj 366 376 +~ 0;
+#X obj 266 379 +~ 0;
+#X obj 180 376 +~ 0;
+#N canvas 314 253 450 300 sampledur 0;
+#X obj 70 100 samplerate~;
+#X obj 70 144 swap 1000;
+#X obj 70 172 /;
+#X obj 70 51 loadbang;
+#X msg 82 77 bang;
+#X obj 70 205 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 2 1;
+#X connect 2 0 5 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X restore 546 343 pd sampledur;
+#X obj 14 91 delwrite~ \$0-c 2000;
+#X obj 14 63 *~ 0.5;
+#X obj 525 198 loadbang;
+#X obj 525 220 0.2;
+#X obj 266 214 wrap~;
+#X obj 364 218 wrap~;
+#X obj 459 218 wrap~;
+#X obj 180 51 / 8;
+#X text 177 7 frequency;
+#X obj 266 193 *~ 2;
+#X obj 364 197 *~ 4;
+#X obj 459 197 *~ 8;
+#X connect 0 0 1 0;
+#X connect 1 0 16 0;
+#X connect 2 0 3 0;
+#X connect 3 0 15 0;
+#X connect 6 0 7 0;
+#X connect 7 0 14 0;
+#X connect 8 0 9 0;
+#X connect 9 0 13 0;
+#X connect 10 0 35 0;
+#X connect 11 0 13 1;
+#X connect 11 0 14 1;
+#X connect 11 0 15 1;
+#X connect 11 0 16 1;
+#X connect 12 0 11 0;
+#X connect 13 0 29 0;
+#X connect 14 0 30 0;
+#X connect 15 0 31 0;
+#X connect 16 0 32 0;
+#X connect 17 0 19 0;
+#X connect 18 0 17 0;
+#X connect 19 0 0 0;
+#X connect 19 0 43 0;
+#X connect 19 0 44 0;
+#X connect 19 0 45 0;
+#X connect 23 0 4 0;
+#X connect 24 0 5 0;
+#X connect 25 0 20 0;
+#X connect 26 0 21 0;
+#X connect 27 0 41 0;
+#X connect 28 0 12 0;
+#X connect 29 0 26 0;
+#X connect 30 0 25 0;
+#X connect 31 0 24 0;
+#X connect 32 0 23 0;
+#X connect 33 0 29 1;
+#X connect 33 0 30 1;
+#X connect 33 0 31 1;
+#X connect 33 0 32 1;
+#X connect 35 0 34 0;
+#X connect 36 0 37 0;
+#X connect 37 0 11 0;
+#X connect 38 0 2 0;
+#X connect 39 0 6 0;
+#X connect 40 0 8 0;
+#X connect 41 0 18 0;
+#X connect 43 0 38 0;
+#X connect 44 0 39 0;
+#X connect 45 0 40 0;
+#X restore 118 138 pd engine;
+#X obj 118 113 inlet~;
+#X obj 118 245 outlet~;
+#X obj 177 245 outlet~;
+#X obj 347 115 inlet;
+#X obj 347 142 rjdispatch \$0 freq;
+#X obj 347 164 rjdispatch \$0 mod;
+#X obj 583 100 loadbang;
+#X msg 583 125 freq 0.8 \, mod 1.8;
+#X obj 404 114 rjloader e_rchorus-\$1 \$0;
+#X text 108 20 another simple chorus. This is a Roland design with
+delays driven by frequency dividers at 1 \, 1/2 \, 1/4 \, 1/8 times
+the base chorus frequency instead of phase shifters.;
+#X connect 0 0 2 0;
+#X connect 0 1 3 0;
+#X connect 0 2 2 0;
+#X connect 0 3 3 0;
+#X connect 1 0 0 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 7 0 8 0;
+#X connect 8 0 5 0;
diff --git a/l2ork_addons/rjlib/rj/e_fbdelay-help.pd b/l2ork_addons/rjlib/rj/e_fbdelay-help.pd
new file mode 100644
index 000000000..b19fa4572
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_fbdelay-help.pd
@@ -0,0 +1,87 @@
+#N canvas 66 126 1037 545 10;
+#X text 35 54 use as: e_fbdelay <NAME> <max delay time in ms>;
+#X obj 132 187 vline~;
+#X obj 150 209 noise~;
+#X obj 131 231 *~;
+#X obj 129 454 soundoutput;
+#X obj 130 397 e_fbdelay mydelay 2000;
+#X msg 281 337 feedback \$1;
+#X obj 281 283 / 100;
+#X obj 281 177 vsl 15 100 0 100 0 0 empty empty feedback 0 -9 1 10
+-262144 -1 -1 0 1;
+#X obj 204 367 sig~ 0;
+#X obj 132 134 bng 24 250 50 0 empty empty empty 17 7 0 10 -4034 -1
+-1;
+#X msg 132 162 0.8 10 \, 0 20 10;
+#X obj 557 177 vsl 15 100 0 2000 0 0 empty empty delay_time(ms) 0 -9
+1 10 -262144 -1 -1 0 1;
+#X msg 557 327 delay \$1;
+#X floatatom 564 286 8 0 0 0 - - -;
+#X floatatom 298 307 5 0 0 0 - - -;
+#X obj 656 146 vsl 15 128 0 127 0 0 empty empty delay_frequency 0 -9
+1 10 -262144 -1 -1 0 1;
+#X msg 656 328 delayfreq \$1;
+#X obj 656 287 mtof;
+#X text 560 393 Delays set through last inlet will be added to the
+delay of the audio delay inlet (second inlet);
+#X floatatom 694 286 5 0 0 1 pitch - -;
+#X obj 387 144 vsl 15 128 0 127 0 0 empty empty lowpass_cutoff_fr.
+0 -9 1 10 -262144 -1 -1 0 1;
+#X obj 387 285 mtof;
+#X floatatom 401 308 8 0 0 0 - - -;
+#X msg 387 336 lpfreq \$1;
+#X obj 656 359 s \$0-trigger;
+#X obj 132 84 r \$0-trigger;
+#X obj 132 108 bang;
+#X text 685 181 sets delaytime as a frequency value;
+#X text 35 39 feedback delay line with lowpass filtered feedback path.
+;
+#X text 25 13 e_fbdelay;
+#X obj 204 253 vsl 15 100 0 2000 0 0 empty empty delay_time(ms) -10
+-9 1 10 -262144 -1 -1 0 1;
+#X floatatom 672 310 8 0 0 1 freq - -;
+#X obj 321 402 hsl 50 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X floatatom 318 422 5 0 0 0 - - -;
+#X msg 318 439 dry \$1;
+#X text 319 459 default is dry=0 i.e. fully wet;
+#X msg 478 324 input \$1;
+#X obj 478 279 / 100;
+#X obj 478 173 vsl 15 100 0 100 0 0 empty empty inputlevel 0 -9 1 10
+-262144 -1 -1 0 1;
+#X floatatom 495 303 5 0 0 0 - - -;
+#X connect 1 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 5 0;
+#X connect 5 0 4 0;
+#X connect 5 0 4 1;
+#X connect 6 0 5 2;
+#X connect 7 0 6 0;
+#X connect 7 0 15 0;
+#X connect 8 0 7 0;
+#X connect 9 0 5 1;
+#X connect 10 0 11 0;
+#X connect 11 0 1 0;
+#X connect 12 0 13 0;
+#X connect 12 0 14 0;
+#X connect 13 0 5 2;
+#X connect 16 0 18 0;
+#X connect 16 0 20 0;
+#X connect 17 0 5 2;
+#X connect 17 0 25 0;
+#X connect 18 0 17 0;
+#X connect 18 0 32 0;
+#X connect 21 0 22 0;
+#X connect 22 0 24 0;
+#X connect 22 0 23 0;
+#X connect 24 0 5 2;
+#X connect 26 0 27 0;
+#X connect 27 0 10 0;
+#X connect 31 0 9 0;
+#X connect 33 0 34 0;
+#X connect 34 0 35 0;
+#X connect 35 0 5 2;
+#X connect 37 0 5 2;
+#X connect 38 0 40 0;
+#X connect 38 0 37 0;
+#X connect 39 0 38 0;
diff --git a/l2ork_addons/rjlib/rj/e_fbdelay.pd b/l2ork_addons/rjlib/rj/e_fbdelay.pd
new file mode 100644
index 000000000..3bc6aa833
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_fbdelay.pd
@@ -0,0 +1,85 @@
+#N canvas 360 180 852 486 10;
+#N canvas 371 208 987 586 del 0;
+#X obj 164 87 inlet~;
+#X obj 484 100 block~ 16;
+#X obj 290 86 inlet~;
+#X obj 291 117 vd~ \$0-del1;
+#X obj 399 86 inlet;
+#X obj 190 194 outlet~;
+#X obj 583 82 inlet;
+#X msg 411 291 0.998849;
+#X obj 290 186 lop~ 10000;
+#X obj 173 405 delwrite~ \$0-del1 \$2;
+#X obj 290 148 *~ 0;
+#X obj 399 123 clip -1 1;
+#X obj 634 83 inlet;
+#X obj 172 343 *~;
+#X obj 190 314 line~;
+#X msg 190 273 1;
+#X obj 191 253 loadbang;
+#X msg 190 294 \$1 20;
+#X connect 0 0 5 0;
+#X connect 0 0 13 0;
+#X connect 2 0 3 0;
+#X connect 3 0 10 0;
+#X connect 4 0 11 0;
+#X connect 6 0 8 1;
+#X connect 8 0 9 0;
+#X connect 10 0 8 0;
+#X connect 10 0 5 0;
+#X connect 11 0 10 1;
+#X connect 12 0 17 0;
+#X connect 13 0 9 0;
+#X connect 14 0 13 1;
+#X connect 15 0 17 0;
+#X connect 16 0 15 0;
+#X connect 17 0 14 0;
+#X restore 118 183 pd del;
+#X obj 117 40 inlet~;
+#X obj 132 60 inlet~;
+#X obj 118 281 outlet~;
+#X obj 542 92 rjdispatch \$0 feedback;
+#X obj 542 113 rjdispatch \$0 lpfreq;
+#X obj 593 66 rjloader e_fbdelay-\$1 \$0;
+#X obj 542 66 inlet;
+#X obj 210 131 r \$0-feedback;
+#X obj 315 132 r \$0-lpfreq;
+#X obj 542 136 rjdispatch \$0 delay;
+#X obj 391 286 r \$0-delayfreq;
+#X obj 542 158 rjdispatch \$0 delayfreq;
+#X obj 391 315 swap 1000;
+#X obj 391 345 /;
+#X text 474 314 delay time can be set as frequency as well.;
+#X obj 208 47 r \$0-delay;
+#X obj 391 374 s \$0-delay;
+#X obj 208 104 line~;
+#X msg 208 81 \$1 10;
+#X obj 119 259 c_xfade;
+#X msg 165 237 \$1 10;
+#X obj 165 216 r \$0-dry;
+#X obj 542 180 rjdispatch \$0 dry;
+#X obj 315 158 r \$0-input;
+#X obj 542 204 rjdispatch \$0 input;
+#X connect 0 0 20 0;
+#X connect 1 0 0 0;
+#X connect 1 0 20 1;
+#X connect 2 0 0 1;
+#X connect 4 0 5 0;
+#X connect 5 0 10 0;
+#X connect 7 0 4 0;
+#X connect 8 0 0 2;
+#X connect 9 0 0 3;
+#X connect 10 0 12 0;
+#X connect 11 0 13 0;
+#X connect 12 0 23 0;
+#X connect 13 0 14 0;
+#X connect 13 1 14 1;
+#X connect 14 0 17 0;
+#X connect 16 0 19 0;
+#X connect 18 0 0 1;
+#X connect 19 0 18 0;
+#X connect 20 0 3 0;
+#X connect 21 0 20 2;
+#X connect 22 0 21 0;
+#X connect 23 0 25 0;
+#X connect 24 0 0 4;
diff --git a/l2ork_addons/rjlib/rj/e_fbdelay2.pd b/l2ork_addons/rjlib/rj/e_fbdelay2.pd
new file mode 100644
index 000000000..d32f81c5a
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_fbdelay2.pd
@@ -0,0 +1,17 @@
+#N canvas 0 22 450 300 10;
+#X obj 73 59 inlet~;
+#X obj 131 59 inlet~;
+#X obj 201 61 inlet~;
+#X obj 262 66 inlet;
+#X obj 35 199 outlet~;
+#X obj 189 194 outlet~;
+#X obj 36 130 rj/e_fbdelay \$1-1 \$2;
+#X obj 190 129 rj/e_fbdelay \$1-2 \$2;
+#X connect 0 0 6 0;
+#X connect 1 0 7 0;
+#X connect 2 0 7 1;
+#X connect 2 0 6 1;
+#X connect 3 0 7 2;
+#X connect 3 0 6 2;
+#X connect 6 0 4 0;
+#X connect 7 0 5 0;
diff --git a/l2ork_addons/rjlib/rj/e_freqshift-help.pd b/l2ork_addons/rjlib/rj/e_freqshift-help.pd
new file mode 100644
index 000000000..8b43d07ab
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_freqshift-help.pd
@@ -0,0 +1,22 @@
+#N canvas 196 66 492 362 10;
+#X obj 85 144 osc~ 220;
+#X floatatom 197 140 5 0 0 0 - - -;
+#X obj 84 214 *~ 0.1;
+#X floatatom 84 123 5 0 0 0 - - -;
+#X obj 68 254 soundoutput;
+#X obj 84 182 rj/e_freqshift;
+#X msg 254 155 freq \$1;
+#X floatatom 255 134 5 0 0 0 - - -;
+#X text 29 25 e_freqshift: shift all frequencies by a certain amount
+;
+#X text 30 53 This effect distroys the harmonic structure of a tone
+\, if you want to keep that use pitchshift.;
+#X text 252 113 shift amount in Hz;
+#X connect 0 0 5 0;
+#X connect 1 0 5 1;
+#X connect 2 0 4 0;
+#X connect 2 0 4 1;
+#X connect 3 0 0 0;
+#X connect 5 0 2 0;
+#X connect 6 0 5 1;
+#X connect 7 0 6 0;
diff --git a/l2ork_addons/rjlib/rj/e_freqshift.pd b/l2ork_addons/rjlib/rj/e_freqshift.pd
new file mode 100644
index 000000000..bebcfc398
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_freqshift.pd
@@ -0,0 +1,52 @@
+#N canvas 632 156 696 455 10;
+#X obj 131 103 phasor~;
+#X obj 131 156 cos~;
+#X obj 177 154 cos~;
+#X obj 44 56 inlet~;
+#X obj 113 207 *~;
+#X obj 45 257 outlet~;
+#X obj 206 55 inlet;
+#X obj 45 205 *~;
+#N canvas 0 22 588 330 hilbert 0;
+#X obj 105 92 biquad~ 0.83774 -0.06338 0.06338 -0.83774 1;
+#X obj 105 66 biquad~ 1.94632 -0.94657 0.94657 -1.94632 1;
+#X obj 86 149 biquad~ -0.02569 0.260502 -0.260502 0.02569 1;
+#X obj 86 175 biquad~ 1.8685 -0.870686 0.870686 -1.8685 1;
+#X obj 86 39 inlet~;
+#X obj 105 121 outlet~;
+#X obj 86 202 outlet~;
+#X obj 502 39 inlet;
+#X text 461 13 bang to clear;
+#X text 80 16 signal in;
+#X msg 502 112 clear;
+#X connect 0 0 5 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 6 0;
+#X connect 4 0 1 0;
+#X connect 4 0 2 0;
+#X connect 7 0 10 0;
+#X connect 10 0 1 0;
+#X connect 10 0 0 0;
+#X connect 10 0 2 0;
+#X connect 10 0 3 0;
+#X restore 44 128 pd hilbert;
+#X obj 177 134 +~ 0.25;
+#X obj 294 74 rjloader e_freqshift-\$1 \$0;
+#X obj 206 75 route float;
+#X obj 132 54 r \$0-freq;
+#X obj 280 101 rjdispatch \$0 freq;
+#X connect 0 0 1 0;
+#X connect 0 0 9 0;
+#X connect 1 0 7 1;
+#X connect 2 0 4 1;
+#X connect 3 0 8 0;
+#X connect 4 0 5 0;
+#X connect 6 0 11 0;
+#X connect 7 0 5 0;
+#X connect 8 0 7 0;
+#X connect 8 1 4 0;
+#X connect 9 0 2 0;
+#X connect 11 0 0 0;
+#X connect 11 1 13 0;
+#X connect 12 0 0 0;
diff --git a/l2ork_addons/rjlib/rj/e_pan-help.pd b/l2ork_addons/rjlib/rj/e_pan-help.pd
new file mode 100644
index 000000000..aaca3c9fc
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_pan-help.pd
@@ -0,0 +1,25 @@
+#N canvas 365 203 597 514 10;
+#X obj 116 245 noise~;
+#X floatatom 171 275 8 0 0 0 - - -;
+#X obj 171 245 / 127;
+#X obj 174 220 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 6600 1;
+#X text 177 202 L < < < M > > > R;
+#X text 260 238 controller value;
+#X obj 115 275 *~ 0.3;
+#X obj 115 343 soundoutput;
+#X obj 115 305 e_pan;
+#X text 91 23 Constant power panner (cosine law);
+#X text 64 110 Inlets: 1) signal to pan;
+#X text 121 132 2) panning position (0 = left \, 1 = right). Default
+is center (0.5);
+#X obj 39 23 e_pan;
+#X text 65 63 Argument: panning position (0 = left \, 1 = right). Default
+with empty argument is center (i.e. 0.5);
+#X connect 0 0 6 0;
+#X connect 1 0 8 1;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 6 0 8 0;
+#X connect 8 0 7 0;
+#X connect 8 1 7 1;
diff --git a/l2ork_addons/rjlib/rj/e_pan.pd b/l2ork_addons/rjlib/rj/e_pan.pd
new file mode 100644
index 000000000..cc618d7a4
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_pan.pd
@@ -0,0 +1,54 @@
+#N canvas 405 232 567 432 10;
+#X text 190 183 * ~M_PI/2;
+#X obj 117 175 * 1.5708;
+#X obj 39 262 *~ 0.7;
+#X obj 120 262 *~ 0.7;
+#X obj 117 60 inlet;
+#X obj 38 62 inlet~;
+#X obj 39 293 outlet~;
+#X obj 120 293 outlet~;
+#X obj 76 240 cos;
+#X obj 157 241 sin;
+#X msg 168 132 0.5;
+#X obj 201 133 f \$1;
+#N canvas 0 0 715 450 check-arg 0;
+#X obj 179 184 makefilename $%d-EMPTY;
+#X obj 52 185 symbol \$1-EMPTY;
+#X msg 69 156 bang;
+#X obj 52 217 select DUMMY;
+#X obj 52 39 loadbang;
+#X obj 52 62 t b b;
+#X obj 179 157 1;
+#X obj 52 294 outlet;
+#X text 182 85 Using an idiom by IOhannes;
+#X msg 133 250 1;
+#X msg 52 246 0;
+#X text 182 247 Output 0 if no \$1 argument present \, and 1 if \$1
+is present even if it's 0!;
+#X connect 0 0 3 1;
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 10 0;
+#X connect 3 1 9 0;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
+#X connect 5 1 6 0;
+#X connect 6 0 0 0;
+#X connect 9 0 7 0;
+#X connect 10 0 7 0;
+#X restore 168 59 pd check-arg;
+#X obj 168 85 select 0 1;
+#X connect 1 0 8 0;
+#X connect 1 0 9 0;
+#X connect 2 0 6 0;
+#X connect 3 0 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 2 0;
+#X connect 5 0 3 0;
+#X connect 8 0 2 1;
+#X connect 9 0 3 1;
+#X connect 10 0 1 0;
+#X connect 11 0 1 0;
+#X connect 12 0 13 0;
+#X connect 13 0 10 0;
+#X connect 13 1 11 0;
diff --git a/l2ork_addons/rjlib/rj/e_phaser-help.pd b/l2ork_addons/rjlib/rj/e_phaser-help.pd
new file mode 100644
index 000000000..8f0f007d5
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_phaser-help.pd
@@ -0,0 +1,72 @@
+#N canvas 406 84 718 570 10;
+#N canvas 0 0 660 424 chord 0;
+#X obj 92 97 -~ 0.5;
+#X obj 92 146 clip~ -0.5 0.5;
+#X obj 92 169 cos~;
+#X obj 91 252 hip~ 5;
+#X obj 91 315 outlet~;
+#X obj 92 122 *~ 3;
+#X obj 92 74 phasor~ 220;
+#X obj 221 97 -~ 0.5;
+#X obj 221 146 clip~ -0.5 0.5;
+#X obj 221 169 cos~;
+#X obj 221 122 *~ 3;
+#X obj 356 100 -~ 0.5;
+#X obj 356 149 clip~ -0.5 0.5;
+#X obj 356 172 cos~;
+#X obj 356 125 *~ 3;
+#X obj 221 74 phasor~ 251;
+#X obj 356 77 phasor~ 281;
+#X text 147 32 test sound for phaser;
+#X obj 91 285 *~ 0.2;
+#X msg 430 26 0;
+#X connect 0 0 5 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 18 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 10 0;
+#X connect 8 0 9 0;
+#X connect 9 0 3 0;
+#X connect 10 0 8 0;
+#X connect 11 0 14 0;
+#X connect 12 0 13 0;
+#X connect 13 0 3 0;
+#X connect 14 0 12 0;
+#X connect 15 0 7 0;
+#X connect 16 0 11 0;
+#X connect 18 0 4 0;
+#X connect 19 0 16 1;
+#X connect 19 0 15 1;
+#X connect 19 0 6 1;
+#X restore 119 105 pd chord;
+#X obj 119 350 soundoutput;
+#X msg 199 145 freq \$1;
+#X obj 199 123 / 100;
+#X obj 202 103 hsl 128 15 0 127 0 0 empty empty frequency -2 -8 1 10
+-262144 -1 -1 0 1;
+#X msg 342 145 freq \$1;
+#X obj 342 123 / 100;
+#X obj 345 103 hsl 128 15 0 127 0 0 empty empty frequency -2 -8 1 10
+-262144 -1 -1 0 1;
+#X obj 390 199 / 100;
+#X obj 393 179 hsl 128 15 0 127 0 0 empty empty depth -2 -8 1 10 -262144
+-1 -1 0 1;
+#X msg 390 221 depth \$1;
+#X obj 118 288 e_phaser ph0;
+#X obj 261 289 e_phaser ph1;
+#X connect 0 0 11 0;
+#X connect 0 0 12 0;
+#X connect 2 0 11 1;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 5 0 12 1;
+#X connect 6 0 5 0;
+#X connect 7 0 6 0;
+#X connect 8 0 10 0;
+#X connect 9 0 8 0;
+#X connect 10 0 11 1;
+#X connect 10 0 12 1;
+#X connect 11 0 1 0;
+#X connect 12 0 1 1;
diff --git a/l2ork_addons/rjlib/rj/e_phaser.pd b/l2ork_addons/rjlib/rj/e_phaser.pd
new file mode 100644
index 000000000..557f36c1c
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_phaser.pd
@@ -0,0 +1,70 @@
+#N canvas 270 214 868 518 10;
+#X obj 74 38 inlet~;
+#X obj 414 28 inlet;
+#X obj 96 127 rpole~;
+#X obj 96 102 rzero_rev~;
+#X obj 96 176 rpole~;
+#X obj 96 151 rzero_rev~;
+#X obj 96 224 rpole~;
+#X obj 96 199 rzero_rev~;
+#X obj 96 273 rpole~;
+#X obj 96 248 rzero_rev~;
+#X obj 73 303 +~;
+#X obj 72 331 outlet~;
+#X obj 528 30 rjloader e_phaser-\$1 \$0;
+#X obj 414 62 rjdispatch \$0 freq;
+#X obj 403 180 r \$0-freq;
+#X obj 403 211 phasor~ 0.3;
+#X text 339 129 replacement for: expr~ 1 - 0.03 - 0.6*abs($v1-0.5)*abs($v1-0.5)
+;
+#X obj 345 211 sig~ 1;
+#X obj 345 237 -~;
+#X obj 346 281 min~;
+#X floatatom 484 178 5 0 0 0 - - -;
+#X obj 346 306 *~;
+#X obj 270 360 -~;
+#X obj 271 330 sig~ 0.97;
+#X obj 414 84 rjdispatch \$0 depth;
+#X obj 406 300 line~;
+#X obj 489 250 loadbang;
+#X obj 489 271 f 0.6;
+#X obj 346 333 *~;
+#X obj 406 245 r \$0-depth;
+#X obj 406 271 pack 0 10;
+#X connect 0 0 3 0;
+#X connect 0 0 10 0;
+#X connect 1 0 13 0;
+#X connect 2 0 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 7 0;
+#X connect 5 0 4 0;
+#X connect 6 0 9 0;
+#X connect 7 0 6 0;
+#X connect 8 0 10 1;
+#X connect 9 0 8 0;
+#X connect 10 0 11 0;
+#X connect 13 0 24 0;
+#X connect 14 0 15 0;
+#X connect 15 0 19 1;
+#X connect 15 0 18 1;
+#X connect 17 0 18 0;
+#X connect 18 0 19 0;
+#X connect 19 0 21 0;
+#X connect 19 0 21 1;
+#X connect 20 0 15 0;
+#X connect 21 0 28 0;
+#X connect 22 0 3 1;
+#X connect 22 0 2 1;
+#X connect 22 0 5 1;
+#X connect 22 0 4 1;
+#X connect 22 0 7 1;
+#X connect 22 0 6 1;
+#X connect 22 0 9 1;
+#X connect 22 0 8 1;
+#X connect 23 0 22 0;
+#X connect 25 0 28 1;
+#X connect 26 0 27 0;
+#X connect 27 0 25 0;
+#X connect 28 0 22 1;
+#X connect 29 0 30 0;
+#X connect 30 0 25 0;
diff --git a/l2ork_addons/rjlib/rj/e_pingpong-help.pd b/l2ork_addons/rjlib/rj/e_pingpong-help.pd
new file mode 100644
index 000000000..07c3f4382
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_pingpong-help.pd
@@ -0,0 +1,93 @@
+#N canvas 66 126 1095 623 10;
+#X obj 132 237 vline~;
+#X obj 150 259 noise~;
+#X obj 131 281 *~;
+#X obj 129 504 soundoutput;
+#X obj 281 333 / 100;
+#X obj 281 227 vsl 15 100 0 100 0 0 empty empty x_feedback_1+2 0 -9
+1 10 -262144 -1 -1 9400 1;
+#X obj 204 417 sig~ 0;
+#X obj 132 184 bng 24 250 50 0 empty empty empty 17 7 0 10 -4034 -1
+-1;
+#X msg 132 212 0.8 10 \, 0 20 10;
+#X obj 562 205 vsl 15 100 0 2000 0 0 empty empty delay_time2_(ms) 0
+-9 1 10 -262144 -1 -1 3100 1;
+#X floatatom 569 310 8 0 0 0 - - -;
+#X floatatom 298 357 5 0 0 0 - - -;
+#X obj 661 203 vsl 15 128 0 127 0 0 empty empty delay_frequency_1+2
+0 -9 1 10 -262144 -1 -1 2100 1;
+#X obj 661 344 mtof;
+#X text 553 578 Delays set through last inlet will be added to the
+delay of the audio delay inlet (second inlet);
+#X floatatom 699 343 5 0 0 1 pitch - -;
+#X obj 387 194 vsl 15 128 0 127 0 0 empty empty lowpass_cutoff_fr._1+2
+0 -9 1 10 -262144 -1 -1 7000 1;
+#X obj 387 335 mtof;
+#X floatatom 401 358 8 0 0 0 - - -;
+#X obj 661 416 s \$0-trigger;
+#X obj 132 134 r \$0-trigger;
+#X obj 132 158 bang;
+#X text 657 164 sets delaytime as a frequency value;
+#X obj 204 303 vsl 15 100 0 2000 0 0 empty empty delay_time(ms) -10
+-9 1 10 -262144 -1 -1 0 1;
+#X floatatom 677 367 8 0 0 1 freq - -;
+#X obj 130 447 e_pingpong myping 2000;
+#X msg 661 385 delayfreq1 \$1 \, delayfreq2 \$1;
+#X obj 487 205 vsl 15 100 0 2000 0 0 empty empty delay_time1 0 -9 1
+10 -262144 -1 -1 1100 1;
+#X floatatom 494 314 8 0 0 0 - - -;
+#X msg 487 355 delay1 \$1;
+#X msg 562 354 delay2 \$1;
+#X msg 387 386 lpfreq1 \$1 \, lpfreq2 \$1;
+#X obj 888 334 / 100;
+#X obj 888 228 vsl 15 100 0 100 0 0 empty empty direct_feedback_1+2
+0 -9 1 10 -262144 -1 -1 0 1;
+#X floatatom 905 358 5 0 0 0 - - -;
+#X msg 281 415 x-feedback1 \$1 \, x-feedback2 \$1;
+#X msg 888 396 feedback1 \$1 \, feedback2 \$1;
+#X text 25 13 e_pingpong;
+#X text 35 39 pingpong feedback delay line with lowpass filtered feedback
+path.;
+#X text 41 81 use as: e_pingpong <NAME> <max delay time in ms>;
+#X text 561 30 WARNING: For stable operation the sum of direct feedback
+and cross-feedback on each channel must not be greater than 1;
+#X obj 167 286 *~;
+#X obj 199 258 osc~ 880;
+#X connect 0 0 2 0;
+#X connect 0 0 41 0;
+#X connect 1 0 2 1;
+#X connect 2 0 25 0;
+#X connect 4 0 35 0;
+#X connect 4 0 11 0;
+#X connect 5 0 4 0;
+#X connect 6 0 25 2;
+#X connect 7 0 8 0;
+#X connect 8 0 0 0;
+#X connect 9 0 30 0;
+#X connect 9 0 10 0;
+#X connect 12 0 13 0;
+#X connect 12 0 15 0;
+#X connect 13 0 26 0;
+#X connect 13 0 24 0;
+#X connect 16 0 17 0;
+#X connect 17 0 31 0;
+#X connect 17 0 18 0;
+#X connect 20 0 21 0;
+#X connect 21 0 7 0;
+#X connect 23 0 6 0;
+#X connect 25 0 3 0;
+#X connect 25 1 3 1;
+#X connect 26 0 19 0;
+#X connect 26 0 25 4;
+#X connect 27 0 29 0;
+#X connect 27 0 28 0;
+#X connect 29 0 25 4;
+#X connect 30 0 25 4;
+#X connect 31 0 25 4;
+#X connect 32 0 36 0;
+#X connect 32 0 34 0;
+#X connect 33 0 32 0;
+#X connect 35 0 25 4;
+#X connect 36 0 25 4;
+#X connect 41 0 25 1;
+#X connect 42 0 41 1;
diff --git a/l2ork_addons/rjlib/rj/e_pingpong.pd b/l2ork_addons/rjlib/rj/e_pingpong.pd
new file mode 100644
index 000000000..41d834d0a
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_pingpong.pd
@@ -0,0 +1,127 @@
+#N canvas 216 405 817 377 10;
+#X obj 117 32 inlet~;
+#X obj 195 33 inlet~;
+#X obj 118 241 outlet~;
+#X obj 512 54 inlet;
+#X obj 213 142 line~;
+#X msg 213 119 \$1 10;
+#X obj 512 172 rjdispatch \$0 lpfreq1;
+#X obj 512 195 rjdispatch \$0 delay1;
+#X obj 512 217 rjdispatch \$0 delayfreq1;
+#X obj 512 241 rjdispatch \$0 lpfreq2;
+#X obj 512 264 rjdispatch \$0 delay2;
+#X obj 512 286 rjdispatch \$0 delayfreq2;
+#X obj 213 85 r \$0-delay1;
+#X obj 361 142 line~;
+#X msg 361 119 \$1 10;
+#X obj 361 85 r \$0-delay2;
+#X obj 346 33 inlet~;
+#X obj 271 32 inlet~;
+#N canvas 0 0 1057 597 two_delaylines_cross_connected 0;
+#X obj 57 84 inlet~;
+#X obj 860 45 block~ 16;
+#X obj 503 83 inlet~;
+#X obj 504 114 vd~ \$0-del1;
+#X obj 94 338 outlet~;
+#X obj 503 163 lop~ 10000;
+#X obj 57 458 delwrite~ \$0-del1 \$2;
+#X obj 780 90 inlet~;
+#X obj 781 121 vd~ \$0-del2;
+#X obj 307 458 delwrite~ \$0-del2 \$2;
+#X obj 339 334 outlet~;
+#X obj 307 86 inlet~;
+#X obj 583 163 r \$0-lpfreq1;
+#X obj 859 164 r \$0-lpfreq2;
+#X obj 781 164 lop~ 10000;
+#X obj 504 229 *~ 0;
+#X obj 529 208 clip -1 1;
+#X obj 628 227 *~ 0;
+#X obj 653 206 clip -1 1;
+#X obj 903 239 *~ 0;
+#X obj 928 218 clip -1 1;
+#X obj 782 238 *~ 0;
+#X obj 807 217 clip -1 1;
+#X obj 781 144 clip~ -1 1;
+#X obj 504 138 clip~ -1 1;
+#X obj 529 187 r \$0-feedback1;
+#X obj 653 185 r \$0-x-feedback1;
+#X obj 807 196 r \$0-x-feedback2;
+#X obj 928 197 r \$0-feedback2;
+#X connect 0 0 6 0;
+#X connect 0 0 4 0;
+#X connect 2 0 3 0;
+#X connect 3 0 24 0;
+#X connect 5 0 15 0;
+#X connect 5 0 17 0;
+#X connect 7 0 8 0;
+#X connect 8 0 23 0;
+#X connect 11 0 9 0;
+#X connect 11 0 10 0;
+#X connect 12 0 5 1;
+#X connect 13 0 14 1;
+#X connect 14 0 19 0;
+#X connect 14 0 21 0;
+#X connect 15 0 6 0;
+#X connect 16 0 15 1;
+#X connect 17 0 9 0;
+#X connect 17 0 10 0;
+#X connect 18 0 17 1;
+#X connect 19 0 9 0;
+#X connect 20 0 19 1;
+#X connect 21 0 6 0;
+#X connect 21 0 4 0;
+#X connect 22 0 21 1;
+#X connect 23 0 14 0;
+#X connect 24 0 5 0;
+#X connect 25 0 16 0;
+#X connect 26 0 18 0;
+#X connect 27 0 22 0;
+#X connect 28 0 20 0;
+#X restore 118 183 pd two_delaylines_cross_connected;
+#N canvas 0 0 450 300 conversions 0;
+#X obj 57 72 swap 1000;
+#X obj 57 102 /;
+#X text 140 71 delay time can be set as frequency as well.;
+#X obj 57 131 s \$0-delay1;
+#X obj 58 183 swap 1000;
+#X obj 58 213 /;
+#X obj 58 154 r \$0-delayfreq2;
+#X obj 58 242 s \$0-delay2;
+#X obj 57 43 r \$0-delayfreq1;
+#X connect 0 0 1 0;
+#X connect 0 1 1 1;
+#X connect 1 0 3 0;
+#X connect 4 0 5 0;
+#X connect 4 1 5 1;
+#X connect 5 0 7 0;
+#X connect 6 0 4 0;
+#X connect 8 0 0 0;
+#X restore 512 329 pd conversions;
+#X obj 346 247 outlet~;
+#X obj 563 55 rjloader e_pingpong-\$1 \$0;
+#X obj 512 81 rjdispatch \$0 feedback1;
+#X obj 512 105 rjdispatch \$0 feedback2;
+#X obj 512 125 rjdispatch \$0 x-feedback1;
+#X obj 512 149 rjdispatch \$0 x-feedback2;
+#X connect 0 0 18 0;
+#X connect 1 0 18 1;
+#X connect 3 0 22 0;
+#X connect 4 0 18 2;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 12 0 5 0;
+#X connect 13 0 18 3;
+#X connect 14 0 13 0;
+#X connect 15 0 14 0;
+#X connect 16 0 18 3;
+#X connect 17 0 18 2;
+#X connect 18 0 2 0;
+#X connect 18 1 20 0;
+#X connect 22 0 23 0;
+#X connect 23 0 24 0;
+#X connect 24 0 25 0;
+#X connect 25 0 6 0;
diff --git a/l2ork_addons/rjlib/rj/e_pitchshift-help.pd b/l2ork_addons/rjlib/rj/e_pitchshift-help.pd
new file mode 100644
index 000000000..c732c7470
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_pitchshift-help.pd
@@ -0,0 +1,15 @@
+#N canvas 579 259 581 342 10;
+#X obj 77 120 rj/e_pitchshift;
+#X obj 77 91 osc~ 220;
+#X obj 76 150 *~ 0.1;
+#X msg 178 96 pitch \$1;
+#X floatatom 179 75 5 0 0 0 - - -;
+#X obj 60 190 soundoutput;
+#X text 221 75 desired pitch shift in semitones;
+#X text 29 18 pitchshift: shift pitch of incoming signal;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 2 0 5 0;
+#X connect 2 0 5 1;
+#X connect 3 0 0 1;
+#X connect 4 0 3 0;
diff --git a/l2ork_addons/rjlib/rj/e_pitchshift.pd b/l2ork_addons/rjlib/rj/e_pitchshift.pd
new file mode 100644
index 000000000..3740591d7
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_pitchshift.pd
@@ -0,0 +1,131 @@
+#N canvas 300 369 721 432 10;
+#N canvas 575 364 759 580 guts 1;
+#X floatatom 230 85 0 0 0 0 - - -;
+#X obj 286 395 *~;
+#X obj 383 272 line~;
+#X floatatom 340 86 0 0 0 0 - - -;
+#X text 68 9 PITCH SHIFTER;
+#X obj 383 246 pack 0 200;
+#X obj 223 139 exp;
+#X floatatom 223 160 6 0 0 0 - - -;
+#X obj 224 238 /;
+#X obj 276 183 * 0.001;
+#X obj 518 361 line~;
+#X obj 518 336 pack 0 200;
+#X floatatom 518 285 0 0 0 0 - - -;
+#X obj 286 421 +~;
+#X obj 223 447 cos~;
+#X obj 223 474 *~;
+#X obj 291 522 +~;
+#X obj 382 367 wrap~;
+#X obj 445 400 *~;
+#X obj 445 433 +~;
+#X obj 382 460 cos~;
+#X obj 382 481 *~;
+#X obj 423 38 loadbang;
+#X obj 277 204 t b f;
+#X floatatom 224 259 6 0 0 0 - - -;
+#X obj 382 346 +~ 0.5;
+#X obj 223 395 -~ 0.5;
+#X obj 223 421 *~ 0.5;
+#X obj 382 399 -~ 0.5;
+#X obj 382 432 *~ 0.5;
+#X obj 223 181 - 1;
+#X obj 230 115 * 0.05776;
+#X obj 224 201 * -1;
+#X text 262 141 speed;
+#X text 262 148 change;
+#X text 377 83 <--window (msec);
+#X text 259 231 tape head;
+#X obj 223 315 phasor~;
+#X obj 518 312 max 1.5;
+#X text 521 45 delay;
+#X text 518 63 (msec);
+#X obj 340 113 max 1;
+#X text 260 244 rotation freq;
+#X obj 230 59 inlet;
+#X text 228 41 transposition;
+#X obj 340 60 inlet;
+#X text 337 42 windowsize;
+#X obj 37 89 delwrite~ \$0-del 5000;
+#X obj 286 447 vd~ \$0-del;
+#X obj 445 462 vd~ \$0-del;
+#X obj 291 546 outlet~;
+#X obj 37 58 inlet~;
+#X obj 518 86 inlet;
+#X msg 423 60 100;
+#X msg 554 199 1.5;
+#X obj 223 294 line~;
+#X msg 224 275 \$1 30;
+#X connect 0 0 31 0;
+#X connect 1 0 13 0;
+#X connect 2 0 1 1;
+#X connect 2 0 18 1;
+#X connect 3 0 41 0;
+#X connect 5 0 2 0;
+#X connect 6 0 7 0;
+#X connect 7 0 30 0;
+#X connect 8 0 24 0;
+#X connect 9 0 23 0;
+#X connect 10 0 13 1;
+#X connect 10 0 19 1;
+#X connect 11 0 10 0;
+#X connect 12 0 38 0;
+#X connect 13 0 48 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 50 0;
+#X connect 17 0 18 0;
+#X connect 17 0 28 0;
+#X connect 18 0 19 0;
+#X connect 19 0 49 0;
+#X connect 20 0 21 0;
+#X connect 21 0 16 1;
+#X connect 22 0 53 0;
+#X connect 22 0 54 0;
+#X connect 23 0 8 0;
+#X connect 23 1 8 1;
+#X connect 24 0 56 0;
+#X connect 25 0 17 0;
+#X connect 26 0 27 0;
+#X connect 27 0 14 0;
+#X connect 28 0 29 0;
+#X connect 29 0 20 0;
+#X connect 30 0 32 0;
+#X connect 31 0 6 0;
+#X connect 32 0 8 0;
+#X connect 37 0 1 0;
+#X connect 37 0 26 0;
+#X connect 37 0 25 0;
+#X connect 38 0 11 0;
+#X connect 41 0 9 0;
+#X connect 41 0 5 0;
+#X connect 43 0 0 0;
+#X connect 45 0 3 0;
+#X connect 48 0 15 1;
+#X connect 49 0 21 1;
+#X connect 51 0 47 0;
+#X connect 52 0 12 0;
+#X connect 53 0 3 0;
+#X connect 54 0 12 0;
+#X connect 55 0 37 0;
+#X connect 56 0 55 0;
+#X restore 78 148 pd guts;
+#X obj 78 46 inlet~;
+#X obj 79 201 outlet~;
+#X obj 230 45 inlet;
+#X obj 276 45 rjloader e_pitchshift-\$1 \$0;
+#X obj 231 78 rjdispatch \$0 pitch;
+#X obj 232 104 rjdispatch \$0 delay;
+#X obj 232 129 rjdispatch \$0 size;
+#X obj 94 69 r \$0-pitch;
+#X obj 124 120 r \$0-delay;
+#X obj 108 94 r \$0-size;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 3 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 8 0 0 1;
+#X connect 9 0 0 3;
+#X connect 10 0 0 2;
diff --git a/l2ork_addons/rjlib/rj/e_reslop-help.pd b/l2ork_addons/rjlib/rj/e_reslop-help.pd
new file mode 100644
index 000000000..a68040d28
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_reslop-help.pd
@@ -0,0 +1,47 @@
+#N canvas 66 126 1037 545 10;
+#X obj 132 187 vline~;
+#X obj 150 209 noise~;
+#X obj 131 231 *~;
+#X obj 129 454 soundoutput;
+#X obj 375 153 vsl 15 100 0 100 0 0 empty empty q_(peakiness) 0 -9
+1 10 -262144 -1 -1 0 1;
+#X obj 132 134 bng 24 250 50 0 empty empty empty 17 7 0 10 -4034 -1
+-1;
+#X msg 132 162 0.8 10 \, 0 20 10;
+#X floatatom 392 283 5 0 0 0 - - -;
+#X obj 260 152 vsl 15 128 0 100 0 0 empty empty lowpass_frequency 0
+-9 1 10 -262144 -1 -1 0 1;
+#X obj 260 293 mtof;
+#X floatatom 274 316 8 0 0 0 - - -;
+#X obj 132 84 r \$0-trigger;
+#X obj 132 108 bang;
+#X obj 453 277 hsl 50 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X floatatom 450 297 5 0 0 0 - - -;
+#X msg 450 314 dry \$1;
+#X text 451 334 default is dry=0 i.e. fully wet;
+#X obj 130 397 e_reslop mylop 2000;
+#X msg 260 344 freq \$1;
+#X text 35 39 Resonant lowpass filter.;
+#X text 25 13 e_reslop;
+#X text 35 54 use as: e_reslop <NAME> <default freq>;
+#X msg 374 313 q \$1;
+#X connect 0 0 2 0;
+#X connect 1 0 2 1;
+#X connect 2 0 17 0;
+#X connect 4 0 22 0;
+#X connect 4 0 7 0;
+#X connect 5 0 6 0;
+#X connect 6 0 0 0;
+#X connect 8 0 9 0;
+#X connect 9 0 18 0;
+#X connect 9 0 10 0;
+#X connect 11 0 12 0;
+#X connect 12 0 5 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 17 1;
+#X connect 17 0 3 0;
+#X connect 17 0 3 1;
+#X connect 18 0 17 1;
+#X connect 22 0 17 1;
diff --git a/l2ork_addons/rjlib/rj/e_reslop.pd b/l2ork_addons/rjlib/rj/e_reslop.pd
new file mode 100644
index 000000000..c7313dd8d
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_reslop.pd
@@ -0,0 +1,42 @@
+#N canvas 588 25 852 486 10;
+#X obj 117 40 inlet~;
+#X obj 97 440 outlet~;
+#X obj 542 66 inlet;
+#X obj 98 418 c_xfade;
+#X msg 143 396 \$1 10;
+#X obj 144 375 r \$0-dry;
+#X obj 542 135 rjdispatch \$0 dry;
+#X obj 542 91 rjdispatch \$0 freq;
+#X obj 308 62 r \$0-freq;
+#X obj 204 132 vcf~ 10;
+#X obj 277 252 * 1;
+#X obj 261 219 * 1;
+#X obj 290 280 * 1;
+#X obj 593 66 rjloader e_reslop-\$1 \$0;
+#X obj 542 112 rjdispatch \$0 q;
+#X obj 383 61 r \$0-q;
+#X obj 209 244 lop~ \$2;
+#X obj 221 278 lop~ \$2;
+#X obj 237 312 lop~ \$2;
+#X obj 227 109 sig~ \$2;
+#X connect 0 0 3 1;
+#X connect 0 0 9 0;
+#X connect 2 0 7 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 2;
+#X connect 5 0 4 0;
+#X connect 7 0 14 0;
+#X connect 8 0 10 0;
+#X connect 8 0 11 0;
+#X connect 8 0 12 0;
+#X connect 8 0 19 0;
+#X connect 9 0 16 0;
+#X connect 10 0 17 1;
+#X connect 11 0 16 1;
+#X connect 12 0 18 1;
+#X connect 14 0 6 0;
+#X connect 15 0 9 2;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 18 0 3 0;
+#X connect 19 0 9 1;
diff --git a/l2ork_addons/rjlib/rj/e_reverb-help.pd b/l2ork_addons/rjlib/rj/e_reverb-help.pd
new file mode 100644
index 000000000..ba2d78197
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_reverb-help.pd
@@ -0,0 +1,42 @@
+#N canvas 649 84 667 495 10;
+#X obj 56 347 dac~;
+#X obj 56 225 osc~ 220;
+#X obj 56 257 *~;
+#X obj 56 291 rj/e_reverb rev1;
+#X msg 263 236 amp \$1;
+#X msg 335 237 hall \$1;
+#X msg 260 426 freq \$1;
+#X msg 372 427 damp \$1;
+#X obj 264 111 vsl 15 100 0 100 0 0 empty empty amplitude 0 -9 0 10
+-262144 -1 -1 9900 1;
+#X floatatom 264 217 5 0 0 0 - - -;
+#X obj 335 112 vsl 15 100 0 100 0 0 empty empty hall_(room_size) 0
+-9 0 10 -262144 -1 -1 800 1;
+#X floatatom 335 218 5 0 0 0 - - -;
+#X obj 261 300 vsl 15 100 0 5000 0 0 empty empty filter_freq 0 -9 0
+10 -262144 -1 -1 7100 1;
+#X floatatom 261 406 5 0 0 0 - - -;
+#X obj 372 301 vsl 15 100 0 100 0 0 empty empty damping 0 -9 0 10 -262144
+-1 -1 9800 1;
+#X floatatom 372 407 5 0 0 0 - - -;
+#X text 53 36 Simple and cheap reverb module;
+#X obj 121 225 vline~;
+#X msg 120 200 1 5 \, 0 100 5;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X connect 3 1 0 1;
+#X connect 4 0 3 1;
+#X connect 5 0 3 1;
+#X connect 6 0 3 1;
+#X connect 7 0 3 1;
+#X connect 8 0 9 0;
+#X connect 9 0 4 0;
+#X connect 10 0 11 0;
+#X connect 11 0 5 0;
+#X connect 12 0 13 0;
+#X connect 13 0 6 0;
+#X connect 14 0 15 0;
+#X connect 15 0 7 0;
+#X connect 17 0 2 1;
+#X connect 18 0 17 0;
diff --git a/l2ork_addons/rjlib/rj/e_reverb.pd b/l2ork_addons/rjlib/rj/e_reverb.pd
new file mode 100644
index 000000000..b946819ac
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_reverb.pd
@@ -0,0 +1,258 @@
+#N canvas 363 269 711 408 10;
+#N canvas 396 144 957 645 guts 0;
+#X obj 161 497 +~;
+#X obj 520 105 inlet;
+#X obj 184 407 *~;
+#X obj 486 412 *~;
+#X obj 285 412 *~;
+#X obj 387 412 *~;
+#X obj 443 546 -~;
+#X obj 364 545 -~;
+#X obj 239 537 +~;
+#X obj 161 534 +~;
+#X obj 162 444 +~;
+#X obj 262 440 +~;
+#X obj 464 501 -~;
+#X obj 387 499 +~;
+#X obj 239 500 -~;
+#X obj 452 105 inlet;
+#X obj 609 429 line~;
+#X obj 509 374 line~;
+#X obj 16 121 delread~ \$0-del1 58.6435;
+#X obj 94 143 delread~ \$0-del2 69.4325;
+#X obj 176 165 delread~ \$0-del3 74.5234;
+#X obj 258 189 delread~ \$0-del4 86.1244;
+#X obj 530 500 *~;
+#X obj 599 501 *~;
+#X obj 161 641 delwrite~ \$0-del1 58.6435;
+#X obj 240 617 delwrite~ \$0-del2 69.4325;
+#X obj 365 595 delwrite~ \$0-del3 74.5234;
+#X obj 444 573 delwrite~ \$0-del4 86.1244;
+#X obj 609 357 dbtorms;
+#X obj 609 403 pack 0 30;
+#X obj 520 211 pack 0 50;
+#X obj 9 390 inlet~;
+#X obj 530 525 outlet~;
+#X obj 599 525 outlet~;
+#X obj 520 187 / 200;
+#X obj 520 162 clip 0 100;
+#X obj 52 236 lop~;
+#X obj 625 143 f \$3;
+#X obj 696 143 f \$4;
+#X obj 367 106 loadbang;
+#X obj 625 167 moses 1;
+#X msg 631 193 3000;
+#X obj 705 193 clip 0 100;
+#N canvas 345 88 355 597 early-reflect 0;
+#X obj 119 477 delread~ \$0-ref6 13.645;
+#X obj 119 453 delwrite~ \$0-ref6 13.645;
+#X obj 106 400 delread~ \$0-ref5 16.364;
+#X obj 106 376 delwrite~ \$0-ref5 16.364;
+#X obj 102 324 delread~ \$0-ref4 19.392;
+#X obj 102 300 delwrite~ \$0-ref4 19.392;
+#X obj 106 247 delread~ \$0-ref3 25.796;
+#X obj 106 223 delwrite~ \$0-ref3 25.796;
+#X obj 107 169 delread~ \$0-ref2 43.5337;
+#X obj 107 145 delwrite~ \$0-ref2 43.5337;
+#X obj 110 90 delread~ \$0-ref1 75.2546;
+#X obj 84 119 -~;
+#X obj 49 119 +~;
+#X obj 50 195 +~;
+#X obj 85 196 -~;
+#X obj 84 275 -~;
+#X obj 49 274 +~;
+#X obj 82 349 -~;
+#X obj 48 350 +~;
+#X obj 83 428 -~;
+#X obj 49 428 +~;
+#X obj 65 7 inlet~;
+#X obj 110 66 delwrite~ \$0-ref1 75.2546;
+#X obj 49 508 outlet~;
+#X obj 119 507 outlet~;
+#X connect 0 0 24 0;
+#X connect 2 0 20 1;
+#X connect 2 0 19 1;
+#X connect 4 0 18 1;
+#X connect 4 0 17 1;
+#X connect 6 0 16 1;
+#X connect 6 0 15 1;
+#X connect 8 0 13 1;
+#X connect 8 0 14 1;
+#X connect 10 0 12 1;
+#X connect 10 0 11 1;
+#X connect 11 0 9 0;
+#X connect 12 0 14 0;
+#X connect 12 0 13 0;
+#X connect 13 0 16 0;
+#X connect 13 0 15 0;
+#X connect 14 0 7 0;
+#X connect 15 0 5 0;
+#X connect 16 0 18 0;
+#X connect 16 0 17 0;
+#X connect 17 0 3 0;
+#X connect 18 0 20 0;
+#X connect 18 0 19 0;
+#X connect 19 0 1 0;
+#X connect 20 0 23 0;
+#X connect 21 0 12 0;
+#X connect 21 0 11 0;
+#X connect 21 0 22 0;
+#X restore 9 416 pd early-reflect;
+#X obj 618 216 f;
+#X obj 618 105 inlet;
+#X obj 696 109 inlet;
+#X obj 705 216 f;
+#X obj 705 239 * 0.01;
+#X obj 705 263 pack 0 50;
+#X obj 705 287 line~;
+#X obj 29 269 -~;
+#X obj 28 300 *~;
+#X obj 16 331 +~;
+#X obj 132 240 lop~;
+#X obj 106 274 -~;
+#X obj 105 309 *~;
+#X obj 95 333 +~;
+#X obj 214 245 lop~;
+#X obj 188 273 -~;
+#X obj 187 314 *~;
+#X obj 176 339 +~;
+#X obj 308 249 lop~;
+#X obj 281 274 -~;
+#X obj 281 318 *~;
+#X obj 258 342 +~;
+#X obj 609 379 * 0.125;
+#X text 403 10 control inlets:;
+#X text 400 29 1: output level \, dB \, 0-100;
+#X text 399 79 4: high frequency damping \, 0-100;
+#X text 400 62 3: crossover frequency in Hz. (3000 default);
+#X text 400 45 2: liveness \, 0-100 \, usually between 85 and 100;
+#X obj 452 137 f 80;
+#X obj 520 138 f 80;
+#X connect 0 0 9 0;
+#X connect 0 0 7 0;
+#X connect 1 0 73 0;
+#X connect 2 0 10 1;
+#X connect 3 0 12 1;
+#X connect 3 0 13 1;
+#X connect 4 0 11 1;
+#X connect 5 0 13 0;
+#X connect 5 0 12 0;
+#X connect 6 0 27 0;
+#X connect 7 0 26 0;
+#X connect 8 0 25 0;
+#X connect 9 0 24 0;
+#X connect 10 0 14 0;
+#X connect 10 0 0 0;
+#X connect 10 0 22 0;
+#X connect 11 0 0 1;
+#X connect 11 0 14 1;
+#X connect 11 0 23 0;
+#X connect 12 0 8 1;
+#X connect 12 0 6 1;
+#X connect 13 0 9 1;
+#X connect 13 0 7 1;
+#X connect 14 0 8 0;
+#X connect 14 0 6 0;
+#X connect 15 0 72 0;
+#X connect 16 0 22 1;
+#X connect 16 0 23 1;
+#X connect 17 0 4 1;
+#X connect 17 0 2 1;
+#X connect 17 0 5 1;
+#X connect 17 0 3 1;
+#X connect 18 0 36 0;
+#X connect 18 0 51 1;
+#X connect 18 0 53 0;
+#X connect 19 0 54 0;
+#X connect 19 0 55 1;
+#X connect 19 0 57 0;
+#X connect 20 0 61 0;
+#X connect 20 0 58 0;
+#X connect 20 0 59 1;
+#X connect 21 0 65 0;
+#X connect 21 0 63 1;
+#X connect 21 0 62 0;
+#X connect 22 0 32 0;
+#X connect 23 0 33 0;
+#X connect 28 0 66 0;
+#X connect 29 0 16 0;
+#X connect 30 0 17 0;
+#X connect 31 0 43 0;
+#X connect 34 0 30 0;
+#X connect 35 0 34 0;
+#X connect 36 0 51 0;
+#X connect 37 0 40 0;
+#X connect 38 0 42 0;
+#X connect 39 0 37 0;
+#X connect 39 0 38 0;
+#X connect 39 0 72 0;
+#X connect 39 0 73 0;
+#X connect 40 0 41 0;
+#X connect 40 1 44 0;
+#X connect 41 0 44 0;
+#X connect 42 0 47 0;
+#X connect 43 0 10 0;
+#X connect 43 1 11 0;
+#X connect 44 0 36 1;
+#X connect 44 0 54 1;
+#X connect 44 0 58 1;
+#X connect 44 0 62 1;
+#X connect 45 0 44 0;
+#X connect 46 0 38 0;
+#X connect 47 0 48 0;
+#X connect 48 0 49 0;
+#X connect 49 0 50 0;
+#X connect 50 0 52 1;
+#X connect 50 0 56 1;
+#X connect 50 0 60 1;
+#X connect 50 0 64 1;
+#X connect 51 0 52 0;
+#X connect 52 0 53 1;
+#X connect 53 0 2 0;
+#X connect 54 0 55 0;
+#X connect 55 0 56 0;
+#X connect 56 0 57 1;
+#X connect 57 0 4 0;
+#X connect 58 0 59 0;
+#X connect 59 0 60 0;
+#X connect 60 0 61 1;
+#X connect 61 0 5 0;
+#X connect 62 0 63 0;
+#X connect 63 0 64 0;
+#X connect 64 0 65 1;
+#X connect 65 0 3 0;
+#X connect 66 0 29 0;
+#X connect 72 0 28 0;
+#X connect 73 0 35 0;
+#X restore 60 154 pd guts;
+#X text 176 31 This is Millers rev2 \, wrapped for rjlib;
+#X obj 50 271 outlet~;
+#X obj 106 271 outlet~;
+#X obj 201 130 inlet;
+#X obj 202 153 rjdispatch \$0 amp;
+#X obj 201 176 rjdispatch \$0 hall;
+#X obj 345 63 rjloader e_reverb-\$1 \$0;
+#X obj 345 86 loadbang;
+#X obj 201 198 rjdispatch \$0 freq;
+#X obj 201 219 rjdispatch \$0 damp;
+#X obj 72 59 r \$0-amp;
+#X obj 84 79 r \$0-hall;
+#X obj 95 100 r \$0-freq;
+#X obj 116 119 r \$0-damp;
+#X obj 59 28 inlet~;
+#X obj 185 78 print;
+#X msg 345 106 amp 80 \, hall 80 \, freq 6000 \, damp 60;
+#X connect 0 0 2 0;
+#X connect 0 1 3 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 9 0;
+#X connect 8 0 17 0;
+#X connect 9 0 10 0;
+#X connect 11 0 0 1;
+#X connect 11 0 16 0;
+#X connect 12 0 0 2;
+#X connect 13 0 0 3;
+#X connect 14 0 0 4;
+#X connect 15 0 0 0;
+#X connect 17 0 5 0;
diff --git a/l2ork_addons/rjlib/rj/e_softclip-help.pd b/l2ork_addons/rjlib/rj/e_softclip-help.pd
new file mode 100644
index 000000000..b87fe3fde
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_softclip-help.pd
@@ -0,0 +1,54 @@
+#N canvas 277 61 759 541 10;
+#X obj 87 241 s_guitar myguit;
+#X obj 223 283 osc~;
+#X msg 365 289 drive \$1;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-scope 441 float 2;
+#X coords 0 1 441 -1 200 140 1;
+#X restore 485 289 graph;
+#X obj 318 425 tabwrite~ \$0-scope;
+#X obj 335 375 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 223 251 mtof;
+#X floatatom 223 230 5 0 0 0 - - -;
+#X obj 185 407 soundoutput;
+#X obj 335 397 metro 100;
+#X obj 261 303 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 223 302 *~ 0;
+#X floatatom 87 194 5 0 0 0 - - -;
+#X obj 342 209 hsl 128 15 0 1 0 0 empty empty wet____________dry 5
+6 1 10 -262144 -1 -1 0 1;
+#X msg 339 237 dry \$1;
+#X obj 223 324 e_softclip mydist;
+#X text 109 15 e_softclip;
+#X text 159 44 Clips incoming signal with a tanh-based waveshaper.
+;
+#X text 157 68 Args: NAME;
+#X text 158 86 Inlet0~: signal to clip;
+#X text 158 107 Inlet1: dry 0...1: dry/wet factor. 0 (default) is complete
+wet.;
+#X text 155 144 Inlet1: drive: additional amplification;
+#X obj 87 213 mtof;
+#X floatatom 365 265 5 0 0 0 - - -;
+#X obj 189 185 loadbang;
+#X msg 189 208 feedback 0.98;
+#X connect 0 0 15 0;
+#X connect 1 0 11 0;
+#X connect 2 0 15 1;
+#X connect 5 0 9 0;
+#X connect 6 0 1 0;
+#X connect 7 0 6 0;
+#X connect 9 0 4 0;
+#X connect 10 0 11 1;
+#X connect 11 0 15 0;
+#X connect 12 0 22 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 1;
+#X connect 15 0 4 0;
+#X connect 15 0 8 0;
+#X connect 15 0 8 1;
+#X connect 22 0 0 0;
+#X connect 23 0 2 0;
+#X connect 24 0 25 0;
+#X connect 25 0 0 1;
diff --git a/l2ork_addons/rjlib/rj/e_softclip.pd b/l2ork_addons/rjlib/rj/e_softclip.pd
new file mode 100644
index 000000000..a34edec82
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_softclip.pd
@@ -0,0 +1,93 @@
+#N canvas 452 285 719 521 10;
+#X obj 126 81 inlet~;
+#X obj 127 452 outlet~;
+#N canvas 369 269 805 574 mktanh 0;
+#N canvas 0 0 450 300 tanh 0;
+#X obj 105 29 inlet;
+#X obj 105 119 t a a;
+#X obj 105 73 * 2;
+#X obj 105 94 exp;
+#X obj 105 172 / 1;
+#X obj 105 199 outlet;
+#X obj 105 148 - 1;
+#X obj 137 148 + 1;
+#X text 289 97 exp(2x) - 1;
+#X text 290 125 exp(2x) + 1;
+#X text 240 109 tanh = -----------;
+#X obj 105 51 f;
+#X connect 0 0 11 0;
+#X connect 1 0 6 0;
+#X connect 1 1 7 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 5 0;
+#X connect 6 0 4 0;
+#X connect 7 0 4 1;
+#X connect 11 0 2 0;
+#X restore 82 319 pd tanh;
+#X msg 467 201 6.28319;
+#X obj 82 292 * 6.28319;
+#X obj 82 138 until;
+#X obj 82 198 t a a;
+#X obj 112 168 + 1;
+#X obj 82 168 f 0;
+#X msg 127 136 0;
+#X obj 82 108 t f b;
+#X obj 82 348 tabwrite \$0-tanh;
+#X obj 82 262 - 1;
+#X obj 82 56 loadbang;
+#X text 466 179 2PI;
+#X obj 82 374 table \$0-tanh 5000;
+#X msg 82 84 5000;
+#X obj 82 237 / 2500;
+#X connect 0 0 9 0;
+#X connect 2 0 0 0;
+#X connect 3 0 6 0;
+#X connect 4 0 15 0;
+#X connect 4 1 9 1;
+#X connect 5 0 6 1;
+#X connect 6 0 5 0;
+#X connect 6 0 4 0;
+#X connect 7 0 6 1;
+#X connect 8 0 3 0;
+#X connect 8 1 7 0;
+#X connect 10 0 2 0;
+#X connect 11 0 14 0;
+#X connect 14 0 8 0;
+#X connect 15 0 10 0;
+#X restore 257 295 pd mktanh;
+#X obj 126 295 tabread4~ \$0-tanh;
+#X obj 376 55 inlet;
+#X obj 376 87 rjdispatch \$0 drive;
+#X obj 212 66 r \$0-drive;
+#X obj 212 129 line~;
+#X obj 293 65 loadbang;
+#X obj 127 145 *~;
+#X obj 212 93 pack 0 10;
+#X obj 125 231 +~ 2500;
+#X obj 126 187 *~ 1000;
+#X obj 376 109 rjdispatch \$0 dry;
+#X obj 299 337 r \$0-dry;
+#X obj 299 362 pack 0 10;
+#X obj 146 112 sig~ 1;
+#X msg 293 85 0;
+#X obj 423 55 rjloader e_softclip-\$1 \$0;
+#X text 93 30 clipping using tanh-waveshaper;
+#X obj 127 391 c_xfade e_softclip_dry-\$1;
+#X connect 0 0 9 0;
+#X connect 0 0 20 1;
+#X connect 3 0 20 0;
+#X connect 4 0 5 0;
+#X connect 5 0 13 0;
+#X connect 6 0 10 0;
+#X connect 7 0 9 1;
+#X connect 8 0 17 0;
+#X connect 9 0 12 0;
+#X connect 10 0 7 0;
+#X connect 11 0 3 0;
+#X connect 12 0 11 0;
+#X connect 14 0 15 0;
+#X connect 15 0 20 2;
+#X connect 16 0 9 1;
+#X connect 17 0 7 0;
+#X connect 20 0 1 0;
diff --git a/l2ork_addons/rjlib/rj/e_vocoder-help.pd b/l2ork_addons/rjlib/rj/e_vocoder-help.pd
new file mode 100644
index 000000000..af8832163
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_vocoder-help.pd
@@ -0,0 +1,136 @@
+#N canvas 303 130 782 642 10;
+#X obj 141 494 e_vocoder myvocoder;
+#X msg 271 462 squelch \$1;
+#X floatatom 271 438 5 0 0 0 - - -;
+#X text 298 497 inlets: <filter input~> <control source~> <methods>
+;
+#X obj 105 538 soundoutput;
+#X text 45 23 e_vocoder / timbre stamp;
+#N canvas 0 0 512 416 play 0;
+#X obj 93 86 inlet;
+#X obj 93 125 b;
+#X obj 93 187 symbol;
+#X obj 93 158 openpanel;
+#X obj 223 103 inlet;
+#X obj 93 258 readsf~;
+#X obj 162 308 outlet;
+#X obj 93 308 outlet~;
+#X obj 170 133 b;
+#X obj 170 154 spigot 1;
+#X msg 93 216 open \$1 \, 1;
+#X obj 156 87 inlet;
+#X obj 129 126 b;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X connect 2 0 10 0;
+#X connect 3 0 2 0;
+#X connect 4 0 9 1;
+#X connect 5 0 7 0;
+#X connect 5 1 6 0;
+#X connect 5 1 8 0;
+#X connect 8 0 9 0;
+#X connect 9 0 2 0;
+#X connect 10 0 5 0;
+#X connect 11 0 12 0;
+#X connect 12 0 2 0;
+#X restore 207 283 pd play;
+#X obj 253 262 tgl 15 0 empty empty loop 17 7 1 10 -262144 -1 -1 0
+1;
+#X obj 207 218 bng 15 250 50 0 empty empty load_sample 17 7 1 10 -4034
+-1 -1;
+#X obj 230 238 bng 15 250 50 0 empty empty play_it_again_Sam 17 7 1
+10 -4034 -1 -1;
+#N canvas 0 0 660 424 chord 0;
+#X obj 92 147 -~ 0.5;
+#X obj 92 196 clip~ -0.5 0.5;
+#X obj 92 219 cos~;
+#X obj 91 302 hip~ 5;
+#X obj 91 365 outlet~;
+#X obj 92 172 *~ 3;
+#X obj 92 124 phasor~ 220;
+#X obj 221 147 -~ 0.5;
+#X obj 221 196 clip~ -0.5 0.5;
+#X obj 221 219 cos~;
+#X obj 221 172 *~ 3;
+#X obj 356 150 -~ 0.5;
+#X obj 356 199 clip~ -0.5 0.5;
+#X obj 356 222 cos~;
+#X obj 356 175 *~ 3;
+#X obj 221 124 phasor~ 251;
+#X obj 356 127 phasor~ 281;
+#X obj 91 335 *~ 0.2;
+#X msg 430 76 0;
+#X obj 92 29 inlet;
+#X obj 92 52 unpack 0 0 0;
+#X text 204 32 test sound;
+#X obj 92 79 mtof;
+#X obj 132 81 mtof;
+#X obj 173 81 mtof;
+#X floatatom 237 50 5 0 0 0 - - -;
+#X connect 0 0 5 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 17 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 10 0;
+#X connect 8 0 9 0;
+#X connect 9 0 3 0;
+#X connect 10 0 8 0;
+#X connect 11 0 14 0;
+#X connect 12 0 13 0;
+#X connect 13 0 3 0;
+#X connect 14 0 12 0;
+#X connect 15 0 7 0;
+#X connect 16 0 11 0;
+#X connect 17 0 4 0;
+#X connect 18 0 16 1;
+#X connect 18 0 15 1;
+#X connect 18 0 6 1;
+#X connect 19 0 20 0;
+#X connect 20 0 22 0;
+#X connect 20 1 23 0;
+#X connect 20 2 24 0;
+#X connect 22 0 6 0;
+#X connect 23 0 15 0;
+#X connect 24 0 16 0;
+#X connect 25 0 24 0;
+#X restore 142 452 pd chord;
+#X msg 142 426 40 50 55;
+#X msg 142 406 40 45 59;
+#X msg 142 386 40 49 57;
+#X obj 142 356 select 0 1 2;
+#X obj 142 334 random 3;
+#X text 49 58 This is a Fourier-based "vocoder" (perhaps better called
+a "timbre stamp") like the one the Convolution brothers use. The "control
+source" is analyzed to get its spectral envelope \, which is then stamped
+onto the "filter input" by adjusting the amplitudes of its Fourier
+transform. The "filter input" is first whitened. The best value of
+"squelch" to use depends critically on what kind of sounds are used
+for the filter input and the control source.;
+#X obj 308 285 soundinput;
+#X text 398 285 check with soundinput as well!;
+#X obj 307 320 *~ 0;
+#X obj 353 321 hsl 50 15 0 1 0 0 empty empty volume 5 8 1 10 -4034
+-1 -1 0 1;
+#X connect 0 0 4 0;
+#X connect 0 0 4 1;
+#X connect 1 0 0 2;
+#X connect 2 0 1 0;
+#X connect 6 0 0 1;
+#X connect 6 1 15 0;
+#X connect 7 0 6 2;
+#X connect 8 0 6 0;
+#X connect 9 0 6 1;
+#X connect 10 0 0 0;
+#X connect 11 0 10 0;
+#X connect 12 0 10 0;
+#X connect 13 0 10 0;
+#X connect 14 0 13 0;
+#X connect 14 1 12 0;
+#X connect 14 2 11 0;
+#X connect 15 0 14 0;
+#X connect 17 0 19 0;
+#X connect 17 1 19 0;
+#X connect 19 0 0 1;
+#X connect 20 0 19 1;
diff --git a/l2ork_addons/rjlib/rj/e_vocoder.pd b/l2ork_addons/rjlib/rj/e_vocoder.pd
new file mode 100644
index 000000000..f11f48b3a
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/e_vocoder.pd
@@ -0,0 +1,156 @@
+#N canvas 373 183 808 432 10;
+#N canvas 147 0 795 617 fft-analysis 0;
+#X obj 94 511 *~;
+#X obj 55 511 *~;
+#X obj 413 356 *~;
+#X obj 372 356 *~;
+#X obj 372 379 +~;
+#X obj 54 183 *~;
+#X obj 54 158 inlet~;
+#X obj 54 206 rfft~;
+#X obj 54 560 *~;
+#X obj 141 245 *~;
+#X obj 372 333 rfft~;
+#X obj 54 535 rifft~;
+#X obj 54 583 outlet~;
+#X obj 107 245 *~;
+#X obj 107 268 +~;
+#X text 458 408 modulus;
+#X obj 107 420 *~;
+#X obj 600 13 block~ 1024 4;
+#X obj 107 398 clip~;
+#X obj 87 184 tabreceive~ \$0-hann;
+#X obj 107 294 +~ 1e-20;
+#X obj 108 480 *~ 0.00065;
+#X obj 87 560 tabreceive~ \$0-hann;
+#X obj 373 307 *~;
+#X obj 373 282 inlet~;
+#X obj 406 308 tabreceive~ \$0-hann;
+#X obj 107 321 q8_rsqrt~;
+#X obj 372 402 q8_sqrt~;
+#X text 458 425 of control;
+#X text 456 442 amplitude;
+#X text 196 248 reciprocal;
+#X text 199 267 modulus of;
+#X text 195 287 filter input;
+#X text 196 306 amplitude;
+#X text 115 159 filter input;
+#X text 438 282 control source;
+#X text 434 332 Fourier transform;
+#X text 28 17 Internal workings of the timbre stamping algorithm. First
+the "filter input" is treated as in the compressor patch \, multiplying
+each channel amplitude by one over its modulus (but limited by the
+"squelch" parameter.) It is then multiplied by the modulus of the channel
+amplitude for the control source (which is Fourier analyzed in parallel
+with the filter input.);
+#X text 145 422 multiply the two amplitude;
+#X text 143 439 factors (for compression;
+#X text 145 455 and to apply new timbre);
+#X obj 148 346 r \$0-squelch;
+#X obj 170 388 *;
+#X obj 170 366 t a a;
+#X obj 170 409 * 0.01;
+#X connect 0 0 11 1;
+#X connect 1 0 11 0;
+#X connect 2 0 4 1;
+#X connect 3 0 4 0;
+#X connect 4 0 27 0;
+#X connect 5 0 7 0;
+#X connect 6 0 5 0;
+#X connect 7 0 13 0;
+#X connect 7 0 13 1;
+#X connect 7 0 1 0;
+#X connect 7 1 9 0;
+#X connect 7 1 9 1;
+#X connect 7 1 0 0;
+#X connect 8 0 12 0;
+#X connect 9 0 14 1;
+#X connect 10 0 3 0;
+#X connect 10 0 3 1;
+#X connect 10 1 2 0;
+#X connect 10 1 2 1;
+#X connect 11 0 8 0;
+#X connect 13 0 14 0;
+#X connect 14 0 20 0;
+#X connect 16 0 21 0;
+#X connect 18 0 16 0;
+#X connect 19 0 5 1;
+#X connect 20 0 26 0;
+#X connect 21 0 0 1;
+#X connect 21 0 1 1;
+#X connect 22 0 8 1;
+#X connect 23 0 10 0;
+#X connect 24 0 23 0;
+#X connect 25 0 23 1;
+#X connect 26 0 18 0;
+#X connect 27 0 16 1;
+#X connect 41 0 43 0;
+#X connect 42 0 44 0;
+#X connect 43 0 42 0;
+#X connect 43 1 42 1;
+#X connect 44 0 18 2;
+#X restore 110 211 pd fft-analysis;
+#N canvas 0 110 565 454 hann-window 0;
+#X obj 378 165 osc~;
+#X obj 378 190 *~ -0.5;
+#X obj 378 214 +~ 0.5;
+#X obj 331 247 tabwrite~ \$0-hann;
+#X obj 38 173 /;
+#X obj 127 142 samplerate~;
+#X obj 177 204 swap;
+#X obj 177 228 /;
+#X obj 49 201 * 1000;
+#X obj 38 115 t f b f;
+#X msg 173 92 resize \$1;
+#X obj 173 116 s \$0-hann;
+#X msg 382 130 0;
+#X obj 330 131 t f b;
+#X text 15 8 calculate Hann window table (variable window size) and
+constants window-hz (fundamental frequency of analysis) \, window-sec
+and window-msec (analysis window size in seconds and msec).;
+#X obj 330 274 table \$0-hann 1024;
+#X obj 49 228 s \$0-window-msec;
+#X obj 38 251 s \$0-window-sec;
+#X obj 38 88 r \$0-window-size;
+#X obj 177 252 s \$0-window-hz;
+#X obj 330 105 r \$0-window-hz;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 4 0 8 0;
+#X connect 4 0 17 0;
+#X connect 5 0 4 1;
+#X connect 5 0 6 1;
+#X connect 6 0 7 0;
+#X connect 6 1 7 1;
+#X connect 7 0 19 0;
+#X connect 8 0 16 0;
+#X connect 9 0 4 0;
+#X connect 9 0 6 0;
+#X connect 9 1 5 0;
+#X connect 9 2 10 0;
+#X connect 10 0 11 0;
+#X connect 12 0 0 1;
+#X connect 13 0 0 0;
+#X connect 13 1 3 0;
+#X connect 13 1 12 0;
+#X connect 18 0 9 0;
+#X connect 20 0 13 0;
+#X restore 243 212 pd hann-window;
+#X obj 423 130 rjdispatch \$0 squelch;
+#X obj 423 103 inlet;
+#X obj 479 103 rjloader e_vocoder-\$1 \$0;
+#X obj 545 257 loadbang;
+#X obj 545 279 f \$0;
+#X msg 545 300 \; pd dsp 1 \; \$1-window-size 1024 \; \$1-squelch 30
+\;;
+#X obj 111 186 inlet~;
+#X obj 212 186 inlet~;
+#X obj 109 238 outlet~;
+#X text 114 75 Pd vocoder/timbre stamp;
+#X connect 0 0 10 0;
+#X connect 3 0 2 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 8 0 0 0;
+#X connect 9 0 0 1;
diff --git a/l2ork_addons/rjlib/rj/jon~.pd b/l2ork_addons/rjlib/rj/jon~.pd
new file mode 100644
index 000000000..1952ee901
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/jon~.pd
@@ -0,0 +1,919 @@
+#N canvas 229 105 390 422 12;
+#X obj 24 32 inlet~;
+#X obj 27 282 outlet~;
+#X obj 135 282 outlet~;
+#N canvas 0 166 634 506 input_diffusion 0;
+#X obj 30 60 inlet~;
+#X obj 29 295 outlet~;
+#X obj 337 79 r \$0-input_diffusion1;
+#X obj 336 170 r \$0-input_diffusion2;
+#N canvas 393 17 574 578 allpass 0;
+#X obj 56 127 inlet~;
+#X obj 56 400 +~;
+#X obj 427 232 loadbang;
+#X obj 417 286 t f f;
+#X obj 417 310 *;
+#X obj 417 334 expr 1-$f1;
+#X obj 253 364 *~;
+#X obj 232 394 +~;
+#X obj 114 177 * -1;
+#X obj 88 207 *~;
+#X obj 232 426 outlet~;
+#X obj 417 129 inlet;
+#X obj 114 117 loadbang;
+#X obj 75 365 *~ -1;
+#X obj 201 364 *~ -1;
+#X obj 114 149 f 0.75;
+#X obj 417 262 f 0.75;
+#X obj 56 491 delwrite~ \$0-tap_13_14 200;
+#X obj 252 262 *~ 0.75;
+#X obj 252 53 delread~ \$0-tap_13_14 4.77134;
+#X connect 0 0 1 0;
+#X connect 0 0 9 0;
+#X connect 1 0 17 0;
+#X connect 2 0 16 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 4 0 5 0;
+#X connect 5 0 6 1;
+#X connect 6 0 7 1;
+#X connect 7 0 10 0;
+#X connect 8 0 9 1;
+#X connect 9 0 14 0;
+#X connect 11 0 15 0;
+#X connect 11 0 16 0;
+#X connect 11 0 18 1;
+#X connect 12 0 15 0;
+#X connect 13 0 1 1;
+#X connect 14 0 7 0;
+#X connect 15 0 8 0;
+#X connect 16 0 3 0;
+#X connect 18 0 6 0;
+#X connect 18 0 13 0;
+#X connect 19 0 18 0;
+#X restore 30 99 pd allpass tap_13_14;
+#N canvas 314 10 579 582 allpass 0;
+#X obj 56 127 inlet~;
+#X obj 56 400 +~;
+#X obj 427 232 loadbang;
+#X obj 417 286 t f f;
+#X obj 417 310 *;
+#X obj 417 334 expr 1-$f1;
+#X obj 253 364 *~;
+#X obj 232 394 +~;
+#X obj 114 177 * -1;
+#X obj 88 207 *~;
+#X obj 232 426 outlet~;
+#X obj 417 129 inlet;
+#X obj 114 117 loadbang;
+#X obj 75 365 *~ -1;
+#X obj 201 364 *~ -1;
+#X obj 114 149 f 0.75;
+#X obj 417 262 f 0.75;
+#X obj 252 262 *~ 0.75;
+#X obj 56 491 delwrite~ \$0-tap_19_20 200;
+#X obj 252 53 delread~ \$0-tap_19_20 3.5953;
+#X connect 0 0 1 0;
+#X connect 0 0 9 0;
+#X connect 1 0 18 0;
+#X connect 2 0 16 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 4 0 5 0;
+#X connect 5 0 6 1;
+#X connect 6 0 7 1;
+#X connect 7 0 10 0;
+#X connect 8 0 9 1;
+#X connect 9 0 14 0;
+#X connect 11 0 15 0;
+#X connect 11 0 16 0;
+#X connect 11 0 17 1;
+#X connect 12 0 15 0;
+#X connect 13 0 1 1;
+#X connect 14 0 7 0;
+#X connect 15 0 8 0;
+#X connect 16 0 3 0;
+#X connect 17 0 6 0;
+#X connect 17 0 13 0;
+#X connect 19 0 17 0;
+#X restore 30 135 pd allpass tap_19_20;
+#N canvas 238 0 570 590 allpass 0;
+#X obj 56 127 inlet~;
+#X obj 56 400 +~;
+#X obj 427 232 loadbang;
+#X obj 417 286 t f f;
+#X obj 417 310 *;
+#X obj 417 334 expr 1-$f1;
+#X obj 253 364 *~;
+#X obj 232 394 +~;
+#X obj 114 177 * -1;
+#X obj 88 207 *~;
+#X obj 232 426 outlet~;
+#X obj 417 129 inlet;
+#X obj 114 117 loadbang;
+#X obj 75 365 *~ -1;
+#X obj 201 364 *~ -1;
+#X obj 114 149 f 0.625;
+#X obj 252 262 *~ 0.625;
+#X obj 417 262 f 0.625;
+#X obj 56 491 delwrite~ \$0-tap_15_16 200;
+#X obj 252 53 delread~ \$0-tap_15_16 12.7348;
+#X connect 0 0 1 0;
+#X connect 0 0 9 0;
+#X connect 1 0 18 0;
+#X connect 2 0 17 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 4 0 5 0;
+#X connect 5 0 6 1;
+#X connect 6 0 7 1;
+#X connect 7 0 10 0;
+#X connect 8 0 9 1;
+#X connect 9 0 14 0;
+#X connect 11 0 15 0;
+#X connect 11 0 16 1;
+#X connect 11 0 17 0;
+#X connect 12 0 15 0;
+#X connect 13 0 1 1;
+#X connect 14 0 7 0;
+#X connect 15 0 8 0;
+#X connect 16 0 6 0;
+#X connect 16 0 13 0;
+#X connect 17 0 3 0;
+#X connect 19 0 16 0;
+#X restore 30 190 pd allpass tap_15_16;
+#N canvas 238 0 566 586 allpass 0;
+#X obj 56 127 inlet~;
+#X obj 56 400 +~;
+#X obj 427 232 loadbang;
+#X obj 417 286 t f f;
+#X obj 417 310 *;
+#X obj 417 334 expr 1-$f1;
+#X obj 253 364 *~;
+#X obj 232 394 +~;
+#X obj 114 177 * -1;
+#X obj 88 207 *~;
+#X obj 232 426 outlet~;
+#X obj 417 129 inlet;
+#X obj 114 117 loadbang;
+#X obj 75 365 *~ -1;
+#X obj 201 364 *~ -1;
+#X obj 114 149 f 0.625;
+#X obj 252 262 *~ 0.625;
+#X obj 417 262 f 0.625;
+#X obj 56 491 delwrite~ \$0-tap_21_22 200;
+#X obj 252 53 delread~ \$0-tap_21_22 9.30748;
+#X connect 0 0 1 0;
+#X connect 0 0 9 0;
+#X connect 1 0 18 0;
+#X connect 2 0 17 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 4 0 5 0;
+#X connect 5 0 6 1;
+#X connect 6 0 7 1;
+#X connect 7 0 10 0;
+#X connect 8 0 9 1;
+#X connect 9 0 14 0;
+#X connect 11 0 15 0;
+#X connect 11 0 16 1;
+#X connect 11 0 17 0;
+#X connect 12 0 15 0;
+#X connect 13 0 1 1;
+#X connect 14 0 7 0;
+#X connect 15 0 8 0;
+#X connect 16 0 6 0;
+#X connect 16 0 13 0;
+#X connect 17 0 3 0;
+#X connect 19 0 16 0;
+#X restore 30 230 pd allpass tap_21_22;
+#X connect 0 0 4 0;
+#X connect 2 0 4 1;
+#X connect 2 0 5 1;
+#X connect 3 0 6 1;
+#X connect 3 0 7 1;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 1 0;
+#X restore 25 168 pd input_diffusion;
+#N canvas 38 72 501 476 reverberation_tank 0;
+#X obj 168 85 inlet~;
+#X obj 43 120 +~;
+#X obj 255 121 +~;
+#N canvas 0 0 458 308 z^-4217 0;
+#X obj 106 55 inlet~;
+#X obj 105 120 delwrite~ \$0-tap_48_54 141.695;
+#X text 358 135 4217;
+#X obj 105 147 delread~ \$0-tap_48_54 141.695;
+#X obj 106 223 outlet~;
+#X connect 0 0 1 0;
+#X connect 3 0 4 0;
+#X restore 255 190 pd z^-4217;
+#N canvas 0 0 458 308 z^-4453 0;
+#X obj 41 104 delwrite~ \$0-tap_24_30 149.625;
+#X obj 42 128 delread~ \$0-tap_24_30 149.625;
+#X text 287 119 4453;
+#X obj 43 60 inlet~;
+#X obj 43 168 outlet~;
+#X connect 1 0 4 0;
+#X connect 3 0 0 0;
+#X restore 43 192 pd z^-4453;
+#N canvas 0 0 466 316 damping 0;
+#X obj 74 53 inlet~;
+#X obj 70 222 outlet~;
+#X obj 73 137 lop~ 22050;
+#X obj 162 137 r \$0-damping;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 1;
+#X restore 44 221 pd damping;
+#N canvas 0 0 470 320 damping 0;
+#X obj 74 53 inlet~;
+#X obj 70 222 outlet~;
+#X obj 73 137 lop~ 22050;
+#X obj 162 137 r \$0-damping;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 1;
+#X restore 256 221 pd damping;
+#N canvas 0 0 470 320 decay 0;
+#X obj 71 66 inlet~;
+#X obj 71 220 outlet~;
+#X obj 140 139 r \$0-decay;
+#X obj 70 140 *~ 0.5;
+#X connect 0 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 1 0;
+#X restore 43 249 pd decay;
+#N canvas 0 0 470 320 decay 0;
+#X obj 71 66 inlet~;
+#X obj 71 220 outlet~;
+#X obj 140 139 r \$0-decay;
+#X obj 70 140 *~ 0.5;
+#X connect 0 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 1 0;
+#X restore 257 250 pd decay;
+#N canvas 0 0 466 316 decay 0;
+#X obj 71 66 inlet~;
+#X obj 71 220 outlet~;
+#X obj 140 139 r \$0-decay;
+#X obj 70 140 *~ 0.5;
+#X connect 0 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 1 0;
+#X restore 43 87 pd decay;
+#N canvas 0 0 466 316 decay 0;
+#X obj 71 66 inlet~;
+#X obj 71 220 outlet~;
+#X obj 140 139 r \$0-decay;
+#X obj 70 140 *~ 0.5;
+#X connect 0 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 1 0;
+#X restore 273 85 pd decay;
+#N canvas 0 0 498 348 decay_diffusion1 0;
+#N canvas 232 298 494 344 excursion 0;
+#X obj 66 192 outlet~;
+#X obj 62 90 osc~ 1;
+#X obj 63 143 *~ 0.53761;
+#X obj 138 109 r \$0-excursion;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 1;
+#X restore 133 120 pd excursion;
+#X obj 43 32 inlet~;
+#X obj 44 250 outlet~;
+#X obj 88 84 r \$0-decay_diffusion1;
+#N canvas 409 74 612 523 allpassvd 0;
+#X obj 48 83 inlet~;
+#X obj 48 296 +~;
+#X obj 285 142 loadbang;
+#X obj 285 196 t f f;
+#X obj 285 220 *;
+#X obj 285 244 expr 1-$f1;
+#X obj 229 277 *~;
+#X obj 216 300 +~;
+#X obj 94 138 * -1;
+#X obj 80 163 *~;
+#X obj 217 401 outlet~;
+#X obj 392 30 inlet~;
+#X obj 447 56 sig~;
+#X obj 447 10 loadbang;
+#X obj 390 78 +~;
+#X obj 255 45 inlet;
+#X obj 94 60 loadbang;
+#X text 9 6 arguments: delay(ms) feedback(mult);
+#X text 10 20 inlets: signal feedback(mult) excursion;
+#X obj 94 114 f 0.7;
+#X obj 230 152 *~ 0.7;
+#X obj 285 172 f 0.7;
+#X obj 391 404 +~;
+#X text 372 428 excursion;
+#X obj 48 327 delwrite~ \$0-tap_23_24 100;
+#X obj 283 101 vd~ \$0-tap_23_24;
+#X obj 447 33 f 22.5599;
+#X connect 0 0 1 0;
+#X connect 0 0 9 0;
+#X connect 1 0 24 0;
+#X connect 2 0 21 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 4 0 5 0;
+#X connect 5 0 6 1;
+#X connect 6 0 7 1;
+#X connect 7 0 10 0;
+#X connect 8 0 9 1;
+#X connect 9 0 7 0;
+#X connect 11 0 14 0;
+#X connect 12 0 14 1;
+#X connect 13 0 26 0;
+#X connect 14 0 22 0;
+#X connect 14 0 25 0;
+#X connect 15 0 19 0;
+#X connect 15 0 20 1;
+#X connect 15 0 21 0;
+#X connect 16 0 19 0;
+#X connect 19 0 8 0;
+#X connect 20 0 1 1;
+#X connect 20 0 6 0;
+#X connect 21 0 3 0;
+#X connect 25 0 20 0;
+#X connect 26 0 12 0;
+#X restore 43 150 pd allpassvd;
+#X connect 0 0 4 2;
+#X connect 1 0 4 0;
+#X connect 3 0 4 1;
+#X connect 4 0 2 0;
+#X restore 44 156 pd decay_diffusion1;
+#N canvas 0 0 529 394 decay_diffusion1 0;
+#N canvas 232 298 482 332 excursion 0;
+#X obj 65 192 outlet~;
+#X obj 63 81 osc~ 1;
+#X obj 64 134 *~ 0.53761;
+#X obj 139 104 r \$0-excursion;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 1;
+#X restore 138 92 pd excursion;
+#X obj 49 25 inlet~;
+#X obj 49 200 outlet~;
+#X obj 93 60 r \$0-decay_diffusion1;
+#N canvas 348 52 608 519 allpassvd 0;
+#X obj 48 83 inlet~;
+#X obj 48 296 +~;
+#X obj 285 142 loadbang;
+#X obj 285 196 t f f;
+#X obj 285 220 *;
+#X obj 285 244 expr 1-$f1;
+#X obj 229 277 *~;
+#X obj 216 300 +~;
+#X obj 94 138 * -1;
+#X obj 80 163 *~;
+#X obj 217 401 outlet~;
+#X obj 392 30 inlet~;
+#X obj 447 56 sig~;
+#X obj 447 10 loadbang;
+#X obj 390 78 +~;
+#X obj 255 45 inlet;
+#X obj 94 60 loadbang;
+#X text 9 6 arguments: delay(ms) feedback(mult);
+#X text 10 20 inlets: signal feedback(mult) excursion;
+#X obj 48 327 delwrite~ \$0-tap_46_48 100;
+#X obj 283 101 vd~ \$0-tap_46_48;
+#X obj 447 33 f 30.5097;
+#X obj 94 114 f 0.7;
+#X obj 230 152 *~ 0.7;
+#X obj 285 172 f 0.7;
+#X obj 391 404 +~;
+#X text 372 428 excursion;
+#X connect 0 0 1 0;
+#X connect 0 0 9 0;
+#X connect 1 0 19 0;
+#X connect 2 0 24 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 4 0 5 0;
+#X connect 5 0 6 1;
+#X connect 6 0 7 1;
+#X connect 7 0 10 0;
+#X connect 8 0 9 1;
+#X connect 9 0 7 0;
+#X connect 11 0 14 0;
+#X connect 12 0 14 1;
+#X connect 13 0 21 0;
+#X connect 14 0 20 0;
+#X connect 14 0 25 0;
+#X connect 15 0 22 0;
+#X connect 15 0 23 1;
+#X connect 15 0 24 0;
+#X connect 16 0 22 0;
+#X connect 20 0 23 0;
+#X connect 21 0 12 0;
+#X connect 22 0 8 0;
+#X connect 23 0 1 1;
+#X connect 23 0 6 0;
+#X connect 24 0 3 0;
+#X restore 48 135 pd allpassvd;
+#X connect 0 0 4 2;
+#X connect 1 0 4 0;
+#X connect 3 0 4 1;
+#X connect 4 0 2 0;
+#X restore 256 155 pd decay_diffusion1;
+#N canvas 327 329 552 336 decay_diffusion2 0;
+#X obj 37 63 inlet~;
+#X obj 37 220 outlet~;
+#N canvas 393 17 582 586 allpass 0;
+#X obj 56 127 inlet~;
+#X obj 56 400 +~;
+#X obj 427 232 loadbang;
+#X obj 417 286 t f f;
+#X obj 417 310 *;
+#X obj 417 334 expr 1-$f1;
+#X obj 253 364 *~;
+#X obj 232 394 +~;
+#X obj 114 177 * -1;
+#X obj 88 207 *~;
+#X obj 232 426 outlet~;
+#X obj 417 129 inlet;
+#X obj 114 117 loadbang;
+#X obj 75 365 *~ -1;
+#X obj 201 364 *~ -1;
+#X obj 252 52 delread~ \$0-tap_31_33 60.4818;
+#X obj 56 491 delwrite~ \$0-tap_31_33 200;
+#X obj 114 149 f 0.5;
+#X obj 252 262 *~ 0.5;
+#X obj 417 262 f 0.5;
+#X connect 0 0 1 0;
+#X connect 0 0 9 0;
+#X connect 1 0 16 0;
+#X connect 2 0 19 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 4 0 5 0;
+#X connect 5 0 6 1;
+#X connect 6 0 7 1;
+#X connect 7 0 10 0;
+#X connect 8 0 9 1;
+#X connect 9 0 14 0;
+#X connect 11 0 17 0;
+#X connect 11 0 18 1;
+#X connect 11 0 19 0;
+#X connect 12 0 17 0;
+#X connect 13 0 1 1;
+#X connect 14 0 7 0;
+#X connect 15 0 18 0;
+#X connect 17 0 8 0;
+#X connect 18 0 6 0;
+#X connect 18 0 13 0;
+#X connect 19 0 3 0;
+#X restore 36 143 pd allpass tap_31_33;
+#X obj 191 114 r \$0-decay_diffusion2;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 1;
+#X restore 43 277 pd decay_diffusion2;
+#N canvas 0 0 553 336 decay_diffusion2 0;
+#X obj 52 38 inlet~;
+#X obj 54 171 outlet~;
+#X obj 210 85 r \$0-decay_diffusion2;
+#N canvas 393 17 586 590 allpass 0;
+#X obj 56 127 inlet~;
+#X obj 56 400 +~;
+#X obj 427 232 loadbang;
+#X obj 417 286 t f f;
+#X obj 417 310 *;
+#X obj 417 334 expr 1-$f1;
+#X obj 253 364 *~;
+#X obj 232 394 +~;
+#X obj 114 177 * -1;
+#X obj 88 207 *~;
+#X obj 232 426 outlet~;
+#X obj 417 129 inlet;
+#X obj 114 117 loadbang;
+#X obj 75 365 *~ -1;
+#X obj 201 364 *~ -1;
+#X obj 114 149 f 0.5;
+#X obj 252 262 *~ 0.5;
+#X obj 417 262 f 0.5;
+#X obj 56 491 delwrite~ \$0-tap_55_59 200;
+#X obj 252 52 delread~ \$0-tap_55_59 89.2443;
+#X connect 0 0 1 0;
+#X connect 0 0 9 0;
+#X connect 1 0 18 0;
+#X connect 2 0 17 0;
+#X connect 3 0 4 0;
+#X connect 3 1 4 1;
+#X connect 4 0 5 0;
+#X connect 5 0 6 1;
+#X connect 6 0 7 1;
+#X connect 7 0 10 0;
+#X connect 8 0 9 1;
+#X connect 9 0 14 0;
+#X connect 11 0 15 0;
+#X connect 11 0 16 1;
+#X connect 11 0 17 0;
+#X connect 12 0 15 0;
+#X connect 13 0 1 1;
+#X connect 14 0 7 0;
+#X connect 15 0 8 0;
+#X connect 16 0 6 0;
+#X connect 16 0 13 0;
+#X connect 17 0 3 0;
+#X connect 19 0 16 0;
+#X restore 55 114 pd allpass tap_55_59;
+#X connect 0 0 3 0;
+#X connect 2 0 3 1;
+#X connect 3 0 1 0;
+#X restore 256 278 pd decay_diffusion2;
+#N canvas 0 0 454 304 feedback 0;
+#X obj 43 118 outlet~;
+#X obj 44 55 delread~ \$0-tap_59_63 106.28;
+#X connect 1 0 0 0;
+#X restore 43 49 pd feedback;
+#N canvas 0 0 454 304 feedback 0;
+#X obj 81 188 outlet~;
+#X obj 81 134 delread~ \$0-tap_33_39 124.996;
+#X connect 1 0 0 0;
+#X restore 274 51 pd feedback;
+#N canvas 0 0 458 308 to_left 0;
+#X obj 48 52 inlet~;
+#X obj 48 95 delwrite~ \$0-tap_59_63 106.28;
+#X connect 0 0 1 0;
+#X restore 255 306 pd to_left;
+#N canvas 0 0 454 304 to_right 0;
+#X obj 53 173 delwrite~ \$0-tap_33_39 124.996;
+#X obj 56 100 inlet~;
+#X connect 1 0 0 0;
+#X restore 44 305 pd to_right;
+#X text 344 190 48_54;
+#X text 136 193 24_30;
+#X connect 0 0 1 1;
+#X connect 0 0 2 0;
+#X connect 1 0 11 0;
+#X connect 2 0 12 0;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 7 0;
+#X connect 6 0 8 0;
+#X connect 7 0 13 0;
+#X connect 8 0 14 0;
+#X connect 9 0 1 0;
+#X connect 10 0 2 1;
+#X connect 11 0 4 0;
+#X connect 12 0 3 0;
+#X connect 13 0 18 0;
+#X connect 14 0 17 0;
+#X connect 15 0 9 0;
+#X connect 16 0 10 0;
+#X restore 25 198 pd reverberation_tank;
+#N canvas 58 172 593 487 predelay 0;
+#X obj 97 19 inlet~;
+#X obj 97 317 outlet~;
+#X obj 393 56 sel 0;
+#X obj 96 209 *~ 1;
+#X obj 110 178 f 1;
+#X obj 140 179 f 0;
+#X obj 428 106 t a b;
+#X obj 377 222 *~ 1;
+#X obj 402 191 f 0;
+#X obj 433 191 f 1;
+#X text 17 210 no delay;
+#X text 237 212 delay;
+#N canvas 0 0 496 308 predelay 0;
+#X obj 35 52 inlet~;
+#X obj 263 227 outlet~;
+#X obj 264 50 inlet;
+#X obj 35 101 delwrite~ \$0-predelay 1000;
+#X obj 264 183 delread~ \$0-predelay 1;
+#X connect 0 0 3 0;
+#X connect 2 0 4 0;
+#X connect 4 0 1 0;
+#X restore 297 190 pd predelay;
+#X obj 393 25 r \$0-predelay;
+#X connect 0 0 3 0;
+#X connect 0 0 12 0;
+#X connect 2 0 4 0;
+#X connect 2 0 8 0;
+#X connect 2 1 6 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 1;
+#X connect 5 0 3 1;
+#X connect 6 0 12 1;
+#X connect 6 1 5 0;
+#X connect 6 1 9 0;
+#X connect 7 0 1 0;
+#X connect 8 0 7 1;
+#X connect 9 0 7 1;
+#X connect 12 0 7 0;
+#X connect 13 0 2 0;
+#X restore 25 105 pd predelay;
+#X obj 85 32 inlet~;
+#X obj 223 35 inlet;
+#N canvas 0 0 458 308 bandwidth 0;
+#X obj 66 22 inlet~;
+#X obj 65 183 outlet~;
+#X obj 65 107 lop~;
+#X obj 92 74 r \$0-bandwidth;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 1;
+#X restore 25 137 pd bandwidth;
+#N canvas 0 43 903 567 params 0;
+#X obj 44 29 inlet;
+#X obj 44 158 s \$0-predelay;
+#X obj 161 158 s \$0-bandwidth;
+#X obj 44 205 route input_diffusion1 input_diffusion2 decay_diffusion1
+decay_diffusion2;
+#X obj 44 65 route predelay bandwidth damping decay;
+#X obj 285 157 s \$0-damping;
+#X obj 398 158 s \$0-decay;
+#X obj 44 312 s \$0-input_diffusion1;
+#X obj 224 312 s \$0-input_diffusion2;
+#X obj 400 313 s \$0-decay_diffusion1;
+#X obj 580 314 s \$0-decay_diffusion2;
+#X obj 42 450 s \$0-excursion;
+#N canvas 295 162 450 343 default 0;
+#X obj 55 33 inlet;
+#X obj 55 299 outlet;
+#X obj 194 34 loadbang;
+#X obj 231 144 f 0;
+#X obj 55 198 f;
+#X obj 194 69 t b b;
+#X obj 174 97 f \$1;
+#X obj 174 124 sel 0;
+#X text 269 145 default;
+#X text 250 97 argument;
+#X connect 0 0 4 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 5 0 6 0;
+#X connect 5 1 3 0;
+#X connect 6 0 7 0;
+#X connect 7 1 4 0;
+#X restore 44 110 pd default;
+#N canvas 295 162 450 343 default 0;
+#X obj 55 33 inlet;
+#X obj 55 299 outlet;
+#X obj 194 34 loadbang;
+#X obj 55 198 f;
+#X obj 194 69 t b b;
+#X obj 174 124 sel 0;
+#X text 299 145 default;
+#X text 250 97 argument;
+#X obj 174 97 f \$2;
+#X obj 231 144 f 22050;
+#X connect 0 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 8 0;
+#X connect 4 1 9 0;
+#X connect 5 1 3 0;
+#X connect 8 0 5 0;
+#X connect 9 0 3 0;
+#X restore 161 111 pd default;
+#N canvas 295 162 450 343 default 0;
+#X obj 55 33 inlet;
+#X obj 55 299 outlet;
+#X obj 194 34 loadbang;
+#X obj 55 198 f;
+#X obj 194 69 t b b;
+#X obj 174 124 sel 0;
+#X text 299 145 default;
+#X text 250 97 argument;
+#X obj 174 97 f \$3;
+#X obj 231 144 f 22050;
+#X connect 0 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 8 0;
+#X connect 4 1 9 0;
+#X connect 5 1 3 0;
+#X connect 8 0 5 0;
+#X connect 9 0 3 0;
+#X restore 285 112 pd default;
+#N canvas 295 162 450 343 default 0;
+#X obj 55 33 inlet;
+#X obj 55 299 outlet;
+#X obj 194 34 loadbang;
+#X obj 55 198 f;
+#X obj 194 69 t b b;
+#X obj 174 124 sel 0;
+#X text 299 145 default;
+#X text 250 97 argument;
+#X obj 174 97 f \$4;
+#X obj 231 144 f 0.5;
+#X connect 0 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 8 0;
+#X connect 4 1 9 0;
+#X connect 5 1 3 0;
+#X connect 8 0 5 0;
+#X connect 9 0 3 0;
+#X restore 398 112 pd default;
+#N canvas 295 162 450 343 default 0;
+#X obj 55 33 inlet;
+#X obj 55 299 outlet;
+#X obj 194 34 loadbang;
+#X obj 55 198 f;
+#X obj 194 69 t b b;
+#X obj 174 124 sel 0;
+#X text 299 145 default;
+#X text 250 97 argument;
+#X obj 174 97 f \$5;
+#X obj 231 144 f 0.75;
+#X connect 0 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 8 0;
+#X connect 4 1 9 0;
+#X connect 5 1 3 0;
+#X connect 8 0 5 0;
+#X connect 9 0 3 0;
+#X restore 44 266 pd default;
+#N canvas 295 162 450 343 default 0;
+#X obj 55 33 inlet;
+#X obj 55 299 outlet;
+#X obj 194 34 loadbang;
+#X obj 55 198 f;
+#X obj 194 69 t b b;
+#X obj 174 124 sel 0;
+#X text 299 145 default;
+#X text 250 97 argument;
+#X obj 174 97 f \$6;
+#X obj 231 144 f 0.625;
+#X connect 0 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 8 0;
+#X connect 4 1 9 0;
+#X connect 5 1 3 0;
+#X connect 8 0 5 0;
+#X connect 9 0 3 0;
+#X restore 224 269 pd default;
+#N canvas 295 162 450 343 default 0;
+#X obj 55 33 inlet;
+#X obj 55 299 outlet;
+#X obj 194 34 loadbang;
+#X obj 55 198 f;
+#X obj 194 69 t b b;
+#X obj 174 124 sel 0;
+#X text 299 145 default;
+#X text 250 97 argument;
+#X obj 174 97 f \$7;
+#X obj 231 144 f 0.7;
+#X connect 0 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 8 0;
+#X connect 4 1 9 0;
+#X connect 5 1 3 0;
+#X connect 8 0 5 0;
+#X connect 9 0 3 0;
+#X restore 400 268 pd default;
+#N canvas 295 162 450 343 default 0;
+#X obj 55 33 inlet;
+#X obj 55 299 outlet;
+#X obj 194 34 loadbang;
+#X obj 55 198 f;
+#X obj 194 69 t b b;
+#X obj 174 124 sel 0;
+#X text 299 145 default;
+#X text 250 97 argument;
+#X obj 174 97 f \$8;
+#X obj 231 144 f 0.5;
+#X connect 0 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 8 0;
+#X connect 4 1 9 0;
+#X connect 5 1 3 0;
+#X connect 8 0 5 0;
+#X connect 9 0 3 0;
+#X restore 580 268 pd default;
+#N canvas 189 104 450 343 default 0;
+#X obj 55 33 inlet;
+#X obj 55 299 outlet;
+#X obj 194 34 loadbang;
+#X obj 55 198 f;
+#X obj 194 69 t b b;
+#X obj 174 124 sel 0;
+#X text 319 145 default;
+#X text 250 97 argument;
+#X obj 174 97 f \$9;
+#X obj 231 144 f 0.53761;
+#X connect 0 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 8 0;
+#X connect 4 1 9 0;
+#X connect 5 1 3 0;
+#X connect 8 0 5 0;
+#X connect 9 0 3 0;
+#X restore 42 404 pd default;
+#X obj 42 361 route excursion;
+#X obj 218 416 print jon~_nosuchparameter;
+#X connect 0 0 4 0;
+#X connect 3 0 16 0;
+#X connect 3 1 17 0;
+#X connect 3 2 18 0;
+#X connect 3 3 19 0;
+#X connect 3 4 21 0;
+#X connect 4 0 12 0;
+#X connect 4 1 13 0;
+#X connect 4 2 14 0;
+#X connect 4 3 15 0;
+#X connect 4 4 3 0;
+#X connect 12 0 1 0;
+#X connect 13 0 2 0;
+#X connect 14 0 5 0;
+#X connect 15 0 6 0;
+#X connect 16 0 7 0;
+#X connect 17 0 8 0;
+#X connect 18 0 9 0;
+#X connect 19 0 10 0;
+#X connect 20 0 11 0;
+#X connect 21 0 20 0;
+#X connect 21 1 22 0;
+#X restore 223 72 pd params;
+#N canvas 0 0 458 308 1/2 0;
+#X obj 102 56 inlet~;
+#X obj 182 56 inlet~;
+#X obj 103 138 *~ 0.5;
+#X obj 103 102 +~;
+#X obj 103 175 outlet~;
+#X connect 0 0 3 0;
+#X connect 1 0 3 1;
+#X connect 2 0 4 0;
+#X connect 3 0 2 0;
+#X restore 25 72 pd 1/2;
+#N canvas 120 111 856 498 output_taps 0;
+#X obj 28 409 outlet~;
+#X obj 30 267 -~;
+#X obj 31 109 +~;
+#X obj 30 215 +~;
+#X obj 29 369 -~;
+#X text 30 26 left;
+#X obj 32 55 delread~ \$0-tap_48_54 8.93787;
+#X obj 51 82 delread~ \$0-tap_48_54 99.9294;
+#X obj 50 134 delread~ \$0-tap_55_59 64.2787;
+#X obj 31 163 -~;
+#X obj 49 188 delread~ \$0-tap_59_63 67.0676;
+#X obj 50 240 delread~ \$0-tap_24_30 66.866;
+#X obj 50 293 delread~ \$0-tap_31_33 6.28339;
+#X obj 30 317 -~;
+#X obj 49 342 delread~ \$0-tap_33_39 35.8187;
+#X obj 371 407 outlet~;
+#X obj 370 105 +~;
+#X obj 371 261 -~;
+#X obj 370 208 +~;
+#X obj 371 365 -~;
+#X text 370 20 right;
+#X obj 371 51 delread~ \$0-tap_24_30 11.8612;
+#X obj 390 78 delread~ \$0-tap_24_30 121.871;
+#X obj 390 130 delread~ \$0-tap_31_33 41.2621;
+#X obj 390 181 delread~ \$0-tap_33_39 89.8155;
+#X obj 391 234 delread~ \$0-tap_48_54 70.9317;
+#X obj 372 313 -~;
+#X obj 392 286 delread~ \$0-tap_55_59 11.2563;
+#X obj 390 338 delread~ \$0-tap_59_63 4.06572;
+#X obj 370 154 -~;
+#X connect 1 0 13 0;
+#X connect 2 0 9 0;
+#X connect 3 0 1 0;
+#X connect 4 0 0 0;
+#X connect 6 0 2 0;
+#X connect 7 0 2 1;
+#X connect 8 0 9 1;
+#X connect 9 0 3 0;
+#X connect 10 0 3 1;
+#X connect 11 0 1 1;
+#X connect 12 0 13 1;
+#X connect 13 0 4 0;
+#X connect 14 0 4 1;
+#X connect 16 0 29 0;
+#X connect 17 0 26 0;
+#X connect 18 0 17 0;
+#X connect 19 0 15 0;
+#X connect 21 0 16 0;
+#X connect 22 0 16 1;
+#X connect 23 0 29 1;
+#X connect 24 0 18 1;
+#X connect 25 0 17 1;
+#X connect 26 0 19 0;
+#X connect 27 0 26 1;
+#X connect 28 0 19 1;
+#X connect 29 0 18 0;
+#X restore 27 247 pd output_taps;
+#X connect 0 0 10 0;
+#X connect 3 0 4 0;
+#X connect 5 0 8 0;
+#X connect 6 0 10 1;
+#X connect 7 0 9 0;
+#X connect 8 0 3 0;
+#X connect 10 0 5 0;
+#X connect 11 0 1 0;
+#X connect 11 1 2 0;
diff --git a/l2ork_addons/rjlib/rj/m.txt b/l2ork_addons/rjlib/rj/m.txt
new file mode 100644
index 000000000..dbed6ebb5
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/m.txt
@@ -0,0 +1,3 @@
+m_bpm2ms
+m_scale
+m_speedlimit
diff --git a/l2ork_addons/rjlib/rj/m_bpm2ms-help.pd b/l2ork_addons/rjlib/rj/m_bpm2ms-help.pd
new file mode 100644
index 000000000..3e04cfa2f
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/m_bpm2ms-help.pd
@@ -0,0 +1,28 @@
+#N canvas 233 267 744 433 10;
+#X obj 132 161 m_bpm2ms;
+#X floatatom 132 137 5 0 0 1 BPM - -;
+#X floatatom 132 191 5 0 0 1 Period_in_milliseconds - -;
+#X msg 132 111 120;
+#X obj 132 246 t a a;
+#X obj 132 296 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 132 273 metro;
+#X msg 83 246 stop;
+#X obj 42 36 m_bpm2ms;
+#X obj 446 198 m_bpm2ms;
+#X floatatom 446 178 5 0 0 1 Period_in_milliseconds - -;
+#X floatatom 446 220 5 0 0 1 BPM - -;
+#X text 117 32 convert between a frequeny specified as BPM (beats per
+minute) to a period in milliseconds (and back).;
+#X text 440 149 Works both ways:;
+#X connect 0 0 2 0;
+#X connect 0 0 10 0;
+#X connect 1 0 0 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 6 0;
+#X connect 4 1 6 1;
+#X connect 6 0 5 0;
+#X connect 7 0 6 0;
+#X connect 9 0 11 0;
+#X connect 10 0 9 0;
diff --git a/l2ork_addons/rjlib/rj/m_bpm2ms.pd b/l2ork_addons/rjlib/rj/m_bpm2ms.pd
new file mode 100644
index 000000000..309d104a6
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/m_bpm2ms.pd
@@ -0,0 +1,9 @@
+#N canvas 403 503 450 300 10;
+#X obj 93 50 inlet;
+#X obj 93 102 swap 60000;
+#X obj 93 131 /;
+#X obj 93 182 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 2 1;
+#X connect 2 0 3 0;
diff --git a/l2ork_addons/rjlib/rj/m_scale-help.pd b/l2ork_addons/rjlib/rj/m_scale-help.pd
new file mode 100644
index 000000000..0e6b99f42
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/m_scale-help.pd
@@ -0,0 +1,109 @@
+#N canvas 113 38 819 543 10;
+#X floatatom 95 146 5 0 0 0 - - -;
+#X floatatom 95 340 5 0 0 0 - - -;
+#X floatatom 515 275 5 0 0 0 - - -;
+#X floatatom 515 319 5 0 0 0 - - -;
+#X obj 518 253 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X floatatom 652 276 5 0 0 0 - - -;
+#X floatatom 122 174 5 0 0 1 in_low_border - -;
+#X floatatom 149 195 5 0 0 1 in_high_border - -;
+#X floatatom 177 220 5 0 0 1 out_low_border - -;
+#X floatatom 204 248 5 0 0 1 out_high_border - -;
+#X text 65 31 m_scale;
+#X floatatom 456 405 5 0 0 0 - - -;
+#X floatatom 456 445 5 0 0 0 - - -;
+#X text 57 424 Actually low values also may be higher than high values:
+;
+#X floatatom 232 268 5 0 0 1 curve_exponent - -;
+#X msg 255 289 dB;
+#X text 295 291 send "dB" to use dB scale;
+#X obj 518 336 hsl 128 15 0 1 0 0 empty empty 0-1 20 8 1 10 -262144
+-1 -1 127 1;
+#X obj 459 468 hsl 128 15 0 100 0 0 empty empty 0-100 20 8 1 10 -262144
+-1 -1 7600 1;
+#X obj 459 373 hsl 128 15 0 100 0 0 empty empty 0-100 20 8 1 10 -262144
+-1 -1 5100 1;
+#N canvas 381 198 613 435 visual-example 1;
+#X floatatom 111 114 5 0 0 0 - - -;
+#X floatatom 127 136 5 0 0 0 - - -;
+#X floatatom 187 115 5 0 0 0 - - -;
+#X floatatom 201 138 5 0 0 0 - - -;
+#X floatatom 55 219 5 0 0 0 - - -;
+#X floatatom 276 113 5 0 0 0 - - -;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-map 100 float 2;
+#X coords 0 1 99 -1 200 140 1;
+#X restore 272 182 graph;
+#X msg 275 132 dB;
+#X obj 55 290 tabwrite \$0-map;
+#N canvas 0 0 450 300 count-to-100 0;
+#X obj 171 145 until;
+#X msg 171 88 100;
+#X obj 171 173 f 0;
+#X obj 202 174 + 1;
+#X obj 214 144 0;
+#X obj 171 116 t a b;
+#X obj 170 198 outlet;
+#X obj 171 61 inlet;
+#X connect 0 0 2 0;
+#X connect 1 0 5 0;
+#X connect 2 0 3 0;
+#X connect 2 0 6 0;
+#X connect 3 0 2 1;
+#X connect 4 0 2 1;
+#X connect 5 0 0 0;
+#X connect 5 1 4 0;
+#X connect 7 0 1 0;
+#X restore 55 70 pd count-to-100;
+#X obj 55 49 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 55 100 t a a;
+#X msg 267 79 0.5;
+#X msg 303 79 1;
+#X msg 335 79 2;
+#X msg 372 79 4;
+#X obj 55 195 m_scale 0 100 -1 1 dB;
+#X connect 0 0 16 1;
+#X connect 1 0 16 2;
+#X connect 2 0 16 3;
+#X connect 3 0 16 4;
+#X connect 4 0 8 0;
+#X connect 5 0 16 5;
+#X connect 7 0 16 5;
+#X connect 9 0 11 0;
+#X connect 10 0 9 0;
+#X connect 11 0 16 0;
+#X connect 11 1 8 1;
+#X connect 12 0 5 0;
+#X connect 13 0 5 0;
+#X connect 14 0 5 0;
+#X connect 15 0 5 0;
+#X connect 16 0 4 0;
+#X restore 507 161 pd visual-example;
+#X msg 696 275 dB;
+#X text 82 54 scale input range to output range with linear or exponential
+interpolation.;
+#X text 83 91 Args: <in_low> <in_high> <out_low> <out_high> <optional:
+curve exp. or "dB">;
+#X obj 515 298 m_scale 0 127 0 1 dB;
+#X obj 95 289 m_scale -10 10 0 100;
+#X obj 456 424 m_scale 100 0 0 100 1;
+#X connect 0 0 25 0;
+#X connect 2 0 24 0;
+#X connect 3 0 17 0;
+#X connect 4 0 2 0;
+#X connect 5 0 24 5;
+#X connect 6 0 25 1;
+#X connect 7 0 25 2;
+#X connect 8 0 25 3;
+#X connect 9 0 25 4;
+#X connect 11 0 26 0;
+#X connect 12 0 18 0;
+#X connect 14 0 25 5;
+#X connect 15 0 25 5;
+#X connect 19 0 11 0;
+#X connect 21 0 24 5;
+#X connect 24 0 3 0;
+#X connect 25 0 1 0;
+#X connect 26 0 12 0;
diff --git a/l2ork_addons/rjlib/rj/m_scale.pd b/l2ork_addons/rjlib/rj/m_scale.pd
new file mode 100644
index 000000000..eb872664f
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/m_scale.pd
@@ -0,0 +1,153 @@
+#N canvas 307 118 953 643 10;
+#X obj 197 174 f \$1;
+#X obj 367 176 f \$4;
+#X obj 317 172 f \$3;
+#X obj 247 172 f \$2;
+#X obj 197 85 inlet;
+#X obj 247 85 inlet;
+#X obj 317 85 inlet;
+#X obj 367 85 inlet;
+#X obj 111 54 inlet;
+#X obj 111 558 outlet;
+#X text 522 49 ARGS;
+#X text 532 73 1: input_low_border;
+#X text 532 95 2: input_high_border;
+#X text 532 121 3: output_low_border;
+#X text 532 143 4: output_high_border;
+#X text 174 54 scale [from_low \, from_hi] to [to_low \, to_hi];
+#X obj 416 126 t b b b b;
+#X obj 416 84 loadbang;
+#X obj 111 525 +;
+#X text 229 297 inh-inl;
+#X text 354 286 outh-outl;
+#X obj 111 488 *;
+#X text 143 338 - inl;
+#X text 143 526 + outl;
+#X obj 247 237 t b a;
+#X obj 367 225 t b a;
+#X msg 425 105 bang;
+#X obj 111 364 / 1;
+#X obj 111 340 -;
+#X obj 317 287 -;
+#X obj 317 266 swap;
+#X obj 197 271 swap;
+#X obj 197 296 -;
+#N canvas 0 0 549 462 mapping 0;
+#X obj 103 74 inlet;
+#X obj 103 358 outlet;
+#X obj 133 265 pow 1;
+#X obj 206 75 inlet;
+#X obj 206 120 select 1;
+#X obj 187 254 * 2;
+#X obj 187 227 - 1;
+#X msg 187 276 10 \$1;
+#X obj 206 96 route float dB;
+#N canvas 477 233 525 407 demux3 0;
+#X obj 88 263 outlet;
+#X obj 88 226 spigot 1;
+#X obj 171 264 outlet;
+#X obj 171 227 spigot 0;
+#X obj 241 264 outlet;
+#X obj 241 227 spigot 0;
+#X obj 265 152 unpack 0 0 0;
+#X obj 88 51 inlet;
+#X obj 265 57 inlet;
+#X msg 265 109 1 0 0;
+#X msg 311 110 0 1 0;
+#X msg 360 110 0 0 1;
+#X obj 265 83 select 0 1 2;
+#X connect 1 0 0 0;
+#X connect 3 0 2 0;
+#X connect 5 0 4 0;
+#X connect 6 0 1 1;
+#X connect 6 1 3 1;
+#X connect 6 2 5 1;
+#X connect 7 0 1 0;
+#X connect 7 0 3 0;
+#X connect 7 0 5 0;
+#X connect 8 0 12 0;
+#X connect 9 0 6 0;
+#X connect 10 0 6 0;
+#X connect 11 0 6 0;
+#X connect 12 0 9 0;
+#X connect 12 1 10 0;
+#X connect 12 2 11 0;
+#X restore 103 204 pd demux3;
+#X msg 206 142 0;
+#X msg 259 142 1;
+#X msg 301 143 2;
+#X obj 187 302 pow;
+#X connect 0 0 9 0;
+#X connect 2 0 1 0;
+#X connect 3 0 8 0;
+#X connect 4 0 10 0;
+#X connect 4 1 11 0;
+#X connect 5 0 7 0;
+#X connect 6 0 5 0;
+#X connect 7 0 13 0;
+#X connect 8 0 4 0;
+#X connect 8 0 2 1;
+#X connect 8 1 12 0;
+#X connect 9 0 1 0;
+#X connect 9 1 2 0;
+#X connect 9 2 6 0;
+#X connect 10 0 9 1;
+#X connect 11 0 9 1;
+#X connect 12 0 9 1;
+#X connect 13 0 1 0;
+#X restore 111 454 pd mapping;
+#X obj 620 263 inlet;
+#X obj 620 312 list append \$5;
+#X obj 673 381 list trim;
+#X obj 620 360 select 0;
+#X msg 688 285 symbol dB;
+#X msg 620 381 1;
+#X obj 555 262 loadbang;
+#X text 620 242 mapping;
+#X obj 620 287 t a b;
+#X obj 620 335 list split 1;
+#X text 533 170 5: mapping: float is a pow-exponent \, "dB" can be
+used to use a dB scaling (optional \, default is linear);
+#X connect 0 0 28 1;
+#X connect 0 0 31 0;
+#X connect 1 0 25 0;
+#X connect 2 0 18 1;
+#X connect 2 0 30 0;
+#X connect 3 0 24 0;
+#X connect 4 0 0 0;
+#X connect 5 0 3 0;
+#X connect 6 0 2 0;
+#X connect 7 0 1 0;
+#X connect 8 0 28 0;
+#X connect 16 0 0 0;
+#X connect 16 1 3 0;
+#X connect 16 2 2 0;
+#X connect 16 3 1 0;
+#X connect 17 0 16 0;
+#X connect 18 0 9 0;
+#X connect 21 0 18 0;
+#X connect 24 0 31 0;
+#X connect 24 1 31 1;
+#X connect 25 0 30 0;
+#X connect 25 1 30 1;
+#X connect 26 0 16 0;
+#X connect 27 0 33 0;
+#X connect 28 0 27 0;
+#X connect 29 0 21 1;
+#X connect 30 0 29 0;
+#X connect 30 1 29 1;
+#X connect 31 0 32 0;
+#X connect 31 1 32 1;
+#X connect 32 0 27 1;
+#X connect 33 0 21 0;
+#X connect 34 0 42 0;
+#X connect 35 0 43 0;
+#X connect 36 0 33 1;
+#X connect 37 0 39 0;
+#X connect 37 1 36 0;
+#X connect 38 0 35 0;
+#X connect 39 0 33 1;
+#X connect 40 0 35 0;
+#X connect 42 0 35 0;
+#X connect 42 1 35 1;
+#X connect 43 0 37 0;
diff --git a/l2ork_addons/rjlib/rj/m_speedlimit-help.pd b/l2ork_addons/rjlib/rj/m_speedlimit-help.pd
new file mode 100644
index 000000000..a4a920727
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/m_speedlimit-help.pd
@@ -0,0 +1,26 @@
+#N canvas 357 235 570 396 10;
+#X obj 128 264 t b b;
+#X obj 128 298 timer;
+#X floatatom 128 325 5 0 0 0 - - -;
+#X obj 128 130 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X floatatom 188 130 5 0 0 0 - - -;
+#X obj 128 354 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X floatatom 237 167 5 0 0 1 limit(ms) - -;
+#X obj 128 192 m_speedlimit 150;
+#X text 37 9 m_speedlimit;
+#X text 73 95 Works for any data that can be stored in [list].;
+#X obj 128 155 metro 100;
+#X text 73 34 Impose a limit on the speed of messages.;
+#X text 73 58 Fast changing values are mapped to slower changing values
+by dropping everything for the limit duration.;
+#X connect 0 0 1 0;
+#X connect 0 1 1 1;
+#X connect 1 0 2 0;
+#X connect 2 0 5 0;
+#X connect 3 0 10 0;
+#X connect 4 0 10 1;
+#X connect 6 0 7 1;
+#X connect 7 0 0 0;
+#X connect 10 0 7 0;
diff --git a/l2ork_addons/rjlib/rj/m_speedlimit.pd b/l2ork_addons/rjlib/rj/m_speedlimit.pd
new file mode 100644
index 000000000..8e92e31e4
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/m_speedlimit.pd
@@ -0,0 +1,59 @@
+#N canvas 384 34 782 432 10;
+#X obj 245 86 inlet;
+#X obj 115 249 metro 100;
+#X obj 115 69 inlet;
+#N canvas 0 0 720 312 activity-monitor 0;
+#X obj 108 74 inlet;
+#X obj 108 103 b;
+#X obj 108 160 delay 100;
+#X obj 168 73 inlet;
+#X obj 108 198 outlet;
+#X text 198 132 if no activity for X msec \, then bang outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 1;
+#X restore 161 192 pd activity-monitor;
+#X msg 161 218 0;
+#X msg 115 218 1;
+#X obj 115 288 list append;
+#X text 291 87 speed limit (ms);
+#X obj 115 315 outlet;
+#X obj 115 126 spigot 1;
+#X obj 183 126 == 0;
+#X obj 115 93 t a b a;
+#X text 359 220 1) store data;
+#X text 339 190 If data comes in:;
+#X text 360 240 2) start activity monitor;
+#X obj 420 55 loadbang;
+#X obj 420 80 f \$1;
+#X obj 420 108 select 0;
+#X msg 420 130 100;
+#X obj 245 160 f;
+#X text 359 282 4) block system;
+#X text 341 315 While blocked \, incoming data is sampled at metro
+rate as long as there's activity.;
+#X text 340 361 If there's no activity for a metro period \, stop the
+metro and unblock the system to accept new data.;
+#X text 359 261 3) start metro and output data;
+#X connect 0 0 19 0;
+#X connect 1 0 6 0;
+#X connect 2 0 11 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 0 10 0;
+#X connect 5 0 1 0;
+#X connect 5 0 10 0;
+#X connect 6 0 8 0;
+#X connect 9 0 5 0;
+#X connect 10 0 9 1;
+#X connect 11 0 9 0;
+#X connect 11 1 3 0;
+#X connect 11 2 6 1;
+#X connect 15 0 16 0;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 17 1 19 0;
+#X connect 18 0 19 0;
+#X connect 19 0 3 1;
+#X connect 19 0 1 1;
diff --git a/l2ork_addons/rjlib/rj/rjdispatch-help.pd b/l2ork_addons/rjlib/rj/rjdispatch-help.pd
new file mode 100644
index 000000000..a96aa5103
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/rjdispatch-help.pd
@@ -0,0 +1,67 @@
+#N canvas 212 72 973 689 10;
+#X obj 121 172 inlet;
+#X floatatom 175 194 5 0 0 0 - - -;
+#X floatatom 383 334 5 0 0 0 - - -;
+#X floatatom 382 525 5 0 0 0 - - -;
+#X obj 382 504 r \$0-float;
+#X floatatom 272 193 5 0 0 0 - - -;
+#X floatatom 525 195 5 0 0 0 - - -;
+#X floatatom 382 624 5 0 0 0 - - -;
+#X floatatom 322 194 5 0 0 0 - - -;
+#X obj 383 383 t a b;
+#X obj 383 407 list prepend set;
+#X obj 383 429 list trim;
+#X msg 383 452 a b c d 93;
+#X obj 382 603 r \$0-prep;
+#X obj 525 217 list prepend prep;
+#X msg 175 215 attack \$1;
+#X obj 121 312 rjdispatch \$0 attack;
+#X obj 383 313 r \$0-attack;
+#X obj 383 360 r \$0-alist;
+#X obj 322 216 list prepend alist a b c d;
+#X text 84 23 [rjdispatch];
+#X text 123 45 Wrapper around [route] that automatically sends incoming
+messages to a receiver called "\$1-\$2" \, if they start with \$2.
+;
+#X text 125 94 Non-matching messages get passed on to the outlet.;
+#X text 124 114 Useful for dispatching of inlet-messages if you create
+chains of [rjdispatch] objects like below:;
+#X text 274 312 sends to this:;
+#X text 271 358 sends to this:;
+#X text 268 502 sends to this:;
+#X text 268 603 sends to this:;
+#X msg 476 271 help;
+#X obj 121 503 rjdispatch \$0 float;
+#X obj 121 600 rjdispatch \$0 prep;
+#X obj 121 359 rjdispatch \$0 alist;
+#X text 473 252 special method "help" to print all active rjdispatch
+targets;
+#X obj 121 630 rjdispatch \$0 bang;
+#X obj 258 630 r \$0-bang;
+#X msg 135 215 bang;
+#X obj 258 658 print BANG;
+#X obj 671 527 rjdispatch \$0 symbol;
+#X text 643 508 This does not work \, don't use it:;
+#X connect 0 0 16 0;
+#X connect 1 0 15 0;
+#X connect 4 0 3 0;
+#X connect 5 0 16 0;
+#X connect 6 0 14 0;
+#X connect 8 0 19 0;
+#X connect 9 0 10 0;
+#X connect 9 1 10 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 13 0 7 0;
+#X connect 14 0 16 0;
+#X connect 15 0 16 0;
+#X connect 16 0 31 0;
+#X connect 17 0 2 0;
+#X connect 18 0 9 0;
+#X connect 19 0 16 0;
+#X connect 28 0 16 0;
+#X connect 29 0 30 0;
+#X connect 30 0 33 0;
+#X connect 31 0 29 0;
+#X connect 34 0 36 0;
+#X connect 35 0 16 0;
diff --git a/l2ork_addons/rjlib/rj/rjdispatch.pd b/l2ork_addons/rjlib/rj/rjdispatch.pd
new file mode 100644
index 000000000..9f159ede4
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/rjdispatch.pd
@@ -0,0 +1,28 @@
+#N canvas 303 323 759 261 10;
+#X obj 131 28 inlet;
+#X obj 182 185 outlet;
+#X obj 131 122 route \$2;
+#X obj 131 155 s \$1-\$2;
+#X obj 131 98 list trim;
+#X obj 273 121 select help;
+#X obj 273 158 list append \$2;
+#X obj 273 182 list trim;
+#X obj 273 205 print dispatcher;
+#X obj 273 94 route symbol;
+#X obj 273 70 list;
+#X obj 470 104 sssad \$2 \$1;
+#X obj 470 131 s \$1-\$2;
+#X obj 544 73 r \$1-\$2;
+#X text 447 73 state saves:;
+#X connect 0 0 4 0;
+#X connect 0 0 10 0;
+#X connect 2 0 3 0;
+#X connect 2 1 1 0;
+#X connect 4 0 2 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 9 0 5 0;
+#X connect 10 0 9 0;
+#X connect 11 0 12 0;
+#X connect 13 0 11 1;
diff --git a/l2ork_addons/rjlib/rj/rjloader-help.pd b/l2ork_addons/rjlib/rj/rjloader-help.pd
new file mode 100644
index 000000000..7db9bbab0
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/rjloader-help.pd
@@ -0,0 +1,3 @@
+#N canvas 341 323 756 361 10;
+#X text 134 100 Please see help for rjsave-ex:;
+#X obj 148 130 rjsave-ex rjload;
diff --git a/l2ork_addons/rjlib/rj/rjloader.pd b/l2ork_addons/rjlib/rj/rjloader.pd
new file mode 100644
index 000000000..e2b06ca70
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/rjloader.pd
@@ -0,0 +1,26 @@
+#N canvas 0 0 797 492 10;
+#X obj 151 86 route persist;
+#X obj 151 117 list prepend \$1;
+#X obj 150 196 list trim;
+#X obj 150 222 route \$1;
+#X msg 150 328 setonly \$1;
+#X obj 150 248 t a a;
+#X obj 150 306 list;
+#X obj 150 174 r RJ_SCENE_LOAD;
+#X obj 151 144 s RJ_SCENE;
+#X obj 305 98 r RJ_SCENE_SAVE;
+#X obj 151 54 r \$2-SSSAD_ADMIN;
+#X obj 150 352 s \$2-SSSAD_ADMIN;
+#X obj 182 270 s \$2-SSSAD;
+#X obj 305 137 s \$2-SSSAD_ADMIN;
+#X connect 0 0 1 0;
+#X connect 1 0 8 0;
+#X connect 2 0 3 0;
+#X connect 3 0 5 0;
+#X connect 4 0 11 0;
+#X connect 5 0 6 0;
+#X connect 5 1 12 0;
+#X connect 6 0 4 0;
+#X connect 7 0 2 0;
+#X connect 9 0 13 0;
+#X connect 10 0 0 0;
diff --git a/l2ork_addons/rjlib/rj/s.txt b/l2ork_addons/rjlib/rj/s.txt
new file mode 100644
index 000000000..92c6eac48
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/s.txt
@@ -0,0 +1,10 @@
+s_blsaw
+s_blsquare
+s_buzz
+s_fplaytable
+s_fplaytable2
+s_guitar
+s_looper
+s_playtable
+s_playtable2
+s_rhodey
diff --git a/l2ork_addons/rjlib/rj/s_blsaw-help.pd b/l2ork_addons/rjlib/rj/s_blsaw-help.pd
new file mode 100644
index 000000000..73b1403ff
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/s_blsaw-help.pd
@@ -0,0 +1,25 @@
+#N canvas 371 298 534 487 10;
+#X floatatom 156 208 5 0 0 0 - - -;
+#X floatatom 264 209 5 0 0 0 - - -;
+#X obj 156 227 s_blsaw;
+#X obj 264 227 phasor~;
+#X obj 194 179 mtof;
+#X floatatom 194 161 5 0 0 0 - - -;
+#X obj 264 268 soundoutput;
+#X obj 156 269 soundoutput;
+#X obj 80 39 s_blsaw;
+#X text 98 71 s_blsaw generates a bandlimited sawtooth wave similar
+to the Pd builtin phasor~;
+#X text 326 226 this is aliased;
+#X text 44 227 less aliasing:;
+#X text 99 113 inlet 0: signal or float to set frequency in Hz;
+#X text 98 134 inlet 1: float to set phase (0-1);
+#X connect 0 0 2 0;
+#X connect 1 0 3 0;
+#X connect 2 0 7 0;
+#X connect 2 0 7 1;
+#X connect 3 0 6 0;
+#X connect 3 0 6 1;
+#X connect 4 0 0 0;
+#X connect 4 0 1 0;
+#X connect 5 0 4 0;
diff --git a/l2ork_addons/rjlib/rj/s_blsaw.pd b/l2ork_addons/rjlib/rj/s_blsaw.pd
new file mode 100644
index 000000000..12448cbfd
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/s_blsaw.pd
@@ -0,0 +1,11 @@
+#N canvas 291 44 343 388 10;
+#X obj 65 62 inlet~;
+#X obj 66 174 outlet~;
+#X obj 111 62 inlet;
+#X obj 65 129 phasor~;
+#X obj 65 150 u_splicetrans;
+#X connect 0 0 3 0;
+#X connect 0 0 4 1;
+#X connect 2 0 3 1;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
diff --git a/l2ork_addons/rjlib/rj/s_blsquare-help.pd b/l2ork_addons/rjlib/rj/s_blsquare-help.pd
new file mode 100644
index 000000000..ad0cea8b8
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/s_blsquare-help.pd
@@ -0,0 +1,43 @@
+#N canvas 328 78 667 583 10;
+#X obj 107 386 s_blsquare;
+#X obj 107 259 mtof;
+#X floatatom 107 239 5 0 0 0 - - -;
+#X obj 108 441 soundoutput;
+#X obj 52 35 s_blsquare;
+#X floatatom 258 224 5 0 0 2 pwm_freq - -;
+#X floatatom 194 387 5 0 0 1 phase_(0...1) - -;
+#X obj 258 243 osc~ 0.5;
+#X obj 140 322 pack 0 10;
+#X obj 140 300 / 100;
+#X floatatom 140 282 5 0 0 0 - - -;
+#X obj 259 303 +~ 0.5;
+#X obj 259 275 *~ 0.1;
+#X obj 259 338 *~ 1;
+#X obj 304 338 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X text 325 303 it's best to modulate around 0.5;
+#X obj 345 242 / 100;
+#X floatatom 345 224 5 0 0 2 depth - -;
+#X text 97 90 Inlet 0: signal or float for frequency;
+#X text 96 114 Inlet 1: signal or float for pulse width - 0.5 is a
+50/50 square wave;
+#X text 95 149 Inlet 2: float to set phase (0...1);
+#X obj 140 343 line~;
+#X text 153 33 bandlimited square wave with audio input for PWM.;
+#X connect 0 0 3 0;
+#X connect 0 0 3 1;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 5 0 7 0;
+#X connect 6 0 0 2;
+#X connect 7 0 12 0;
+#X connect 8 0 21 0;
+#X connect 9 0 8 0;
+#X connect 10 0 9 0;
+#X connect 11 0 13 0;
+#X connect 12 0 11 0;
+#X connect 13 0 0 1;
+#X connect 14 0 13 1;
+#X connect 16 0 12 1;
+#X connect 17 0 16 0;
+#X connect 21 0 0 1;
diff --git a/l2ork_addons/rjlib/rj/s_blsquare.pd b/l2ork_addons/rjlib/rj/s_blsquare.pd
new file mode 100644
index 000000000..e85ac360d
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/s_blsquare.pd
@@ -0,0 +1,60 @@
+#N canvas 473 354 450 300 10;
+#X obj 80 43 inlet~;
+#X obj 81 91 phasor~;
+#X obj 265 52 inlet~;
+#X obj 335 53 inlet;
+#X text 262 31 pwm~;
+#X text 78 23 freq~;
+#X text 335 35 phase;
+#N canvas 525 283 512 505 sigment 0;
+#X obj 71 154 wrap~;
+#X obj 71 216 -~ 0.5;
+#X obj 71 132 -~;
+#X obj 70 52 inlet~;
+#X text 70 34 phasor~;
+#X obj 70 277 outlet~;
+#X text 261 29 phase;
+#X obj 259 50 inlet~;
+#X obj 70 184 u_splicetrans;
+#X obj 159 51 inlet~;
+#X obj 70 253 *~ -1;
+#X text 161 32 freq~;
+#X connect 0 0 8 0;
+#X connect 1 0 10 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 7 0 2 1;
+#X connect 8 0 1 0;
+#X connect 9 0 8 1;
+#X connect 10 0 5 0;
+#X restore 82 154 pd sigment -1;
+#N canvas 525 283 508 458 sigment 0;
+#X obj 71 154 wrap~;
+#X obj 71 216 -~ 0.5;
+#X obj 71 132 -~;
+#X obj 70 52 inlet~;
+#X text 70 34 phasor~;
+#X obj 70 277 outlet~;
+#X text 261 29 phase;
+#X obj 259 50 inlet~;
+#X obj 70 184 u_splicetrans;
+#X obj 159 51 inlet~;
+#X text 161 32 freq~;
+#X connect 0 0 8 0;
+#X connect 1 0 5 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 0;
+#X connect 7 0 2 1;
+#X connect 8 0 1 0;
+#X connect 9 0 8 1;
+#X restore 185 154 pd sigment 1;
+#X obj 81 214 outlet~;
+#X connect 0 0 1 0;
+#X connect 0 0 7 1;
+#X connect 0 0 8 1;
+#X connect 1 0 7 0;
+#X connect 1 0 8 0;
+#X connect 2 0 8 2;
+#X connect 3 0 1 1;
+#X connect 7 0 9 0;
+#X connect 8 0 9 0;
diff --git a/l2ork_addons/rjlib/rj/s_buzz-help.pd b/l2ork_addons/rjlib/rj/s_buzz-help.pd
new file mode 100644
index 000000000..e9d0fa16c
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/s_buzz-help.pd
@@ -0,0 +1,39 @@
+#N canvas 274 60 646 649 10;
+#X floatatom 111 66 5 0 0 0 - - -;
+#X obj 151 332 tabwrite~ \$0-scope;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-scope 2205 float 0;
+#X coords 0 1 2204 -1 200 140 1;
+#X restore 288 210 graph;
+#X obj 151 265 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 111 93 mtof;
+#X obj 194 64 hsl 128 15 0 0.9 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 6300 1;
+#X obj 191 94 moses 1;
+#X text 206 45 Harmonicity-Env;
+#X text 252 95 don't go equal or over 1!;
+#X floatatom 199 118 5 0 0 0 - - -;
+#X obj 191 189 line~;
+#X obj 191 165 pack 0 100;
+#X msg 164 308 bang;
+#X obj 151 286 metro 100;
+#X text 87 498 out = sqrt[(1-a^2)(1+a^2)] * [sin(x) / (1+a^2 - 2a*cos(x))]
+;
+#X text 85 545 cf: James A. Moorer: "Synthesis of Complex Audio Spectra"
+and Dodge/Jerse: "Computer Music" page 163f;
+#X obj 111 228 s_buzz;
+#X obj 68 374 soundoutput;
+#X connect 0 0 4 0;
+#X connect 3 0 13 0;
+#X connect 4 0 16 0;
+#X connect 5 0 6 0;
+#X connect 6 0 9 0;
+#X connect 6 0 11 0;
+#X connect 10 0 16 1;
+#X connect 11 0 10 0;
+#X connect 12 0 1 0;
+#X connect 13 0 1 0;
+#X connect 16 0 1 0;
+#X connect 16 0 17 0;
+#X connect 16 0 17 1;
diff --git a/l2ork_addons/rjlib/rj/s_buzz.pd b/l2ork_addons/rjlib/rj/s_buzz.pd
new file mode 100644
index 000000000..e4f5ca8b6
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/s_buzz.pd
@@ -0,0 +1,106 @@
+#N canvas 384 121 780 602 10;
+#X obj 257 361 +~;
+#X obj 132 112 *~ 1024;
+#X obj 257 160 tabread4~ \$0-cos;
+#X obj 131 350 tabread4~ \$0-sin;
+#X obj 132 421 /~;
+#X obj 132 132 +~ 1;
+#X obj 480 250 *~ 1024;
+#X obj 480 278 +~ 1;
+#X obj 410 311 tabread4~ \$0-1+a2;
+#X obj 544 310 tabread4~ \$0-norm;
+#X obj 133 444 *~;
+#X obj 380 258 *~ -2;
+#X obj 257 311 *~;
+#X obj 134 473 outlet~;
+#X obj 379 45 inlet~;
+#X obj 489 66 table \$0-1+a2 1027;
+#X obj 489 85 table \$0-norm 1027;
+#X text 133 503 out = sqrt[(1-a^2)(1+a^2)] * [sin(x) / (1+a^2 - 2a*cos(x))]
+;
+#X obj 489 105 table \$0-cos 1027;
+#X obj 489 127 table \$0-sin 1027;
+#N canvas 436 142 729 607 init-tables 0;
+#X obj 125 75 until;
+#X obj 125 104 f 0;
+#X obj 153 105 + 1;
+#X obj 125 53 t a b;
+#X obj 125 150 / 1024;
+#X obj 125 127 t a a;
+#X obj 343 417 tabwrite \$0-1+a2;
+#X obj 125 12 loadbang;
+#X obj 547 122 s \$0-cos;
+#X obj 509 175 s \$0-sin;
+#X msg 509 148 sinesum 1024 1;
+#X msg 547 97 cosinesum 1024 0 1;
+#X obj 509 67 loadbang;
+#X obj 124 412 tabwrite \$0-norm;
+#X msg 125 33 1027;
+#X text 106 499 writes f(a) = 1+a^2 rsp. normalization into tables
+;
+#X obj 124 330 sqrt;
+#X obj 125 214 *;
+#X obj 179 272 + 1;
+#X obj 125 241 t a a;
+#X obj 125 267 swap 1;
+#X obj 125 290 -;
+#X obj 125 310 /;
+#X obj 125 193 t a a;
+#X text 107 434 sqrt((1-$f1*$f1)/(1+$f1*$f1));
+#X text 341 434 1+$f1*$f1;
+#X msg 164 75 0;
+#X obj 452 361 + 0;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 0 5 0;
+#X connect 2 0 1 1;
+#X connect 3 0 0 0;
+#X connect 3 1 26 0;
+#X connect 4 0 23 0;
+#X connect 5 0 4 0;
+#X connect 5 1 27 0;
+#X connect 7 0 14 0;
+#X connect 10 0 9 0;
+#X connect 11 0 8 0;
+#X connect 12 0 11 0;
+#X connect 12 0 10 0;
+#X connect 14 0 3 0;
+#X connect 16 0 13 0;
+#X connect 17 0 19 0;
+#X connect 18 0 22 1;
+#X connect 18 0 6 0;
+#X connect 19 0 20 0;
+#X connect 19 1 18 0;
+#X connect 20 0 21 0;
+#X connect 20 1 21 1;
+#X connect 21 0 22 0;
+#X connect 22 0 16 0;
+#X connect 23 0 17 0;
+#X connect 23 1 17 1;
+#X connect 26 0 1 1;
+#X connect 27 0 6 1;
+#X connect 27 0 13 1;
+#X restore 489 45 pd init-tables;
+#X text 131 550 cf: James A. Moorer: "Synthesis of Complex Audio Spectra"
+and Dodge/Jerse: "Computer Music" page 163f;
+#X obj 132 89 phasor~ \$1;
+#X obj 132 46 inlet;
+#X connect 0 0 4 1;
+#X connect 1 0 5 0;
+#X connect 2 0 12 0;
+#X connect 3 0 4 0;
+#X connect 4 0 10 0;
+#X connect 5 0 2 0;
+#X connect 5 0 3 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 0 1;
+#X connect 9 0 10 1;
+#X connect 10 0 13 0;
+#X connect 11 0 12 1;
+#X connect 12 0 0 0;
+#X connect 14 0 6 0;
+#X connect 14 0 11 0;
+#X connect 22 0 1 0;
+#X connect 23 0 22 0;
diff --git a/l2ork_addons/rjlib/rj/s_fplaytable.pd b/l2ork_addons/rjlib/rj/s_fplaytable.pd
new file mode 100644
index 000000000..7658efbaa
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/s_fplaytable.pd
@@ -0,0 +1,19 @@
+#N canvas 155 209 450 300 10;
+#X obj 123 55 inlet;
+#X obj 124 166 tabplay~;
+#X msg 123 115 set \$1 \, bang;
+#X obj 124 220 outlet~;
+#X obj 201 219 outlet;
+#X obj 123 85 symbol;
+#X obj 262 56 inlet;
+#X obj 261 77 route loop;
+#X obj 221 169 spigot \$1;
+#X connect 0 0 5 0;
+#X connect 1 0 3 0;
+#X connect 1 1 4 0;
+#X connect 1 1 8 0;
+#X connect 2 0 1 0;
+#X connect 5 0 2 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 1;
+#X connect 8 0 5 0;
diff --git a/l2ork_addons/rjlib/rj/s_fplaytable2.pd b/l2ork_addons/rjlib/rj/s_fplaytable2.pd
new file mode 100644
index 000000000..985e30fa8
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/s_fplaytable2.pd
@@ -0,0 +1,23 @@
+#N canvas 0 22 450 300 10;
+#X obj 85 207 outlet~;
+#X obj 218 215 outlet~;
+#X obj 88 29 inlet;
+#X obj 86 141 makefilename %s-1;
+#X obj 219 142 makefilename %s-2;
+#X obj 85 113 symbol;
+#X obj 217 117 symbol;
+#X obj 245 34 inlet;
+#X obj 323 218 outlet;
+#X obj 86 162 s_fplaytable \$1;
+#X obj 218 163 s_fplaytable \$1;
+#X connect 2 0 5 0;
+#X connect 2 0 6 0;
+#X connect 3 0 9 0;
+#X connect 4 0 10 0;
+#X connect 5 0 3 0;
+#X connect 6 0 4 0;
+#X connect 7 0 9 1;
+#X connect 7 0 10 1;
+#X connect 9 0 0 0;
+#X connect 10 0 1 0;
+#X connect 10 1 8 0;
diff --git a/l2ork_addons/rjlib/rj/s_guitar-help.pd b/l2ork_addons/rjlib/rj/s_guitar-help.pd
new file mode 100644
index 000000000..55b7ebf79
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/s_guitar-help.pd
@@ -0,0 +1,71 @@
+#N canvas 185 305 935 524 10;
+#X msg 334 175 pitch \$1;
+#X floatatom 308 126 5 0 0 0 - - -;
+#X obj 218 296 soundoutput;
+#X msg 218 178 bang;
+#X floatatom 442 156 5 0 100 0 - - -;
+#X obj 442 176 / 100;
+#X msg 442 198 feedback \$1;
+#X floatatom 577 153 5 0 0 0 - - -;
+#X obj 577 173 mtof;
+#X msg 577 202 lpfreq \$1;
+#X floatatom 613 174 5 0 0 0 - - -;
+#X obj 308 149 t b a;
+#X msg 541 279 pickuppos \$1;
+#X msg 438 280 pluckpos \$1;
+#X floatatom 438 238 5 0 0 0 - - -;
+#X obj 438 258 / 100;
+#X floatatom 541 238 5 0 0 0 - - -;
+#X obj 541 258 / 100;
+#X obj 150 242 env~;
+#X obj 150 267 - 100;
+#X obj 151 292 vu 15 120 empty empty -1 -8 0 10 -66577 -1 1 0;
+#X obj 308 73 random 12;
+#X obj 308 8 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 384 72 random 2;
+#X obj 308 53 t b b;
+#X obj 385 101 * 12;
+#X obj 308 100 + 40;
+#X obj 345 102 +;
+#X obj 308 28 metro 250;
+#X obj 218 203 s_guitar myguitar;
+#X text 29 20 s_guitar;
+#X text 31 48 Karplus Strong Guitar;
+#X text 28 70 This isn't finished yet!;
+#X floatatom 134 128 5 0 0 0 - - -;
+#X obj 134 167 mtof;
+#X connect 0 0 29 1;
+#X connect 1 0 11 0;
+#X connect 3 0 29 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 29 1;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 8 0 10 0;
+#X connect 9 0 29 1;
+#X connect 11 0 29 0;
+#X connect 11 1 0 0;
+#X connect 12 0 29 1;
+#X connect 13 0 29 1;
+#X connect 14 0 15 0;
+#X connect 15 0 13 0;
+#X connect 16 0 17 0;
+#X connect 17 0 12 0;
+#X connect 18 0 19 0;
+#X connect 19 0 20 0;
+#X connect 21 0 27 0;
+#X connect 22 0 28 0;
+#X connect 23 0 25 0;
+#X connect 24 0 21 0;
+#X connect 24 1 23 0;
+#X connect 25 0 27 1;
+#X connect 26 0 1 0;
+#X connect 27 0 26 0;
+#X connect 28 0 24 0;
+#X connect 29 0 18 0;
+#X connect 29 0 2 0;
+#X connect 29 0 2 1;
+#X connect 33 0 34 0;
+#X connect 34 0 29 0;
diff --git a/l2ork_addons/rjlib/rj/s_guitar.pd b/l2ork_addons/rjlib/rj/s_guitar.pd
new file mode 100644
index 000000000..573313f87
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/s_guitar.pd
@@ -0,0 +1,309 @@
+#N canvas 83 121 950 563 10;
+#N canvas 0 0 987 586 del 0;
+#X obj 164 87 inlet~;
+#X obj 290 86 inlet~;
+#X obj 291 117 vd~ \$0-del1;
+#X obj 399 86 inlet;
+#X obj 189 187 outlet~;
+#X obj 583 82 inlet;
+#X msg 411 291 0.998849;
+#X obj 290 186 lop~ 10000;
+#X obj 399 123 clip -1 1;
+#X obj 164 261 delwrite~ \$0-del1 500;
+#X obj 484 100 block~ 8;
+#X obj 290 148 *~ 0.85;
+#X connect 0 0 9 0;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 2 0 11 0;
+#X connect 3 0 8 0;
+#X connect 5 0 7 1;
+#X connect 7 0 9 0;
+#X connect 8 0 11 1;
+#X connect 11 0 7 0;
+#X connect 11 0 4 0;
+#X restore 156 275 pd del;
+#X obj 156 443 outlet~;
+#X obj 580 144 rjdispatch \$0 feedback;
+#X obj 580 165 rjdispatch \$0 lpfreq;
+#X obj 580 118 inlet;
+#X obj 324 193 r \$0-feedback;
+#X obj 429 194 r \$0-lpfreq;
+#X obj 580 188 rjdispatch \$0 delay;
+#X obj 322 110 r \$0-delay;
+#N canvas 320 76 559 435 comb1 0;
+#X obj 278 114 *;
+#X obj 99 36 inlet~;
+#X obj 299 57 inlet;
+#X obj 98 310 outlet~;
+#X obj 299 84 t b f;
+#X obj 278 29 r \$0-delay;
+#X obj 159 257 r \$0-lpfreq;
+#X obj 99 286 lop~ 1000;
+#X msg 360 53 0.2;
+#X obj 360 27 loadbang;
+#N canvas 314 253 843 340 addsmp 0;
+#X obj 152 91 samplerate~;
+#X obj 152 135 swap 1000;
+#X obj 152 163 /;
+#X obj 152 42 loadbang;
+#X msg 164 68 bang;
+#X obj 71 42 inlet~;
+#X obj 71 235 outlet~;
+#X obj 71 205 +~ 0;
+#X text 245 48 add the duration of one sample to incoming signal. Use
+in front of [vd~];
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 2 1;
+#X connect 2 0 7 1;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 7 0;
+#X connect 7 0 6 0;
+#X restore 278 174 pd addsmp;
+#N canvas 0 0 450 300 dw 0;
+#X obj 111 71 delwrite~ \$0-comb1 500;
+#X obj 99 38 inlet~;
+#X obj 98 127 outlet~;
+#X connect 1 0 0 0;
+#X connect 1 0 2 0;
+#X restore 98 68 pd dw;
+#N canvas 0 0 450 300 dr 0;
+#X obj 168 103 inlet~;
+#X obj 243 100 inlet~;
+#X obj 243 137 vd~ \$0-comb1;
+#X obj 166 205 outlet~;
+#X obj 167 167 -~;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 2 0 4 1;
+#X connect 4 0 3 0;
+#X restore 98 235 pd dr;
+#X connect 0 0 10 0;
+#X connect 1 0 11 0;
+#X connect 2 0 4 0;
+#X connect 4 0 0 0;
+#X connect 4 1 0 1;
+#X connect 5 0 0 0;
+#X connect 6 0 7 1;
+#X connect 7 0 3 0;
+#X connect 8 0 4 0;
+#X connect 9 0 8 0;
+#X connect 10 0 12 1;
+#X connect 11 0 12 0;
+#X connect 12 0 7 0;
+#X restore 155 188 pd comb1;
+#N canvas 320 76 795 504 comb2 0;
+#X obj 278 114 *;
+#X obj 98 36 inlet~;
+#X obj 299 57 inlet;
+#X obj 98 260 outlet~;
+#X obj 299 84 t b f;
+#X obj 278 29 r \$0-delay;
+#X msg 360 53 0.2;
+#X obj 360 27 loadbang;
+#N canvas 314 253 843 340 addsmp 0;
+#X obj 152 91 samplerate~;
+#X obj 152 135 swap 1000;
+#X obj 152 163 /;
+#X obj 152 42 loadbang;
+#X msg 164 68 bang;
+#X obj 71 42 inlet~;
+#X obj 71 235 outlet~;
+#X obj 71 205 +~ 0;
+#X text 245 48 add the duration of one sample to incoming signal. Use
+in front of [vd~];
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 2 1;
+#X connect 2 0 7 1;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 7 0;
+#X connect 7 0 6 0;
+#X restore 278 144 pd addsmp;
+#N canvas 0 0 450 300 dw 0;
+#X obj 99 38 inlet~;
+#X obj 98 127 outlet~;
+#X obj 111 71 delwrite~ \$0-comb2 500;
+#X connect 0 0 1 0;
+#X connect 0 0 2 0;
+#X restore 98 64 pd dw;
+#N canvas 0 0 450 300 dr 0;
+#X obj 168 103 inlet~;
+#X obj 243 100 inlet~;
+#X obj 166 205 outlet~;
+#X obj 167 167 -~;
+#X obj 243 137 vd~ \$0-comb2;
+#X connect 0 0 3 0;
+#X connect 1 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 1;
+#X restore 98 231 pd dr;
+#X connect 0 0 8 0;
+#X connect 1 0 9 0;
+#X connect 2 0 4 0;
+#X connect 4 0 0 0;
+#X connect 4 1 0 1;
+#X connect 5 0 0 0;
+#X connect 6 0 4 0;
+#X connect 7 0 6 0;
+#X connect 8 0 10 1;
+#X connect 9 0 10 0;
+#X connect 10 0 3 0;
+#X restore 156 359 pd comb2;
+#X obj 580 251 rjdispatch \$0 pluckpos;
+#X obj 208 166 r \$0-pluckpos;
+#X obj 580 274 rjdispatch \$0 pickuppos;
+#X obj 209 332 r \$0-pickuppos;
+#X obj 631 118 rjloader s_guitar-\$1 \$0;
+#X obj 580 210 rjdispatch \$0 freq;
+#X obj 580 230 rjdispatch \$0 pitch;
+#N canvas 0 0 586 367 conversions 0;
+#X obj 50 85 swap 1000;
+#X obj 50 115 /;
+#X text 133 84 delay time can be set as frequency as well.;
+#X obj 50 144 s \$0-delay;
+#X obj 50 56 r \$0-freq;
+#X obj 46 195 r \$0-pitch;
+#X obj 46 221 mtof;
+#X obj 46 246 s \$0-freq;
+#X connect 0 0 1 0;
+#X connect 0 1 1 1;
+#X connect 1 0 3 0;
+#X connect 4 0 0 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X restore 583 429 pd conversions;
+#N canvas 389 267 780 343 play 0;
+#X obj 108 172 vline~;
+#X obj 108 200 tabread4~ \$0-excite;
+#X obj 108 229 outlet~;
+#X obj 108 64 inlet;
+#X obj 108 89 b;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-excite 515 float 3;
+#A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 1.5522e-10 0.00476191 0.00952382 0.0142857 0.0142857
+0.0142857 0.0142857 0.0142857 0.0142857 0.0142857 0.0142857 0.0142857
+0.0142857 0.0142857 0.0190476 0.0238095 0.0285715 0.0285715 0.0285715
+0.0285715 0.0285715 0.0285715 0.0357143 0.0428572 0.0428572 0.0428572
+0.0428572 0.05 0.0571429 0.0571429 0.0571429 0.0571429 0.0571429 0.0571429
+0.0571429 0.0642858 0.0714286 0.0714286 0.0714286 0.0714286 0.0785715
+0.0857144 0.0904763 0.0952382 0.1 0.1 0.1 0.104762 0.109524 0.114286
+0.114286 0.114286 0.128572 0.135714 0.142857 0.142857 0.142857 0.142857
+0.15 0.157143 0.161905 0.166667 0.171429 0.178572 0.185714 0.185714
+0.185714 0.2 0.2 0.2 0.214286 0.214286 0.214286 0.214286 0.214286 0.228572
+0.228572 0.242857 0.242857 0.242857 0.257143 0.257143 0.257143 0.261905
+0.266667 0.271429 0.276191 0.280953 0.3 0.3 0.314286 0.319048 0.32381
+0.328572 0.335715 0.342858 0.347619 0.352381 0.357143 0.371429 0.4
+0.404762 0.409524 0.414286 0.414286 0.414286 0.414286 0.428572 0.442858
+0.44762 0.452381 0.457143 0.464286 0.485715 0.491305 0.496895 0.502485
+0.508075 0.513665 0.519255 0.524845 0.530435 0.536025 0.541615 0.547205
+0.552796 0.558386 0.563976 0.569566 0.575156 0.580746 0.586336 0.591926
+0.597516 0.603106 0.608696 0.614286 0.619048 0.62381 0.628572 0.635715
+0.642858 0.64762 0.652382 0.671429 0.676191 0.680953 0.685715 0.692858
+0.700001 0.704763 0.709525 0.714287 0.714287 0.714287 0.719049 0.72381
+0.728572 0.735715 0.742858 0.74762 0.752382 0.757144 0.757144 0.757144
+0.757144 0.757144 0.77143 0.776191 0.780953 0.785715 0.785715 0.800001
+0.800001 0.800001 0.800001 0.800001 0.814287 0.814287 0.814287 0.828573
+0.828573 0.828573 0.828573 0.828573 0.842858 0.84762 0.852382 0.857144
+0.857144 0.857144 0.857144 0.857144 0.87143 0.87143 0.87143 0.87143
+0.87143 0.87143 0.87143 0.87143 0.87143 0.87143 0.87143 0.876192 0.880954
+0.885716 0.885716 0.885716 0.885716 0.885716 0.885716 0.885716 0.885716
+0.885716 0.885716 0.885716 0.885716 0.885716 0.885716 0.885716 0.885716
+0.885716 0.885716 0.885716 0.885716 0.885716 0.885716 0.885716 0.885716
+0.885716 0.885716 0.885716 0.885716 0.885716 0.885716 0.885716 0.885716
+0.885716 0.885716 0.885716 0.885716 0.885716 0.885716 0.885716 0.885716
+0.885716 0.885716 0.885716 0.885716 0.885716 0.885716 0.885716 0.880954
+0.876192 0.87143 0.87143 0.87143 0.87143 0.87143 0.87143 0.864287 0.857144
+0.857144 0.857144 0.857144 0.850001 0.842858 0.842858 0.842858 0.842858
+0.842858 0.842858 0.828573 0.828573 0.828573 0.823811 0.819049 0.814287
+0.814287 0.814287 0.809525 0.804763 0.800001 0.800001 0.800001 0.795239
+0.790477 0.785715 0.785715 0.785715 0.77143 0.77143 0.77143 0.766668
+0.761906 0.757144 0.757144 0.742858 0.738096 0.733334 0.728572 0.728572
+0.728572 0.72381 0.719049 0.714287 0.709525 0.704763 0.700001 0.700001
+0.685715 0.685715 0.685715 0.671429 0.671429 0.657144 0.657144 0.657144
+0.657144 0.650001 0.642858 0.642858 0.642858 0.628572 0.62381 0.619048
+0.600001 0.592858 0.571429 0.571429 0.571429 0.557143 0.557143 0.542858
+0.538096 0.533334 0.528572 0.521429 0.514286 0.514286 0.514286 0.5
+0.5 0.5 0.5 0.492858 0.485715 0.480953 0.476191 0.471429 0.464286 0.457143
+0.452381 0.447619 0.442858 0.435715 0.428572 0.428572 0.428572 0.414286
+0.414286 0.414286 0.414286 0.407143 0.4 0.395238 0.390476 0.385715
+0.378572 0.371429 0.366667 0.361905 0.357143 0.35 0.342857 0.338095
+0.333333 0.328572 0.321429 0.314286 0.309524 0.304762 0.3 0.295238
+0.290476 0.285714 0.278571 0.257143 0.257143 0.257143 0.257143 0.257143
+0.242857 0.242857 0.242857 0.242857 0.235714 0.228571 0.228571 0.228571
+0.214286 0.214286 0.214286 0.2 0.2 0.2 0.2 0.2 0.185714 0.185714 0.171428
+0.171428 0.171428 0.171428 0.171428 0.157143 0.157143 0.157143 0.142857
+0.142857 0.142857 0.128571 0.128571 0.128571 0.123809 0.119047 0.114286
+0.114286 0.0999998 0.0999998 0.0999998 0.0857141 0.0857141 0.0857141
+0.0857141 0.0857141 0.0714284 0.0666665 0.0619046 0.0571426 0.0571426
+0.0428569 0.0428569 0.0428569 0.0428569 0.0357141 0.0285712 0.0285712
+0.0285712 0.0142855 0.0142855 0.0142855 0.0142855 0.0142855 0.0142855
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;
+#X coords 0 1 514 -1 200 140 1;
+#X restore 343 87 graph;
+#X msg 345 260 const 0;
+#X obj 345 288 s \$0-excite;
+#N canvas 0 0 450 300 block 0;
+#X obj 176 137 del 10;
+#X msg 176 161 1;
+#X obj 106 136 spigot 1;
+#X obj 106 157 t a b;
+#X msg 175 116 0;
+#X obj 106 112 inlet;
+#X obj 106 187 outlet;
+#X connect 0 0 1 0;
+#X connect 1 0 2 1;
+#X connect 2 0 3 0;
+#X connect 3 0 6 0;
+#X connect 3 1 4 0;
+#X connect 3 1 0 0;
+#X connect 4 0 2 1;
+#X connect 5 0 2 0;
+#X restore 108 127 pd block;
+#X msg 108 150 1 0 0 \, 512 10;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 3 0 4 0;
+#X connect 4 0 8 0;
+#X connect 6 0 7 0;
+#X connect 8 0 9 0;
+#X connect 9 0 0 0;
+#X restore 156 139 pd play;
+#X obj 82 50 inlet;
+#X obj 322 166 vline~;
+#X msg 322 143 \$1 5;
+#X obj 155 217 *~ 0.5;
+#X obj 156 386 *~ 0.5;
+#X text 294 38 This isn't finished yet!;
+#X obj 82 83 route float;
+#X obj 82 154 s \$0-freq;
+#X obj 82 106 t b a;
+#X connect 0 0 10 0;
+#X connect 2 0 3 0;
+#X connect 3 0 7 0;
+#X connect 4 0 2 0;
+#X connect 5 0 0 2;
+#X connect 6 0 0 3;
+#X connect 7 0 16 0;
+#X connect 8 0 22 0;
+#X connect 9 0 23 0;
+#X connect 10 0 24 0;
+#X connect 11 0 13 0;
+#X connect 12 0 9 1;
+#X connect 14 0 10 1;
+#X connect 16 0 17 0;
+#X connect 17 0 11 0;
+#X connect 19 0 9 0;
+#X connect 20 0 26 0;
+#X connect 21 0 0 1;
+#X connect 22 0 21 0;
+#X connect 23 0 0 0;
+#X connect 24 0 1 0;
+#X connect 26 0 28 0;
+#X connect 26 1 19 0;
+#X connect 28 0 19 0;
+#X connect 28 1 27 0;
diff --git a/l2ork_addons/rjlib/rj/s_looper-help.pd b/l2ork_addons/rjlib/rj/s_looper-help.pd
new file mode 100644
index 000000000..f8c59fe13
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/s_looper-help.pd
@@ -0,0 +1,72 @@
+#N canvas 84 86 1015 642 10;
+#X msg 93 128 open;
+#X obj 92 434 soundoutput;
+#X msg 151 209 stop;
+#X msg 182 255 loop \$1;
+#X obj 182 235 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X msg 146 185 play 500;
+#X obj 589 249 random 32;
+#X obj 589 226 metro 125;
+#X obj 589 203 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X floatatom 498 485 8 0 0 3 dur_in_smps - -;
+#X floatatom 424 485 8 0 0 3 dur_in_ms - -;
+#X symbolatom 349 485 10 0 0 3 table_name - -;
+#X obj 349 435 unpack s f f f;
+#X floatatom 582 485 6 0 0 3 samplerate - -;
+#X obj 424 534 s \$0-duration;
+#X obj 649 170 r \$0-duration;
+#X obj 649 197 / 32;
+#X obj 263 452 bng 15 50 50 0 empty empty bang_on_start 0 25 1 10 -262144
+-1 -1;
+#X msg 133 160 play;
+#X text 176 160 all from start;
+#X text 217 185 play all starting 500 ms into sample;
+#X text 156 50 sample player with looping and file storage.;
+#X text 139 129 open a file;
+#X text 241 256 loop file;
+#X text 561 98 "playdiv <divs> <part> <duration in parts>" divides
+the file into as many equal length parts as the <divs> number following
+it specifies. Then it start playing part <part> and stops after <duration>
+parts.;
+#X msg 183 284 sr 22050;
+#X msg 589 307 playdiv 32 \$1 1;
+#X text 239 334 adjust fade-in time (default 2ms);
+#X text 155 83 Args: <NAME> <soundfile to autoload>;
+#X obj 729 275 hradio 15 1 0 8 empty empty empty 0 -8 0 10 -262144
+-1 -1 0;
+#X msg 729 303 playdiv 16 \$1 0.5;
+#X text 253 284 set samplerate of file (default 22050 Hz);
+#X text 533 73 The "playdiv" message:;
+#X text 461 434 sample file info;
+#X msg 185 306 sr 44100;
+#X obj 82 52 s_looper;
+#X obj 93 389 s_looper \$0-mysample filenotfound.wav;
+#X msg 186 334 fade 0;
+#X connect 0 0 36 0;
+#X connect 2 0 36 0;
+#X connect 3 0 36 0;
+#X connect 4 0 3 0;
+#X connect 5 0 36 0;
+#X connect 6 0 26 0;
+#X connect 7 0 6 0;
+#X connect 8 0 7 0;
+#X connect 10 0 14 0;
+#X connect 12 0 11 0;
+#X connect 12 1 10 0;
+#X connect 12 2 9 0;
+#X connect 12 3 13 0;
+#X connect 15 0 16 0;
+#X connect 16 0 7 1;
+#X connect 18 0 36 0;
+#X connect 25 0 36 0;
+#X connect 26 0 36 0;
+#X connect 29 0 30 0;
+#X connect 30 0 36 0;
+#X connect 34 0 36 0;
+#X connect 36 0 1 0;
+#X connect 36 1 1 1;
+#X connect 36 2 17 0;
+#X connect 36 3 12 0;
+#X connect 37 0 36 0;
diff --git a/l2ork_addons/rjlib/rj/s_looper.pd b/l2ork_addons/rjlib/rj/s_looper.pd
new file mode 100644
index 000000000..78fcc283d
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/s_looper.pd
@@ -0,0 +1,153 @@
+#N canvas 174 275 976 607 10;
+#X obj 168 565 outlet~;
+#X obj 208 518 outlet~;
+#X obj 167 483 s_playtable2;
+#X floatatom 728 435 8 0 0 3 dur_in_smps - -;
+#X floatatom 654 435 8 0 0 3 dur_in_ms - -;
+#X symbolatom 579 435 10 0 0 3 table_name - -;
+#X obj 579 385 unpack s f f f;
+#X floatatom 812 435 6 0 0 3 samplerate - -;
+#X obj 547 48 inlet;
+#X obj 547 80 rjdispatch \$0 open;
+#X obj 547 104 rjdispatch \$0 loop;
+#X obj 547 129 rjdispatch \$0 play;
+#X obj 547 153 rjdispatch \$0 stop;
+#X obj 579 298 r \$0-open;
+#X text 327 382 sample;
+#X text 296 356 gain speed;
+#X obj 167 330 f 0;
+#X text 204 329 start time;
+#X obj 371 212 metro 10000;
+#X obj 167 239 spigot;
+#X obj 206 217 r \$0-sample-loaded;
+#X obj 568 511 s \$0-sample-loaded;
+#X msg 568 490 1;
+#X obj 662 484 s \$0-duration;
+#X obj 445 190 r \$0-duration;
+#X obj 371 138 r \$0-loop;
+#X obj 371 189 spigot;
+#X obj 410 167 r \$0-sample-loaded;
+#X obj 167 182 r \$0-play;
+#X obj 312 475 r \$0-stop;
+#X msg 312 499 stop;
+#X msg 579 326 open;
+#X obj 167 355 list prepend 1 1;
+#X obj 167 382 list prepend \$0-sample;
+#X msg 185 303 0;
+#X obj 719 119 r \$0-loop;
+#X obj 719 144 select 0;
+#X obj 719 173 s \$0-stop;
+#X obj 547 175 rjdispatch \$0 playdiv;
+#X obj 185 279 r \$0-stop;
+#X obj 491 478 outlet;
+#N canvas 0 0 907 511 calcdivs 0;
+#X obj 111 45 r \$0-playdiv;
+#X obj 136 195 r \$0-duration;
+#X obj 111 218 swap;
+#X obj 111 246 /;
+#X obj 111 291 *;
+#X obj 111 355 outlet;
+#X obj 111 100 spigot;
+#X obj 150 78 r \$0-sample-loaded;
+#X obj 111 168 unpack 0 0 0;
+#X obj 174 296 *;
+#X obj 111 268 t a a;
+#X obj 111 320 pack 0 0;
+#X obj 111 135 t a a;
+#X obj 289 190 list length;
+#X obj 289 218 < 3;
+#X text 285 249 if list doesn't have duration (i.e. is < 3) \, then
+play only one division.;
+#X connect 0 0 6 0;
+#X connect 1 0 2 1;
+#X connect 2 0 3 0;
+#X connect 2 1 3 1;
+#X connect 3 0 10 0;
+#X connect 4 0 11 0;
+#X connect 6 0 12 0;
+#X connect 7 0 6 1;
+#X connect 8 0 2 0;
+#X connect 8 1 4 1;
+#X connect 8 2 9 1;
+#X connect 9 0 11 1;
+#X connect 10 0 4 0;
+#X connect 10 1 9 0;
+#X connect 11 0 5 0;
+#X connect 12 0 8 0;
+#X connect 12 1 13 0;
+#X connect 13 0 14 0;
+#X connect 14 0 9 1;
+#X restore 268 278 pd calcdivs;
+#X obj 421 478 outlet;
+#X obj 167 417 t a b;
+#X msg 358 502 0;
+#X msg 299 162 0;
+#X obj 74 229 s \$0-metro;
+#X msg 74 207 0;
+#X obj 357 111 r \$0-metro;
+#X obj 358 524 s \$0-metro;
+#X msg 301 303 0;
+#X obj 301 325 s \$0-metro;
+#X obj 547 199 rjdispatch \$0 sr;
+#X obj 547 222 rjdispatch \$0 fade;
+#X obj 652 296 r \$0-sr;
+#X obj 248 423 r \$0-sr;
+#X msg 248 445 sr \$1;
+#X obj 314 420 r \$0-fade;
+#X msg 314 443 fade \$1;
+#X msg 652 318 sr \$1 \, info;
+#X obj 579 356 u_samplebank2 \$0-sample \$2;
+#X obj 609 49 rjloader s_looper-\$1 \$0;
+#X connect 2 0 0 0;
+#X connect 2 1 1 0;
+#X connect 6 0 5 0;
+#X connect 6 0 22 0;
+#X connect 6 1 4 0;
+#X connect 6 1 23 0;
+#X connect 6 2 3 0;
+#X connect 6 3 7 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 38 0;
+#X connect 13 0 31 0;
+#X connect 16 0 32 0;
+#X connect 18 0 16 0;
+#X connect 19 0 16 0;
+#X connect 20 0 19 1;
+#X connect 22 0 21 0;
+#X connect 24 0 18 1;
+#X connect 25 0 26 0;
+#X connect 26 0 18 0;
+#X connect 27 0 26 1;
+#X connect 28 0 19 0;
+#X connect 28 0 47 0;
+#X connect 29 0 30 0;
+#X connect 29 0 44 0;
+#X connect 30 0 2 1;
+#X connect 31 0 60 0;
+#X connect 32 0 33 0;
+#X connect 33 0 43 0;
+#X connect 34 0 16 1;
+#X connect 35 0 36 0;
+#X connect 36 0 37 0;
+#X connect 38 0 52 0;
+#X connect 39 0 34 0;
+#X connect 41 0 32 0;
+#X connect 41 0 50 0;
+#X connect 43 0 2 0;
+#X connect 43 1 42 0;
+#X connect 44 0 49 0;
+#X connect 47 0 46 0;
+#X connect 48 0 26 0;
+#X connect 50 0 51 0;
+#X connect 52 0 53 0;
+#X connect 54 0 59 0;
+#X connect 55 0 56 0;
+#X connect 56 0 2 1;
+#X connect 57 0 58 0;
+#X connect 58 0 2 1;
+#X connect 59 0 60 0;
+#X connect 60 0 6 0;
+#X connect 60 0 40 0;
diff --git a/l2ork_addons/rjlib/rj/s_playtable-help.pd b/l2ork_addons/rjlib/rj/s_playtable-help.pd
new file mode 100644
index 000000000..57894cf7c
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/s_playtable-help.pd
@@ -0,0 +1,69 @@
+#N canvas 289 87 888 636 10;
+#X obj 634 443 openpanel;
+#X obj 633 518 table play-samp;
+#X msg 634 464 read -resize \$1 play-samp;
+#X obj 634 490 soundfiler;
+#X obj 634 416 bng 20 250 50 0 empty empty open-sample 0 -6 1 10 -262144
+-1 -1;
+#X obj 122 554 soundoutput;
+#X msg 158 209 play-samp 0.5 2;
+#X text 356 235 original gain \, original pitch \, start at 500 ms
+;
+#X msg 171 261 play-samp 1 1 500 250;
+#X msg 167 238 play-samp 1 1 500;
+#X msg 178 355 bang;
+#X text 220 355 repeat last instruction;
+#X obj 240 534 spigot;
+#X obj 295 535 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 240 562 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X msg 177 319 play-samp 0.8 -1 8000 8000;
+#X text 175 295 attenuated \, reversed \, starting at 8000ms \, playing
+for 8000ms;
+#X text 117 111 <table name> <gain> <transposition> <start location
+(ms)> <duration (ms)> <looping 0/1>;
+#X text 301 180 original gain \, original pitch \, start at 0 \, play
+for 8000ms;
+#X text 237 514 last outlet: bang at end of duration;
+#X text 355 259 original gain \, original pitch \, start at 500 ms
+\, play for 250ms;
+#X msg 122 158 play-samp;
+#X text 96 26 s_playtable;
+#X msg 271 420 sr 44100;
+#X msg 196 419 sr 22050;
+#X text 194 399 adjust file samplerate (Hz \, default 22050);
+#X text 116 56 Low level \, but flexible table-sample player;
+#X text 117 82 s_playtable is controlled through messages composed
+of:;
+#X text 303 203 attenuated \, transposed up an octave.Transposition
+is doen by resampling;
+#X msg 142 183 play-samp 1 1 0 8000;
+#X text 203 158 play all with original gain and original pitch;
+#X obj 122 493 s_playtable;
+#X msg 220 491 stop;
+#X text 266 494 stop playing;
+#X msg 270 462 fade \$1;
+#X floatatom 270 444 5 0 0 0 - - -;
+#X text 341 464 fade in/out time (default is 2msec);
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 4 0 0 0;
+#X connect 6 0 31 0;
+#X connect 8 0 31 0;
+#X connect 9 0 31 0;
+#X connect 10 0 31 0;
+#X connect 12 0 14 0;
+#X connect 12 0 31 0;
+#X connect 13 0 12 1;
+#X connect 15 0 31 0;
+#X connect 21 0 31 0;
+#X connect 23 0 31 1;
+#X connect 24 0 31 1;
+#X connect 29 0 31 0;
+#X connect 31 0 5 0;
+#X connect 31 0 5 1;
+#X connect 31 1 12 0;
+#X connect 32 0 31 1;
+#X connect 34 0 31 1;
+#X connect 35 0 34 0;
diff --git a/l2ork_addons/rjlib/rj/s_playtable.pd b/l2ork_addons/rjlib/rj/s_playtable.pd
new file mode 100644
index 000000000..23769e8c4
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/s_playtable.pd
@@ -0,0 +1,298 @@
+#N canvas 0 100 771 595 10;
+#X obj 540 82 inlet;
+#X obj 169 57 inlet;
+#X obj 169 489 outlet~;
+#X obj 169 384 tabread4~;
+#X obj 169 303 list prepend set;
+#X obj 169 329 list trim;
+#X obj 75 336 vline~;
+#N canvas 0 0 864 729 trigger-sample 0;
+#X text 20 155 Wait for the;
+#X text 18 169 cutoff to finish;
+#X text 41 447 set the upper line~ to start;
+#X text 40 466 at the first sample and go;
+#X text 39 487 forever (until the next trigger);
+#X obj 142 211 t b b;
+#X obj 297 626 s \$0-phase;
+#X obj 142 315 s \$0-cutoff;
+#X obj 142 53 inlet;
+#X obj 174 136 s \$0-cutoff;
+#X text 17 118 cut the sound off;
+#X obj 142 266 f;
+#X obj 264 55 inlet;
+#X obj 142 77 t b b;
+#X text 269 35 gain;
+#X obj 315 57 inlet;
+#X text 314 35 transpos;
+#X obj 297 454 * 1e+07;
+#X obj 299 435 f 1;
+#X obj 345 303 moses 0;
+#X obj 486 610 s \$0-phase;
+#X obj 486 457 * 1e+07;
+#X obj 487 438 f 1;
+#X obj 503 416 abs;
+#X obj 315 78 t a a;
+#X obj 299 307 < 0;
+#X obj 299 331 select 0 1;
+#X obj 299 285 f;
+#X obj 345 273 pow -1;
+#X obj 142 164 delay 2;
+#X obj 429 51 inlet;
+#X text 426 31 start;
+#X obj 578 50 inlet;
+#X obj 297 533 unpack 0 0;
+#X obj 297 561 + 0;
+#X obj 297 589 pack 0 0;
+#X obj 429 126 * 22.05;
+#X text 490 126 ms to samples;
+#X floatatom 325 106 5 0 0 0 - - -;
+#X text 575 30 duration;
+#X obj 578 81 select 0;
+#X obj 631 130 delay;
+#X obj 735 45 inlet;
+#X text 732 24 loops;
+#X obj 686 164 outlet;
+#X obj 631 104 - 2;
+#X obj 686 131 delay 2;
+#X obj 486 531 unpack 0 0;
+#X obj 486 559 + 0;
+#X obj 486 580 pack 0 0;
+#X msg 578 105 stop;
+#X obj 475 99 / 1000;
+#X obj 475 78 r \$0-sr;
+#X obj 486 478 pack 0 -2.205e+08;
+#X msg 486 500 1 0 \, \$2 \$1;
+#X obj 602 435 r \$0-sr;
+#X obj 602 456 * -10000;
+#X obj 406 435 r \$0-sr;
+#X obj 406 456 * 10000;
+#X obj 297 479 pack 0 2.205e+08;
+#X floatatom 506 172 5 0 0 0 - - -;
+#X msg 297 506 1 0 \, \$2 \$1;
+#X obj 686 97 r \$0-stop;
+#X obj 174 112 pack 0 2;
+#X obj 243 112 r \$0-fade;
+#X obj 631 222 s \$0-cutoff;
+#X obj 631 198 pack 0 2;
+#X obj 700 198 r \$0-fade;
+#X obj 649 73 r \$0-fade;
+#X connect 5 0 11 0;
+#X connect 5 1 27 0;
+#X connect 8 0 13 0;
+#X connect 11 0 7 0;
+#X connect 12 0 11 1;
+#X connect 13 0 29 0;
+#X connect 13 1 63 0;
+#X connect 15 0 24 0;
+#X connect 17 0 59 0;
+#X connect 18 0 17 0;
+#X connect 19 0 23 0;
+#X connect 19 1 18 1;
+#X connect 21 0 53 0;
+#X connect 22 0 21 0;
+#X connect 23 0 22 1;
+#X connect 24 0 27 1;
+#X connect 24 0 38 0;
+#X connect 24 1 28 0;
+#X connect 25 0 26 0;
+#X connect 26 0 18 0;
+#X connect 26 1 22 0;
+#X connect 27 0 25 0;
+#X connect 28 0 19 0;
+#X connect 29 0 5 0;
+#X connect 30 0 36 0;
+#X connect 32 0 40 0;
+#X connect 33 0 34 0;
+#X connect 33 1 35 1;
+#X connect 34 0 35 0;
+#X connect 35 0 6 0;
+#X connect 36 0 34 1;
+#X connect 36 0 48 1;
+#X connect 40 0 50 0;
+#X connect 40 1 45 0;
+#X connect 41 0 46 0;
+#X connect 41 0 66 0;
+#X connect 45 0 41 0;
+#X connect 46 0 44 0;
+#X connect 47 0 48 0;
+#X connect 47 1 49 1;
+#X connect 48 0 49 0;
+#X connect 49 0 20 0;
+#X connect 50 0 41 0;
+#X connect 51 0 36 1;
+#X connect 51 0 60 0;
+#X connect 52 0 51 0;
+#X connect 53 0 54 0;
+#X connect 54 0 47 0;
+#X connect 55 0 56 0;
+#X connect 56 0 53 1;
+#X connect 57 0 58 0;
+#X connect 58 0 59 1;
+#X connect 59 0 61 0;
+#X connect 61 0 33 0;
+#X connect 62 0 41 0;
+#X connect 62 0 46 0;
+#X connect 63 0 9 0;
+#X connect 64 0 63 1;
+#X connect 64 0 29 1;
+#X connect 66 0 65 0;
+#X connect 67 0 66 1;
+#X connect 68 0 45 1;
+#X connect 68 0 46 1;
+#X restore 192 238 pd trigger-sample;
+#X obj 186 417 r \$0-cutoff;
+#X obj 169 459 *~;
+#X obj 186 437 vline~;
+#X obj 75 302 r \$0-phase;
+#X text 162 19 IN: tablename gain transposition start(ms) duration(ms)
+loop(0/1);
+#X text 542 64 dispatcher (later);
+#X obj 466 302 unpack 0 0;
+#X obj 466 364 pack 0 0;
+#X msg 466 391 set \$1 \$2;
+#X msg 466 419 2.205e+08 1e+07;
+#X msg 466 271 22050 1000;
+#X floatatom 579 301 5 0 0 0 - - -;
+#X obj 533 329 * 10000;
+#X obj 466 330 * 10000;
+#X obj 74 431 snapshot~;
+#X obj 91 406 metro 100;
+#X obj 91 385 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X floatatom 74 457 10 0 0 0 - - -;
+#X obj 169 140 list;
+#N canvas 234 205 750 421 defaults 0;
+#X obj 158 237 select 0;
+#X msg 158 260 1;
+#X obj 118 47 inlet;
+#X text 165 329 gain;
+#X text 227 339 transpos;
+#X text 322 335 start;
+#X text 382 343 duration;
+#X obj 158 313 outlet;
+#X obj 231 237 select 0;
+#X msg 231 260 1;
+#X obj 231 313 outlet;
+#X obj 323 311 outlet;
+#X obj 385 315 outlet;
+#X obj 458 315 outlet;
+#X text 454 346 loops;
+#X text 457 365 later;
+#X obj 118 76 list split 1;
+#X obj 158 115 t a b;
+#X obj 158 176 unpack 1 2 3 4 5;
+#X text 268 137 defaults: gain 1 \, trans 1 \, start 0 \, dur 0==all
+\, loops 0;
+#X msg 190 138 1 1 0 0 0;
+#X connect 0 0 1 0;
+#X connect 0 1 7 0;
+#X connect 1 0 7 0;
+#X connect 2 0 16 0;
+#X connect 8 0 9 0;
+#X connect 8 1 10 0;
+#X connect 9 0 10 0;
+#X connect 16 1 17 0;
+#X connect 16 2 17 0;
+#X connect 17 0 18 0;
+#X connect 17 1 20 0;
+#X connect 18 0 0 0;
+#X connect 18 1 8 0;
+#X connect 18 2 11 0;
+#X connect 18 3 12 0;
+#X connect 18 4 13 0;
+#X connect 20 0 18 0;
+#X restore 215 199 pd defaults;
+#X obj 186 116 t b a;
+#X obj 169 85 route bang;
+#X obj 233 490 outlet;
+#X text 231 509 bangs at end of duration \, if specified;
+#X obj 169 167 t a a a;
+#N canvas 0 0 450 300 sr 0;
+#X obj 80 49 inlet;
+#X obj 80 101 route sr;
+#X obj 80 74 list trim;
+#X obj 133 123 outlet;
+#X obj 80 167 s \$0-sr;
+#X connect 0 0 2 0;
+#X connect 1 0 4 0;
+#X connect 1 1 3 0;
+#X connect 2 0 1 0;
+#X restore 540 111 pd sr;
+#N canvas 0 0 492 417 stop 0;
+#X obj 80 49 inlet;
+#X obj 80 74 list trim;
+#X obj 147 131 outlet;
+#X obj 80 101 route stop;
+#X obj 155 271 s \$0-cutoff;
+#X obj 80 128 b;
+#X obj 80 290 s \$0-stop;
+#X msg 80 268 stop;
+#X obj 80 247 delay 2;
+#X obj 151 201 r \$0-fade;
+#X obj 155 249 pack 0 2;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X connect 3 0 5 0;
+#X connect 3 1 2 0;
+#X connect 5 0 8 0;
+#X connect 5 0 10 0;
+#X connect 7 0 6 0;
+#X connect 8 0 7 0;
+#X connect 9 0 8 1;
+#X connect 9 0 10 1;
+#X connect 10 0 4 0;
+#X restore 540 133 pd stop;
+#X obj 26 273 r \$0-stop;
+#N canvas 0 0 492 417 fade 0;
+#X obj 80 49 inlet;
+#X obj 80 74 list trim;
+#X obj 147 131 outlet;
+#X obj 80 101 route stop;
+#X obj 80 187 s \$0-fade;
+#X obj 80 161 max 0;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X connect 3 0 5 0;
+#X connect 3 1 2 0;
+#X connect 5 0 4 0;
+#X restore 540 154 pd fade;
+#X connect 0 0 33 0;
+#X connect 1 0 29 0;
+#X connect 3 0 9 0;
+#X connect 4 0 5 0;
+#X connect 5 0 3 0;
+#X connect 6 0 3 0;
+#X connect 6 0 22 0;
+#X connect 7 0 30 0;
+#X connect 8 0 10 0;
+#X connect 9 0 2 0;
+#X connect 10 0 9 1;
+#X connect 11 0 6 0;
+#X connect 14 0 21 0;
+#X connect 14 1 20 0;
+#X connect 15 0 16 0;
+#X connect 16 0 17 0;
+#X connect 18 0 14 0;
+#X connect 19 0 20 1;
+#X connect 19 0 21 1;
+#X connect 20 0 15 1;
+#X connect 21 0 15 0;
+#X connect 22 0 25 0;
+#X connect 23 0 22 0;
+#X connect 24 0 23 0;
+#X connect 26 0 32 0;
+#X connect 27 0 7 1;
+#X connect 27 1 7 2;
+#X connect 27 2 7 3;
+#X connect 27 3 7 4;
+#X connect 27 4 7 5;
+#X connect 28 0 26 0;
+#X connect 28 1 26 1;
+#X connect 29 0 26 0;
+#X connect 29 1 28 0;
+#X connect 32 0 4 0;
+#X connect 32 1 7 0;
+#X connect 32 2 27 0;
+#X connect 33 0 34 0;
+#X connect 34 0 36 0;
+#X connect 35 0 6 0;
diff --git a/l2ork_addons/rjlib/rj/s_playtable2-help.pd b/l2ork_addons/rjlib/rj/s_playtable2-help.pd
new file mode 100644
index 000000000..ba3d31842
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/s_playtable2-help.pd
@@ -0,0 +1,75 @@
+#N canvas 289 87 898 692 10;
+#X obj 604 377 openpanel;
+#X obj 604 424 soundfiler;
+#X obj 604 350 bng 20 250 50 0 empty empty open-sample 0 -6 1 10 -262144
+-1 -1;
+#X obj 122 574 soundoutput;
+#X msg 158 209 play-samp 0.5 2;
+#X text 356 235 original gain \, original pitch \, start at 500 ms
+;
+#X msg 171 261 play-samp 1 1 500 250;
+#X msg 167 238 play-samp 1 1 500;
+#X msg 178 355 bang;
+#X text 220 355 repeat last instruction;
+#X obj 240 554 spigot;
+#X obj 295 555 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 240 582 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X msg 177 319 play-samp 0.8 -1 8000 8000;
+#X text 175 295 attenuated \, reversed \, starting at 8000ms \, playing
+for 8000ms;
+#X text 233 532 last outlet: bang at end of duration;
+#X text 355 259 original gain \, original pitch \, start at 500 ms
+\, play for 250ms;
+#X msg 122 158 play-samp;
+#X msg 278 420 sr 44100;
+#X msg 203 419 sr 22050;
+#X text 201 399 adjust file samplerate (Hz \, default 22050);
+#X text 303 203 attenuated \, transposed up an octave.Transposition
+is doen by resampling;
+#X msg 142 183 play-samp 1 1 0 8000;
+#X text 203 158 play all with original gain and original pitch;
+#X msg 220 511 stop;
+#X text 261 512 stop playing;
+#X text 96 26 s_playtable2;
+#X obj 602 537 table play-samp-1;
+#X obj 602 559 table play-samp-2;
+#X msg 604 398 read -resize \$1 play-samp-1 play-samp-2;
+#X text 115 50 Low level \, but flexible table-sample stereo player.
+Plays two tables called "basename-1" and "basename-2";
+#X text 117 111 <table base name> <gain> <transposition> <start location
+(ms)> <duration (ms)> <looping 0/1>;
+#X text 99 92 s_playtable2 is controlled through messages composed
+of:;
+#X obj 122 513 s_playtable2;
+#X text 395 591 The tables to play must have the same basename with
+"-1 " for left and "-2" for right channel appended.;
+#X obj 397 630 u_samplebank2 \$0-stereo-sample;
+#X text 617 630 does this automatically for you.;
+#X text 301 180 original gain \, original pitch \, start at 0 \, play
+for 8000ms;
+#X msg 280 461 fade \$1;
+#X floatatom 280 443 5 0 0 0 - - -;
+#X text 344 452 fade in/out time (default is 2msec);
+#X connect 0 0 29 0;
+#X connect 2 0 0 0;
+#X connect 4 0 33 0;
+#X connect 6 0 33 0;
+#X connect 7 0 33 0;
+#X connect 8 0 33 0;
+#X connect 10 0 12 0;
+#X connect 10 0 33 0;
+#X connect 11 0 10 1;
+#X connect 13 0 33 0;
+#X connect 17 0 33 0;
+#X connect 18 0 33 1;
+#X connect 19 0 33 1;
+#X connect 22 0 33 0;
+#X connect 24 0 33 1;
+#X connect 29 0 1 0;
+#X connect 33 0 3 0;
+#X connect 33 1 3 1;
+#X connect 33 2 10 0;
+#X connect 38 0 33 1;
+#X connect 39 0 38 0;
diff --git a/l2ork_addons/rjlib/rj/s_playtable2.pd b/l2ork_addons/rjlib/rj/s_playtable2.pd
new file mode 100644
index 000000000..42024ce62
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/s_playtable2.pd
@@ -0,0 +1,39 @@
+#N canvas 178 182 795 594 10;
+#X obj 540 82 inlet;
+#X obj 169 57 inlet;
+#X obj 236 489 outlet~;
+#X text 162 19 IN: tablename gain transposition start(ms) duration(ms)
+loop(0/1);
+#X text 542 64 dispatcher (later);
+#X obj 547 481 outlet;
+#X text 468 513 bangs at end of duration \, if specified;
+#X obj 366 491 outlet~;
+#X obj 236 286 s_playtable;
+#X obj 367 290 s_playtable;
+#X obj 236 137 list split 1;
+#X obj 236 229 list append;
+#X obj 367 230 list append;
+#X msg 236 202 \$1-1;
+#X msg 367 208 \$1-2;
+#X obj 169 94 route bang;
+#X obj 169 223 t b b;
+#X connect 0 0 9 1;
+#X connect 0 0 8 1;
+#X connect 1 0 15 0;
+#X connect 8 0 2 0;
+#X connect 8 1 5 0;
+#X connect 9 0 7 0;
+#X connect 10 0 14 0;
+#X connect 10 0 13 0;
+#X connect 10 1 11 1;
+#X connect 10 1 12 1;
+#X connect 10 2 11 1;
+#X connect 10 2 12 1;
+#X connect 11 0 8 0;
+#X connect 12 0 9 0;
+#X connect 13 0 11 0;
+#X connect 14 0 12 0;
+#X connect 15 0 16 0;
+#X connect 15 1 10 0;
+#X connect 16 0 8 0;
+#X connect 16 1 9 0;
diff --git a/l2ork_addons/rjlib/rj/s_rhodey-help.pd b/l2ork_addons/rjlib/rj/s_rhodey-help.pd
new file mode 100644
index 000000000..10ead076c
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/s_rhodey-help.pd
@@ -0,0 +1,119 @@
+#N canvas 413 82 803 659 10;
+#X obj 426 338 hsl 128 15 0 1 0 0 empty empty tone_(0...1) 20 7 1 10
+-262144 -1 -1 6200 1;
+#X obj 179 371 makenote 100 100;
+#X obj 179 394 pack 0 0;
+#X obj 178 531 soundoutput;
+#N canvas 145 44 577 652 random 0;
+#X obj 100 99 select 1;
+#X obj 100 35 inlet;
+#X obj 174 203 * 200;
+#X obj 174 231 t a a;
+#X obj 449 409 outlet;
+#X obj 100 367 random 12;
+#X obj 174 144 random 4;
+#X obj 174 169 + 1;
+#X obj 174 268 delay;
+#X obj 100 60 t a a;
+#X obj 340 192 spigot 1;
+#X obj 175 391 * 12;
+#X obj 175 367 random 3;
+#X obj 100 422 +;
+#X obj 100 479 outlet;
+#X obj 259 367 random 40;
+#X obj 259 387 + 40;
+#X obj 259 473 outlet;
+#X obj 100 332 t b b b;
+#X obj 100 451 + 40;
+#X obj 269 39 inlet;
+#X obj 449 380 - 1;
+#X connect 0 0 6 0;
+#X connect 1 0 9 0;
+#X connect 2 0 3 0;
+#X connect 3 0 8 0;
+#X connect 3 0 18 0;
+#X connect 3 1 21 0;
+#X connect 5 0 13 0;
+#X connect 6 0 7 0;
+#X connect 7 0 2 0;
+#X connect 8 0 10 0;
+#X connect 9 0 0 0;
+#X connect 9 1 10 1;
+#X connect 10 0 6 0;
+#X connect 11 0 13 1;
+#X connect 12 0 11 0;
+#X connect 13 0 19 0;
+#X connect 15 0 16 0;
+#X connect 16 0 17 0;
+#X connect 18 0 5 0;
+#X connect 18 1 12 0;
+#X connect 18 2 15 0;
+#X connect 19 0 14 0;
+#X connect 20 0 2 1;
+#X connect 21 0 4 0;
+#X restore 179 335 pd random notes;
+#X obj 179 313 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X floatatom 195 417 5 0 0 3 pitch - -;
+#X floatatom 288 415 5 0 0 3 velocity - -;
+#X floatatom 281 313 5 0 0 0 - - -;
+#X text 162 40 Rhodes piano realised with a 4-operator FM synth;
+#X text 168 96 Inlet 0: midi note/velocity pairs;
+#X text 159 615 It's a clone of the STK Rhodey.;
+#X obj 288 461 r \$0-in1;
+#X obj 423 383 s \$0-in1;
+#X msg 423 359 tone \$1;
+#X obj 423 468 s \$0-in1;
+#X floatatom 423 423 5 0 0 0 - - -;
+#X obj 535 467 s \$0-in1;
+#X floatatom 535 422 5 0 0 0 - - -;
+#X msg 304 488 help;
+#X obj 424 566 s \$0-in1;
+#X floatatom 424 521 5 0 0 0 - - -;
+#X msg 424 543 mod \$1;
+#X msg 423 444 vib-freq \$1;
+#X msg 535 444 vib-depth \$1;
+#X text 230 137 tone: float from 0...1 \, default is 0.5);
+#X text 230 178 vib-freq: vibrato frequency (try 11);
+#X text 231 198 vib-depth: vibrato depth (try 1);
+#X text 168 117 Inlet 1 accepts various methods:;
+#X obj 179 488 s_rhodey mypiano;
+#X text 167 65 Args: <Name>;
+#X obj 538 564 s \$0-in1;
+#X floatatom 538 519 5 0 127 0 - - -;
+#X msg 538 541 adsr24 \$1;
+#X text 231 243 adsr24: depth of the modulating operator's (2 and 4)
+envelopes (0-127 \, default 127) (this is an exotic parameter...);
+#X text 231 222 mod: modulation index for first operator pair (default
+1);
+#X obj 79 39 s_rhodey;
+#X obj 592 383 s \$0-in1;
+#X floatatom 592 338 5 0 0 0 - - -;
+#X msg 592 360 decay \$1;
+#X text 230 155 decay: decay of note in msec (default: 1500);
+#X connect 0 0 14 0;
+#X connect 1 0 2 0;
+#X connect 1 0 6 0;
+#X connect 1 1 2 1;
+#X connect 1 1 7 0;
+#X connect 2 0 29 0;
+#X connect 4 0 1 0;
+#X connect 4 1 1 1;
+#X connect 4 2 1 2;
+#X connect 5 0 4 0;
+#X connect 8 0 4 1;
+#X connect 12 0 29 1;
+#X connect 14 0 13 0;
+#X connect 16 0 23 0;
+#X connect 18 0 24 0;
+#X connect 19 0 29 1;
+#X connect 21 0 22 0;
+#X connect 22 0 20 0;
+#X connect 23 0 15 0;
+#X connect 24 0 17 0;
+#X connect 29 0 3 0;
+#X connect 29 0 3 1;
+#X connect 32 0 33 0;
+#X connect 33 0 31 0;
+#X connect 38 0 39 0;
+#X connect 39 0 37 0;
diff --git a/l2ork_addons/rjlib/rj/s_rhodey.pd b/l2ork_addons/rjlib/rj/s_rhodey.pd
new file mode 100644
index 000000000..7536d6ff5
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/s_rhodey.pd
@@ -0,0 +1,212 @@
+#N canvas 24 28 1106 642 10;
+#N canvas 424 366 478 366 pmosc 0;
+#X obj 119 199 cos~;
+#X obj 119 167 +~;
+#X obj 120 273 outlet~;
+#X obj 119 115 phasor~;
+#X obj 119 86 inlet~;
+#X obj 136 146 inlet~;
+#X obj 160 199 inlet~;
+#X obj 120 236 *~;
+#X text 38 21 phase-modulation oscillator;
+#X text 38 57 signal inlets: 1: freq \, 2: phase \, 3: amp;
+#X connect 0 0 7 0;
+#X connect 1 0 0 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 0;
+#X connect 5 0 1 1;
+#X connect 6 0 7 1;
+#X connect 7 0 2 0;
+#X restore 270 352 pd pmosc;
+#N canvas 424 366 478 366 pmosc 0;
+#X obj 119 199 cos~;
+#X obj 119 167 +~;
+#X obj 120 273 outlet~;
+#X obj 119 115 phasor~;
+#X obj 119 86 inlet~;
+#X obj 136 146 inlet~;
+#X obj 160 199 inlet~;
+#X obj 120 236 *~;
+#X text 38 21 phase-modulation oscillator;
+#X text 38 57 signal inlets: 1: freq \, 2: phase \, 3: amp;
+#X connect 0 0 7 0;
+#X connect 1 0 0 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 0;
+#X connect 5 0 1 1;
+#X connect 6 0 7 1;
+#X connect 7 0 2 0;
+#X restore 245 396 pd pmosc;
+#N canvas 424 366 478 366 pmosc 0;
+#X obj 119 199 cos~;
+#X obj 119 167 +~;
+#X obj 120 273 outlet~;
+#X obj 119 115 phasor~;
+#X obj 119 86 inlet~;
+#X obj 136 146 inlet~;
+#X obj 160 199 inlet~;
+#X obj 120 236 *~;
+#X text 38 21 phase-modulation oscillator;
+#X text 38 57 signal inlets: 1: freq \, 2: phase \, 3: amp;
+#X connect 0 0 7 0;
+#X connect 1 0 0 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 0;
+#X connect 5 0 1 1;
+#X connect 6 0 7 1;
+#X connect 7 0 2 0;
+#X restore 136 354 pd pmosc;
+#N canvas 424 366 478 366 pmosc 0;
+#X obj 119 199 cos~;
+#X obj 119 167 +~;
+#X obj 120 273 outlet~;
+#X obj 119 115 phasor~;
+#X obj 119 86 inlet~;
+#X obj 136 146 inlet~;
+#X obj 160 199 inlet~;
+#X obj 120 236 *~;
+#X text 38 21 phase-modulation oscillator;
+#X text 38 57 signal inlets: 1: freq \, 2: phase \, 3: amp;
+#X connect 0 0 7 0;
+#X connect 1 0 0 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 0;
+#X connect 5 0 1 1;
+#X connect 6 0 7 1;
+#X connect 7 0 2 0;
+#X restore 109 399 pd pmosc;
+#X obj 108 219 mtof;
+#X obj 107 523 outlet~;
+#X obj 397 149 * 0.535887;
+#X obj 667 149 * 0.108819;
+#X obj 671 281 / 127;
+#X obj 397 286 / 127;
+#X obj 397 127 / 127;
+#X obj 397 172 t a a;
+#X obj 397 308 t a a;
+#X obj 671 303 t a a;
+#X obj 667 169 t a a;
+#X obj 667 123 / 127;
+#X obj 671 253 r \$0-vel;
+#X obj 667 94 r \$0-vel;
+#X obj 397 258 r \$0-vel;
+#X obj 397 101 r \$0-vel;
+#X obj 108 81 unpack 0 0;
+#X obj 175 105 s \$0-vel;
+#X obj 108 57 inlet;
+#X text 691 513 + --> Out;
+#X text 644 527 2->1--/;
+#X text 525 513 Algorithm 5 is : 4->3--;
+#X text 551 471 4-op FM Rhodey piano based on algorithm 5:;
+#X text 310 371 op 4;
+#X text 277 413 op 3;
+#X text 144 417 op 1;
+#X text 169 370 op 2;
+#X text 791 216 op 4;
+#X text 819 324 op 3;
+#X text 572 330 op 1;
+#X text 573 198 op 2;
+#X obj 840 31 inlet;
+#X text 102 31 Midi: <pitch> <velocity>;
+#X obj 667 197 c_adsr 1 1 1000 0 40;
+#X obj 671 330 c_adsr 1 1 250 0 40;
+#X obj 397 334 c_adsr 1 1 1500 0 40;
+#X obj 397 199 c_adsr 1 1 1500 0 40;
+#X obj 108 493 c_xfade f;
+#X text 532 570 Clone of the STK Rhodey;
+#N canvas 29 43 450 300 vib 0;
+#X obj 144 64 inlet~;
+#X obj 145 210 outlet~;
+#X obj 144 168 +~;
+#X obj 200 95 osc~ 0;
+#X obj 200 64 inlet;
+#X obj 281 65 inlet;
+#X obj 199 123 *~ 0;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 3 0 6 0;
+#X connect 4 0 3 0;
+#X connect 5 0 6 1;
+#X connect 6 0 2 1;
+#X restore 108 278 pd vib;
+#X obj 840 103 rjdispatch \$0 tone;
+#X obj 840 123 rjdispatch \$0 mod;
+#X obj 899 80 rjloader s_rhodey-\$1 \$0;
+#X obj 190 493 pack 0 10;
+#X obj 190 470 r \$0-tone;
+#X obj 840 144 rjdispatch \$0 vib-freq;
+#X obj 840 166 rjdispatch \$0 vib-depth;
+#X obj 150 220 r \$0-vib-freq;
+#X obj 162 243 r \$0-vib-depth;
+#X obj 270 326 * 15;
+#X obj 136 330 * 0.5;
+#X obj 840 186 rjdispatch \$0 adsr24;
+#X obj 561 88 r \$0-adsr24;
+#X obj 561 112 / 127;
+#X obj 666 222 *~ 1;
+#X obj 397 221 *~ 1;
+#X obj 135 376 *~ 1;
+#X obj 182 329 r \$0-mod;
+#X obj 275 437 loadbang;
+#X msg 275 459 0.5;
+#X obj 479 173 r \$0-decay;
+#X obj 840 207 rjdispatch \$0 decay;
+#X obj 479 301 r \$0-decay;
+#X connect 0 0 1 1;
+#X connect 1 0 41 1;
+#X connect 2 0 60 0;
+#X connect 3 0 41 0;
+#X connect 4 0 43 0;
+#X connect 4 0 53 0;
+#X connect 4 0 54 0;
+#X connect 6 0 11 0;
+#X connect 7 0 14 0;
+#X connect 8 0 13 0;
+#X connect 9 0 12 0;
+#X connect 10 0 6 0;
+#X connect 11 0 40 0;
+#X connect 11 1 40 1;
+#X connect 12 0 39 0;
+#X connect 12 1 39 1;
+#X connect 13 0 38 0;
+#X connect 13 1 38 1;
+#X connect 14 0 37 0;
+#X connect 14 1 37 1;
+#X connect 15 0 7 0;
+#X connect 16 0 8 0;
+#X connect 17 0 15 0;
+#X connect 18 0 9 0;
+#X connect 19 0 10 0;
+#X connect 20 0 4 0;
+#X connect 20 1 21 0;
+#X connect 22 0 20 0;
+#X connect 35 0 44 0;
+#X connect 37 0 58 0;
+#X connect 38 0 1 2;
+#X connect 39 0 3 2;
+#X connect 40 0 59 0;
+#X connect 41 0 5 0;
+#X connect 43 0 3 0;
+#X connect 43 0 1 0;
+#X connect 44 0 45 0;
+#X connect 45 0 49 0;
+#X connect 47 0 41 2;
+#X connect 48 0 47 0;
+#X connect 49 0 50 0;
+#X connect 50 0 55 0;
+#X connect 51 0 43 1;
+#X connect 52 0 43 2;
+#X connect 53 0 0 0;
+#X connect 54 0 2 0;
+#X connect 55 0 65 0;
+#X connect 56 0 57 0;
+#X connect 57 0 58 1;
+#X connect 57 0 59 1;
+#X connect 58 0 0 2;
+#X connect 59 0 2 2;
+#X connect 60 0 3 1;
+#X connect 61 0 60 1;
+#X connect 62 0 63 0;
+#X connect 63 0 47 0;
+#X connect 64 0 40 3;
+#X connect 66 0 39 3;
diff --git a/l2ork_addons/rjlib/rj/sssad.pd b/l2ork_addons/rjlib/rj/sssad.pd
new file mode 100644
index 000000000..0fad7e9d8
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/sssad.pd
@@ -0,0 +1,257 @@
+#N canvas 144 48 1039 564 10;
+#X obj 159 26 inlet;
+#X obj 233 55 list prepend \$1;
+#X obj 233 160 list trim;
+#X obj 233 25 inlet;
+#X obj 22 308 b;
+#X obj 159 53 b;
+#X obj 233 223 route \$1;
+#X obj 543 358 b;
+#X obj 543 250 spigot;
+#X obj 669 72 loadbang;
+#X obj 669 250 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 669 194 select 0;
+#X obj 701 141 + 1;
+#X obj 669 120 t a a;
+#X obj 669 216 f 1;
+#X obj 226 476 outlet;
+#X obj 159 450 route bang;
+#X text 243 449 filter out empty lists;
+#X obj 610 474 list prepend persist \$1;
+#X obj 159 421 list append;
+#X text 231 110 on SSSAD we eavesdrop the communication;
+#X text 692 249 <- only the first instance responds to "save";
+#X text 165 540 2007/2008 fbar;
+#X text 829 95 Enhancement by Enrique Erne;
+#X obj 543 425 list append;
+#X obj 543 448 route bang;
+#X text 627 447 filter out empty lists here \, too.;
+#X obj 22 226 route set setonly;
+#X obj 80 273 route \$1;
+#X obj 80 251 list trim;
+#X obj 608 324 route \$1;
+#X obj 608 302 list trim;
+#X obj 543 277 route save saveonly;
+#X obj 610 498 list trim;
+#N canvas 513 284 322 286 s-SSSAD 0;
+#X obj 63 38 inlet;
+#X obj 63 176 s SSSAD;
+#X obj 123 176 s \$2-SSSAD;
+#X obj 123 39 loadbang;
+#N canvas 0 0 450 300 demux2 0;
+#X obj 114 91 == 0;
+#X obj 190 115 spigot;
+#X obj 61 43 inlet;
+#X obj 229 46 inlet;
+#X obj 61 113 spigot 1;
+#X obj 61 156 outlet;
+#X obj 190 157 outlet;
+#X connect 0 0 4 1;
+#X connect 1 0 6 0;
+#X connect 2 0 4 0;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X connect 3 0 1 1;
+#X connect 4 0 5 0;
+#X restore 63 137 pd demux2;
+#X obj 123 81 select 0;
+#X msg 123 103 0;
+#X msg 176 102 1;
+#X obj 123 59 list append \$2;
+#X obj 123 39 loadbang;
+#X obj 123 81 select 0;
+#X msg 123 103 0;
+#X msg 176 102 1;
+#X obj 123 59 list append \$2;
+#X connect 0 0 4 0;
+#X connect 3 0 8 0;
+#X connect 4 0 1 0;
+#X connect 4 1 2 0;
+#X connect 5 0 6 0;
+#X connect 5 1 7 0;
+#X connect 6 0 4 1;
+#X connect 7 0 4 1;
+#X connect 8 0 5 0;
+#X connect 9 0 13 0;
+#X connect 10 0 11 0;
+#X connect 10 1 12 0;
+#X connect 13 0 10 0;
+#X restore 233 84 pd s-SSSAD;
+#N canvas 539 183 330 246 r-SSSAD 0;
+#N canvas 0 0 450 300 mux2 0;
+#X obj 114 121 == 0;
+#X obj 190 145 spigot;
+#X obj 61 43 inlet;
+#X obj 229 66 inlet;
+#X obj 61 143 spigot 1;
+#X obj 61 186 outlet;
+#X obj 190 45 inlet;
+#X connect 0 0 4 1;
+#X connect 1 0 5 0;
+#X connect 2 0 4 0;
+#X connect 3 0 0 0;
+#X connect 3 0 1 1;
+#X connect 4 0 5 0;
+#X connect 6 0 1 0;
+#X restore 63 167 pd mux2;
+#X obj 63 16 r SSSAD;
+#X obj 86 41 r \$2-SSSAD;
+#X obj 63 201 outlet;
+#X obj 109 74 loadbang;
+#X obj 109 116 select 0;
+#X msg 109 138 0;
+#X msg 162 137 1;
+#X obj 109 94 list append \$2;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 1;
+#X connect 4 0 8 0;
+#X connect 5 0 6 0;
+#X connect 5 1 7 0;
+#X connect 6 0 0 2;
+#X connect 7 0 0 2;
+#X connect 8 0 5 0;
+#X restore 233 136 pd r-SSSAD;
+#N canvas 539 183 330 246 r-SSSAD_ADMIN 0;
+#N canvas 0 0 450 300 mux2 0;
+#X obj 114 121 == 0;
+#X obj 190 145 spigot;
+#X obj 61 43 inlet;
+#X obj 229 66 inlet;
+#X obj 61 143 spigot 1;
+#X obj 61 186 outlet;
+#X obj 190 45 inlet;
+#X connect 0 0 4 1;
+#X connect 1 0 5 0;
+#X connect 2 0 4 0;
+#X connect 3 0 0 0;
+#X connect 3 0 1 1;
+#X connect 4 0 5 0;
+#X connect 6 0 1 0;
+#X restore 63 177 pd mux2;
+#X obj 63 211 outlet;
+#X obj 63 16 r SSSAD_ADMIN;
+#X obj 86 41 r \$2-SSSAD_ADMIN;
+#X obj 109 75 loadbang;
+#X obj 109 117 select 0;
+#X msg 109 139 0;
+#X msg 162 138 1;
+#X obj 109 95 list append \$2;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 1;
+#X connect 4 0 8 0;
+#X connect 5 0 6 0;
+#X connect 5 1 7 0;
+#X connect 6 0 0 2;
+#X connect 7 0 0 2;
+#X connect 8 0 5 0;
+#X restore 543 190 pd r-SSSAD_ADMIN;
+#N canvas 513 284 322 286 s-SSSAD_ADMIN 0;
+#X obj 63 39 inlet;
+#N canvas 0 0 450 300 demux2 0;
+#X obj 114 91 == 0;
+#X obj 190 115 spigot;
+#X obj 61 43 inlet;
+#X obj 229 46 inlet;
+#X obj 61 113 spigot 1;
+#X obj 61 156 outlet;
+#X obj 190 157 outlet;
+#X connect 0 0 4 1;
+#X connect 1 0 6 0;
+#X connect 2 0 4 0;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X connect 3 0 1 1;
+#X connect 4 0 5 0;
+#X restore 63 137 pd demux2;
+#X obj 63 206 s SSSAD_ADMIN;
+#X obj 123 176 s \$2-SSSAD_ADMIN;
+#X obj 123 39 loadbang;
+#X obj 123 81 select 0;
+#X msg 123 103 0;
+#X msg 176 102 1;
+#X obj 123 59 list append \$2;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 3 0;
+#X connect 4 0 8 0;
+#X connect 5 0 6 0;
+#X connect 5 1 7 0;
+#X connect 6 0 1 1;
+#X connect 7 0 1 1;
+#X connect 8 0 5 0;
+#X restore 610 522 pd s-SSSAD_ADMIN;
+#X obj 669 95 value \$1.\$2.SSSAD.req;
+#X obj 701 164 value \$1.\$2.SSSAD.req;
+#N canvas 539 183 330 246 r-SSSAD_ADMIN 0;
+#N canvas 0 0 450 300 mux2 0;
+#X obj 114 121 == 0;
+#X obj 190 145 spigot;
+#X obj 61 43 inlet;
+#X obj 229 66 inlet;
+#X obj 61 143 spigot 1;
+#X obj 61 186 outlet;
+#X obj 190 45 inlet;
+#X connect 0 0 4 1;
+#X connect 1 0 5 0;
+#X connect 2 0 4 0;
+#X connect 3 0 0 0;
+#X connect 3 0 1 1;
+#X connect 4 0 5 0;
+#X connect 6 0 1 0;
+#X restore 63 177 pd mux2;
+#X obj 63 211 outlet;
+#X obj 63 16 r SSSAD_ADMIN;
+#X obj 86 41 r \$2-SSSAD_ADMIN;
+#X obj 109 75 loadbang;
+#X obj 109 117 select 0;
+#X msg 109 139 0;
+#X msg 162 138 1;
+#X obj 109 95 list append \$2;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 1;
+#X connect 4 0 8 0;
+#X connect 5 0 6 0;
+#X connect 5 1 7 0;
+#X connect 6 0 0 2;
+#X connect 7 0 0 2;
+#X connect 8 0 5 0;
+#X restore 22 187 pd r-SSSAD_ADMIN;
+#X connect 0 0 5 0;
+#X connect 1 0 34 0;
+#X connect 2 0 6 0;
+#X connect 3 0 1 0;
+#X connect 4 0 19 0;
+#X connect 5 0 19 0;
+#X connect 6 0 19 1;
+#X connect 6 0 24 1;
+#X connect 7 0 24 0;
+#X connect 8 0 32 0;
+#X connect 9 0 38 0;
+#X connect 11 0 14 0;
+#X connect 12 0 39 0;
+#X connect 13 0 11 0;
+#X connect 13 1 12 0;
+#X connect 14 0 8 1;
+#X connect 14 0 10 0;
+#X connect 16 1 15 0;
+#X connect 18 0 33 0;
+#X connect 19 0 16 0;
+#X connect 24 0 25 0;
+#X connect 25 1 18 0;
+#X connect 27 0 4 0;
+#X connect 27 1 29 0;
+#X connect 28 0 4 0;
+#X connect 29 0 28 0;
+#X connect 30 0 7 0;
+#X connect 31 0 30 0;
+#X connect 32 0 7 0;
+#X connect 32 1 31 0;
+#X connect 33 0 37 0;
+#X connect 35 0 2 0;
+#X connect 36 0 8 0;
+#X connect 38 0 13 0;
+#X connect 40 0 27 0;
diff --git a/l2ork_addons/rjlib/rj/u.txt b/l2ork_addons/rjlib/rj/u.txt
new file mode 100644
index 000000000..8eb13487b
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/u.txt
@@ -0,0 +1,6 @@
+u_fade
+u_record
+u_samplebank
+u_samplebank2
+u_splicetrans
+u_stereo
diff --git a/l2ork_addons/rjlib/rj/u_fade-help.pd b/l2ork_addons/rjlib/rj/u_fade-help.pd
new file mode 100644
index 000000000..44dfbcc37
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/u_fade-help.pd
@@ -0,0 +1,10 @@
+#N canvas 279 168 450 300 10;
+#X text 14 21 Create a named fader \, useful for automatic mixing;
+#X obj 63 60 osc~ 220;
+#X obj 63 131 u_fade myfade 0.1;
+#X obj 39 199 soundoutput;
+#X msg 268 60 \; myfade 0 500;
+#X msg 269 111 \; myfade 0.3 500;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 0 3 1;
diff --git a/l2ork_addons/rjlib/rj/u_fade.pd b/l2ork_addons/rjlib/rj/u_fade.pd
new file mode 100644
index 000000000..d06d8ec2d
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/u_fade.pd
@@ -0,0 +1,21 @@
+#N canvas 0 22 450 300 10;
+#X obj 80 26 inlet~;
+#X obj 77 230 outlet~;
+#X obj 77 206 *~;
+#X obj 145 143 line~;
+#X obj 144 28 inlet;
+#X obj 226 28 loadbang;
+#X obj 188 27 r \$1;
+#X obj 227 72 float \$2;
+#X msg 228 118 1;
+#X obj 227 95 sel 0;
+#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 7 0;
+#X connect 6 0 3 0;
+#X connect 7 0 9 0;
+#X connect 8 0 3 0;
+#X connect 9 0 8 0;
+#X connect 9 1 3 0;
diff --git a/l2ork_addons/rjlib/rj/u_record-help.pd b/l2ork_addons/rjlib/rj/u_record-help.pd
new file mode 100644
index 000000000..4b6065823
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/u_record-help.pd
@@ -0,0 +1,77 @@
+#N canvas 236 121 925 699 10;
+#X floatatom 265 537 8 0 0 3 dur_in_smps - -;
+#X floatatom 191 537 8 0 0 3 dur_in_ms - -;
+#X msg 320 304 info;
+#X obj 481 526 s_playtable;
+#X obj 481 568 soundoutput;
+#X msg 625 494 sr 44100;
+#X msg 626 471 sr 22050;
+#X symbolatom 116 537 10 0 0 3 table_name - -;
+#X msg 626 526 stop;
+#X text 103 54 Arguments:;
+#X obj 116 487 unpack s f f f;
+#X floatatom 349 537 6 0 0 3 samplerate - -;
+#X obj 481 474 symbol \$0-sample;
+#X msg 481 452 bang;
+#X text 103 122 Inlets: 1) audio signal to record;
+#X msg 296 188 start;
+#X msg 305 214 stop;
+#X text 369 298 output list containing: <table name> <recording duration
+in ms> <rec. duration in samples> <samplerate>;
+#X msg 314 242 clear;
+#X msg 315 269 normalize;
+#X text 391 270 normalize so that largest sample value is 1;
+#X text 383 632 s_playtable can be used to play the sample;
+#X obj 143 351 soundinput;
+#X text 289 448 <name> <maxdur>;
+#X text 359 215 stop recording;
+#X text 350 187 start recording. Does not clear previous recordings!
+;
+#X text 366 244 delete recording and set duration to 0;
+#X msg 318 389 clear \, start;
+#X text 419 389 You can combine messages like this.;
+#X msg 319 346 fade \$1;
+#X floatatom 319 329 5 0 0 0 - - -;
+#X text 393 333 default behaviour is to fade in and out over 5 msec.
+You can change this time with "fade x" messages;
+#X obj 116 447 u_record \$0-sample 2000;
+#X obj 117 261 osc~ 440;
+#X obj 143 387 *~ 0;
+#X obj 183 388 tgl 15 0 empty empty microphone 17 7 1 10 -262144 -1
+-1 0 1;
+#X obj 156 321 tgl 15 0 empty empty sine_wave 17 7 1 10 -262144 -1
+-1 0 1;
+#X obj 116 320 *~ 1;
+#X obj 43 18 u_record \$0-mysample;
+#X text 210 19 Record mono sounds into Pd tables.;
+#X text 143 73 <table name - required!>;
+#X text 333 72 <max duration in milliseconds \, optional \, default
+1000>;
+#X text 157 145 2) various messages \, see below;
+#X connect 2 0 32 1;
+#X connect 3 0 4 0;
+#X connect 3 0 4 1;
+#X connect 5 0 3 1;
+#X connect 6 0 3 1;
+#X connect 8 0 3 1;
+#X connect 10 0 7 0;
+#X connect 10 1 1 0;
+#X connect 10 2 0 0;
+#X connect 10 3 11 0;
+#X connect 12 0 3 0;
+#X connect 13 0 12 0;
+#X connect 15 0 32 1;
+#X connect 16 0 32 1;
+#X connect 18 0 32 1;
+#X connect 19 0 32 1;
+#X connect 22 0 34 0;
+#X connect 22 1 34 0;
+#X connect 27 0 32 1;
+#X connect 29 0 32 1;
+#X connect 30 0 29 0;
+#X connect 32 0 10 0;
+#X connect 33 0 37 0;
+#X connect 34 0 32 0;
+#X connect 35 0 34 1;
+#X connect 36 0 37 1;
+#X connect 37 0 32 0;
diff --git a/l2ork_addons/rjlib/rj/u_record.pd b/l2ork_addons/rjlib/rj/u_record.pd
new file mode 100644
index 000000000..d2a9e9e84
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/u_record.pd
@@ -0,0 +1,225 @@
+#N canvas 166 143 906 632 10;
+#X obj 450 57 table \$1;
+#X obj 59 263 tabwrite~ \$1;
+#X text 554 60 \$2: max table length in milliseconds;
+#X text 555 40 \$1: table name;
+#N canvas 267 39 862 712 init 0;
+#X obj 86 62 loadbang;
+#X obj 86 222 f \$2;
+#X obj 118 118 samplerate~;
+#X obj 86 450 s \$1;
+#X msg 86 424 resize \$1;
+#X obj 118 147 s \$0-sr;
+#X obj 115 350 s \$0-maxdur;
+#X obj 86 255 select 0;
+#X msg 86 275 1000;
+#X msg 164 58 bang;
+#X obj 86 85 t b b;
+#X obj 86 316 f;
+#X floatatom 39 352 5 0 0 0 - - -;
+#N canvas 384 244 568 337 ms2smps 0;
+#X obj 202 160 samplerate~;
+#X obj 202 183 / 1000;
+#X obj 202 135 loadbang;
+#X obj 135 134 inlet;
+#X obj 135 228 outlet;
+#X msg 276 134 bang;
+#X obj 135 183 * 22.05;
+#X connect 0 0 1 0;
+#X connect 1 0 6 1;
+#X connect 2 0 0 0;
+#X connect 3 0 6 0;
+#X connect 5 0 0 0;
+#X connect 6 0 4 0;
+#X restore 86 401 pd ms2smps;
+#X connect 0 0 10 0;
+#X connect 1 0 7 0;
+#X connect 2 0 5 0;
+#X connect 4 0 3 0;
+#X connect 7 0 8 0;
+#X connect 7 1 11 0;
+#X connect 8 0 11 0;
+#X connect 9 0 10 0;
+#X connect 10 0 1 0;
+#X connect 10 1 2 0;
+#X connect 11 0 6 0;
+#X connect 11 0 12 0;
+#X connect 11 0 13 0;
+#X connect 13 0 4 0;
+#X restore 450 80 pd init;
+#X obj 219 49 inlet;
+#X obj 72 233 r \$0-tw;
+#X obj 219 483 outlet;
+#X obj 219 336 symbol \$1;
+#X obj 219 460 pack s 0 0 22050;
+#X obj 328 434 r \$0-sr;
+#X obj 219 78 list trim;
+#X obj 449 206 timer;
+#N canvas 561 97 325 355 start 0;
+#X obj 77 48 inlet;
+#X obj 151 97 outlet;
+#X obj 77 70 route start;
+#X obj 77 250 s \$0-tw;
+#X msg 77 222 start;
+#X obj 100 195 s \$0-start;
+#X obj 123 164 s \$0-cut;
+#X msg 123 143 1;
+#X obj 77 115 t b b b;
+#X connect 0 0 2 0;
+#X connect 2 0 8 0;
+#X connect 2 1 1 0;
+#X connect 4 0 3 0;
+#X connect 7 0 6 0;
+#X connect 8 0 4 0;
+#X connect 8 1 5 0;
+#X connect 8 2 7 0;
+#X restore 219 114 pd start;
+#N canvas 0 0 464 491 stop 0;
+#X obj 77 48 inlet;
+#X obj 144 97 outlet;
+#X obj 77 70 route stop;
+#X obj 77 265 t b b;
+#X obj 77 360 s \$0-tw;
+#X obj 123 219 r \$0-fade;
+#X obj 77 244 delay 5;
+#X obj 109 163 s \$0-cut;
+#X obj 77 115 t b b;
+#X text 140 248 wait for fade in;
+#X obj 109 295 s \$0-stop;
+#X msg 77 332 stop;
+#X msg 109 142 0;
+#X connect 0 0 2 0;
+#X connect 2 0 8 0;
+#X connect 2 1 1 0;
+#X connect 3 0 11 0;
+#X connect 3 1 10 0;
+#X connect 5 0 6 1;
+#X connect 6 0 3 0;
+#X connect 8 0 6 0;
+#X connect 8 1 12 0;
+#X connect 11 0 4 0;
+#X connect 12 0 7 0;
+#X restore 219 139 pd stop;
+#N canvas 0 0 450 300 info 0;
+#X obj 77 48 inlet;
+#X obj 144 97 outlet;
+#X obj 77 70 route info;
+#X obj 77 158 s \$0-info;
+#X obj 77 137 b;
+#X connect 0 0 2 0;
+#X connect 2 0 4 0;
+#X connect 2 1 1 0;
+#X connect 4 0 3 0;
+#X restore 219 164 pd info;
+#N canvas 0 0 450 300 clear 0;
+#X obj 77 48 inlet;
+#X obj 151 96 outlet;
+#X obj 77 70 route clear;
+#X obj 77 160 s \$1;
+#X msg 77 131 const 0;
+#X obj 137 162 s \$0-duration-ms;
+#X msg 137 132 0;
+#X connect 0 0 2 0;
+#X connect 2 0 4 0;
+#X connect 2 0 6 0;
+#X connect 2 1 1 0;
+#X connect 4 0 3 0;
+#X connect 6 0 5 0;
+#X restore 219 186 pd clear;
+#N canvas 0 0 450 300 normalize 0;
+#X obj 77 48 inlet;
+#X obj 151 96 outlet;
+#X obj 77 70 route clear;
+#X obj 77 160 s \$1;
+#X msg 77 131 normalize 1;
+#X connect 0 0 2 0;
+#X connect 2 0 4 0;
+#X connect 2 1 1 0;
+#X connect 4 0 3 0;
+#X restore 219 207 pd normalize;
+#X obj 481 179 b;
+#X obj 449 180 b;
+#X obj 449 131 r \$0-start;
+#X obj 481 154 r \$0-stop;
+#X obj 449 296 s \$0-duration-ms;
+#X obj 255 362 r \$0-duration-ms;
+#X floatatom 510 513 8 0 0 3 dur_in_smps - -;
+#X floatatom 436 513 8 0 0 3 dur_in_ms - -;
+#X symbolatom 361 513 10 0 0 3 table_name - -;
+#X obj 361 463 unpack s f f f;
+#X floatatom 594 513 6 0 0 3 samplerate - -;
+#X obj 255 384 t a a;
+#X obj 219 304 b;
+#X obj 219 280 r \$0-info;
+#X obj 449 255 min \$2;
+#X obj 488 233 r \$0-maxdur;
+#X obj 59 46 inlet~;
+#X floatatom 460 277 5 0 0 0 - - -;
+#X floatatom 405 233 5 0 0 0 - - -;
+#N canvas 384 244 568 337 ms2smps 0;
+#X obj 202 160 samplerate~;
+#X obj 202 183 / 1000;
+#X obj 202 135 loadbang;
+#X obj 135 134 inlet;
+#X obj 135 228 outlet;
+#X msg 276 134 bang;
+#X obj 135 183 * 22.05;
+#X connect 0 0 1 0;
+#X connect 1 0 6 1;
+#X connect 2 0 0 0;
+#X connect 3 0 6 0;
+#X connect 5 0 0 0;
+#X connect 6 0 4 0;
+#X restore 291 408 pd ms2smps;
+#X obj 59 194 *~;
+#X obj 77 152 pack 0 5;
+#X obj 77 95 r \$0-cut;
+#N canvas 0 0 450 300 fade 0;
+#X obj 77 48 inlet;
+#X obj 144 98 outlet;
+#X obj 77 132 s \$0-fade;
+#X obj 77 70 route fade;
+#X obj 77 108 f 5;
+#X connect 0 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 1 1 0;
+#X connect 4 0 2 0;
+#X restore 219 230 pd fade;
+#X obj 130 122 r \$0-fade;
+#X obj 77 173 line~;
+#X connect 5 0 11 0;
+#X connect 6 0 1 0;
+#X connect 8 0 9 0;
+#X connect 9 0 7 0;
+#X connect 10 0 9 3;
+#X connect 11 0 13 0;
+#X connect 12 0 32 0;
+#X connect 12 0 36 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 17 0;
+#X connect 17 0 41 0;
+#X connect 18 0 12 1;
+#X connect 19 0 12 0;
+#X connect 20 0 19 0;
+#X connect 21 0 18 0;
+#X connect 23 0 29 0;
+#X connect 27 0 26 0;
+#X connect 27 1 25 0;
+#X connect 27 2 24 0;
+#X connect 27 3 28 0;
+#X connect 29 0 9 1;
+#X connect 29 1 37 0;
+#X connect 30 0 8 0;
+#X connect 31 0 30 0;
+#X connect 32 0 22 0;
+#X connect 32 0 35 0;
+#X connect 33 0 32 1;
+#X connect 34 0 38 0;
+#X connect 37 0 9 2;
+#X connect 38 0 1 0;
+#X connect 39 0 43 0;
+#X connect 40 0 39 0;
+#X connect 42 0 39 1;
+#X connect 43 0 38 1;
diff --git a/l2ork_addons/rjlib/rj/u_samplebank-help.pd b/l2ork_addons/rjlib/rj/u_samplebank-help.pd
new file mode 100644
index 000000000..451feb433
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/u_samplebank-help.pd
@@ -0,0 +1,57 @@
+#N canvas 238 97 769 616 10;
+#X declare -path .;
+#X floatatom 255 487 8 0 0 3 dur_in_smps - -;
+#X floatatom 181 487 8 0 0 3 dur_in_ms - -;
+#X msg 140 282 info;
+#X msg 106 213 open;
+#X msg 142 335 sr 44100 \, info;
+#X msg 141 360 sr 22050 \, info;
+#X obj 440 475 s_playtable;
+#X obj 440 517 soundoutput;
+#X msg 584 443 sr 44100;
+#X msg 585 420 sr 22050;
+#X symbolatom 106 487 10 0 0 3 table_name - -;
+#X msg 585 475 stop;
+#X text 148 212 load a sample with opendialog;
+#X text 308 246 load a sample by path;
+#X text 262 339 Change the file samplerate \, that is used to calculate
+the duration in milliseconds;
+#X text 315 580 s_playtable can be used to play tables in the samplebank.
+;
+#X text 56 16 u_samplebank;
+#X text 68 101 Arguments:;
+#X msg 123 246 open file_not_found.wav;
+#X text 95 43 Utility patch to load sample files into Pd tables. Also
+calculates duration in milliseconds. Available in stereo as [u_samplebank2]
+as well.;
+#X text 202 275 output list containing: <table name> <duration in ms>
+<duration in samples> <samplerate>;
+#X obj 106 437 unpack s f f f;
+#X floatatom 339 487 6 0 0 3 samplerate - -;
+#X text 108 120 <table name - required!> <path to soundfile - optional>
+;
+#X obj 440 423 symbol \$0-sample;
+#X obj 106 397 u_samplebank \$0-sample;
+#X msg 440 401 bang;
+#X obj 173 169 declare -path .;
+#X text 101 145 You can add paths to search for soundfiles using "declare".
+;
+#X text 101 170 Just add;
+#X text 289 169 to your _main.pd patch.;
+#X connect 2 0 25 0;
+#X connect 3 0 25 0;
+#X connect 4 0 25 0;
+#X connect 5 0 25 0;
+#X connect 6 0 7 0;
+#X connect 6 0 7 1;
+#X connect 8 0 6 1;
+#X connect 9 0 6 1;
+#X connect 11 0 6 1;
+#X connect 18 0 25 0;
+#X connect 21 0 10 0;
+#X connect 21 1 1 0;
+#X connect 21 2 0 0;
+#X connect 21 3 22 0;
+#X connect 24 0 6 0;
+#X connect 25 0 21 0;
+#X connect 26 0 24 0;
diff --git a/l2ork_addons/rjlib/rj/u_samplebank.pd b/l2ork_addons/rjlib/rj/u_samplebank.pd
new file mode 100644
index 000000000..742a71965
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/u_samplebank.pd
@@ -0,0 +1,65 @@
+#N canvas 346 149 858 647 10;
+#X obj 514 93 table \$1;
+#X obj 405 304 openpanel;
+#X obj 405 452 soundfiler;
+#X obj 314 208 bng 20 250 50 0 empty empty open-sample 0 -6 1 10 -262144
+-1 -1;
+#X obj 67 54 inlet;
+#X obj 67 90 list trim;
+#X obj 405 371 symbol;
+#X obj 534 281 list append \$2;
+#X obj 534 304 select 0;
+#X obj 534 257 loadbang;
+#X obj 197 361 / 22.05;
+#X obj 260 361 / 1000;
+#X obj 260 340 r \$0-sr;
+#X obj 67 167 s \$0-sr;
+#X obj 197 323 t a a;
+#X obj 108 491 outlet;
+#X obj 472 304 list;
+#X obj 405 206 b;
+#X msg 405 426 read -resize \$1 \$2;
+#X msg 494 363 bang;
+#X obj 405 402 list append \$1;
+#X obj 405 486 s \$0-samples;
+#X obj 133 221 r \$0-samples;
+#X obj 197 302 f;
+#X obj 67 122 route sr info open;
+#X obj 108 383 symbol \$1;
+#X obj 405 165 route bang;
+#X obj 108 463 list;
+#X obj 108 251 t b a;
+#X obj 108 437 pack s 0 0 22050;
+#X obj 217 411 r \$0-sr;
+#X connect 1 0 6 0;
+#X connect 2 0 21 0;
+#X connect 3 0 1 0;
+#X connect 4 0 5 0;
+#X connect 5 0 24 0;
+#X connect 6 0 20 0;
+#X connect 7 0 8 0;
+#X connect 8 1 6 0;
+#X connect 9 0 7 0;
+#X connect 10 0 29 1;
+#X connect 11 0 10 1;
+#X connect 12 0 11 0;
+#X connect 14 0 10 0;
+#X connect 14 1 29 2;
+#X connect 16 0 6 0;
+#X connect 17 0 1 0;
+#X connect 18 0 2 0;
+#X connect 19 0 6 0;
+#X connect 20 0 18 0;
+#X connect 22 0 28 0;
+#X connect 23 0 14 0;
+#X connect 24 0 13 0;
+#X connect 24 1 28 0;
+#X connect 24 2 26 0;
+#X connect 25 0 29 0;
+#X connect 26 0 17 0;
+#X connect 26 1 16 0;
+#X connect 27 0 15 0;
+#X connect 28 0 25 0;
+#X connect 28 1 23 0;
+#X connect 29 0 27 0;
+#X connect 30 0 29 3;
diff --git a/l2ork_addons/rjlib/rj/u_samplebank2-help.pd b/l2ork_addons/rjlib/rj/u_samplebank2-help.pd
new file mode 100644
index 000000000..7c85f9db9
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/u_samplebank2-help.pd
@@ -0,0 +1,59 @@
+#N canvas 238 97 781 672 10;
+#X declare -path .;
+#X floatatom 255 507 8 0 0 3 dur_in_smps - -;
+#X floatatom 181 507 8 0 0 3 dur_in_ms - -;
+#X msg 140 302 info;
+#X msg 106 233 open;
+#X msg 142 355 sr 44100 \, info;
+#X msg 141 380 sr 22050 \, info;
+#X obj 440 537 soundoutput;
+#X msg 584 463 sr 44100;
+#X msg 585 440 sr 22050;
+#X symbolatom 106 547 12 0 0 3 table_base_name - -;
+#X msg 585 495 stop;
+#X text 148 232 load a sample with opendialog;
+#X text 308 266 load a sample by path;
+#X text 262 359 Change the file samplerate \, that is used to calculate
+the duration in milliseconds;
+#X text 68 131 Arguments:;
+#X msg 123 266 open file_not_found.wav;
+#X text 202 295 output list containing: <table name> <duration in ms>
+<duration in samples> <samplerate>;
+#X obj 106 457 unpack s f f f;
+#X floatatom 339 507 6 0 0 3 samplerate - -;
+#X text 108 150 <table name - required!> <path to soundfile - optional>
+;
+#X obj 440 443 symbol \$0-sample;
+#X msg 440 421 bang;
+#X text 56 16 u_samplebank2;
+#X text 95 43 Utility patch to load sample stereo files into Pd tables.
+Also calculates duration in milliseconds. Available in mono as [u_samplebank]
+as well.;
+#X obj 106 417 u_samplebank2 \$0-sample;
+#X text 95 92 Left channel will be in table "ARGUMENT-1" \, right channel
+is in table "ARGUMENT-2";
+#X obj 440 495 s_playtable2;
+#X text 315 600 s_playtable2 can be used to play stereo samples in
+the samplebank.;
+#X obj 183 199 declare -path .;
+#X text 111 175 You can add paths to search for soundfiles using "declare".
+;
+#X text 111 200 Just add;
+#X text 299 199 to your _main.pd patch.;
+#X connect 2 0 24 0;
+#X connect 3 0 24 0;
+#X connect 4 0 24 0;
+#X connect 5 0 24 0;
+#X connect 7 0 26 1;
+#X connect 8 0 26 1;
+#X connect 10 0 26 1;
+#X connect 15 0 24 0;
+#X connect 17 0 9 0;
+#X connect 17 1 1 0;
+#X connect 17 2 0 0;
+#X connect 17 3 18 0;
+#X connect 20 0 26 0;
+#X connect 21 0 20 0;
+#X connect 24 0 17 0;
+#X connect 26 0 6 0;
+#X connect 26 1 6 1;
diff --git a/l2ork_addons/rjlib/rj/u_samplebank2.pd b/l2ork_addons/rjlib/rj/u_samplebank2.pd
new file mode 100644
index 000000000..f5e863dc9
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/u_samplebank2.pd
@@ -0,0 +1,66 @@
+#N canvas 346 149 858 647 10;
+#X obj 405 304 openpanel;
+#X obj 405 452 soundfiler;
+#X obj 314 208 bng 20 250 50 0 empty empty open-sample 0 -6 1 10 -262144
+-1 -1;
+#X obj 67 54 inlet;
+#X obj 67 90 list trim;
+#X obj 405 371 symbol;
+#X obj 534 281 list append \$2;
+#X obj 534 304 select 0;
+#X obj 534 257 loadbang;
+#X obj 197 361 / 22.05;
+#X obj 260 361 / 1000;
+#X obj 260 340 r \$0-sr;
+#X obj 67 167 s \$0-sr;
+#X obj 197 323 t a a;
+#X obj 108 491 outlet;
+#X obj 472 304 list;
+#X obj 405 206 b;
+#X msg 494 363 bang;
+#X obj 405 402 list append \$1;
+#X obj 405 486 s \$0-samples;
+#X obj 133 221 r \$0-samples;
+#X obj 197 302 f;
+#X obj 67 122 route sr info open;
+#X obj 108 383 symbol \$1;
+#X obj 405 165 route bang;
+#X obj 108 463 list;
+#X obj 108 251 t b a;
+#X obj 108 437 pack s 0 0 22050;
+#X obj 217 411 r \$0-sr;
+#X obj 514 93 table \$1-1;
+#X obj 514 115 table \$1-2;
+#X msg 405 426 read -resize \$1 \$2-1 \$2-2;
+#X connect 0 0 5 0;
+#X connect 1 0 19 0;
+#X connect 2 0 0 0;
+#X connect 3 0 4 0;
+#X connect 4 0 22 0;
+#X connect 5 0 18 0;
+#X connect 6 0 7 0;
+#X connect 7 1 5 0;
+#X connect 8 0 6 0;
+#X connect 9 0 27 1;
+#X connect 10 0 9 1;
+#X connect 11 0 10 0;
+#X connect 13 0 9 0;
+#X connect 13 1 27 2;
+#X connect 15 0 5 0;
+#X connect 16 0 0 0;
+#X connect 17 0 5 0;
+#X connect 18 0 31 0;
+#X connect 20 0 26 0;
+#X connect 21 0 13 0;
+#X connect 22 0 12 0;
+#X connect 22 1 26 0;
+#X connect 22 2 24 0;
+#X connect 23 0 27 0;
+#X connect 24 0 16 0;
+#X connect 24 1 15 0;
+#X connect 25 0 14 0;
+#X connect 26 0 23 0;
+#X connect 26 1 21 0;
+#X connect 27 0 25 0;
+#X connect 28 0 27 3;
+#X connect 31 0 1 0;
diff --git a/l2ork_addons/rjlib/rj/u_splicetrans-help.pd b/l2ork_addons/rjlib/rj/u_splicetrans-help.pd
new file mode 100644
index 000000000..811c74231
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/u_splicetrans-help.pd
@@ -0,0 +1,160 @@
+#N canvas 312 169 803 592 10;
+#X text 332 242 use harm. 1 \, 3 \, 5 for transition table.;
+#X floatatom 60 185 5 0 0 0 - - -;
+#X obj 60 206 mtof;
+#X floatatom 60 227 5 0 0 0 - - -;
+#X obj 205 339 tabwrite~ \$0-spliced0;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-spliced0 441 float 0;
+#X coords 0 1 440 -1 200 140 1;
+#X restore 545 35 graph;
+#X msg 218 317 bang;
+#X obj 59 362 *~ 1;
+#X obj 100 361 *~ 0;
+#X obj 123 342 tgl 15 0 empty empty aliased 17 7 1 10 -262144 -1 -1
+0 1;
+#X obj 82 317 tgl 15 0 empty empty bandlim. 17 7 1 10 -262144 -1 -1
+0 1;
+#X text 334 212 use harm. 1 \, 3 for transition table.;
+#X text 49 18 [u_splicetrans];
+#X text 74 42 Replace jumps in a phasor~ signal by a bandlimited transition.
+;
+#X text 56 81 Inlets:;
+#X text 79 99 in0~: phasor signal from 0-1;
+#X text 78 117 in1~: frequency of phasor signal;
+#X text 56 143 Outlets:;
+#X text 77 159 out0~: phasor signal from 0-1 with bandlimited jump.
+;
+#X text 295 391 Extracting even.odd harmonics from a phasor~ with bandlimit
+;
+#X obj 376 467 throw~ \$0-outl;
+#X obj 449 443 throw~ \$0-outr;
+#X obj 145 406 catch~ \$0-outr;
+#X obj 132 381 catch~ \$0-outl;
+#X obj 170 317 -~ 0.5;
+#N canvas 483 205 746 653 even.odd 0;
+#X floatatom 45 74 5 0 0 1 frequency - -;
+#X obj 101 155 wrap~;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-phasor-output 882 float 0;
+#X coords 0 1.02 882 -1.02 200 130 1;
+#X restore 504 23 graph;
+#X obj 45 102 phasor~ 0;
+#X obj 36 244 -~;
+#X obj 98 244 +~;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-wrap-output 882 float 0;
+#X coords 0 1.02 882 -1.02 200 130 1;
+#X restore 505 158 graph;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-sum 882 float 0;
+#X coords 0 1.02 882 -1.02 200 130 1;
+#X restore 506 293 graph;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-difference 882 float 0;
+#X coords 0 1.02 882 -1.02 200 130 1;
+#X restore 506 433 graph;
+#X msg 172 180 bang;
+#X text 102 8 BUCHLA'S METHOD;
+#X text 511 567 ---- 0.02 seconds ----;
+#X obj 125 99 s \$0-freq;
+#N canvas 0 0 450 300 s 0;
+#X obj 119 107 r \$0-freq;
+#X obj 31 87 inlet~;
+#X obj 29 158 outlet~;
+#X obj 29 130 -~ 0.5;
+#X obj 30 108 u_splicetrans;
+#X connect 0 0 4 1;
+#X connect 1 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X restore 102 180 pd s;
+#N canvas 0 0 450 300 s 0;
+#X obj 119 107 r \$0-freq;
+#X obj 31 87 inlet~;
+#X obj 30 168 outlet~;
+#X obj 30 136 -~ 0.5;
+#X obj 30 109 u_splicetrans;
+#X connect 0 0 4 1;
+#X connect 1 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X restore 44 181 pd s;
+#X obj 45 50 mtof;
+#X floatatom 45 31 5 0 0 0 - - -;
+#X obj 172 215 tabwrite~ \$0-phasor-output;
+#X obj 172 248 tabwrite~ \$0-wrap-output;
+#X obj 172 282 tabwrite~ \$0-sum;
+#X obj 172 327 tabwrite~ \$0-difference;
+#X obj 37 383 outlet~;
+#X obj 97 383 outlet~;
+#X obj 101 130 -~ 0.5;
+#X text 198 99 for [u_splicetrans];
+#X floatatom 156 129 5 0 0 0 - - -;
+#X obj 98 355 *~ 0;
+#X obj 121 336 tgl 15 0 empty empty sum 17 7 1 10 -262144 -1 -1 0 1
+;
+#X obj 60 335 tgl 15 0 empty empty diff 17 7 1 10 -262144 -1 -1 0 1
+;
+#X obj 37 356 *~ 0;
+#X text 27 414 [pd s] contains [u_splicetrans]. The important thing
+to note here is: Always put [u_splicetrans] after any [wrap~] operations
+you may be using! Otherwise [wrap] will destroy the hard-earned bandlimit
+at the jumps.;
+#X text 27 483 This is an example on how to use the bandlimited version
+of phasor~ with u_splicetrans for constructing classical waveforms
+like saw and square. It's a variation on the example patch K04.even.odd.pd
+;
+#X connect 0 0 3 0;
+#X connect 0 0 12 0;
+#X connect 1 0 13 0;
+#X connect 3 0 14 0;
+#X connect 3 0 23 0;
+#X connect 4 0 20 0;
+#X connect 4 0 29 0;
+#X connect 5 0 19 0;
+#X connect 5 0 26 0;
+#X connect 9 0 17 0;
+#X connect 9 0 18 0;
+#X connect 9 0 19 0;
+#X connect 9 0 20 0;
+#X connect 13 0 4 1;
+#X connect 13 0 5 1;
+#X connect 13 0 18 0;
+#X connect 14 0 5 0;
+#X connect 14 0 4 0;
+#X connect 14 0 17 0;
+#X connect 15 0 0 0;
+#X connect 16 0 15 0;
+#X connect 23 0 1 0;
+#X connect 25 0 23 1;
+#X connect 26 0 22 0;
+#X connect 27 0 26 1;
+#X connect 28 0 29 1;
+#X connect 29 0 21 0;
+#X restore 377 419 pd even.odd;
+#X obj 221 212 u_splicetrans 0;
+#X obj 220 239 u_splicetrans 1;
+#X obj 60 277 u_splicetrans;
+#X obj 60 247 phasor~;
+#X obj 58 441 soundoutput;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 28 1;
+#X connect 3 0 29 0;
+#X connect 6 0 4 0;
+#X connect 7 0 30 0;
+#X connect 7 0 30 1;
+#X connect 8 0 30 0;
+#X connect 8 0 30 1;
+#X connect 9 0 8 1;
+#X connect 10 0 7 1;
+#X connect 22 0 30 1;
+#X connect 23 0 30 0;
+#X connect 24 0 4 0;
+#X connect 25 0 20 0;
+#X connect 25 1 21 0;
+#X connect 28 0 7 0;
+#X connect 28 0 24 0;
+#X connect 29 0 8 0;
+#X connect 29 0 28 0;
diff --git a/l2ork_addons/rjlib/rj/u_splicetrans.pd b/l2ork_addons/rjlib/rj/u_splicetrans.pd
new file mode 100644
index 000000000..1e149648b
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/u_splicetrans.pd
@@ -0,0 +1,136 @@
+#N canvas 97 150 650 593 10;
+#X obj 77 396 -~;
+#X obj 201 237 /~;
+#X obj 218 214 clip~ 1 999999;
+#X obj 93 267 *~;
+#X obj 93 291 clip~ -0.5 0.5;
+#X obj 93 315 *~ 1000;
+#X obj 93 339 +~ 501;
+#X obj 76 219 -~ 0.5;
+#X obj 93 363 tabread4~ \$0-transition;
+#X obj 201 186 * 0.4;
+#N canvas 388 124 754 678 transition-table 0;
+#X obj 428 534 cos~;
+#X obj 262 534 cos~;
+#X obj 214 529 cos~;
+#X msg 158 598 bang;
+#X text 242 138 back the phase up one sample;
+#X msg 312 445 -0.0005;
+#X obj 262 508 *~ 3;
+#X obj 427 510 *~ 5;
+#X obj 262 559 *~ 0.33333;
+#X obj 427 560 *~ -0.2;
+#X obj 214 557 *~ -1;
+#X msg 159 425 bang;
+#X obj 213 488 phasor~ 22.05;
+#X obj 214 590 *~ 0.57692;
+#X obj 204 259 cos~;
+#X obj 156 254 cos~;
+#X msg 100 323 bang;
+#X msg 247 166 -0.0005;
+#X obj 204 233 *~ 3;
+#X obj 204 284 *~ 0.33333;
+#X obj 156 282 *~ -1;
+#X msg 99 137 bang;
+#X obj 155 193 phasor~ 22.05;
+#X obj 156 315 *~ 0.75;
+#X obj 214 617 tabwrite~ \$0-transition;
+#X obj 156 342 tabwrite~ \$0-transition;
+#X text 292 216 twice the table length;
+#X text 280 193 period is 2000 samples \,;
+#X text 80 369 This one is used - first and third harmonics only.;
+#X text 28 644 This alternate one puts in harmonics 1 \, 3 \, and 5
+;
+#X text 537 179 ----- 1002 samples ----;
+#X text 24 27 This network puts a half cycle of a band-limited square
+wave into the table "array1.";
+#X text 22 64 Logically the half-cycle is in samples 1 through 1000
+\; samples 0 and 1001 are provided so that the 4-point interpolation
+will work everywhere.;
+#X obj 543 254 table \$0-transition 1002;
+#X obj 478 83 f \$1;
+#X obj 478 104 select 0 1;
+#X obj 478 150 s \$0-harm0;
+#X obj 510 126 s \$0-harm1;
+#X obj 99 115 r \$0-harm0;
+#X obj 159 405 r \$0-harm1;
+#X obj 478 43 r \$0-nyquist;
+#X obj 478 63 b;
+#X obj 155 152 r \$0-nyquist;
+#X obj 213 445 r \$0-nyquist;
+#X obj 155 172 / 1000;
+#X obj 213 467 / 1000;
+#X connect 0 0 9 0;
+#X connect 1 0 8 0;
+#X connect 2 0 10 0;
+#X connect 3 0 24 0;
+#X connect 5 0 12 1;
+#X connect 6 0 1 0;
+#X connect 7 0 0 0;
+#X connect 8 0 13 0;
+#X connect 9 0 13 0;
+#X connect 10 0 13 0;
+#X connect 11 0 5 0;
+#X connect 11 0 3 0;
+#X connect 12 0 2 0;
+#X connect 12 0 6 0;
+#X connect 12 0 7 0;
+#X connect 13 0 24 0;
+#X connect 14 0 19 0;
+#X connect 15 0 20 0;
+#X connect 16 0 25 0;
+#X connect 17 0 22 1;
+#X connect 18 0 14 0;
+#X connect 19 0 23 0;
+#X connect 20 0 23 0;
+#X connect 21 0 17 0;
+#X connect 21 0 16 0;
+#X connect 22 0 15 0;
+#X connect 22 0 18 0;
+#X connect 23 0 25 0;
+#X connect 34 0 35 0;
+#X connect 35 0 36 0;
+#X connect 35 1 37 0;
+#X connect 38 0 21 0;
+#X connect 39 0 11 0;
+#X connect 40 0 41 0;
+#X connect 41 0 34 0;
+#X connect 42 0 44 0;
+#X connect 43 0 45 0;
+#X connect 44 0 22 0;
+#X connect 45 0 12 0;
+#X restore 347 273 pd transition-table;
+#X obj 76 140 inlet~;
+#X obj 76 441 outlet~;
+#X obj 296 143 inlet~;
+#X obj 77 418 +~ 0.5;
+#X text 295 125 frequency of phasor;
+#X obj 296 182 samphold~;
+#X text 77 465 out: transition spliced \, bandlimited phasor from 0-1
+;
+#X text 74 117 in: phasor 0-1;
+#X obj 484 45 loadbang;
+#X obj 484 67 samplerate~;
+#X obj 484 93 * 0.5;
+#X obj 484 119 s \$0-nyquist;
+#X obj 201 145 r \$0-nyquist;
+#X connect 0 0 14 0;
+#X connect 1 0 3 1;
+#X connect 2 0 1 1;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 8 0;
+#X connect 7 0 3 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 1;
+#X connect 9 0 1 0;
+#X connect 11 0 7 0;
+#X connect 11 0 16 1;
+#X connect 13 0 16 0;
+#X connect 14 0 12 0;
+#X connect 16 0 2 0;
+#X connect 19 0 20 0;
+#X connect 20 0 21 0;
+#X connect 21 0 22 0;
+#X connect 23 0 9 0;
diff --git a/l2ork_addons/rjlib/rj/u_stereo-help.pd b/l2ork_addons/rjlib/rj/u_stereo-help.pd
new file mode 100644
index 000000000..a9bbf4811
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/u_stereo-help.pd
@@ -0,0 +1,16 @@
+#N canvas 520 91 852 486 10;
+#X text 61 41 A quick way to convert a mono effect into a stereo effect.
+Works for effects with 1 audio in and 1 audio out.;
+#X obj 63 170 u_stereo e_alias ali1;
+#X obj 63 122 osc~ 220;
+#X msg 236 141 freq \$1;
+#X obj 63 246 soundoutput;
+#X obj 135 121 osc~ 280;
+#X floatatom 237 122 5 0 0 0 - - -;
+#X text 283 123 Parameters depend on the effect used;
+#X connect 1 0 4 0;
+#X connect 1 1 4 1;
+#X connect 2 0 1 0;
+#X connect 3 0 1 2;
+#X connect 5 0 1 1;
+#X connect 6 0 3 0;
diff --git a/l2ork_addons/rjlib/rj/u_stereo.pd b/l2ork_addons/rjlib/rj/u_stereo.pd
new file mode 100644
index 000000000..f6576ee9d
--- /dev/null
+++ b/l2ork_addons/rjlib/rj/u_stereo.pd
@@ -0,0 +1,16 @@
+#N canvas 520 91 852 486 10;
+#X obj 101 107 inlet~;
+#X obj 102 287 outlet~;
+#X obj 297 105 inlet;
+#X obj 203 288 outlet~;
+#X obj 201 108 inlet~;
+#X obj 102 253 \$1 \$2;
+#X text 61 41 A quick way to convert a mono effect into a stereo effect.
+Works for effects with 1 audio in and 1 audio out.;
+#X obj 203 252 \$1 \$2;
+#X connect 0 0 5 0;
+#X connect 2 0 5 1;
+#X connect 2 0 7 1;
+#X connect 4 0 7 0;
+#X connect 5 0 1 0;
+#X connect 7 0 3 0;
diff --git a/l2ork_addons/rjlib/rjXYZshake-help.pd b/l2ork_addons/rjlib/rjXYZshake-help.pd
new file mode 100644
index 000000000..1b3095dab
--- /dev/null
+++ b/l2ork_addons/rjlib/rjXYZshake-help.pd
@@ -0,0 +1,41 @@
+#N canvas 173 22 516 331 10;
+#X obj 16 257 rjXYZshake;
+#X obj 14 298 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 50 298 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 83 297 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 16 283 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 50 283 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 83 281 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X msg 18 196 sensitivity \$1;
+#X obj 19 136 hradio 15 1 0 8 empty rjXYZ-sensitiv-r empty 0 -8 0 10
+-262144 -1 -1 1;
+#X obj 169 136 hradio 15 1 0 8 empty rjXYZ-timeout-r empty 0 -8 0 10
+-262144 -1 -1 3;
+#X msg 169 196 timeout \$1;
+#X obj 169 166 * 100;
+#X msg 321 154 \; rjXYZ-sensitiv-r 1 \; rjXYZ-timeout-r 3;
+#X obj 320 132 loadbang;
+#X text 14 12 rjXYZshake 0.1 alpha written by enrique erne. inspired
+by roman haefeli's amenshake. gives 0 or 1 for each axis.;
+#X text 110 287 gives 0 or 1 for each axis.;
+#X text 12 55 2008.10.08 initial release \, port from TheWhiteRoom
+\, eerne;
+#X text 66 115 needs testing!!!;
+#X connect 0 0 1 0;
+#X connect 0 0 4 0;
+#X connect 0 1 2 0;
+#X connect 0 1 5 0;
+#X connect 0 2 3 0;
+#X connect 0 2 6 0;
+#X connect 7 0 0 0;
+#X connect 8 0 7 0;
+#X connect 9 0 11 0;
+#X connect 10 0 0 0;
+#X connect 11 0 10 0;
+#X connect 13 0 12 0;
diff --git a/l2ork_addons/rjlib/rjXYZshake.pd b/l2ork_addons/rjlib/rjXYZshake.pd
new file mode 100644
index 000000000..eebc53ff0
--- /dev/null
+++ b/l2ork_addons/rjlib/rjXYZshake.pd
@@ -0,0 +1,116 @@
+#N canvas 317 178 649 557 10;
+#X obj 35 153 abs;
+#X obj 35 263 sel 1;
+#X obj 35 123 -;
+#X obj 35 93 t a a;
+#X obj 35 323 spigot 1;
+#X obj 119 483 change;
+#X obj 427 228 unpack f f f;
+#X msg 55 353 1 0 0;
+#X obj 427 388 t a;
+#X obj 87 263 t a a;
+#X obj 165 153 abs;
+#X obj 165 263 sel 1;
+#X obj 165 123 -;
+#X obj 165 93 t a a;
+#X obj 165 323 spigot 1;
+#X obj 249 483 change;
+#X obj 217 263 t a a;
+#X msg 185 353 0 1 0;
+#X obj 295 153 abs;
+#X obj 295 263 sel 1;
+#X obj 295 123 -;
+#X obj 295 93 t a a;
+#X obj 295 323 spigot 1;
+#X obj 379 483 change;
+#X obj 347 263 t a a;
+#X msg 315 353 0 0 1;
+#X obj 166 426 t b b;
+#X msg 198 456 0;
+#X msg 133 289 1;
+#X text 370 51 Author: Enrique Erne;
+#X text 369 31 Version: 2008-09-21;
+#X obj 119 513 outlet;
+#X obj 249 513 outlet;
+#X obj 379 513 outlet;
+#X text 80 224 sensitivity;
+#X text 64 113 dif2last;
+#X obj 35 393 delay 400;
+#X obj 165 393 delay 400;
+#X obj 295 393 delay 400;
+#X text 38 413 timeout;
+#X obj 35 223 > 1.5;
+#X obj 165 223 > 1.5;
+#X obj 295 223 > 1.5;
+#X obj 35 33 r #accelerate;
+#X obj 35 63 unpack f f f;
+#X obj 408 124 inlet;
+#X obj 408 147 route sensitivity timeout;
+#X obj 389 355 t a;
+#X text 369 71 Inspired by Roman Haefeli's Amenshake;
+#X obj 407 166 cnv 15 180 10 empty empty empty 20 12 0 14 -258113 -66577
+0;
+#X text 547 174 UNTESTED;
+#X connect 0 0 40 0;
+#X connect 1 0 4 0;
+#X connect 2 0 0 0;
+#X connect 3 0 2 1;
+#X connect 3 1 2 0;
+#X connect 4 0 7 0;
+#X connect 4 0 36 0;
+#X connect 5 0 31 0;
+#X connect 6 0 9 0;
+#X connect 6 1 16 0;
+#X connect 6 2 24 0;
+#X connect 7 0 8 0;
+#X connect 8 0 6 0;
+#X connect 9 0 4 1;
+#X connect 9 1 5 0;
+#X connect 10 0 41 0;
+#X connect 11 0 14 0;
+#X connect 12 0 10 0;
+#X connect 13 0 12 1;
+#X connect 13 1 12 0;
+#X connect 14 0 17 0;
+#X connect 14 0 37 0;
+#X connect 15 0 32 0;
+#X connect 16 0 14 1;
+#X connect 16 1 15 0;
+#X connect 17 0 8 0;
+#X connect 18 0 42 0;
+#X connect 19 0 22 0;
+#X connect 20 0 18 0;
+#X connect 21 0 20 1;
+#X connect 21 1 20 0;
+#X connect 22 0 25 0;
+#X connect 22 0 38 0;
+#X connect 23 0 33 0;
+#X connect 24 0 22 1;
+#X connect 24 1 23 0;
+#X connect 25 0 8 0;
+#X connect 26 0 28 0;
+#X connect 26 1 27 0;
+#X connect 27 0 23 0;
+#X connect 27 0 15 0;
+#X connect 27 0 5 0;
+#X connect 28 0 4 1;
+#X connect 28 0 14 1;
+#X connect 28 0 22 1;
+#X connect 36 0 26 0;
+#X connect 37 0 26 0;
+#X connect 38 0 26 0;
+#X connect 40 0 1 0;
+#X connect 41 0 11 0;
+#X connect 42 0 19 0;
+#X connect 43 0 44 0;
+#X connect 44 0 3 0;
+#X connect 44 1 13 0;
+#X connect 44 2 21 0;
+#X connect 45 0 46 0;
+#X connect 46 0 42 1;
+#X connect 46 0 41 1;
+#X connect 46 0 40 1;
+#X connect 46 1 47 0;
+#X connect 47 0 36 1;
+#X connect 47 0 37 1;
+#X connect 47 0 38 1;
diff --git a/l2ork_addons/rjlib/rj_fft.pd b/l2ork_addons/rjlib/rj_fft.pd
new file mode 100644
index 000000000..337730ec3
--- /dev/null
+++ b/l2ork_addons/rjlib/rj_fft.pd
@@ -0,0 +1,194 @@
+#N canvas 0 22 1056 499 10;
+#X obj 51 58 block~ 1024 2;
+#N canvas 0 22 450 300 (subpatch) 0;
+#X array \$0-hann 1024 float 1;
+#A 0 0 1.88351e-05 3.76403e-05 9.41157e-05 0.000150591 0.000244677
+0.000338793 0.000470519 0.000602275 0.000771582 0.000940919 0.00114784
+0.00135475 0.00159922 0.00184369 0.00212565 0.00240761 0.00272706 0.00304651
+0.00340337 0.00376022 0.00415444 0.00454867 0.00498021 0.00541171 0.00588048
+0.00634927 0.00685519 0.00736114 0.00790417 0.00844723 0.0090273 0.00960734
+0.0102243 0.0108413 0.0114951 0.0121489 0.0128394 0.01353 0.0142572
+0.0149843 0.015748 0.0165117 0.0173118 0.0181119 0.0189483 0.0197847
+0.0206572 0.0215298 0.0224383 0.0233469 0.0242914 0.0252359 0.0262161
+0.0271963 0.0282121 0.0292279 0.0302792 0.0313304 0.032417 0.0335035
+0.0346252 0.0357469 0.0369035 0.0380602 0.0392516 0.040443 0.041669
+0.042895 0.0441555 0.0454159 0.0467106 0.0480052 0.0493339 0.0506626
+0.0520252 0.0533877 0.0547839 0.05618 0.0576096 0.0590392 0.060502
+0.0619648 0.0634606 0.0649563 0.0664849 0.0680134 0.0695744 0.0711355
+0.0727288 0.0743222 0.0759476 0.077573 0.0792302 0.0808874 0.0825762
+0.084265 0.085985 0.0877051 0.0894562 0.0912073 0.0929892 0.0947711
+0.0965835 0.0983959 0.100239 0.102081 0.103954 0.105826 0.107729 0.109631
+0.111563 0.113494 0.115455 0.117416 0.119406 0.121395 0.123413 0.125431
+0.127478 0.129524 0.131598 0.133672 0.135774 0.137876 0.140005 0.142134
+0.14429 0.146446 0.148629 0.150811 0.15302 0.155229 0.157464 0.159699
+0.161959 0.16422 0.166506 0.168792 0.171102 0.173413 0.175748 0.178084
+0.180443 0.182803 0.185186 0.18757 0.189977 0.192384 0.194814 0.197244
+0.199697 0.20215 0.204625 0.2071 0.209598 0.212095 0.214614 0.217133
+0.219674 0.222214 0.224775 0.227337 0.229919 0.2325 0.235102 0.237704
+0.240326 0.242948 0.245589 0.24823 0.25089 0.25355 0.256229 0.258907
+0.261604 0.264301 0.267015 0.26973 0.272462 0.275194 0.277942 0.280691
+0.283457 0.286222 0.289003 0.291785 0.294582 0.297379 0.300191 0.303003
+0.305831 0.308658 0.311499 0.314341 0.317196 0.320052 0.322921 0.32579
+0.328672 0.331555 0.334449 0.337344 0.340252 0.343159 0.346078 0.348997
+0.351927 0.354857 0.357798 0.36074 0.363691 0.366643 0.369605 0.372567
+0.375538 0.37851 0.38149 0.384471 0.38746 0.390449 0.393447 0.396444
+0.399449 0.402455 0.405467 0.40848 0.411499 0.414519 0.417545 0.420571
+0.423603 0.426635 0.429672 0.432709 0.435752 0.438794 0.441842 0.444889
+0.44794 0.450991 0.454046 0.457101 0.460159 0.463218 0.466279 0.46934
+0.472403 0.475466 0.478531 0.481596 0.484663 0.487729 0.490797 0.493864
+0.496932 0.5 0.503068 0.506136 0.509203 0.512271 0.515337 0.518404
+0.521469 0.524534 0.527597 0.53066 0.533721 0.536782 0.539841 0.542899
+0.545954 0.549009 0.55206 0.555111 0.558158 0.561205 0.564248 0.56729
+0.570328 0.573365 0.576397 0.579429 0.582455 0.585481 0.588501 0.59152
+0.594533 0.597545 0.600551 0.603556 0.606553 0.609551 0.61254 0.615529
+0.61851 0.62149 0.624462 0.627433 0.630395 0.633357 0.636308 0.63926
+0.642201 0.645143 0.648073 0.651003 0.653922 0.656841 0.659748 0.662656
+0.66555 0.668445 0.671328 0.67421 0.677079 0.679948 0.682804 0.685659
+0.688501 0.691342 0.694169 0.696997 0.699809 0.702621 0.705418 0.708215
+0.710997 0.713778 0.716543 0.719309 0.722057 0.724806 0.727538 0.73027
+0.732984 0.735699 0.738396 0.741093 0.743771 0.74645 0.74911 0.75177
+0.754411 0.757052 0.759674 0.762295 0.764897 0.767499 0.770081 0.772663
+0.775224 0.777786 0.780326 0.782867 0.785386 0.787905 0.790402 0.7929
+0.795375 0.79785 0.800303 0.802756 0.805186 0.807616 0.810023 0.812431
+0.814814 0.817197 0.819557 0.821916 0.824252 0.826587 0.828898 0.831209
+0.833494 0.83578 0.838041 0.840301 0.842536 0.844771 0.84698 0.849189
+0.851372 0.853554 0.85571 0.857866 0.859995 0.862124 0.864226 0.866328
+0.868402 0.870476 0.872523 0.874569 0.876587 0.878605 0.880595 0.882584
+0.884545 0.886506 0.888438 0.890369 0.892272 0.894174 0.896047 0.897919
+0.899762 0.901605 0.903417 0.905229 0.907011 0.908793 0.910544 0.912295
+0.914015 0.915736 0.917424 0.919113 0.92077 0.922428 0.924053 0.925678
+0.927272 0.928865 0.930426 0.931987 0.933516 0.935044 0.93654 0.938036
+0.939499 0.940961 0.942391 0.94382 0.945217 0.946613 0.947975 0.949338
+0.950667 0.951995 0.95329 0.954585 0.955845 0.957106 0.958332 0.959558
+0.960749 0.96194 0.963097 0.964254 0.965375 0.966497 0.967584 0.96867
+0.969721 0.970773 0.971788 0.972804 0.973784 0.974765 0.975709 0.976654
+0.977562 0.978471 0.979343 0.980216 0.981052 0.981889 0.982689 0.983489
+0.984252 0.985016 0.985743 0.98647 0.987161 0.987852 0.988505 0.989159
+0.989776 0.990393 0.990973 0.991553 0.992096 0.992639 0.993145 0.993651
+0.99412 0.994589 0.99502 0.995452 0.995846 0.99624 0.996597 0.996954
+0.997273 0.997593 0.997874 0.998156 0.998401 0.998645 0.998852 0.999059
+0.999229 0.999398 0.99953 0.999661 0.999755 0.999849 0.999906 0.999962
+0.999981 1 0.999981 0.999962 0.999906 0.999849 0.999755 0.999661 0.999529
+0.999398 0.999228 0.999059 0.998852 0.998645 0.998401 0.998156 0.997874
+0.997592 0.997273 0.996953 0.996596 0.996239 0.995845 0.995451 0.995019
+0.994588 0.994119 0.99365 0.993144 0.992638 0.992095 0.991552 0.990972
+0.990392 0.989775 0.989158 0.988504 0.987851 0.98716 0.986469 0.985742
+0.985015 0.984251 0.983488 0.982687 0.981887 0.981051 0.980215 0.979342
+0.978469 0.977561 0.976652 0.975708 0.974763 0.973783 0.972803 0.971787
+0.970771 0.96972 0.968669 0.967582 0.966495 0.965374 0.964252 0.963095
+0.961939 0.960747 0.959556 0.95833 0.957104 0.955843 0.954583 0.953288
+0.951993 0.950665 0.949336 0.947973 0.946611 0.945215 0.943818 0.942389
+0.940959 0.939496 0.938034 0.936538 0.935042 0.933514 0.931985 0.930424
+0.928863 0.927269 0.925676 0.924051 0.922425 0.920768 0.919111 0.917422
+0.915733 0.914013 0.912293 0.910542 0.908791 0.907009 0.905227 0.903414
+0.901602 0.899759 0.897917 0.896044 0.894171 0.892269 0.890367 0.888435
+0.886503 0.884542 0.882582 0.880592 0.878602 0.876584 0.874566 0.87252
+0.870473 0.868399 0.866325 0.864223 0.862121 0.859992 0.857863 0.855707
+0.853551 0.851368 0.849186 0.846977 0.844768 0.842533 0.840298 0.838037
+0.835777 0.833491 0.831205 0.828895 0.826584 0.824249 0.821913 0.819554
+0.817194 0.814811 0.812427 0.81002 0.807613 0.805183 0.802753 0.8003
+0.797847 0.795372 0.792896 0.790399 0.787901 0.785382 0.782863 0.780323
+0.777782 0.775221 0.77266 0.770078 0.767496 0.764894 0.762292 0.75967
+0.757048 0.754407 0.751766 0.749106 0.746446 0.743767 0.741089 0.738392
+0.735695 0.732981 0.730266 0.727534 0.724802 0.722054 0.719305 0.71654
+0.713774 0.710993 0.708211 0.705414 0.702617 0.699805 0.696993 0.694165
+0.691338 0.688497 0.685655 0.6828 0.679944 0.677075 0.674206 0.671324
+0.668441 0.665546 0.662652 0.659744 0.656837 0.653918 0.650999 0.648069
+0.645139 0.642197 0.639256 0.636304 0.633353 0.630391 0.627429 0.624458
+0.621486 0.618506 0.615525 0.612536 0.609547 0.606549 0.603552 0.600546
+0.597541 0.594529 0.591516 0.588496 0.585477 0.582451 0.579425 0.576393
+0.573361 0.570324 0.567286 0.564244 0.561201 0.558154 0.555107 0.552056
+0.549004 0.545949 0.542894 0.539836 0.536778 0.533717 0.530656 0.527593
+0.52453 0.521464 0.518399 0.515333 0.512266 0.509199 0.506131 0.503064
+0.499996 0.496928 0.49386 0.490792 0.487725 0.484659 0.481592 0.478527
+0.475462 0.472399 0.469335 0.466274 0.463213 0.460155 0.457097 0.454042
+0.450987 0.447936 0.444884 0.441837 0.43879 0.435748 0.432705 0.429668
+0.42663 0.423598 0.420566 0.417541 0.414515 0.411495 0.408476 0.405463
+0.40245 0.399445 0.39644 0.393442 0.390445 0.387456 0.384466 0.381486
+0.378505 0.375534 0.372563 0.369601 0.366639 0.363687 0.360736 0.357794
+0.354853 0.351923 0.348993 0.346074 0.343155 0.340247 0.33734 0.334445
+0.331551 0.328668 0.325786 0.322917 0.320048 0.317192 0.314337 0.311495
+0.308654 0.305827 0.302999 0.300187 0.297375 0.294578 0.291781 0.288999
+0.286218 0.283453 0.280687 0.277939 0.27519 0.272458 0.269726 0.267012
+0.264297 0.2616 0.258904 0.256225 0.253547 0.250886 0.248226 0.245585
+0.242944 0.240323 0.237701 0.235099 0.232497 0.229915 0.227333 0.224772
+0.222211 0.21967 0.21713 0.214611 0.212092 0.209594 0.207097 0.204622
+0.202146 0.199693 0.19724 0.19481 0.19238 0.189973 0.187566 0.185183
+0.182799 0.18044 0.17808 0.175745 0.17341 0.171099 0.168788 0.166502
+0.164217 0.161956 0.159696 0.157461 0.155226 0.153017 0.150808 0.148625
+0.146443 0.144287 0.142131 0.140002 0.137873 0.135771 0.133669 0.131595
+0.129521 0.127474 0.125428 0.12341 0.121392 0.119402 0.117413 0.115452
+0.113491 0.11156 0.109628 0.107726 0.105823 0.103951 0.102078 0.100236
+0.0983929 0.0965805 0.0947681 0.0929862 0.0912043 0.0894533 0.0877022
+0.0859821 0.084262 0.0825733 0.0808845 0.0792274 0.0775702 0.0759448
+0.0743194 0.0727261 0.0711327 0.0695717 0.0680107 0.0664822 0.0649537
+0.0634579 0.0619622 0.0604994 0.0590366 0.0576071 0.0561775 0.0547814
+0.0533852 0.0520227 0.0506602 0.0493315 0.0480028 0.0467082 0.0454136
+0.0441532 0.0428927 0.0416667 0.0404407 0.0392494 0.038058 0.0369014
+0.0357448 0.0346231 0.0335014 0.0324149 0.0313284 0.0302772 0.0292259
+0.0282102 0.0271944 0.0262142 0.025234 0.0242896 0.0233451 0.0224366
+0.0215281 0.0206555 0.019783 0.0189467 0.0181103 0.0173103 0.0165102
+0.0157465 0.0149829 0.0142557 0.0135286 0.0128381 0.0121476 0.0114938
+0.01084 0.0102231 0.00960612 0.00902611 0.0084461 0.0079031 0.0073601
+0.00685418 0.00634828 0.00587955;
+#A 1000 0.00541082 0.00497931 0.00454783 0.00415364 0.00375944 0.00340262
+0.0030458 0.00272641 0.00240701 0.00212508 0.00184312 0.00159872 0.00135428
+0.00114739 0.000940531 0.000771224 0.000601947 0.000470251 0.000338554
+0.000244498 0.000150412 9.39965e-05 3.75509e-05 1.87755e-05;
+#X coords 0 1 1023 0 200 120 1;
+#X restore 257 137 graph;
+#X msg 174 141 0;
+#X obj 59 195 osc~;
+#X obj 59 147 samplerate~;
+#X obj 59 218 *~ -0.5;
+#X obj 59 241 +~ 0.5;
+#X obj 51 266 tabwrite~ \$0-hann;
+#X obj 51 124 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 330 104 Hann window;
+#X text 49 99 recalculate Hann;
+#X text 84 114 window table;
+#X text 107 193 comment;
+#X obj 59 171 / 512;
+#X obj 558 145 *~;
+#X obj 557 80 inlet~;
+#X obj 558 199 rfft~;
+#X obj 579 121 tabreceive~ \$0-hann;
+#X obj 557 287 *~;
+#X obj 599 287 *~;
+#X obj 558 337 sqrt~;
+#X text 768 112 tabreceive~ outputs array contents \,;
+#X text 768 130 constantly \, every block. Here it's;
+#X text 766 150 used to get the Hann window to;
+#X text 768 168 multiply by the input.;
+#X text 619 80 The inlet~ automatically re-blocks to the new block
+size.;
+#X obj 558 313 +~;
+#X text 637 289 Take the magnitude by squaring real and imaginary part
+\, adding and taking square root.;
+#X text 625 196 forward real FFT. Like "fft~" \, but only one inlet
+(for the real part) and only the first half of the output signals are
+used. (The others are determined by symmetry: they're complex conjugates
+of the first half \, in reverse order.) This takes 1/2 the CPU time
+of "fft".;
+#X obj 556 372 s~ fft;
+#X connect 2 0 3 1;
+#X connect 3 0 5 0;
+#X connect 4 0 13 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 8 0 4 0;
+#X connect 8 0 2 0;
+#X connect 8 0 7 0;
+#X connect 13 0 3 0;
+#X connect 14 0 16 0;
+#X connect 15 0 14 0;
+#X connect 16 0 18 0;
+#X connect 16 0 18 1;
+#X connect 16 1 19 0;
+#X connect 16 1 19 1;
+#X connect 17 0 14 1;
+#X connect 18 0 26 0;
+#X connect 19 0 26 1;
+#X connect 20 0 29 0;
+#X connect 26 0 20 0;
diff --git a/l2ork_addons/rjlib/rjdispatch-help.pd b/l2ork_addons/rjlib/rjdispatch-help.pd
new file mode 100644
index 000000000..a96aa5103
--- /dev/null
+++ b/l2ork_addons/rjlib/rjdispatch-help.pd
@@ -0,0 +1,67 @@
+#N canvas 212 72 973 689 10;
+#X obj 121 172 inlet;
+#X floatatom 175 194 5 0 0 0 - - -;
+#X floatatom 383 334 5 0 0 0 - - -;
+#X floatatom 382 525 5 0 0 0 - - -;
+#X obj 382 504 r \$0-float;
+#X floatatom 272 193 5 0 0 0 - - -;
+#X floatatom 525 195 5 0 0 0 - - -;
+#X floatatom 382 624 5 0 0 0 - - -;
+#X floatatom 322 194 5 0 0 0 - - -;
+#X obj 383 383 t a b;
+#X obj 383 407 list prepend set;
+#X obj 383 429 list trim;
+#X msg 383 452 a b c d 93;
+#X obj 382 603 r \$0-prep;
+#X obj 525 217 list prepend prep;
+#X msg 175 215 attack \$1;
+#X obj 121 312 rjdispatch \$0 attack;
+#X obj 383 313 r \$0-attack;
+#X obj 383 360 r \$0-alist;
+#X obj 322 216 list prepend alist a b c d;
+#X text 84 23 [rjdispatch];
+#X text 123 45 Wrapper around [route] that automatically sends incoming
+messages to a receiver called "\$1-\$2" \, if they start with \$2.
+;
+#X text 125 94 Non-matching messages get passed on to the outlet.;
+#X text 124 114 Useful for dispatching of inlet-messages if you create
+chains of [rjdispatch] objects like below:;
+#X text 274 312 sends to this:;
+#X text 271 358 sends to this:;
+#X text 268 502 sends to this:;
+#X text 268 603 sends to this:;
+#X msg 476 271 help;
+#X obj 121 503 rjdispatch \$0 float;
+#X obj 121 600 rjdispatch \$0 prep;
+#X obj 121 359 rjdispatch \$0 alist;
+#X text 473 252 special method "help" to print all active rjdispatch
+targets;
+#X obj 121 630 rjdispatch \$0 bang;
+#X obj 258 630 r \$0-bang;
+#X msg 135 215 bang;
+#X obj 258 658 print BANG;
+#X obj 671 527 rjdispatch \$0 symbol;
+#X text 643 508 This does not work \, don't use it:;
+#X connect 0 0 16 0;
+#X connect 1 0 15 0;
+#X connect 4 0 3 0;
+#X connect 5 0 16 0;
+#X connect 6 0 14 0;
+#X connect 8 0 19 0;
+#X connect 9 0 10 0;
+#X connect 9 1 10 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 13 0 7 0;
+#X connect 14 0 16 0;
+#X connect 15 0 16 0;
+#X connect 16 0 31 0;
+#X connect 17 0 2 0;
+#X connect 18 0 9 0;
+#X connect 19 0 16 0;
+#X connect 28 0 16 0;
+#X connect 29 0 30 0;
+#X connect 30 0 33 0;
+#X connect 31 0 29 0;
+#X connect 34 0 36 0;
+#X connect 35 0 16 0;
diff --git a/l2ork_addons/rjlib/rjdispatch.pd b/l2ork_addons/rjlib/rjdispatch.pd
new file mode 100644
index 000000000..9f159ede4
--- /dev/null
+++ b/l2ork_addons/rjlib/rjdispatch.pd
@@ -0,0 +1,28 @@
+#N canvas 303 323 759 261 10;
+#X obj 131 28 inlet;
+#X obj 182 185 outlet;
+#X obj 131 122 route \$2;
+#X obj 131 155 s \$1-\$2;
+#X obj 131 98 list trim;
+#X obj 273 121 select help;
+#X obj 273 158 list append \$2;
+#X obj 273 182 list trim;
+#X obj 273 205 print dispatcher;
+#X obj 273 94 route symbol;
+#X obj 273 70 list;
+#X obj 470 104 sssad \$2 \$1;
+#X obj 470 131 s \$1-\$2;
+#X obj 544 73 r \$1-\$2;
+#X text 447 73 state saves:;
+#X connect 0 0 4 0;
+#X connect 0 0 10 0;
+#X connect 2 0 3 0;
+#X connect 2 1 1 0;
+#X connect 4 0 2 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 9 0 5 0;
+#X connect 10 0 9 0;
+#X connect 11 0 12 0;
+#X connect 13 0 11 1;
diff --git a/l2ork_addons/rjlib/rjloader-help.pd b/l2ork_addons/rjlib/rjloader-help.pd
new file mode 100644
index 000000000..7db9bbab0
--- /dev/null
+++ b/l2ork_addons/rjlib/rjloader-help.pd
@@ -0,0 +1,3 @@
+#N canvas 341 323 756 361 10;
+#X text 134 100 Please see help for rjsave-ex:;
+#X obj 148 130 rjsave-ex rjload;
diff --git a/l2ork_addons/rjlib/rjloader.pd b/l2ork_addons/rjlib/rjloader.pd
new file mode 100644
index 000000000..e2b06ca70
--- /dev/null
+++ b/l2ork_addons/rjlib/rjloader.pd
@@ -0,0 +1,26 @@
+#N canvas 0 0 797 492 10;
+#X obj 151 86 route persist;
+#X obj 151 117 list prepend \$1;
+#X obj 150 196 list trim;
+#X obj 150 222 route \$1;
+#X msg 150 328 setonly \$1;
+#X obj 150 248 t a a;
+#X obj 150 306 list;
+#X obj 150 174 r RJ_SCENE_LOAD;
+#X obj 151 144 s RJ_SCENE;
+#X obj 305 98 r RJ_SCENE_SAVE;
+#X obj 151 54 r \$2-SSSAD_ADMIN;
+#X obj 150 352 s \$2-SSSAD_ADMIN;
+#X obj 182 270 s \$2-SSSAD;
+#X obj 305 137 s \$2-SSSAD_ADMIN;
+#X connect 0 0 1 0;
+#X connect 1 0 8 0;
+#X connect 2 0 3 0;
+#X connect 3 0 5 0;
+#X connect 4 0 11 0;
+#X connect 5 0 6 0;
+#X connect 5 1 12 0;
+#X connect 6 0 4 0;
+#X connect 7 0 2 0;
+#X connect 9 0 13 0;
+#X connect 10 0 0 0;
diff --git a/l2ork_addons/rjlib/rjsave-ex-help.pd b/l2ork_addons/rjlib/rjsave-ex-help.pd
new file mode 100644
index 000000000..70c1d7bb9
--- /dev/null
+++ b/l2ork_addons/rjlib/rjsave-ex-help.pd
@@ -0,0 +1,49 @@
+#N canvas 216 47 756 660 10;
+#X obj 71 94 rjsave-ex one;
+#X text 76 59 Tag your abstractions with a unique \$1;
+#X obj 79 275 s RJ_SCENE_LOAD;
+#X obj 78 372 s RJ_SCENE_SAVE;
+#X obj 77 448 r RJ_SCENE;
+#X text 73 424 receive messages for saving on RJ_SCENE;
+#X msg 78 346 save;
+#X msg 77 511;
+#X floatatom 379 61 5 0 0 1 inlet-controls - -;
+#X msg 379 81 a \$1;
+#X msg 186 449 clear;
+#X obj 77 595 s RJ_SCENE_LOAD;
+#N canvas 338 167 594 416 write2message 0;
+#X obj 149 77 inlet;
+#X obj 327 138 inlet;
+#X obj 149 235 outlet;
+#X msg 327 178 set;
+#X obj 182 185 list trim;
+#X obj 182 161 list prepend add2;
+#X msg 149 133 addcomma;
+#X obj 149 101 t b a;
+#X connect 0 0 7 0;
+#X connect 1 0 3 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 0;
+#X connect 5 0 4 0;
+#X connect 6 0 2 0;
+#X connect 7 0 6 0;
+#X connect 7 1 5 0;
+#X restore 77 478 pd write2message;
+#X msg 79 249 rjsave-ex-one a 30 \, rjsave-ex-two b 40;
+#X text 88 570 restoring possible from here as well:;
+#X obj 177 94 rjsave-ex two;
+#X obj 379 109 rjsave-ex three;
+#X text 35 16 State saving in three steps. Check inside of [rjsave-ex]!
+;
+#X text 76 218 send messages to RJ_SCENE_LOAD to remote-control settings
+;
+#X text 77 320 Send "save" to RJ_SCENE_SAVE to initialize global saving.
+;
+#X connect 4 0 12 0;
+#X connect 6 0 3 0;
+#X connect 7 0 11 0;
+#X connect 8 0 9 0;
+#X connect 9 0 16 0;
+#X connect 10 0 12 1;
+#X connect 12 0 7 0;
+#X connect 13 0 2 0;
diff --git a/l2ork_addons/rjlib/rjsave-ex.pd b/l2ork_addons/rjlib/rjsave-ex.pd
new file mode 100644
index 000000000..78147b372
--- /dev/null
+++ b/l2ork_addons/rjlib/rjsave-ex.pd
@@ -0,0 +1,19 @@
+#N canvas 260 172 882 355 10;
+#X obj 62 127 rjdispatch \$0 a;
+#X obj 62 148 rjdispatch \$0 b;
+#X obj 62 99 inlet;
+#X obj 412 118 hsl 64 15 0 127 0 0 \$0-a \$0-a a 20 8 1 10 -262144
+-1 -1 1488 1;
+#X obj 412 139 hsl 64 15 0 127 0 0 \$0-b \$0-b b 20 8 1 10 -262144
+-1 -1 0 1;
+#X text 36 63 1) add dispatchers for all your variables.;
+#X text 35 16 State saving in three steps;
+#X text 395 63 2) optionally add controls for \$0-a \, \$0-b sender/receiver
+pairs;
+#X obj 169 301 rjloader rjsave-ex-\$1 \$0;
+#X text 169 256 Here we also added the abstraction name to make nameclashes
+even less likely.;
+#X text 149 233 3) add rjloader with \$1 \$0.;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X coords 0 -1 1 1 85 60 1 400 100;
diff --git a/l2ork_addons/rjlib/soundinput.pd b/l2ork_addons/rjlib/soundinput.pd
new file mode 100644
index 000000000..6009b0b38
--- /dev/null
+++ b/l2ork_addons/rjlib/soundinput.pd
@@ -0,0 +1,55 @@
+#N canvas 149 217 611 463 10;
+#X obj 58 114 readsf~ 2;
+#X obj 154 172 adc~;
+#X obj 146 335 *~ 1;
+#X obj 59 334 *~ 0;
+#X obj 102 334 *~ 0;
+#X obj 111 307 == 0;
+#X obj 57 44 inlet;
+#X msg 58 90 open \$1 \, 1;
+#X obj 58 68 symbol;
+#X obj 189 336 *~ 1;
+#X obj 59 411 *~;
+#X obj 125 411 *~;
+#X obj 59 436 outlet~;
+#X obj 125 436 outlet~;
+#X obj 306 240 line~;
+#X obj 305 172 r #transport;
+#X obj 306 193 route play;
+#X msg 306 216 \$1 10;
+#X obj 108 43 r input_soundfile;
+#X msg 176 111 0;
+#X obj 221 113 inlet;
+#X obj 222 157 float;
+#X obj 272 43 r input_live;
+#X msg 273 111 1;
+#X connect 0 0 3 0;
+#X connect 0 1 4 0;
+#X connect 0 2 8 0;
+#X connect 1 0 2 0;
+#X connect 1 1 9 0;
+#X connect 2 0 10 0;
+#X connect 3 0 10 0;
+#X connect 4 0 11 0;
+#X connect 5 0 4 1;
+#X connect 5 0 3 1;
+#X connect 6 0 8 0;
+#X connect 7 0 0 0;
+#X connect 8 0 7 0;
+#X connect 9 0 11 0;
+#X connect 10 0 12 0;
+#X connect 11 0 13 0;
+#X connect 14 0 11 1;
+#X connect 14 0 10 1;
+#X connect 15 0 16 0;
+#X connect 16 0 17 0;
+#X connect 17 0 14 0;
+#X connect 18 0 8 0;
+#X connect 18 0 19 0;
+#X connect 19 0 21 0;
+#X connect 20 0 21 0;
+#X connect 21 0 5 0;
+#X connect 21 0 2 1;
+#X connect 21 0 9 1;
+#X connect 22 0 23 0;
+#X connect 23 0 21 0;
diff --git a/l2ork_addons/rjlib/soundoutput.pd b/l2ork_addons/rjlib/soundoutput.pd
new file mode 100644
index 000000000..770103ece
--- /dev/null
+++ b/l2ork_addons/rjlib/soundoutput.pd
@@ -0,0 +1,63 @@
+#N canvas 231 115 678 641 10;
+#X obj 92 536 dac~;
+#X obj 451 185 r #transport;
+#X obj 509 317 sel 1;
+#X obj 189 505 *~;
+#X obj 91 504 *~;
+#X obj 226 472 line~;
+#X obj 509 370 float 0.5;
+#X msg 509 393 \$1 300;
+#X obj 509 350 del 200;
+#X msg 226 395 0 20;
+#X obj 297 331 catch~ \$0-dummy;
+#X obj 241 310 throw~ \$0-dummy;
+#X obj 353 310 throw~ \$0-dummy;
+#X msg 241 282 set rec1;
+#X msg 353 280 set rec2;
+#X obj 296 411 pack 0 20;
+#X obj 114 121 hsl 50 15 0 1 0 0 \$0-vol \$0-vol volume 5 8 1 10 -4034
+-1 -1 0 1;
+#X obj 296 389 r \$0-vol;
+#X obj 538 93 r \$0-vol;
+#X msg 538 116 \; pd dsp 1;
+#X obj 92 148 inlet~;
+#X obj 187 149 inlet~;
+#X obj 92 201 clip~ -1 1;
+#X obj 188 202 clip~ -1 1;
+#X obj 92 176 hip~ 3;
+#X obj 187 176 hip~ 3;
+#X text 241 178 fight DC;
+#X text 268 203 clip it like an iPhod;
+#X obj 451 208 route record play;
+#X obj 593 301 r #volume;
+#X obj 593 322 route set;
+#X connect 1 0 28 0;
+#X connect 2 0 8 0;
+#X connect 2 1 9 0;
+#X connect 3 0 0 1;
+#X connect 4 0 0 0;
+#X connect 5 0 3 1;
+#X connect 5 0 4 1;
+#X connect 6 0 7 0;
+#X connect 7 0 5 0;
+#X connect 8 0 6 0;
+#X connect 9 0 5 0;
+#X connect 13 0 11 0;
+#X connect 14 0 12 0;
+#X connect 15 0 5 0;
+#X connect 17 0 15 0;
+#X connect 18 0 19 0;
+#X connect 20 0 24 0;
+#X connect 21 0 25 0;
+#X connect 22 0 4 0;
+#X connect 22 0 11 0;
+#X connect 23 0 3 0;
+#X connect 23 0 12 0;
+#X connect 24 0 22 0;
+#X connect 25 0 23 0;
+#X connect 28 0 14 0;
+#X connect 28 0 13 0;
+#X connect 28 1 2 0;
+#X connect 29 0 30 0;
+#X connect 30 0 6 0;
+#X coords 0 -1 1 1 85 40 1 100 100;
diff --git a/l2ork_addons/rjlib/src/makefile b/l2ork_addons/rjlib/src/makefile
new file mode 100644
index 000000000..c2bc3c1f9
--- /dev/null
+++ b/l2ork_addons/rjlib/src/makefile
@@ -0,0 +1,53 @@
+current:
+	echo make pd_linux, l_i386, l_ia64 or pd_darwin
+
+clean: ; rm -f *.pd_linux *.pd_darwin *.pd_win *.o
+
+SOURCES = $(shell ls *.c)
+INCLUDES = -I../ -I../../extralibs/local/include
+
+# ----------------------- LINUX i386 -----------------------
+
+pd_linux: $(SOURCES:.c=.pd_linux)
+l_i386: $(SOURCES:.c=.l_i386)
+l_ia64: $(SOURCES:.c=.l_ia64)
+
+.SUFFIXES: .pd_linux .l_i386 .l_ia64
+
+LINUXCFLAGS = -DPD -O2 -funroll-loops -fomit-frame-pointer -fPIC \
+    -Wall -W -Wshadow -Wstrict-prototypes -Werror \
+    -Wno-unused -Wno-parentheses -Wno-switch
+
+
+.c.pd_linux:
+	cc $(LINUXCFLAGS) $(INCLUDES) -o $*.o -c $*.c
+	ld -export_dynamic  -shared -o ../$*.pd_linux $*.o -lc -lm
+	strip --strip-unneeded ../$*.pd_linux
+	rm $*.o
+
+.c.l_i386:
+	cc $(LINUXCFLAGS) $(INCLUDES) -o $*.o -c $*.c
+	ld -export_dynamic  -shared -o ../$*.l_i386 $*.o -lc -lm
+	strip --strip-unneeded ../$*.l_i386
+	rm $*.o
+
+.c.l_ia64:
+	cc $(LINUXCFLAGS) $(INCLUDES) -o $*.o -c $*.c
+	ld -export_dynamic  -shared -o ../$*.l_ia64 $*.o -lc -lm
+	strip --strip-unneeded ../$*.l_ia64
+	rm $*.o
+
+# ----------------------- Mac OSX -----------------------
+
+pd_darwin: $(SOURCES:.c=.pd_darwin) 
+
+.SUFFIXES: .pd_darwin
+
+DARWINCFLAGS = -DPD -O2 -Wall -W -Wshadow -Wstrict-prototypes \
+    -Wno-unused -Wno-parentheses -Wno-switch
+
+.c.pd_darwin:
+	cc $(DARWINCFLAGS) $(INCLUDES) -o $*.o -c $*.c
+	cc -bundle -undefined suppress -flat_namespace -o ../$*.pd_darwin $*.o 
+	rm -f $*.o
+
diff --git a/l2ork_addons/rjlib/src/makefile_mingw b/l2ork_addons/rjlib/src/makefile_mingw
new file mode 100644
index 000000000..ceb075b3f
--- /dev/null
+++ b/l2ork_addons/rjlib/src/makefile_mingw
@@ -0,0 +1,36 @@
+current: all
+
+.SUFFIXES: .dll
+
+PDPATH = "c:/pd_41_4"
+
+INCLUDE = -I. -I$(PDPATH)/src
+
+LDFLAGS = --export-dynamic -shared
+
+#select either the DBG and OPT compiler flags below:
+
+CFLAGS = -DPD -DNT -W -Wno-unused -mms-bitfields\
+	-Wno-parentheses -Wno-switch -O6 -funroll-loops -fomit-frame-pointer
+
+SYSTEM = $(shell uname -m)
+
+# the sources:
+
+SRC = rj_accum.c rj_centroid~.c rj_zcr~.c rj_senergy~.c rj_barkflux_accum~.c
+
+OBJ = $(SRC:.c=.dll)
+
+
+#  ------------------ targets ------------------------------------
+
+
+clean:
+	rm -f *.a *.def *.o *.dll
+
+all: $(OBJ)
+
+.c.dll:
+	gcc $(CFLAGS) $(INCLUDE) -c -o $*.o  $*.c
+	g++ $(LDFLAGS) -o ../$*.dll $*.o $(PDPATH)/bin/pd.dll -lc
+	strip --strip-unneeded $*.dll
diff --git a/l2ork_addons/rjlib/src/rj_accum-help.pd b/l2ork_addons/rjlib/src/rj_accum-help.pd
new file mode 100644
index 000000000..d1e3c708e
--- /dev/null
+++ b/l2ork_addons/rjlib/src/rj_accum-help.pd
@@ -0,0 +1,218 @@
+#N canvas 354 121 450 300 10;
+#X obj 184 52 adc~;
+#N canvas 90 78 1350 776 myFFTanalysis 1;
+#X obj 51 58 block~ 1024 2;
+#N canvas 0 22 450 300 (subpatch) 0;
+#X array \$0-hann 1024 float 1;
+#A 0 0 1.88351e-05 3.76403e-05 9.41157e-05 0.000150591 0.000244677
+0.000338793 0.000470519 0.000602275 0.000771582 0.000940919 0.00114784
+0.00135475 0.00159922 0.00184369 0.00212565 0.00240761 0.00272706 0.00304651
+0.00340337 0.00376022 0.00415444 0.00454867 0.00498021 0.00541171 0.00588048
+0.00634927 0.00685519 0.00736114 0.00790417 0.00844723 0.0090273 0.00960734
+0.0102243 0.0108413 0.0114951 0.0121489 0.0128394 0.01353 0.0142572
+0.0149843 0.015748 0.0165117 0.0173118 0.0181119 0.0189483 0.0197847
+0.0206572 0.0215298 0.0224383 0.0233469 0.0242914 0.0252359 0.0262161
+0.0271963 0.0282121 0.0292279 0.0302792 0.0313304 0.032417 0.0335035
+0.0346252 0.0357469 0.0369035 0.0380602 0.0392516 0.040443 0.041669
+0.042895 0.0441555 0.0454159 0.0467106 0.0480052 0.0493339 0.0506626
+0.0520252 0.0533877 0.0547839 0.05618 0.0576096 0.0590392 0.060502
+0.0619648 0.0634606 0.0649563 0.0664849 0.0680134 0.0695744 0.0711355
+0.0727288 0.0743222 0.0759476 0.077573 0.0792302 0.0808874 0.0825762
+0.084265 0.085985 0.0877051 0.0894562 0.0912073 0.0929892 0.0947711
+0.0965835 0.0983959 0.100239 0.102081 0.103954 0.105826 0.107729 0.109631
+0.111563 0.113494 0.115455 0.117416 0.119406 0.121395 0.123413 0.125431
+0.127478 0.129524 0.131598 0.133672 0.135774 0.137876 0.140005 0.142134
+0.14429 0.146446 0.148629 0.150811 0.15302 0.155229 0.157464 0.159699
+0.161959 0.16422 0.166506 0.168792 0.171102 0.173413 0.175748 0.178084
+0.180443 0.182803 0.185186 0.18757 0.189977 0.192384 0.194814 0.197244
+0.199697 0.20215 0.204625 0.2071 0.209598 0.212095 0.214614 0.217133
+0.219674 0.222214 0.224775 0.227337 0.229919 0.2325 0.235102 0.237704
+0.240326 0.242948 0.245589 0.24823 0.25089 0.25355 0.256229 0.258907
+0.261604 0.264301 0.267015 0.26973 0.272462 0.275194 0.277942 0.280691
+0.283457 0.286222 0.289003 0.291785 0.294582 0.297379 0.300191 0.303003
+0.305831 0.308658 0.311499 0.314341 0.317196 0.320052 0.322921 0.32579
+0.328672 0.331555 0.334449 0.337344 0.340252 0.343159 0.346078 0.348997
+0.351927 0.354857 0.357798 0.36074 0.363691 0.366643 0.369605 0.372567
+0.375538 0.37851 0.38149 0.384471 0.38746 0.390449 0.393447 0.396444
+0.399449 0.402455 0.405467 0.40848 0.411499 0.414519 0.417545 0.420571
+0.423603 0.426635 0.429672 0.432709 0.435752 0.438794 0.441842 0.444889
+0.44794 0.450991 0.454046 0.457101 0.460159 0.463218 0.466279 0.46934
+0.472403 0.475466 0.478531 0.481596 0.484663 0.487729 0.490797 0.493864
+0.496932 0.5 0.503068 0.506136 0.509203 0.512271 0.515337 0.518404
+0.521469 0.524534 0.527597 0.53066 0.533721 0.536782 0.539841 0.542899
+0.545954 0.549009 0.55206 0.555111 0.558158 0.561205 0.564248 0.56729
+0.570328 0.573365 0.576397 0.579429 0.582455 0.585481 0.588501 0.59152
+0.594533 0.597545 0.600551 0.603556 0.606553 0.609551 0.61254 0.615529
+0.61851 0.62149 0.624462 0.627433 0.630395 0.633357 0.636308 0.63926
+0.642201 0.645143 0.648073 0.651003 0.653922 0.656841 0.659748 0.662656
+0.66555 0.668445 0.671328 0.67421 0.677079 0.679948 0.682804 0.685659
+0.688501 0.691342 0.694169 0.696997 0.699809 0.702621 0.705418 0.708215
+0.710997 0.713778 0.716543 0.719309 0.722057 0.724806 0.727538 0.73027
+0.732984 0.735699 0.738396 0.741093 0.743771 0.74645 0.74911 0.75177
+0.754411 0.757052 0.759674 0.762295 0.764897 0.767499 0.770081 0.772663
+0.775224 0.777786 0.780326 0.782867 0.785386 0.787905 0.790402 0.7929
+0.795375 0.79785 0.800303 0.802756 0.805186 0.807616 0.810023 0.812431
+0.814814 0.817197 0.819557 0.821916 0.824252 0.826587 0.828898 0.831209
+0.833494 0.83578 0.838041 0.840301 0.842536 0.844771 0.84698 0.849189
+0.851372 0.853554 0.85571 0.857866 0.859995 0.862124 0.864226 0.866328
+0.868402 0.870476 0.872523 0.874569 0.876587 0.878605 0.880595 0.882584
+0.884545 0.886506 0.888438 0.890369 0.892272 0.894174 0.896047 0.897919
+0.899762 0.901605 0.903417 0.905229 0.907011 0.908793 0.910544 0.912295
+0.914015 0.915736 0.917424 0.919113 0.92077 0.922428 0.924053 0.925678
+0.927272 0.928865 0.930426 0.931987 0.933516 0.935044 0.93654 0.938036
+0.939499 0.940961 0.942391 0.94382 0.945217 0.946613 0.947975 0.949338
+0.950667 0.951995 0.95329 0.954585 0.955845 0.957106 0.958332 0.959558
+0.960749 0.96194 0.963097 0.964254 0.965375 0.966497 0.967584 0.96867
+0.969721 0.970773 0.971788 0.972804 0.973784 0.974765 0.975709 0.976654
+0.977562 0.978471 0.979343 0.980216 0.981052 0.981889 0.982689 0.983489
+0.984252 0.985016 0.985743 0.98647 0.987161 0.987852 0.988505 0.989159
+0.989776 0.990393 0.990973 0.991553 0.992096 0.992639 0.993145 0.993651
+0.99412 0.994589 0.99502 0.995452 0.995846 0.99624 0.996597 0.996954
+0.997273 0.997593 0.997874 0.998156 0.998401 0.998645 0.998852 0.999059
+0.999229 0.999398 0.99953 0.999661 0.999755 0.999849 0.999906 0.999962
+0.999981 1 0.999981 0.999962 0.999906 0.999849 0.999755 0.999661 0.999529
+0.999398 0.999228 0.999059 0.998852 0.998645 0.998401 0.998156 0.997874
+0.997592 0.997273 0.996953 0.996596 0.996239 0.995845 0.995451 0.995019
+0.994588 0.994119 0.99365 0.993144 0.992638 0.992095 0.991552 0.990972
+0.990392 0.989775 0.989158 0.988504 0.987851 0.98716 0.986469 0.985742
+0.985015 0.984251 0.983488 0.982687 0.981887 0.981051 0.980215 0.979342
+0.978469 0.977561 0.976652 0.975708 0.974763 0.973783 0.972803 0.971787
+0.970771 0.96972 0.968669 0.967582 0.966495 0.965374 0.964252 0.963095
+0.961939 0.960747 0.959556 0.95833 0.957104 0.955843 0.954583 0.953288
+0.951993 0.950665 0.949336 0.947973 0.946611 0.945215 0.943818 0.942389
+0.940959 0.939496 0.938034 0.936538 0.935042 0.933514 0.931985 0.930424
+0.928863 0.927269 0.925676 0.924051 0.922425 0.920768 0.919111 0.917422
+0.915733 0.914013 0.912293 0.910542 0.908791 0.907009 0.905227 0.903414
+0.901602 0.899759 0.897917 0.896044 0.894171 0.892269 0.890367 0.888435
+0.886503 0.884542 0.882582 0.880592 0.878602 0.876584 0.874566 0.87252
+0.870473 0.868399 0.866325 0.864223 0.862121 0.859992 0.857863 0.855707
+0.853551 0.851368 0.849186 0.846977 0.844768 0.842533 0.840298 0.838037
+0.835777 0.833491 0.831205 0.828895 0.826584 0.824249 0.821913 0.819554
+0.817194 0.814811 0.812427 0.81002 0.807613 0.805183 0.802753 0.8003
+0.797847 0.795372 0.792896 0.790399 0.787901 0.785382 0.782863 0.780323
+0.777782 0.775221 0.77266 0.770078 0.767496 0.764894 0.762292 0.75967
+0.757048 0.754407 0.751766 0.749106 0.746446 0.743767 0.741089 0.738392
+0.735695 0.732981 0.730266 0.727534 0.724802 0.722054 0.719305 0.71654
+0.713774 0.710993 0.708211 0.705414 0.702617 0.699805 0.696993 0.694165
+0.691338 0.688497 0.685655 0.6828 0.679944 0.677075 0.674206 0.671324
+0.668441 0.665546 0.662652 0.659744 0.656837 0.653918 0.650999 0.648069
+0.645139 0.642197 0.639256 0.636304 0.633353 0.630391 0.627429 0.624458
+0.621486 0.618506 0.615525 0.612536 0.609547 0.606549 0.603552 0.600546
+0.597541 0.594529 0.591516 0.588496 0.585477 0.582451 0.579425 0.576393
+0.573361 0.570324 0.567286 0.564244 0.561201 0.558154 0.555107 0.552056
+0.549004 0.545949 0.542894 0.539836 0.536778 0.533717 0.530656 0.527593
+0.52453 0.521464 0.518399 0.515333 0.512266 0.509199 0.506131 0.503064
+0.499996 0.496928 0.49386 0.490792 0.487725 0.484659 0.481592 0.478527
+0.475462 0.472399 0.469335 0.466274 0.463213 0.460155 0.457097 0.454042
+0.450987 0.447936 0.444884 0.441837 0.43879 0.435748 0.432705 0.429668
+0.42663 0.423598 0.420566 0.417541 0.414515 0.411495 0.408476 0.405463
+0.40245 0.399445 0.39644 0.393442 0.390445 0.387456 0.384466 0.381486
+0.378505 0.375534 0.372563 0.369601 0.366639 0.363687 0.360736 0.357794
+0.354853 0.351923 0.348993 0.346074 0.343155 0.340247 0.33734 0.334445
+0.331551 0.328668 0.325786 0.322917 0.320048 0.317192 0.314337 0.311495
+0.308654 0.305827 0.302999 0.300187 0.297375 0.294578 0.291781 0.288999
+0.286218 0.283453 0.280687 0.277939 0.27519 0.272458 0.269726 0.267012
+0.264297 0.2616 0.258904 0.256225 0.253547 0.250886 0.248226 0.245585
+0.242944 0.240323 0.237701 0.235099 0.232497 0.229915 0.227333 0.224772
+0.222211 0.21967 0.21713 0.214611 0.212092 0.209594 0.207097 0.204622
+0.202146 0.199693 0.19724 0.19481 0.19238 0.189973 0.187566 0.185183
+0.182799 0.18044 0.17808 0.175745 0.17341 0.171099 0.168788 0.166502
+0.164217 0.161956 0.159696 0.157461 0.155226 0.153017 0.150808 0.148625
+0.146443 0.144287 0.142131 0.140002 0.137873 0.135771 0.133669 0.131595
+0.129521 0.127474 0.125428 0.12341 0.121392 0.119402 0.117413 0.115452
+0.113491 0.11156 0.109628 0.107726 0.105823 0.103951 0.102078 0.100236
+0.0983929 0.0965805 0.0947681 0.0929862 0.0912043 0.0894533 0.0877022
+0.0859821 0.084262 0.0825733 0.0808845 0.0792274 0.0775702 0.0759448
+0.0743194 0.0727261 0.0711327 0.0695717 0.0680107 0.0664822 0.0649537
+0.0634579 0.0619622 0.0604994 0.0590366 0.0576071 0.0561775 0.0547814
+0.0533852 0.0520227 0.0506602 0.0493315 0.0480028 0.0467082 0.0454136
+0.0441532 0.0428927 0.0416667 0.0404407 0.0392494 0.038058 0.0369014
+0.0357448 0.0346231 0.0335014 0.0324149 0.0313284 0.0302772 0.0292259
+0.0282102 0.0271944 0.0262142 0.025234 0.0242896 0.0233451 0.0224366
+0.0215281 0.0206555 0.019783 0.0189467 0.0181103 0.0173103 0.0165102
+0.0157465 0.0149829 0.0142557 0.0135286 0.0128381 0.0121476 0.0114938
+0.01084 0.0102231 0.00960612 0.00902611 0.0084461 0.0079031 0.0073601
+0.00685418 0.00634828 0.00587955;
+#A 1000 0.00541082 0.00497931 0.00454783 0.00415364 0.00375944 0.00340262
+0.0030458 0.00272641 0.00240701 0.00212508 0.00184312 0.00159872 0.00135428
+0.00114739 0.000940531 0.000771224 0.000601947 0.000470251 0.000338554
+0.000244498 0.000150412 9.39965e-05 3.75509e-05 1.87755e-05;
+#X coords 0 1 1023 0 200 120 1;
+#X restore 257 137 graph;
+#X msg 174 141 0;
+#X obj 59 195 osc~;
+#X obj 59 147 samplerate~;
+#X obj 59 218 *~ -0.5;
+#X obj 59 241 +~ 0.5;
+#X obj 51 266 tabwrite~ \$0-hann;
+#X obj 51 124 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 330 104 Hann window;
+#X text 49 99 recalculate Hann;
+#X text 84 114 window table;
+#X text 107 193 comment;
+#X obj 59 171 / 512;
+#X obj 558 145 *~;
+#X obj 557 80 inlet~;
+#X obj 558 199 rfft~;
+#X obj 579 121 tabreceive~ \$0-hann;
+#X obj 557 287 *~;
+#X obj 599 287 *~;
+#X obj 558 337 sqrt~;
+#X text 768 112 tabreceive~ outputs array contents \,;
+#X text 768 130 constantly \, every block. Here it's;
+#X text 766 150 used to get the Hann window to;
+#X text 768 168 multiply by the input.;
+#X text 619 80 The inlet~ automatically re-blocks to the new block
+size.;
+#X obj 558 313 +~;
+#X text 637 289 Take the magnitude by squaring real and imaginary part
+\, adding and taking square root.;
+#X text 625 196 forward real FFT. Like "fft~" \, but only one inlet
+(for the real part) and only the first half of the output signals are
+used. (The others are determined by symmetry: they're complex conjugates
+of the first half \, in reverse order.) This takes 1/2 the CPU time
+of "fft".;
+#X obj 55 382 table phase 513;
+#X obj 54 409 table magnitude 513;
+#X obj 558 536 hsl 128 15 -1 1 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X msg 663 424 st 2;
+#X msg 726 428 lt 20;
+#X text 652 393 compute the center of gravity of the magnitude spectrum
+;
+#X text 653 490 accum takes only 1d float messsages output is relative
+change of short time average compared to long tim average;
+#X obj 559 460 rj_accum 512;
+#X text 777 426 change short time and long time durations here \, default
+is: st 5 s \, lt 30 s;
+#X obj 559 396 rj_centroid~;
+#X obj 814 354 loadbang;
+#X connect 2 0 3 1;
+#X connect 3 0 5 0;
+#X connect 4 0 13 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 8 0 4 0;
+#X connect 8 0 2 0;
+#X connect 8 0 7 0;
+#X connect 13 0 3 0;
+#X connect 14 0 16 0;
+#X connect 15 0 14 0;
+#X connect 16 0 18 0;
+#X connect 16 0 18 1;
+#X connect 16 1 19 0;
+#X connect 16 1 19 1;
+#X connect 17 0 14 1;
+#X connect 18 0 26 0;
+#X connect 19 0 26 1;
+#X connect 20 0 38 0;
+#X connect 26 0 20 0;
+#X connect 32 0 36 0;
+#X connect 33 0 36 0;
+#X connect 36 0 31 0;
+#X connect 38 0 36 0;
+#X connect 39 0 32 0;
+#X connect 39 0 33 0;
+#X restore 190 114 pd myFFTanalysis;
+#X connect 0 0 1 0;
diff --git a/l2ork_addons/rjlib/src/rj_accum.c b/l2ork_addons/rjlib/src/rj_accum.c
new file mode 100644
index 000000000..3acb44dfa
--- /dev/null
+++ b/l2ork_addons/rjlib/src/rj_accum.c
@@ -0,0 +1,195 @@
+/* code for the "rj_accum" pd class. 
+ver 0.2
+Amaury Hazan 
+Damian Stewart
+*/
+
+#include "m_pd.h"
+#include <stdlib.h>
+#include <string.h>
+
+#define DEF_BLOCKSIZE 512
+ 
+typedef struct rj_accum
+{
+  t_object x_obj;
+  
+  // configuration values
+  float blocksize;
+  float samplerate;
+  
+  //short-time buffer, size,counter and desired duration (in s)
+  float * st_buffer;
+  int st_buffersize;
+  int st_buffercnt;
+  float st_duration;
+  float st_mean;
+  float st_total;
+  int st_idx;
+	
+  //long-time buffer, size, counter and desired duration (in s)
+  float * lt_buffer;
+  int lt_buffersize;
+  int lt_buffercnt;
+  float lt_duration;
+  float lt_mean;
+  float lt_total;
+  int lt_idx;
+  
+  float rel_change;
+  
+  t_outlet* relative_change;		   /* m: place for outlet */
+  
+} t_rj_accum;
+
+void rj_accum_float(t_rj_accum *x, t_floatarg f)
+{
+    if (x->st_buffercnt< x->st_buffersize-1) x->st_buffercnt++;
+    // calculate new total: subtract old, add new
+    x->st_total -= x->st_buffer[x->st_idx];
+    x->st_total += f;
+    x->st_buffer[x->st_idx] = f;
+    // increment index
+    x->st_idx = ( x->st_idx + 1 ) % x->st_buffersize;
+    
+    //x->st_mean=x->st_mean*st_before_weight + f*st_after_weight;
+    x->st_mean = x->st_total / x->st_buffercnt;
+    
+    if (x->lt_buffercnt< x->lt_buffersize-1) x->lt_buffercnt++;
+    // calculate new total: subtract old, add new
+    x->lt_total -= x->lt_buffer[x->lt_idx];
+    x->lt_total += f;
+    x->lt_buffer[x->lt_idx] = f;
+    // increment index
+    x->lt_idx = ( x->lt_idx + 1 ) % x->lt_buffersize;
+    //x->lt_mean=x->lt_mean*lt_before_weight + f*lt_after_weight;
+    x->lt_mean = x->lt_total / x->lt_buffercnt;
+    
+    if (x->lt_mean==0) x->rel_change=0;
+    else x->rel_change=(x->st_mean-x->lt_mean)/x->lt_mean;    
+    
+	outlet_float(x->relative_change, x->rel_change);
+}
+
+t_class *rj_accum_class;
+
+void rj_accum_set_st(t_rj_accum *x, t_floatarg g)
+{
+    post("short term duration fixed to %f", g);
+    x->st_duration=g;
+    // determining st buffer size
+    x->st_buffersize= (int) ((x->st_duration*x->samplerate)/x->blocksize);  
+    x->st_buffercnt=0;
+    free( x->st_buffer );
+    x->st_buffer = malloc( x->st_buffersize*sizeof(float) );
+    memset( x->st_buffer, 0, x->st_buffersize*sizeof(float) );
+    x->st_total = 0;
+    x->st_idx = 0;
+    post("short term number of frames %d", x->st_buffersize);
+    
+}
+
+void rj_accum_set_lt(t_rj_accum *x, t_floatarg g)
+{
+    post("long term duration fixed to %f", g);
+    x->lt_duration=g;
+    // determining st buffer size
+    x->lt_buffersize= (int) ((x->lt_duration*x->samplerate)/x->blocksize);  
+    x->lt_buffercnt=0;
+    free( x->lt_buffer );
+    x->lt_buffer = malloc( x->lt_buffersize*sizeof(float) );
+    memset( x->lt_buffer, 0, x->lt_buffersize*sizeof(float) );
+    x->lt_total = 0;
+    x->lt_idx = 0;
+    post("long term number of frames %d", x->lt_buffersize);
+}
+
+void *rj_accum_new(t_symbol *selector, int argcount, t_atom *argvec)
+{
+    t_rj_accum *x = (t_rj_accum *)pd_new(rj_accum_class);
+    x->relative_change=outlet_new(&x->x_obj, &s_float);
+    
+    post("new %s", selector->s_name);
+    
+    // param passing
+    if (argcount==1){
+      x->st_duration=5.f;
+      x->lt_duration=30.f;
+      x->blocksize=argvec[0].a_w.w_float;
+      x->samplerate=sys_getsr();
+    }
+    else if (argcount==0){
+      x->st_duration=5.f;
+      x->lt_duration=30.f;
+      x->blocksize=DEF_BLOCKSIZE;  
+      x->samplerate=sys_getsr();
+    }
+    else{
+      post("usage: rj_accum [hopsize]");
+      post("       where hopsize is processing hop size (default 512)");
+      
+      post("you provided %d arguments",argcount);
+      
+      x->st_duration=5.f;
+      x->lt_duration=30.f;
+      x->blocksize=DEF_BLOCKSIZE;  
+      x->samplerate=sys_getsr();  
+    }
+    
+    post("std %f", x->st_duration);
+    post("ltd %f", x->lt_duration);
+    post("hopsize %f", x->blocksize);
+    post("samplerate %f", x->samplerate);
+    
+    // buffers allocation
+    int cnt;
+    
+    // detrmining st buffer size
+    x->st_buffersize= (int) ((x->st_duration*x->samplerate)/x->blocksize);  
+    x->st_buffercnt=0;
+    
+    // detrmining lt buffer size
+    x->lt_buffersize= (int) ((x->lt_duration*x->samplerate)/x->blocksize);  
+	x->lt_buffercnt=0;
+
+    // initializing buffers	
+    x->st_buffer = (float*)malloc( x->st_buffersize*sizeof(float) );
+    x->lt_buffer = (float*)malloc( x->lt_buffersize*sizeof(float) );
+    memset( x->st_buffer, 0, x->st_buffersize*sizeof(float) );
+    memset( x->lt_buffer, 0, x->lt_buffersize*sizeof(float) );
+
+	// initilaizing means
+	x->st_mean=0.f;
+	x->lt_mean=0.f;
+	
+	// initializing totals and indexes
+	x->st_total = 0.f;
+	x->st_idx = 0;
+	x->lt_total = 0.f;
+	x->lt_idx = 0;
+	
+	x->rel_change=0.f;
+    
+    return (void *)x;
+}
+
+static void rj_accumulator_free(t_rj_accum *x) 
+{
+    free( x->st_buffer );	
+    free( x->lt_buffer );	
+}
+
+void rj_accum_setup(void)
+{
+    
+    /* We specify "A_GIMME" as creation argument for both the creation
+	routine and the method (callback) for the "conf" message.  */
+    rj_accum_class = class_new(gensym("rj_accum"), (t_newmethod)rj_accum_new,
+    	0, sizeof(t_rj_accum), 0, A_GIMME, 0);
+    
+    class_addfloat(rj_accum_class, rj_accum_float);
+    class_addmethod(rj_accum_class, (t_method)rj_accum_set_st, gensym("st"), A_FLOAT, 0);
+	class_addmethod(rj_accum_class, (t_method)rj_accum_set_lt, gensym("lt"), A_FLOAT, 0);
+    post("rj_accum version 0.2");
+}
+
diff --git a/l2ork_addons/rjlib/src/rj_barkflux_accum~-help.pd b/l2ork_addons/rjlib/src/rj_barkflux_accum~-help.pd
new file mode 100644
index 000000000..7bab99abf
--- /dev/null
+++ b/l2ork_addons/rjlib/src/rj_barkflux_accum~-help.pd
@@ -0,0 +1,214 @@
+#N canvas 354 121 450 300 10;
+#X obj 184 52 adc~;
+#N canvas 90 124 1350 776 myFFTanalysis 1;
+#X obj 51 58 block~ 1024 2;
+#N canvas 0 22 450 300 (subpatch) 0;
+#X array \$0-hann 1024 float 1;
+#A 0 0 1.88351e-05 3.76403e-05 9.41157e-05 0.000150591 0.000244677
+0.000338793 0.000470519 0.000602275 0.000771582 0.000940919 0.00114784
+0.00135475 0.00159922 0.00184369 0.00212565 0.00240761 0.00272706 0.00304651
+0.00340337 0.00376022 0.00415444 0.00454867 0.00498021 0.00541171 0.00588048
+0.00634927 0.00685519 0.00736114 0.00790417 0.00844723 0.0090273 0.00960734
+0.0102243 0.0108413 0.0114951 0.0121489 0.0128394 0.01353 0.0142572
+0.0149843 0.015748 0.0165117 0.0173118 0.0181119 0.0189483 0.0197847
+0.0206572 0.0215298 0.0224383 0.0233469 0.0242914 0.0252359 0.0262161
+0.0271963 0.0282121 0.0292279 0.0302792 0.0313304 0.032417 0.0335035
+0.0346252 0.0357469 0.0369035 0.0380602 0.0392516 0.040443 0.041669
+0.042895 0.0441555 0.0454159 0.0467106 0.0480052 0.0493339 0.0506626
+0.0520252 0.0533877 0.0547839 0.05618 0.0576096 0.0590392 0.060502
+0.0619648 0.0634606 0.0649563 0.0664849 0.0680134 0.0695744 0.0711355
+0.0727288 0.0743222 0.0759476 0.077573 0.0792302 0.0808874 0.0825762
+0.084265 0.085985 0.0877051 0.0894562 0.0912073 0.0929892 0.0947711
+0.0965835 0.0983959 0.100239 0.102081 0.103954 0.105826 0.107729 0.109631
+0.111563 0.113494 0.115455 0.117416 0.119406 0.121395 0.123413 0.125431
+0.127478 0.129524 0.131598 0.133672 0.135774 0.137876 0.140005 0.142134
+0.14429 0.146446 0.148629 0.150811 0.15302 0.155229 0.157464 0.159699
+0.161959 0.16422 0.166506 0.168792 0.171102 0.173413 0.175748 0.178084
+0.180443 0.182803 0.185186 0.18757 0.189977 0.192384 0.194814 0.197244
+0.199697 0.20215 0.204625 0.2071 0.209598 0.212095 0.214614 0.217133
+0.219674 0.222214 0.224775 0.227337 0.229919 0.2325 0.235102 0.237704
+0.240326 0.242948 0.245589 0.24823 0.25089 0.25355 0.256229 0.258907
+0.261604 0.264301 0.267015 0.26973 0.272462 0.275194 0.277942 0.280691
+0.283457 0.286222 0.289003 0.291785 0.294582 0.297379 0.300191 0.303003
+0.305831 0.308658 0.311499 0.314341 0.317196 0.320052 0.322921 0.32579
+0.328672 0.331555 0.334449 0.337344 0.340252 0.343159 0.346078 0.348997
+0.351927 0.354857 0.357798 0.36074 0.363691 0.366643 0.369605 0.372567
+0.375538 0.37851 0.38149 0.384471 0.38746 0.390449 0.393447 0.396444
+0.399449 0.402455 0.405467 0.40848 0.411499 0.414519 0.417545 0.420571
+0.423603 0.426635 0.429672 0.432709 0.435752 0.438794 0.441842 0.444889
+0.44794 0.450991 0.454046 0.457101 0.460159 0.463218 0.466279 0.46934
+0.472403 0.475466 0.478531 0.481596 0.484663 0.487729 0.490797 0.493864
+0.496932 0.5 0.503068 0.506136 0.509203 0.512271 0.515337 0.518404
+0.521469 0.524534 0.527597 0.53066 0.533721 0.536782 0.539841 0.542899
+0.545954 0.549009 0.55206 0.555111 0.558158 0.561205 0.564248 0.56729
+0.570328 0.573365 0.576397 0.579429 0.582455 0.585481 0.588501 0.59152
+0.594533 0.597545 0.600551 0.603556 0.606553 0.609551 0.61254 0.615529
+0.61851 0.62149 0.624462 0.627433 0.630395 0.633357 0.636308 0.63926
+0.642201 0.645143 0.648073 0.651003 0.653922 0.656841 0.659748 0.662656
+0.66555 0.668445 0.671328 0.67421 0.677079 0.679948 0.682804 0.685659
+0.688501 0.691342 0.694169 0.696997 0.699809 0.702621 0.705418 0.708215
+0.710997 0.713778 0.716543 0.719309 0.722057 0.724806 0.727538 0.73027
+0.732984 0.735699 0.738396 0.741093 0.743771 0.74645 0.74911 0.75177
+0.754411 0.757052 0.759674 0.762295 0.764897 0.767499 0.770081 0.772663
+0.775224 0.777786 0.780326 0.782867 0.785386 0.787905 0.790402 0.7929
+0.795375 0.79785 0.800303 0.802756 0.805186 0.807616 0.810023 0.812431
+0.814814 0.817197 0.819557 0.821916 0.824252 0.826587 0.828898 0.831209
+0.833494 0.83578 0.838041 0.840301 0.842536 0.844771 0.84698 0.849189
+0.851372 0.853554 0.85571 0.857866 0.859995 0.862124 0.864226 0.866328
+0.868402 0.870476 0.872523 0.874569 0.876587 0.878605 0.880595 0.882584
+0.884545 0.886506 0.888438 0.890369 0.892272 0.894174 0.896047 0.897919
+0.899762 0.901605 0.903417 0.905229 0.907011 0.908793 0.910544 0.912295
+0.914015 0.915736 0.917424 0.919113 0.92077 0.922428 0.924053 0.925678
+0.927272 0.928865 0.930426 0.931987 0.933516 0.935044 0.93654 0.938036
+0.939499 0.940961 0.942391 0.94382 0.945217 0.946613 0.947975 0.949338
+0.950667 0.951995 0.95329 0.954585 0.955845 0.957106 0.958332 0.959558
+0.960749 0.96194 0.963097 0.964254 0.965375 0.966497 0.967584 0.96867
+0.969721 0.970773 0.971788 0.972804 0.973784 0.974765 0.975709 0.976654
+0.977562 0.978471 0.979343 0.980216 0.981052 0.981889 0.982689 0.983489
+0.984252 0.985016 0.985743 0.98647 0.987161 0.987852 0.988505 0.989159
+0.989776 0.990393 0.990973 0.991553 0.992096 0.992639 0.993145 0.993651
+0.99412 0.994589 0.99502 0.995452 0.995846 0.99624 0.996597 0.996954
+0.997273 0.997593 0.997874 0.998156 0.998401 0.998645 0.998852 0.999059
+0.999229 0.999398 0.99953 0.999661 0.999755 0.999849 0.999906 0.999962
+0.999981 1 0.999981 0.999962 0.999906 0.999849 0.999755 0.999661 0.999529
+0.999398 0.999228 0.999059 0.998852 0.998645 0.998401 0.998156 0.997874
+0.997592 0.997273 0.996953 0.996596 0.996239 0.995845 0.995451 0.995019
+0.994588 0.994119 0.99365 0.993144 0.992638 0.992095 0.991552 0.990972
+0.990392 0.989775 0.989158 0.988504 0.987851 0.98716 0.986469 0.985742
+0.985015 0.984251 0.983488 0.982687 0.981887 0.981051 0.980215 0.979342
+0.978469 0.977561 0.976652 0.975708 0.974763 0.973783 0.972803 0.971787
+0.970771 0.96972 0.968669 0.967582 0.966495 0.965374 0.964252 0.963095
+0.961939 0.960747 0.959556 0.95833 0.957104 0.955843 0.954583 0.953288
+0.951993 0.950665 0.949336 0.947973 0.946611 0.945215 0.943818 0.942389
+0.940959 0.939496 0.938034 0.936538 0.935042 0.933514 0.931985 0.930424
+0.928863 0.927269 0.925676 0.924051 0.922425 0.920768 0.919111 0.917422
+0.915733 0.914013 0.912293 0.910542 0.908791 0.907009 0.905227 0.903414
+0.901602 0.899759 0.897917 0.896044 0.894171 0.892269 0.890367 0.888435
+0.886503 0.884542 0.882582 0.880592 0.878602 0.876584 0.874566 0.87252
+0.870473 0.868399 0.866325 0.864223 0.862121 0.859992 0.857863 0.855707
+0.853551 0.851368 0.849186 0.846977 0.844768 0.842533 0.840298 0.838037
+0.835777 0.833491 0.831205 0.828895 0.826584 0.824249 0.821913 0.819554
+0.817194 0.814811 0.812427 0.81002 0.807613 0.805183 0.802753 0.8003
+0.797847 0.795372 0.792896 0.790399 0.787901 0.785382 0.782863 0.780323
+0.777782 0.775221 0.77266 0.770078 0.767496 0.764894 0.762292 0.75967
+0.757048 0.754407 0.751766 0.749106 0.746446 0.743767 0.741089 0.738392
+0.735695 0.732981 0.730266 0.727534 0.724802 0.722054 0.719305 0.71654
+0.713774 0.710993 0.708211 0.705414 0.702617 0.699805 0.696993 0.694165
+0.691338 0.688497 0.685655 0.6828 0.679944 0.677075 0.674206 0.671324
+0.668441 0.665546 0.662652 0.659744 0.656837 0.653918 0.650999 0.648069
+0.645139 0.642197 0.639256 0.636304 0.633353 0.630391 0.627429 0.624458
+0.621486 0.618506 0.615525 0.612536 0.609547 0.606549 0.603552 0.600546
+0.597541 0.594529 0.591516 0.588496 0.585477 0.582451 0.579425 0.576393
+0.573361 0.570324 0.567286 0.564244 0.561201 0.558154 0.555107 0.552056
+0.549004 0.545949 0.542894 0.539836 0.536778 0.533717 0.530656 0.527593
+0.52453 0.521464 0.518399 0.515333 0.512266 0.509199 0.506131 0.503064
+0.499996 0.496928 0.49386 0.490792 0.487725 0.484659 0.481592 0.478527
+0.475462 0.472399 0.469335 0.466274 0.463213 0.460155 0.457097 0.454042
+0.450987 0.447936 0.444884 0.441837 0.43879 0.435748 0.432705 0.429668
+0.42663 0.423598 0.420566 0.417541 0.414515 0.411495 0.408476 0.405463
+0.40245 0.399445 0.39644 0.393442 0.390445 0.387456 0.384466 0.381486
+0.378505 0.375534 0.372563 0.369601 0.366639 0.363687 0.360736 0.357794
+0.354853 0.351923 0.348993 0.346074 0.343155 0.340247 0.33734 0.334445
+0.331551 0.328668 0.325786 0.322917 0.320048 0.317192 0.314337 0.311495
+0.308654 0.305827 0.302999 0.300187 0.297375 0.294578 0.291781 0.288999
+0.286218 0.283453 0.280687 0.277939 0.27519 0.272458 0.269726 0.267012
+0.264297 0.2616 0.258904 0.256225 0.253547 0.250886 0.248226 0.245585
+0.242944 0.240323 0.237701 0.235099 0.232497 0.229915 0.227333 0.224772
+0.222211 0.21967 0.21713 0.214611 0.212092 0.209594 0.207097 0.204622
+0.202146 0.199693 0.19724 0.19481 0.19238 0.189973 0.187566 0.185183
+0.182799 0.18044 0.17808 0.175745 0.17341 0.171099 0.168788 0.166502
+0.164217 0.161956 0.159696 0.157461 0.155226 0.153017 0.150808 0.148625
+0.146443 0.144287 0.142131 0.140002 0.137873 0.135771 0.133669 0.131595
+0.129521 0.127474 0.125428 0.12341 0.121392 0.119402 0.117413 0.115452
+0.113491 0.11156 0.109628 0.107726 0.105823 0.103951 0.102078 0.100236
+0.0983929 0.0965805 0.0947681 0.0929862 0.0912043 0.0894533 0.0877022
+0.0859821 0.084262 0.0825733 0.0808845 0.0792274 0.0775702 0.0759448
+0.0743194 0.0727261 0.0711327 0.0695717 0.0680107 0.0664822 0.0649537
+0.0634579 0.0619622 0.0604994 0.0590366 0.0576071 0.0561775 0.0547814
+0.0533852 0.0520227 0.0506602 0.0493315 0.0480028 0.0467082 0.0454136
+0.0441532 0.0428927 0.0416667 0.0404407 0.0392494 0.038058 0.0369014
+0.0357448 0.0346231 0.0335014 0.0324149 0.0313284 0.0302772 0.0292259
+0.0282102 0.0271944 0.0262142 0.025234 0.0242896 0.0233451 0.0224366
+0.0215281 0.0206555 0.019783 0.0189467 0.0181103 0.0173103 0.0165102
+0.0157465 0.0149829 0.0142557 0.0135286 0.0128381 0.0121476 0.0114938
+0.01084 0.0102231 0.00960612 0.00902611 0.0084461 0.0079031 0.0073601
+0.00685418 0.00634828 0.00587955;
+#A 1000 0.00541082 0.00497931 0.00454783 0.00415364 0.00375944 0.00340262
+0.0030458 0.00272641 0.00240701 0.00212508 0.00184312 0.00159872 0.00135428
+0.00114739 0.000940531 0.000771224 0.000601947 0.000470251 0.000338554
+0.000244498 0.000150412 9.39965e-05 3.75509e-05 1.87755e-05;
+#X coords 0 1 1023 0 200 120 1;
+#X restore 257 137 graph;
+#X msg 174 141 0;
+#X obj 59 195 osc~;
+#X obj 59 147 samplerate~;
+#X obj 59 218 *~ -0.5;
+#X obj 59 241 +~ 0.5;
+#X obj 51 266 tabwrite~ \$0-hann;
+#X obj 51 124 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 330 104 Hann window;
+#X text 49 99 recalculate Hann;
+#X text 84 114 window table;
+#X text 107 193 comment;
+#X obj 59 171 / 512;
+#X obj 558 145 *~;
+#X obj 557 80 inlet~;
+#X obj 558 199 rfft~;
+#X obj 579 121 tabreceive~ \$0-hann;
+#X obj 557 287 *~;
+#X obj 599 287 *~;
+#X obj 558 337 sqrt~;
+#X text 768 112 tabreceive~ outputs array contents \,;
+#X text 768 130 constantly \, every block. Here it's;
+#X text 766 150 used to get the Hann window to;
+#X text 768 168 multiply by the input.;
+#X text 619 80 The inlet~ automatically re-blocks to the new block
+size.;
+#X obj 558 313 +~;
+#X text 637 289 Take the magnitude by squaring real and imaginary part
+\, adding and taking square root.;
+#X text 625 196 forward real FFT. Like "fft~" \, but only one inlet
+(for the real part) and only the first half of the output signals are
+used. (The others are determined by symmetry: they're complex conjugates
+of the first half \, in reverse order.) This takes 1/2 the CPU time
+of "fft".;
+#X obj 55 382 table phase 513;
+#X obj 54 409 table magnitude 513;
+#X obj 555 516 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X msg 708 468 st 10;
+#X msg 708 490 lt 45;
+#X text 760 467 duration of short time window;
+#X text 759 490 duration of long term window;
+#X text 700 379 change detector: computes the spectral difference between
+short term spectrum (13 bark bands) and long term spectrum;
+#X obj 555 388 rj_barkflux_accum~;
+#X obj 729 423 loadbang;
+#X connect 2 0 3 1;
+#X connect 3 0 5 0;
+#X connect 4 0 13 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 8 0 4 0;
+#X connect 8 0 2 0;
+#X connect 8 0 7 0;
+#X connect 13 0 3 0;
+#X connect 14 0 16 0;
+#X connect 15 0 14 0;
+#X connect 16 0 18 0;
+#X connect 16 0 18 1;
+#X connect 16 1 19 0;
+#X connect 16 1 19 1;
+#X connect 17 0 14 1;
+#X connect 18 0 26 0;
+#X connect 19 0 26 1;
+#X connect 20 0 37 0;
+#X connect 26 0 20 0;
+#X connect 32 0 37 0;
+#X connect 33 0 37 0;
+#X connect 37 0 31 0;
+#X connect 38 0 32 0;
+#X connect 38 0 33 0;
+#X restore 190 114 pd myFFTanalysis;
+#X connect 0 0 1 0;
diff --git a/l2ork_addons/rjlib/src/rj_barkflux_accum~.c b/l2ork_addons/rjlib/src/rj_barkflux_accum~.c
new file mode 100644
index 000000000..90c5bd99e
--- /dev/null
+++ b/l2ork_addons/rjlib/src/rj_barkflux_accum~.c
@@ -0,0 +1,372 @@
+#include "m_pd.h"
+#include <math.h>
+#include <stdlib.h>
+
+#ifdef NT
+#pragma warning( disable : 4244 )
+#pragma warning( disable : 4305 )
+#endif
+
+#define NFILTERS 12
+#define LF 40.f
+#define HF 8000.f
+#define WINSIZE 513
+
+/* ----------------------- frequency domain conversion utilities -----------------------*/
+
+// Bark <-> Hz conversion functions
+// // See: Traunmüller (1990) "Analytical expressions for the tonotopic sensory scale" J. Acoust. Soc. Am. 88: 97-100. 
+float freq2bark(float freq){
+    return (26.81f / (1.f + 1960.f / freq ) - 0.53f);
+}
+
+float bark2freq(float z){
+    return (1960.f / (26.81f / (z + 0.53f) - 1.f));
+}
+
+// Mel <-> Hz conversion functions
+// // See: Stevens, Volkman and Newman in 1937 (J. Acoust. Soc. Am 8(3) 185--190)
+float freq2mel(float freq){
+  return (1127.01048f * log (1.f+(freq/700.f)));
+}
+
+float mel2freq(float m){
+    return (700.f*(exp(m/1127.01048f)-1));
+}
+
+// FFTBin <-> Hz conversion functions
+
+int freq2bin(int windowSize,int sampleRate, float freq){
+    return (int) ceil((windowSize*2*freq)/(float)sampleRate);
+}
+
+float bin2freq(int windowSize,int sampleRate, int bin){
+    return ((float) (bin*sampleRate))/(2.f*(float) windowSize);
+}
+
+
+/* ------------------------ Filter objects ------------------------ */
+
+typedef struct {
+    float lf;
+    float hf;
+    float gain;
+} RectSpecFilter;
+
+typedef RectSpecFilter * RectSpecFilter_ptr;
+
+float getCf(RectSpecFilter m) {
+    return (m.hf+m.lf)*.5f;
+}
+
+float getEnergy(RectSpecFilter m ,float * input, int winSize, int sampleRate) { 
+    int lf_index=freq2bin(winSize, sampleRate, m.lf); 
+    int hf_index=freq2bin(winSize, sampleRate, m.hf); 
+    float res=0.; 
+    int i;
+	for (i=lf_index; i<=hf_index; i++) {
+        res+=input[i]*input[i]; 
+    } 
+    return res; 
+}
+
+/* ------------------------ Filterbank ---------------------------- */
+typedef struct {
+	int winSize;
+	int nFilters; 
+	int sampleRate;
+	float lowF;
+	float highF;
+	RectSpecFilter_ptr bankFilters;
+	// bank energies
+	float * bankEn;
+} Filterbank;
+
+typedef Filterbank * Filterbank_ptr;
+
+
+Filterbank_ptr allocFilterbank(int nFilters) {
+	
+	Filterbank_ptr fb=malloc(sizeof(Filterbank));
+	fb->bankFilters=malloc(nFilters*sizeof(RectSpecFilter));
+	fb->bankEn=malloc(nFilters*sizeof(float));
+	
+	return fb;
+}
+
+
+void deleteFilterbank(Filterbank_ptr fb) {
+
+	free(fb->bankFilters);
+	free(fb->bankEn);
+	free(fb);
+}
+
+void initFilterbank(Filterbank_ptr m, int nFilters, int winSize, int sampleRate, float lowF, float highF) {
+	
+	m->lowF=lowF;
+	m->highF=highF;
+	m->sampleRate=sampleRate;
+	m->nFilters=nFilters;
+	m->winSize=winSize;
+	
+	float zBeg, zEnd, zBw;
+	zBeg=freq2bark(lowF);
+	zEnd=freq2bark(highF);
+	zBw=(zEnd-zBeg)/(float) nFilters;
+	
+	// linear separation on the bark scale
+	int i;
+	for (i=0; i<nFilters; i++) {
+		
+		float lf=bark2freq(zBeg+zBw*((float) i));
+		float hf=bark2freq(zBeg+zBw*((float) i + 1.f));
+		float gain=1.f;
+		
+		// set filters lf, hf, gain
+	    m->bankFilters[i].lf=lf;
+		m->bankFilters[i].hf=hf;
+		m->bankFilters[i].gain=lf;
+	}
+};
+
+void computeFilterEnergies(Filterbank_ptr m, float * input){
+	int i;
+	for (i=0; i< m->nFilters; i++){
+		m->bankEn[i]=getEnergy(m->bankFilters[i],input, m->winSize, m->sampleRate) /((float) m->winSize);
+	}
+};
+
+/* ------------------------ rj_barkflux_accum~ for pd----------------------------- */
+
+/* tilde object to take absolute value. */
+
+static t_class *rj_barkflux_accum_class;
+
+typedef struct _rj_barkflux_accum
+{
+    t_object x_obj; 	   /* obligatory header */
+    t_float x_f;    	   /* place to hold inlet's value if it's set by message */
+    Filterbank_ptr fb;     /* fb: place to hold the filterbank structure */
+    
+    // configuration values
+    float blocksize;
+    float samplerate;
+    
+    // short term signal variables   
+    // frame counter
+    int st_buffercnt;
+    // desired duration of short trem description
+    float st_duration;
+    // number of frames needed to describe st signal 
+    int st_buffersize;
+    // short term bark spectrum
+    float * st_spectrum;
+    float * st_spectrum_norm;
+
+    // long term signal variables
+    // frame counter
+    int lt_buffercnt;
+    // desired duration of short trem description
+    float lt_duration;
+    // number of frames needed to describe st signal 
+    int lt_buffersize;
+    // short term bark spectrum
+    float * lt_spectrum;
+    float * lt_spectrum_norm;
+    
+    // error mode
+    // 0=rms
+    // 1-kl divergence
+    int error_mode;
+	
+	t_outlet* rj_barkflux_accum;		   /* m: place for outlet */
+	
+} t_rj_barkflux_accum;
+
+    /* this is the actual performance routine which acts on the samples.
+    It's called with a single pointer "w" which is our location in the
+    DSP call list.  We return a new "w" which will point to the next item
+    after us.  Meanwhile, w[0] is just a pointer to dsp-perform itself
+    (no use to us), w[1] and w[2] are the input and output vector locations,
+    and w[3] is the number of points to calculate. */
+
+static t_int *rj_barkflux_accum_perform(t_int *w)
+{
+	
+	t_rj_barkflux_accum *x = (t_rj_barkflux_accum *)(w[1]);
+    t_float *in = (t_float *)(w[2]);
+	
+	int size=(int)(w[3]);
+	int ifilter;
+	float tmp_err, err=0.f;
+	float st_sum=0.f, lt_sum=0.f; 
+	 
+	if (size>=WINSIZE){
+       
+        // compute filterbank energies	
+	    computeFilterEnergies(x->fb, in);
+	    // compute accumulation parameters - short term
+	    if (x->st_buffercnt< x->st_buffersize-1) x->st_buffercnt++;
+        float st_before_weight= (float) x->st_buffercnt / ((float) x->st_buffercnt +1.f);
+        float st_after_weight= 1.f / ((float) x->st_buffercnt +1.f);
+	    // compute accumulation parameters - long term
+	    if (x->lt_buffercnt< x->lt_buffersize-1) x->lt_buffercnt++;
+        float lt_before_weight= (float) x->lt_buffercnt / ((float) x->lt_buffercnt +1.f);
+        float lt_after_weight= 1.f / ((float) x->lt_buffercnt +1.f);
+	    // actualize average st and lt spectral distribution 
+	    for (ifilter=0; ifilter<x->fb->nFilters; ifilter++)
+	    {	          	       
+           x->st_spectrum[ifilter]=x->st_spectrum[ifilter]*st_before_weight + x->fb->bankEn[ifilter]*st_after_weight;
+           x->lt_spectrum[ifilter]=x->lt_spectrum[ifilter]*lt_before_weight + x->fb->bankEn[ifilter]*lt_after_weight;
+           st_sum+=x->st_spectrum[ifilter];
+           lt_sum+=x->lt_spectrum[ifilter];
+           
+           if(x->error_mode==0)
+	       {
+            tmp_err=x->st_spectrum[ifilter]-x->lt_spectrum[ifilter];
+            err+=tmp_err*tmp_err;
+	       }
+	    }
+	    
+	    if(x->error_mode==1)
+	    {
+      	    // getting normalized st and lt
+      	    for (ifilter=0; ifilter<x->fb->nFilters; ifilter++)
+      	    {
+      	       x->st_spectrum_norm[ifilter]=x->st_spectrum[ifilter];
+      	       x->lt_spectrum_norm[ifilter]=x->lt_spectrum[ifilter];
+      	    }
+      	    
+      	    //computing kl
+      	    for (ifilter=0; ifilter<x->fb->nFilters; ifilter++)
+      	    {
+      	       err+=x->st_spectrum_norm[ifilter]*log(x->st_spectrum_norm[ifilter]/x->lt_spectrum_norm[ifilter]);
+      	    }
+	    }
+
+	    outlet_float(x->rj_barkflux_accum, err);	    
+	}
+	
+	else post("rj_barkflux_accum: input buffer too small. expected spectrum size is %d, so block size should be",WINSIZE,(WINSIZE-1)*2);
+	
+	return (w+4);
+}
+
+    /* called to start DSP.  Here we call Pd back to add our perform
+    routine to a linear callback list which Pd in turn calls to grind
+    out the samples. */
+static void rj_barkflux_accum_dsp(t_rj_barkflux_accum *x, t_signal **sp)
+{
+    dsp_add(rj_barkflux_accum_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+}
+
+void accum_set_st(t_rj_barkflux_accum *x, t_floatarg g)
+{
+    post("short term duration fixed to %f", g);
+    x->st_duration=g;
+    // determining st buffer size
+    x->st_buffersize= (int) ((x->st_duration*x->samplerate)/x->blocksize); 
+    x->st_buffercnt=0;
+    post("short term number of frames %d", x->st_buffersize);
+}
+
+void accum_set_lt(t_rj_barkflux_accum *x, t_floatarg g)
+{
+    post("long term duration fixed to %f", g);
+    x->lt_duration=g;
+    // determining st buffer size
+    x->lt_buffersize= (int) ((x->lt_duration*x->samplerate)/x->blocksize);   
+    x->lt_buffercnt=0;
+    post("long term number of frames %d", x->lt_buffersize);
+
+}
+
+static void *rj_barkflux_accum_new(void)
+{
+    int ifilter;
+    
+    t_rj_barkflux_accum *x = (t_rj_barkflux_accum *)pd_new(rj_barkflux_accum_class);
+	x->rj_barkflux_accum=outlet_new(&x->x_obj, &s_float);
+	x->x_f = 0;
+	
+	inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("st"), gensym("float"));
+	inlet_new(&x->x_obj, &x->x_obj.ob_pd, gensym("lt"), gensym("float"));
+	
+	x->st_duration=5;
+    x->lt_duration=30;
+    x->blocksize=1024;  
+    x->samplerate=sys_getsr();
+    
+    // determining st buffer size
+    x->st_buffersize= (int) ((x->st_duration*x->samplerate)/x->blocksize);  
+    x->st_buffercnt=0;
+    
+    // determining lt buffer size
+    x->lt_buffersize= (int) ((x->lt_duration*x->samplerate)/x->blocksize);  
+	x->lt_buffercnt=0;
+    
+	// filterbank alloc and init
+	x->fb=allocFilterbank(NFILTERS);
+	initFilterbank(x->fb, NFILTERS, WINSIZE, sys_getsr(), LF, HF);
+	
+	// buffers for st and lt spectrum
+	x->st_spectrum=malloc(NFILTERS*sizeof(float));
+	x->lt_spectrum=malloc(NFILTERS*sizeof(float));
+	for (ifilter=0; ifilter<NFILTERS; ifilter++)
+	{
+	   x->st_spectrum[ifilter]=0; 
+	   x->lt_spectrum[ifilter]=0;   
+	}	
+	x->st_spectrum_norm=malloc(NFILTERS*sizeof(float));
+	x->lt_spectrum_norm=malloc(NFILTERS*sizeof(float));
+	
+	// error mode
+	// 0: rms
+	// 1: kl divergence
+	x->error_mode=0;
+	
+	post("rj_barkflux_accum: init ok");
+	
+	return (x);
+}
+
+
+static void rj_barkflux_accum_free(t_rj_barkflux_accum *x) {
+
+	deleteFilterbank(x->fb);
+	free(x->st_spectrum);
+	free(x->lt_spectrum);
+	free(x->st_spectrum_norm);
+	free(x->lt_spectrum_norm);
+}
+
+
+    /* this routine, which must have exactly this name (with the "~" replaced
+    by "_tilde) is called when the code is first loaded, and tells Pd how
+    to build the "class". */
+void rj_barkflux_accum_tilde_setup(void)
+{
+    rj_barkflux_accum_class = class_new(gensym("rj_barkflux_accum~"), (t_newmethod)rj_barkflux_accum_new, (t_method)rj_barkflux_accum_free,
+    	sizeof(t_rj_barkflux_accum), 0, A_DEFFLOAT, 0);
+    
+    // gimme init format ... for later
+    //rj_barkflux_accum_class = class_new(gensym("rj_barkflux_accum~"), (t_newmethod)rj_barkflux_accum_new, (t_method)rj_barkflux_accum_free,
+    //	sizeof(t_rj_barkflux_accum), 0, A_GIMME, 0);
+
+	/* this is magic to declare that the leftmost, "main" inlet
+	takes signals; other signal inlets are done differently... */
+
+    CLASS_MAINSIGNALIN(rj_barkflux_accum_class, t_rj_barkflux_accum, x_f);
+    	/* here we tell Pd about the "dsp" method, which is called back
+	when DSP is turned on. */
+    
+	class_addmethod(rj_barkflux_accum_class, (t_method)rj_barkflux_accum_dsp, gensym("dsp"), 0);
+	
+	class_addmethod(rj_barkflux_accum_class, (t_method)accum_set_st, gensym("st"), A_FLOAT, 0);
+	class_addmethod(rj_barkflux_accum_class, (t_method)accum_set_lt, gensym("lt"), A_FLOAT, 0);
+	
+	
+	post("rj_barkflux_accum version 0.1");
+}
+
diff --git a/l2ork_addons/rjlib/src/rj_centroid~-help.pd b/l2ork_addons/rjlib/src/rj_centroid~-help.pd
new file mode 100644
index 000000000..a7b93e62f
--- /dev/null
+++ b/l2ork_addons/rjlib/src/rj_centroid~-help.pd
@@ -0,0 +1,207 @@
+#N canvas 354 121 450 300 10;
+#X obj 184 52 adc~;
+#N canvas 90 124 1350 776 myFFTanalysis 1;
+#X obj 51 58 block~ 1024 2;
+#N canvas 0 22 450 300 (subpatch) 0;
+#X array \$0-hann 1024 float 1;
+#A 0 0 1.88351e-05 3.76403e-05 9.41157e-05 0.000150591 0.000244677
+0.000338793 0.000470519 0.000602275 0.000771582 0.000940919 0.00114784
+0.00135475 0.00159922 0.00184369 0.00212565 0.00240761 0.00272706 0.00304651
+0.00340337 0.00376022 0.00415444 0.00454867 0.00498021 0.00541171 0.00588048
+0.00634927 0.00685519 0.00736114 0.00790417 0.00844723 0.0090273 0.00960734
+0.0102243 0.0108413 0.0114951 0.0121489 0.0128394 0.01353 0.0142572
+0.0149843 0.015748 0.0165117 0.0173118 0.0181119 0.0189483 0.0197847
+0.0206572 0.0215298 0.0224383 0.0233469 0.0242914 0.0252359 0.0262161
+0.0271963 0.0282121 0.0292279 0.0302792 0.0313304 0.032417 0.0335035
+0.0346252 0.0357469 0.0369035 0.0380602 0.0392516 0.040443 0.041669
+0.042895 0.0441555 0.0454159 0.0467106 0.0480052 0.0493339 0.0506626
+0.0520252 0.0533877 0.0547839 0.05618 0.0576096 0.0590392 0.060502
+0.0619648 0.0634606 0.0649563 0.0664849 0.0680134 0.0695744 0.0711355
+0.0727288 0.0743222 0.0759476 0.077573 0.0792302 0.0808874 0.0825762
+0.084265 0.085985 0.0877051 0.0894562 0.0912073 0.0929892 0.0947711
+0.0965835 0.0983959 0.100239 0.102081 0.103954 0.105826 0.107729 0.109631
+0.111563 0.113494 0.115455 0.117416 0.119406 0.121395 0.123413 0.125431
+0.127478 0.129524 0.131598 0.133672 0.135774 0.137876 0.140005 0.142134
+0.14429 0.146446 0.148629 0.150811 0.15302 0.155229 0.157464 0.159699
+0.161959 0.16422 0.166506 0.168792 0.171102 0.173413 0.175748 0.178084
+0.180443 0.182803 0.185186 0.18757 0.189977 0.192384 0.194814 0.197244
+0.199697 0.20215 0.204625 0.2071 0.209598 0.212095 0.214614 0.217133
+0.219674 0.222214 0.224775 0.227337 0.229919 0.2325 0.235102 0.237704
+0.240326 0.242948 0.245589 0.24823 0.25089 0.25355 0.256229 0.258907
+0.261604 0.264301 0.267015 0.26973 0.272462 0.275194 0.277942 0.280691
+0.283457 0.286222 0.289003 0.291785 0.294582 0.297379 0.300191 0.303003
+0.305831 0.308658 0.311499 0.314341 0.317196 0.320052 0.322921 0.32579
+0.328672 0.331555 0.334449 0.337344 0.340252 0.343159 0.346078 0.348997
+0.351927 0.354857 0.357798 0.36074 0.363691 0.366643 0.369605 0.372567
+0.375538 0.37851 0.38149 0.384471 0.38746 0.390449 0.393447 0.396444
+0.399449 0.402455 0.405467 0.40848 0.411499 0.414519 0.417545 0.420571
+0.423603 0.426635 0.429672 0.432709 0.435752 0.438794 0.441842 0.444889
+0.44794 0.450991 0.454046 0.457101 0.460159 0.463218 0.466279 0.46934
+0.472403 0.475466 0.478531 0.481596 0.484663 0.487729 0.490797 0.493864
+0.496932 0.5 0.503068 0.506136 0.509203 0.512271 0.515337 0.518404
+0.521469 0.524534 0.527597 0.53066 0.533721 0.536782 0.539841 0.542899
+0.545954 0.549009 0.55206 0.555111 0.558158 0.561205 0.564248 0.56729
+0.570328 0.573365 0.576397 0.579429 0.582455 0.585481 0.588501 0.59152
+0.594533 0.597545 0.600551 0.603556 0.606553 0.609551 0.61254 0.615529
+0.61851 0.62149 0.624462 0.627433 0.630395 0.633357 0.636308 0.63926
+0.642201 0.645143 0.648073 0.651003 0.653922 0.656841 0.659748 0.662656
+0.66555 0.668445 0.671328 0.67421 0.677079 0.679948 0.682804 0.685659
+0.688501 0.691342 0.694169 0.696997 0.699809 0.702621 0.705418 0.708215
+0.710997 0.713778 0.716543 0.719309 0.722057 0.724806 0.727538 0.73027
+0.732984 0.735699 0.738396 0.741093 0.743771 0.74645 0.74911 0.75177
+0.754411 0.757052 0.759674 0.762295 0.764897 0.767499 0.770081 0.772663
+0.775224 0.777786 0.780326 0.782867 0.785386 0.787905 0.790402 0.7929
+0.795375 0.79785 0.800303 0.802756 0.805186 0.807616 0.810023 0.812431
+0.814814 0.817197 0.819557 0.821916 0.824252 0.826587 0.828898 0.831209
+0.833494 0.83578 0.838041 0.840301 0.842536 0.844771 0.84698 0.849189
+0.851372 0.853554 0.85571 0.857866 0.859995 0.862124 0.864226 0.866328
+0.868402 0.870476 0.872523 0.874569 0.876587 0.878605 0.880595 0.882584
+0.884545 0.886506 0.888438 0.890369 0.892272 0.894174 0.896047 0.897919
+0.899762 0.901605 0.903417 0.905229 0.907011 0.908793 0.910544 0.912295
+0.914015 0.915736 0.917424 0.919113 0.92077 0.922428 0.924053 0.925678
+0.927272 0.928865 0.930426 0.931987 0.933516 0.935044 0.93654 0.938036
+0.939499 0.940961 0.942391 0.94382 0.945217 0.946613 0.947975 0.949338
+0.950667 0.951995 0.95329 0.954585 0.955845 0.957106 0.958332 0.959558
+0.960749 0.96194 0.963097 0.964254 0.965375 0.966497 0.967584 0.96867
+0.969721 0.970773 0.971788 0.972804 0.973784 0.974765 0.975709 0.976654
+0.977562 0.978471 0.979343 0.980216 0.981052 0.981889 0.982689 0.983489
+0.984252 0.985016 0.985743 0.98647 0.987161 0.987852 0.988505 0.989159
+0.989776 0.990393 0.990973 0.991553 0.992096 0.992639 0.993145 0.993651
+0.99412 0.994589 0.99502 0.995452 0.995846 0.99624 0.996597 0.996954
+0.997273 0.997593 0.997874 0.998156 0.998401 0.998645 0.998852 0.999059
+0.999229 0.999398 0.99953 0.999661 0.999755 0.999849 0.999906 0.999962
+0.999981 1 0.999981 0.999962 0.999906 0.999849 0.999755 0.999661 0.999529
+0.999398 0.999228 0.999059 0.998852 0.998645 0.998401 0.998156 0.997874
+0.997592 0.997273 0.996953 0.996596 0.996239 0.995845 0.995451 0.995019
+0.994588 0.994119 0.99365 0.993144 0.992638 0.992095 0.991552 0.990972
+0.990392 0.989775 0.989158 0.988504 0.987851 0.98716 0.986469 0.985742
+0.985015 0.984251 0.983488 0.982687 0.981887 0.981051 0.980215 0.979342
+0.978469 0.977561 0.976652 0.975708 0.974763 0.973783 0.972803 0.971787
+0.970771 0.96972 0.968669 0.967582 0.966495 0.965374 0.964252 0.963095
+0.961939 0.960747 0.959556 0.95833 0.957104 0.955843 0.954583 0.953288
+0.951993 0.950665 0.949336 0.947973 0.946611 0.945215 0.943818 0.942389
+0.940959 0.939496 0.938034 0.936538 0.935042 0.933514 0.931985 0.930424
+0.928863 0.927269 0.925676 0.924051 0.922425 0.920768 0.919111 0.917422
+0.915733 0.914013 0.912293 0.910542 0.908791 0.907009 0.905227 0.903414
+0.901602 0.899759 0.897917 0.896044 0.894171 0.892269 0.890367 0.888435
+0.886503 0.884542 0.882582 0.880592 0.878602 0.876584 0.874566 0.87252
+0.870473 0.868399 0.866325 0.864223 0.862121 0.859992 0.857863 0.855707
+0.853551 0.851368 0.849186 0.846977 0.844768 0.842533 0.840298 0.838037
+0.835777 0.833491 0.831205 0.828895 0.826584 0.824249 0.821913 0.819554
+0.817194 0.814811 0.812427 0.81002 0.807613 0.805183 0.802753 0.8003
+0.797847 0.795372 0.792896 0.790399 0.787901 0.785382 0.782863 0.780323
+0.777782 0.775221 0.77266 0.770078 0.767496 0.764894 0.762292 0.75967
+0.757048 0.754407 0.751766 0.749106 0.746446 0.743767 0.741089 0.738392
+0.735695 0.732981 0.730266 0.727534 0.724802 0.722054 0.719305 0.71654
+0.713774 0.710993 0.708211 0.705414 0.702617 0.699805 0.696993 0.694165
+0.691338 0.688497 0.685655 0.6828 0.679944 0.677075 0.674206 0.671324
+0.668441 0.665546 0.662652 0.659744 0.656837 0.653918 0.650999 0.648069
+0.645139 0.642197 0.639256 0.636304 0.633353 0.630391 0.627429 0.624458
+0.621486 0.618506 0.615525 0.612536 0.609547 0.606549 0.603552 0.600546
+0.597541 0.594529 0.591516 0.588496 0.585477 0.582451 0.579425 0.576393
+0.573361 0.570324 0.567286 0.564244 0.561201 0.558154 0.555107 0.552056
+0.549004 0.545949 0.542894 0.539836 0.536778 0.533717 0.530656 0.527593
+0.52453 0.521464 0.518399 0.515333 0.512266 0.509199 0.506131 0.503064
+0.499996 0.496928 0.49386 0.490792 0.487725 0.484659 0.481592 0.478527
+0.475462 0.472399 0.469335 0.466274 0.463213 0.460155 0.457097 0.454042
+0.450987 0.447936 0.444884 0.441837 0.43879 0.435748 0.432705 0.429668
+0.42663 0.423598 0.420566 0.417541 0.414515 0.411495 0.408476 0.405463
+0.40245 0.399445 0.39644 0.393442 0.390445 0.387456 0.384466 0.381486
+0.378505 0.375534 0.372563 0.369601 0.366639 0.363687 0.360736 0.357794
+0.354853 0.351923 0.348993 0.346074 0.343155 0.340247 0.33734 0.334445
+0.331551 0.328668 0.325786 0.322917 0.320048 0.317192 0.314337 0.311495
+0.308654 0.305827 0.302999 0.300187 0.297375 0.294578 0.291781 0.288999
+0.286218 0.283453 0.280687 0.277939 0.27519 0.272458 0.269726 0.267012
+0.264297 0.2616 0.258904 0.256225 0.253547 0.250886 0.248226 0.245585
+0.242944 0.240323 0.237701 0.235099 0.232497 0.229915 0.227333 0.224772
+0.222211 0.21967 0.21713 0.214611 0.212092 0.209594 0.207097 0.204622
+0.202146 0.199693 0.19724 0.19481 0.19238 0.189973 0.187566 0.185183
+0.182799 0.18044 0.17808 0.175745 0.17341 0.171099 0.168788 0.166502
+0.164217 0.161956 0.159696 0.157461 0.155226 0.153017 0.150808 0.148625
+0.146443 0.144287 0.142131 0.140002 0.137873 0.135771 0.133669 0.131595
+0.129521 0.127474 0.125428 0.12341 0.121392 0.119402 0.117413 0.115452
+0.113491 0.11156 0.109628 0.107726 0.105823 0.103951 0.102078 0.100236
+0.0983929 0.0965805 0.0947681 0.0929862 0.0912043 0.0894533 0.0877022
+0.0859821 0.084262 0.0825733 0.0808845 0.0792274 0.0775702 0.0759448
+0.0743194 0.0727261 0.0711327 0.0695717 0.0680107 0.0664822 0.0649537
+0.0634579 0.0619622 0.0604994 0.0590366 0.0576071 0.0561775 0.0547814
+0.0533852 0.0520227 0.0506602 0.0493315 0.0480028 0.0467082 0.0454136
+0.0441532 0.0428927 0.0416667 0.0404407 0.0392494 0.038058 0.0369014
+0.0357448 0.0346231 0.0335014 0.0324149 0.0313284 0.0302772 0.0292259
+0.0282102 0.0271944 0.0262142 0.025234 0.0242896 0.0233451 0.0224366
+0.0215281 0.0206555 0.019783 0.0189467 0.0181103 0.0173103 0.0165102
+0.0157465 0.0149829 0.0142557 0.0135286 0.0128381 0.0121476 0.0114938
+0.01084 0.0102231 0.00960612 0.00902611 0.0084461 0.0079031 0.0073601
+0.00685418 0.00634828 0.00587955;
+#A 1000 0.00541082 0.00497931 0.00454783 0.00415364 0.00375944 0.00340262
+0.0030458 0.00272641 0.00240701 0.00212508 0.00184312 0.00159872 0.00135428
+0.00114739 0.000940531 0.000771224 0.000601947 0.000470251 0.000338554
+0.000244498 0.000150412 9.39965e-05 3.75509e-05 1.87755e-05;
+#X coords 0 1 1023 0 200 120 1;
+#X restore 257 137 graph;
+#X msg 174 141 0;
+#X obj 59 195 osc~;
+#X obj 59 147 samplerate~;
+#X obj 59 218 *~ -0.5;
+#X obj 59 241 +~ 0.5;
+#X obj 51 266 tabwrite~ \$0-hann;
+#X obj 51 124 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 330 104 Hann window;
+#X text 49 99 recalculate Hann;
+#X text 84 114 window table;
+#X text 107 193 comment;
+#X obj 59 171 / 512;
+#X obj 558 145 *~;
+#X obj 557 80 inlet~;
+#X obj 558 199 rfft~;
+#X obj 579 121 tabreceive~ \$0-hann;
+#X obj 557 287 *~;
+#X obj 599 287 *~;
+#X obj 558 337 sqrt~;
+#X text 768 112 tabreceive~ outputs array contents \,;
+#X text 768 130 constantly \, every block. Here it's;
+#X text 766 150 used to get the Hann window to;
+#X text 768 168 multiply by the input.;
+#X text 619 80 The inlet~ automatically re-blocks to the new block
+size.;
+#X obj 558 313 +~;
+#X text 637 289 Take the magnitude by squaring real and imaginary part
+\, adding and taking square root.;
+#X text 625 196 forward real FFT. Like "fft~" \, but only one inlet
+(for the real part) and only the first half of the output signals are
+used. (The others are determined by symmetry: they're complex conjugates
+of the first half \, in reverse order.) This takes 1/2 the CPU time
+of "fft".;
+#X obj 55 382 table phase 513;
+#X obj 54 409 table magnitude 513;
+#X obj 575 465 vsl 15 128 0 20000 0 0 empty empty empty 0 -9 0 10 -262144
+-1 -1 0 1;
+#X text 603 459 20Khz;
+#X text 601 584 0Hz;
+#X text 646 500 compute the center of gravity of the magnitude spectrum
+;
+#X obj 559 396 rj_centroid~;
+#X connect 2 0 3 1;
+#X connect 3 0 5 0;
+#X connect 4 0 13 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 8 0 4 0;
+#X connect 8 0 2 0;
+#X connect 8 0 7 0;
+#X connect 13 0 3 0;
+#X connect 14 0 16 0;
+#X connect 15 0 14 0;
+#X connect 16 0 18 0;
+#X connect 16 0 18 1;
+#X connect 16 1 19 0;
+#X connect 16 1 19 1;
+#X connect 17 0 14 1;
+#X connect 18 0 26 0;
+#X connect 19 0 26 1;
+#X connect 20 0 35 0;
+#X connect 26 0 20 0;
+#X connect 35 0 31 0;
+#X restore 190 114 pd myFFTanalysis;
+#X connect 0 0 1 0;
diff --git a/l2ork_addons/rjlib/src/rj_centroid~.c b/l2ork_addons/rjlib/src/rj_centroid~.c
new file mode 100644
index 000000000..893a6aee5
--- /dev/null
+++ b/l2ork_addons/rjlib/src/rj_centroid~.c
@@ -0,0 +1,98 @@
+#include "m_pd.h"
+#ifdef NT
+#pragma warning( disable : 4244 )
+#pragma warning( disable : 4305 )
+#endif
+
+// size of the magnitude spectrum to analyze
+#define WINSIZE 513
+
+/* ------------------------ rj_centroid~ for pd----------------------------- */
+
+/* tilde object to take absolute value. */
+
+static t_class *rj_centroid_class;
+
+typedef struct _rj_centroid
+{
+    t_object x_obj; 	   /* obligatory header */    
+	t_float x_f;	
+	t_outlet* rj_centroid;		   /* m: place for outlet */
+	
+} t_rj_centroid;
+
+    /* this is the actual performance routine which acts on the samples.
+    It's called with a single pointer "w" which is our location in the
+    DSP call list.  We return a new "w" which will point to the next item
+    after us.  Meanwhile, w[0] is just a pointer to dsp-perform itself
+    (no use to us), w[1] and w[2] are the input and output vector locations,
+    and w[3] is the number of points to calculate. */
+
+static t_int *rj_centroid_perform(t_int *w)
+{
+	
+	t_rj_centroid *x = (t_rj_centroid *)(w[1]);
+    t_float *in = (t_float *)(w[2]);
+	
+	//int size=(int)(w[3]); 
+	int size=WINSIZE;
+	
+    int j;
+    float sum = 0., sc = 0.;
+    for ( j = 0; j < size; j++ ) {
+        sum += in[j];
+    }
+    if (sum == 0.) {
+        outlet_float(x->rj_centroid,0.f);
+    }
+    else {
+        for ( j = 0; j < size; j++ ) {
+            sc += (float)j * in[j];
+        }
+         
+	outlet_float(x->rj_centroid, sc / sum * sys_getsr() / (float)(size));
+    }
+	
+	return (w+4);
+}
+
+    /* called to start DSP.  Here we call Pd back to add our perform
+    routine to a linear callback list which Pd in turn calls to grind
+    out the samples. */
+static void rj_centroid_dsp(t_rj_centroid *x, t_signal **sp)
+{
+    dsp_add(rj_centroid_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+}
+
+static void *rj_centroid_new(void)
+{
+    t_rj_centroid *x = (t_rj_centroid *)pd_new(rj_centroid_class);
+	x->rj_centroid=outlet_new(&x->x_obj, &s_float);
+	x->x_f = 0;
+	
+	return (x);
+}
+
+static void rj_centroid_free(t_rj_centroid *x) {
+	
+}
+
+
+    /* this routine, which must have exactly this name (with the "~" replaced
+    by "_tilde) is called when the code is first loaded, and tells Pd how
+    to build the "class". */
+void rj_centroid_tilde_setup(void)
+{
+    rj_centroid_class = class_new(gensym("rj_centroid~"), (t_newmethod)rj_centroid_new, (t_method)rj_centroid_free,
+    	sizeof(t_rj_centroid), 0, A_DEFFLOAT, 0);
+
+	    /* this is magic to declare that the leftmost, "main" inlet
+	    takes signals; other signal inlets are done differently... */
+
+    CLASS_MAINSIGNALIN(rj_centroid_class, t_rj_centroid, x_f);
+    	/* here we tell Pd about the "dsp" method, which is called back
+	when DSP is turned on. */
+    
+	class_addmethod(rj_centroid_class, (t_method)rj_centroid_dsp, gensym("dsp"), 0);
+	post("rj_centroid version 0.1");
+}
diff --git a/l2ork_addons/rjlib/src/rj_senergy~-help.pd b/l2ork_addons/rjlib/src/rj_senergy~-help.pd
new file mode 100644
index 000000000..b9a330d73
--- /dev/null
+++ b/l2ork_addons/rjlib/src/rj_senergy~-help.pd
@@ -0,0 +1,207 @@
+#N canvas 354 121 450 300 10;
+#X obj 184 52 adc~;
+#N canvas 90 124 1350 776 myFFTanalysis 1;
+#X obj 51 58 block~ 1024 2;
+#N canvas 0 22 450 300 (subpatch) 0;
+#X array \$0-hann 1024 float 1;
+#A 0 0 1.88351e-05 3.76403e-05 9.41157e-05 0.000150591 0.000244677
+0.000338793 0.000470519 0.000602275 0.000771582 0.000940919 0.00114784
+0.00135475 0.00159922 0.00184369 0.00212565 0.00240761 0.00272706 0.00304651
+0.00340337 0.00376022 0.00415444 0.00454867 0.00498021 0.00541171 0.00588048
+0.00634927 0.00685519 0.00736114 0.00790417 0.00844723 0.0090273 0.00960734
+0.0102243 0.0108413 0.0114951 0.0121489 0.0128394 0.01353 0.0142572
+0.0149843 0.015748 0.0165117 0.0173118 0.0181119 0.0189483 0.0197847
+0.0206572 0.0215298 0.0224383 0.0233469 0.0242914 0.0252359 0.0262161
+0.0271963 0.0282121 0.0292279 0.0302792 0.0313304 0.032417 0.0335035
+0.0346252 0.0357469 0.0369035 0.0380602 0.0392516 0.040443 0.041669
+0.042895 0.0441555 0.0454159 0.0467106 0.0480052 0.0493339 0.0506626
+0.0520252 0.0533877 0.0547839 0.05618 0.0576096 0.0590392 0.060502
+0.0619648 0.0634606 0.0649563 0.0664849 0.0680134 0.0695744 0.0711355
+0.0727288 0.0743222 0.0759476 0.077573 0.0792302 0.0808874 0.0825762
+0.084265 0.085985 0.0877051 0.0894562 0.0912073 0.0929892 0.0947711
+0.0965835 0.0983959 0.100239 0.102081 0.103954 0.105826 0.107729 0.109631
+0.111563 0.113494 0.115455 0.117416 0.119406 0.121395 0.123413 0.125431
+0.127478 0.129524 0.131598 0.133672 0.135774 0.137876 0.140005 0.142134
+0.14429 0.146446 0.148629 0.150811 0.15302 0.155229 0.157464 0.159699
+0.161959 0.16422 0.166506 0.168792 0.171102 0.173413 0.175748 0.178084
+0.180443 0.182803 0.185186 0.18757 0.189977 0.192384 0.194814 0.197244
+0.199697 0.20215 0.204625 0.2071 0.209598 0.212095 0.214614 0.217133
+0.219674 0.222214 0.224775 0.227337 0.229919 0.2325 0.235102 0.237704
+0.240326 0.242948 0.245589 0.24823 0.25089 0.25355 0.256229 0.258907
+0.261604 0.264301 0.267015 0.26973 0.272462 0.275194 0.277942 0.280691
+0.283457 0.286222 0.289003 0.291785 0.294582 0.297379 0.300191 0.303003
+0.305831 0.308658 0.311499 0.314341 0.317196 0.320052 0.322921 0.32579
+0.328672 0.331555 0.334449 0.337344 0.340252 0.343159 0.346078 0.348997
+0.351927 0.354857 0.357798 0.36074 0.363691 0.366643 0.369605 0.372567
+0.375538 0.37851 0.38149 0.384471 0.38746 0.390449 0.393447 0.396444
+0.399449 0.402455 0.405467 0.40848 0.411499 0.414519 0.417545 0.420571
+0.423603 0.426635 0.429672 0.432709 0.435752 0.438794 0.441842 0.444889
+0.44794 0.450991 0.454046 0.457101 0.460159 0.463218 0.466279 0.46934
+0.472403 0.475466 0.478531 0.481596 0.484663 0.487729 0.490797 0.493864
+0.496932 0.5 0.503068 0.506136 0.509203 0.512271 0.515337 0.518404
+0.521469 0.524534 0.527597 0.53066 0.533721 0.536782 0.539841 0.542899
+0.545954 0.549009 0.55206 0.555111 0.558158 0.561205 0.564248 0.56729
+0.570328 0.573365 0.576397 0.579429 0.582455 0.585481 0.588501 0.59152
+0.594533 0.597545 0.600551 0.603556 0.606553 0.609551 0.61254 0.615529
+0.61851 0.62149 0.624462 0.627433 0.630395 0.633357 0.636308 0.63926
+0.642201 0.645143 0.648073 0.651003 0.653922 0.656841 0.659748 0.662656
+0.66555 0.668445 0.671328 0.67421 0.677079 0.679948 0.682804 0.685659
+0.688501 0.691342 0.694169 0.696997 0.699809 0.702621 0.705418 0.708215
+0.710997 0.713778 0.716543 0.719309 0.722057 0.724806 0.727538 0.73027
+0.732984 0.735699 0.738396 0.741093 0.743771 0.74645 0.74911 0.75177
+0.754411 0.757052 0.759674 0.762295 0.764897 0.767499 0.770081 0.772663
+0.775224 0.777786 0.780326 0.782867 0.785386 0.787905 0.790402 0.7929
+0.795375 0.79785 0.800303 0.802756 0.805186 0.807616 0.810023 0.812431
+0.814814 0.817197 0.819557 0.821916 0.824252 0.826587 0.828898 0.831209
+0.833494 0.83578 0.838041 0.840301 0.842536 0.844771 0.84698 0.849189
+0.851372 0.853554 0.85571 0.857866 0.859995 0.862124 0.864226 0.866328
+0.868402 0.870476 0.872523 0.874569 0.876587 0.878605 0.880595 0.882584
+0.884545 0.886506 0.888438 0.890369 0.892272 0.894174 0.896047 0.897919
+0.899762 0.901605 0.903417 0.905229 0.907011 0.908793 0.910544 0.912295
+0.914015 0.915736 0.917424 0.919113 0.92077 0.922428 0.924053 0.925678
+0.927272 0.928865 0.930426 0.931987 0.933516 0.935044 0.93654 0.938036
+0.939499 0.940961 0.942391 0.94382 0.945217 0.946613 0.947975 0.949338
+0.950667 0.951995 0.95329 0.954585 0.955845 0.957106 0.958332 0.959558
+0.960749 0.96194 0.963097 0.964254 0.965375 0.966497 0.967584 0.96867
+0.969721 0.970773 0.971788 0.972804 0.973784 0.974765 0.975709 0.976654
+0.977562 0.978471 0.979343 0.980216 0.981052 0.981889 0.982689 0.983489
+0.984252 0.985016 0.985743 0.98647 0.987161 0.987852 0.988505 0.989159
+0.989776 0.990393 0.990973 0.991553 0.992096 0.992639 0.993145 0.993651
+0.99412 0.994589 0.99502 0.995452 0.995846 0.99624 0.996597 0.996954
+0.997273 0.997593 0.997874 0.998156 0.998401 0.998645 0.998852 0.999059
+0.999229 0.999398 0.99953 0.999661 0.999755 0.999849 0.999906 0.999962
+0.999981 1 0.999981 0.999962 0.999906 0.999849 0.999755 0.999661 0.999529
+0.999398 0.999228 0.999059 0.998852 0.998645 0.998401 0.998156 0.997874
+0.997592 0.997273 0.996953 0.996596 0.996239 0.995845 0.995451 0.995019
+0.994588 0.994119 0.99365 0.993144 0.992638 0.992095 0.991552 0.990972
+0.990392 0.989775 0.989158 0.988504 0.987851 0.98716 0.986469 0.985742
+0.985015 0.984251 0.983488 0.982687 0.981887 0.981051 0.980215 0.979342
+0.978469 0.977561 0.976652 0.975708 0.974763 0.973783 0.972803 0.971787
+0.970771 0.96972 0.968669 0.967582 0.966495 0.965374 0.964252 0.963095
+0.961939 0.960747 0.959556 0.95833 0.957104 0.955843 0.954583 0.953288
+0.951993 0.950665 0.949336 0.947973 0.946611 0.945215 0.943818 0.942389
+0.940959 0.939496 0.938034 0.936538 0.935042 0.933514 0.931985 0.930424
+0.928863 0.927269 0.925676 0.924051 0.922425 0.920768 0.919111 0.917422
+0.915733 0.914013 0.912293 0.910542 0.908791 0.907009 0.905227 0.903414
+0.901602 0.899759 0.897917 0.896044 0.894171 0.892269 0.890367 0.888435
+0.886503 0.884542 0.882582 0.880592 0.878602 0.876584 0.874566 0.87252
+0.870473 0.868399 0.866325 0.864223 0.862121 0.859992 0.857863 0.855707
+0.853551 0.851368 0.849186 0.846977 0.844768 0.842533 0.840298 0.838037
+0.835777 0.833491 0.831205 0.828895 0.826584 0.824249 0.821913 0.819554
+0.817194 0.814811 0.812427 0.81002 0.807613 0.805183 0.802753 0.8003
+0.797847 0.795372 0.792896 0.790399 0.787901 0.785382 0.782863 0.780323
+0.777782 0.775221 0.77266 0.770078 0.767496 0.764894 0.762292 0.75967
+0.757048 0.754407 0.751766 0.749106 0.746446 0.743767 0.741089 0.738392
+0.735695 0.732981 0.730266 0.727534 0.724802 0.722054 0.719305 0.71654
+0.713774 0.710993 0.708211 0.705414 0.702617 0.699805 0.696993 0.694165
+0.691338 0.688497 0.685655 0.6828 0.679944 0.677075 0.674206 0.671324
+0.668441 0.665546 0.662652 0.659744 0.656837 0.653918 0.650999 0.648069
+0.645139 0.642197 0.639256 0.636304 0.633353 0.630391 0.627429 0.624458
+0.621486 0.618506 0.615525 0.612536 0.609547 0.606549 0.603552 0.600546
+0.597541 0.594529 0.591516 0.588496 0.585477 0.582451 0.579425 0.576393
+0.573361 0.570324 0.567286 0.564244 0.561201 0.558154 0.555107 0.552056
+0.549004 0.545949 0.542894 0.539836 0.536778 0.533717 0.530656 0.527593
+0.52453 0.521464 0.518399 0.515333 0.512266 0.509199 0.506131 0.503064
+0.499996 0.496928 0.49386 0.490792 0.487725 0.484659 0.481592 0.478527
+0.475462 0.472399 0.469335 0.466274 0.463213 0.460155 0.457097 0.454042
+0.450987 0.447936 0.444884 0.441837 0.43879 0.435748 0.432705 0.429668
+0.42663 0.423598 0.420566 0.417541 0.414515 0.411495 0.408476 0.405463
+0.40245 0.399445 0.39644 0.393442 0.390445 0.387456 0.384466 0.381486
+0.378505 0.375534 0.372563 0.369601 0.366639 0.363687 0.360736 0.357794
+0.354853 0.351923 0.348993 0.346074 0.343155 0.340247 0.33734 0.334445
+0.331551 0.328668 0.325786 0.322917 0.320048 0.317192 0.314337 0.311495
+0.308654 0.305827 0.302999 0.300187 0.297375 0.294578 0.291781 0.288999
+0.286218 0.283453 0.280687 0.277939 0.27519 0.272458 0.269726 0.267012
+0.264297 0.2616 0.258904 0.256225 0.253547 0.250886 0.248226 0.245585
+0.242944 0.240323 0.237701 0.235099 0.232497 0.229915 0.227333 0.224772
+0.222211 0.21967 0.21713 0.214611 0.212092 0.209594 0.207097 0.204622
+0.202146 0.199693 0.19724 0.19481 0.19238 0.189973 0.187566 0.185183
+0.182799 0.18044 0.17808 0.175745 0.17341 0.171099 0.168788 0.166502
+0.164217 0.161956 0.159696 0.157461 0.155226 0.153017 0.150808 0.148625
+0.146443 0.144287 0.142131 0.140002 0.137873 0.135771 0.133669 0.131595
+0.129521 0.127474 0.125428 0.12341 0.121392 0.119402 0.117413 0.115452
+0.113491 0.11156 0.109628 0.107726 0.105823 0.103951 0.102078 0.100236
+0.0983929 0.0965805 0.0947681 0.0929862 0.0912043 0.0894533 0.0877022
+0.0859821 0.084262 0.0825733 0.0808845 0.0792274 0.0775702 0.0759448
+0.0743194 0.0727261 0.0711327 0.0695717 0.0680107 0.0664822 0.0649537
+0.0634579 0.0619622 0.0604994 0.0590366 0.0576071 0.0561775 0.0547814
+0.0533852 0.0520227 0.0506602 0.0493315 0.0480028 0.0467082 0.0454136
+0.0441532 0.0428927 0.0416667 0.0404407 0.0392494 0.038058 0.0369014
+0.0357448 0.0346231 0.0335014 0.0324149 0.0313284 0.0302772 0.0292259
+0.0282102 0.0271944 0.0262142 0.025234 0.0242896 0.0233451 0.0224366
+0.0215281 0.0206555 0.019783 0.0189467 0.0181103 0.0173103 0.0165102
+0.0157465 0.0149829 0.0142557 0.0135286 0.0128381 0.0121476 0.0114938
+0.01084 0.0102231 0.00960612 0.00902611 0.0084461 0.0079031 0.0073601
+0.00685418 0.00634828 0.00587955;
+#A 1000 0.00541082 0.00497931 0.00454783 0.00415364 0.00375944 0.00340262
+0.0030458 0.00272641 0.00240701 0.00212508 0.00184312 0.00159872 0.00135428
+0.00114739 0.000940531 0.000771224 0.000601947 0.000470251 0.000338554
+0.000244498 0.000150412 9.39965e-05 3.75509e-05 1.87755e-05;
+#X coords 0 1 1023 0 200 120 1;
+#X restore 257 137 graph;
+#X msg 174 141 0;
+#X obj 59 195 osc~;
+#X obj 59 147 samplerate~;
+#X obj 59 218 *~ -0.5;
+#X obj 59 241 +~ 0.5;
+#X obj 51 266 tabwrite~ \$0-hann;
+#X obj 51 124 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 330 104 Hann window;
+#X text 49 99 recalculate Hann;
+#X text 84 114 window table;
+#X text 107 193 comment;
+#X obj 59 171 / 512;
+#X obj 558 145 *~;
+#X obj 557 80 inlet~;
+#X obj 558 199 rfft~;
+#X obj 579 121 tabreceive~ \$0-hann;
+#X obj 557 287 *~;
+#X obj 599 287 *~;
+#X obj 558 337 sqrt~;
+#X text 768 112 tabreceive~ outputs array contents \,;
+#X text 768 130 constantly \, every block. Here it's;
+#X text 766 150 used to get the Hann window to;
+#X text 768 168 multiply by the input.;
+#X text 619 80 The inlet~ automatically re-blocks to the new block
+size.;
+#X obj 558 313 +~;
+#X text 637 289 Take the magnitude by squaring real and imaginary part
+\, adding and taking square root.;
+#X text 625 196 forward real FFT. Like "fft~" \, but only one inlet
+(for the real part) and only the first half of the output signals are
+used. (The others are determined by symmetry: they're complex conjugates
+of the first half \, in reverse order.) This takes 1/2 the CPU time
+of "fft".;
+#X obj 55 382 table phase 513;
+#X obj 54 409 table magnitude 513;
+#X obj 575 465 vsl 15 128 0 0.1 0 0 empty empty empty 0 -9 0 10 -262144
+-1 -1 1604 1;
+#X text 601 584 0;
+#X text 602 459 0.1;
+#X obj 559 396 rj_senergy~;
+#X text 646 500 compute the overall energy of the magnitude spectrum
+;
+#X connect 2 0 3 1;
+#X connect 3 0 5 0;
+#X connect 4 0 13 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 8 0 4 0;
+#X connect 8 0 2 0;
+#X connect 8 0 7 0;
+#X connect 13 0 3 0;
+#X connect 14 0 16 0;
+#X connect 15 0 14 0;
+#X connect 16 0 18 0;
+#X connect 16 0 18 1;
+#X connect 16 1 19 0;
+#X connect 16 1 19 1;
+#X connect 17 0 14 1;
+#X connect 18 0 26 0;
+#X connect 19 0 26 1;
+#X connect 20 0 34 0;
+#X connect 26 0 20 0;
+#X connect 34 0 31 0;
+#X restore 190 114 pd myFFTanalysis;
+#X connect 0 0 1 0;
diff --git a/l2ork_addons/rjlib/src/rj_senergy~.c b/l2ork_addons/rjlib/src/rj_senergy~.c
new file mode 100644
index 000000000..2fa99f6b3
--- /dev/null
+++ b/l2ork_addons/rjlib/src/rj_senergy~.c
@@ -0,0 +1,90 @@
+#include "m_pd.h"
+#ifdef NT
+#pragma warning( disable : 4244 )
+#pragma warning( disable : 4305 )
+#endif
+
+// size of the magnitude spectrum to analyze
+#define WINSIZE 513
+
+/* ------------------------ rj_senergy~ for pd----------------------------- */
+
+/* tilde object to take absolute value. */
+
+static t_class *rj_senergy_class;
+
+typedef struct _rj_senergy
+{
+    t_object x_obj; 	   /* obligatory header */    
+	t_float x_f;	
+	t_outlet* rj_senergy;		   /* m: place for outlet */
+	
+} t_rj_senergy;
+
+    /* this is the actual performance routine which acts on the samples.
+    It's called with a single pointer "w" which is our location in the
+    DSP call list.  We return a new "w" which will point to the next item
+    after us.  Meanwhile, w[0] is just a pointer to dsp-perform itself
+    (no use to us), w[1] and w[2] are the input and output vector locations,
+    and w[3] is the number of points to calculate. */
+
+static t_int *rj_senergy_perform(t_int *w)
+{
+	
+	t_rj_senergy *x = (t_rj_senergy *)(w[1]);
+    t_float *in = (t_float *)(w[2]);
+	
+	//int size=(int)(w[3]); 
+	int size=WINSIZE;
+	
+    int j;
+    float sum = 0.f;
+    for ( j = 0; j < size; j++ ) {
+        sum += in[j]*in[j];
+    }
+             
+	outlet_float(x->rj_senergy,  sum / (float)(size));
+    
+	
+	return (w+4);
+}
+
+    /* called to start DSP.  Here we call Pd back to add our perform
+    routine to a linear callback list which Pd in turn calls to grind
+    out the samples. */
+static void rj_senergy_dsp(t_rj_senergy *x, t_signal **sp)
+{
+    dsp_add(rj_senergy_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+}
+
+static void *rj_senergy_new(void)
+{
+    t_rj_senergy *x = (t_rj_senergy *)pd_new(rj_senergy_class);
+	x->rj_senergy=outlet_new(&x->x_obj, &s_float);
+	x->x_f = 0;
+	
+	return (x);
+}
+
+static void rj_senergy_free(t_rj_senergy *x) {
+	
+}
+
+    /* this routine, which must have exactly this name (with the "~" replaced
+    by "_tilde) is called when the code is first loaded, and tells Pd how
+    to build the "class". */
+void rj_senergy_tilde_setup(void)
+{
+    rj_senergy_class = class_new(gensym("rj_senergy~"), (t_newmethod)rj_senergy_new, (t_method)rj_senergy_free,
+    	sizeof(t_rj_senergy), 0, A_DEFFLOAT, 0);
+
+	    /* this is magic to declare that the leftmost, "main" inlet
+	    takes signals; other signal inlets are done differently... */
+
+    CLASS_MAINSIGNALIN(rj_senergy_class, t_rj_senergy, x_f);
+    	/* here we tell Pd about the "dsp" method, which is called back
+	when DSP is turned on. */
+    
+	class_addmethod(rj_senergy_class, (t_method)rj_senergy_dsp, gensym("dsp"), 0);
+	post("rj_senergy version 0.1");
+}
diff --git a/l2ork_addons/rjlib/src/rj_zcr~-help.pd b/l2ork_addons/rjlib/src/rj_zcr~-help.pd
new file mode 100644
index 000000000..71456e870
--- /dev/null
+++ b/l2ork_addons/rjlib/src/rj_zcr~-help.pd
@@ -0,0 +1,9 @@
+#N canvas 0 22 602 347 10;
+#X obj 231 92 adc~;
+#X obj 211 199 hsl 128 15 0 0.5 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 670 1;
+#X text 282 147 zero-crossing rate: a cheap analog to the spectral
+centroid in temporal domain;
+#X obj 231 139 rj_zcr~;
+#X connect 0 0 3 0;
+#X connect 3 0 1 0;
diff --git a/l2ork_addons/rjlib/src/rj_zcr~.c b/l2ork_addons/rjlib/src/rj_zcr~.c
new file mode 100644
index 000000000..d12d332e8
--- /dev/null
+++ b/l2ork_addons/rjlib/src/rj_zcr~.c
@@ -0,0 +1,109 @@
+#include <stdlib.h>
+#include "m_pd.h"
+#ifdef NT
+#pragma warning( disable : 4244 )
+#pragma warning( disable : 4305 )
+#endif
+
+#define WINDOWSIZE 1024
+
+/* ------------------------ rj_zcr~ for pd----------------------------- */
+
+/* tilde object to take absolute value. */
+
+static t_class *rj_zcr_class;
+
+typedef struct _rj_zcr
+{
+    t_object x_obj; 	   /* obligatory header */    
+	t_float x_f;	
+	t_outlet* rj_zcr;		   /* m: place for outlet */
+	
+	float * buffer;
+	int buffercnt;
+    
+} t_rj_zcr;
+
+    /* this is the actual performance routine which acts on the samples.
+    It's called with a single pointer "w" which is our location in the
+    DSP call list.  We return a new "w" which will point to the next item
+    after us.  Meanwhile, w[0] is just a pointer to dsp-perform itself
+    (no use to us), w[1] and w[2] are the input and output vector locations,
+    and w[3] is the number of points to calculate. */
+
+static t_int *rj_zcr_perform(t_int *w)
+{
+	
+	t_rj_zcr *x = (t_rj_zcr *)(w[1]);
+    
+	t_float *in = (t_float *)(w[2]);
+	
+	t_float rate=1.f;
+
+	int size=(int)(w[3]); 
+	
+	int ibuf; 
+	for (ibuf=0; ibuf<size; ibuf++) {
+		x->buffer[x->buffercnt++]=in[ibuf];
+		if(x->buffercnt==WINDOWSIZE-1) {
+			
+			int ncross=0;
+			int i;
+			for (i=0; i<WINDOWSIZE-1; i++) {
+				if(in[i]*in[i+1]<0) ncross++;
+			}
+			rate=(float) ncross/(float) WINDOWSIZE;
+			
+			// copy rate
+			outlet_float(x->rj_zcr, rate);
+			
+			x->buffercnt=0;
+		}
+	}
+
+	return (w+4);
+}
+
+    /* called to start DSP.  Here we call Pd back to add our perform
+    routine to a linear callback list which Pd in turn calls to grind
+    out the samples. */
+static void rj_zcr_dsp(t_rj_zcr *x, t_signal **sp)
+{
+    dsp_add(rj_zcr_perform, 3, x, sp[0]->s_vec, sp[0]->s_n);
+}
+
+static void *rj_zcr_new(void)
+{
+    t_rj_zcr *x = (t_rj_zcr *)pd_new(rj_zcr_class);
+	x->rj_zcr=outlet_new(&x->x_obj, &s_float);
+	x->x_f = 0;
+	
+	x->buffer=malloc(WINDOWSIZE*sizeof(float));
+	x->buffercnt=0;
+	
+	return (x);
+}
+
+static void rj_zcr_free(t_rj_zcr *x) {
+	free(x->buffer);	
+}
+
+
+    /* this routine, which must have exactly this name (with the "~" replaced
+    by "_tilde) is called when the code is first loaded, and tells Pd how
+    to build the "class". */
+void rj_zcr_tilde_setup(void)
+{
+    rj_zcr_class = class_new(gensym("rj_zcr~"), (t_newmethod)rj_zcr_new, (t_method)rj_zcr_free,
+    	sizeof(t_rj_zcr), 0, A_DEFFLOAT, 0);
+
+	    /* this is magic to declare that the leftmost, "main" inlet
+	    takes signals; other signal inlets are done differently... */
+
+    CLASS_MAINSIGNALIN(rj_zcr_class, t_rj_zcr, x_f);
+    	/* here we tell Pd about the "dsp" method, which is called back
+	when DSP is turned on. */
+    
+	class_addmethod(rj_zcr_class, (t_method)rj_zcr_dsp, gensym("dsp"), 0);
+	post("rj_zcr version 0.1");
+}
diff --git a/l2ork_addons/rjlib/sssad.pd b/l2ork_addons/rjlib/sssad.pd
new file mode 100644
index 000000000..0fad7e9d8
--- /dev/null
+++ b/l2ork_addons/rjlib/sssad.pd
@@ -0,0 +1,257 @@
+#N canvas 144 48 1039 564 10;
+#X obj 159 26 inlet;
+#X obj 233 55 list prepend \$1;
+#X obj 233 160 list trim;
+#X obj 233 25 inlet;
+#X obj 22 308 b;
+#X obj 159 53 b;
+#X obj 233 223 route \$1;
+#X obj 543 358 b;
+#X obj 543 250 spigot;
+#X obj 669 72 loadbang;
+#X obj 669 250 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 669 194 select 0;
+#X obj 701 141 + 1;
+#X obj 669 120 t a a;
+#X obj 669 216 f 1;
+#X obj 226 476 outlet;
+#X obj 159 450 route bang;
+#X text 243 449 filter out empty lists;
+#X obj 610 474 list prepend persist \$1;
+#X obj 159 421 list append;
+#X text 231 110 on SSSAD we eavesdrop the communication;
+#X text 692 249 <- only the first instance responds to "save";
+#X text 165 540 2007/2008 fbar;
+#X text 829 95 Enhancement by Enrique Erne;
+#X obj 543 425 list append;
+#X obj 543 448 route bang;
+#X text 627 447 filter out empty lists here \, too.;
+#X obj 22 226 route set setonly;
+#X obj 80 273 route \$1;
+#X obj 80 251 list trim;
+#X obj 608 324 route \$1;
+#X obj 608 302 list trim;
+#X obj 543 277 route save saveonly;
+#X obj 610 498 list trim;
+#N canvas 513 284 322 286 s-SSSAD 0;
+#X obj 63 38 inlet;
+#X obj 63 176 s SSSAD;
+#X obj 123 176 s \$2-SSSAD;
+#X obj 123 39 loadbang;
+#N canvas 0 0 450 300 demux2 0;
+#X obj 114 91 == 0;
+#X obj 190 115 spigot;
+#X obj 61 43 inlet;
+#X obj 229 46 inlet;
+#X obj 61 113 spigot 1;
+#X obj 61 156 outlet;
+#X obj 190 157 outlet;
+#X connect 0 0 4 1;
+#X connect 1 0 6 0;
+#X connect 2 0 4 0;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X connect 3 0 1 1;
+#X connect 4 0 5 0;
+#X restore 63 137 pd demux2;
+#X obj 123 81 select 0;
+#X msg 123 103 0;
+#X msg 176 102 1;
+#X obj 123 59 list append \$2;
+#X obj 123 39 loadbang;
+#X obj 123 81 select 0;
+#X msg 123 103 0;
+#X msg 176 102 1;
+#X obj 123 59 list append \$2;
+#X connect 0 0 4 0;
+#X connect 3 0 8 0;
+#X connect 4 0 1 0;
+#X connect 4 1 2 0;
+#X connect 5 0 6 0;
+#X connect 5 1 7 0;
+#X connect 6 0 4 1;
+#X connect 7 0 4 1;
+#X connect 8 0 5 0;
+#X connect 9 0 13 0;
+#X connect 10 0 11 0;
+#X connect 10 1 12 0;
+#X connect 13 0 10 0;
+#X restore 233 84 pd s-SSSAD;
+#N canvas 539 183 330 246 r-SSSAD 0;
+#N canvas 0 0 450 300 mux2 0;
+#X obj 114 121 == 0;
+#X obj 190 145 spigot;
+#X obj 61 43 inlet;
+#X obj 229 66 inlet;
+#X obj 61 143 spigot 1;
+#X obj 61 186 outlet;
+#X obj 190 45 inlet;
+#X connect 0 0 4 1;
+#X connect 1 0 5 0;
+#X connect 2 0 4 0;
+#X connect 3 0 0 0;
+#X connect 3 0 1 1;
+#X connect 4 0 5 0;
+#X connect 6 0 1 0;
+#X restore 63 167 pd mux2;
+#X obj 63 16 r SSSAD;
+#X obj 86 41 r \$2-SSSAD;
+#X obj 63 201 outlet;
+#X obj 109 74 loadbang;
+#X obj 109 116 select 0;
+#X msg 109 138 0;
+#X msg 162 137 1;
+#X obj 109 94 list append \$2;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 1;
+#X connect 4 0 8 0;
+#X connect 5 0 6 0;
+#X connect 5 1 7 0;
+#X connect 6 0 0 2;
+#X connect 7 0 0 2;
+#X connect 8 0 5 0;
+#X restore 233 136 pd r-SSSAD;
+#N canvas 539 183 330 246 r-SSSAD_ADMIN 0;
+#N canvas 0 0 450 300 mux2 0;
+#X obj 114 121 == 0;
+#X obj 190 145 spigot;
+#X obj 61 43 inlet;
+#X obj 229 66 inlet;
+#X obj 61 143 spigot 1;
+#X obj 61 186 outlet;
+#X obj 190 45 inlet;
+#X connect 0 0 4 1;
+#X connect 1 0 5 0;
+#X connect 2 0 4 0;
+#X connect 3 0 0 0;
+#X connect 3 0 1 1;
+#X connect 4 0 5 0;
+#X connect 6 0 1 0;
+#X restore 63 177 pd mux2;
+#X obj 63 211 outlet;
+#X obj 63 16 r SSSAD_ADMIN;
+#X obj 86 41 r \$2-SSSAD_ADMIN;
+#X obj 109 75 loadbang;
+#X obj 109 117 select 0;
+#X msg 109 139 0;
+#X msg 162 138 1;
+#X obj 109 95 list append \$2;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 1;
+#X connect 4 0 8 0;
+#X connect 5 0 6 0;
+#X connect 5 1 7 0;
+#X connect 6 0 0 2;
+#X connect 7 0 0 2;
+#X connect 8 0 5 0;
+#X restore 543 190 pd r-SSSAD_ADMIN;
+#N canvas 513 284 322 286 s-SSSAD_ADMIN 0;
+#X obj 63 39 inlet;
+#N canvas 0 0 450 300 demux2 0;
+#X obj 114 91 == 0;
+#X obj 190 115 spigot;
+#X obj 61 43 inlet;
+#X obj 229 46 inlet;
+#X obj 61 113 spigot 1;
+#X obj 61 156 outlet;
+#X obj 190 157 outlet;
+#X connect 0 0 4 1;
+#X connect 1 0 6 0;
+#X connect 2 0 4 0;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X connect 3 0 1 1;
+#X connect 4 0 5 0;
+#X restore 63 137 pd demux2;
+#X obj 63 206 s SSSAD_ADMIN;
+#X obj 123 176 s \$2-SSSAD_ADMIN;
+#X obj 123 39 loadbang;
+#X obj 123 81 select 0;
+#X msg 123 103 0;
+#X msg 176 102 1;
+#X obj 123 59 list append \$2;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 3 0;
+#X connect 4 0 8 0;
+#X connect 5 0 6 0;
+#X connect 5 1 7 0;
+#X connect 6 0 1 1;
+#X connect 7 0 1 1;
+#X connect 8 0 5 0;
+#X restore 610 522 pd s-SSSAD_ADMIN;
+#X obj 669 95 value \$1.\$2.SSSAD.req;
+#X obj 701 164 value \$1.\$2.SSSAD.req;
+#N canvas 539 183 330 246 r-SSSAD_ADMIN 0;
+#N canvas 0 0 450 300 mux2 0;
+#X obj 114 121 == 0;
+#X obj 190 145 spigot;
+#X obj 61 43 inlet;
+#X obj 229 66 inlet;
+#X obj 61 143 spigot 1;
+#X obj 61 186 outlet;
+#X obj 190 45 inlet;
+#X connect 0 0 4 1;
+#X connect 1 0 5 0;
+#X connect 2 0 4 0;
+#X connect 3 0 0 0;
+#X connect 3 0 1 1;
+#X connect 4 0 5 0;
+#X connect 6 0 1 0;
+#X restore 63 177 pd mux2;
+#X obj 63 211 outlet;
+#X obj 63 16 r SSSAD_ADMIN;
+#X obj 86 41 r \$2-SSSAD_ADMIN;
+#X obj 109 75 loadbang;
+#X obj 109 117 select 0;
+#X msg 109 139 0;
+#X msg 162 138 1;
+#X obj 109 95 list append \$2;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 1;
+#X connect 4 0 8 0;
+#X connect 5 0 6 0;
+#X connect 5 1 7 0;
+#X connect 6 0 0 2;
+#X connect 7 0 0 2;
+#X connect 8 0 5 0;
+#X restore 22 187 pd r-SSSAD_ADMIN;
+#X connect 0 0 5 0;
+#X connect 1 0 34 0;
+#X connect 2 0 6 0;
+#X connect 3 0 1 0;
+#X connect 4 0 19 0;
+#X connect 5 0 19 0;
+#X connect 6 0 19 1;
+#X connect 6 0 24 1;
+#X connect 7 0 24 0;
+#X connect 8 0 32 0;
+#X connect 9 0 38 0;
+#X connect 11 0 14 0;
+#X connect 12 0 39 0;
+#X connect 13 0 11 0;
+#X connect 13 1 12 0;
+#X connect 14 0 8 1;
+#X connect 14 0 10 0;
+#X connect 16 1 15 0;
+#X connect 18 0 33 0;
+#X connect 19 0 16 0;
+#X connect 24 0 25 0;
+#X connect 25 1 18 0;
+#X connect 27 0 4 0;
+#X connect 27 1 29 0;
+#X connect 28 0 4 0;
+#X connect 29 0 28 0;
+#X connect 30 0 7 0;
+#X connect 31 0 30 0;
+#X connect 32 0 7 0;
+#X connect 32 1 31 0;
+#X connect 33 0 37 0;
+#X connect 35 0 2 0;
+#X connect 36 0 8 0;
+#X connect 38 0 13 0;
+#X connect 40 0 27 0;
diff --git a/l2ork_addons/rjlib/touch.pd b/l2ork_addons/rjlib/touch.pd
new file mode 100644
index 000000000..764037283
--- /dev/null
+++ b/l2ork_addons/rjlib/touch.pd
@@ -0,0 +1,253 @@
+#N canvas 638 283 203 198 10;
+#N canvas 565 184 118 133 tap 0;
+#X obj 16 16 r #touch;
+#X obj 16 37 route down;
+#X obj 16 81 s touch;
+#X msg 16 59 tap \$1;
+#X connect 0 0 1 0;
+#X connect 1 0 3 0;
+#X connect 3 0 2 0;
+#X restore 17 14 pd tap;
+#N canvas 226 304 213 331 speed 0;
+#X obj 114 30 r #touch;
+#X obj 114 52 list;
+#X obj 8 58 t b b;
+#X obj 8 36 metro 40;
+#N canvas 335 294 251 502 speed_1 0;
+#X msg 43 55 \$2 \$1 \$3 \$4;
+#X obj 43 76 route 1;
+#X obj 43 158 unpack f f;
+#X obj 43 194 t f f b;
+#X obj 61 220 f;
+#X obj 43 243 -;
+#X obj 110 194 t f f b;
+#X obj 128 220 f;
+#X obj 110 243 -;
+#X obj 146 145 unpack f f;
+#X obj 43 98 route up xy down;
+#X obj 43 278 pack f f;
+#X obj 43 322 unpack f f;
+#X obj 43 345 t f f;
+#X obj 43 369 *;
+#X obj 110 344 t f f;
+#X obj 110 368 *;
+#X obj 43 393 +;
+#X obj 43 416 pow 0.5;
+#N canvas 541 449 106 125 lop 0;
+#X obj 6 13 inlet;
+#X obj 6 82 outlet;
+#X obj 6 35 * 0.3;
+#X obj 6 59 +;
+#X obj 35 58 * 0.7;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 1;
+#X restore 43 439 pd lop;
+#X obj 43 12 inlet;
+#X obj 86 12 inlet;
+#X obj 43 484 outlet;
+#X obj 43 34 list append 0 0 0 0;
+#X obj 43 460 change;
+#X obj 57 301 s \$0.delta.1;
+#X connect 0 0 1 0;
+#X connect 1 0 10 0;
+#X connect 2 0 3 0;
+#X connect 2 1 6 0;
+#X connect 3 0 5 0;
+#X connect 3 1 4 1;
+#X connect 3 2 4 0;
+#X connect 4 0 5 1;
+#X connect 5 0 11 0;
+#X connect 6 0 8 0;
+#X connect 6 1 7 1;
+#X connect 6 2 7 0;
+#X connect 7 0 8 1;
+#X connect 8 0 11 1;
+#X connect 9 0 4 1;
+#X connect 9 1 7 1;
+#X connect 10 0 2 0;
+#X connect 10 1 2 0;
+#X connect 10 2 9 0;
+#X connect 11 0 12 0;
+#X connect 11 0 25 0;
+#X connect 12 0 13 0;
+#X connect 12 1 15 0;
+#X connect 13 0 14 0;
+#X connect 13 1 14 1;
+#X connect 14 0 17 0;
+#X connect 15 0 16 0;
+#X connect 15 1 16 1;
+#X connect 16 0 17 1;
+#X connect 17 0 18 0;
+#X connect 18 0 19 0;
+#X connect 19 0 24 0;
+#X connect 20 0 23 0;
+#X connect 21 0 23 1;
+#X connect 23 0 0 0;
+#X connect 24 0 22 0;
+#X restore 8 159 pd speed_1;
+#N canvas 312 276 236 526 speed_2 0;
+#X msg 43 55 \$2 \$1 \$3 \$4;
+#X obj 43 76 route 1;
+#X obj 43 158 unpack f f;
+#X obj 43 194 t f f b;
+#X obj 61 220 f;
+#X obj 43 243 -;
+#X obj 110 194 t f f b;
+#X obj 128 220 f;
+#X obj 110 243 -;
+#X obj 146 145 unpack f f;
+#X obj 43 98 route up xy down;
+#X obj 43 278 pack f f;
+#X obj 43 327 unpack f f;
+#X obj 43 350 t f f;
+#X obj 43 374 *;
+#X obj 110 349 t f f;
+#X obj 110 373 *;
+#X obj 43 398 +;
+#X obj 43 421 pow 0.5;
+#N canvas 541 449 106 125 lop 0;
+#X obj 6 13 inlet;
+#X obj 6 82 outlet;
+#X obj 6 35 * 0.3;
+#X obj 6 59 +;
+#X obj 35 58 * 0.7;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 3 1;
+#X restore 43 444 pd lop;
+#X obj 43 12 inlet;
+#X obj 86 12 inlet;
+#X obj 43 489 outlet;
+#X obj 43 34 list append 0 0 0 0;
+#X obj 43 465 change;
+#X obj 54 305 s \$0.delta.2;
+#X connect 0 0 1 0;
+#X connect 1 0 10 0;
+#X connect 2 0 3 0;
+#X connect 2 1 6 0;
+#X connect 3 0 5 0;
+#X connect 3 1 4 1;
+#X connect 3 2 4 0;
+#X connect 4 0 5 1;
+#X connect 5 0 11 0;
+#X connect 6 0 8 0;
+#X connect 6 1 7 1;
+#X connect 6 2 7 0;
+#X connect 7 0 8 1;
+#X connect 8 0 11 1;
+#X connect 9 0 4 1;
+#X connect 9 1 7 1;
+#X connect 10 0 2 0;
+#X connect 10 1 2 0;
+#X connect 10 2 9 0;
+#X connect 11 0 12 0;
+#X connect 11 0 25 0;
+#X connect 12 0 13 0;
+#X connect 12 1 15 0;
+#X connect 13 0 14 0;
+#X connect 13 1 14 1;
+#X connect 14 0 17 0;
+#X connect 15 0 16 0;
+#X connect 15 1 16 1;
+#X connect 16 0 17 1;
+#X connect 17 0 18 0;
+#X connect 18 0 19 0;
+#X connect 19 0 24 0;
+#X connect 20 0 23 0;
+#X connect 21 0 23 1;
+#X connect 23 0 0 0;
+#X connect 24 0 22 0;
+#X restore 90 160 pd speed_2;
+#X msg 8 191 speed 1 \$1;
+#X msg 90 191 speed 2 \$1;
+#X obj 8 231 s touch;
+#X obj 8 13 loadbang;
+#X connect 0 0 1 0;
+#X connect 1 0 4 1;
+#X connect 1 0 5 1;
+#X connect 2 0 4 0;
+#X connect 2 1 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 6 0;
+#X connect 5 0 7 0;
+#X connect 6 0 8 0;
+#X connect 7 0 8 0;
+#X connect 9 0 3 0;
+#X restore 16 37 pd speed;
+#N canvas 129 241 258 271 updown 0;
+#X obj 16 13 r #touch;
+#X obj 16 41 list;
+#X msg 16 63 \$2 \$1;
+#X obj 16 86 route 1 2;
+#X obj 16 120 route down up;
+#X msg 16 181 updown 1 \$1;
+#X msg 16 149 1;
+#X msg 60 150 0;
+#X obj 116 121 route down up;
+#X msg 116 150 1;
+#X msg 160 151 0;
+#X msg 116 182 updown 2 \$1;
+#X obj 16 224 s touch;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 1 8 0;
+#X connect 4 0 6 0;
+#X connect 4 1 7 0;
+#X connect 5 0 12 0;
+#X connect 6 0 5 0;
+#X connect 7 0 5 0;
+#X connect 8 0 9 0;
+#X connect 8 1 10 0;
+#X connect 9 0 11 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X restore 16 59 pd updown;
+#N canvas 553 103 273 244 direction 0;
+#X obj 144 26 r \$0.delta.2;
+#X obj 21 24 r \$0.delta.1;
+#X obj 21 68 atan2;
+#X msg 21 49 \$2 \$1;
+#X obj 21 90 t f f b;
+#X obj 43 113 f;
+#X obj 21 158 * 0.5;
+#X obj 21 138 +;
+#X msg 21 182 direction 1 \$1;
+#X obj 21 204 s touch;
+#X obj 144 70 atan2;
+#X msg 144 51 \$2 \$1;
+#X obj 144 92 t f f b;
+#X obj 166 115 f;
+#X obj 144 160 * 0.5;
+#X obj 144 140 +;
+#X obj 144 206 s touch;
+#X msg 144 184 direction 2 \$1;
+#X connect 0 0 11 0;
+#X connect 1 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 7 0;
+#X connect 4 1 5 1;
+#X connect 4 2 5 0;
+#X connect 5 0 7 1;
+#X connect 6 0 8 0;
+#X connect 7 0 6 0;
+#X connect 8 0 9 0;
+#X connect 10 0 12 0;
+#X connect 11 0 10 0;
+#X connect 12 0 15 0;
+#X connect 12 1 13 1;
+#X connect 12 2 13 0;
+#X connect 13 0 15 1;
+#X connect 14 0 17 0;
+#X connect 15 0 14 0;
+#X connect 17 0 16 0;
+#X restore 16 82 pd direction;
+#X text 14 173 Author: Roman Haefeli;
+#X text 13 154 Version: 2008-07-14;
diff --git a/l2ork_addons/tar_em_up.sh b/l2ork_addons/tar_em_up.sh
index 4e6f94db6..6920814a9 100755
--- a/l2ork_addons/tar_em_up.sh
+++ b/l2ork_addons/tar_em_up.sh
@@ -302,6 +302,8 @@ cp ../../pd/src/g_all_guis.h ../../externals/build/include
 	cp -f array* ../../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra
 	# return to l2ork_addons folder
 	cd ../../
+	# copy rjlib into the extra folder
+	cp -rf rjlib ../../packages/linux_make/build$inst_dir/lib/pd-l2ork/extra
 	# install raspberry pi externals (if applicable)
 	#if [ $rpi -eq 1 ]
 	#then
diff --git a/packages/linux_make/default.settings b/packages/linux_make/default.settings
index a8389ab54..322a1a8f4 100644
--- a/packages/linux_make/default.settings
+++ b/packages/linux_make/default.settings
@@ -68,4 +68,5 @@ path30: /usr/lib/pd-l2ork/extra/ext13
 path31: /usr/lib/pd-l2ork/extra/ggee
 path32: /usr/lib/pd-l2ork/extra/ekext
 path33: /usr/lib/pd-l2ork/extra/flext
-npath: 33
+path34: /usr/lib/pd-l2ork/extra/rjlib
+npath: 34
-- 
GitLab