aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas O Fredericks <mrtof@users.sourceforge.net>2009-10-25 00:39:13 +0000
committerThomas O Fredericks <mrtof@users.sourceforge.net>2009-10-25 00:39:13 +0000
commitf18d063d9312c95e25294e0777bc135ee9a3fd8a (patch)
tree54763b4c61f53c8ec696be54bc1c0e8d816c05aa
Adding mtlsvn2git-root
svn path=/trunk/abstractions/mtl/; revision=12667
-rw-r--r--1-13LP.pd694
-rw-r--r--2dAngle-help.pd87
-rw-r--r--2dAngle.pd93
-rw-r--r--2dAngleLine-help.pd44
-rw-r--r--2dAngleLine.pd72
-rw-r--r--2dDistance-help.pd91
-rw-r--r--2dDistance.pd32
-rw-r--r--2dRatio-help.pd19
-rw-r--r--2dRatio.pd34
-rw-r--r--3dAdd-help.pd26
-rw-r--r--3dAdd.pd32
-rw-r--r--3dAngle-help.pd27
-rw-r--r--3dAngle.pd46
-rw-r--r--3dCross-help.pd33
-rw-r--r--3dCross.pd60
-rw-r--r--3dDistance-help.pd21
-rw-r--r--3dDistance.pd43
-rw-r--r--3dDot-help.pd29
-rw-r--r--3dDot.pd33
-rw-r--r--3dMagnitude-help.pd19
-rw-r--r--3dMagnitude.pd35
-rw-r--r--3dMove-help.pd35
-rw-r--r--3dMove.pd44
-rw-r--r--3dNormalize-help.pd30
-rw-r--r--3dNormalize.pd61
-rw-r--r--3dPanTilt-help.pd73
-rw-r--r--3dPanTilt.pd52
-rw-r--r--3dRotate-help.pd38
-rw-r--r--3dRotate.pd210
-rw-r--r--3dScale-help.pd26
-rw-r--r--3dScale.pd30
-rw-r--r--3dSubtract-help.pd26
-rw-r--r--3dSubtract.pd32
-rw-r--r--LICENSE.txt340
-rw-r--r--TODO90
-rw-r--r--VCR-help.pd65
-rw-r--r--VCR.pd150
-rw-r--r--additive~-help.pd30
-rw-r--r--additive~.pd109
-rw-r--r--adsr~-help.pd63
-rw-r--r--adsr~.pd71
-rw-r--r--ambient~-help.pd12
-rw-r--r--ambient~.pd487
-rw-r--r--applause~-help.pd20
-rw-r--r--applause~.pd56
-rw-r--r--arpeggio-help.pd32
-rw-r--r--arpeggio.pd38
-rw-r--r--asciiToPd-help.pd25
-rw-r--r--asciiToPd.pd25
-rw-r--r--aux~-help.pd7
-rw-r--r--aux~.pd8
-rw-r--r--beep~-help.pd25
-rw-r--r--beep~.pd40
-rw-r--r--bell~-help.pd22
-rw-r--r--bell~.pd288
-rw-r--r--benchmark-help.pd34
-rw-r--r--benchmark.pd21
-rw-r--r--binaryToByte-help.pd46
-rw-r--r--binaryToByte.pd78
-rw-r--r--biorythm~-help.pd44
-rw-r--r--biorythm~.pd28
-rw-r--r--blip~-help.pd20
-rw-r--r--blip~.pd63
-rw-r--r--bounce~-help.pd16
-rw-r--r--bounce~.pd143
-rw-r--r--bpmToFreq-help.pd23
-rw-r--r--bpmToFreq.pd8
-rw-r--r--bpmToMs-help.pd19
-rw-r--r--bpmToMs.pd10
-rw-r--r--browser-help.pd5
-rw-r--r--browser.pd694
-rw-r--r--bubbles~-help.pd8
-rw-r--r--bubbles~.pd191
-rw-r--r--buttonColor-help.pd30
-rw-r--r--buttonColor.pd20
-rw-r--r--byteToBinary-help.pd60
-rw-r--r--byteToBinary.pd96
-rw-r--r--bytesToIntSigned-help.pd23
-rw-r--r--bytesToIntSigned.pd29
-rw-r--r--center-help.pd13
-rw-r--r--center.pd48
-rw-r--r--channel~-help.pd34
-rw-r--r--channel~.pd94
-rw-r--r--chordGuess-help.pd27
-rw-r--r--chordGuess.pd92
-rw-r--r--chronometer-help.pd7
-rw-r--r--chronometer.pd71
-rw-r--r--clap808~-help.pd26
-rw-r--r--clap808~.pd81
-rw-r--r--clap~-help.pd15
-rw-r--r--clap~.pd60
-rw-r--r--clk-quantization-help.pd33
-rw-r--r--clkMaster-help.pd37
-rw-r--r--clkMaster.pd140
-rw-r--r--clkSlave-help.pd36
-rw-r--r--clkSlave.pd265
-rw-r--r--clkUDPIn-help.pd15
-rw-r--r--clkUDPIn.pd4
-rw-r--r--clkUDPOut-help.pd11
-rw-r--r--clkUDPOut.pd34
-rw-r--r--clocker-help.pd23
-rw-r--r--clocker.pd24
-rw-r--r--closestNote-help.pd89
-rw-r--r--closestNote.pd53
-rw-r--r--colorGrid-help.pd9
-rw-r--r--colorGrid.pd140
-rw-r--r--coloredNoise~-help.pd37
-rw-r--r--coloredNoise~.pd182
-rw-r--r--compress~-help.pd59
-rw-r--r--compress~.pd203
-rw-r--r--concat-help.pd10
-rw-r--r--concat.pd12
-rw-r--r--core.txt199
-rw-r--r--crackles~-help.pd11
-rw-r--r--crackles~.pd45
-rw-r--r--cranks~-help.pd16
-rw-r--r--cranks~.pd210
-rw-r--r--cues-help.pd41
-rw-r--r--cues.pd61
-rw-r--r--cues~-help.pd41
-rw-r--r--cues~.pd78
-rw-r--r--cycle5-help.pd8
-rw-r--r--cycle5.pd10
-rw-r--r--degreeToChord-help.pd25
-rw-r--r--degreeToChord.pd46
-rw-r--r--degreeToRadian-help.pd14
-rw-r--r--degreeToRadian.pd17
-rw-r--r--delayPhasor~-help.pd54
-rw-r--r--delayPhasor~.pd97
-rw-r--r--distoAp~-help.pd65
-rw-r--r--distoAp~.pd79
-rw-r--r--distoCrusher~-help.pd26
-rw-r--r--distoCrusher~.pd75
-rw-r--r--distoFuzz~-help.pd37
-rw-r--r--distoFuzz~.pd170
-rw-r--r--distoLofi~-help.pd29
-rw-r--r--distoLofi~.pd88
-rw-r--r--distoNonmonotone~-help.pd52
-rw-r--r--distoNonmonotone~.pd160
-rw-r--r--distoSign~-help.pd22
-rw-r--r--distoSign~.pd146
-rw-r--r--distoTanh~-help.pd19
-rw-r--r--distoTanh~.pd42
-rw-r--r--dodeca-help.pd38
-rw-r--r--dodeca.pd66
-rw-r--r--doubleClick-help.pd24
-rw-r--r--doubleClick.pd19
-rw-r--r--drips~-help.pd10
-rw-r--r--drips~.pd37
-rw-r--r--dtmfBusy~-help.pd12
-rw-r--r--dtmfBusy~.pd45
-rw-r--r--dtmfHandUp~-help.pd12
-rw-r--r--dtmfHandUp~.pd38
-rw-r--r--dtmfHurryUp~-help.pd12
-rw-r--r--dtmfHurryUp~.pd65
-rw-r--r--dtmfNumber~-help.pd11
-rw-r--r--dtmfNumber~.pd112
-rw-r--r--dtmfRing~-help.pd12
-rw-r--r--dtmfRing~.pd39
-rw-r--r--echoBp~-help.pd94
-rw-r--r--echoBp~.pd139
-rw-r--r--echoRobot~-help.pd49
-rw-r--r--echoRobot~.pd54
-rw-r--r--echoVd~-help.pd51
-rw-r--r--echoVd~.pd85
-rw-r--r--eq~-help.pd24
-rw-r--r--eq~.pd179
-rw-r--r--every-help.pd23
-rw-r--r--every.pd25
-rw-r--r--examples/gems-fft~.pd107
-rw-r--r--examples/gems-movies_with_sound~.pd43
-rw-r--r--examples/gems-scope~.pd130
-rw-r--r--examples/gems-sobel_filter.pd359
-rw-r--r--fibonacci-help.pd8
-rw-r--r--fibonacci.pd29
-rw-r--r--fileBrowser-help.pd39
-rw-r--r--fileBrowser.pd142
-rw-r--r--filterPeakSig~-help.pd65
-rw-r--r--filterPeakSig~.pd211
-rw-r--r--fit-help.pd38
-rw-r--r--fit.pd113
-rw-r--r--form-help.pd52
-rw-r--r--form.pd44
-rw-r--r--fpsToMs-help.pd11
-rw-r--r--fpsToMs.pd8
-rw-r--r--framesToSmpte-help.pd41
-rw-r--r--framesToSmpte.pd33
-rw-r--r--frying~-help.pd16
-rw-r--r--frying~.pd52
-rw-r--r--gBrowser-help.pd126
-rw-r--r--gBrowser.pd438
-rw-r--r--gateNoise~-help.pd83
-rw-r--r--gateNoise~.pd161
-rw-r--r--gemsAlpha-help.pd130
-rw-r--r--gemsAlpha.pd124
-rw-r--r--gemsAverageColor-help.pd46
-rw-r--r--gemsAverageColor.pd26
-rw-r--r--gemsCropMap-help.pd76
-rw-r--r--gemsCropMap.pd122
-rw-r--r--gemsCuber-help.pd59
-rw-r--r--gemsCuber.pd131
-rw-r--r--gemsDuplicate-help.pd58
-rw-r--r--gemsDuplicate.pd20
-rw-r--r--gemsFeedback-help.pd62
-rw-r--r--gemsFeedback.pd83
-rw-r--r--gemsFit-help.pd60
-rw-r--r--gemsFit.pd247
-rw-r--r--gemsImages-help.pd29
-rw-r--r--gemsImages.pd22
-rw-r--r--gemsLines-help.pd92
-rw-r--r--gemsLines.pd149
-rw-r--r--gemsLoop-help.pd41
-rw-r--r--gemsLoop.pd214
-rw-r--r--gemsMouse-help.pd33
-rw-r--r--gemsMouse.pd91
-rw-r--r--gemsMovies-help.pd79
-rw-r--r--gemsMovies.pd254
-rw-r--r--gemsPolygon-help.pd99
-rw-r--r--gemsPolygon.pd147
-rw-r--r--gemsWheel-help.pd42
-rw-r--r--gemsWheel.pd45
-rw-r--r--gemsWin-help.pd74
-rw-r--r--gemsWin.pd273
-rw-r--r--granularLive~-help.pd62
-rw-r--r--granularLive~.pd249
-rw-r--r--gunGas~-help.pd18
-rw-r--r--gunGas~.pd110
-rw-r--r--gunShot~-help.pd11
-rw-r--r--gunShot~.pd139
-rw-r--r--hexToDec-help.pd16
-rw-r--r--hexToDec.pd8
-rw-r--r--hissing~-help.pd8
-rw-r--r--hissing~.pd27
-rw-r--r--hold~-help.pd12
-rw-r--r--hold~.pd30
-rw-r--r--hsv-help.pd8
-rw-r--r--hsv.pd63
-rw-r--r--hsvToRgb-help.pd49
-rw-r--r--hsvToRgb.pd180
-rwxr-xr-ximport.sh9
-rw-r--r--inBetweens-help.pd18
-rw-r--r--inBetweens.pd53
-rw-r--r--indexer-help.pd51
-rw-r--r--indexer.pd138
-rw-r--r--instrument~-help.pd28
-rw-r--r--instrument~.pd88
-rw-r--r--intToDigits-help.pd14
-rw-r--r--intToDigits.pd23
-rw-r--r--in~-help.pd10
-rw-r--r--in~.pd238
-rw-r--r--keyNameLearn-help.pd15
-rw-r--r--keyNameLearn.pd31
-rw-r--r--keyR-help.pd23
-rw-r--r--keyR.pd22
-rw-r--r--keyText-help.pd29
-rw-r--r--keyText.pd64
-rw-r--r--kick808~-help.pd50
-rw-r--r--kick808~.pd409
-rw-r--r--lightFreqToWave-help.pd8
-rw-r--r--lightFreqToWave.pd7
-rw-r--r--lightWaveToFreq-help.pd8
-rw-r--r--lightWaveToFreq.pd9
-rw-r--r--lightning~-help.pd27
-rw-r--r--lightning~.pd155
-rw-r--r--limit~-help.pd94
-rw-r--r--limit~.pd31
-rw-r--r--listBoolToPos-help.pd16
-rw-r--r--listBoolToPos.pd20
-rw-r--r--listBuild-help.pd52
-rw-r--r--listBuild.pd48
-rw-r--r--listCutUp-help.pd15
-rw-r--r--listCutUp.pd13
-rw-r--r--listDelay-help.pd19
-rw-r--r--listDelay.pd18
-rw-r--r--listJump-help.pd34
-rw-r--r--listJump.pd56
-rw-r--r--listOp-help.pd25
-rw-r--r--listOp.pd32
-rw-r--r--love.txt148
-rw-r--r--mToHarm-help.pd14
-rw-r--r--mToHarm.pd40
-rw-r--r--mToSpeed-help.pd19
-rw-r--r--mToSpeed.pd17
-rw-r--r--main~-help.pd6
-rw-r--r--main~.pd8
-rw-r--r--makeLabel-help.pd19
-rw-r--r--makeLabel.pd46
-rwxr-xr-xmakecore.sh12
-rw-r--r--material~-help.pd55
-rw-r--r--material~.pd72
-rw-r--r--modf-help.pd17
-rw-r--r--modf.pd12
-rw-r--r--msToBpm-help.pd18
-rw-r--r--msToBpm.pd11
-rw-r--r--msToFps-help.pd15
-rw-r--r--msToFps.pd8
-rw-r--r--msToFreq-help.pd11
-rw-r--r--msToFreq.pd8
-rw-r--r--msToSmp-help.pd11
-rw-r--r--msToSmp.pd15
-rw-r--r--msToTime-help.pd25
-rw-r--r--msToTime.pd30
-rw-r--r--mtl-meta.pd11
-rw-r--r--nbx~-help.pd16
-rw-r--r--nbx~.pd19
-rw-r--r--noteClose-help.pd67
-rw-r--r--noteClose.pd94
-rw-r--r--noteFloat-help.pd27
-rw-r--r--noteFloat.pd33
-rw-r--r--noteSplit-help.pd26
-rw-r--r--noteSplit.pd21
-rw-r--r--noteToName-help.pd12
-rw-r--r--noteToName.pd47
-rw-r--r--numToRgb-help.pd24
-rw-r--r--numToRgb.pd60
-rw-r--r--octava-help.pd18
-rw-r--r--octava.pd15
-rw-r--r--oldRecord~-help.pd9
-rw-r--r--oldRecord~.pd50
-rw-r--r--out~-help.pd19
-rw-r--r--out~.pd275
-rw-r--r--param-enabled-help.pd2
-rw-r--r--pdToAscii-help.pd27
-rw-r--r--pdToAscii.pd8
-rw-r--r--phi-help.pd10
-rw-r--r--phi.pd16
-rw-r--r--piano-help.pd13
-rw-r--r--piano.pd373
-rw-r--r--pitchShift~-help.pd29
-rw-r--r--pitchShift~.pd770
-rw-r--r--player~-help.pd75
-rw-r--r--player~.pd137
-rw-r--r--punch~-help.pd25
-rw-r--r--punch~.pd25
-rw-r--r--qtrack-help.pd73
-rw-r--r--qtrack.pd122
-rw-r--r--radianToDegree-help.pd17
-rw-r--r--radianToDegree.pd13
-rw-r--r--rain~-help.pd8
-rw-r--r--rain~.pd164
-rw-r--r--randomFloat-help.pd40
-rw-r--r--randomFloat.pd43
-rw-r--r--reverbCm~-help.pd52
-rw-r--r--reverbCm~.pd118
-rw-r--r--reverbFdn~-help.pd63
-rw-r--r--reverbFdn~.pd438
-rw-r--r--reverbFree~-help.pd55
-rw-r--r--reverbFree~.pd74
-rw-r--r--rgbToHsv-help.pd31
-rw-r--r--rgbToHsv.pd326
-rw-r--r--rgbToNum-help.pd51
-rw-r--r--rgbToNum.pd55
-rw-r--r--round-help.pd13
-rw-r--r--round.pd6
-rw-r--r--roundUp-help.pd8
-rw-r--r--roundUp.pd11
-rw-r--r--rumble~-help.pd8
-rw-r--r--rumble~.pd24
-rw-r--r--sawor~-help.pd46
-rw-r--r--sawor~.pd29
-rw-r--r--scaleSmart-help.pd36
-rw-r--r--scaleSmart.pd128
-rw-r--r--seq1x8-help.pd58
-rw-r--r--seq1x8.pd150
-rw-r--r--seq8x8-help.pd206
-rw-r--r--seq8x8.pd488
-rw-r--r--sfIndexer-help.pd69
-rw-r--r--sfIndexer.pd272
-rw-r--r--shrinkSymbol-help.pd31
-rw-r--r--shrinkSymbol.pd64
-rw-r--r--sigToFloat~-help.pd10
-rw-r--r--sigToFloat~.pd17
-rw-r--r--sign-help.pd13
-rw-r--r--sign.pd17
-rw-r--r--sl8-help.pd48
-rw-r--r--sl8.pd115
-rw-r--r--smpToBpm-help.pd41
-rw-r--r--smpToBpm.pd128
-rw-r--r--smpToFreq-help.pd11
-rw-r--r--smpToFreq.pd15
-rw-r--r--smpToMem-help.pd11
-rw-r--r--smpToMem.pd8
-rw-r--r--smpToMs-help.pd10
-rw-r--r--smpToMs.pd18
-rw-r--r--smpToTime-help.pd13
-rw-r--r--smpToTime.pd49
-rw-r--r--smpteToFrames-help.pd33
-rw-r--r--smpteToFrames.pd46
-rw-r--r--sometimes-help.pd24
-rw-r--r--sometimes.pd14
-rw-r--r--soundFreqToWave-help.pd15
-rw-r--r--soundFreqToWave.pd25
-rw-r--r--soundWaveToFreq-help.pd8
-rw-r--r--soundWaveToFreq.pd9
-rw-r--r--spectrum~-help.pd31
-rw-r--r--spectrum~.pd62
-rw-r--r--speedToM-help.pd19
-rw-r--r--speedToM.pd18
-rw-r--r--splitExtension-help.pd14
-rw-r--r--splitExtension.pd8
-rw-r--r--tabwriteAuto-help.pd26
-rw-r--r--tabwriteAuto.pd43
-rw-r--r--tempo-help.pd34
-rw-r--r--tempo.pd197
-rw-r--r--theMatrix-help.pd78
-rw-r--r--theMatrix.pd248
-rw-r--r--timeToMs-help.pd32
-rw-r--r--timeToMs.pd28
-rw-r--r--tom.txt8
-rw-r--r--track.txt18
-rw-r--r--tracker4-help.pd57
-rw-r--r--tracker4.pd2154
-rw-r--r--transpose-help.pd13
-rw-r--r--transpose.pd38
-rw-r--r--valueChange-help.pd36
-rw-r--r--valueChange.pd34
-rw-r--r--vdirac~-help.pd33
-rw-r--r--vdirac~.pd23
-rw-r--r--vocoder~-help.pd16
-rw-r--r--vocoder~.pd154
-rw-r--r--vu~-help.pd19
-rw-r--r--vu~.pd110
-rw-r--r--wind~-help.pd14
-rw-r--r--wind~.pd74
424 files changed, 30165 insertions, 0 deletions
diff --git a/1-13LP.pd b/1-13LP.pd
new file mode 100644
index 0000000..48259d8
--- /dev/null
+++ b/1-13LP.pd
@@ -0,0 +1,694 @@
+#N canvas 184 399 401 173 10;
+#X obj 137 17 vsl 15 115 0 175 0 0 \$0_slider_s0 \$0_slider_r0 empty
+0 -8 0 8 -1 -228856 -228856 11400 0;
+#X obj -45 45 hradio 15 1 0 12 \$0_hr_2_s0 \$0_hr_2_r0 behavior 2 8
+1 9 -1 -1 -262140 0;
+#X obj -45 60 hradio 15 1 0 12 \$0_hr_3_s0 \$0_hr_3_r0 control~ 2 8
+1 9 -1 -1 -262140 0;
+#X obj -45 75 hradio 15 1 0 12 \$0_hr_4_s0 \$0_hr_4_r0 conversion 2
+8 1 9 -1 -1 -262140 0;
+#X obj -45 90 hradio 15 1 0 12 \$0_hr_5_s0 \$0_hr_5_r0 counter 2 8
+1 9 -1 -1 -262140 0;
+#X obj -45 105 hradio 15 1 0 12 \$0_hr_6_s0 \$0_hr_6_r0 data 2 8 1
+9 -1 -1 -262140 0;
+#X obj -45 120 hradio 15 1 0 12 \$0_hr_7_s0 \$0_hr_7_r0 examples 2
+8 1 9 -1 -1 -262140 0;
+#X obj 336 17 vsl 15 115 0 175 0 0 \$0_slider_s \$0_slider_r empty
+0 -8 0 8 -1 -228856 -1 11400 0;
+#X obj 154 15 hradio 15 1 0 12 \$0_hr_0_s \$0_hr_0_r empty 2 8 1 9
+-1 -1 -262140 0;
+#X obj 154 30 hradio 15 1 0 12 \$0_hr_1_s \$0_hr_1_r empty 2 8 1 9
+-1 -1 -262140 0;
+#X obj 154 45 hradio 15 1 0 12 \$0_hr_2_s \$0_hr_2_r empty 2 8 1 9
+-1 -1 -262140 0;
+#X obj 154 60 hradio 15 1 0 12 \$0_hr_3_s \$0_hr_3_r empty 2 8 1 9
+-1 -1 -262140 0;
+#X obj 154 75 hradio 15 1 0 12 \$0_hr_4_s \$0_hr_4_r empty 2 8 1 9
+-1 -1 -262140 0;
+#X obj 154 90 hradio 15 1 0 12 \$0_hr_5_s \$0_hr_5_r empty 2 8 1 9
+-1 -1 -262140 0;
+#X obj 154 105 hradio 15 1 0 12 \$0_hr_6_s \$0_hr_6_r empty 2 8 1 9
+-1 -1 -262140 0;
+#X obj 154 120 hradio 15 1 0 12 \$0_hr_7_s \$0_hr_7_r empty 2 8 1 9
+-1 -1 -262140 0;
+#N canvas 1058 43 723 396 ./browser 0;
+#N canvas 1069 45 887 645 coll 0;
+#X obj 23 -42 inlet;
+#X obj 247 -40 inlet;
+#X obj 141 321 zexy/demultiplex 0 1;
+#X obj 114 224 cyclone/coll;
+#C restore;
+#X obj 32 99 unpack f f;
+#X obj 32 53 zexy/demultiplex 0 1;
+#X obj 36 507 maxlib/remote;
+#X obj 36 451 list prepend \$0;
+#X msg 36 480 \$1_hr_\$2_r label \$3;
+#X msg 678 40 clear;
+#X msg 635 83 0;
+#X obj 573 148 value \$0count;
+#X obj 532 50 t f f;
+#X obj 450 134 list prepend;
+#X obj 452 176 list trim;
+#X msg 270 75 open;
+#X obj 36 426 list append;
+#X msg 70 357 symbol;
+#X obj 33 77 t a b;
+#X obj 133 371 cyclone/tosymbol;
+#X obj 653 4 t b b b;
+#X obj 405 -85 inlet add;
+#X obj 694 -43 inlet;
+#X obj 522 11 tof/increment;
+#X obj 565 377 zexy/symbol2list /;
+#X obj 565 397 list trim;
+#X obj 343 344 cyclone/tosymbol;
+#X obj 447 544 tof/openHelp;
+#X msg 630 471 1;
+#N canvas 0 0 988 652 pdmtl-help 0;
+#X obj 380 252 pack s s;
+#X obj 378 191 t a b;
+#X msg 283 312 \; pd open \$1 \$2;
+#X msg 296 230 \$1-help.pd;
+#X obj 379 277 t a a;
+#X obj 360 77 inlet;
+#X obj 357 388 print browser;
+#X msg 407 334 Trying to open \$1 in folder \$2;
+#X obj 427 225 tof/path current;
+#X obj 393 118 symbol;
+#X connect 0 0 4 0;
+#X connect 1 0 3 0;
+#X connect 1 1 8 0;
+#X connect 2 0 6 0;
+#X connect 3 0 0 0;
+#X connect 4 0 2 0;
+#X connect 4 1 7 0;
+#X connect 5 0 9 0;
+#X connect 7 0 6 0;
+#X connect 8 0 0 1;
+#X connect 9 0 1 0;
+#X restore 555 510 pd pdmtl-help;
+#X obj 447 505 spigot;
+#X obj 447 396 t a a;
+#X obj 555 443 t a b;
+#X msg 584 469 0;
+#X obj 565 420 route mtl;
+#X obj 393 -62 route bang;
+#X obj 367 10 zexy/symbol2list /;
+#X obj 334 -15 t s s;
+#X obj 442 -37 t s b;
+#X obj 104 251 unpack s s;
+#X obj 434 63 list split 1;
+#X obj 358 127 list;
+#X obj 382 31 route symbol;
+#X obj 377 59 t s s;
+#X text 178 251 long name \, short name;
+#X msg 381 256 sort -1 2 \, renumber;
+#X obj 796 -48 inlet tag;
+#X obj 564 248 sel examples;
+#X obj 370 368 zexy/demultiplex;
+#X msg 600 297 0;
+#N canvas 0 0 716 536 examples 0;
+#X obj 56 28 inlet;
+#X obj 225 262 pack s s;
+#X msg 128 322 \; pd open \$1 \$2;
+#X obj 224 287 t a a;
+#X obj 202 398 print browser;
+#X msg 252 344 Trying to open \$1 in folder \$2;
+#X obj 172 139 t s b;
+#X obj 272 235 tof/path current absolute;
+#X msg 280 202 symbol examples;
+#X connect 0 0 6 0;
+#X connect 1 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 0;
+#X connect 3 1 5 0;
+#X connect 5 0 4 0;
+#X connect 6 0 1 0;
+#X connect 6 1 8 0;
+#X connect 7 0 1 1;
+#X connect 8 0 7 0;
+#X restore 658 332 pd examples;
+#X msg 531 289 1;
+#X connect 0 0 5 0;
+#X connect 1 0 5 1;
+#X connect 1 0 2 1;
+#X connect 2 0 19 0;
+#X connect 2 1 26 0;
+#X connect 3 0 39 0;
+#X connect 4 0 16 0;
+#X connect 4 1 3 0;
+#X connect 5 0 18 0;
+#X connect 5 1 3 0;
+#X connect 7 0 8 0;
+#X connect 8 0 6 0;
+#X connect 9 0 3 0;
+#X connect 10 0 11 0;
+#X connect 12 0 13 1;
+#X connect 12 1 11 0;
+#X connect 13 0 14 0;
+#X connect 14 0 3 0;
+#X connect 15 0 3 0;
+#X connect 16 0 7 0;
+#X connect 17 0 16 1;
+#X connect 18 0 4 0;
+#X connect 18 1 17 0;
+#X connect 19 0 16 1;
+#X connect 20 0 23 1;
+#X connect 20 1 10 0;
+#X connect 20 2 9 0;
+#X connect 21 0 35 0;
+#X connect 22 0 20 0;
+#X connect 23 0 12 0;
+#X connect 24 0 25 0;
+#X connect 25 0 34 0;
+#X connect 26 0 48 0;
+#X connect 28 0 30 1;
+#X connect 30 0 27 0;
+#X connect 31 0 30 0;
+#X connect 31 1 24 0;
+#X connect 32 0 29 0;
+#X connect 32 1 33 0;
+#X connect 33 0 30 1;
+#X connect 34 0 32 0;
+#X connect 34 1 28 0;
+#X connect 35 0 45 0;
+#X connect 35 1 38 0;
+#X connect 36 0 42 0;
+#X connect 37 0 41 0;
+#X connect 37 1 36 0;
+#X connect 38 0 37 0;
+#X connect 38 1 23 0;
+#X connect 39 0 2 0;
+#X connect 40 1 41 1;
+#X connect 41 0 13 0;
+#X connect 42 0 43 0;
+#X connect 42 1 40 0;
+#X connect 43 0 41 0;
+#X connect 43 1 41 1;
+#X connect 45 0 3 0;
+#X connect 46 0 47 0;
+#X connect 47 0 51 0;
+#X connect 47 1 49 0;
+#X connect 48 0 31 0;
+#X connect 48 1 50 0;
+#X connect 49 0 48 1;
+#X connect 51 0 48 1;
+#X restore 259 269 pd coll;
+#N canvas 986 52 946 631 scroll 0;
+#X obj 147 75 int;
+#X msg 178 155 8;
+#X obj 125 389 pack;
+#X obj 151 310 + 0;
+#X obj 138 541 outlet;
+#X obj 100 275 t f f;
+#X obj 306 542 outlet;
+#X msg 232 359 0;
+#X obj 130 4 r \$0_slider_s;
+#X obj 235 201 value \$0off;
+#X obj 413 82 value \$0count;
+#X obj 134 27 t f b;
+#X msg 515 43 12;
+#X obj 421 142 max 0;
+#X obj 416 108 - 7;
+#X obj 137 50 expr (175-$f1)/175 * $f2;
+#X obj 98 250 tof/iterate;
+#X obj 580 261 f -1;
+#X text 616 271 previous;
+#X obj 614 472 list prepend \$0;
+#X msg 614 498 \; \$1_hr_\$2_r color -1 -1 \$3;
+#X obj 428 410 list append -1.67177e+07;
+#X obj 638 351 list append -1.67772e+07;
+#X obj 789 130 r \$0reset;
+#X obj 771 273 tof/iterate;
+#X msg 768 252 8;
+#X obj 410 179 r \$0query;
+#X obj 354 328 -;
+#X obj 473 296 t f f f b;
+#X obj 353 272 pack;
+#X msg 355 298 \$2 \$1;
+#X obj 412 205 +;
+#X obj 184 122 t b f b f f f;
+#X obj 582 303 maxlib/split 0 7;
+#X obj 427 375 maxlib/split 0 7;
+#X msg 698 233 -1;
+#X obj 410 228 t b f;
+#X obj 686 23 inlet;
+#X obj 712 174 t b b b;
+#X msg 652 195 -1;
+#X connect 0 0 32 0;
+#X connect 1 0 16 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 1;
+#X connect 5 0 2 0;
+#X connect 5 1 3 0;
+#X connect 7 0 6 0;
+#X connect 8 0 11 0;
+#X connect 10 0 14 0;
+#X connect 11 0 15 0;
+#X connect 11 1 10 0;
+#X connect 12 0 10 0;
+#X connect 13 0 15 1;
+#X connect 14 0 13 0;
+#X connect 15 0 0 0;
+#X connect 16 0 5 0;
+#X connect 17 0 33 0;
+#X connect 19 0 20 0;
+#X connect 21 0 19 0;
+#X connect 22 0 19 0;
+#X connect 23 0 38 0;
+#X connect 24 0 22 0;
+#X connect 25 0 24 0;
+#X connect 26 0 31 0;
+#X connect 27 0 28 0;
+#X connect 28 1 34 0;
+#X connect 28 2 17 1;
+#X connect 28 3 17 0;
+#X connect 29 0 30 0;
+#X connect 30 0 27 0;
+#X connect 31 0 36 0;
+#X connect 32 0 1 0;
+#X connect 32 1 3 1;
+#X connect 32 2 7 0;
+#X connect 32 3 9 0;
+#X connect 32 4 29 0;
+#X connect 32 5 31 1;
+#X connect 33 0 22 0;
+#X connect 34 0 21 0;
+#X connect 35 0 17 1;
+#X connect 36 0 29 0;
+#X connect 36 1 29 1;
+#X connect 37 0 38 0;
+#X connect 38 0 39 0;
+#X connect 38 1 35 0;
+#X connect 38 2 25 0;
+#X connect 39 0 29 1;
+#X restore 131 203 pd scroll;
+#N canvas 1173 127 770 510 query 0;
+#X obj 23 285 outlet;
+#X obj 107 310 outlet;
+#X obj 71 59 r \$0_hr_0_s;
+#X obj 153 61 r \$0_hr_1_s;
+#X obj 232 56 r \$0_hr_2_s;
+#X obj 304 60 r \$0_hr_3_s;
+#X obj 382 63 r \$0_hr_4_s;
+#X obj 460 62 r \$0_hr_5_s;
+#X obj 545 60 r \$0_hr_6_s;
+#X obj 630 63 r \$0_hr_7_s;
+#X msg 107 255 1;
+#X msg 77 112 0;
+#X msg 154 107 1;
+#X msg 221 112 2;
+#X msg 265 100 3;
+#X msg 315 101 4;
+#X msg 369 106 5;
+#X msg 415 106 6;
+#X msg 479 109 7;
+#X obj 33 229 +;
+#X obj 83 201 value \$0off;
+#X obj 211 242 s \$0query;
+#X obj 97 150 t f b b f;
+#X connect 2 0 11 0;
+#X connect 3 0 12 0;
+#X connect 4 0 13 0;
+#X connect 5 0 14 0;
+#X connect 6 0 15 0;
+#X connect 7 0 16 0;
+#X connect 8 0 17 0;
+#X connect 9 0 18 0;
+#X connect 10 0 1 0;
+#X connect 11 0 22 0;
+#X connect 12 0 22 0;
+#X connect 13 0 22 0;
+#X connect 14 0 22 0;
+#X connect 15 0 22 0;
+#X connect 16 0 22 0;
+#X connect 17 0 22 0;
+#X connect 18 0 22 0;
+#X connect 19 0 0 0;
+#X connect 20 0 19 1;
+#X connect 22 0 19 0;
+#X connect 22 1 20 0;
+#X connect 22 2 10 0;
+#X connect 22 3 21 0;
+#X restore 229 202 pd query;
+#N canvas 0 25 1018 673 readTags 0;
+#X msg 390 384 clear;
+#X obj 310 -25 inlet read;
+#X msg 388 405 open;
+#X obj 19 212 t b b b;
+#X msg 330 472 0;
+#X msg 291 465 1;
+#X obj 374 636 outlet patches;
+#X msg 196 382 merge \$1 \$2;
+#X msg 48 417 dump;
+#X obj 320 524 == 0;
+#X obj 100 623 outlet tags;
+#X obj 96 -14 inlet select_tag;
+#X obj 115 37 list trim;
+#X obj 463 269 tof/listUnfold;
+#X obj 511 124 zexy/msgfile;
+#X obj 508 154 list split 1;
+#X msg 475 84 read core.txt cr \, flush \, read love.txt cr \, flush
+;
+#X obj 499 227 list;
+#X obj 496 177 t b a;
+#X obj 503 349 list append;
+#X obj 405 -26 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X msg 327 206 sort -1 -1;
+#X obj 185 467 cyclone/coll;
+#C restore;
+#X obj 149 587 tof/listUnfold;
+#X obj 488 583 tof/listUnfold;
+#X obj 168 515 zexy/multiplex 0 1;
+#X obj 169 543 zexy/demultiplex 0 1;
+#X obj 96 207 t b a b;
+#X obj 473 542 t b a;
+#X obj 884 154 hcs/folder_list;
+#X obj 884 124 tof/path current absolute;
+#X msg 884 95 symbol examples/*;
+#X obj 884 190 hcs/split_path;
+#X obj 959 235 list prepend examples;
+#X obj 381 -2 t b b f b b;
+#X obj 502 49 sel 1 0;
+#X msg 618 120 read core.txt cr \, flush;
+#X connect 0 0 22 0;
+#X connect 1 0 34 0;
+#X connect 2 0 22 0;
+#X connect 3 0 8 0;
+#X connect 3 1 5 0;
+#X connect 4 0 9 0;
+#X connect 4 0 25 2;
+#X connect 5 0 9 0;
+#X connect 5 0 25 2;
+#X connect 7 0 22 0;
+#X connect 8 0 22 0;
+#X connect 9 0 26 1;
+#X connect 11 0 12 0;
+#X connect 12 0 27 0;
+#X connect 13 0 19 0;
+#X connect 14 0 15 0;
+#X connect 15 0 18 0;
+#X connect 15 1 17 1;
+#X connect 16 0 14 0;
+#X connect 17 0 13 0;
+#X connect 18 0 17 0;
+#X connect 18 1 19 1;
+#X connect 19 0 7 0;
+#X connect 20 0 34 0;
+#X connect 21 0 22 0;
+#X connect 22 0 25 0;
+#X connect 22 1 25 1;
+#X connect 23 0 10 0;
+#X connect 24 0 6 0;
+#X connect 25 0 26 0;
+#X connect 26 0 23 0;
+#X connect 26 1 28 0;
+#X connect 27 1 22 0;
+#X connect 27 2 4 0;
+#X connect 28 0 6 0;
+#X connect 28 1 24 0;
+#X connect 29 0 32 0;
+#X connect 30 0 29 0;
+#X connect 31 0 30 0;
+#X connect 32 1 33 0;
+#X connect 33 0 7 0;
+#X connect 34 0 3 0;
+#X connect 34 1 21 0;
+#X connect 34 2 35 0;
+#X connect 34 3 31 0;
+#X connect 34 4 0 0;
+#X connect 35 0 16 0;
+#X connect 35 1 36 0;
+#X connect 36 0 14 0;
+#X restore 321 63 pd readTags;
+#N canvas 178 252 827 449 coll 0;
+#X obj 23 -42 inlet;
+#X obj 247 -40 inlet;
+#X obj 129 177 zexy/demultiplex 0 1;
+#X obj 93 130 cyclone/coll;
+#C restore;
+#X obj 32 99 unpack f f;
+#X obj 32 53 zexy/demultiplex 0 1;
+#X obj 66 364 maxlib/remote;
+#X obj 55 293 list prepend \$0;
+#X obj 259 348 outlet;
+#X msg 678 40 clear;
+#X msg 635 83 0;
+#X obj 494 46 t f f;
+#X obj 441 101 list prepend;
+#X obj 411 142 list trim;
+#X msg 270 75 open;
+#X obj 52 265 list append;
+#X msg 66 197 symbol;
+#X obj 33 77 t a b;
+#X obj 129 211 cyclone/tosymbol;
+#X obj 653 4 t b b b;
+#X obj 459 -25 t a b;
+#X msg 555 -16 0;
+#X obj 435 -55 inlet add;
+#X obj 521 11 tof/increment;
+#X msg 61 327 \$1_hr_\$2_r0 label \$3;
+#X obj 573 148 value \$0count0;
+#X obj 670 -29 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 221 33 r \$0reset;
+#X msg 224 54 clear;
+#X obj 666 -49 r \$0reset;
+#X connect 0 0 5 0;
+#X connect 1 0 5 1;
+#X connect 1 0 2 1;
+#X connect 2 0 18 0;
+#X connect 2 1 8 0;
+#X connect 3 0 2 0;
+#X connect 4 0 15 0;
+#X connect 4 1 3 0;
+#X connect 5 0 17 0;
+#X connect 5 1 3 0;
+#X connect 7 0 24 0;
+#X connect 9 0 3 0;
+#X connect 10 0 25 0;
+#X connect 11 0 12 1;
+#X connect 11 1 25 0;
+#X connect 12 0 13 0;
+#X connect 13 0 3 0;
+#X connect 14 0 3 0;
+#X connect 15 0 7 0;
+#X connect 16 0 15 1;
+#X connect 17 0 4 0;
+#X connect 17 1 16 0;
+#X connect 18 0 15 1;
+#X connect 19 0 21 0;
+#X connect 19 1 10 0;
+#X connect 19 2 9 0;
+#X connect 20 0 12 0;
+#X connect 20 1 23 0;
+#X connect 21 0 23 1;
+#X connect 22 0 20 0;
+#X connect 23 0 11 0;
+#X connect 24 0 6 0;
+#X connect 26 0 19 0;
+#X connect 27 0 28 0;
+#X connect 28 0 3 0;
+#X connect 29 0 26 0;
+#X restore 240 54 pd coll;
+#N canvas 12 100 1010 606 scroll 0;
+#X obj 147 75 int;
+#X msg 178 155 8;
+#X obj 194 306 pack;
+#X obj 231 269 + 0;
+#X obj 174 521 outlet;
+#X obj 180 234 t f f;
+#X obj 342 522 outlet;
+#X msg 311 319 0;
+#X obj 134 27 t f b;
+#X msg 515 43 12;
+#X obj 421 142 max 0;
+#X obj 416 108 - 7;
+#X obj 137 50 expr (175-$f1)/175 * $f2;
+#X obj 130 4 r \$0_slider_s0;
+#X obj 413 82 value \$0count0;
+#X obj 307 285 value \$0off0;
+#X obj 178 209 tof/iterate;
+#X obj 651 352 f -1;
+#X text 687 362 previous;
+#X obj 587 508 list prepend \$0;
+#X obj 513 444 list append -1.67177e+07;
+#X obj 734 469 list append -1.67772e+07;
+#X obj 874 164 r \$0reset;
+#X obj 856 307 tof/iterate;
+#X msg 853 286 8;
+#X obj 547 278 -;
+#X obj 587 306 t f f f b;
+#X obj 549 216 pack;
+#X msg 548 248 \$2 \$1;
+#X obj 573 150 +;
+#X obj 653 394 maxlib/split 0 7;
+#X obj 512 409 maxlib/split 0 7;
+#X msg 783 267 -1;
+#X obj 571 173 t b f;
+#X obj 829 41 inlet;
+#X obj 786 184 t b b b;
+#X msg 737 229 -1;
+#X obj 571 124 r \$0query0;
+#X obj 183 122 t b f b f f f;
+#X msg 588 534 \; \$1_hr_\$2_r0 color -1 -1 \$3;
+#X connect 0 0 38 0;
+#X connect 1 0 16 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 1;
+#X connect 5 0 2 0;
+#X connect 5 1 3 0;
+#X connect 7 0 6 0;
+#X connect 8 0 12 0;
+#X connect 8 1 14 0;
+#X connect 9 0 14 0;
+#X connect 10 0 12 1;
+#X connect 11 0 10 0;
+#X connect 12 0 0 0;
+#X connect 13 0 8 0;
+#X connect 14 0 11 0;
+#X connect 16 0 5 0;
+#X connect 17 0 30 0;
+#X connect 19 0 39 0;
+#X connect 20 0 19 0;
+#X connect 21 0 19 0;
+#X connect 22 0 35 0;
+#X connect 23 0 21 0;
+#X connect 24 0 23 0;
+#X connect 25 0 26 0;
+#X connect 26 1 31 0;
+#X connect 26 2 17 1;
+#X connect 26 3 17 0;
+#X connect 27 0 28 0;
+#X connect 28 0 25 0;
+#X connect 29 0 33 0;
+#X connect 30 0 21 0;
+#X connect 31 0 20 0;
+#X connect 32 0 17 1;
+#X connect 33 0 27 0;
+#X connect 33 1 27 1;
+#X connect 34 0 35 0;
+#X connect 35 0 36 0;
+#X connect 35 1 32 0;
+#X connect 35 2 24 0;
+#X connect 36 0 27 1;
+#X connect 37 0 29 0;
+#X connect 38 0 1 0;
+#X connect 38 1 3 1;
+#X connect 38 2 7 0;
+#X connect 38 3 15 0;
+#X connect 38 4 27 0;
+#X connect 38 5 29 1;
+#X restore 196 -33 pd scroll;
+#N canvas 277 192 744 361 query 0;
+#X obj 39 239 outlet;
+#X obj 235 243 outlet;
+#X msg 241 200 1;
+#X msg 77 112 0;
+#X msg 154 107 1;
+#X msg 221 112 2;
+#X msg 265 100 3;
+#X msg 315 101 4;
+#X msg 369 106 5;
+#X msg 415 106 6;
+#X msg 479 109 7;
+#X obj 96 211 +;
+#X obj 116 180 value \$0off0;
+#X obj 71 59 r \$0_hr_0_s0;
+#X obj 153 61 r \$0_hr_1_s0;
+#X obj 232 56 r \$0_hr_2_s0;
+#X obj 304 60 r \$0_hr_3_s0;
+#X obj 382 63 r \$0_hr_4_s0;
+#X obj 460 62 r \$0_hr_5_s0;
+#X obj 545 60 r \$0_hr_6_s0;
+#X obj 630 63 r \$0_hr_7_s0;
+#X obj 324 193 s \$0query0;
+#X obj 97 150 t f b b f;
+#X connect 2 0 1 0;
+#X connect 3 0 22 0;
+#X connect 4 0 22 0;
+#X connect 5 0 22 0;
+#X connect 6 0 22 0;
+#X connect 7 0 22 0;
+#X connect 8 0 22 0;
+#X connect 9 0 22 0;
+#X connect 10 0 22 0;
+#X connect 11 0 0 0;
+#X connect 12 0 11 1;
+#X connect 13 0 3 0;
+#X connect 14 0 4 0;
+#X connect 15 0 5 0;
+#X connect 16 0 6 0;
+#X connect 17 0 7 0;
+#X connect 18 0 8 0;
+#X connect 19 0 9 0;
+#X connect 20 0 10 0;
+#X connect 22 0 11 0;
+#X connect 22 1 12 0;
+#X connect 22 2 2 0;
+#X connect 22 3 21 0;
+#X restore 263 -36 pd query;
+#X obj 399 -64 loadbang;
+#X msg 437 154 175;
+#X msg 256 115 175;
+#X msg 459 43 175;
+#X obj 461 65 s \$0_slider_r;
+#X obj 405 182 s \$0_slider_r0;
+#X obj 587 293 outlet;
+#X obj 490 31 s \$0reset;
+#X text 186 53 TAGS->;
+#X text 160 265 ABSTRACTIONS->;
+#X obj 254 82 t b a b a;
+#X obj 473 -69 r \$0love;
+#X obj 605 -25 loadbang;
+#X msg 605 2 set 1;
+#X obj 604 33 s \$0lover;
+#X obj 412 -34 f 1;
+#X obj 411 -9 t b f b b;
+#X obj 258 137 s \$0_slider_r;
+#X obj 435 97 t b b b;
+#X connect 1 0 0 0;
+#X connect 1 1 0 1;
+#X connect 2 0 0 0;
+#X connect 2 1 0 1;
+#X connect 3 0 4 2;
+#X connect 3 1 0 2;
+#X connect 4 0 17 0;
+#X connect 5 0 4 0;
+#X connect 5 1 4 1;
+#X connect 6 0 4 0;
+#X connect 6 1 4 1;
+#X connect 7 0 22 0;
+#X connect 8 0 12 0;
+#X connect 9 0 24 0;
+#X connect 10 0 11 0;
+#X connect 17 0 9 0;
+#X connect 17 1 3 0;
+#X connect 17 2 0 3;
+#X connect 17 2 1 0;
+#X connect 17 3 0 4;
+#X connect 18 0 22 0;
+#X connect 19 0 20 0;
+#X connect 20 0 21 0;
+#X connect 22 0 23 0;
+#X connect 23 0 25 0;
+#X connect 23 1 3 1;
+#X connect 23 2 10 0;
+#X connect 23 3 0 3;
+#X connect 23 3 14 0;
+#X connect 25 0 8 0;
+#X connect 25 1 5 0;
+#X connect 25 2 13 0;
+#X restore 229 -9 pd ./browser;
+#X obj -45 15 hradio 15 1 0 12 \$0_hr_0_s0 \$0_hr_0_r0 2d 2 8 1 9 -1
+-1 -262140 0;
+#X obj -45 31 hradio 15 1 0 12 \$0_hr_1_s0 \$0_hr_1_r0 3d 2 8 1 9 -1
+-1 -262140 0;
+#X obj -45 -9 cnv 15 198 22 empty empty TAG 1 12 1 12 -16645 -228856
+0;
+#X obj 154 -9 cnv 15 197 22 empty empty CLASS/ABSTRACTION 0 12 1 12
+-16645 -228856 0;
+#X obj -45 137 cnv 15 396 20 empty empty empty 20 12 0 14 -16645 -258401
+0;
+#X obj -41 141 tgl 11 0 \$0love \$0lover with:love 17 6 0 8 -162280
+-262144 -258401 1 1;
diff --git a/2dAngle-help.pd b/2dAngle-help.pd
new file mode 100644
index 0000000..9047adf
--- /dev/null
+++ b/2dAngle-help.pd
@@ -0,0 +1,87 @@
+#N canvas 105 259 694 498 10;
+#X declare -lib Gem;
+#X floatatom 21 214 5 0 0 0 - - -;
+#X msg 21 109 0 1;
+#X msg 108 108 9 5;
+#X msg 139 108 1 0;
+#X msg 55 109 -2 6;
+#X text 18 86 Target point.;
+#X text 106 86 Reference point.;
+#X text 68 212 Angle in degrees.;
+#X msg 171 108 0 -1;
+#X text 250 85 -- GEM EXAMPLE --;
+#X obj 257 342 circle 0.3;
+#X obj 257 314 colorRGB 1 0 0;
+#X obj 313 233 cos;
+#X obj 368 234 sin;
+#X floatatom 313 255 5 0 0 0 - - -;
+#X floatatom 368 256 5 0 0 0 - - -;
+#X obj 367 206 t f f;
+#X obj 417 284 pack;
+#X floatatom 417 355 5 0 0 0 - - -;
+#X obj 366 354 gemhead;
+#X obj 366 454 curve 2;
+#X msg 385 429 0 0 0;
+#X msg 426 428 1 0 0;
+#X obj 366 380 rotateXYZ;
+#X obj 367 134 metro 1000;
+#X obj 367 112 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X obj 367 91 loadbang;
+#X obj 385 401 loadbang;
+#X text 409 256 x y position of red circle.;
+#X text 426 331 angle between 0 0 and x y of circle;
+#X msg 510 206 3;
+#X msg 510 182 4;
+#X msg 509 159 6;
+#X msg 511 228 0.1;
+#X msg 253 108 1;
+#X msg 285 108 0;
+#X obj 12 10 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 17 52 tags: 2d;
+#X text 17 13 Description: Returns the angle in degrees between two
+2d points.;
+#X obj 253 134 mtl/gemsWin;
+#X obj 21 171 mtl/2dAngle;
+#X obj 417 307 mtl/2dAngle;
+#X obj 367 159 mtl/randomFloat 0 6;
+#X obj 612 11 import Gem;
+#X obj 257 254 gemhead;
+#X obj 257 287 translateXYZ 0 0 0;
+#X connect 1 0 40 0;
+#X connect 2 0 40 1;
+#X connect 3 0 40 1;
+#X connect 4 0 40 0;
+#X connect 8 0 40 1;
+#X connect 11 0 10 0;
+#X connect 12 0 14 0;
+#X connect 13 0 15 0;
+#X connect 14 0 17 0;
+#X connect 14 0 45 1;
+#X connect 15 0 17 1;
+#X connect 15 0 45 2;
+#X connect 16 0 12 0;
+#X connect 16 1 13 0;
+#X connect 17 0 41 0;
+#X connect 18 0 23 3;
+#X connect 19 0 23 0;
+#X connect 21 0 20 1;
+#X connect 22 0 20 2;
+#X connect 23 0 20 0;
+#X connect 24 0 42 0;
+#X connect 25 0 24 0;
+#X connect 26 0 25 0;
+#X connect 27 0 21 0;
+#X connect 27 0 22 0;
+#X connect 30 0 16 0;
+#X connect 31 0 16 0;
+#X connect 32 0 16 0;
+#X connect 33 0 16 0;
+#X connect 34 0 39 0;
+#X connect 35 0 39 0;
+#X connect 40 0 0 0;
+#X connect 41 0 18 0;
+#X connect 42 0 16 0;
+#X connect 44 0 45 0;
+#X connect 45 0 11 0;
diff --git a/2dAngle.pd b/2dAngle.pd
new file mode 100644
index 0000000..f0faaa9
--- /dev/null
+++ b/2dAngle.pd
@@ -0,0 +1,93 @@
+#N canvas 232 25 1012 720 10;
+#X obj 284 457 atan;
+#X obj 165 182 inlet;
+#X obj 316 177 inlet;
+#X text 203 184 x y;
+#X obj 178 211 unpack;
+#X obj 294 208 unpack;
+#X obj 208 253 - \$1;
+#X obj 287 252 - \$2;
+#X obj 281 436 /;
+#X obj 288 411 swap;
+#X obj 364 387 < 0;
+#X obj 275 366 t f f;
+#X obj 427 558 *;
+#X obj 480 571 +;
+#X obj 420 403 pack;
+#X obj 372 354 t f f;
+#X obj 422 373 > 0;
+#X obj 449 427 route 1;
+#X obj 448 455 sel 0 1;
+#X obj 427 598 *;
+#X obj 238 278 pack;
+#X obj 292 334 unpack;
+#X obj 238 302 route 0;
+#X obj 168 343 moses 0;
+#X obj 348 679 outlet;
+#X obj 378 639 * 57.2958;
+#X obj 202 407 / 2;
+#X obj 104 420 / -2;
+#X obj 567 439 t b b;
+#X obj 383 476 t b b;
+#X msg 560 462 1;
+#X msg 605 461 0;
+#X msg 379 499 -1;
+#X msg 526 512 1;
+#X obj 516 491 t b b;
+#X obj 104 392 hcs/pi;
+#X obj 202 385 hcs/pi;
+#X obj 438 481 hcs/pi;
+#X obj 628 491 hcs/pi;
+#X connect 0 0 12 0;
+#X connect 1 0 4 0;
+#X connect 2 0 5 0;
+#X connect 4 0 6 0;
+#X connect 4 1 7 0;
+#X connect 5 0 6 1;
+#X connect 5 1 7 1;
+#X connect 6 0 20 0;
+#X connect 7 0 20 1;
+#X connect 8 0 0 0;
+#X connect 9 0 8 0;
+#X connect 9 1 8 1;
+#X connect 10 0 14 0;
+#X connect 11 0 9 0;
+#X connect 11 1 10 0;
+#X connect 12 0 13 0;
+#X connect 13 0 19 0;
+#X connect 14 0 17 0;
+#X connect 15 0 9 1;
+#X connect 15 1 16 0;
+#X connect 16 0 14 1;
+#X connect 17 0 18 0;
+#X connect 17 1 28 0;
+#X connect 18 0 29 0;
+#X connect 18 1 34 0;
+#X connect 19 0 25 0;
+#X connect 20 0 22 0;
+#X connect 21 0 11 0;
+#X connect 21 1 15 0;
+#X connect 22 0 23 0;
+#X connect 22 1 21 0;
+#X connect 23 0 35 0;
+#X connect 23 1 36 0;
+#X connect 25 0 24 0;
+#X connect 26 0 25 0;
+#X connect 27 0 25 0;
+#X connect 28 0 30 0;
+#X connect 28 1 31 0;
+#X connect 29 0 32 0;
+#X connect 29 1 37 0;
+#X connect 30 0 12 1;
+#X connect 30 0 19 1;
+#X connect 31 0 13 1;
+#X connect 32 0 12 1;
+#X connect 32 0 19 1;
+#X connect 33 0 12 1;
+#X connect 33 0 19 1;
+#X connect 34 0 33 0;
+#X connect 34 1 38 0;
+#X connect 35 0 27 0;
+#X connect 36 0 26 0;
+#X connect 37 0 13 1;
+#X connect 38 0 13 1;
diff --git a/2dAngleLine-help.pd b/2dAngleLine-help.pd
new file mode 100644
index 0000000..03c88d3
--- /dev/null
+++ b/2dAngleLine-help.pd
@@ -0,0 +1,44 @@
+#N canvas 524 238 530 360 10;
+#X declare -lib Gem;
+#X text 274 50 -- GEM EXAMPLE --;
+#X text 18 117 Inlet_1: The target angle.;
+#X text 18 157 Inlet_3: Set the current angle.;
+#X text 18 137 Inlet_2: Set the ramp time.;
+#X text 18 186 Argument_1: The ramp time.;
+#X text 18 204 Argument_2: The initial angle.;
+#X msg 238 90 1;
+#X obj 239 146 gemhead;
+#X obj 239 194 translateXYZ;
+#X obj 262 168 unpack;
+#X obj 239 286 rectangle 0.1 1;
+#X obj 345 136 t a a a;
+#X obj 239 235 rotateXYZ;
+#X obj 346 208 + 90;
+#X obj 239 262 translateXYZ 0 1 0;
+#X msg 268 90 0;
+#X obj 12 11 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 17 53 tags: 2d;
+#X text 18 13 Description: A ramp between two angles that takes the
+quickest route.;
+#X obj 346 158 mtl/2dAngle;
+#X obj 346 182 mtl/2dAngleLine 100;
+#X obj 238 114 mtl/gemsWin;
+#X obj 345 113 mtl/gemsMouse;
+#X obj 21 92 mtl/2dAngleLine 5;
+#X obj 442 15 import Gem;
+#X connect 6 0 21 0;
+#X connect 7 0 8 0;
+#X connect 8 0 12 0;
+#X connect 9 0 8 1;
+#X connect 9 1 8 2;
+#X connect 11 0 19 1;
+#X connect 11 1 19 0;
+#X connect 11 2 9 0;
+#X connect 12 0 14 0;
+#X connect 13 0 12 3;
+#X connect 14 0 10 0;
+#X connect 15 0 21 0;
+#X connect 19 0 20 0;
+#X connect 20 0 13 0;
+#X connect 22 0 11 0;
diff --git a/2dAngleLine.pd b/2dAngleLine.pd
new file mode 100644
index 0000000..239715d
--- /dev/null
+++ b/2dAngleLine.pd
@@ -0,0 +1,72 @@
+#N canvas 362 123 799 765 10;
+#X obj 371 32 inlet current_angle;
+#X obj 25 10 inlet target_angle;
+#X obj 314 627 line;
+#X obj 229 667 t f f;
+#X obj 228 713 outlet;
+#X obj 247 20 inlet time;
+#X obj 474 79 loadbang;
+#X obj 394 110 f \$2;
+#X obj 456 351 moses 0;
+#X obj 537 397 moses 180;
+#X obj 430 388 moses -180;
+#X msg 488 423 0;
+#X obj 98 253 -;
+#X obj 25 67 moses 0;
+#X obj 178 125 mod 360;
+#X obj 77 306 f 0;
+#X obj 126 212 f 0;
+#X obj 78 181 t b f b f;
+#X obj 45 156 t f f;
+#X msg 430 412 1;
+#X msg 595 427 2;
+#X obj 542 508 expr 360+$f1;
+#X obj 443 504 expr $f1-360;
+#X msg 385 165 \$1 0;
+#X obj 441 543 t f f;
+#X obj 289 528 pack f \$1;
+#X msg 277 569 \$1 \$2;
+#X msg 431 569 \$1 0;
+#X obj 8 106 expr (($f1*(-1))%360)*(-1);
+#X obj 401 462 zexy/demultiplex 0 1 2;
+#X connect 0 0 7 0;
+#X connect 1 0 13 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 1 15 1;
+#X connect 3 1 16 1;
+#X connect 5 0 25 1;
+#X connect 6 0 7 0;
+#X connect 7 0 23 0;
+#X connect 8 0 10 0;
+#X connect 8 1 9 0;
+#X connect 9 0 11 0;
+#X connect 9 1 20 0;
+#X connect 10 0 19 0;
+#X connect 10 1 11 0;
+#X connect 11 0 29 1;
+#X connect 12 0 8 0;
+#X connect 13 0 28 0;
+#X connect 13 1 14 0;
+#X connect 14 0 18 0;
+#X connect 15 0 29 0;
+#X connect 16 0 12 1;
+#X connect 17 0 15 0;
+#X connect 17 1 12 0;
+#X connect 17 2 16 0;
+#X connect 18 0 25 0;
+#X connect 18 1 17 0;
+#X connect 19 0 29 1;
+#X connect 20 0 29 1;
+#X connect 21 0 24 0;
+#X connect 22 0 24 0;
+#X connect 23 0 2 0;
+#X connect 24 0 27 0;
+#X connect 24 1 15 1;
+#X connect 24 1 16 1;
+#X connect 25 0 26 0;
+#X connect 26 0 2 0;
+#X connect 27 0 2 0;
+#X connect 28 0 18 0;
+#X connect 29 1 22 0;
+#X connect 29 2 21 0;
diff --git a/2dDistance-help.pd b/2dDistance-help.pd
new file mode 100644
index 0000000..06c1f73
--- /dev/null
+++ b/2dDistance-help.pd
@@ -0,0 +1,91 @@
+#N canvas 488 174 619 331 10;
+#X floatatom 211 241 5 0 0 0 - - -;
+#X obj 31 122 cnv 15 127 127 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 39 130 cnv 15 15 15 empty c1 empty 20 12 0 14 -258699 -66577
+0;
+#X obj 102 213 cnv 15 15 15 empty c2 empty 20 12 0 14 -62784 -66577
+0;
+#X obj 13 120 vsl 15 128 0 112 0 1 rv empty empty 0 -8 0 8 -258699
+-1 -1 10400 1;
+#X obj 31 103 hsl 128 15 0 112 0 1 rh empty empty -2 -6 0 8 -258699
+-1 -1 4500 1;
+#X obj 162 121 vsl 15 128 0 112 0 1 bv empty empty 0 -8 0 8 -62784
+-1 -1 1000 1;
+#X obj 31 252 hsl 128 15 0 112 0 1 bh empty empty -2 -6 0 8 -62784
+-1 -1 11600 1;
+#N canvas 0 22 482 332 graphics.guts 0;
+#X obj 100 157 pack;
+#X obj 84 130 t b f;
+#X msg 79 186 \; c1 pos \$1 \$2;
+#X msg 246 185 \; c2 pos \$1 \$2;
+#X obj 248 166 pack;
+#X obj 54 121 -;
+#X obj 241 80 -;
+#X msg 55 99 112 \$1;
+#X msg 240 61 112 \$1;
+#X obj 242 137 t b b f;
+#X obj 190 133 t b f;
+#X obj 192 114 r bh;
+#X obj 264 38 r bv;
+#X obj 122 116 r rh;
+#X obj 58 46 r rv;
+#X obj 94 231 s red_position;
+#X obj 242 236 s blue_position;
+#X obj 241 105 + 100;
+#X obj 36 148 + 100;
+#X connect 0 0 2 0;
+#X connect 0 0 15 0;
+#X connect 1 0 0 0;
+#X connect 1 1 0 1;
+#X connect 4 0 3 0;
+#X connect 4 0 16 0;
+#X connect 5 0 18 0;
+#X connect 6 0 17 0;
+#X connect 7 0 5 0;
+#X connect 8 0 6 0;
+#X connect 9 0 0 0;
+#X connect 9 1 4 0;
+#X connect 9 2 4 1;
+#X connect 10 0 0 0;
+#X connect 10 1 4 0;
+#X connect 11 0 10 0;
+#X connect 12 0 8 0;
+#X connect 13 0 0 0;
+#X connect 14 0 7 0;
+#X connect 17 0 9 0;
+#X connect 18 0 1 0;
+#X restore 46 276 pd graphics.guts;
+#X obj 211 120 r red_position;
+#X obj 338 122 r blue_position;
+#X obj 338 143 unpack;
+#X obj 338 183 pack;
+#X floatatom 338 164 5 0 0 0 - - -;
+#X floatatom 375 164 5 0 0 0 - - -;
+#X obj 211 141 unpack;
+#X obj 211 181 pack;
+#X floatatom 211 162 5 0 0 0 - - -;
+#X floatatom 249 162 5 0 0 0 - - -;
+#X text 10 79 Drag the sliders to move the squares.;
+#X text 314 207 Both inlets expect a pair of x y coordinates.;
+#X text 245 242 Distance in pixels between the blue and red square.
+;
+#X obj 211 207 mtl/2dDistance;
+#X obj 11 7 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 16 49 tags: 2d;
+#X text 16 11 Description: Calculates the 2d distance between 2 points.
+;
+#X connect 9 0 15 0;
+#X connect 10 0 11 0;
+#X connect 11 0 13 0;
+#X connect 11 1 14 0;
+#X connect 12 0 22 1;
+#X connect 13 0 12 0;
+#X connect 14 0 12 1;
+#X connect 15 0 17 0;
+#X connect 15 1 18 0;
+#X connect 16 0 22 0;
+#X connect 17 0 16 0;
+#X connect 18 0 16 1;
+#X connect 22 0 0 0;
diff --git a/2dDistance.pd b/2dDistance.pd
new file mode 100644
index 0000000..2a94c50
--- /dev/null
+++ b/2dDistance.pd
@@ -0,0 +1,32 @@
+#N canvas 0 22 486 336 10;
+#X obj 82 25 inlet;
+#X obj 216 26 inlet;
+#X text 120 27 x y;
+#X text 253 27 x y;
+#X obj 95 54 unpack;
+#X obj 211 51 unpack;
+#X obj 182 192 +;
+#X obj 183 226 sqrt;
+#X obj 186 264 outlet;
+#X obj 124 93 - \$1;
+#X obj 212 89 - \$2;
+#X obj 123 149 *;
+#X obj 221 149 *;
+#X obj 123 119 t f f;
+#X obj 215 112 t f f;
+#X connect 0 0 4 0;
+#X connect 1 0 5 0;
+#X connect 4 0 9 0;
+#X connect 4 1 10 0;
+#X connect 5 0 9 1;
+#X connect 5 1 10 1;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 9 0 13 0;
+#X connect 10 0 14 0;
+#X connect 11 0 6 0;
+#X connect 12 0 6 1;
+#X connect 13 0 11 0;
+#X connect 13 1 11 1;
+#X connect 14 0 12 0;
+#X connect 14 1 12 1;
diff --git a/2dRatio-help.pd b/2dRatio-help.pd
new file mode 100644
index 0000000..b0ed9fe
--- /dev/null
+++ b/2dRatio-help.pd
@@ -0,0 +1,19 @@
+#N canvas 674 84 439 246 10;
+#X msg 22 89 640 480;
+#X msg 78 89 320 240;
+#X msg 134 89 256 256;
+#X obj 22 160 print;
+#X obj 75 162 /;
+#X floatatom 75 191 5 0 0 0 - - -;
+#X obj 22 127 mtl/2dRatio;
+#X obj 14 12 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 19 54 tags: 2d;
+#X text 20 14 Description: Returns the ratio of two values between
+each other.;
+#X connect 0 0 6 0;
+#X connect 1 0 6 0;
+#X connect 2 0 6 0;
+#X connect 4 0 5 0;
+#X connect 6 0 3 0;
+#X connect 6 0 4 0;
diff --git a/2dRatio.pd b/2dRatio.pd
new file mode 100644
index 0000000..aed8aa0
--- /dev/null
+++ b/2dRatio.pd
@@ -0,0 +1,34 @@
+#N canvas 719 239 619 400 10;
+#X obj 155 194 /;
+#X obj 197 196 /;
+#X obj 155 76 inlet;
+#X obj 155 243 outlet;
+#X obj 155 99 t l l;
+#X obj 155 133 unpack;
+#X obj 155 222 pack;
+#X obj 237 242 outlet;
+#X obj 237 195 /;
+#X obj 263 195 /;
+#X obj 155 160 t f f;
+#X obj 207 160 t f f;
+#X obj 237 220 pack;
+#X obj 252 132 zexy/minmax;
+#X connect 0 0 6 0;
+#X connect 1 0 6 1;
+#X connect 2 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 13 0;
+#X connect 5 0 10 0;
+#X connect 5 1 11 0;
+#X connect 6 0 3 0;
+#X connect 8 0 12 0;
+#X connect 9 0 12 1;
+#X connect 10 0 0 0;
+#X connect 10 1 8 0;
+#X connect 11 0 1 0;
+#X connect 11 1 9 0;
+#X connect 12 0 7 0;
+#X connect 13 0 8 1;
+#X connect 13 0 9 1;
+#X connect 13 1 0 1;
+#X connect 13 1 1 1;
diff --git a/3dAdd-help.pd b/3dAdd-help.pd
new file mode 100644
index 0000000..6e3718c
--- /dev/null
+++ b/3dAdd-help.pd
@@ -0,0 +1,26 @@
+#N canvas 129 119 410 258 10;
+#X msg 47 107 2 1 0;
+#X msg 120 108 3 4 5;
+#X obj 21 168 unpack f f f;
+#X floatatom 21 191 5 0 0 0 - - -;
+#X floatatom 60 191 5 0 0 0 - - -;
+#X floatatom 100 192 5 0 0 0 - - -;
+#X msg 21 84 1 2 3;
+#X text 171 103 args: <X> <Y> <Z>;
+#X text 169 133 1st inlet: accepts list of 3 floats;
+#X text 169 153 2nd inlet: accepts list of 3 floats;
+#X text 171 193 outlet: list of 3 floats;
+#X obj 21 134 mtl/3dAdd 0 1 2;
+#X obj 11 9 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 269 50 Version: 2007-12-09;
+#X text 18 10 Description: Adds two vectors;
+#X text 102 51 Author: Roman Haefeli;
+#X text 16 51 tags: 3d;
+#X connect 0 0 11 0;
+#X connect 1 0 11 1;
+#X connect 2 0 3 0;
+#X connect 2 1 4 0;
+#X connect 2 2 5 0;
+#X connect 6 0 11 0;
+#X connect 11 0 2 0;
diff --git a/3dAdd.pd b/3dAdd.pd
new file mode 100644
index 0000000..d267632
--- /dev/null
+++ b/3dAdd.pd
@@ -0,0 +1,32 @@
+#N canvas 78 84 498 265 10;
+#X obj 35 48 unpack f f f;
+#X obj 35 153 pack f f f;
+#X text 211 153 V =;
+#X obj 168 49 unpack f f f;
+#X text 128 10 A;
+#X text 263 12 B;
+#X text 135 181 V;
+#X obj 35 9 inlet vector;
+#X obj 168 12 inlet vector;
+#X obj 35 178 outlet vector;
+#X text 245 137 | Ax+Bx |;
+#X text 245 153 | Ay+By |;
+#X text 245 169 | Ay+By |;
+#X text 318 154 = A + B;
+#X obj 35 121 + \$1;
+#X obj 74 122 + \$2;
+#X obj 114 122 + \$3;
+#X text 292 225 Version: 2007-12-09;
+#X text 293 244 Author: Roman Haefeli;
+#X connect 0 0 14 0;
+#X connect 0 1 15 0;
+#X connect 0 2 16 0;
+#X connect 1 0 9 0;
+#X connect 3 0 14 1;
+#X connect 3 1 15 1;
+#X connect 3 2 16 1;
+#X connect 7 0 0 0;
+#X connect 8 0 3 0;
+#X connect 14 0 1 0;
+#X connect 15 0 1 1;
+#X connect 16 0 1 2;
diff --git a/3dAngle-help.pd b/3dAngle-help.pd
new file mode 100644
index 0000000..d1086f1
--- /dev/null
+++ b/3dAngle-help.pd
@@ -0,0 +1,27 @@
+#N canvas 183 120 451 274 10;
+#X msg 135 93 1 0 0;
+#X text 205 94 args: <X> <Y> <Z>;
+#X text 203 124 1st inlet: accepts list of 3 floats;
+#X text 203 144 2nd inlet: accepts list of 3 floats;
+#X floatatom 24 222 5 0 0 0 - - -;
+#X msg 50 97 0 -1 0;
+#X text 202 184 outlet: float <angle in radian format>;
+#X msg 67 117 -1 0 0;
+#X msg 24 78 1 1 0;
+#X msg 141 115 0 1 0;
+#X obj 24 139 mtl/3dAngle 0 1 0;
+#X obj 14 7 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 19 49 tags: 3d;
+#X text 116 49 Author: Roman Haefeli;
+#X text 269 49 Version: 2007-12-09;
+#X text 20 9 Description: Computes the angle between both incoming
+vectors.;
+#X obj 24 184 mtl/radianToDegree;
+#X connect 0 0 10 1;
+#X connect 5 0 10 0;
+#X connect 7 0 10 0;
+#X connect 8 0 10 0;
+#X connect 9 0 10 1;
+#X connect 10 0 16 0;
+#X connect 16 0 4 0;
diff --git a/3dAngle.pd b/3dAngle.pd
new file mode 100644
index 0000000..3b6866e
--- /dev/null
+++ b/3dAngle.pd
@@ -0,0 +1,46 @@
+#N canvas 110 65 471 385 10;
+#X obj 23 228 expr acos($f1);
+#X obj 23 21 inlet vector;
+#X obj 234 22 inlet vector;
+#X obj 23 170 /;
+#X obj 23 200 /;
+#X obj 23 273 outlet float;
+#X text 118 23 A;
+#X text 328 24 B;
+#X text 257 195 .;
+#X text 151 198 rho = arccos((A;
+#X text 266 198 B)/(|A|*|B|));
+#X text 118 273 rho;
+#X text 25 308 computes the angle (radian) between both incoming vectors
+;
+#X obj 352 27 loadbang;
+#X obj 352 50 t b b b;
+#X obj 352 73 \$1;
+#X obj 384 73 \$2;
+#X obj 417 74 \$3;
+#X obj 352 96 pack f f f;
+#X text 291 344 Version: 2007-12-09;
+#X text 292 363 Author: Roman Haefeli;
+#X obj 23 50 t a a;
+#X obj 161 119 ./3dMagnitude;
+#X obj 234 150 ./3dMagnitude;
+#X obj 23 119 ./3dDot \$1 \$2 \$3;
+#X connect 0 0 5 0;
+#X connect 1 0 21 0;
+#X connect 2 0 23 0;
+#X connect 2 0 24 1;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 14 1 16 0;
+#X connect 14 2 17 0;
+#X connect 15 0 18 0;
+#X connect 16 0 18 1;
+#X connect 17 0 18 2;
+#X connect 18 0 23 0;
+#X connect 21 0 24 0;
+#X connect 21 1 22 0;
+#X connect 22 0 3 1;
+#X connect 23 0 4 1;
+#X connect 24 0 3 0;
diff --git a/3dCross-help.pd b/3dCross-help.pd
new file mode 100644
index 0000000..d942f61
--- /dev/null
+++ b/3dCross-help.pd
@@ -0,0 +1,33 @@
+#N canvas 202 166 447 279 10;
+#X obj 24 187 unpack f f f;
+#X floatatom 24 212 5 0 0 0 - - -;
+#X floatatom 63 212 5 0 0 0 - - -;
+#X floatatom 103 212 5 0 0 0 - - -;
+#X msg 24 78 1 0 0;
+#X msg 50 103 0 1 0;
+#X msg 64 128 0 0 1;
+#X msg 135 106 1 0 0;
+#X msg 143 127 0 0 1;
+#X text 21 233 the outcoming vector is orthogonal to both incoming
+vectors;
+#X text 195 91 args: <X> <Y> <Z>;
+#X text 193 121 1st inlet: accepts list of 3 floats;
+#X text 193 141 2nd inlet: accepts list of 3 floats;
+#X text 195 181 outlet: list of 3 floats;
+#X obj 24 149 mtl/3dCross 0 1 0;
+#X obj 13 8 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 18 50 tags: 3d;
+#X text 115 50 Author: Roman Haefeli;
+#X text 268 50 Version: 2007-12-09;
+#X text 19 11 Description: Computes the cross product of two vectors.
+;
+#X connect 0 0 1 0;
+#X connect 0 1 2 0;
+#X connect 0 2 3 0;
+#X connect 4 0 14 0;
+#X connect 5 0 14 0;
+#X connect 6 0 14 0;
+#X connect 7 0 14 1;
+#X connect 8 0 14 1;
+#X connect 14 0 0 0;
diff --git a/3dCross.pd b/3dCross.pd
new file mode 100644
index 0000000..3cfd101
--- /dev/null
+++ b/3dCross.pd
@@ -0,0 +1,60 @@
+#N canvas 213 104 543 353 10;
+#X obj 65 58 unpack f f f;
+#X obj 35 267 pack f f f;
+#X text 316 250 V =;
+#X obj 244 62 unpack f f f;
+#X obj 51 213 -;
+#X obj 146 221 -;
+#X obj 267 216 -;
+#X obj 35 238 f;
+#X obj 146 194 f;
+#X obj 202 167 t b f;
+#X text 350 230 | Ay*Bz-Az*By |;
+#X text 128 10 A;
+#X text 339 13 B;
+#X text 350 248 | Az*Bx-Ax*Bz |;
+#X text 350 266 | Ax*By-Ay*Bx |;
+#X text 460 249 = A x B;
+#X text 134 293 V;
+#X obj 35 9 inlet vector;
+#X obj 244 13 inlet vector;
+#X obj 35 292 outlet vector;
+#X obj 35 34 t b l;
+#X obj 162 144 * \$1;
+#X obj 307 145 * \$1;
+#X obj 91 144 * \$2;
+#X obj 267 145 * \$2;
+#X obj 202 144 * \$3;
+#X obj 51 142 * \$3;
+#X text 344 307 Version: 2007-12-09;
+#X text 345 326 Author: Roman Haefeli;
+#X connect 0 0 24 0;
+#X connect 0 0 25 0;
+#X connect 0 1 22 0;
+#X connect 0 1 26 0;
+#X connect 0 2 21 0;
+#X connect 0 2 23 0;
+#X connect 1 0 19 0;
+#X connect 3 0 21 1;
+#X connect 3 0 22 1;
+#X connect 3 1 23 1;
+#X connect 3 1 24 1;
+#X connect 3 2 25 1;
+#X connect 3 2 26 1;
+#X connect 4 0 7 1;
+#X connect 5 0 1 1;
+#X connect 6 0 1 2;
+#X connect 7 0 1 0;
+#X connect 8 0 5 0;
+#X connect 9 0 8 0;
+#X connect 9 1 5 1;
+#X connect 17 0 20 0;
+#X connect 18 0 3 0;
+#X connect 20 0 7 0;
+#X connect 20 1 0 0;
+#X connect 21 0 8 1;
+#X connect 22 0 6 1;
+#X connect 23 0 4 1;
+#X connect 24 0 6 0;
+#X connect 25 0 9 0;
+#X connect 26 0 4 0;
diff --git a/3dDistance-help.pd b/3dDistance-help.pd
new file mode 100644
index 0000000..ddbcfba
--- /dev/null
+++ b/3dDistance-help.pd
@@ -0,0 +1,21 @@
+#N canvas 378 442 421 197 10;
+#X msg 19 94 0 1 4;
+#X text 17 76 x y z;
+#X text 152 75 x y z;
+#X msg 154 94 5 -3 4;
+#X floatatom 19 159 5 0 0 0 - - -;
+#X msg 62 94 3 -7 0;
+#X msg 206 94 3 -7 0;
+#X obj 11 6 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 16 48 tags: 3d;
+#X text 113 48 Author: Roman Haefeli;
+#X text 266 48 Version: 2007-12-09;
+#X text 17 9 Description: Returns the distance between two 3d points.
+;
+#X obj 19 135 mtl/3dDistance 3 -7 0;
+#X connect 0 0 12 0;
+#X connect 3 0 12 1;
+#X connect 5 0 12 0;
+#X connect 6 0 12 1;
+#X connect 12 0 4 0;
diff --git a/3dDistance.pd b/3dDistance.pd
new file mode 100644
index 0000000..238575d
--- /dev/null
+++ b/3dDistance.pd
@@ -0,0 +1,43 @@
+#N canvas 0 0 478 328 12;
+#X obj 82 25 inlet;
+#X obj 216 26 inlet;
+#X obj 175 192 +;
+#X obj 179 249 sqrt;
+#X obj 174 278 outlet;
+#X obj 124 93 - \$1;
+#X obj 212 89 - \$2;
+#X text 132 25 x y z;
+#X text 274 27 x y z;
+#X obj 95 54 unpack f f f;
+#X obj 208 220 +;
+#X obj 304 89 - \$3;
+#X obj 126 122 t f f;
+#X obj 211 121 t f f;
+#X obj 296 127 t f f;
+#X obj 126 160 *;
+#X obj 198 152 *;
+#X obj 280 165 *;
+#X obj 211 51 unpack \$1 \$2 \$3;
+#X connect 0 0 9 0;
+#X connect 1 0 18 0;
+#X connect 2 0 10 0;
+#X connect 3 0 4 0;
+#X connect 5 0 12 0;
+#X connect 6 0 13 0;
+#X connect 9 0 5 0;
+#X connect 9 1 6 0;
+#X connect 9 2 11 0;
+#X connect 10 0 3 0;
+#X connect 11 0 14 0;
+#X connect 12 0 15 0;
+#X connect 12 1 15 1;
+#X connect 13 0 16 0;
+#X connect 13 1 16 1;
+#X connect 14 0 17 0;
+#X connect 14 1 17 1;
+#X connect 15 0 2 0;
+#X connect 16 0 2 1;
+#X connect 17 0 10 1;
+#X connect 18 0 5 1;
+#X connect 18 1 6 1;
+#X connect 18 2 11 1;
diff --git a/3dDot-help.pd b/3dDot-help.pd
new file mode 100644
index 0000000..5eed6aa
--- /dev/null
+++ b/3dDot-help.pd
@@ -0,0 +1,29 @@
+#N canvas 726 327 438 307 10;
+#X msg 24 77 1 0 0;
+#X msg 123 99 1 0 0;
+#X msg 130 120 0 0 1;
+#X text 195 87 args: <X> <Y> <Z>;
+#X text 193 117 1st inlet: accepts list of 3 floats;
+#X text 193 137 2nd inlet: accepts list of 3 floats;
+#X text 192 175 outlet: float <dot product>;
+#X floatatom 24 181 5 0 0 0 - - -;
+#X msg 50 100 0 -1 0;
+#X msg 66 122 0 0 -1;
+#X text 21 214 the dot product is the same as: |A|*|B|*cos(rho);
+#X text 21 227 where rho is the angle between the vectors A and B;
+#X text 21 245 don't know for what it could be useful besides computing
+the angle.;
+#X obj 24 145 mtl/3dDot 0 1 0;
+#X obj 14 8 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 19 50 tags: 3d;
+#X text 116 50 Author: Roman Haefeli;
+#X text 269 50 Version: 2007-12-09;
+#X text 20 9 Description: Computes the dot product of two vectors.
+;
+#X connect 0 0 13 0;
+#X connect 1 0 13 1;
+#X connect 2 0 13 1;
+#X connect 8 0 13 0;
+#X connect 9 0 13 0;
+#X connect 13 0 7 0;
diff --git a/3dDot.pd b/3dDot.pd
new file mode 100644
index 0000000..bba2c60
--- /dev/null
+++ b/3dDot.pd
@@ -0,0 +1,33 @@
+#N canvas 59 4 508 268 10;
+#X obj 16 21 inlet vector;
+#X text 113 23 A;
+#X obj 168 22 inlet vector;
+#X text 265 24 B;
+#X obj 168 53 unpack f f f;
+#X obj 16 54 unpack f f f;
+#X obj 16 119 * \$1;
+#X obj 55 119 * \$2;
+#X obj 95 120 * \$3;
+#X obj 16 152 +;
+#X obj 16 182 +;
+#X obj 16 220 outlet float;
+#X text 139 158 A;
+#X text 151 155 .;
+#X text 163 158 B = Ax*Bx+Ay*By+Az*Bz = |A|*|B|*cos(rho);
+#X text 138 187 where rho is the angle between the vectors A and B
+;
+#X text 310 220 Version: 2007-12-09;
+#X text 311 239 Author: Roman Haefeli;
+#X connect 0 0 5 0;
+#X connect 2 0 4 0;
+#X connect 4 0 6 1;
+#X connect 4 1 7 1;
+#X connect 4 2 8 1;
+#X connect 5 0 6 0;
+#X connect 5 1 7 0;
+#X connect 5 2 8 0;
+#X connect 6 0 9 0;
+#X connect 7 0 9 1;
+#X connect 8 0 10 1;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
diff --git a/3dMagnitude-help.pd b/3dMagnitude-help.pd
new file mode 100644
index 0000000..9d94eb3
--- /dev/null
+++ b/3dMagnitude-help.pd
@@ -0,0 +1,19 @@
+#N canvas 56 27 411 191 10;
+#X text 145 112 args: none;
+#X text 144 127 inlet: accepts list of 3 floats;
+#X text 144 142 outlet: float <magnitude>;
+#X floatatom 19 138 5 0 0 0 - - -;
+#X msg 63 90 3 1 2;
+#X msg 106 90 0 0 7;
+#X msg 19 90 1 1 0;
+#X obj 12 6 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 17 48 tags: 3d;
+#X text 114 48 Author: Roman Haefeli;
+#X text 267 48 Version: 2007-12-09;
+#X obj 19 115 mtl/3dMagnitude;
+#X text 17 8 Description: Computes the magnitude of a vector.;
+#X connect 4 0 11 0;
+#X connect 5 0 11 0;
+#X connect 6 0 11 0;
+#X connect 11 0 3 0;
diff --git a/3dMagnitude.pd b/3dMagnitude.pd
new file mode 100644
index 0000000..be80003
--- /dev/null
+++ b/3dMagnitude.pd
@@ -0,0 +1,35 @@
+#N canvas 139 64 481 270 10;
+#X obj 21 39 unpack f f f;
+#X obj 21 104 *;
+#X obj 76 104 *;
+#X obj 131 103 *;
+#X obj 21 127 +;
+#X obj 21 148 +;
+#X obj 21 169 sqrt;
+#X obj 21 198 outlet float;
+#X obj 21 14 inlet vector;
+#X text 115 14 A;
+#X text 115 199 m;
+#X text 179 173 m = (Ax^2+Ay^2+Az^2)^(1/2);
+#X text 129 143 computes the magnitude of the incoming vector;
+#X obj 21 82 t f f;
+#X obj 76 82 t f f;
+#X obj 131 81 t f f;
+#X text 301 226 Version: 2007-12-09;
+#X text 302 245 Author: Roman Haefeli;
+#X connect 0 0 13 0;
+#X connect 0 1 14 0;
+#X connect 0 2 15 0;
+#X connect 1 0 4 0;
+#X connect 2 0 4 1;
+#X connect 3 0 5 1;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 8 0 0 0;
+#X connect 13 0 1 0;
+#X connect 13 1 1 1;
+#X connect 14 0 2 0;
+#X connect 14 1 2 1;
+#X connect 15 0 3 0;
+#X connect 15 1 3 1;
diff --git a/3dMove-help.pd b/3dMove-help.pd
new file mode 100644
index 0000000..c8498db
--- /dev/null
+++ b/3dMove-help.pd
@@ -0,0 +1,35 @@
+#N canvas 465 249 490 322 10;
+#X obj 24 177 unpack f f f;
+#X floatatom 24 202 5 0 0 0 - - -;
+#X floatatom 63 202 5 0 0 0 - - -;
+#X floatatom 103 202 5 0 0 0 - - -;
+#X text 221 182 2nd inlet: accepts list of 3 floats;
+#X text 222 281 outlet: list of 3 floats;
+#X msg 94 114 2 2 2;
+#X obj 24 100 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X msg 165 113 4 3 5;
+#X msg 146 92 1 1 1;
+#X text 222 88 args: <X> <Y> <Z> <dX> <dY> <dZ>;
+#X text 293 104 startpoint and direction;
+#X text 221 136 1st inlet: accepts bangs;
+#X text 220 232 3rd inlet: accepts list of 3 floats;
+#X text 295 202 sets the startpoint;
+#X text 297 249 sets the direction;
+#X text 295 152 trigger;
+#X obj 24 139 mtl/3dMove 0 0 0 1 2 4;
+#X obj 15 6 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 20 48 tags: 3d;
+#X text 117 48 Author: Roman Haefeli;
+#X text 270 48 Version: 2007-12-09;
+#X text 20 8 Description: Moves a vector in the given direction on
+each step.;
+#X connect 0 0 1 0;
+#X connect 0 1 2 0;
+#X connect 0 2 3 0;
+#X connect 6 0 17 1;
+#X connect 7 0 17 0;
+#X connect 8 0 17 2;
+#X connect 9 0 17 2;
+#X connect 17 0 0 0;
diff --git a/3dMove.pd b/3dMove.pd
new file mode 100644
index 0000000..44e01c4
--- /dev/null
+++ b/3dMove.pd
@@ -0,0 +1,44 @@
+#N canvas 145 82 431 344 10;
+#X obj 112 26 inlet vector;
+#X obj 112 69 unpack f f f;
+#X obj 233 25 inlet vector;
+#X obj 233 68 unpack f f f;
+#X text 326 25 D;
+#X text 205 26 L;
+#X obj 9 25 inlet bang;
+#X text 57 47 step;
+#X obj 9 80 t b b b;
+#X obj 10 197 pack f f f;
+#X obj 10 241 outlet vector;
+#X text 113 241 V;
+#X text 70 270 moves a vector L in direction D on each step;
+#X obj 49 142 \$1;
+#X obj 88 142 \$2;
+#X obj 128 142 \$3;
+#X obj 123 197 + \$4;
+#X obj 162 197 + \$5;
+#X obj 202 197 + \$6;
+#X text 267 306 Version: 2007-12-09;
+#X text 268 325 Author: Roman Haefeli;
+#X connect 0 0 1 0;
+#X connect 1 0 13 1;
+#X connect 1 1 14 1;
+#X connect 1 2 15 1;
+#X connect 2 0 3 0;
+#X connect 3 0 16 1;
+#X connect 3 1 17 1;
+#X connect 3 2 18 1;
+#X connect 6 0 8 0;
+#X connect 8 0 13 0;
+#X connect 8 1 14 0;
+#X connect 8 2 15 0;
+#X connect 9 0 10 0;
+#X connect 13 0 9 0;
+#X connect 13 0 16 0;
+#X connect 14 0 9 1;
+#X connect 14 0 17 0;
+#X connect 15 0 9 2;
+#X connect 15 0 18 0;
+#X connect 16 0 13 1;
+#X connect 17 0 14 1;
+#X connect 18 0 15 1;
diff --git a/3dNormalize-help.pd b/3dNormalize-help.pd
new file mode 100644
index 0000000..fa79b39
--- /dev/null
+++ b/3dNormalize-help.pd
@@ -0,0 +1,30 @@
+#N canvas 560 411 434 311 10;
+#X text 178 151 args: none;
+#X text 177 172 inlet: accepts list of 3 floats;
+#X text 178 196 outlet: list of 3 floats <X Y Z>;
+#X msg 21 85 7 0 0;
+#X msg 37 106 2 1 3;
+#X msg 57 128 13.23 3.1 9.86;
+#X obj 41 190 unpack f f f;
+#X floatatom 41 215 5 0 0 0 - - -;
+#X floatatom 80 215 5 0 0 0 - - -;
+#X floatatom 120 215 5 0 0 0 - - -;
+#X floatatom 21 270 5 0 0 0 - - -;
+#X text 62 269 the magnitude of the output vector is always 1;
+#X obj 21 239 mtl/3dMagnitude;
+#X obj 21 153 mtl/3dNormalize;
+#X obj 11 7 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 16 49 tags: 3d;
+#X text 113 49 Author: Roman Haefeli;
+#X text 266 49 Version: 2007-12-09;
+#X text 18 10 Description: Normalizes the incoming vector.;
+#X connect 3 0 13 0;
+#X connect 4 0 13 0;
+#X connect 5 0 13 0;
+#X connect 6 0 7 0;
+#X connect 6 1 8 0;
+#X connect 6 2 9 0;
+#X connect 12 0 10 0;
+#X connect 13 0 6 0;
+#X connect 13 0 12 0;
diff --git a/3dNormalize.pd b/3dNormalize.pd
new file mode 100644
index 0000000..ce65327
--- /dev/null
+++ b/3dNormalize.pd
@@ -0,0 +1,61 @@
+#N canvas 223 126 515 348 10;
+#X obj 21 39 unpack f f f;
+#X obj 21 82 t f f f;
+#X obj 43 107 *;
+#X obj 76 82 t f f f;
+#X obj 98 107 *;
+#X obj 131 81 t f f f;
+#X obj 153 106 *;
+#X obj 43 130 +;
+#X obj 43 151 +;
+#X obj 43 172 sqrt;
+#X obj 21 266 /;
+#X obj 60 266 /;
+#X obj 115 269 /;
+#X obj 21 293 pack f f f;
+#X text 195 135 V =;
+#X obj 60 245 f;
+#X obj 115 248 f;
+#X obj 60 218 t b f;
+#X obj 115 220 t b f;
+#X obj 21 14 inlet vector;
+#X obj 21 318 outlet vector;
+#X text 123 319 V;
+#X text 117 13 A;
+#X text 176 41 normalizes the incomimg vector A to ||V|| = 1;
+#X text 228 119 | Ax/((x^2+y^2+z^2)^(1/2)) |;
+#X text 227 135 | Ay/((x^2+y^2+z^2)^(1/2)) |;
+#X text 227 152 | Az/((x^2+y^2+z^2)^(1/2)) |;
+#X text 300 306 Version: 2007-12-09;
+#X text 301 325 Author: Roman Haefeli;
+#X connect 0 0 1 0;
+#X connect 0 1 3 0;
+#X connect 0 2 5 0;
+#X connect 1 0 10 0;
+#X connect 1 1 2 0;
+#X connect 1 2 2 1;
+#X connect 2 0 7 0;
+#X connect 3 0 15 1;
+#X connect 3 1 4 0;
+#X connect 3 2 4 1;
+#X connect 4 0 7 1;
+#X connect 5 0 16 1;
+#X connect 5 1 6 0;
+#X connect 5 2 6 1;
+#X connect 6 0 8 1;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 1;
+#X connect 9 0 17 0;
+#X connect 9 0 18 0;
+#X connect 10 0 13 0;
+#X connect 11 0 13 1;
+#X connect 12 0 13 2;
+#X connect 13 0 20 0;
+#X connect 15 0 11 0;
+#X connect 16 0 12 0;
+#X connect 17 0 15 0;
+#X connect 17 1 11 1;
+#X connect 18 0 16 0;
+#X connect 18 1 12 1;
+#X connect 19 0 0 0;
diff --git a/3dPanTilt-help.pd b/3dPanTilt-help.pd
new file mode 100644
index 0000000..7b347de
--- /dev/null
+++ b/3dPanTilt-help.pd
@@ -0,0 +1,73 @@
+#N canvas 65 56 874 639 10;
+#X declare -lib Gem;
+#X obj 18 96 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 174 429 gemhead;
+#X obj 20 262 gemhead;
+#X obj 20 470 cube;
+#X floatatom 110 291 5 0 0 0 - - -;
+#X floatatom 209 293 5 0 0 0 - - -;
+#X obj 20 407 translateXYZ 1 0 0;
+#X obj 20 441 scaleXYZ 1 0.1 0.1;
+#X obj 195 513 colorRGB 1 0 0;
+#X text 15 239 The rectangle pointer.;
+#X text 172 408 The sphere.;
+#X text 505 134 Inlet_1: First set of 3D coordinates.;
+#X text 504 155 Inlet_2: Reference set of 3D coordinates.;
+#X text 504 175 Outlet_1: Pan angle.;
+#X text 504 196 Outlet_2: Tilt angle.;
+#X text 504 218 The angles are imagined with a top down perspective
+of the standard Gem window.;
+#X obj 110 270 mtl/3dPanTilt 0 0 0;
+#X obj 14 22 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 19 64 tags: 3d;
+#X text 21 25 Description: Calculate the pan and tilt between two 3D
+coordinates.;
+#X obj 781 23 import Gem;
+#X obj 265 273 mtl/gemsMouse;
+#X obj 265 368 pack f f 0;
+#X obj 266 396 t l l;
+#X obj 195 487 translateXYZ;
+#X obj 293 424 unpack f f f;
+#X text 14 179 Note how 2 rotateXYZ are used to transfer the pan &
+tilt angles to Gem angles.;
+#X obj 290 300 route 0 1;
+#X msg 290 325 \$1 \$2 0;
+#X obj 195 538 sphere 0.2;
+#X msg 353 326 \$1 \$2 -2;
+#X obj 20 345 rotateXYZ;
+#X obj 20 378 rotateXYZ;
+#X obj 507 112 mtl/3dPanTilt 0 0 0;
+#X obj 516 327 gemhead;
+#X obj 516 399 light;
+#X obj 18 119 mtl/gemsWin /lighting 1;
+#X obj 516 363 translateXYZ 0 0 1;
+#X text 258 255 Move the mouse in the gem window;
+#X connect 0 0 36 0;
+#X connect 1 0 24 0;
+#X connect 2 0 31 0;
+#X connect 4 0 31 3;
+#X connect 5 0 32 2;
+#X connect 6 0 7 0;
+#X connect 7 0 3 0;
+#X connect 8 0 29 0;
+#X connect 16 0 4 0;
+#X connect 16 1 5 0;
+#X connect 21 0 22 0;
+#X connect 21 1 27 0;
+#X connect 22 0 23 0;
+#X connect 23 0 16 0;
+#X connect 23 1 25 0;
+#X connect 24 0 8 0;
+#X connect 25 0 24 1;
+#X connect 25 1 24 2;
+#X connect 25 2 24 3;
+#X connect 27 0 28 0;
+#X connect 27 1 30 0;
+#X connect 28 0 22 0;
+#X connect 30 0 22 0;
+#X connect 31 0 32 0;
+#X connect 32 0 6 0;
+#X connect 34 0 37 0;
+#X connect 37 0 35 0;
diff --git a/3dPanTilt.pd b/3dPanTilt.pd
new file mode 100644
index 0000000..f82d0dd
--- /dev/null
+++ b/3dPanTilt.pd
@@ -0,0 +1,52 @@
+#N canvas 0 25 991 658 10;
+#X obj 74 97 inlet;
+#X text 60 68 x y z (target);
+#X obj 107 184 unpack f f f;
+#X obj 176 747 outlet;
+#X obj 468 740 outlet;
+#X obj 448 217 loadbang;
+#X obj 270 528 atan;
+#X obj 270 501 /;
+#X obj 79 132 t l l l;
+#X obj 77 425 loadbang;
+#X obj 232 295 t l l;
+#X obj 230 266 pack;
+#X obj 268 471 swap;
+#X text 172 770 pan;
+#X text 467 759 tilt;
+#X obj 447 244 pack \$1 \$2;
+#X obj 78 452 pack \$1 \$2;
+#X obj 456 339 - \$3;
+#X obj 265 424 t f f;
+#X obj 374 87 inlet;
+#X obj 377 124 t l l l;
+#X msg 490 171 \$3;
+#X obj 282 595 * -57.2958;
+#X obj 225 390 ./2dDistance;
+#X obj -31 492 ./2dAngle;
+#X connect 0 0 8 0;
+#X connect 2 0 11 0;
+#X connect 2 1 11 1;
+#X connect 2 2 17 0;
+#X connect 5 0 15 0;
+#X connect 6 0 22 0;
+#X connect 7 0 6 0;
+#X connect 8 0 2 0;
+#X connect 9 0 16 0;
+#X connect 10 0 24 0;
+#X connect 10 1 23 0;
+#X connect 11 0 10 0;
+#X connect 12 0 7 0;
+#X connect 12 1 7 1;
+#X connect 15 0 23 1;
+#X connect 16 0 24 1;
+#X connect 17 0 12 1;
+#X connect 18 0 12 0;
+#X connect 19 0 20 0;
+#X connect 20 0 16 0;
+#X connect 20 1 15 0;
+#X connect 20 2 21 0;
+#X connect 21 0 17 1;
+#X connect 22 0 4 0;
+#X connect 23 0 18 0;
+#X connect 24 0 3 0;
diff --git a/3dRotate-help.pd b/3dRotate-help.pd
new file mode 100644
index 0000000..fb890d5
--- /dev/null
+++ b/3dRotate-help.pd
@@ -0,0 +1,38 @@
+#N canvas 727 261 654 345 10;
+#X obj 27 210 unpack f f f;
+#X floatatom 27 235 5 0 0 0 - - -;
+#X floatatom 66 235 5 0 0 0 - - -;
+#X floatatom 106 235 5 0 0 0 - - -;
+#X text 373 195 2nd inlet: accepts list of 3 floats;
+#X text 372 301 outlet: list of 3 floats;
+#X floatatom 93 94 5 0 0 0 - - -;
+#X text 138 94 degree;
+#X msg 106 162 0 1 0;
+#X text 375 110 args: <X> <Y> <Z> <angle>;
+#X text 22 260 !!! uses [expr]-external !!!;
+#X msg 27 162 3 1 4;
+#X obj 93 120 t b f;
+#X text 374 159 1st inlet: accepts lists of 3 floats;
+#X text 430 128 rotation axis and angle;
+#X text 450 214 sets the rotation axis;
+#X text 448 260 sets the angle (in radian format);
+#X text 372 240 3rd inlet: accepts floats;
+#X obj 27 185 mtl/3dRotate 0 0 1 1.5708;
+#X obj 17 9 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 22 51 tags: 3d;
+#X text 119 51 Author: Roman Haefeli;
+#X text 272 51 Version: 2007-12-09;
+#X text 22 11 Description: rotates the incoming vector around a specified
+axis by a specified angle (using a rotation matrix);
+#X obj 186 161 mtl/degreeToRadian;
+#X connect 0 0 1 0;
+#X connect 0 1 2 0;
+#X connect 0 2 3 0;
+#X connect 6 0 12 0;
+#X connect 8 0 18 1;
+#X connect 11 0 18 0;
+#X connect 12 0 11 0;
+#X connect 12 1 24 0;
+#X connect 18 0 0 0;
+#X connect 24 0 18 2;
diff --git a/3dRotate.pd b/3dRotate.pd
new file mode 100644
index 0000000..ad87792
--- /dev/null
+++ b/3dRotate.pd
@@ -0,0 +1,210 @@
+#N canvas 369 22 1127 773 10;
+#X obj 36 74 expr cos($f4)+(1-cos($f4))*pow($f1 \, 2);
+#X obj 399 74 expr (1-cos($f4))*$f1*$f2-(sin($f4))*$f3;
+#X obj 772 75 expr (1-cos($f4))*$f1*$f3+(sin($f4))*$f2;
+#X obj 35 249 expr (1-cos($f4))*$f2*$f1+(sin($f4))*$f3;
+#X obj 399 246 expr cos($f4)+(1-cos($f4))*pow($f2 \, 2);
+#X obj 773 254 expr (1-cos($f4))*$f2*$f3-(sin($f4))*$f1;
+#X obj 35 419 expr (1-cos($f4))*$f3*$f1-(sin($f4))*$f2;
+#X obj 402 416 expr (1-cos($f4))*$f3*$f2+(sin($f4))*$f1;
+#X obj 776 415 expr cos($f4)+(1-cos($f4))*pow($f3 \, 2);
+#X obj 20 101 *;
+#X obj 36 50 r \$0-Rx;
+#X obj 123 50 r \$0-Ry;
+#X obj 210 50 r \$0-Rz;
+#X obj 297 51 r \$0-rho;
+#X obj 399 49 r \$0-Rx;
+#X obj 490 49 r \$0-Ry;
+#X obj 582 49 r \$0-Rz;
+#X obj 674 50 r \$0-rho;
+#X obj 772 50 r \$0-Rx;
+#X obj 863 50 r \$0-Ry;
+#X obj 955 51 r \$0-Rz;
+#X obj 1047 51 r \$0-rho;
+#X obj 35 224 r \$0-Rx;
+#X obj 126 224 r \$0-Ry;
+#X obj 218 224 r \$0-Rz;
+#X obj 310 225 r \$0-rho;
+#X obj 399 222 r \$0-Rx;
+#X obj 486 222 r \$0-Ry;
+#X obj 573 221 r \$0-Rz;
+#X obj 660 222 r \$0-rho;
+#X obj 773 229 r \$0-Rx;
+#X obj 864 229 r \$0-Ry;
+#X obj 956 229 r \$0-Rz;
+#X obj 1048 231 r \$0-rho;
+#X obj 35 394 r \$0-Rx;
+#X obj 126 394 r \$0-Ry;
+#X obj 218 394 r \$0-Rz;
+#X obj 310 395 r \$0-rho;
+#X obj 402 391 r \$0-Rx;
+#X obj 493 391 r \$0-Ry;
+#X obj 585 391 r \$0-Rz;
+#X obj 677 392 r \$0-rho;
+#X obj 776 391 r \$0-Rx;
+#X obj 863 391 r \$0-Ry;
+#X obj 950 391 r \$0-Rz;
+#X obj 1037 391 r \$0-rho;
+#X obj 19 271 *;
+#X obj 19 442 *;
+#X obj 383 98 *;
+#X obj 383 271 *;
+#X obj 386 441 *;
+#X obj 756 100 *;
+#X obj 757 278 *;
+#X obj 760 440 *;
+#X obj 20 124 +;
+#X obj 20 146 +;
+#X obj 19 294 +;
+#X obj 19 316 +;
+#X obj 19 464 +;
+#X obj 19 486 +;
+#X obj 21 635 pack f f f;
+#X text 20 4 M A T R I X;
+#X text 21 547 O U T P U T;
+#X obj 637 615 s \$0-rho;
+#X obj 247 589 unpack f f f;
+#X text 253 513 I N P U T;
+#X obj 419 565 unpack f f f;
+#X obj 498 613 s \$0-Rz;
+#X obj 458 633 s \$0-Ry;
+#X obj 419 655 s \$0-Rx;
+#X obj 419 623 f;
+#X obj 607 569 t b f;
+#X obj 607 541 inlet float;
+#X text 692 540 rho;
+#X obj 419 543 inlet vector;
+#X text 513 543 R;
+#X obj 247 543 inlet vector;
+#X text 338 544 A;
+#X obj 21 658 outlet vector;
+#X text 120 658 V;
+#X obj 888 627 s \$0-Rz;
+#X obj 832 626 s \$0-Ry;
+#X obj 777 626 s \$0-Rx;
+#X obj 942 627 s \$0-rho;
+#X obj 777 554 loadbang;
+#X obj 777 575 t b b b b;
+#X text 780 520 INIT;
+#X obj 777 600 \$1;
+#X obj 832 603 \$2;
+#X obj 888 606 \$3;
+#X obj 942 606 \$4;
+#X obj 247 656 s \$0-Ax;
+#X obj 286 634 s \$0-Ay;
+#X obj 326 612 s \$0-Az;
+#X obj 20 27 r \$0-Ax;
+#X obj 19 197 r \$0-Ax;
+#X obj 19 368 r \$0-Ax;
+#X obj 383 24 r \$0-Ay;
+#X obj 383 197 r \$0-Ay;
+#X obj 386 367 r \$0-Ay;
+#X obj 756 26 r \$0-Az;
+#X obj 757 204 r \$0-Az;
+#X obj 760 366 r \$0-Az;
+#X obj 20 167 s \$0-Vx;
+#X obj 21 574 r \$0-Vx;
+#X obj 53 594 r \$0-Vy;
+#X obj 86 614 r \$0-Vz;
+#X obj 19 337 s \$0-Vy;
+#X obj 19 507 s \$0-Vz;
+#X text 571 692 formula from http://en.wikipedia.org/wiki/Rotation_matrix.
+;
+#X text 571 662 rotates an incoming vector A around the Axis R by the
+angle rho.;
+#X text 951 733 Version: 2007-12-09;
+#X text 952 752 Author: Roman Haefeli;
+#X connect 0 0 9 1;
+#X connect 1 0 48 1;
+#X connect 2 0 51 1;
+#X connect 3 0 46 1;
+#X connect 4 0 49 1;
+#X connect 5 0 52 1;
+#X connect 6 0 47 1;
+#X connect 7 0 50 1;
+#X connect 8 0 53 1;
+#X connect 9 0 54 0;
+#X connect 10 0 0 0;
+#X connect 11 0 0 1;
+#X connect 12 0 0 2;
+#X connect 13 0 0 3;
+#X connect 14 0 1 0;
+#X connect 15 0 1 1;
+#X connect 16 0 1 2;
+#X connect 17 0 1 3;
+#X connect 18 0 2 0;
+#X connect 19 0 2 1;
+#X connect 20 0 2 2;
+#X connect 21 0 2 3;
+#X connect 22 0 3 0;
+#X connect 23 0 3 1;
+#X connect 24 0 3 2;
+#X connect 25 0 3 3;
+#X connect 26 0 4 0;
+#X connect 27 0 4 1;
+#X connect 28 0 4 2;
+#X connect 29 0 4 3;
+#X connect 30 0 5 0;
+#X connect 31 0 5 1;
+#X connect 32 0 5 2;
+#X connect 33 0 5 3;
+#X connect 34 0 6 0;
+#X connect 35 0 6 1;
+#X connect 36 0 6 2;
+#X connect 37 0 6 3;
+#X connect 38 0 7 0;
+#X connect 39 0 7 1;
+#X connect 40 0 7 2;
+#X connect 41 0 7 3;
+#X connect 42 0 8 0;
+#X connect 43 0 8 1;
+#X connect 44 0 8 2;
+#X connect 45 0 8 3;
+#X connect 46 0 56 0;
+#X connect 47 0 58 0;
+#X connect 48 0 54 1;
+#X connect 49 0 56 1;
+#X connect 50 0 58 1;
+#X connect 51 0 55 1;
+#X connect 52 0 57 1;
+#X connect 53 0 59 1;
+#X connect 54 0 55 0;
+#X connect 55 0 103 0;
+#X connect 56 0 57 0;
+#X connect 57 0 107 0;
+#X connect 58 0 59 0;
+#X connect 59 0 108 0;
+#X connect 60 0 78 0;
+#X connect 64 0 91 0;
+#X connect 64 1 92 0;
+#X connect 64 2 93 0;
+#X connect 66 0 70 0;
+#X connect 66 1 68 0;
+#X connect 66 2 67 0;
+#X connect 70 0 69 0;
+#X connect 71 0 70 0;
+#X connect 71 1 63 0;
+#X connect 72 0 71 0;
+#X connect 74 0 66 0;
+#X connect 76 0 64 0;
+#X connect 84 0 85 0;
+#X connect 85 0 87 0;
+#X connect 85 1 88 0;
+#X connect 85 2 89 0;
+#X connect 85 3 90 0;
+#X connect 87 0 82 0;
+#X connect 88 0 81 0;
+#X connect 89 0 80 0;
+#X connect 90 0 83 0;
+#X connect 94 0 9 0;
+#X connect 95 0 46 0;
+#X connect 96 0 47 0;
+#X connect 97 0 48 0;
+#X connect 98 0 49 0;
+#X connect 99 0 50 0;
+#X connect 100 0 51 0;
+#X connect 101 0 52 0;
+#X connect 102 0 53 0;
+#X connect 104 0 60 0;
+#X connect 105 0 60 1;
+#X connect 106 0 60 2;
diff --git a/3dScale-help.pd b/3dScale-help.pd
new file mode 100644
index 0000000..9289ea1
--- /dev/null
+++ b/3dScale-help.pd
@@ -0,0 +1,26 @@
+#N canvas 177 132 423 241 10;
+#X msg 38 101 2 1 0;
+#X obj 24 173 unpack f f f;
+#X floatatom 24 196 5 0 0 0 - - -;
+#X floatatom 63 196 5 0 0 0 - - -;
+#X floatatom 103 197 5 0 0 0 - - -;
+#X msg 24 77 1 2 3;
+#X text 182 109 1st inlet: accepts list of 3 floats;
+#X floatatom 111 115 5 0 0 0 - - -;
+#X text 182 129 2nd inlet: accepts floats;
+#X text 184 79 args: <float>;
+#X text 183 156 outlet: list of 3 floats;
+#X obj 24 139 mtl/3dScale 3;
+#X obj 17 8 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 22 50 tags: 3d;
+#X text 119 50 Author: Roman Haefeli;
+#X text 272 50 Version: 2007-12-09;
+#X text 23 13 Description: Scales a vector.;
+#X connect 0 0 11 0;
+#X connect 1 0 2 0;
+#X connect 1 1 3 0;
+#X connect 1 2 4 0;
+#X connect 5 0 11 0;
+#X connect 7 0 11 1;
+#X connect 11 0 1 0;
diff --git a/3dScale.pd b/3dScale.pd
new file mode 100644
index 0000000..04ca9f0
--- /dev/null
+++ b/3dScale.pd
@@ -0,0 +1,30 @@
+#N canvas 134 72 536 208 10;
+#X obj 14 28 inlet vector;
+#X text 104 28 A;
+#X obj 152 28 inlet float;
+#X text 236 28 s;
+#X obj 14 60 unpack f f f;
+#X obj 14 137 pack f f f;
+#X obj 14 168 outlet vector;
+#X text 113 168 V;
+#X text 175 125 V =;
+#X text 206 110 | Ax*s |;
+#X text 206 125 | Ay*s |;
+#X text 206 140 | Az*s |;
+#X obj 14 106 * \$1;
+#X obj 53 106 * \$1;
+#X obj 93 106 * \$1;
+#X text 165 79 scales the incoming vector A by the value s;
+#X text 334 166 Version: 2007-12-09;
+#X text 335 185 Author: Roman Haefeli;
+#X connect 0 0 4 0;
+#X connect 2 0 12 1;
+#X connect 2 0 13 1;
+#X connect 2 0 14 1;
+#X connect 4 0 12 0;
+#X connect 4 1 13 0;
+#X connect 4 2 14 0;
+#X connect 5 0 6 0;
+#X connect 12 0 5 0;
+#X connect 13 0 5 1;
+#X connect 14 0 5 2;
diff --git a/3dSubtract-help.pd b/3dSubtract-help.pd
new file mode 100644
index 0000000..1f0dff0
--- /dev/null
+++ b/3dSubtract-help.pd
@@ -0,0 +1,26 @@
+#N canvas 146 129 446 252 10;
+#X msg 50 116 2 1 0;
+#X msg 153 114 3 4 5;
+#X obj 24 173 unpack f f f;
+#X floatatom 24 196 5 0 0 0 - - -;
+#X floatatom 63 196 5 0 0 0 - - -;
+#X floatatom 103 197 5 0 0 0 - - -;
+#X msg 24 93 1 2 3;
+#X text 205 112 args: <X> <Y> <Z>;
+#X text 203 142 1st inlet: accepts list of 3 floats;
+#X text 203 162 2nd inlet: accepts list of 3 floats;
+#X text 201 197 outlet: list of 3 floats;
+#X obj 24 139 mtl/3dSubtract 0 1 2;
+#X obj 24 17 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 29 59 tags: 3d;
+#X text 126 59 Author: Roman Haefeli;
+#X text 279 59 Version: 2007-12-09;
+#X text 29 22 Description: Subtracts a vector from another.;
+#X connect 0 0 11 0;
+#X connect 1 0 11 1;
+#X connect 2 0 3 0;
+#X connect 2 1 4 0;
+#X connect 2 2 5 0;
+#X connect 6 0 11 0;
+#X connect 11 0 2 0;
diff --git a/3dSubtract.pd b/3dSubtract.pd
new file mode 100644
index 0000000..5f01d90
--- /dev/null
+++ b/3dSubtract.pd
@@ -0,0 +1,32 @@
+#N canvas 151 88 423 267 10;
+#X obj 35 48 unpack f f f;
+#X obj 35 153 pack f f f;
+#X text 211 153 V =;
+#X obj 168 49 unpack f f f;
+#X text 128 10 A;
+#X text 263 12 B;
+#X text 135 181 V;
+#X obj 35 9 inlet vector;
+#X obj 168 12 inlet vector;
+#X obj 35 178 outlet vector;
+#X text 245 137 | Ax+Bx |;
+#X text 245 153 | Ay+By |;
+#X text 245 169 | Ay+By |;
+#X text 318 154 = A + B;
+#X obj 35 121 - \$1;
+#X obj 74 122 - \$2;
+#X obj 114 122 - \$3;
+#X text 242 217 Version: 2007-12-09;
+#X text 243 236 Author: Roman Haefeli;
+#X connect 0 0 14 0;
+#X connect 0 1 15 0;
+#X connect 0 2 16 0;
+#X connect 1 0 9 0;
+#X connect 3 0 14 1;
+#X connect 3 1 15 1;
+#X connect 3 2 16 1;
+#X connect 7 0 0 0;
+#X connect 8 0 3 0;
+#X connect 14 0 1 0;
+#X connect 15 0 1 1;
+#X connect 16 0 1 2;
diff --git a/LICENSE.txt b/LICENSE.txt
new file mode 100644
index 0000000..5b6e7c6
--- /dev/null
+++ b/LICENSE.txt
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/TODO b/TODO
new file mode 100644
index 0000000..7a9cf17
--- /dev/null
+++ b/TODO
@@ -0,0 +1,90 @@
++: Added
+-: Done
+
+------------------------------------------------------
+PROBLEMS - QUESTIONS - FEATURES
+
+
+- gems-fft~ : readsf~ fonctionne pas - Aha! Tu as sauvegardé le fichier avec lorsque tu avais la mauvaise version de tof/increment!
+- gems-sobel_filter fonctionne pas au complet (le video n'est pas affecte pas les differents settings) - La vidéo est changée, je ne comprend pas le problème que tu soulignes
+- gemsPolygon 1148-dynamicpatch 0 30 3 31 (route->polygon) connection failed - Aucune erreure ici non plus?
+- browser hightlight tags - slider remonte pas
+- remove all libs and path from auto-build and check if all mtl are loading correctly
+- Add param to tracker4
+- Fix tabread with tabread4~'s second inlet? (bah, I do not think it is so important)
+- make a list concatenator
+- Option in browser to browse with love or without
+- rename soundfileIndexer to sfIndexer
+- Class/Abstraction should be sorted alphabetically (by class name, not by folder name)
+- param /nopresets?
+- Change all "pdmtl" in help files to "mtl"
+- gem /antialising: nbx
+- flow.inbetweens no more? (What is it for?)
+- 3dPantilt - demo need to be fixed (grid, light)
+- arpeggio - demo need to be fixed
+- I do not think "drone" is really descriptive of the drone.*
+- crank~ drone* (mix.pan~)
+- conversion - smpToBpm.pd
+
+------------------------------------------------------
+CATEGORIES TO PORT
+
+- 2d
+- 3d
++ ambi
+- anal
+- convert
+- count
+- data
+- debug
+- dyn: something like this already exists. See mtl/instrument~
+- file
+- flow
+- fx
+- gems
+- gui
+- hardware: not supported anymore (so the abs of olivier will not be included? korg, lanbox)
+- init
+- input
+- list
+- lua: can not add since lua is not part of pd-extended
+- midi
+- mix
+- musical
+- net
+- number
+- param
+- random
+- sample
+- sampler
+- scale
+- script: see lua above
+- seq
+- synth
+- table
+- timing
+
+
+------------------------------------------------------
+INTERESTING STUFF IN PD-EXTENDED
+
+will readanysf~ be included in the next release of pdextended?
+bsaylor/susloop~
+bsaylor/zhzxh~
+cxc/delta~
+moonlib/readsfv~
+moonlib/sfread2~
+
+------------------------------------------------------
+INTERESTING STUFF IN PD DOC
+
+3.audio.examples/
+B15
+H15.phaser
+H16.adsr.filter
+I03.resynthesis
+I05.compressor
+I06.timbre stamp
+I08.pvoc.reverb
+J08.classic.synth
+
diff --git a/VCR-help.pd b/VCR-help.pd
new file mode 100644
index 0000000..4495f52
--- /dev/null
+++ b/VCR-help.pd
@@ -0,0 +1,65 @@
+#N canvas 1221 0 812 711 10;
+#X obj 23 660 pix_texture;
+#X msg 327 437 autostart \$1;
+#X obj 327 420 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 277 354 play;
+#X msg 236 354 stop;
+#X msg 182 354 rewind;
+#X msg 100 354 fastrewind;
+#X msg 318 354 fastforward;
+#X obj 19 30 gemhead;
+#X obj 424 60 tgl 15 0 empty empty empty 0 -6 0 10 -262144 -1 -1 1
+1;
+#X floatatom 61 167 5 0 0 0 - - -;
+#X msg 330 510 smooth \$1;
+#X floatatom 330 487 5 0 0 0 - - -;
+#X text 69 209 once they are loaded.;
+#X text 69 195 Recall movies by their index number;
+#X text 328 462 Autostart accepts a boolean (0 or 1) as an argument.
+;
+#X text 259 579 All these commands are accessible from the Graph-On-Parent.
+;
+#X obj 488 141 cnv 15 270 180 empty empty VCR 20 12 1 12 -233017 -66577
+0;
+#X text 496 211 SUMMARY:;
+#X text 496 225 Inlet_1: File management;
+#X text 496 297 Outlet_2: Playback speed;
+#X text 496 249 Inlet_2: VCR commands;
+#X text 496 273 Outlet_1: File management;
+#X text 564 284 forwarding;
+#X text 425 353 You may send the following messages:;
+#X floatatom 236 611 10 0 0 1 Playback_rate - -;
+#X text 501 195 Author: oli44 Sept. 2007;
+#X text 426 391 and fastforward;
+#X text 426 374 fastrewind \, rewind \, stop \, play;
+#X text 495 171 Description: Old-school VCR commands;
+#X obj 43 527 mtl/VCR;
+#X obj 44 123 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 23 684 mtl/gemsFit;
+#X obj 25 708 rectangle;
+#X obj 424 86 mtl/gemsWin /dimen 320 240;
+#X obj 327 399 iemlib/init 1;
+#X obj 23 632 mtl/gemsMovies;
+#X text 333 533 Smooth: 0-1;
+#X connect 0 0 32 0;
+#X connect 1 0 30 1;
+#X connect 2 0 1 0;
+#X connect 3 0 30 1;
+#X connect 4 0 30 1;
+#X connect 5 0 30 1;
+#X connect 6 0 30 1;
+#X connect 7 0 30 1;
+#X connect 8 0 36 0;
+#X connect 9 0 34 0;
+#X connect 10 0 30 0;
+#X connect 11 0 30 1;
+#X connect 12 0 11 0;
+#X connect 25 0 36 2;
+#X connect 30 0 36 1;
+#X connect 30 1 25 0;
+#X connect 31 0 30 0;
+#X connect 32 0 33 0;
+#X connect 35 0 2 0;
+#X connect 36 0 0 0;
diff --git a/VCR.pd b/VCR.pd
new file mode 100644
index 0000000..6de44d3
--- /dev/null
+++ b/VCR.pd
@@ -0,0 +1,150 @@
+#N canvas 1079 50 947 563 10;
+#X obj 101 116 cnv 15 198 58 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 257 133 tgl 15 0 empty empty Autostart -14 -8 1 9 -195568 -1
+-1 1 1;
+#X obj 103 132 hradio 15 1 0 9 empty empty empty 4 -8 0 10 -195568
+-1 -1 4;
+#X obj -279 366 outlet;
+#X obj -279 -82 inlet;
+#X obj 195 -108 inlet;
+#X text 102 117 FRW -RW -0- Play FF;
+#X obj 105 157 hsl 128 15 0 1 0 0 empty empty Smoothing 132 10 1 9
+-195568 -1 -1 11600 0;
+#X obj 203 -24 route autostart smooth;
+#X obj 344 118 t b;
+#X obj 403 87 t b;
+#X msg 43 58 4;
+#X obj 462 97 t b;
+#X obj 521 96 t b;
+#X obj 580 115 t b;
+#X msg 262 222 autostart \$1;
+#X obj -215 364 outlet;
+#X msg 29 283 smooth \$1;
+#X msg -112 158 speed \$1;
+#X obj 444 194 f;
+#N canvas 128 137 974 631 VCR 0;
+#X obj -269 140 t a b;
+#X obj -153 134 r autostart\$0;
+#X obj 107 63 s autostart\$0;
+#X floatatom -36 469 5 0 0 0 - - -;
+#X text 5 468 Playback speed;
+#X obj -269 376 outlet;
+#X obj -269 -72 inlet;
+#X obj 205 -98 inlet;
+#X obj -36 493 outlet;
+#X text -254 81 catches the new filename and;
+#X text -254 98 starts playback (or not);
+#X obj 397 111 t b;
+#X obj 456 80 t b;
+#X msg -28 72 1;
+#X obj -28 196 metro 40;
+#X obj 515 90 t b;
+#X obj 574 89 t b;
+#X obj 633 108 t b;
+#X obj -36 441 change;
+#X obj 196 -15 route autostart smooth speed;
+#X obj -20 -23 loadbang;
+#X obj 83 405 t f f;
+#X obj -34 301 f;
+#X msg 397 137 -4;
+#X msg 515 134 0;
+#X msg 574 129 1;
+#X msg 456 106 -1;
+#X msg 633 136 4;
+#X obj 304 48 - 4;
+#X obj 397 55 route fastrewind rewind stop play fastforward;
+#X obj 65 295 clip 0 1;
+#X obj 64 317 pow 0.3;
+#X obj -35 348 expr $f3 + ((1-$f2) * ($f1-$f3));
+#X obj -240 185 zexy/demultiplex 0 1;
+#X msg -223 213 0;
+#X msg -112 218 1;
+#X obj -44 377 maxlib/split -0.01 0.01;
+#X msg -41 403 0;
+#X connect 0 0 5 0;
+#X connect 0 1 33 0;
+#X connect 1 0 33 1;
+#X connect 3 0 8 0;
+#X connect 6 0 0 0;
+#X connect 7 0 19 0;
+#X connect 11 0 23 0;
+#X connect 12 0 26 0;
+#X connect 13 0 14 0;
+#X connect 14 0 22 0;
+#X connect 15 0 24 0;
+#X connect 16 0 25 0;
+#X connect 17 0 27 0;
+#X connect 18 0 3 0;
+#X connect 19 0 2 0;
+#X connect 19 1 30 0;
+#X connect 19 2 28 0;
+#X connect 19 3 29 0;
+#X connect 20 0 13 0;
+#X connect 21 0 18 0;
+#X connect 21 1 32 2;
+#X connect 22 0 32 0;
+#X connect 23 0 22 1;
+#X connect 24 0 22 1;
+#X connect 25 0 22 1;
+#X connect 26 0 22 1;
+#X connect 27 0 22 1;
+#X connect 28 0 22 1;
+#X connect 29 0 11 0;
+#X connect 29 1 12 0;
+#X connect 29 2 15 0;
+#X connect 29 3 16 0;
+#X connect 29 4 17 0;
+#X connect 30 0 31 0;
+#X connect 31 0 32 1;
+#X connect 32 0 36 0;
+#X connect 33 0 34 0;
+#X connect 33 1 35 0;
+#X connect 34 0 22 1;
+#X connect 35 0 22 1;
+#X connect 36 0 37 0;
+#X connect 36 1 21 0;
+#X connect 37 0 21 0;
+#X restore -275 175 pd VCR;
+#X obj -13 -94 loadbang;
+#X msg 5 58 0.5;
+#X obj 344 62 route fastrewind rewind stop play fastforward;
+#X msg 344 144 -4;
+#X msg 403 113 -1;
+#X msg 462 141 0;
+#X msg 521 136 1;
+#X msg 580 143 4;
+#X connect 1 0 15 0;
+#X connect 2 0 18 0;
+#X connect 4 0 20 0;
+#X connect 5 0 8 0;
+#X connect 7 0 17 0;
+#X connect 8 0 1 0;
+#X connect 8 1 7 0;
+#X connect 8 2 23 0;
+#X connect 9 0 24 0;
+#X connect 10 0 25 0;
+#X connect 11 0 2 0;
+#X connect 12 0 26 0;
+#X connect 13 0 27 0;
+#X connect 14 0 28 0;
+#X connect 15 0 20 1;
+#X connect 17 0 20 1;
+#X connect 18 0 20 1;
+#X connect 19 0 2 0;
+#X connect 20 0 3 0;
+#X connect 20 1 16 0;
+#X connect 21 0 11 0;
+#X connect 21 0 22 0;
+#X connect 22 0 7 0;
+#X connect 23 0 9 0;
+#X connect 23 1 10 0;
+#X connect 23 2 12 0;
+#X connect 23 3 13 0;
+#X connect 23 4 14 0;
+#X connect 24 0 19 0;
+#X connect 25 0 19 0;
+#X connect 26 0 19 0;
+#X connect 27 0 19 0;
+#X connect 28 0 19 0;
+#X coords 0 -1 1 1 200 75 1 100 100;
diff --git a/additive~-help.pd b/additive~-help.pd
new file mode 100644
index 0000000..a11d560
--- /dev/null
+++ b/additive~-help.pd
@@ -0,0 +1,30 @@
+#N canvas 1072 106 733 447 10;
+#X obj 62 90 notein;
+#X obj 128 43 mtl/piano 1;
+#X obj 36 358 mtl/out~;
+#X msg 348 217 0.5 0.2 0 0 0 0.3 0.9;
+#X msg 342 261 0 0.9 0 0 0.9 0 0.9;
+#X msg 331 296 1 0.9 1 0 0 0 0;
+#X msg 310 324 0 1 2 3 4 5 6;
+#X msg 226 249 6 5 4 3 2 1 0;
+#X obj 66 118 pack;
+#X obj 40 301 mtl/additive~ 0.6 0.4 0.7 0.8 0.4 0.2 0.3;
+#X text 40 0 Description: Midi instrument using additive synthesis
+with an unlimited number of oscillators.;
+#X text 147 167 Arguments: The number of arguments determines the number
+of oscillators created. The values of the arguments determines the
+volume of each oscillator.;
+#X text 322 351 The right inlet changes the volumes of each oscillator.
+;
+#X text 43 23 tags: instrument~;
+#X connect 0 0 8 0;
+#X connect 0 1 8 1;
+#X connect 1 0 9 0;
+#X connect 3 0 9 1;
+#X connect 4 0 9 1;
+#X connect 5 0 9 1;
+#X connect 6 0 9 1;
+#X connect 7 0 9 1;
+#X connect 8 0 9 0;
+#X connect 9 0 2 0;
+#X connect 9 0 2 1;
diff --git a/additive~.pd b/additive~.pd
new file mode 100644
index 0000000..e0c0b6c
--- /dev/null
+++ b/additive~.pd
@@ -0,0 +1,109 @@
+#N canvas 0 153 1009 482 10;
+#X obj 308 -17 inlet;
+#X obj 210 225 unpack f f f f;
+#X obj 72 -11 inlet;
+#X obj 72 10 unpack f f;
+#X obj 64 352 *~;
+#X obj 62 418 outlet~;
+#X obj 72 40 mtof;
+#X obj 201 265 ./adsr~;
+#X obj 70 113 s \$0in;
+#X obj 309 21 route adsr;
+#N canvas 69 154 450 300 \$0dyn 0;
+#X restore 640 87 pd \$0dyn;
+#X obj 649 469 send pd-\$0dyn;
+#X obj 541 115 loadbang;
+#X obj 539 166 iemlib/dollarg;
+#X obj 539 198 tof/listUnfold;
+#X obj 564 141 t b b;
+#X obj 730 172 f \$0;
+#X obj 561 250 + 1;
+#X obj 656 212 * 4;
+#X obj 656 233 + 2;
+#X obj 660 262 + 1;
+#X obj 661 289 + 1;
+#X obj 671 317 + 1;
+#X obj 539 353 pack f f \$0 f f f f f;
+#X msg 535 388 obj 0 20 * \$2 \, obj 50 20 osc~ \, obj 100 20 *~ \$1
+\, obj 100 0 r \$3v\$8 \, connect 0 0 \$4 0 \, connect \$4 0 \$5 0
+\, connect \$5 0 \$6 0 \, connect \$6 0 1 0 \, connect \$7 0 \$6 1
+;
+#X obj 63 386 *~;
+#X msg 321 334 1 \$1;
+#X obj 322 358 /;
+#X obj 403 49 tof/listUnfold;
+#X obj 402 87 pack f f \$0;
+#X msg 402 125 \; \$3v\$2 \$1;
+#X obj 366 237 zexy/sum;
+#X obj 485 179 t l l;
+#X obj 399 26 t l l;
+#X obj 731 138 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 593 232 / 2;
+#X obj 558 304 moses 1;
+#X obj 570 279 -;
+#X msg 462 293 1 \$1;
+#X obj 459 316 /;
+#X obj 51 266 catch~ \$0out;
+#X msg 731 205 clear \, obj 0 0 r \$1in \, obj 0 100 throw~ \$1out
+;
+#X obj 464 265 abs;
+#X obj 602 261 int;
+#X obj 478 238 - 2;
+#X connect 0 0 9 0;
+#X connect 1 0 7 1;
+#X connect 1 1 7 2;
+#X connect 1 2 7 3;
+#X connect 1 3 7 4;
+#X connect 2 0 3 0;
+#X connect 3 0 6 0;
+#X connect 3 1 7 0;
+#X connect 4 0 25 0;
+#X connect 6 0 8 0;
+#X connect 7 0 4 1;
+#X connect 9 0 1 0;
+#X connect 9 1 33 0;
+#X connect 12 0 15 0;
+#X connect 13 0 32 0;
+#X connect 13 1 35 0;
+#X connect 14 0 23 0;
+#X connect 14 1 17 0;
+#X connect 14 1 18 0;
+#X connect 14 1 23 7;
+#X connect 15 0 13 0;
+#X connect 15 1 16 0;
+#X connect 16 0 41 0;
+#X connect 17 0 37 0;
+#X connect 18 0 19 0;
+#X connect 19 0 20 0;
+#X connect 19 0 23 3;
+#X connect 20 0 21 0;
+#X connect 20 0 23 4;
+#X connect 21 0 22 0;
+#X connect 21 0 23 5;
+#X connect 22 0 23 6;
+#X connect 23 0 24 0;
+#X connect 24 0 11 0;
+#X connect 25 0 5 0;
+#X connect 26 0 27 0;
+#X connect 27 0 25 1;
+#X connect 28 0 29 0;
+#X connect 28 1 29 1;
+#X connect 29 0 30 0;
+#X connect 31 0 26 0;
+#X connect 32 0 31 0;
+#X connect 32 1 14 0;
+#X connect 33 0 31 0;
+#X connect 33 1 28 0;
+#X connect 34 0 16 0;
+#X connect 35 0 43 0;
+#X connect 36 0 44 0;
+#X connect 36 1 23 1;
+#X connect 37 0 36 0;
+#X connect 38 0 39 0;
+#X connect 39 0 23 1;
+#X connect 40 0 4 0;
+#X connect 41 0 11 0;
+#X connect 42 0 38 0;
+#X connect 43 0 37 1;
+#X connect 44 0 42 0;
diff --git a/adsr~-help.pd b/adsr~-help.pd
new file mode 100644
index 0000000..53e56a4
--- /dev/null
+++ b/adsr~-help.pd
@@ -0,0 +1,63 @@
+#N canvas 264 25 741 655 10;
+#X obj 32 406 osc~ 440;
+#X obj 32 435 *~;
+#X obj 31 460 *~ 0.3;
+#X text 28 -4 Description: Simple ADSR enveloppe generator.;
+#X text 28 26 Arguments: Attack time \, Decay time \, Sustain level
+\, Release time;
+#N canvas 117 168 450 300 (subpatch) 0;
+#X array \$0curve 44100 float 2;
+#X coords 0 1 44100 -1 200 140 1;
+#X restore 504 314 graph;
+#X obj 199 537 tabwrite~ \$0curve;
+#X obj 146 234 bng 15 250 50 0 empty empty empty 17 7 0 10 -258699
+-1 -1;
+#X msg 201 287 127;
+#X msg 146 311 0;
+#X obj 146 258 t b b b;
+#X text 166 231 Click to generate a 700 ms full volume trigger.;
+#X obj 146 286 del 700;
+#X floatatom 233 319 5 1 1000 1 attack_time - -;
+#X floatatom 267 343 5 1 1000 1 decay_time - -;
+#X floatatom 301 365 5 0 1 1 sustain_level(0-1) - -;
+#X floatatom 335 387 5 1 1000 1 release_time - -;
+#X obj 233 288 s \$0draw;
+#X obj 229 506 r \$0draw;
+#X obj 245 486 print attack_started;
+#X obj 335 448 print release_done;
+#X obj 290 467 print attack+decay_done;
+#X text 320 521 Arguments: attack_time decay_time sustain_level release_time
+;
+#X text 320 537 Defaults: 250 250 1 250;
+#X text 145 193 MODIFY THESE PARAMETERS AND CLICK THE RED BUTTON TO
+DISPLAY THE ADSR CURVE.;
+#X text 26 56 Inlets: MIDI note velocity \, A \, D \, S \, R;
+#X text 26 73 Outlet_1: Line level.;
+#X obj 200 417 mtl/adsr~ 70 50 0.5 100;
+#X obj 30 485 mtl/out~;
+#X text 40 571 synth.adsr~ does not retrigger the ATTACK if it has
+not been RELEASed before. This is to ensure better compatibility when
+switching between sources or moving the playback head.;
+#X text 27 11 Comments: Works best with noteClose;
+#X text 26 97 tags: control~;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 28 0;
+#X connect 2 0 28 1;
+#X connect 7 0 10 0;
+#X connect 8 0 27 0;
+#X connect 9 0 27 0;
+#X connect 10 0 12 0;
+#X connect 10 1 8 0;
+#X connect 10 2 17 0;
+#X connect 12 0 9 0;
+#X connect 13 0 27 1;
+#X connect 14 0 27 2;
+#X connect 15 0 27 3;
+#X connect 16 0 27 4;
+#X connect 18 0 6 0;
+#X connect 27 0 1 1;
+#X connect 27 0 6 0;
+#X connect 27 1 19 0;
+#X connect 27 2 21 0;
+#X connect 27 3 20 0;
diff --git a/adsr~.pd b/adsr~.pd
new file mode 100644
index 0000000..deb06dc
--- /dev/null
+++ b/adsr~.pd
@@ -0,0 +1,71 @@
+#N canvas 4 180 1022 510 10;
+#X obj 78 87 sel 0;
+#X obj 268 60 / 127;
+#X obj 35 20 inlet;
+#X obj 372 11 inlet;
+#X obj 572 24 loadbang;
+#X obj 572 74 unpack f f f f;
+#X obj 421 10 inlet;
+#X obj 466 10 inlet;
+#X obj 513 10 inlet;
+#X obj 151 434 outlet~;
+#X text 144 42 TODO: handle original velocity better;
+#X obj 296 121 * 0.5;
+#X obj 86 156 f 250;
+#X obj 718 431 outlet release_done;
+#X obj 95 119 t b b;
+#X msg 502 307 1;
+#X obj 268 83 t f f b;
+#X msg 478 252 0;
+#X obj 252 437 outlet attack_started;
+#X obj 447 219 t b b;
+#X obj 113 312 vline~;
+#X msg 87 236 0 \$1;
+#X obj 248 176 pack f f 250 250;
+#X msg 270 249 \$3 \$4;
+#X obj 275 306 delay;
+#X obj 113 188 t f f;
+#X obj 273 276 +;
+#X obj 481 430 outlet attack+decay_done;
+#X msg 133 274 \$1 \$3 \, \$2 \$4 \$3;
+#X obj 572 50 iemlib/dollarg;
+#X obj 426 360 zexy/demultiplex 0 1;
+#X obj 165 369 iemlib/fade~ _sin;
+#X connect 0 0 14 0;
+#X connect 0 1 1 0;
+#X connect 1 0 16 0;
+#X connect 2 0 0 0;
+#X connect 3 0 22 2;
+#X connect 4 0 29 0;
+#X connect 5 0 22 2;
+#X connect 5 1 22 3;
+#X connect 5 2 11 1;
+#X connect 5 3 12 1;
+#X connect 6 0 22 3;
+#X connect 7 0 11 1;
+#X connect 8 0 12 1;
+#X connect 11 0 22 1;
+#X connect 12 0 25 0;
+#X connect 14 0 12 0;
+#X connect 14 1 15 0;
+#X connect 15 0 30 1;
+#X connect 16 0 22 0;
+#X connect 16 1 11 0;
+#X connect 16 2 19 0;
+#X connect 17 0 30 1;
+#X connect 19 0 18 0;
+#X connect 19 1 17 0;
+#X connect 20 0 31 0;
+#X connect 21 0 20 0;
+#X connect 22 0 28 0;
+#X connect 22 0 23 0;
+#X connect 23 0 26 0;
+#X connect 24 0 30 0;
+#X connect 25 0 24 0;
+#X connect 25 1 21 0;
+#X connect 26 0 24 0;
+#X connect 28 0 20 0;
+#X connect 29 0 5 0;
+#X connect 30 0 27 0;
+#X connect 30 1 13 0;
+#X connect 31 0 9 0;
diff --git a/ambient~-help.pd b/ambient~-help.pd
new file mode 100644
index 0000000..5507214
--- /dev/null
+++ b/ambient~-help.pd
@@ -0,0 +1,12 @@
+#N canvas 533 428 346 257 10;
+#X text 41 25 Description: Ambient drone.;
+#X text 41 44 Author: Chun Lee (sonicvariable.goto10.org);
+#X obj 46 170 mtl/out~;
+#X text 43 91 delay;
+#X obj 49 111 hsl 128 15 1 1000 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X text 44 63 tags: synthesize~;
+#X obj 46 135 mtl/ambient~;
+#X connect 4 0 6 0;
+#X connect 6 0 2 0;
+#X connect 6 1 2 1;
diff --git a/ambient~.pd b/ambient~.pd
new file mode 100644
index 0000000..060edd9
--- /dev/null
+++ b/ambient~.pd
@@ -0,0 +1,487 @@
+#N canvas 35 93 450 300 10;
+#N canvas 293 240 584 408 droneambient 0;
+#X obj 60 87 hip~ 200;
+#N canvas 235 357 496 538 rand_sig 0;
+#X obj 33 382 vline~;
+#X msg 33 362 \$1 \$2;
+#X obj 287 132 delay;
+#X obj 287 112 t b f;
+#X obj 264 135 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X obj 32 430 outlet~;
+#X obj 33 40 inlet;
+#X obj 73 39 inlet;
+#X obj 32 407 *~ 0.8;
+#X obj 21 111 cnv 15 170 180 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 33 341 pack f f;
+#X obj 84 321 + 1;
+#X obj 33 91 t b b;
+#X obj 33 160 t b;
+#X obj 77 160 t b;
+#X obj 110 183 random 200;
+#X obj 110 208 + 1;
+#X obj 110 229 / 100;
+#X obj 110 249 - 1;
+#X obj 33 183 random 200;
+#X obj 33 208 + 1;
+#X obj 33 229 / 100;
+#X obj 33 249 - 1;
+#X obj 110 271 * 0.2;
+#X obj 33 138 moses 1;
+#X obj 33 116 random 10;
+#X obj 84 301 random 20;
+#X obj 266 163 spigot;
+#X connect 0 0 8 0;
+#X connect 1 0 0 0;
+#X connect 2 0 27 0;
+#X connect 3 0 2 0;
+#X connect 3 1 2 1;
+#X connect 4 0 27 1;
+#X connect 6 0 4 0;
+#X connect 7 0 12 0;
+#X connect 8 0 5 0;
+#X connect 10 0 1 0;
+#X connect 11 0 10 1;
+#X connect 11 0 3 0;
+#X connect 12 0 25 0;
+#X connect 12 1 26 0;
+#X connect 13 0 19 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 18 0 23 0;
+#X connect 19 0 20 0;
+#X connect 20 0 21 0;
+#X connect 21 0 22 0;
+#X connect 22 0 10 0;
+#X connect 23 0 10 0;
+#X connect 24 0 13 0;
+#X connect 24 1 14 0;
+#X connect 25 0 24 0;
+#X connect 26 0 11 0;
+#X connect 27 0 12 0;
+#X restore 59 56 pd rand_sig;
+#N canvas 0 0 858 594 dels 0;
+#X floatatom 81 27 5 0 0 0 - - -;
+#X obj 89 97 *~ 0.9;
+#X obj 46 155 outlet~;
+#X obj 26 25 inlet~;
+#X obj 146 21 inlet;
+#X obj 46 48 delwrite~ sam4 1000;
+#X obj 46 71 vd~ sam4;
+#X connect 0 0 6 0;
+#X connect 1 0 5 0;
+#X connect 3 0 5 0;
+#X connect 4 0 0 0;
+#X connect 6 0 1 0;
+#X connect 6 0 2 0;
+#X restore 147 207 pd dels;
+#X floatatom 191 165 5 0 0 0 - - -;
+#N canvas 0 0 858 594 dels 0;
+#X floatatom 81 27 5 0 0 0 - - -;
+#X obj 89 97 *~ 0.9;
+#X obj 46 155 outlet~;
+#X obj 26 25 inlet~;
+#X obj 146 21 inlet;
+#X obj 46 48 delwrite~ sam5 1000;
+#X obj 46 71 vd~ sam5;
+#X connect 0 0 6 0;
+#X connect 1 0 5 0;
+#X connect 3 0 5 0;
+#X connect 4 0 0 0;
+#X connect 6 0 1 0;
+#X connect 6 0 2 0;
+#X restore 213 205 pd dels;
+#X floatatom 257 187 5 0 0 0 - - -;
+#N canvas 481 184 829 584 del_bank 0;
+#N canvas 0 0 858 594 dels 0;
+#X floatatom 81 27 5 0 0 0 - - -;
+#X obj 89 97 *~ 0.9;
+#X obj 46 48 delwrite~ sam3 1000;
+#X obj 46 71 vd~ sam3;
+#X obj 46 155 outlet~;
+#X obj 26 25 inlet~;
+#X obj 146 21 inlet;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 3 0 1 0;
+#X connect 3 0 4 0;
+#X connect 5 0 2 0;
+#X connect 6 0 0 0;
+#X restore 278 199 pd dels;
+#X floatatom 292 177 5 0 0 0 - - -;
+#N canvas 0 0 858 594 dels 0;
+#X floatatom 81 27 5 0 0 0 - - -;
+#X obj 89 97 *~ 0.9;
+#X obj 46 155 outlet~;
+#X obj 26 25 inlet~;
+#X obj 146 21 inlet;
+#X obj 46 48 delwrite~ sam1 1000;
+#X obj 46 71 vd~ sam1;
+#X connect 0 0 6 0;
+#X connect 1 0 5 0;
+#X connect 3 0 5 0;
+#X connect 4 0 0 0;
+#X connect 6 0 1 0;
+#X connect 6 0 2 0;
+#X restore 91 194 pd dels;
+#X floatatom 105 172 5 0 0 0 - - -;
+#N canvas 0 0 858 594 dels 0;
+#X floatatom 81 27 5 0 0 0 - - -;
+#X obj 89 97 *~ 0.9;
+#X obj 46 155 outlet~;
+#X obj 26 25 inlet~;
+#X obj 146 21 inlet;
+#X obj 46 48 delwrite~ sam2 1000;
+#X obj 46 71 vd~ sam2;
+#X connect 0 0 6 0;
+#X connect 1 0 5 0;
+#X connect 3 0 5 0;
+#X connect 4 0 0 0;
+#X connect 6 0 1 0;
+#X connect 6 0 2 0;
+#X restore 182 196 pd dels;
+#X floatatom 196 174 5 0 0 0 - - -;
+#X obj 60 426 outlet~;
+#X obj 214 436 outlet~;
+#X obj 91 92 inlet~;
+#X msg 676 249 35;
+#X floatatom 539 293 5 0 0 0 - - -;
+#X floatatom 574 328 5 0 0 0 - - -;
+#X floatatom 522 273 5 0 0 0 - - -;
+#X floatatom 556 311 5 0 0 0 - - -;
+#X floatatom 591 345 5 0 0 0 - - -;
+#X floatatom 608 364 5 0 0 0 - - -;
+#X text 564 272 attack_level;
+#X text 581 290 attack_time;
+#X text 600 311 dekay_time;
+#X text 614 327 sus_level;
+#X text 632 344 sus_time;
+#X text 646 365 release_time;
+#X obj 505 273 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#N canvas 86 0 881 652 A_D_S_R_percent 0;
+#X obj 98 377 line~;
+#X msg 98 311 0 \, \$1 \$2;
+#X obj 98 276 pack f f;
+#X floatatom 300 60 5 0 0 0 - - -;
+#X floatatom 234 148 5 0 0 0 - - -;
+#X msg 98 232 1;
+#X msg 98 191 set \$1;
+#X floatatom 98 88 5 0 0 0 - - -;
+#X obj 14 40 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 182 249 1;
+#X msg 182 310 \$1 \, \$2 \$3;
+#X obj 182 276 pack f f f;
+#X floatatom 449 59 5 0 0 0 - - -;
+#X obj 268 209 delay;
+#X obj 182 214 delay;
+#X floatatom 603 60 5 0 0 0 - - -;
+#X obj 275 280 pack f f;
+#X msg 275 303 \$1 \, 0 \$2;
+#X msg 275 236 set \$1;
+#X msg 275 257 0.8;
+#X floatatom 715 58 5 0 0 0 - - -;
+#X text 140 87 attack_level;
+#X text 342 57 attack_time;
+#X text 493 59 dekay_time;
+#X text 274 147 sus_level;
+#X text 644 60 sus_time;
+#X text 753 59 release_time;
+#X obj 229 379 f;
+#X obj 254 379 f;
+#X obj 278 379 f;
+#X obj 303 379 f;
+#X obj 241 405 +;
+#X obj 290 404 +;
+#X obj 267 431 +;
+#X floatatom 272 453 5 0 0 0 - - -;
+#X obj 370 330 t b;
+#X obj 369 300 t b;
+#X obj 372 273 t b;
+#X obj 371 243 t b;
+#X obj 266 187 +;
+#X floatatom 390 390 5 0 0 0 - - -;
+#X obj 13 18 inlet;
+#X obj 52 18 inlet;
+#X obj 91 18 inlet;
+#X obj 130 18 inlet;
+#X obj 169 18 inlet;
+#X obj 208 18 inlet;
+#X obj 247 19 inlet;
+#X obj 98 438 outlet~;
+#X obj 313 491 outlet;
+#X obj 770 25 inlet;
+#X obj 583 317 *;
+#X obj 583 275 / 100;
+#X floatatom 583 252 5 0 0 0 - - -;
+#X obj 629 316 *;
+#X obj 629 274 / 100;
+#X floatatom 629 251 5 0 0 0 - - -;
+#X obj 679 316 *;
+#X obj 679 274 / 100;
+#X floatatom 679 251 5 0 0 0 - - -;
+#X obj 727 315 *;
+#X obj 727 273 / 100;
+#X floatatom 727 250 5 0 0 0 - - -;
+#X floatatom 777 152 5 0 0 0 - - -;
+#X obj 701 107 t b f;
+#X floatatom 808 86 5 0 0 0 - - -;
+#X obj 613 410 f;
+#X obj 638 411 f;
+#X obj 662 412 f;
+#X obj 687 413 f;
+#X connect 0 0 48 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 1;
+#X connect 3 0 14 1;
+#X connect 3 0 27 1;
+#X connect 3 0 38 0;
+#X connect 4 0 11 1;
+#X connect 4 0 18 0;
+#X connect 5 0 2 0;
+#X connect 6 0 5 0;
+#X connect 6 0 9 0;
+#X connect 7 0 6 0;
+#X connect 8 0 5 0;
+#X connect 8 0 14 0;
+#X connect 9 0 11 0;
+#X connect 10 0 0 0;
+#X connect 11 0 10 0;
+#X connect 12 0 11 2;
+#X connect 12 0 28 1;
+#X connect 12 0 37 0;
+#X connect 12 0 39 1;
+#X connect 13 0 19 0;
+#X connect 14 0 9 0;
+#X connect 14 0 13 0;
+#X connect 15 0 29 1;
+#X connect 15 0 36 0;
+#X connect 15 0 39 0;
+#X connect 16 0 17 0;
+#X connect 17 0 0 0;
+#X connect 18 0 19 0;
+#X connect 19 0 16 0;
+#X connect 20 0 16 1;
+#X connect 20 0 30 1;
+#X connect 20 0 35 0;
+#X connect 27 0 31 0;
+#X connect 28 0 31 1;
+#X connect 29 0 32 0;
+#X connect 30 0 32 1;
+#X connect 31 0 33 0;
+#X connect 32 0 33 1;
+#X connect 33 0 34 0;
+#X connect 34 0 49 0;
+#X connect 35 0 30 0;
+#X connect 35 0 29 0;
+#X connect 35 0 28 0;
+#X connect 35 0 27 0;
+#X connect 36 0 30 0;
+#X connect 36 0 29 0;
+#X connect 36 0 28 0;
+#X connect 36 0 27 0;
+#X connect 37 0 30 0;
+#X connect 37 0 29 0;
+#X connect 37 0 28 0;
+#X connect 37 0 27 0;
+#X connect 38 0 30 0;
+#X connect 38 0 29 0;
+#X connect 38 0 28 0;
+#X connect 38 0 27 0;
+#X connect 39 0 13 1;
+#X connect 39 0 40 0;
+#X connect 41 0 8 0;
+#X connect 42 0 7 0;
+#X connect 43 0 53 0;
+#X connect 43 0 66 1;
+#X connect 44 0 56 0;
+#X connect 44 0 67 1;
+#X connect 45 0 4 0;
+#X connect 46 0 59 0;
+#X connect 46 0 68 1;
+#X connect 47 0 62 0;
+#X connect 47 0 69 1;
+#X connect 50 0 64 0;
+#X connect 51 0 3 0;
+#X connect 52 0 51 0;
+#X connect 53 0 52 0;
+#X connect 54 0 12 0;
+#X connect 55 0 54 0;
+#X connect 56 0 55 0;
+#X connect 57 0 15 0;
+#X connect 58 0 57 0;
+#X connect 59 0 58 0;
+#X connect 60 0 20 0;
+#X connect 61 0 60 0;
+#X connect 62 0 61 0;
+#X connect 63 0 51 1;
+#X connect 63 0 54 1;
+#X connect 63 0 57 1;
+#X connect 63 0 60 1;
+#X connect 64 0 62 0;
+#X connect 64 0 59 0;
+#X connect 64 0 56 0;
+#X connect 64 0 53 0;
+#X connect 64 0 69 0;
+#X connect 64 0 68 0;
+#X connect 64 0 67 0;
+#X connect 64 0 66 0;
+#X connect 64 1 63 0;
+#X connect 65 0 64 0;
+#X connect 66 0 52 0;
+#X connect 67 0 55 0;
+#X connect 68 0 58 0;
+#X connect 69 0 61 0;
+#X restore 505 402 pd A_D_S_R_percent;
+#X floatatom 626 383 5 0 0 0 - - -;
+#X floatatom 628 441 5 0 0 0 - - -;
+#X obj 490 424 *~;
+#X obj 505 20 metro 5000;
+#X obj 528 159 + 1;
+#X obj 554 180 + 1;
+#X obj 581 204 + 1;
+#X obj 505 1 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 554 159 random 10;
+#X obj 626 82 random 5000;
+#X obj 626 104 + 1;
+#X obj 505 104 t b b b;
+#X msg 551 249;
+#X msg 519 249 1;
+#X msg 551 249 15;
+#X msg 584 249 15;
+#X msg 616 249 0.8;
+#X msg 647 249 35;
+#X obj 528 138 random 20;
+#X obj 579 180 random 50;
+#X floatatom 679 50 5 0 0 0 - - -;
+#X obj 323 115 loadbang;
+#X msg 417 53 1;
+#X obj 45 296 motex/pansig~;
+#X obj 145 293 motex/pansig~;
+#X msg 247 142 -1;
+#X msg 276 142 1;
+#X msg 217 142 0;
+#X obj 240 307 motex/pansig~;
+#X connect 0 0 52 0;
+#X connect 1 0 0 1;
+#X connect 2 0 47 0;
+#X connect 3 0 2 1;
+#X connect 4 0 48 0;
+#X connect 5 0 4 1;
+#X connect 8 0 26 0;
+#X connect 9 0 15 0;
+#X connect 10 0 23 2;
+#X connect 11 0 23 4;
+#X connect 12 0 23 1;
+#X connect 13 0 23 3;
+#X connect 14 0 23 5;
+#X connect 15 0 23 6;
+#X connect 22 0 23 0;
+#X connect 23 0 26 1;
+#X connect 23 1 25 0;
+#X connect 24 0 23 7;
+#X connect 26 0 2 0;
+#X connect 26 0 4 0;
+#X connect 26 0 0 0;
+#X connect 27 0 33 0;
+#X connect 27 0 35 0;
+#X connect 28 0 3 0;
+#X connect 29 0 5 0;
+#X connect 30 0 1 0;
+#X connect 31 0 27 0;
+#X connect 32 0 29 0;
+#X connect 33 0 34 0;
+#X connect 34 0 27 1;
+#X connect 34 0 24 0;
+#X connect 35 0 22 0;
+#X connect 35 1 32 0;
+#X connect 35 1 42 0;
+#X connect 35 1 43 0;
+#X connect 35 2 33 0;
+#X connect 37 0 12 0;
+#X connect 38 0 10 0;
+#X connect 39 0 13 0;
+#X connect 40 0 11 0;
+#X connect 41 0 14 0;
+#X connect 42 0 28 0;
+#X connect 43 0 30 0;
+#X connect 44 0 33 1;
+#X connect 45 0 51 0;
+#X connect 45 0 49 0;
+#X connect 45 0 50 0;
+#X connect 45 0 37 0;
+#X connect 45 0 38 0;
+#X connect 45 0 39 0;
+#X connect 45 0 40 0;
+#X connect 45 0 41 0;
+#X connect 45 0 9 0;
+#X connect 45 0 46 0;
+#X connect 46 0 31 0;
+#X connect 47 0 6 0;
+#X connect 47 1 7 0;
+#X connect 48 0 6 0;
+#X connect 48 1 7 0;
+#X connect 49 0 48 1;
+#X connect 50 0 52 1;
+#X connect 51 0 47 1;
+#X connect 52 0 6 0;
+#X connect 52 1 7 0;
+#X restore 26 155 pd del_bank;
+#X msg 191 143 100;
+#X msg 257 165 150;
+#X obj 147 229 hip~ 200;
+#X obj 213 227 hip~ 200;
+#X obj 25 382 outlet~;
+#X obj 96 381 outlet~;
+#X obj 191 110 loadbang;
+#X obj 59 10 loadbang;
+#X msg 59 33 1;
+#X obj 98 33 t b;
+#X obj 198 321 expr~ max(min($v1 \, $f2/10) \, -$f2/10);
+#X obj 238 350 expr~ max(min($v1 \, $f2/10) \, -$f2/10);
+#X msg 447 293 10;
+#X obj 447 273 loadbang;
+#X obj 194 42 inlet delay;
+#X obj 36 288 *~ 2;
+#X obj 97 288 *~ 2;
+#X connect 0 0 6 0;
+#X connect 1 0 0 0;
+#X connect 2 0 9 0;
+#X connect 3 0 2 1;
+#X connect 4 0 10 0;
+#X connect 5 0 4 1;
+#X connect 6 0 2 0;
+#X connect 6 0 22 0;
+#X connect 6 1 4 0;
+#X connect 6 1 23 0;
+#X connect 7 0 3 0;
+#X connect 8 0 5 0;
+#X connect 9 0 22 0;
+#X connect 10 0 23 0;
+#X connect 13 0 8 0;
+#X connect 13 0 7 0;
+#X connect 14 0 15 0;
+#X connect 14 0 16 0;
+#X connect 15 0 1 0;
+#X connect 16 0 1 1;
+#X connect 17 0 11 0;
+#X connect 18 0 12 0;
+#X connect 19 0 17 1;
+#X connect 19 0 18 1;
+#X connect 20 0 19 0;
+#X connect 21 0 3 0;
+#X connect 22 0 17 0;
+#X connect 23 0 18 0;
+#X restore 88 92 pd droneambient;
+#X obj 71 263 outlet~;
+#X obj 131 263 outlet~;
+#X obj 89 13 inlet delay;
+#X connect 0 0 1 0;
+#X connect 0 1 2 0;
+#X connect 3 0 0 0;
diff --git a/applause~-help.pd b/applause~-help.pd
new file mode 100644
index 0000000..ca11387
--- /dev/null
+++ b/applause~-help.pd
@@ -0,0 +1,20 @@
+#N canvas 393 218 305 333 10;
+#X obj 49 113 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 12700 1;
+#X obj 86 146 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 12700 1;
+#X obj 124 177 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 11800 1;
+#X text 9 26 Comment: Taken from Andy Farnell's work.;
+#X text 9 7 Description: Generates some crunchy clapping.;
+#X obj 46 203 mtl/applause~;
+#X obj 46 244 mtl/out~;
+#X text 118 159 density;
+#X text 80 127 grain;
+#X text 42 93 applaud;
+#X text 10 45 tags: synthesize~;
+#X connect 0 0 5 0;
+#X connect 1 0 5 1;
+#X connect 2 0 5 2;
+#X connect 5 0 6 1;
+#X connect 5 0 6 0;
diff --git a/applause~.pd b/applause~.pd
new file mode 100644
index 0000000..12af5c1
--- /dev/null
+++ b/applause~.pd
@@ -0,0 +1,56 @@
+#N canvas 487 98 979 321 10;
+#N canvas 620 191 623 424 applaud 0;
+#X obj 147 151 noise~;
+#X obj 142 401 outlet~;
+#X obj 141 340 hip~ 1800;
+#X obj 138 260 *~;
+#X obj 139 286 *~;
+#X obj 141 361 lop~ 5000;
+#X obj 140 317 vcf~ 300 3.939;
+#X obj 233 272 loadbang;
+#X obj 185 214 bp~ 101.7 0.55;
+#X msg 233 295 4.2;
+#X obj 170 187 *~;
+#X text 152 24 Bravo! Jolly Good show!;
+#X obj 259 67 inlet density;
+#X obj 186 64 inlet~;
+#X obj 186 85 sqrt~;
+#X obj 317 188 *~ 10000;
+#X obj 359 66 inlet~ grainspectrum;
+#X obj 185 243 *~;
+#X connect 0 0 10 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 3 0 4 1;
+#X connect 4 0 6 0;
+#X connect 5 0 1 0;
+#X connect 6 0 2 0;
+#X connect 7 0 9 0;
+#X connect 8 0 17 0;
+#X connect 9 0 6 2;
+#X connect 10 0 3 0;
+#X connect 10 0 3 1;
+#X connect 10 0 8 0;
+#X connect 12 0 8 1;
+#X connect 13 0 14 0;
+#X connect 14 0 10 1;
+#X connect 15 0 17 1;
+#X connect 16 0 15 0;
+#X connect 17 0 6 1;
+#X restore 135 184 pd applaud;
+#X obj 59 79 clip~ 0 1;
+#X obj 137 267 outlet~;
+#X obj 186 88 clip~ 0 1;
+#X obj 293 95 clip 0 1;
+#X obj 292 135 * 500;
+#X obj 58 39 inlet;
+#X obj 148 39 inlet;
+#X obj 298 39 inlet;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 3 0 0 2;
+#X connect 4 0 5 0;
+#X connect 5 0 0 1;
+#X connect 6 0 1 0;
+#X connect 7 0 3 0;
+#X connect 8 0 4 0;
diff --git a/arpeggio-help.pd b/arpeggio-help.pd
new file mode 100644
index 0000000..5affd0b
--- /dev/null
+++ b/arpeggio-help.pd
@@ -0,0 +1,32 @@
+#N canvas 433 164 459 498 10;
+#X text 14 9 Description: Simple arppegiator using a list as a chord
+and a note index.;
+#X text 22 181 Inlet_1: note index from 0 to infinity;
+#X text 214 200 Inlet_2: chord as a list of floats;
+#X obj 15 334 mtl/out~;
+#X text 14 37 tags: musical;
+#X obj 15 307 osc~;
+#X obj 15 270 mtof;
+#X msg 153 201 0 4 7 11;
+#X msg 153 244 0 2 9 7;
+#X floatatom 15 166 5 0 0 0 - - -;
+#X obj 15 99 loadbang;
+#X obj 15 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 15 202 mtl/arpeggio 2 4 7 11;
+#X msg 154 222 2 4 9 14;
+#X obj 138 142 mtl/clkMaster 120;
+#X obj 15 142 mtl/clkSlave 4 25;
+#X obj 15 235 + 24;
+#X connect 5 0 3 0;
+#X connect 5 0 3 1;
+#X connect 6 0 5 0;
+#X connect 7 0 12 1;
+#X connect 8 0 12 1;
+#X connect 9 0 12 0;
+#X connect 10 0 11 0;
+#X connect 11 0 15 0;
+#X connect 12 0 16 0;
+#X connect 13 0 12 1;
+#X connect 15 0 9 0;
+#X connect 16 0 6 0;
diff --git a/arpeggio.pd b/arpeggio.pd
new file mode 100644
index 0000000..c680828
--- /dev/null
+++ b/arpeggio.pd
@@ -0,0 +1,38 @@
+#N canvas 567 137 412 526 10;
+#X obj 50 166 list append;
+#X obj 239 5 inlet;
+#X obj 47 23 inlet;
+#X obj 50 287 +;
+#X obj 206 215 * 12;
+#X obj 213 98 t a a;
+#X obj 179 149 t f f;
+#X obj 208 191 div;
+#X obj 48 487 outlet;
+#X obj 304 4 loadbang;
+#X obj 51 80 t b f;
+#X obj 304 47 list;
+#X obj 172 181 mod;
+#X obj 171 202 + 1;
+#X obj 248 146 list length;
+#X obj 50 228 zexy/packel;
+#X obj 304 26 iemlib/dollarg;
+#X connect 0 0 15 0;
+#X connect 1 0 5 0;
+#X connect 2 0 10 0;
+#X connect 3 0 8 0;
+#X connect 4 0 3 1;
+#X connect 5 0 0 1;
+#X connect 5 1 14 0;
+#X connect 6 0 12 0;
+#X connect 6 1 7 0;
+#X connect 7 0 4 0;
+#X connect 9 0 16 0;
+#X connect 10 0 0 0;
+#X connect 10 1 6 0;
+#X connect 11 0 5 0;
+#X connect 12 0 13 0;
+#X connect 13 0 15 1;
+#X connect 14 0 7 1;
+#X connect 14 0 12 1;
+#X connect 15 0 3 0;
+#X connect 16 0 11 0;
diff --git a/asciiToPd-help.pd b/asciiToPd-help.pd
new file mode 100644
index 0000000..9e7920e
--- /dev/null
+++ b/asciiToPd-help.pd
@@ -0,0 +1,25 @@
+#N canvas 760 121 569 441 10;
+#X text 28 38 tags: conversion;
+#X obj 54 212 print;
+#X msg 54 109 97 32 98 32 99;
+#X obj 56 185 mtl/asciiToPd;
+#X text 157 130 0 is a special value that forces the end of the message
+;
+#X msg 69 132 65 0 66 0 67;
+#X floatatom 89 153 5 48 126 0 - - -;
+#X text 27 17 Description: Converts ASCII bytes to Pd messages.;
+#X obj 55 367 print;
+#X text 167 340 If you specify an ASCII code argument \, the object
+will store all incomming data. The data will be converted and outputed
+only when the specified ASCII code is encountered. In this case \,
+code 13 (carriage return).;
+#X msg 56 285 104 101 108 108 111 32;
+#X msg 81 307 119 111 114 108 100 13;
+#X obj 56 343 mtl/asciiToPd 13;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 5 0 3 0;
+#X connect 6 0 3 0;
+#X connect 10 0 12 0;
+#X connect 11 0 12 0;
+#X connect 12 0 8 0;
diff --git a/asciiToPd.pd b/asciiToPd.pd
new file mode 100644
index 0000000..93cfa49
--- /dev/null
+++ b/asciiToPd.pd
@@ -0,0 +1,25 @@
+#N canvas 348 447 540 339 10;
+#X obj 115 26 inlet;
+#X obj 111 314 outlet;
+#X obj 251 192 ./listBuild;
+#X obj 246 12 loadbang;
+#X obj 246 39 iemlib/dollarg;
+#X obj 111 99 zexy/demultiplex;
+#X obj 251 116 tof/listUnfold;
+#X obj 115 56 route bang;
+#X obj 283 148 sel 0 \$1 123;
+#X text 370 148 123 seems to crash pd;
+#X obj 111 252 moocow/bytes2any 0 -1;
+#X connect 0 0 7 0;
+#X connect 2 0 10 0;
+#X connect 3 0 4 0;
+#X connect 4 1 5 1;
+#X connect 5 0 10 0;
+#X connect 5 1 6 0;
+#X connect 6 0 8 0;
+#X connect 7 0 2 1;
+#X connect 7 1 5 0;
+#X connect 8 0 2 0;
+#X connect 8 1 2 0;
+#X connect 8 3 2 1;
+#X connect 10 0 1 0;
diff --git a/aux~-help.pd b/aux~-help.pd
new file mode 100644
index 0000000..81012d5
--- /dev/null
+++ b/aux~-help.pd
@@ -0,0 +1,7 @@
+#N canvas 195 112 814 528 10;
+#X text 67 26 Description: Receives an aux stereo signal routed by
+mtl/channel~;
+#X text 223 160 Argument: the aux number.;
+#X obj 147 160 mtl/aux~ 1;
+#X text 67 63 tags: mix~;
+#X coords 0 0 1 1 133 33 0;
diff --git a/aux~.pd b/aux~.pd
new file mode 100644
index 0000000..21c21a6
--- /dev/null
+++ b/aux~.pd
@@ -0,0 +1,8 @@
+#N canvas 27 128 814 528 10;
+#X obj 147 267 outlet~;
+#X obj 373 268 outlet~;
+#X obj 210 153 common~ MTLAUX\$1L;
+#X obj 381 165 common~ MTLAUX\$1R;
+#X connect 2 0 0 0;
+#X connect 3 0 1 0;
+#X coords 0 0 1 1 133 33 0;
diff --git a/beep~-help.pd b/beep~-help.pd
new file mode 100644
index 0000000..b48356d
--- /dev/null
+++ b/beep~-help.pd
@@ -0,0 +1,25 @@
+#N canvas 1107 279 656 363 10;
+#X text 9 66 INLET 1: bang triggers a beep;
+#X obj 23 203 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 129 200 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 11 2 Description: A simple beep.;
+#X text 10 39 ARGUMENT 1: default midi note;
+#X text 64 80 midi note+velocity also triggers a beep;
+#X obj 229 137 mtl/piano 1;
+#X obj 23 243 mtl/beep~ 60 100;
+#X obj 129 243 mtl/beep~ 68 50;
+#X text 9 52 ARGUMENT 2: default beep length;
+#X obj 23 290 mtl/out~;
+#X obj 228 243 mtl/beep~ 67 100;
+#X text 13 18 tags: synthesize~;
+#X connect 1 0 7 0;
+#X connect 2 0 8 0;
+#X connect 6 0 11 0;
+#X connect 7 0 10 0;
+#X connect 7 0 10 1;
+#X connect 8 0 10 0;
+#X connect 8 0 10 1;
+#X connect 11 0 10 0;
+#X connect 11 0 10 1;
diff --git a/beep~.pd b/beep~.pd
new file mode 100644
index 0000000..1595dc5
--- /dev/null
+++ b/beep~.pd
@@ -0,0 +1,40 @@
+#N canvas 188 49 604 622 10;
+#X obj 220 -49 inlet;
+#X obj 83 442 *~;
+#X obj 83 474 outlet~;
+#X obj 22 339 osc~ 880;
+#X obj 468 -48 loadbang;
+#X obj 22 236 mtof;
+#X obj 203 -20 route bang;
+#X obj 193 22 t b b b;
+#X obj 357 250 f 127;
+#X obj 200 244 delay 25;
+#X msg 211 282 0;
+#X obj 235 149 t a b;
+#X obj 65 158 f 60;
+#X obj 234 355 ./adsr~ 5 0 1 5;
+#X obj 295 35 ./noteSplit;
+#X obj 476 31 list split 1;
+#X obj 478 -4 iemlib/dollarg;
+#X connect 0 0 6 0;
+#X connect 1 0 2 0;
+#X connect 3 0 1 0;
+#X connect 4 0 16 0;
+#X connect 5 0 3 0;
+#X connect 6 0 7 0;
+#X connect 6 1 14 0;
+#X connect 7 0 12 0;
+#X connect 7 1 9 0;
+#X connect 7 2 8 0;
+#X connect 8 0 13 0;
+#X connect 9 0 10 0;
+#X connect 10 0 13 0;
+#X connect 11 0 5 0;
+#X connect 11 1 9 0;
+#X connect 12 0 5 0;
+#X connect 13 0 1 1;
+#X connect 14 0 11 0;
+#X connect 14 1 13 0;
+#X connect 15 0 12 1;
+#X connect 15 1 9 1;
+#X connect 16 0 15 0;
diff --git a/bell~-help.pd b/bell~-help.pd
new file mode 100644
index 0000000..d2923b8
--- /dev/null
+++ b/bell~-help.pd
@@ -0,0 +1,22 @@
+#N canvas 511 406 639 339 10;
+#X text 14 52 Comment: Taken from Andy Farnell's work.;
+#X text 15 8 Description: Generates some bell sounds.;
+#X text 14 73 Migh need a bit of "tuning".;
+#X text 87 100 Midi note.;
+#X msg 136 174 64 54;
+#X obj 82 214 mtl/bell~;
+#X obj 82 251 mtl/out~;
+#X obj 213 132 mtl/piano 1;
+#X msg 18 172 30 127;
+#X msg 24 129 60 127;
+#X msg 89 120 65 127;
+#X msg 113 151 80 127;
+#X text 15 26 tags: synthesize~;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 5 0 6 1;
+#X connect 7 0 5 0;
+#X connect 8 0 5 0;
+#X connect 9 0 5 0;
+#X connect 10 0 5 0;
+#X connect 11 0 5 0;
diff --git a/bell~.pd b/bell~.pd
new file mode 100644
index 0000000..ae4dc91
--- /dev/null
+++ b/bell~.pd
@@ -0,0 +1,288 @@
+#N canvas 104 88 455 402 10;
+#N canvas 444 467 701 290 bell1 0;
+#X obj 257 206 clip~ -0.9 0.9;
+#N canvas 0 0 350 192 envelopes 0;
+#X obj 238 82 / 9;
+#X obj 187 82 / 7;
+#X obj 71 85 * 0.9;
+#X msg 120 58 600;
+#X obj 135 83 / 2;
+#X obj 12 85 * 1.2;
+#X obj 120 33 inlet;
+#X obj 12 136 outlet;
+#X obj 71 133 outlet;
+#X obj 135 132 outlet;
+#X obj 187 132 outlet;
+#X obj 238 132 outlet;
+#X text 98 10 envelope ratios;
+#X connect 0 0 11 0;
+#X connect 1 0 10 0;
+#X connect 2 0 8 0;
+#X connect 3 0 0 0;
+#X connect 3 0 1 0;
+#X connect 3 0 2 0;
+#X connect 3 0 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 9 0;
+#X connect 5 0 7 0;
+#X connect 6 0 3 0;
+#X restore 251 50 pd envelopes;
+#N canvas 0 0 406 316 part_fund+sub 0;
+#X obj 156 54 osc~;
+#X obj 71 78 osc~;
+#X text 6 112 suboctave hum;
+#X text 129 105 fundamental;
+#X obj 71 52 * 0.5001;
+#X obj 197 258 *~;
+#X obj 214 179 line~;
+#X obj 71 172 *~ 0.1;
+#X msg 216 136 1 \, 0 \$1;
+#X obj 157 221 *~ 0.02;
+#X obj 259 12 inlet;
+#X obj 198 289 outlet~;
+#X obj 93 10 r \$0-fundamental1;
+#X connect 0 0 9 0;
+#X connect 1 0 7 0;
+#X connect 4 0 1 0;
+#X connect 5 0 11 0;
+#X connect 6 0 5 1;
+#X connect 7 0 9 0;
+#X connect 8 0 6 0;
+#X connect 9 0 5 0;
+#X connect 10 0 8 0;
+#X connect 12 0 4 0;
+#X connect 12 0 0 0;
+#X restore 21 116 pd part_fund+sub;
+#N canvas 0 0 327 465 part 0;
+#X obj 21 163 osc~;
+#X obj 154 165 osc~;
+#X obj 79 169 osc~;
+#X text 147 192 Nominal;
+#X obj 80 140 * 4.8;
+#X text 82 192 "Quint";
+#X obj 154 140 * 1.5;
+#X obj 160 368 *~;
+#X obj 226 277 line~;
+#X obj 46 269 *~ 0.2;
+#X obj 95 268 *~ 0.5;
+#X obj 146 268 *~ 0.1;
+#X obj 21 140 * 2.002;
+#X obj 133 97 * 2;
+#X text 8 194 Octave;
+#X msg 228 234 1 \, 0 \$1;
+#X obj 95 302 *~ 0.04;
+#X obj 246 38 inlet;
+#X obj 160 396 outlet~;
+#X text 79 11 primary overtones;
+#X obj 65 38 r \$0-fundamental1;
+#X connect 0 0 9 0;
+#X connect 1 0 11 0;
+#X connect 2 0 10 0;
+#X connect 4 0 2 0;
+#X connect 6 0 1 0;
+#X connect 7 0 18 0;
+#X connect 8 0 7 1;
+#X connect 9 0 16 0;
+#X connect 10 0 16 0;
+#X connect 11 0 16 0;
+#X connect 12 0 0 0;
+#X connect 13 0 4 0;
+#X connect 13 0 6 0;
+#X connect 15 0 8 0;
+#X connect 16 0 7 0;
+#X connect 17 0 15 0;
+#X connect 20 0 12 0;
+#X connect 20 0 13 0;
+#X restore 145 116 pd part primaries;
+#N canvas 0 0 289 383 secondaries 0;
+#X obj 80 104 osc~;
+#X text 19 142 12th overtone;
+#X obj 80 79 * 11;
+#X obj 151 110 osc~;
+#X obj 151 85 * 1.714;
+#X text 149 142 12/7;
+#X obj 13 105 osc~;
+#X obj 13 80 * 1.6666;
+#X obj 109 314 *~;
+#X obj 173 223 line~;
+#X obj 173 255 *~;
+#X msg 173 196 1 \, 0 \$1;
+#X obj 99 53 * 1.5;
+#X obj 172 280 *~;
+#X obj 72 254 *~ 0.2;
+#X obj 72 210 *~ 0.2;
+#X obj 23 210 *~ 0.1;
+#X obj 118 209 *~ 0.1;
+#X text 203 262 cubic;
+#X obj 238 18 inlet;
+#X obj 109 347 outlet~;
+#X obj 80 19 r \$0-fundamental1;
+#X connect 0 0 15 0;
+#X connect 2 0 0 0;
+#X connect 3 0 17 0;
+#X connect 4 0 3 0;
+#X connect 6 0 16 0;
+#X connect 7 0 6 0;
+#X connect 8 0 20 0;
+#X connect 9 0 10 1;
+#X connect 9 0 10 0;
+#X connect 10 0 13 0;
+#X connect 10 0 13 1;
+#X connect 11 0 9 0;
+#X connect 12 0 4 0;
+#X connect 12 0 7 0;
+#X connect 13 0 8 1;
+#X connect 14 0 8 0;
+#X connect 15 0 14 0;
+#X connect 16 0 14 0;
+#X connect 17 0 14 0;
+#X connect 19 0 11 0;
+#X connect 21 0 2 0;
+#X connect 21 0 12 0;
+#X restore 275 116 pd secondaries;
+#N canvas 0 0 389 416 circulars 0;
+#X obj 145 106 osc~;
+#X obj 40 103 osc~;
+#X text 109 140 1st circular;
+#X text 1 139 60 degree mode;
+#X obj 40 80 * 3;
+#X obj 145 82 * 6.242;
+#X text 25 155 "Tierce";
+#X obj 218 105 osc~;
+#X obj 218 81 * 12.483;
+#X text 220 142 2nd circular;
+#X obj 162 325 *~;
+#X obj 228 234 line~;
+#X obj 227 263 *~;
+#X obj 146 237 *~ 0.05;
+#X obj 81 189 *~ 0.1;
+#X text 262 267 square;
+#X msg 228 209 1 \, 0 \$1;
+#X obj 313 16 inlet;
+#X obj 161 362 outlet~;
+#X obj 34 19 r \$0-fundamental1;
+#X connect 0 0 13 0;
+#X connect 1 0 14 0;
+#X connect 4 0 1 0;
+#X connect 5 0 0 0;
+#X connect 7 0 13 0;
+#X connect 8 0 7 0;
+#X connect 10 0 18 0;
+#X connect 11 0 12 1;
+#X connect 11 0 12 0;
+#X connect 12 0 10 1;
+#X connect 13 0 10 0;
+#X connect 14 0 13 0;
+#X connect 16 0 11 0;
+#X connect 17 0 16 0;
+#X connect 19 0 4 0;
+#X connect 19 0 5 0;
+#X connect 19 0 8 0;
+#X restore 384 116 pd circulars;
+#N canvas 0 0 357 436 strike 0;
+#X obj 107 284 *~ 0.03;
+#X obj 67 129 osc~;
+#X obj 67 105 * 16;
+#X obj 108 129 osc~;
+#X obj 108 105 * 24;
+#X text 92 72 strikes;
+#X obj 144 129 noise~;
+#X obj 140 347 *~;
+#X obj 205 264 line~;
+#X obj 204 288 *~;
+#X obj 204 312 *~;
+#X text 244 304 cubic;
+#X msg 205 242 1 \, 0 \$1;
+#X obj 228 25 inlet;
+#X obj 140 375 outlet~;
+#X obj 77 23 r \$0-fundamental1;
+#X connect 0 0 7 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X connect 4 0 3 0;
+#X connect 6 0 0 0;
+#X connect 7 0 14 0;
+#X connect 8 0 9 1;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 9 0 10 1;
+#X connect 10 0 7 1;
+#X connect 12 0 8 0;
+#X connect 13 0 12 0;
+#X connect 15 0 2 0;
+#X connect 15 0 4 0;
+#X restore 479 116 pd strike;
+#N canvas 0 0 327 216 bodyresonance 0;
+#X obj 96 151 delwrite~ \$0-body 400;
+#X obj 96 50 clip~ -0.2 0.5;
+#X obj 96 123 *~ 0.4;
+#X obj 10 87 bp~ 1243 12;
+#X obj 95 87 bp~ 287 12;
+#X obj 179 87 bp~ 431 12;
+#X obj 95 30 delread~ \$0-body 59;
+#X obj 57 151 *~ 4;
+#X obj 57 191 outlet~;
+#X obj 250 29 inlet~;
+#X text 91 6 body resonance;
+#X connect 1 0 3 0;
+#X connect 1 0 4 0;
+#X connect 1 0 5 0;
+#X connect 2 0 0 0;
+#X connect 2 0 7 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 0;
+#X connect 5 0 2 0;
+#X connect 6 0 1 0;
+#X connect 7 0 8 0;
+#X connect 9 0 0 0;
+#X restore 479 152 pd bodyresonance;
+#X obj 258 227 hip~ 10;
+#X obj 257 254 outlet~;
+#X obj 251 23 inlet;
+#X obj 23 29 s \$0-fundamental1;
+#X obj 23 6 inlet;
+#X obj 256 183 *~ 0.9;
+#X connect 0 0 8 0;
+#X connect 1 0 2 0;
+#X connect 1 1 3 0;
+#X connect 1 2 4 0;
+#X connect 1 3 5 0;
+#X connect 1 4 6 0;
+#X connect 2 0 13 0;
+#X connect 3 0 13 0;
+#X connect 4 0 13 0;
+#X connect 5 0 13 0;
+#X connect 6 0 7 0;
+#X connect 6 0 13 0;
+#X connect 7 0 0 0;
+#X connect 8 0 9 0;
+#X connect 10 0 1 0;
+#X connect 12 0 11 0;
+#X connect 13 0 0 0;
+#X restore 72 224 pd bell1;
+#X obj 60 21 inlet;
+#X obj 73 304 outlet~;
+#X obj 74 196 t b f;
+#X obj 79 168 mtof;
+#X obj 60 105 f 80;
+#X obj 60 52 route bang;
+#X obj 76 263 *~;
+#X obj 160 248 line~;
+#X msg 162 214 \$1 5;
+#X obj 168 146 / 127;
+#X obj 122 84 ./noteSplit;
+#X connect 0 0 7 0;
+#X connect 1 0 6 0;
+#X connect 3 0 0 1;
+#X connect 3 1 0 0;
+#X connect 4 0 3 0;
+#X connect 5 0 4 0;
+#X connect 6 0 5 0;
+#X connect 6 1 11 0;
+#X connect 7 0 2 0;
+#X connect 8 0 7 1;
+#X connect 9 0 8 0;
+#X connect 10 0 9 0;
+#X connect 11 0 4 0;
+#X connect 11 1 10 0;
diff --git a/benchmark-help.pd b/benchmark-help.pd
new file mode 100644
index 0000000..75ef495
--- /dev/null
+++ b/benchmark-help.pd
@@ -0,0 +1,34 @@
+#N canvas 42 67 627 480 10;
+#X text 82 48 description: measures how much time it takes to make
+an operation.;
+#X text 87 86 tags: tools;
+#X obj 103 351 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 103 413 f;
+#X obj 103 437 t f f;
+#X obj 146 418 + 1;
+#X msg 208 407 0;
+#X obj 263 353 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 263 421 tof/increment;
+#X text 86 306 This example measure the time it takes for two different
+methods to count from 0 to 999;
+#X obj 263 384 mtl/benchmark 1000;
+#X text 155 157 Inlet: start;
+#X text 251 182 Argument: number of bangs to send out outlet 1;
+#X text 133 221 Outlet 1: The test bangs.;
+#X text 134 241 Outlet 2: Bangs when about to start.;
+#X obj 124 182 mtl/benchmark 1000;
+#X obj 103 382 mtl/benchmark 1000;
+#X text 122 123 The results of the benchmark are printed in the Pd
+window.;
+#X connect 2 0 16 0;
+#X connect 3 0 4 0;
+#X connect 4 1 5 0;
+#X connect 5 0 3 1;
+#X connect 6 0 3 1;
+#X connect 7 0 10 0;
+#X connect 10 0 8 0;
+#X connect 10 1 8 3;
+#X connect 16 0 3 0;
+#X connect 16 1 6 0;
diff --git a/benchmark.pd b/benchmark.pd
new file mode 100644
index 0000000..ce8fbdc
--- /dev/null
+++ b/benchmark.pd
@@ -0,0 +1,21 @@
+#N canvas 42 67 944 603 10;
+#X obj 132 51 inlet;
+#X obj 289 403 realtime;
+#X obj 144 553 outlet;
+#X obj 304 238 loadbang;
+#X obj 294 477 print BENCHMARK;
+#X obj 304 272 tof/argument 1 1;
+#X obj 467 551 outlet;
+#X obj 132 163 t b b b b;
+#X obj 144 422 until;
+#X obj 141 373 f;
+#X connect 0 0 7 0;
+#X connect 1 0 4 0;
+#X connect 3 0 5 0;
+#X connect 5 0 9 1;
+#X connect 7 0 1 1;
+#X connect 7 1 9 0;
+#X connect 7 2 1 0;
+#X connect 7 3 6 0;
+#X connect 8 0 2 0;
+#X connect 9 0 8 0;
diff --git a/binaryToByte-help.pd b/binaryToByte-help.pd
new file mode 100644
index 0000000..97c93ff
--- /dev/null
+++ b/binaryToByte-help.pd
@@ -0,0 +1,46 @@
+#N canvas 0 25 484 260 10;
+#X floatatom 88 197 5 0 0 0 - - -;
+#X obj 88 109 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 111 131 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 135 131 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 159 131 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 192 131 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 217 131 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 241 131 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 266 131 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 26 135 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 108 106 This is the hot inlet!;
+#X text 46 133 Output;
+#X floatatom 330 190 5 0 0 0 - - -;
+#X msg 330 116 0 1 0 0 1 1 0 1;
+#X msg 342 137 1 0 0 0 0 0 0 0;
+#X text 327 97 Lists work too!;
+#X obj 24 12 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 29 14 Description: Converts an 8 bit binary number into it's
+decimal value.;
+#X text 29 54 tags: conversion;
+#X obj 88 172 mtl/binaryToByte;
+#X obj 330 164 mtl/binaryToByte;
+#X connect 1 0 19 0;
+#X connect 2 0 19 1;
+#X connect 3 0 19 2;
+#X connect 4 0 19 3;
+#X connect 5 0 19 4;
+#X connect 6 0 19 5;
+#X connect 7 0 19 6;
+#X connect 8 0 19 7;
+#X connect 9 0 19 0;
+#X connect 13 0 20 0;
+#X connect 14 0 20 0;
+#X connect 19 0 0 0;
+#X connect 20 0 12 0;
diff --git a/binaryToByte.pd b/binaryToByte.pd
new file mode 100644
index 0000000..06b96d2
--- /dev/null
+++ b/binaryToByte.pd
@@ -0,0 +1,78 @@
+#N canvas 0 0 844 526 10;
+#X obj 586 97 & 1;
+#X obj 188 60 inlet;
+#X obj 257 59 inlet;
+#X obj 312 62 inlet;
+#X obj 387 64 inlet;
+#X obj 455 58 inlet;
+#X obj 521 66 inlet;
+#X obj 586 66 inlet;
+#X obj 517 114 << 1;
+#X obj 519 89 & 1;
+#X obj 469 96 & 1;
+#X obj 402 88 & 1;
+#X obj 327 91 & 1;
+#X obj 260 83 & 1;
+#X obj 196 83 & 1;
+#X obj 43 13 inlet;
+#X obj 149 114 & 1;
+#X obj 446 121 << 2;
+#X obj 402 122 << 3;
+#X obj 354 122 << 4;
+#X obj 292 123 << 5;
+#X obj 242 125 << 6;
+#X obj 170 167 << 7;
+#X obj 179 492 outlet;
+#X obj 184 288 pack f f f f f f f f;
+#X obj 223 320 t b l b;
+#X obj 259 385 +;
+#X msg 322 354 0;
+#X obj 258 413 t f f;
+#X obj 249 440 f;
+#X obj 28 47 route bang list;
+#X obj 192 10 unpack f f f f f f f f;
+#X obj 257 353 zexy/drip;
+#X connect 0 0 24 7;
+#X connect 1 0 14 0;
+#X connect 2 0 13 0;
+#X connect 3 0 12 0;
+#X connect 4 0 11 0;
+#X connect 5 0 10 0;
+#X connect 6 0 9 0;
+#X connect 7 0 0 0;
+#X connect 8 0 24 6;
+#X connect 9 0 8 0;
+#X connect 10 0 17 0;
+#X connect 11 0 18 0;
+#X connect 12 0 19 0;
+#X connect 13 0 20 0;
+#X connect 14 0 21 0;
+#X connect 15 0 30 0;
+#X connect 16 0 22 0;
+#X connect 17 0 24 5;
+#X connect 18 0 24 4;
+#X connect 19 0 24 3;
+#X connect 20 0 24 2;
+#X connect 21 0 24 1;
+#X connect 22 0 24 0;
+#X connect 24 0 25 0;
+#X connect 25 0 29 0;
+#X connect 25 1 32 0;
+#X connect 25 2 27 0;
+#X connect 26 0 28 0;
+#X connect 27 0 26 1;
+#X connect 28 0 29 1;
+#X connect 28 1 26 1;
+#X connect 29 0 23 0;
+#X connect 30 0 24 0;
+#X connect 30 1 31 0;
+#X connect 30 2 16 0;
+#X connect 31 0 16 0;
+#X connect 31 1 14 0;
+#X connect 31 2 13 0;
+#X connect 31 3 12 0;
+#X connect 31 4 11 0;
+#X connect 31 5 10 0;
+#X connect 31 6 9 0;
+#X connect 31 7 0 0;
+#X connect 32 0 26 0;
diff --git a/biorythm~-help.pd b/biorythm~-help.pd
new file mode 100644
index 0000000..265d2aa
--- /dev/null
+++ b/biorythm~-help.pd
@@ -0,0 +1,44 @@
+#N canvas 254 114 467 490 10;
+#X obj 77 325 *~;
+#X obj 62 208 noise~;
+#X text 33 134 Arguments : frequency \, minimum \, maximum;
+#X floatatom 176 176 5 0 0 0 - - -;
+#X obj 62 230 lop~ 1200;
+#X text 34 121 Inlets : frequency \, minimum \, maximum \, reset phase
+(bang);
+#X text 218 174 seconds;
+#X obj 38 19 cnv 15 380 100 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 43 19 description: Generates a long lasting cycle that is inspired
+by biological rythms. Biological rythms are characterized by a duration
+(the period) a minimum and a maximum.;
+#X obj 177 311 mtl/biorythm~ 0.1 0 2;
+#N canvas 0 0 450 300 seconds2freq 0;
+#X obj 163 56 inlet;
+#X obj 171 154 /;
+#X msg 166 108 1000 \$1;
+#X obj 171 214 outlet;
+#X obj 166 83 * 1000;
+#X connect 0 0 4 0;
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;
+#X connect 4 0 2 0;
+#X restore 175 210 pd seconds2freq;
+#X floatatom 176 241 5 0 0 1 freq - -;
+#X obj 55 388 mtl/out~;
+#X floatatom 257 240 5 0 0 1 min - -;
+#X floatatom 329 240 5 0 0 1 max - -;
+#X obj 345 276 bng 15 250 50 0 empty empty reset 17 7 0 10 -262144
+-1 -1;
+#X text 44 85 tags: control~;
+#X connect 0 0 12 0;
+#X connect 0 0 12 1;
+#X connect 1 0 4 0;
+#X connect 3 0 10 0;
+#X connect 4 0 0 0;
+#X connect 9 0 0 1;
+#X connect 10 0 11 0;
+#X connect 11 0 9 0;
+#X connect 13 0 9 1;
+#X connect 14 0 9 2;
+#X connect 15 0 9 3;
diff --git a/biorythm~.pd b/biorythm~.pd
new file mode 100644
index 0000000..49373ff
--- /dev/null
+++ b/biorythm~.pd
@@ -0,0 +1,28 @@
+#N canvas 110 102 588 705 10;
+#X obj 446 62 t b;
+#X obj 45 603 outlet~;
+#X obj 383 241 loadbang;
+#X obj 375 303 f \$2;
+#X obj 458 294 f \$3;
+#X obj 447 38 inlet;
+#X text 450 12 reset phase;
+#X text 58 11 freq;
+#X obj 56 252 osc~ \$1;
+#X text 244 8 min max;
+#X obj 231 28 inlet;
+#X obj 302 30 inlet;
+#X obj 58 32 inlet;
+#X obj 42 473 expr~ ((($v1+1)/2)*($f3-$f2))+$f2;
+#X obj 385 268 t b b;
+#X connect 0 0 8 1;
+#X connect 2 0 14 0;
+#X connect 3 0 13 1;
+#X connect 4 0 13 2;
+#X connect 5 0 0 0;
+#X connect 8 0 13 0;
+#X connect 10 0 13 1;
+#X connect 11 0 13 2;
+#X connect 12 0 8 0;
+#X connect 13 0 1 0;
+#X connect 14 0 3 0;
+#X connect 14 1 4 0;
diff --git a/blip~-help.pd b/blip~-help.pd
new file mode 100644
index 0000000..1b61d8e
--- /dev/null
+++ b/blip~-help.pd
@@ -0,0 +1,20 @@
+#N canvas 594 40 392 321 10;
+#X obj 157 128 hsl 128 15 5 10 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X text 27 79 Useful for percussion;
+#X text 27 11 Description: Self scaling time/amplitude blips without
+redundancy.;
+#X text 25 61 Comment: By ajf2006.;
+#X obj 29 203 mtl/blip~;
+#X obj 30 255 mtl/out~;
+#X text 128 106 decay;
+#X msg 29 127 55 127;
+#X msg 87 156 76 127;
+#X msg 84 129 60 127;
+#X text 26 39 tags: synthesize~;
+#X connect 0 0 4 1;
+#X connect 4 0 5 0;
+#X connect 4 0 5 1;
+#X connect 7 0 4 0;
+#X connect 8 0 4 0;
+#X connect 9 0 4 0;
diff --git a/blip~.pd b/blip~.pd
new file mode 100644
index 0000000..5ef8850
--- /dev/null
+++ b/blip~.pd
@@ -0,0 +1,63 @@
+#N canvas 646 109 794 607 10;
+#N canvas 0 0 528 439 blip 0;
+#X obj 153 236 osc~;
+#X obj 190 236 vline~;
+#X obj 189 262 *~;
+#X obj 172 285 *~;
+#X obj 153 26 inlet;
+#X obj 172 331 outlet~;
+#X msg 190 202 1 2 0 \, 0 \$1 3;
+#X obj 190 108 log;
+#X obj 190 85 pow 4;
+#X obj 190 151 * 1e+06;
+#X obj 190 130 pow -3;
+#X obj 190 174 * 2;
+#X obj 259 25 inlet;
+#X obj 265 87 pow -1;
+#X obj 265 112 * 1000;
+#X obj 153 56 t f f f;
+#X obj 265 136 log;
+#X obj 265 159 min 3;
+#X obj 173 307 *~;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 1 0 2 1;
+#X connect 2 0 3 1;
+#X connect 3 0 18 0;
+#X connect 4 0 15 0;
+#X connect 6 0 1 0;
+#X connect 7 0 10 0;
+#X connect 8 0 7 0;
+#X connect 9 0 11 0;
+#X connect 10 0 9 0;
+#X connect 11 0 6 0;
+#X connect 12 0 11 1;
+#X connect 13 0 14 0;
+#X connect 14 0 16 0;
+#X connect 15 0 0 0;
+#X connect 15 1 8 0;
+#X connect 15 2 13 0;
+#X connect 16 0 17 0;
+#X connect 17 0 18 1;
+#X connect 18 0 5 0;
+#X restore 122 217 pd blip;
+#X obj 124 277 outlet~;
+#X text 388 306 Self scaling time/amplitude blips;
+#X text 388 324 without redundancy \, ajf2006;
+#X text 387 341 Useful for percussion;
+#X obj 122 136 mtof;
+#X obj 164 151 inlet decay;
+#X obj 164 173 clip 5 1000;
+#X obj 122 42 inlet note;
+#X obj 123 250 *~ 0;
+#X obj 122 64 unpack f f;
+#X obj 178 94 / 127;
+#X connect 0 0 9 0;
+#X connect 5 0 0 0;
+#X connect 6 0 7 0;
+#X connect 7 0 0 1;
+#X connect 8 0 10 0;
+#X connect 9 0 1 0;
+#X connect 10 0 5 0;
+#X connect 10 1 11 0;
+#X connect 11 0 9 1;
diff --git a/bounce~-help.pd b/bounce~-help.pd
new file mode 100644
index 0000000..fe7851b
--- /dev/null
+++ b/bounce~-help.pd
@@ -0,0 +1,16 @@
+#N canvas 548 176 381 256 10;
+#X text 41 25 Description: Drone with rand~ control and delay.;
+#X text 40 44 Author: Chun Lee (sonicvariable.goto10.org);
+#X obj 41 173 mtl/out~;
+#X obj 44 97 hsl 128 15 1 40 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X obj 137 121 hsl 128 15 10 2000 0 0 empty empty empty -2 -8 0 10
+-262144 -1 -1 0 1;
+#X text 273 119 delay;
+#X text 180 94 random;
+#X text 41 63 tags: synthesize~;
+#X obj 41 146 mtl/bounce~;
+#X connect 3 0 8 0;
+#X connect 4 0 8 1;
+#X connect 8 0 2 0;
+#X connect 8 0 2 1;
diff --git a/bounce~.pd b/bounce~.pd
new file mode 100644
index 0000000..a4369b4
--- /dev/null
+++ b/bounce~.pd
@@ -0,0 +1,143 @@
+#N canvas 761 540 450 300 10;
+#N canvas 468 81 363 423 drone 0;
+#X obj 10 150 *~;
+#X floatatom 25 58 5 0 0 0 - - -;
+#X obj 71 151 *~;
+#X floatatom 143 65 5 0 0 0 - - -;
+#X obj 131 16 loadbang;
+#X msg 25 33 100;
+#X msg 143 44 0.98;
+#X obj 9 365 outlet~;
+#X obj 63 365 outlet~;
+#N canvas 116 388 450 300 delay_1 0;
+#X obj 113 183 *~ 0.9;
+#X obj 249 182 *~ 0.9;
+#X obj 108 130 *~ 50;
+#X obj 248 136 *~ 50;
+#X floatatom 187 38 5 0 0 0 - - -;
+#X msg 187 19 10;
+#X obj 33 60 delwrite~ noi1+ 1000;
+#X obj 175 61 delwrite~ noi2+ 1000;
+#X obj 248 159 vd~ noi2+;
+#X obj 109 155 vd~ noi1+;
+#X obj 266 27 loadbang;
+#X obj 33 18 inlet~;
+#X obj 79 18 inlet~;
+#X obj 29 258 outlet~;
+#X obj 82 258 outlet~;
+#X obj 371 34 inlet rand;
+#X obj 108 108 abs~;
+#X obj 248 114 abs~;
+#X obj 107 83 cyclone/rand~;
+#X obj 247 89 cyclone/rand~;
+#X connect 0 0 6 0;
+#X connect 1 0 7 0;
+#X connect 2 0 9 0;
+#X connect 3 0 8 0;
+#X connect 4 0 18 0;
+#X connect 4 0 19 0;
+#X connect 5 0 4 0;
+#X connect 8 0 1 0;
+#X connect 8 0 14 0;
+#X connect 9 0 0 0;
+#X connect 9 0 13 0;
+#X connect 10 0 5 0;
+#X connect 11 0 6 0;
+#X connect 12 0 7 0;
+#X connect 15 0 4 0;
+#X connect 16 0 2 0;
+#X connect 17 0 3 0;
+#X connect 18 0 16 0;
+#X connect 19 0 17 0;
+#X restore 22 184 pd delay_1;
+#N canvas 110 155 765 479 delay_2 0;
+#X floatatom 151 44 5 0 0 0 - - -;
+#X obj 89 124 *~ 0.4;
+#X obj 262 122 *~ 0.4;
+#X obj 236 99 + 2;
+#X msg 151 24 50;
+#X obj 11 80 delwrite~ noi3+ 1000;
+#X obj 184 78 delwrite~ noi4+ 1000;
+#X obj 261 99 vd~ noi4+;
+#X obj 88 101 vd~ noi3+;
+#X obj 12 10 inlet~;
+#X obj 59 10 inlet~;
+#X obj 15 196 outlet~;
+#X obj 69 196 outlet~;
+#X obj 151 3 loadbang;
+#X obj 366 9 inlet delay;
+#X connect 0 0 3 0;
+#X connect 0 0 8 0;
+#X connect 1 0 5 0;
+#X connect 2 0 6 0;
+#X connect 3 0 7 0;
+#X connect 4 0 0 0;
+#X connect 7 0 2 0;
+#X connect 7 0 12 0;
+#X connect 8 0 1 0;
+#X connect 8 0 11 0;
+#X connect 9 0 5 0;
+#X connect 10 0 6 0;
+#X connect 13 0 4 0;
+#X connect 14 0 0 0;
+#X restore 31 211 pd delay_2;
+#X obj 142 129 expr~ $v1 > $v2;
+#X obj 25 129 expr~ $v1 > $v2;
+#X obj 9 11 noise~;
+#X obj 10 255 *~ 1;
+#X obj 63 255 *~ 1;
+#X obj 14 301 expr~ max(min($v1 \, $f2/10) \, -$f2/10);
+#X obj 54 330 expr~ max(min($v1 \, $f2/10) \, -$f2/10);
+#X msg 263 273 10;
+#X obj 263 253 loadbang;
+#X text 20 285 limiter;
+#X obj 171 165 inlet;
+#X obj 221 165 inlet;
+#X obj 88 108 abs~;
+#X obj 25 106 abs~;
+#X obj 118 86 cyclone/rand~;
+#X obj 25 81 cyclone/rand~;
+#X connect 0 0 9 0;
+#X connect 0 0 14 0;
+#X connect 1 0 25 0;
+#X connect 1 0 26 0;
+#X connect 2 0 9 1;
+#X connect 2 0 15 0;
+#X connect 3 0 11 1;
+#X connect 3 0 12 1;
+#X connect 4 0 5 0;
+#X connect 4 0 6 0;
+#X connect 5 0 1 0;
+#X connect 6 0 3 0;
+#X connect 9 0 10 0;
+#X connect 9 0 14 0;
+#X connect 9 1 10 1;
+#X connect 9 1 15 0;
+#X connect 10 0 14 0;
+#X connect 10 1 15 0;
+#X connect 11 0 2 1;
+#X connect 12 0 0 1;
+#X connect 13 0 0 0;
+#X connect 13 0 2 0;
+#X connect 14 0 16 0;
+#X connect 15 0 17 0;
+#X connect 16 0 7 0;
+#X connect 17 0 8 0;
+#X connect 18 0 16 1;
+#X connect 18 0 17 1;
+#X connect 19 0 18 0;
+#X connect 21 0 9 2;
+#X connect 22 0 10 2;
+#X connect 23 0 11 0;
+#X connect 24 0 12 0;
+#X connect 25 0 23 0;
+#X connect 26 0 24 0;
+#X restore 75 114 pd drone;
+#X obj 71 263 outlet~;
+#X obj 131 263 outlet~;
+#X obj 83 64 inlet;
+#X obj 123 64 inlet;
+#X connect 0 0 1 0;
+#X connect 0 1 2 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 1;
diff --git a/bpmToFreq-help.pd b/bpmToFreq-help.pd
new file mode 100644
index 0000000..37e032d
--- /dev/null
+++ b/bpmToFreq-help.pd
@@ -0,0 +1,23 @@
+#N canvas 428 216 445 383 12;
+#X floatatom 65 124 5 0 0 0 - - -;
+#X floatatom 65 176 5 0 0 0 - - -;
+#X msg 202 121 120;
+#X floatatom 202 174 5 0 0 0 - - -;
+#X text 251 174 Frequency;
+#X obj 202 199 phasor~;
+#X obj 203 226 cyclone/Scope~ 130 130 256 3 128 -1 1 0 0 0 0 102 255
+51 135 135 135 0;
+#X text 107 175 Frequency;
+#X obj 14 12 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 19 54 tags: conversion;
+#X text 20 13 Description: Converts beats per minute to a frequency
+(times per second).;
+#X obj 65 149 mtl/bpmToFreq;
+#X obj 202 147 mtl/bpmToFreq;
+#X connect 0 0 11 0;
+#X connect 2 0 12 0;
+#X connect 3 0 5 0;
+#X connect 5 0 6 0;
+#X connect 11 0 1 0;
+#X connect 12 0 3 0;
diff --git a/bpmToFreq.pd b/bpmToFreq.pd
new file mode 100644
index 0000000..9861229
--- /dev/null
+++ b/bpmToFreq.pd
@@ -0,0 +1,8 @@
+#N canvas 0 0 454 304 10;
+#X obj 103 15 inlet;
+#X obj 107 244 outlet;
+#X obj 136 66 / 60;
+#X text 154 247 beat freq;
+#X text 143 13 bpm;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
diff --git a/bpmToMs-help.pd b/bpmToMs-help.pd
new file mode 100644
index 0000000..33d4621
--- /dev/null
+++ b/bpmToMs-help.pd
@@ -0,0 +1,19 @@
+#N canvas 0 25 485 257 12;
+#X msg 197 101 120;
+#X obj 197 155 t b f;
+#X obj 197 181 metro;
+#X obj 197 207 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 230 101 60;
+#X obj 20 11 cnv 15 440 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 26 49 tags: conversion;
+#X text 28 13 Description: Converts beats per minute to an interval
+in milliseconds.;
+#X obj 197 130 mtl/bpmToMs;
+#X connect 0 0 8 0;
+#X connect 1 0 2 0;
+#X connect 1 1 2 1;
+#X connect 2 0 3 0;
+#X connect 4 0 8 0;
+#X connect 8 0 1 0;
diff --git a/bpmToMs.pd b/bpmToMs.pd
new file mode 100644
index 0000000..ba6d15c
--- /dev/null
+++ b/bpmToMs.pd
@@ -0,0 +1,10 @@
+#N canvas 609 320 452 302 10;
+#X obj 130 52 inlet;
+#X obj 130 112 /;
+#X obj 130 138 * 60;
+#X msg 130 89 1000 \$1;
+#X obj 129 191 outlet;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 0;
diff --git a/browser-help.pd b/browser-help.pd
new file mode 100644
index 0000000..5619d96
--- /dev/null
+++ b/browser-help.pd
@@ -0,0 +1,5 @@
+#N canvas 452 446 455 155 10;
+#X obj 37 -6 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 41 -3 description: A browser to make your life easier.;
+#X obj 188 76 mtl/browser;
diff --git a/browser.pd b/browser.pd
new file mode 100644
index 0000000..48259d8
--- /dev/null
+++ b/browser.pd
@@ -0,0 +1,694 @@
+#N canvas 184 399 401 173 10;
+#X obj 137 17 vsl 15 115 0 175 0 0 \$0_slider_s0 \$0_slider_r0 empty
+0 -8 0 8 -1 -228856 -228856 11400 0;
+#X obj -45 45 hradio 15 1 0 12 \$0_hr_2_s0 \$0_hr_2_r0 behavior 2 8
+1 9 -1 -1 -262140 0;
+#X obj -45 60 hradio 15 1 0 12 \$0_hr_3_s0 \$0_hr_3_r0 control~ 2 8
+1 9 -1 -1 -262140 0;
+#X obj -45 75 hradio 15 1 0 12 \$0_hr_4_s0 \$0_hr_4_r0 conversion 2
+8 1 9 -1 -1 -262140 0;
+#X obj -45 90 hradio 15 1 0 12 \$0_hr_5_s0 \$0_hr_5_r0 counter 2 8
+1 9 -1 -1 -262140 0;
+#X obj -45 105 hradio 15 1 0 12 \$0_hr_6_s0 \$0_hr_6_r0 data 2 8 1
+9 -1 -1 -262140 0;
+#X obj -45 120 hradio 15 1 0 12 \$0_hr_7_s0 \$0_hr_7_r0 examples 2
+8 1 9 -1 -1 -262140 0;
+#X obj 336 17 vsl 15 115 0 175 0 0 \$0_slider_s \$0_slider_r empty
+0 -8 0 8 -1 -228856 -1 11400 0;
+#X obj 154 15 hradio 15 1 0 12 \$0_hr_0_s \$0_hr_0_r empty 2 8 1 9
+-1 -1 -262140 0;
+#X obj 154 30 hradio 15 1 0 12 \$0_hr_1_s \$0_hr_1_r empty 2 8 1 9
+-1 -1 -262140 0;
+#X obj 154 45 hradio 15 1 0 12 \$0_hr_2_s \$0_hr_2_r empty 2 8 1 9
+-1 -1 -262140 0;
+#X obj 154 60 hradio 15 1 0 12 \$0_hr_3_s \$0_hr_3_r empty 2 8 1 9
+-1 -1 -262140 0;
+#X obj 154 75 hradio 15 1 0 12 \$0_hr_4_s \$0_hr_4_r empty 2 8 1 9
+-1 -1 -262140 0;
+#X obj 154 90 hradio 15 1 0 12 \$0_hr_5_s \$0_hr_5_r empty 2 8 1 9
+-1 -1 -262140 0;
+#X obj 154 105 hradio 15 1 0 12 \$0_hr_6_s \$0_hr_6_r empty 2 8 1 9
+-1 -1 -262140 0;
+#X obj 154 120 hradio 15 1 0 12 \$0_hr_7_s \$0_hr_7_r empty 2 8 1 9
+-1 -1 -262140 0;
+#N canvas 1058 43 723 396 ./browser 0;
+#N canvas 1069 45 887 645 coll 0;
+#X obj 23 -42 inlet;
+#X obj 247 -40 inlet;
+#X obj 141 321 zexy/demultiplex 0 1;
+#X obj 114 224 cyclone/coll;
+#C restore;
+#X obj 32 99 unpack f f;
+#X obj 32 53 zexy/demultiplex 0 1;
+#X obj 36 507 maxlib/remote;
+#X obj 36 451 list prepend \$0;
+#X msg 36 480 \$1_hr_\$2_r label \$3;
+#X msg 678 40 clear;
+#X msg 635 83 0;
+#X obj 573 148 value \$0count;
+#X obj 532 50 t f f;
+#X obj 450 134 list prepend;
+#X obj 452 176 list trim;
+#X msg 270 75 open;
+#X obj 36 426 list append;
+#X msg 70 357 symbol;
+#X obj 33 77 t a b;
+#X obj 133 371 cyclone/tosymbol;
+#X obj 653 4 t b b b;
+#X obj 405 -85 inlet add;
+#X obj 694 -43 inlet;
+#X obj 522 11 tof/increment;
+#X obj 565 377 zexy/symbol2list /;
+#X obj 565 397 list trim;
+#X obj 343 344 cyclone/tosymbol;
+#X obj 447 544 tof/openHelp;
+#X msg 630 471 1;
+#N canvas 0 0 988 652 pdmtl-help 0;
+#X obj 380 252 pack s s;
+#X obj 378 191 t a b;
+#X msg 283 312 \; pd open \$1 \$2;
+#X msg 296 230 \$1-help.pd;
+#X obj 379 277 t a a;
+#X obj 360 77 inlet;
+#X obj 357 388 print browser;
+#X msg 407 334 Trying to open \$1 in folder \$2;
+#X obj 427 225 tof/path current;
+#X obj 393 118 symbol;
+#X connect 0 0 4 0;
+#X connect 1 0 3 0;
+#X connect 1 1 8 0;
+#X connect 2 0 6 0;
+#X connect 3 0 0 0;
+#X connect 4 0 2 0;
+#X connect 4 1 7 0;
+#X connect 5 0 9 0;
+#X connect 7 0 6 0;
+#X connect 8 0 0 1;
+#X connect 9 0 1 0;
+#X restore 555 510 pd pdmtl-help;
+#X obj 447 505 spigot;
+#X obj 447 396 t a a;
+#X obj 555 443 t a b;
+#X msg 584 469 0;
+#X obj 565 420 route mtl;
+#X obj 393 -62 route bang;
+#X obj 367 10 zexy/symbol2list /;
+#X obj 334 -15 t s s;
+#X obj 442 -37 t s b;
+#X obj 104 251 unpack s s;
+#X obj 434 63 list split 1;
+#X obj 358 127 list;
+#X obj 382 31 route symbol;
+#X obj 377 59 t s s;
+#X text 178 251 long name \, short name;
+#X msg 381 256 sort -1 2 \, renumber;
+#X obj 796 -48 inlet tag;
+#X obj 564 248 sel examples;
+#X obj 370 368 zexy/demultiplex;
+#X msg 600 297 0;
+#N canvas 0 0 716 536 examples 0;
+#X obj 56 28 inlet;
+#X obj 225 262 pack s s;
+#X msg 128 322 \; pd open \$1 \$2;
+#X obj 224 287 t a a;
+#X obj 202 398 print browser;
+#X msg 252 344 Trying to open \$1 in folder \$2;
+#X obj 172 139 t s b;
+#X obj 272 235 tof/path current absolute;
+#X msg 280 202 symbol examples;
+#X connect 0 0 6 0;
+#X connect 1 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 0;
+#X connect 3 1 5 0;
+#X connect 5 0 4 0;
+#X connect 6 0 1 0;
+#X connect 6 1 8 0;
+#X connect 7 0 1 1;
+#X connect 8 0 7 0;
+#X restore 658 332 pd examples;
+#X msg 531 289 1;
+#X connect 0 0 5 0;
+#X connect 1 0 5 1;
+#X connect 1 0 2 1;
+#X connect 2 0 19 0;
+#X connect 2 1 26 0;
+#X connect 3 0 39 0;
+#X connect 4 0 16 0;
+#X connect 4 1 3 0;
+#X connect 5 0 18 0;
+#X connect 5 1 3 0;
+#X connect 7 0 8 0;
+#X connect 8 0 6 0;
+#X connect 9 0 3 0;
+#X connect 10 0 11 0;
+#X connect 12 0 13 1;
+#X connect 12 1 11 0;
+#X connect 13 0 14 0;
+#X connect 14 0 3 0;
+#X connect 15 0 3 0;
+#X connect 16 0 7 0;
+#X connect 17 0 16 1;
+#X connect 18 0 4 0;
+#X connect 18 1 17 0;
+#X connect 19 0 16 1;
+#X connect 20 0 23 1;
+#X connect 20 1 10 0;
+#X connect 20 2 9 0;
+#X connect 21 0 35 0;
+#X connect 22 0 20 0;
+#X connect 23 0 12 0;
+#X connect 24 0 25 0;
+#X connect 25 0 34 0;
+#X connect 26 0 48 0;
+#X connect 28 0 30 1;
+#X connect 30 0 27 0;
+#X connect 31 0 30 0;
+#X connect 31 1 24 0;
+#X connect 32 0 29 0;
+#X connect 32 1 33 0;
+#X connect 33 0 30 1;
+#X connect 34 0 32 0;
+#X connect 34 1 28 0;
+#X connect 35 0 45 0;
+#X connect 35 1 38 0;
+#X connect 36 0 42 0;
+#X connect 37 0 41 0;
+#X connect 37 1 36 0;
+#X connect 38 0 37 0;
+#X connect 38 1 23 0;
+#X connect 39 0 2 0;
+#X connect 40 1 41 1;
+#X connect 41 0 13 0;
+#X connect 42 0 43 0;
+#X connect 42 1 40 0;
+#X connect 43 0 41 0;
+#X connect 43 1 41 1;
+#X connect 45 0 3 0;
+#X connect 46 0 47 0;
+#X connect 47 0 51 0;
+#X connect 47 1 49 0;
+#X connect 48 0 31 0;
+#X connect 48 1 50 0;
+#X connect 49 0 48 1;
+#X connect 51 0 48 1;
+#X restore 259 269 pd coll;
+#N canvas 986 52 946 631 scroll 0;
+#X obj 147 75 int;
+#X msg 178 155 8;
+#X obj 125 389 pack;
+#X obj 151 310 + 0;
+#X obj 138 541 outlet;
+#X obj 100 275 t f f;
+#X obj 306 542 outlet;
+#X msg 232 359 0;
+#X obj 130 4 r \$0_slider_s;
+#X obj 235 201 value \$0off;
+#X obj 413 82 value \$0count;
+#X obj 134 27 t f b;
+#X msg 515 43 12;
+#X obj 421 142 max 0;
+#X obj 416 108 - 7;
+#X obj 137 50 expr (175-$f1)/175 * $f2;
+#X obj 98 250 tof/iterate;
+#X obj 580 261 f -1;
+#X text 616 271 previous;
+#X obj 614 472 list prepend \$0;
+#X msg 614 498 \; \$1_hr_\$2_r color -1 -1 \$3;
+#X obj 428 410 list append -1.67177e+07;
+#X obj 638 351 list append -1.67772e+07;
+#X obj 789 130 r \$0reset;
+#X obj 771 273 tof/iterate;
+#X msg 768 252 8;
+#X obj 410 179 r \$0query;
+#X obj 354 328 -;
+#X obj 473 296 t f f f b;
+#X obj 353 272 pack;
+#X msg 355 298 \$2 \$1;
+#X obj 412 205 +;
+#X obj 184 122 t b f b f f f;
+#X obj 582 303 maxlib/split 0 7;
+#X obj 427 375 maxlib/split 0 7;
+#X msg 698 233 -1;
+#X obj 410 228 t b f;
+#X obj 686 23 inlet;
+#X obj 712 174 t b b b;
+#X msg 652 195 -1;
+#X connect 0 0 32 0;
+#X connect 1 0 16 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 1;
+#X connect 5 0 2 0;
+#X connect 5 1 3 0;
+#X connect 7 0 6 0;
+#X connect 8 0 11 0;
+#X connect 10 0 14 0;
+#X connect 11 0 15 0;
+#X connect 11 1 10 0;
+#X connect 12 0 10 0;
+#X connect 13 0 15 1;
+#X connect 14 0 13 0;
+#X connect 15 0 0 0;
+#X connect 16 0 5 0;
+#X connect 17 0 33 0;
+#X connect 19 0 20 0;
+#X connect 21 0 19 0;
+#X connect 22 0 19 0;
+#X connect 23 0 38 0;
+#X connect 24 0 22 0;
+#X connect 25 0 24 0;
+#X connect 26 0 31 0;
+#X connect 27 0 28 0;
+#X connect 28 1 34 0;
+#X connect 28 2 17 1;
+#X connect 28 3 17 0;
+#X connect 29 0 30 0;
+#X connect 30 0 27 0;
+#X connect 31 0 36 0;
+#X connect 32 0 1 0;
+#X connect 32 1 3 1;
+#X connect 32 2 7 0;
+#X connect 32 3 9 0;
+#X connect 32 4 29 0;
+#X connect 32 5 31 1;
+#X connect 33 0 22 0;
+#X connect 34 0 21 0;
+#X connect 35 0 17 1;
+#X connect 36 0 29 0;
+#X connect 36 1 29 1;
+#X connect 37 0 38 0;
+#X connect 38 0 39 0;
+#X connect 38 1 35 0;
+#X connect 38 2 25 0;
+#X connect 39 0 29 1;
+#X restore 131 203 pd scroll;
+#N canvas 1173 127 770 510 query 0;
+#X obj 23 285 outlet;
+#X obj 107 310 outlet;
+#X obj 71 59 r \$0_hr_0_s;
+#X obj 153 61 r \$0_hr_1_s;
+#X obj 232 56 r \$0_hr_2_s;
+#X obj 304 60 r \$0_hr_3_s;
+#X obj 382 63 r \$0_hr_4_s;
+#X obj 460 62 r \$0_hr_5_s;
+#X obj 545 60 r \$0_hr_6_s;
+#X obj 630 63 r \$0_hr_7_s;
+#X msg 107 255 1;
+#X msg 77 112 0;
+#X msg 154 107 1;
+#X msg 221 112 2;
+#X msg 265 100 3;
+#X msg 315 101 4;
+#X msg 369 106 5;
+#X msg 415 106 6;
+#X msg 479 109 7;
+#X obj 33 229 +;
+#X obj 83 201 value \$0off;
+#X obj 211 242 s \$0query;
+#X obj 97 150 t f b b f;
+#X connect 2 0 11 0;
+#X connect 3 0 12 0;
+#X connect 4 0 13 0;
+#X connect 5 0 14 0;
+#X connect 6 0 15 0;
+#X connect 7 0 16 0;
+#X connect 8 0 17 0;
+#X connect 9 0 18 0;
+#X connect 10 0 1 0;
+#X connect 11 0 22 0;
+#X connect 12 0 22 0;
+#X connect 13 0 22 0;
+#X connect 14 0 22 0;
+#X connect 15 0 22 0;
+#X connect 16 0 22 0;
+#X connect 17 0 22 0;
+#X connect 18 0 22 0;
+#X connect 19 0 0 0;
+#X connect 20 0 19 1;
+#X connect 22 0 19 0;
+#X connect 22 1 20 0;
+#X connect 22 2 10 0;
+#X connect 22 3 21 0;
+#X restore 229 202 pd query;
+#N canvas 0 25 1018 673 readTags 0;
+#X msg 390 384 clear;
+#X obj 310 -25 inlet read;
+#X msg 388 405 open;
+#X obj 19 212 t b b b;
+#X msg 330 472 0;
+#X msg 291 465 1;
+#X obj 374 636 outlet patches;
+#X msg 196 382 merge \$1 \$2;
+#X msg 48 417 dump;
+#X obj 320 524 == 0;
+#X obj 100 623 outlet tags;
+#X obj 96 -14 inlet select_tag;
+#X obj 115 37 list trim;
+#X obj 463 269 tof/listUnfold;
+#X obj 511 124 zexy/msgfile;
+#X obj 508 154 list split 1;
+#X msg 475 84 read core.txt cr \, flush \, read love.txt cr \, flush
+;
+#X obj 499 227 list;
+#X obj 496 177 t b a;
+#X obj 503 349 list append;
+#X obj 405 -26 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X msg 327 206 sort -1 -1;
+#X obj 185 467 cyclone/coll;
+#C restore;
+#X obj 149 587 tof/listUnfold;
+#X obj 488 583 tof/listUnfold;
+#X obj 168 515 zexy/multiplex 0 1;
+#X obj 169 543 zexy/demultiplex 0 1;
+#X obj 96 207 t b a b;
+#X obj 473 542 t b a;
+#X obj 884 154 hcs/folder_list;
+#X obj 884 124 tof/path current absolute;
+#X msg 884 95 symbol examples/*;
+#X obj 884 190 hcs/split_path;
+#X obj 959 235 list prepend examples;
+#X obj 381 -2 t b b f b b;
+#X obj 502 49 sel 1 0;
+#X msg 618 120 read core.txt cr \, flush;
+#X connect 0 0 22 0;
+#X connect 1 0 34 0;
+#X connect 2 0 22 0;
+#X connect 3 0 8 0;
+#X connect 3 1 5 0;
+#X connect 4 0 9 0;
+#X connect 4 0 25 2;
+#X connect 5 0 9 0;
+#X connect 5 0 25 2;
+#X connect 7 0 22 0;
+#X connect 8 0 22 0;
+#X connect 9 0 26 1;
+#X connect 11 0 12 0;
+#X connect 12 0 27 0;
+#X connect 13 0 19 0;
+#X connect 14 0 15 0;
+#X connect 15 0 18 0;
+#X connect 15 1 17 1;
+#X connect 16 0 14 0;
+#X connect 17 0 13 0;
+#X connect 18 0 17 0;
+#X connect 18 1 19 1;
+#X connect 19 0 7 0;
+#X connect 20 0 34 0;
+#X connect 21 0 22 0;
+#X connect 22 0 25 0;
+#X connect 22 1 25 1;
+#X connect 23 0 10 0;
+#X connect 24 0 6 0;
+#X connect 25 0 26 0;
+#X connect 26 0 23 0;
+#X connect 26 1 28 0;
+#X connect 27 1 22 0;
+#X connect 27 2 4 0;
+#X connect 28 0 6 0;
+#X connect 28 1 24 0;
+#X connect 29 0 32 0;
+#X connect 30 0 29 0;
+#X connect 31 0 30 0;
+#X connect 32 1 33 0;
+#X connect 33 0 7 0;
+#X connect 34 0 3 0;
+#X connect 34 1 21 0;
+#X connect 34 2 35 0;
+#X connect 34 3 31 0;
+#X connect 34 4 0 0;
+#X connect 35 0 16 0;
+#X connect 35 1 36 0;
+#X connect 36 0 14 0;
+#X restore 321 63 pd readTags;
+#N canvas 178 252 827 449 coll 0;
+#X obj 23 -42 inlet;
+#X obj 247 -40 inlet;
+#X obj 129 177 zexy/demultiplex 0 1;
+#X obj 93 130 cyclone/coll;
+#C restore;
+#X obj 32 99 unpack f f;
+#X obj 32 53 zexy/demultiplex 0 1;
+#X obj 66 364 maxlib/remote;
+#X obj 55 293 list prepend \$0;
+#X obj 259 348 outlet;
+#X msg 678 40 clear;
+#X msg 635 83 0;
+#X obj 494 46 t f f;
+#X obj 441 101 list prepend;
+#X obj 411 142 list trim;
+#X msg 270 75 open;
+#X obj 52 265 list append;
+#X msg 66 197 symbol;
+#X obj 33 77 t a b;
+#X obj 129 211 cyclone/tosymbol;
+#X obj 653 4 t b b b;
+#X obj 459 -25 t a b;
+#X msg 555 -16 0;
+#X obj 435 -55 inlet add;
+#X obj 521 11 tof/increment;
+#X msg 61 327 \$1_hr_\$2_r0 label \$3;
+#X obj 573 148 value \$0count0;
+#X obj 670 -29 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 221 33 r \$0reset;
+#X msg 224 54 clear;
+#X obj 666 -49 r \$0reset;
+#X connect 0 0 5 0;
+#X connect 1 0 5 1;
+#X connect 1 0 2 1;
+#X connect 2 0 18 0;
+#X connect 2 1 8 0;
+#X connect 3 0 2 0;
+#X connect 4 0 15 0;
+#X connect 4 1 3 0;
+#X connect 5 0 17 0;
+#X connect 5 1 3 0;
+#X connect 7 0 24 0;
+#X connect 9 0 3 0;
+#X connect 10 0 25 0;
+#X connect 11 0 12 1;
+#X connect 11 1 25 0;
+#X connect 12 0 13 0;
+#X connect 13 0 3 0;
+#X connect 14 0 3 0;
+#X connect 15 0 7 0;
+#X connect 16 0 15 1;
+#X connect 17 0 4 0;
+#X connect 17 1 16 0;
+#X connect 18 0 15 1;
+#X connect 19 0 21 0;
+#X connect 19 1 10 0;
+#X connect 19 2 9 0;
+#X connect 20 0 12 0;
+#X connect 20 1 23 0;
+#X connect 21 0 23 1;
+#X connect 22 0 20 0;
+#X connect 23 0 11 0;
+#X connect 24 0 6 0;
+#X connect 26 0 19 0;
+#X connect 27 0 28 0;
+#X connect 28 0 3 0;
+#X connect 29 0 26 0;
+#X restore 240 54 pd coll;
+#N canvas 12 100 1010 606 scroll 0;
+#X obj 147 75 int;
+#X msg 178 155 8;
+#X obj 194 306 pack;
+#X obj 231 269 + 0;
+#X obj 174 521 outlet;
+#X obj 180 234 t f f;
+#X obj 342 522 outlet;
+#X msg 311 319 0;
+#X obj 134 27 t f b;
+#X msg 515 43 12;
+#X obj 421 142 max 0;
+#X obj 416 108 - 7;
+#X obj 137 50 expr (175-$f1)/175 * $f2;
+#X obj 130 4 r \$0_slider_s0;
+#X obj 413 82 value \$0count0;
+#X obj 307 285 value \$0off0;
+#X obj 178 209 tof/iterate;
+#X obj 651 352 f -1;
+#X text 687 362 previous;
+#X obj 587 508 list prepend \$0;
+#X obj 513 444 list append -1.67177e+07;
+#X obj 734 469 list append -1.67772e+07;
+#X obj 874 164 r \$0reset;
+#X obj 856 307 tof/iterate;
+#X msg 853 286 8;
+#X obj 547 278 -;
+#X obj 587 306 t f f f b;
+#X obj 549 216 pack;
+#X msg 548 248 \$2 \$1;
+#X obj 573 150 +;
+#X obj 653 394 maxlib/split 0 7;
+#X obj 512 409 maxlib/split 0 7;
+#X msg 783 267 -1;
+#X obj 571 173 t b f;
+#X obj 829 41 inlet;
+#X obj 786 184 t b b b;
+#X msg 737 229 -1;
+#X obj 571 124 r \$0query0;
+#X obj 183 122 t b f b f f f;
+#X msg 588 534 \; \$1_hr_\$2_r0 color -1 -1 \$3;
+#X connect 0 0 38 0;
+#X connect 1 0 16 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 1;
+#X connect 5 0 2 0;
+#X connect 5 1 3 0;
+#X connect 7 0 6 0;
+#X connect 8 0 12 0;
+#X connect 8 1 14 0;
+#X connect 9 0 14 0;
+#X connect 10 0 12 1;
+#X connect 11 0 10 0;
+#X connect 12 0 0 0;
+#X connect 13 0 8 0;
+#X connect 14 0 11 0;
+#X connect 16 0 5 0;
+#X connect 17 0 30 0;
+#X connect 19 0 39 0;
+#X connect 20 0 19 0;
+#X connect 21 0 19 0;
+#X connect 22 0 35 0;
+#X connect 23 0 21 0;
+#X connect 24 0 23 0;
+#X connect 25 0 26 0;
+#X connect 26 1 31 0;
+#X connect 26 2 17 1;
+#X connect 26 3 17 0;
+#X connect 27 0 28 0;
+#X connect 28 0 25 0;
+#X connect 29 0 33 0;
+#X connect 30 0 21 0;
+#X connect 31 0 20 0;
+#X connect 32 0 17 1;
+#X connect 33 0 27 0;
+#X connect 33 1 27 1;
+#X connect 34 0 35 0;
+#X connect 35 0 36 0;
+#X connect 35 1 32 0;
+#X connect 35 2 24 0;
+#X connect 36 0 27 1;
+#X connect 37 0 29 0;
+#X connect 38 0 1 0;
+#X connect 38 1 3 1;
+#X connect 38 2 7 0;
+#X connect 38 3 15 0;
+#X connect 38 4 27 0;
+#X connect 38 5 29 1;
+#X restore 196 -33 pd scroll;
+#N canvas 277 192 744 361 query 0;
+#X obj 39 239 outlet;
+#X obj 235 243 outlet;
+#X msg 241 200 1;
+#X msg 77 112 0;
+#X msg 154 107 1;
+#X msg 221 112 2;
+#X msg 265 100 3;
+#X msg 315 101 4;
+#X msg 369 106 5;
+#X msg 415 106 6;
+#X msg 479 109 7;
+#X obj 96 211 +;
+#X obj 116 180 value \$0off0;
+#X obj 71 59 r \$0_hr_0_s0;
+#X obj 153 61 r \$0_hr_1_s0;
+#X obj 232 56 r \$0_hr_2_s0;
+#X obj 304 60 r \$0_hr_3_s0;
+#X obj 382 63 r \$0_hr_4_s0;
+#X obj 460 62 r \$0_hr_5_s0;
+#X obj 545 60 r \$0_hr_6_s0;
+#X obj 630 63 r \$0_hr_7_s0;
+#X obj 324 193 s \$0query0;
+#X obj 97 150 t f b b f;
+#X connect 2 0 1 0;
+#X connect 3 0 22 0;
+#X connect 4 0 22 0;
+#X connect 5 0 22 0;
+#X connect 6 0 22 0;
+#X connect 7 0 22 0;
+#X connect 8 0 22 0;
+#X connect 9 0 22 0;
+#X connect 10 0 22 0;
+#X connect 11 0 0 0;
+#X connect 12 0 11 1;
+#X connect 13 0 3 0;
+#X connect 14 0 4 0;
+#X connect 15 0 5 0;
+#X connect 16 0 6 0;
+#X connect 17 0 7 0;
+#X connect 18 0 8 0;
+#X connect 19 0 9 0;
+#X connect 20 0 10 0;
+#X connect 22 0 11 0;
+#X connect 22 1 12 0;
+#X connect 22 2 2 0;
+#X connect 22 3 21 0;
+#X restore 263 -36 pd query;
+#X obj 399 -64 loadbang;
+#X msg 437 154 175;
+#X msg 256 115 175;
+#X msg 459 43 175;
+#X obj 461 65 s \$0_slider_r;
+#X obj 405 182 s \$0_slider_r0;
+#X obj 587 293 outlet;
+#X obj 490 31 s \$0reset;
+#X text 186 53 TAGS->;
+#X text 160 265 ABSTRACTIONS->;
+#X obj 254 82 t b a b a;
+#X obj 473 -69 r \$0love;
+#X obj 605 -25 loadbang;
+#X msg 605 2 set 1;
+#X obj 604 33 s \$0lover;
+#X obj 412 -34 f 1;
+#X obj 411 -9 t b f b b;
+#X obj 258 137 s \$0_slider_r;
+#X obj 435 97 t b b b;
+#X connect 1 0 0 0;
+#X connect 1 1 0 1;
+#X connect 2 0 0 0;
+#X connect 2 1 0 1;
+#X connect 3 0 4 2;
+#X connect 3 1 0 2;
+#X connect 4 0 17 0;
+#X connect 5 0 4 0;
+#X connect 5 1 4 1;
+#X connect 6 0 4 0;
+#X connect 6 1 4 1;
+#X connect 7 0 22 0;
+#X connect 8 0 12 0;
+#X connect 9 0 24 0;
+#X connect 10 0 11 0;
+#X connect 17 0 9 0;
+#X connect 17 1 3 0;
+#X connect 17 2 0 3;
+#X connect 17 2 1 0;
+#X connect 17 3 0 4;
+#X connect 18 0 22 0;
+#X connect 19 0 20 0;
+#X connect 20 0 21 0;
+#X connect 22 0 23 0;
+#X connect 23 0 25 0;
+#X connect 23 1 3 1;
+#X connect 23 2 10 0;
+#X connect 23 3 0 3;
+#X connect 23 3 14 0;
+#X connect 25 0 8 0;
+#X connect 25 1 5 0;
+#X connect 25 2 13 0;
+#X restore 229 -9 pd ./browser;
+#X obj -45 15 hradio 15 1 0 12 \$0_hr_0_s0 \$0_hr_0_r0 2d 2 8 1 9 -1
+-1 -262140 0;
+#X obj -45 31 hradio 15 1 0 12 \$0_hr_1_s0 \$0_hr_1_r0 3d 2 8 1 9 -1
+-1 -262140 0;
+#X obj -45 -9 cnv 15 198 22 empty empty TAG 1 12 1 12 -16645 -228856
+0;
+#X obj 154 -9 cnv 15 197 22 empty empty CLASS/ABSTRACTION 0 12 1 12
+-16645 -228856 0;
+#X obj -45 137 cnv 15 396 20 empty empty empty 20 12 0 14 -16645 -258401
+0;
+#X obj -41 141 tgl 11 0 \$0love \$0lover with:love 17 6 0 8 -162280
+-262144 -258401 1 1;
diff --git a/bubbles~-help.pd b/bubbles~-help.pd
new file mode 100644
index 0000000..2d4fbee
--- /dev/null
+++ b/bubbles~-help.pd
@@ -0,0 +1,8 @@
+#N canvas 2 89 332 258 10;
+#X text 19 28 Author: Chun Lee (sonicvariable.goto10.org);
+#X text 19 9 Description: Bubbles drone.;
+#X obj 21 151 mtl/out~;
+#X text 19 46 tags: synthesize~;
+#X obj 22 117 mtl/bubbles~;
+#X connect 4 0 2 0;
+#X connect 4 1 2 1;
diff --git a/bubbles~.pd b/bubbles~.pd
new file mode 100644
index 0000000..0213928
--- /dev/null
+++ b/bubbles~.pd
@@ -0,0 +1,191 @@
+#N canvas 1 57 450 300 10;
+#X obj 71 263 outlet~;
+#X obj 131 263 outlet~;
+#N canvas 225 283 713 556 dronebubbles 0;
+#X obj 78 83 hip~ 200;
+#N canvas 236 302 496 538 rand_sig 0;
+#X obj 33 382 vline~;
+#X msg 33 362 \$1 \$2;
+#X obj 287 132 delay;
+#X obj 287 112 t b f;
+#X obj 264 135 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X obj 32 430 outlet~;
+#X obj 33 40 inlet;
+#X obj 73 39 inlet;
+#X obj 32 407 *~ 0.8;
+#X obj 21 111 cnv 15 170 180 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 33 341 pack f f;
+#X obj 84 321 + 1;
+#X obj 33 91 t b b;
+#X obj 33 160 t b;
+#X obj 77 160 t b;
+#X obj 110 183 random 200;
+#X obj 110 208 + 1;
+#X obj 110 229 / 100;
+#X obj 110 249 - 1;
+#X obj 33 183 random 200;
+#X obj 33 208 + 1;
+#X obj 33 229 / 100;
+#X obj 33 249 - 1;
+#X obj 110 271 * 0.2;
+#X obj 33 138 moses 1;
+#X obj 33 116 random 10;
+#X obj 84 301 random 20;
+#X obj 266 163 spigot;
+#X connect 0 0 8 0;
+#X connect 1 0 0 0;
+#X connect 2 0 27 0;
+#X connect 3 0 2 0;
+#X connect 3 1 2 1;
+#X connect 4 0 27 1;
+#X connect 6 0 4 0;
+#X connect 7 0 12 0;
+#X connect 8 0 5 0;
+#X connect 10 0 1 0;
+#X connect 11 0 10 1;
+#X connect 11 0 3 0;
+#X connect 12 0 25 0;
+#X connect 12 1 26 0;
+#X connect 13 0 19 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 18 0 23 0;
+#X connect 19 0 20 0;
+#X connect 20 0 21 0;
+#X connect 21 0 22 0;
+#X connect 22 0 10 0;
+#X connect 23 0 10 0;
+#X connect 24 0 13 0;
+#X connect 24 1 14 0;
+#X connect 25 0 24 0;
+#X connect 26 0 11 0;
+#X connect 27 0 12 0;
+#X restore 59 56 pd rand_sig;
+#X obj 66 509 outlet~;
+#X obj 137 508 outlet~;
+#X obj 59 10 loadbang;
+#X msg 59 33 1;
+#X obj 98 33 t b;
+#X obj 239 448 expr~ max(min($v1 \, $f2/10) \, -$f2/10);
+#X obj 279 477 expr~ max(min($v1 \, $f2/10) \, -$f2/10);
+#X msg 488 420 10;
+#X obj 488 400 loadbang;
+#X obj 83 169 *~ 10000;
+#X obj 62 214 *~ 5;
+#X obj 194 184 loadbang;
+#X floatatom 162 152 5 0 0 0 - - -;
+#N canvas 572 221 496 538 rand_sig 0;
+#X obj 33 419 vline~;
+#X msg 33 399 \$1 \$2;
+#X obj 33 374 pack f f;
+#X obj 84 350 + 1;
+#X obj 33 91 t b b;
+#X obj 246 161 delay;
+#X obj 246 129 t b f;
+#X obj 228 165 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X floatatom 183 282 5 0 0 0 - - -;
+#X obj 33 175 t b;
+#X obj 77 175 t b;
+#X obj 110 206 random 200;
+#X obj 110 231 + 1;
+#X obj 110 252 / 100;
+#X obj 110 272 - 1;
+#X obj 33 206 random 200;
+#X obj 33 231 + 1;
+#X obj 33 252 / 100;
+#X obj 33 272 - 1;
+#X obj 113 294 * 0.2;
+#X obj 33 153 moses 1;
+#X obj 33 116 random 10;
+#X obj 32 467 outlet~;
+#X obj 32 16 inlet;
+#X obj 97 17 inlet;
+#X obj 28 51 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 32 444 *~ 0.8;
+#X obj 84 330 random 2;
+#X obj 231 205 spigot;
+#X connect 0 0 26 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 1;
+#X connect 3 0 6 0;
+#X connect 4 0 21 0;
+#X connect 4 1 27 0;
+#X connect 5 0 28 0;
+#X connect 6 0 5 0;
+#X connect 6 1 5 1;
+#X connect 7 0 28 1;
+#X connect 8 0 27 1;
+#X connect 9 0 15 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 14 0 19 0;
+#X connect 15 0 16 0;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 18 0 2 0;
+#X connect 19 0 2 0;
+#X connect 20 0 9 0;
+#X connect 20 1 10 0;
+#X connect 21 0 20 0;
+#X connect 23 0 7 0;
+#X connect 24 0 4 0;
+#X connect 25 0 4 0;
+#X connect 26 0 22 0;
+#X connect 27 0 3 0;
+#X connect 28 0 4 0;
+#X restore 61 117 pd rand_sig;
+#X obj 60 144 *~ 2;
+#X obj 61 189 vcf~ 99;
+#X floatatom 194 225 5 0 0 0 - - -;
+#X obj 222 291 sig~ 1;
+#X obj 221 332 -~;
+#X obj 178 375 *~;
+#X obj 206 376 *~;
+#X msg 194 205 5;
+#X msg 226 269 1;
+#X obj 149 270 abs~;
+#X obj 194 243 cyclone/rand~;
+#X connect 0 0 11 0;
+#X connect 1 0 0 0;
+#X connect 4 0 5 0;
+#X connect 4 0 6 0;
+#X connect 5 0 1 0;
+#X connect 5 0 15 0;
+#X connect 6 0 1 1;
+#X connect 6 0 15 1;
+#X connect 7 0 2 0;
+#X connect 8 0 3 0;
+#X connect 9 0 7 1;
+#X connect 9 0 8 1;
+#X connect 10 0 9 0;
+#X connect 11 0 17 1;
+#X connect 12 0 21 0;
+#X connect 12 0 22 0;
+#X connect 13 0 23 0;
+#X connect 13 0 24 0;
+#X connect 14 0 17 2;
+#X connect 15 0 16 0;
+#X connect 16 0 17 0;
+#X connect 17 0 12 0;
+#X connect 18 0 26 0;
+#X connect 19 0 20 0;
+#X connect 20 0 22 1;
+#X connect 21 0 7 0;
+#X connect 22 0 8 0;
+#X connect 23 0 18 0;
+#X connect 24 0 19 0;
+#X connect 25 0 20 1;
+#X connect 25 0 21 1;
+#X connect 26 0 25 0;
+#X restore 91 109 pd dronebubbles;
+#X connect 2 0 0 0;
+#X connect 2 1 1 0;
diff --git a/buttonColor-help.pd b/buttonColor-help.pd
new file mode 100644
index 0000000..5f78282
--- /dev/null
+++ b/buttonColor-help.pd
@@ -0,0 +1,30 @@
+#N canvas 78 109 637 527 10;
+#X obj 46 156 hradio 15 1 0 3 \$0bs \$0br button 3 7 0 9 -1 -1 -261684
+0;
+#X obj 47 59 hradio 15 1 0 3 \$0rs \$0rr empty 3 7 0 10 -1 -13184 -1
+0;
+#X text 39 -21 description: colorize a custom button on presses.;
+#X floatatom 143 183 5 0 0 0 - - -;
+#X floatatom 145 129 5 0 0 0 - - -;
+#X obj 150 56 buttonColor \$0rs \$0rr -1 -800000 -1 -1.67117e+07 -1
+-1 250;
+#X floatatom 148 36 5 0 0 0 - - -;
+#X floatatom 150 79 5 0 0 0 - - -;
+#X text 52 228 Argument 1: GUI element's send symbol;
+#X text 52 244 Argument 2: GUI element's receive symbol;
+#X text 52 260 Argument 3: color of background when unpressed;
+#X text 52 276 Argument 4: color of front when unpressed;
+#X text 52 292 Argument 5: color of label when unpressed;
+#X text 52 308 Argument 6: color of background when pressed;
+#X text 52 324 Argument 7: color of front when pressed;
+#X text 52 340 Argument 8: color of label when pressed;
+#X text 52 356 Argument 9: release time;
+#X text 186 107 For the color coding conversion \, see:;
+#X obj 422 110 mtl/rgbToNum;
+#X obj 144 158 buttonColor \$0bs \$0br -1 -1 -1.677e+07 -1 -1 -1 250
+;
+#X text 44 -1 tags: ui;
+#X connect 4 0 19 0;
+#X connect 5 0 7 0;
+#X connect 6 0 5 0;
+#X connect 19 0 3 0;
diff --git a/buttonColor.pd b/buttonColor.pd
new file mode 100644
index 0000000..48e7d81
--- /dev/null
+++ b/buttonColor.pd
@@ -0,0 +1,20 @@
+#N canvas 0 0 891 585 10;
+#X obj 60 60 inlet;
+#X msg 171 456 color \$1 \$2 \$3;
+#X obj 147 85 r \$1;
+#X obj 245 192 delay \$9;
+#X obj 166 366 pack \$6 \$7 \$8;
+#X obj 393 397 pack \$3 \$4 \$5;
+#X obj 59 119 s \$2;
+#X obj 124 504 s \$2;
+#X obj 166 154 t a b b;
+#X obj 50 545 outlet;
+#X connect 0 0 6 0;
+#X connect 1 0 7 0;
+#X connect 2 0 8 0;
+#X connect 3 0 5 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 8 0 9 0;
+#X connect 8 1 3 0;
+#X connect 8 2 4 0;
diff --git a/byteToBinary-help.pd b/byteToBinary-help.pd
new file mode 100644
index 0000000..5b535dc
--- /dev/null
+++ b/byteToBinary-help.pd
@@ -0,0 +1,60 @@
+#N canvas 14 367 789 332 10;
+#X floatatom 14 206 5 0 0 0 - - -;
+#X obj 14 136 metro 250;
+#X obj 14 115 tgl 15 0 empty empty empty 20 7 0 8 -33289 -262144 -1
+1 1;
+#X obj 14 93 loadbang;
+#X obj 14 159 f 0;
+#X obj 40 159 + 1;
+#X obj 14 182 % 256;
+#X text 12 287 A classical binary counter !;
+#X obj 101 207 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X text 121 205 Endianess (1 = big endian \, defaults to 0 : little
+endian) Can be the 1st arg as well.;
+#X floatatom 547 213 0 0 0 0 - - -;
+#X floatatom 530 236 0 0 0 0 - - -;
+#X floatatom 513 262 0 0 0 0 - - -;
+#X text 577 214 sec;
+#X text 556 235 min;
+#X obj 513 164 metro 1000;
+#X obj 513 145 tgl 15 0 empty empty empty 20 7 0 8 -33289 -262144 -1
+1 1;
+#X obj 513 120 loadbang;
+#X text 511 103 A binary clock.;
+#X obj 513 188 zexy/time;
+#X text 539 262 hour;
+#X obj 12 10 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 17 52 tags: conversion;
+#X text 17 14 Description: Converts a byte into a list of 8 bits;
+#X obj 14 250 mtl/seq1x8;
+#X obj 606 165 mtl/seq1x8;
+#X obj 605 227 mtl/seq1x8;
+#X obj 606 289 mtl/seq1x8;
+#X obj 14 228 mtl/byteToBinary;
+#X obj 606 143 mtl/byteToBinary;
+#X obj 605 205 mtl/byteToBinary;
+#X obj 606 267 mtl/byteToBinary;
+#X connect 0 0 28 0;
+#X connect 1 0 4 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 4 0 5 0;
+#X connect 4 0 6 0;
+#X connect 5 0 4 1;
+#X connect 6 0 0 0;
+#X connect 8 0 28 1;
+#X connect 15 0 19 0;
+#X connect 16 0 15 0;
+#X connect 17 0 16 0;
+#X connect 19 0 12 0;
+#X connect 19 0 31 0;
+#X connect 19 1 11 0;
+#X connect 19 1 30 0;
+#X connect 19 2 10 0;
+#X connect 19 2 29 0;
+#X connect 28 0 24 0;
+#X connect 29 0 25 0;
+#X connect 30 0 26 0;
+#X connect 31 0 27 0;
diff --git a/byteToBinary.pd b/byteToBinary.pd
new file mode 100644
index 0000000..e148e03
--- /dev/null
+++ b/byteToBinary.pd
@@ -0,0 +1,96 @@
+#N canvas 416 190 1024 516 10;
+#X obj 335 120 & 1;
+#X obj 466 263 pack f f f f f f f f;
+#X obj 399 110 & 2;
+#X obj 446 109 & 4;
+#X obj 498 106 & 8;
+#X obj 563 109 & 16;
+#X obj 639 116 & 32;
+#X obj 709 114 & 64;
+#X obj 763 116 & 128;
+#X obj 188 338 outlet;
+#X obj 168 -42 inlet;
+#X obj 397 135 >> 1;
+#X obj 445 134 >> 2;
+#X obj 498 132 >> 3;
+#X obj 566 140 >> 4;
+#X obj 642 152 >> 5;
+#X obj 712 147 >> 6;
+#X obj 767 149 >> 7;
+#X obj 583 -21 inlet;
+#X obj 274 203 & 1;
+#X obj -92 250 pack f f f f f f f f;
+#X obj 189 184 & 2;
+#X obj 141 183 & 4;
+#X obj 92 184 & 8;
+#X obj 48 179 & 16;
+#X obj 3 173 & 32;
+#X obj -45 171 & 64;
+#X obj -97 171 & 128;
+#X obj 187 209 >> 1;
+#X obj 140 208 >> 2;
+#X obj 92 210 >> 3;
+#X obj 51 210 >> 4;
+#X obj 6 209 >> 5;
+#X obj -42 204 >> 6;
+#X obj -93 204 >> 7;
+#X obj 290 -47 loadbang;
+#X obj -92 134 t f f f f f f f f;
+#X obj 437 53 t f f f f f f f f;
+#X obj 290 -25 f \$1;
+#X text 329 -25 Defaults to 0;
+#X obj 168 10 zexy/demultiplex 0 1;
+#X connect 0 0 1 0;
+#X connect 1 0 9 0;
+#X connect 2 0 11 0;
+#X connect 3 0 12 0;
+#X connect 4 0 13 0;
+#X connect 5 0 14 0;
+#X connect 6 0 15 0;
+#X connect 7 0 16 0;
+#X connect 8 0 17 0;
+#X connect 10 0 40 0;
+#X connect 11 0 1 1;
+#X connect 12 0 1 2;
+#X connect 13 0 1 3;
+#X connect 14 0 1 4;
+#X connect 15 0 1 5;
+#X connect 16 0 1 6;
+#X connect 17 0 1 7;
+#X connect 18 0 40 1;
+#X connect 19 0 20 7;
+#X connect 20 0 9 0;
+#X connect 21 0 28 0;
+#X connect 22 0 29 0;
+#X connect 23 0 30 0;
+#X connect 24 0 31 0;
+#X connect 25 0 32 0;
+#X connect 26 0 33 0;
+#X connect 27 0 34 0;
+#X connect 28 0 20 6;
+#X connect 29 0 20 5;
+#X connect 30 0 20 4;
+#X connect 31 0 20 3;
+#X connect 32 0 20 2;
+#X connect 33 0 20 1;
+#X connect 34 0 20 0;
+#X connect 35 0 38 0;
+#X connect 36 0 27 0;
+#X connect 36 1 26 0;
+#X connect 36 2 25 0;
+#X connect 36 3 24 0;
+#X connect 36 4 23 0;
+#X connect 36 5 22 0;
+#X connect 36 6 21 0;
+#X connect 36 7 19 0;
+#X connect 37 0 0 0;
+#X connect 37 1 2 0;
+#X connect 37 2 3 0;
+#X connect 37 3 4 0;
+#X connect 37 4 5 0;
+#X connect 37 5 6 0;
+#X connect 37 6 7 0;
+#X connect 37 7 8 0;
+#X connect 38 0 40 1;
+#X connect 40 0 36 0;
+#X connect 40 1 37 0;
diff --git a/bytesToIntSigned-help.pd b/bytesToIntSigned-help.pd
new file mode 100644
index 0000000..72e9f47
--- /dev/null
+++ b/bytesToIntSigned-help.pd
@@ -0,0 +1,23 @@
+#N canvas 662 106 422 373 10;
+#X obj 104 312 print;
+#X msg 104 105 0 0;
+#X msg 158 106 0 1;
+#X msg 231 108 255 255;
+#X msg 242 134 0 255;
+#X msg 254 162 130 255;
+#X msg 268 216 127 255;
+#X msg 274 243 126 255;
+#X msg 262 188 128 0;
+#X text 31 15 Description: Converts a high byte and low byte pair to
+a signed integer using two's compliment.;
+#X obj 104 289 mtl/bytesToIntSigned;
+#X text 31 50 tags: conversion;
+#X connect 1 0 10 0;
+#X connect 2 0 10 0;
+#X connect 3 0 10 0;
+#X connect 4 0 10 0;
+#X connect 5 0 10 0;
+#X connect 6 0 10 0;
+#X connect 7 0 10 0;
+#X connect 8 0 10 0;
+#X connect 10 0 0 0;
diff --git a/bytesToIntSigned.pd b/bytesToIntSigned.pd
new file mode 100644
index 0000000..71a3f55
--- /dev/null
+++ b/bytesToIntSigned.pd
@@ -0,0 +1,29 @@
+#N canvas 0 0 521 475 10;
+#X obj 136 300 t f b;
+#X obj 131 91 unpack f f;
+#X obj 130 17 inlet bytes;
+#X obj 316 207 f;
+#X obj 376 207 f;
+#X obj 125 206 t f b;
+#X obj 217 368 +;
+#X obj 211 410 outlet;
+#X obj 379 245 - 256;
+#X obj 130 150 moses 128;
+#X obj 98 340 * 256;
+#X obj 190 182 - 255;
+#X connect 0 0 10 0;
+#X connect 0 1 4 0;
+#X connect 1 0 9 0;
+#X connect 1 1 3 1;
+#X connect 1 1 4 1;
+#X connect 2 0 1 0;
+#X connect 3 0 6 1;
+#X connect 4 0 8 0;
+#X connect 5 0 10 0;
+#X connect 5 1 3 0;
+#X connect 6 0 7 0;
+#X connect 8 0 6 1;
+#X connect 9 0 5 0;
+#X connect 9 1 11 0;
+#X connect 10 0 6 0;
+#X connect 11 0 0 0;
diff --git a/center-help.pd b/center-help.pd
new file mode 100644
index 0000000..b07721d
--- /dev/null
+++ b/center-help.pd
@@ -0,0 +1,13 @@
+#N canvas 316 339 409 209 10;
+#X floatatom 127 109 5 0 0 0 - - -;
+#X floatatom 127 160 5 0 0 0 - - -;
+#X text 25 9 Description: returns the center value between the minimum
+and maximum received values.;
+#X msg 184 114 bang;
+#X text 125 88 Inlet_1 : stream of floats.;
+#X text 217 113 Inlet_2 : reset;
+#X obj 127 137 mtl/center;
+#X text 27 44 tags: math;
+#X connect 0 0 6 0;
+#X connect 3 0 6 1;
+#X connect 6 0 1 0;
diff --git a/center.pd b/center.pd
new file mode 100644
index 0000000..50e6a26
--- /dev/null
+++ b/center.pd
@@ -0,0 +1,48 @@
+#N canvas 0 0 663 431 10;
+#X obj 261 52 inlet;
+#X text 262 34 reset;
+#X obj 114 46 inlet;
+#X text 114 28 values;
+#X obj 139 106 t f f;
+#X obj 41 67 loadbang;
+#X obj 71 155 spigot;
+#X msg 41 89 1;
+#X obj 115 243 moses;
+#X obj 178 255 moses;
+#X obj 169 335 +;
+#X obj 170 286 t b f;
+#X obj 166 361 / 2;
+#X obj 134 394 outlet;
+#X msg 37 200 0;
+#X obj 105 322 float;
+#X msg 131 281 bang;
+#X text 352 132 lpn_middle :;
+#X text 351 188 INLET 2 :;
+#X text 354 165 INLET 1 : series of individual values to be compared
+;
+#X text 408 189 reset internal memory;
+#X text 360 257 OUTLET 1: the lpn_middle value between the minimum and
+maximum values received by inlet 1;
+#X connect 0 0 7 0;
+#X connect 2 0 4 0;
+#X connect 4 0 8 0;
+#X connect 4 1 6 0;
+#X connect 5 0 7 0;
+#X connect 6 0 8 1;
+#X connect 6 0 9 1;
+#X connect 6 0 14 0;
+#X connect 6 0 15 1;
+#X connect 7 0 6 1;
+#X connect 8 0 15 0;
+#X connect 8 1 9 0;
+#X connect 9 0 16 0;
+#X connect 9 1 11 0;
+#X connect 10 0 12 0;
+#X connect 11 0 15 0;
+#X connect 11 1 10 1;
+#X connect 11 1 9 1;
+#X connect 12 0 13 0;
+#X connect 14 0 6 1;
+#X connect 15 0 10 0;
+#X connect 15 0 8 1;
+#X connect 16 0 15 0;
diff --git a/channel~-help.pd b/channel~-help.pd
new file mode 100644
index 0000000..ccbe7c6
--- /dev/null
+++ b/channel~-help.pd
@@ -0,0 +1,34 @@
+#N canvas 1063 163 829 470 10;
+#X text 35 22 Description: Controls the panning and volume of a stereo
+signal.;
+#X obj 41 88 adc~;
+#X text 38 54 tags: mix~;
+#X obj 39 122 mtl/channel~ /id chan0;
+#X obj 221 261 mtl/aux~ 0;
+#X obj 221 303 mtl/vu~;
+#X obj 380 302 mtl/vu~;
+#X obj 380 260 mtl/aux~ 1;
+#X obj 42 227 mtl/main~;
+#X obj 42 271 mtl/out~;
+#X obj 277 91 hsl 100 15 -20 20 0 0 \$0/chan0/hi \$0/chan0/hi_ /chan0/hi
+105 7 0 10 -262144 -1 -1 8900 1;
+#X obj 277 111 hsl 100 15 -20 20 0 0 \$0/chan0/mid \$0/chan0/mid_ /chan0/mid
+105 7 0 10 -262144 -1 -1 7900 1;
+#X obj 277 131 hsl 100 15 -20 20 0 0 \$0/chan0/low \$0/chan0/low_ /chan0/low
+105 7 0 10 -262144 -1 -1 9900 1;
+#X obj 277 151 hsl 100 15 -1 1 0 0 \$0/chan0/pan \$0/chan0/pan_ /chan0/pan
+105 7 0 10 -262144 -1 -1 0 1;
+#X obj 277 171 hradio 15 1 0 7 \$0/chan0/num \$0/chan0/num_ /chan0/num
+107 7 0 10 -262144 -1 -1 0;
+#X obj 277 191 hsl 100 15 0 1 0 0 \$0/chan0/aux \$0/chan0/aux_ /chan0/aux
+105 7 0 10 -262144 -1 -1 0 1;
+#X obj 277 211 hsl 100 15 0 1 0 0 \$0/chan0/main \$0/chan0/main_ /chan0/main
+105 7 0 10 -262144 -1 -1 0 1;
+#X connect 1 0 3 0;
+#X connect 1 1 3 1;
+#X connect 4 0 5 0;
+#X connect 4 1 5 1;
+#X connect 7 0 6 0;
+#X connect 7 1 6 1;
+#X connect 8 0 9 0;
+#X connect 8 1 9 1;
diff --git a/channel~.pd b/channel~.pd
new file mode 100644
index 0000000..e58a7c3
--- /dev/null
+++ b/channel~.pd
@@ -0,0 +1,94 @@
+#N canvas 1079 16 948 682 10;
+#X obj 240 66 inlet~;
+#X obj 424 66 inlet~;
+#X obj 598 288 min 0;
+#X obj 368 279 max 0;
+#X obj 268 379 *~;
+#X obj 370 376 line~;
+#X msg 370 356 \$1 10;
+#X obj 371 333 -;
+#X msg 373 305 1 \$1;
+#X obj 612 320 + 1;
+#X obj 615 371 line~;
+#X msg 615 351 \$1 10;
+#X obj 541 385 *~;
+#X msg 606 426 set MTLAUX\$1L;
+#X obj 177 484 *~;
+#X obj 213 571 *~;
+#X obj 388 450 line~;
+#X msg 384 433 \$1 10;
+#X obj 622 526 *~;
+#X obj 474 583 *~;
+#X obj 345 548 line~;
+#X msg 345 528 \$1 10;
+#X msg 724 419 set MTLAUX\$1R;
+#X obj 236 185 iemlib/hml_shelf~ 0 200 0 4000 0 50;
+#X obj 466 181 iemlib/hml_shelf~ 0 200 0 4000 0 50;
+#X obj 534 116 tof/param /hi 0 /g knob -20 20;
+#X obj 485 78 tof/param /mid 0 /g knob -20 20;
+#X obj 276 101 tof/param /low 0 /g knob -20 20;
+#X obj 597 242 tof/param /pan 0 /g slider -1 1;
+#X obj 313 405 tof/param /aux 0 /g slider 0 1;
+#X obj 254 489 tof/param /main 0 /g slider 0 1;
+#X obj 699 337 tof/param /auxn 0 /g nbx;
+#X obj 12 181 hsl 64 13 0 127 0 0 empty empty hi 10 7 0 9 -262144 -1
+-1 0 1;
+#X obj 12 196 hsl 64 13 0 127 0 0 empty empty mid 10 7 0 9 -262144
+-1 -1 0 1;
+#X obj 12 211 hsl 64 13 0 127 0 0 empty empty low 10 7 0 9 -262144
+-1 -1 0 1;
+#X obj 89 181 hsl 69 15 0 127 0 0 empty empty pan 10 7 0 9 -262144
+-1 -1 0 1;
+#X obj 117 199 hsl 40 13 0 127 0 0 empty empty aux 10 7 0 9 -262144
+-1 -1 0 1;
+#X obj 86 198 nbx 2 14 -1e+37 1e+37 0 0 empty empty empty 30 7 0 9
+-262144 -1 -1 0 256;
+#X obj 89 215 hsl 69 15 0 127 0 0 empty empty main 10 7 0 9 -262144
+-1 -1 0 1;
+#X obj 15 258 cnv 15 100 16 empty \$0c synth 5 7 0 9 -1 -262144 0;
+#X obj 723 547 tof/common~;
+#X obj 476 624 tof/common~ MTLMAINR;
+#X obj 200 611 tof/common~ MTLMAINL;
+#X obj 93 560 tof/common~;
+#X connect 0 0 23 0;
+#X connect 1 0 24 0;
+#X connect 2 0 9 0;
+#X connect 3 0 8 0;
+#X connect 4 0 15 0;
+#X connect 4 0 14 0;
+#X connect 5 0 4 1;
+#X connect 6 0 5 0;
+#X connect 7 0 6 0;
+#X connect 8 0 7 0;
+#X connect 9 0 11 0;
+#X connect 10 0 12 1;
+#X connect 11 0 10 0;
+#X connect 12 0 19 1;
+#X connect 12 0 18 1;
+#X connect 13 0 43 0;
+#X connect 14 0 43 0;
+#X connect 15 0 42 0;
+#X connect 16 0 18 0;
+#X connect 16 0 14 1;
+#X connect 17 0 16 0;
+#X connect 18 0 40 0;
+#X connect 19 0 41 0;
+#X connect 20 0 15 1;
+#X connect 20 0 19 0;
+#X connect 21 0 20 0;
+#X connect 22 0 40 0;
+#X connect 23 0 4 0;
+#X connect 24 0 12 0;
+#X connect 25 0 23 5;
+#X connect 25 0 24 5;
+#X connect 26 0 23 3;
+#X connect 26 0 24 3;
+#X connect 27 0 23 1;
+#X connect 27 0 24 1;
+#X connect 28 0 3 0;
+#X connect 28 0 2 0;
+#X connect 29 0 17 0;
+#X connect 30 0 21 0;
+#X connect 31 0 22 0;
+#X connect 31 0 13 0;
+#X coords 0 0 1 1 160 74 0;
diff --git a/chordGuess-help.pd b/chordGuess-help.pd
new file mode 100644
index 0000000..c4f3747
--- /dev/null
+++ b/chordGuess-help.pd
@@ -0,0 +1,27 @@
+#N canvas 359 54 555 376 10;
+#X obj 39 105 notein;
+#X obj 39 141 pack f f;
+#X obj 120 233 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 137 231 clear notes that might be stuck on.;
+#X obj 39 277 route none;
+#X obj 39 305 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 16 3 Description: Processes a stream of midi notes so that
+we only keep the notes that are currently on. Furthermore \, it rounds
+them all to the same octave so that we can use them as a chord in musical
+computations.;
+#X obj 116 105 mtl/piano 1;
+#X text 16 63 tags: midi;
+#X obj 39 252 mtl/chordGuess;
+#X obj 96 301 cyclone/prepend set;
+#X msg 96 326;
+#X connect 0 0 1 0;
+#X connect 0 1 1 1;
+#X connect 1 0 9 0;
+#X connect 2 0 9 1;
+#X connect 4 0 5 0;
+#X connect 4 1 10 0;
+#X connect 7 0 1 0;
+#X connect 9 0 4 0;
+#X connect 10 0 11 0;
diff --git a/chordGuess.pd b/chordGuess.pd
new file mode 100644
index 0000000..1894caf
--- /dev/null
+++ b/chordGuess.pd
@@ -0,0 +1,92 @@
+#N canvas 489 38 525 783 10;
+#X obj 105 84 inlet stream of midi notes;
+#X obj 135 278 route 0;
+#X obj 105 226 t b l;
+#X msg 135 253 \$3 \$1 \$2;
+#X msg 179 303 \$2 \$3;
+#X msg 135 327 remove \$1;
+#X msg 84 329 dump;
+#X obj 105 168 poly 24;
+#X msg 135 454;
+#X msg 38 369 set;
+#X obj 135 400 % 12;
+#X msg 135 424 add2 \$1;
+#X obj 105 200 pack f f f;
+#X text 208 252 velocity \, index \, note;
+#X text 227 299 index \, note;
+#X text 190 199 voice \, note \, velocity;
+#X msg 178 135 61 80;
+#X msg 168 107 61 0;
+#X msg 44 102 62 34;
+#X msg 45 129 62 0;
+#X obj 433 91 inlet clear;
+#X msg 433 117 clear;
+#X msg 135 703;
+#X msg 248 668 add2 \$1;
+#X msg 211 593 -1;
+#X obj 211 623 change;
+#X obj 135 552 t b l b;
+#X obj 211 645 sel -1;
+#X obj 26 287 t b b b;
+#X obj 135 482 t l b;
+#X text 244 593 resets the change;
+#X text 172 704 uniques notes;
+#X obj 135 795 outlet;
+#X msg 35 730;
+#X text 101 728 There is still a little delay where we get "none" but
+there is actually a set of notes being processed. It happens on every
+chord. This should be ignored by some way.;
+#X obj 307 781 cnv 15 200 35 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 319 798 MUZAQ - GNU Public License;
+#X text 316 783 (c) 2006 Alexandre Quessy;
+#X obj 433 144 t b a a;
+#X text 171 455 all notes on \, in one octave;
+#X obj 135 378 cyclone/coll;
+#C restore;
+#X obj 135 526 zexy/sort;
+#X obj 154 574 zexy/drip;
+#X connect 0 0 7 0;
+#X connect 1 0 5 0;
+#X connect 1 1 4 0;
+#X connect 2 0 28 0;
+#X connect 2 1 3 0;
+#X connect 3 0 1 0;
+#X connect 4 0 40 0;
+#X connect 5 0 40 0;
+#X connect 6 0 40 0;
+#X connect 7 0 12 0;
+#X connect 7 1 12 1;
+#X connect 7 2 12 2;
+#X connect 8 0 29 0;
+#X connect 9 0 8 0;
+#X connect 9 0 22 0;
+#X connect 9 0 33 0;
+#X connect 10 0 11 0;
+#X connect 11 0 8 0;
+#X connect 12 0 2 0;
+#X connect 16 0 7 0;
+#X connect 17 0 7 0;
+#X connect 18 0 7 0;
+#X connect 19 0 7 0;
+#X connect 20 0 21 0;
+#X connect 21 0 38 0;
+#X connect 22 0 32 0;
+#X connect 23 0 22 0;
+#X connect 24 0 25 0;
+#X connect 25 0 27 0;
+#X connect 26 0 22 0;
+#X connect 26 1 42 0;
+#X connect 27 1 23 0;
+#X connect 28 0 8 0;
+#X connect 28 1 6 0;
+#X connect 28 2 9 0;
+#X connect 29 0 41 0;
+#X connect 29 1 24 0;
+#X connect 33 0 32 0;
+#X connect 38 0 9 0;
+#X connect 38 1 40 0;
+#X connect 38 2 7 0;
+#X connect 40 0 10 0;
+#X connect 41 0 26 0;
+#X connect 42 0 25 0;
diff --git a/chronometer-help.pd b/chronometer-help.pd
new file mode 100644
index 0000000..f1aab3f
--- /dev/null
+++ b/chronometer-help.pd
@@ -0,0 +1,7 @@
+#N canvas 247 316 405 199 10;
+#X text 95 152 know when you have to stop your gig;
+#X obj 133 91 mtl/chronometer;
+#X obj 15 8 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 20 12 description: a very basic gop chronometer;
+#X text 20 49 tags: timing;
diff --git a/chronometer.pd b/chronometer.pd
new file mode 100644
index 0000000..ebaf57a
--- /dev/null
+++ b/chronometer.pd
@@ -0,0 +1,71 @@
+#N canvas 204 160 505 418 10;
+#X obj 238 264 metro 1000;
+#X obj 238 312 +;
+#X msg 238 288 1;
+#X msg 275 221 0;
+#X obj 173 264 sel 0;
+#X obj 173 313 +;
+#X msg 173 289 1;
+#X obj 267 311 % 60;
+#X obj 173 244 spigot;
+#X obj 253 113 t b b b;
+#X msg 297 146 0;
+#X msg 253 144 1;
+#X obj 110 265 sel 0;
+#X obj 110 314 +;
+#X msg 110 290 1;
+#X obj 202 312 % 60;
+#X obj 139 313 % 24;
+#X obj 253 89 inlet reset;
+#X obj 139 341 outlet hour;
+#X obj 222 341 outlet minute;
+#X obj 319 341 outlet second;
+#X obj 238 236 inlet start_stop;
+#X obj 191 119 bng 11 250 50 0 empty empty reset 14 5 0 8 -228856 -33289
+-33289;
+#X floatatom 195 135 5 0 0 0 : #0s #;
+#X floatatom 148 135 5 0 0 0 : #0m #;
+#X floatatom 102 135 5 0 0 0 - #0h #;
+#X obj 101 118 tgl 14 0 empty empty start/stop 17 7 0 9 -66577 -262144
+-1 0 1;
+#X obj 100 340 s \$0h;
+#X obj 200 289 s \$0m;
+#X obj 309 312 s \$0s;
+#X obj 110 245 spigot 1;
+#X connect 0 0 2 0;
+#X connect 1 0 7 0;
+#X connect 2 0 1 0;
+#X connect 3 0 7 0;
+#X connect 3 0 15 0;
+#X connect 3 0 16 0;
+#X connect 4 0 6 0;
+#X connect 5 0 15 0;
+#X connect 6 0 5 0;
+#X connect 7 0 1 1;
+#X connect 7 0 8 0;
+#X connect 7 0 20 0;
+#X connect 7 0 29 0;
+#X connect 8 0 4 0;
+#X connect 9 0 11 0;
+#X connect 9 1 3 0;
+#X connect 9 2 10 0;
+#X connect 10 0 8 1;
+#X connect 10 0 30 1;
+#X connect 11 0 8 1;
+#X connect 11 0 30 1;
+#X connect 12 0 14 0;
+#X connect 13 0 16 0;
+#X connect 14 0 13 0;
+#X connect 15 0 5 1;
+#X connect 15 0 19 0;
+#X connect 15 0 28 0;
+#X connect 15 0 30 0;
+#X connect 16 0 13 1;
+#X connect 16 0 18 0;
+#X connect 16 0 27 0;
+#X connect 17 0 9 0;
+#X connect 21 0 0 0;
+#X connect 22 0 9 0;
+#X connect 26 0 0 0;
+#X connect 30 0 12 0;
+#X coords 0 -1 1 1 135 54 1 100 100;
diff --git a/clap808~-help.pd b/clap808~-help.pd
new file mode 100644
index 0000000..06333b9
--- /dev/null
+++ b/clap808~-help.pd
@@ -0,0 +1,26 @@
+#N canvas 1126 234 738 360 10;
+#X obj 82 180 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 13 66 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X text 44 66 <- play it;
+#X text 349 285 Author: Roman Haefeli;
+#X text 109 180 <- can be used to switch~ dsp off;
+#X text 348 307 Version: 2007-09-13;
+#X text 12 3 Description: Emulation of the clap from the fancy tr808
+beatmachine;
+#X obj 335 64 cnv 15 370 130 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X text 341 68 SYNOPSIS;
+#X text 340 91 inlet0: accepts methods 'bang' \, 'trigger' and 'gain'
+;
+#X text 338 110 outlet0: signal;
+#X text 339 130 outlet1: float (0/1) \, switch~ outlet;
+#X text 340 161 arg1: gain (0-127) / default = 100;
+#X obj 13 159 mtl/clap808~;
+#X obj 13 264 mtl/out~;
+#X text 17 36 tags: synthesize~;
+#X connect 1 0 13 0;
+#X connect 13 0 14 0;
+#X connect 13 0 14 1;
+#X connect 13 1 0 0;
diff --git a/clap808~.pd b/clap808~.pd
new file mode 100644
index 0000000..c369b8d
--- /dev/null
+++ b/clap808~.pd
@@ -0,0 +1,81 @@
+#N canvas 582 246 724 451 10;
+#X obj 222 259 vline~;
+#X obj 222 281 dbtorms~;
+#X obj 31 255 noise~;
+#X obj 32 329 *~;
+#X obj 160 201 t b b;
+#X obj 103 195 t b b;
+#X obj 103 175 del 30;
+#X obj 33 352 hip~ 800;
+#X obj 103 218 1.5;
+#X obj 128 219 50;
+#X obj 160 223 0.7;
+#X obj 185 223 0;
+#X obj 103 152 t b b f;
+#X obj 119 82 t f f;
+#X obj 119 103 *;
+#X obj 103 125 f;
+#X obj 222 201 rmstodb;
+#X msg 222 223 \$1 \, 0 34 \, \$1 0.5 10.5 \, 0 34 11 \, \$1 0 23 \,
+0 34 23 \, \$1 0 31 \, 0 34 31 \, \$1 0 36 \, 0 230 36.5 \, 0 500 65
+\, 0 2000 120;
+#X obj 34 381 outlet~;
+#X text 459 368 Author: Roman Haefeli;
+#X obj 17 3 inlet;
+#X obj 17 52 b;
+#X obj 339 300 del 2122;
+#X obj 309 278 t b b;
+#X obj 339 322 0;
+#X obj 309 320 1;
+#X obj 309 356 t a;
+#X obj 324 383 switch~;
+#X obj 309 404 outlet;
+#X text 328 80 externals:;
+#X text 326 98 [bpq2~] from the iemabs (uses [filter~] from iemlib1)
+;
+#X text 457 389 Version: 2007-09-13;
+#X obj 17 31 route bang trigger gain;
+#X obj 119 61 / 127;
+#X obj 175 31 loadbang;
+#X obj 178 59 tof/argument 1 100;
+#X obj 31 279 iemlib/bpq2~ 1000 1 3000;
+#X connect 0 0 1 0;
+#X connect 1 0 3 1;
+#X connect 2 0 36 0;
+#X connect 3 0 7 0;
+#X connect 4 0 10 0;
+#X connect 4 1 11 0;
+#X connect 5 0 8 0;
+#X connect 5 1 9 0;
+#X connect 6 0 5 0;
+#X connect 7 0 18 0;
+#X connect 8 0 36 2;
+#X connect 9 0 36 3;
+#X connect 10 0 36 2;
+#X connect 11 0 36 3;
+#X connect 12 0 6 0;
+#X connect 12 1 4 0;
+#X connect 12 2 16 0;
+#X connect 13 0 14 0;
+#X connect 13 1 14 1;
+#X connect 14 0 15 1;
+#X connect 15 0 12 0;
+#X connect 16 0 17 0;
+#X connect 17 0 0 0;
+#X connect 20 0 32 0;
+#X connect 21 0 15 0;
+#X connect 21 0 23 0;
+#X connect 22 0 24 0;
+#X connect 23 0 25 0;
+#X connect 23 1 22 0;
+#X connect 24 0 26 0;
+#X connect 25 0 26 0;
+#X connect 26 0 27 0;
+#X connect 26 0 28 0;
+#X connect 32 0 21 0;
+#X connect 32 1 21 0;
+#X connect 32 2 33 0;
+#X connect 33 0 13 0;
+#X connect 34 0 35 0;
+#X connect 35 0 33 0;
+#X connect 36 0 3 0;
diff --git a/clap~-help.pd b/clap~-help.pd
new file mode 100644
index 0000000..1c3ca7a
--- /dev/null
+++ b/clap~-help.pd
@@ -0,0 +1,15 @@
+#N canvas 591 70 317 220 10;
+#X text 18 10 Description: Generates a kind of clap sound.;
+#X text 18 26 Comment: Based on Andy Farnell's work.;
+#X obj 26 143 mtl/out~;
+#X obj 26 111 mtl/clap~;
+#X obj 26 87 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 113 74 hsl 128 15 0 5000 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X text 73 72 decay;
+#X text 19 45 tags: synthesize~;
+#X connect 3 0 2 0;
+#X connect 3 0 2 1;
+#X connect 4 0 3 0;
+#X connect 5 0 3 1;
diff --git a/clap~.pd b/clap~.pd
new file mode 100644
index 0000000..5a2ff01
--- /dev/null
+++ b/clap~.pd
@@ -0,0 +1,60 @@
+#N canvas 320 485 757 381 10;
+#N canvas 501 95 533 593 clap 0;
+#X obj 180 12 noise~;
+#X obj 208 314 *~;
+#X obj 144 228 *~;
+#X obj 160 168 *~ 0.8;
+#X obj 152 315 *~ 0.2;
+#X obj 7 123 *~ 0.1;
+#X obj 76 93 bp~ 1300 10;
+#X obj 236 93 bp~ 700 10;
+#X obj 159 93 bp~ 2500 4;
+#X obj 7 93 lop~ 8000;
+#X obj 162 402 outlet~;
+#X obj 246 12 inlet;
+#X obj 246 51 t b b b;
+#X text 50 23 clap;
+#X obj 370 3 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 179 52 hip~ 500;
+#X obj 396 26 inlet;
+#X obj 379 118 bp~ 5000 10;
+#X obj 366 185 *~ 0.5;
+#X obj 145 202 creb/ead~ 1 800;
+#X obj 308 269 creb/ead~ 3 50;
+#X connect 0 0 9 0;
+#X connect 0 0 15 0;
+#X connect 0 0 17 0;
+#X connect 1 0 10 0;
+#X connect 2 0 1 1;
+#X connect 2 0 4 0;
+#X connect 3 0 2 1;
+#X connect 4 0 10 0;
+#X connect 5 0 3 0;
+#X connect 6 0 3 0;
+#X connect 7 0 3 0;
+#X connect 8 0 3 0;
+#X connect 9 0 5 0;
+#X connect 11 0 12 0;
+#X connect 12 0 19 0;
+#X connect 12 1 20 0;
+#X connect 14 0 12 0;
+#X connect 15 0 6 0;
+#X connect 15 0 7 0;
+#X connect 15 0 8 0;
+#X connect 16 0 19 2;
+#X connect 17 0 18 0;
+#X connect 18 0 1 1;
+#X connect 19 0 2 0;
+#X connect 20 0 1 0;
+#X restore 357 265 pd clap;
+#X obj 356 336 outlet~;
+#X obj 396 238 inlet;
+#X obj 358 237 inlet;
+#X obj 460 238 loadbang;
+#X obj 460 260 tof/argument 1 600;
+#X connect 0 0 1 0;
+#X connect 2 0 0 1;
+#X connect 3 0 0 0;
+#X connect 4 0 5 0;
+#X connect 5 0 0 1;
diff --git a/clk-quantization-help.pd b/clk-quantization-help.pd
new file mode 100644
index 0000000..ee26148
--- /dev/null
+++ b/clk-quantization-help.pd
@@ -0,0 +1,33 @@
+#N canvas 0 0 773 540 10;
+#X obj 52 509 outlet;
+#X text 166 155 That means that the abstraction can start playing on
+each beat (every 24 steps).;
+#X text 237 234 If you set seq.timing.slave's events/beat to 4 \, the
+abstraction can start playing at any quarter beat.;
+#X text 285 323 If you set seq.timing.slave's length to 16 events and
+the events/beat to 4 \, the abstraction can start playing every 4 beats.
+;
+#X text 166 113 Next time you press play \, the abstraction will start
+playing from event 0 (restarts the pattern) once it receives a new
+beat.;
+#X text 290 394 The abstraction will start playing immediatly the next
+time you press play. It will try to match seq.timing.master's current
+event (does not restart the pattern).;
+#X text 290 462 Triggers right away;
+#X text 238 207 Waits for the next master event then starts playing.
+;
+#X text 300 305 Waits for the next master loop then starts playing.
+;
+#X text 44 47 There are four methods of synchronizing a clkSlave to
+its clkMaster:;
+#X msg 50 113 quantization beat;
+#X msg 107 207 quantization event;
+#X msg 146 311 quantization loop;
+#X msg 150 403 quantization match;
+#X msg 165 464 quantization none;
+#X text 284 379 -- default --;
+#X connect 10 0 0 0;
+#X connect 11 0 0 0;
+#X connect 12 0 0 0;
+#X connect 13 0 0 0;
+#X connect 14 0 0 0;
diff --git a/clkMaster-help.pd b/clkMaster-help.pd
new file mode 100644
index 0000000..ba4264b
--- /dev/null
+++ b/clkMaster-help.pd
@@ -0,0 +1,37 @@
+#N canvas 1066 151 868 436 10;
+#X obj 270 225 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X text 288 224 Beat indicator;
+#X floatatom 46 164 5 0 0 0 - - -;
+#X text 87 163 Bpm (minimum of 30 \, defaults to 120);
+#X floatatom 46 262 8 0 0 1 step - -;
+#X floatatom 104 237 5 0 0 1 beat_interval(ms) - -;
+#X text 27 59 tags: timing;
+#X msg 379 163 external 1;
+#X text 45 282 24 steps ber beat (as in MIDI);
+#X text 453 163 You can then send the external sync signal to [clkMaster]'s
+right inlet. See [clkUPDin]'s help for an example.;
+#X text 376 128 You use an external sync signal by sending an "external
+1" message to [clkMaster]'s left inlet.;
+#X text 24 31 Description: synchronizes all [clkSlave] abstractions
+that share the same "top" patch.;
+#X obj 46 208 mtl/clkMaster 120;
+#X floatatom 56 393 5 0 0 0 - - -;
+#X obj 56 330 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X floatatom 362 394 5 0 0 0 - - -;
+#X obj 362 331 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 57 360 mtl/clkSlave 4 16;
+#X text 74 328 <- Bang to start playing a 4/4 16 beat loop;
+#X text 387 326 <- Bang to start playing a 4/4 32 beat loop;
+#X obj 362 358 mtl/clkSlave 4 32;
+#X connect 2 0 12 0;
+#X connect 7 0 12 0;
+#X connect 12 0 4 0;
+#X connect 12 1 5 0;
+#X connect 12 2 0 0;
+#X connect 14 0 17 0;
+#X connect 16 0 20 0;
+#X connect 17 0 13 0;
+#X connect 20 0 15 0;
diff --git a/clkMaster.pd b/clkMaster.pd
new file mode 100644
index 0000000..d50607c
--- /dev/null
+++ b/clkMaster.pd
@@ -0,0 +1,140 @@
+#N canvas 440 71 999 659 10;
+#X msg 362 169 60000;
+#X obj 361 203 /;
+#X obj 528 163 * 24;
+#X obj 231 249 metro 20;
+#N canvas 279 182 470 320 step.counter 0;
+#X obj 156 66 t f f;
+#X obj 157 40 r \$0step;
+#X obj 262 38 r \$0iter;
+#X obj 237 114 f;
+#X obj 250 75 t b f;
+#X obj 249 142 +;
+#X obj 241 183 max 0;
+#X obj 44 -7 inlet;
+#X obj 55 249 outlet;
+#X obj 68 189 t f f;
+#X obj 139 185 t f f;
+#X obj 239 257 outlet;
+#X msg 186 220 seek \$1;
+#X obj 34 128 tof/increment;
+#X connect 0 0 10 0;
+#X connect 0 1 13 1;
+#X connect 1 0 0 0;
+#X connect 2 0 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 3 0;
+#X connect 4 1 5 1;
+#X connect 5 0 6 0;
+#X connect 6 0 0 0;
+#X connect 7 0 13 0;
+#X connect 9 0 8 0;
+#X connect 9 1 3 1;
+#X connect 10 0 12 0;
+#X connect 10 1 3 1;
+#X connect 12 0 11 0;
+#X connect 13 0 9 0;
+#X restore 227 292 pd step.counter;
+#X obj -15 -141 inlet bpm;
+#X obj 263 -143 loadbang;
+#X obj 157 61 max 30;
+#X obj 728 533 outlet heart_beat;
+#X obj 768 424 mod 24;
+#X obj 757 461 sel 0;
+#X obj 157 92 t f b f f;
+#X obj 623 -135 inlet external;
+#X obj 109 31 t f f;
+#X obj 459 2 spigot;
+#X obj 184 -19 == 0;
+#X obj 85 -44 sel 0;
+#X obj 81 -18 f;
+#X obj 140 -47 t f f;
+#X obj 107 5 spigot 1;
+#X obj 339 542 outlet step;
+#X obj 479 537 outlet beat_interval;
+#X obj 337 38 f;
+#X obj 12 -115 route bang float external;
+#X obj 367 -116 tof/getdollarzero root;
+#X obj 366 502 send;
+#X msg 367 -91 symbol \$1CLK;
+#X text -10 -90 would like to add a bpm bang;
+#N canvas 0 0 450 300 bpm2ms 0;
+#X obj 140 62 inlet;
+#X obj 140 122 /;
+#X obj 140 148 * 60;
+#X msg 140 99 1000 \$1;
+#X obj 139 201 outlet;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 0;
+#X restore 478 496 pd bpm2ms;
+#X obj -55 -59 tof/argument 1 120;
+#X obj 55 328 f;
+#X obj 240 360 t f f f;
+#X msg 66 390 bpm \$1;
+#X obj 16 280 b;
+#X obj 263 -73 t b b b b;
+#X obj 623 -111 route bpm;
+#X obj -8 228 r _NEWCLK;
+#X obj 367 -27 tof/onlyone;
+#X obj 617 91 symbol;
+#X obj 367 -68 t s s;
+#X obj 629 -5 print Warning;
+#X msg 629 -33 There is alreaday a [clkMaster] linked to this root
+patch!;
+#X msg 367 -47 set \$1;
+#X obj 249 326 zexy/multiplex 0 1;
+#X connect 0 0 1 0;
+#X connect 1 0 3 1;
+#X connect 2 0 1 1;
+#X connect 3 0 4 0;
+#X connect 4 0 43 0;
+#X connect 5 0 23 0;
+#X connect 6 0 24 0;
+#X connect 7 0 11 0;
+#X connect 9 0 10 0;
+#X connect 10 0 8 0;
+#X connect 11 0 30 0;
+#X connect 11 1 0 0;
+#X connect 11 2 2 0;
+#X connect 11 3 28 0;
+#X connect 12 0 35 0;
+#X connect 13 1 7 0;
+#X connect 14 0 13 0;
+#X connect 15 0 19 1;
+#X connect 16 0 17 0;
+#X connect 17 0 19 0;
+#X connect 18 0 16 0;
+#X connect 18 1 15 0;
+#X connect 19 0 13 0;
+#X connect 22 0 14 1;
+#X connect 22 0 18 0;
+#X connect 22 0 43 2;
+#X connect 23 1 17 0;
+#X connect 23 2 22 0;
+#X connect 24 0 26 0;
+#X connect 26 0 39 0;
+#X connect 28 0 21 0;
+#X connect 29 0 17 0;
+#X connect 30 0 32 0;
+#X connect 31 0 20 0;
+#X connect 31 1 25 0;
+#X connect 31 2 9 0;
+#X connect 32 0 25 0;
+#X connect 33 0 30 0;
+#X connect 34 0 33 0;
+#X connect 34 1 3 0;
+#X connect 34 2 29 0;
+#X connect 34 3 38 0;
+#X connect 35 0 14 0;
+#X connect 35 1 43 1;
+#X connect 36 0 33 0;
+#X connect 37 0 34 0;
+#X connect 37 1 41 0;
+#X connect 38 0 25 1;
+#X connect 39 0 42 0;
+#X connect 39 1 38 1;
+#X connect 41 0 40 0;
+#X connect 42 0 37 0;
+#X connect 43 0 31 0;
diff --git a/clkSlave-help.pd b/clkSlave-help.pd
new file mode 100644
index 0000000..3e4e37b
--- /dev/null
+++ b/clkSlave-help.pd
@@ -0,0 +1,36 @@
+#N canvas 1176 114 708 495 10;
+#X text 56 41 Description: Follows the timing of seq.timing.master.
+;
+#X msg 59 187 play;
+#X msg 103 186 stop;
+#X floatatom 77 384 5 0 0 1 bpm - -;
+#X floatatom 60 409 5 0 0 1 event - -;
+#X obj 95 364 tgl 15 0 empty empty play_state 17 7 0 10 -262144 -1
+-1 0 1;
+#X obj 111 336 bng 15 250 50 0 empty empty loop 17 7 0 10 -262144 -1
+-1;
+#X obj 129 311 bng 15 250 50 0 empty empty play_triggered 17 7 0 10
+-262144 -1 -1;
+#X floatatom 171 223 5 0 0 0 - - -;
+#X floatatom 242 249 5 0 0 0 - - -;
+#X text 284 249 events in a loop (disable with 0 \, defaults to 0)
+;
+#X text 56 61 tags: timing;
+#X obj 60 273 mtl/clkSlave;
+#X obj 474 68 mtl/clkMaster 120;
+#X text 148 166 Open(click) to read about quantization:;
+#X obj 152 187 mtl/clk-quantization-help;
+#X text 214 221 steps per event (minimum of 1 \, maximum of 24 \, defaults
+to 4);
+#X floatatom 474 92 7 0 0 1 step - -;
+#X connect 1 0 12 0;
+#X connect 2 0 12 0;
+#X connect 8 0 12 1;
+#X connect 9 0 12 2;
+#X connect 12 0 4 0;
+#X connect 12 1 3 0;
+#X connect 12 2 5 0;
+#X connect 12 3 6 0;
+#X connect 12 4 7 0;
+#X connect 13 0 17 0;
+#X connect 15 0 12 0;
diff --git a/clkSlave.pd b/clkSlave.pd
new file mode 100644
index 0000000..ffd151d
--- /dev/null
+++ b/clkSlave.pd
@@ -0,0 +1,265 @@
+#N canvas 1028 38 1005 673 10;
+#X obj 188 724 change;
+#X obj 21 365 b;
+#X obj 426 632 moses 16;
+#X obj 255 486 t b b;
+#X obj 18 -82 inlet commands;
+#X obj 186 760 outlet;
+#X obj 694 288 s \$0events;
+#X obj 569 -102 inlet length;
+#X obj 684 230 expr 24/$f1;
+#X obj 692 256 int;
+#X msg 46 18 0;
+#X msg 537 243 1;
+#X obj 53 361 r \$0events;
+#X obj 185 658 r \$0change;
+#N canvas 447 378 577 388 initial_sync 0;
+#X obj 64 10 inlet;
+#X obj 360 16 inlet;
+#X obj 93 105 spigot 1;
+#X msg 176 114 0;
+#X obj 110 132 t b b;
+#X obj 124 205 s \$0trig;
+#X msg 119 167 5;
+#X connect 0 0 2 0;
+#X connect 1 0 2 1;
+#X connect 2 0 4 0;
+#X connect 3 0 2 1;
+#X connect 4 0 6 0;
+#X connect 4 1 3 0;
+#X connect 6 0 5 0;
+#X restore 453 265 pd initial_sync;
+#X obj 541 19 s \$0length;
+#X obj 684 205 clip 1 24;
+#X obj 552 524 r \$0length;
+#X obj 461 562 > 0;
+#X obj 552 -22 max 0;
+#X obj 420 200 t b f f b;
+#X obj 668 755 outlet loop;
+#X obj 478 666 t b b;
+#X obj 365 492 r \$0event;
+#X obj 163 365 r \$0step;
+#X obj 92 15 s \$0state;
+#X obj 257 143 f 1;
+#X obj 534 220 delay 250;
+#X obj 38 297 spigot;
+#X obj 121 280 r \$0state;
+#N canvas 1094 69 926 668 triggers 0;
+#X obj 261 17 inlet;
+#X obj 52 302 sel 0;
+#X obj 150 251 r \$0events;
+#X obj 120 302 sel 0;
+#X obj 263 217 r \$0events;
+#X obj 233 244 div 6;
+#X obj 233 288 mod 16;
+#X obj 280 257 r \$0length;
+#X obj 120 278 mod 6;
+#X obj 233 311 sel 0;
+#X obj 46 618 s \$0state;
+#X obj 240 593 s \$0step;
+#X obj 311 592 s \$0event;
+#X obj 439 385 pack f f;
+#X obj 52 268 mod 24;
+#X obj 504 304 mod 16;
+#X obj 532 241 r \$0length;
+#X obj 355 208 t f f;
+#X obj 476 244 div 6;
+#X obj 755 405 pack f f;
+#X obj 719 277 mod 16;
+#X obj 755 248 r \$0length;
+#X obj 671 228 t f f;
+#X obj 699 251 div 6;
+#X obj 671 280 mod 6;
+#X obj 671 308 sel 0;
+#X obj 782 330 +;
+#X obj 831 367 t f f;
+#X obj 693 334 t f b;
+#X msg 736 318 1;
+#X msg 756 431 \$1 \$2 0;
+#X obj 96 568 s \$0play_triggered;
+#X obj 27 23 inlet TRIGGER_NOW;
+#X obj 233 141 zexy/demultiplex 0 1 2 3 4 5;
+#X obj 461 9 inlet trig;
+#X text 671 198 -- unknown mode --;
+#X obj 463 203 r \$0events;
+#X obj 382 336 mod 6;
+#X msg 52 335 0 0 0;
+#X msg 120 332 0 0 0;
+#X msg 231 336 0 0 0;
+#X msg 440 411 \$1 \$2 0;
+#X msg 27 130 0 0 0;
+#X obj 44 533 t b b;
+#X msg 46 589 1;
+#X obj 251 529 unpack f f f;
+#X obj 274 71 t f f;
+#X obj 175 480 t b l b;
+#X connect 0 0 46 0;
+#X connect 1 0 38 0;
+#X connect 2 0 8 1;
+#X connect 3 0 39 0;
+#X connect 4 0 5 1;
+#X connect 5 0 6 0;
+#X connect 6 0 9 0;
+#X connect 7 0 6 1;
+#X connect 8 0 3 0;
+#X connect 9 0 40 0;
+#X connect 13 0 41 0;
+#X connect 14 0 1 0;
+#X connect 15 0 13 1;
+#X connect 16 0 15 1;
+#X connect 17 0 37 0;
+#X connect 17 1 18 0;
+#X connect 18 0 15 0;
+#X connect 19 0 30 0;
+#X connect 20 0 26 1;
+#X connect 21 0 20 1;
+#X connect 22 0 24 0;
+#X connect 22 1 23 0;
+#X connect 23 0 20 0;
+#X connect 24 0 25 0;
+#X connect 25 1 28 0;
+#X connect 26 0 19 1;
+#X connect 27 0 19 0;
+#X connect 27 1 26 0;
+#X connect 28 0 19 0;
+#X connect 28 1 29 0;
+#X connect 29 0 26 0;
+#X connect 30 0 47 0;
+#X connect 32 0 42 0;
+#X connect 33 1 14 0;
+#X connect 33 2 8 0;
+#X connect 33 3 5 0;
+#X connect 33 4 17 0;
+#X connect 33 5 22 0;
+#X connect 34 0 33 1;
+#X connect 36 0 18 1;
+#X connect 36 0 37 1;
+#X connect 37 0 13 0;
+#X connect 38 0 47 0;
+#X connect 39 0 47 0;
+#X connect 40 0 47 0;
+#X connect 41 0 47 0;
+#X connect 42 0 47 0;
+#X connect 43 0 44 0;
+#X connect 43 1 31 0;
+#X connect 44 0 10 0;
+#X connect 45 0 11 0;
+#X connect 45 1 12 0;
+#X connect 45 2 33 1;
+#X connect 46 0 33 0;
+#X connect 47 0 43 0;
+#X connect 47 1 45 0;
+#X restore 269 300 pd triggers;
+#X obj 411 755 outlet bpm;
+#X obj 540 760 outlet state;
+#X obj 540 713 r \$0state;
+#X obj 371 -56 inlet events;
+#X obj 556 -56 int;
+#X obj 803 714 r \$0play_triggered;
+#X obj 803 755 outlet play_triggered;
+#X obj 144 84 unpack f f;
+#X msg 156 43 0 1;
+#X msg 202 45 0 2;
+#X msg 247 44 0 3;
+#X msg 292 43 0 4;
+#X obj 19 109 t b b;
+#X obj 70 160 spigot;
+#X msg 338 44 1 0;
+#X obj 19 414 iemlib/modulo_counter;
+#X obj 243 558 tof/increment;
+#X obj 710 -35 loadbang;
+#X msg 358 96 set \$1CLK;
+#X obj 358 70 tof/getdollarzero root;
+#X obj 399 121 iemlib/iem_receive;
+#X obj 357 144 route bpm;
+#X obj 216 -25 sel 0 1;
+#X obj 698 95 s _NEWCLK;
+#X obj 157 17 route beat event loop match none;
+#X obj 723 56 tof/argument 1 4;
+#X obj 579 -77 tof/argument 2 0;
+#X obj 704 7 t b b b b b;
+#X obj 19 -54 route play stop quantization bang;
+#X obj 851 112 list trim;
+#X obj 267 598 zexy/demultiplex 0 1;
+#X obj 20 464 sel 0;
+#X obj 11 300 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 852 86 tof/argument 3 match;
+#X connect 0 0 5 0;
+#X connect 1 0 46 0;
+#X connect 2 0 0 0;
+#X connect 2 1 22 0;
+#X connect 3 0 47 0;
+#X connect 3 1 47 1;
+#X connect 4 0 59 0;
+#X connect 7 0 35 0;
+#X connect 8 0 9 0;
+#X connect 9 0 6 0;
+#X connect 10 0 25 0;
+#X connect 11 0 14 1;
+#X connect 12 0 46 0;
+#X connect 13 0 0 0;
+#X connect 16 0 8 0;
+#X connect 17 0 18 0;
+#X connect 17 0 2 1;
+#X connect 18 0 61 1;
+#X connect 19 0 15 0;
+#X connect 20 0 28 0;
+#X connect 20 1 30 1;
+#X connect 20 2 14 0;
+#X connect 20 3 27 0;
+#X connect 22 0 3 0;
+#X connect 22 1 21 0;
+#X connect 23 0 47 1;
+#X connect 24 0 46 1;
+#X connect 26 0 30 2;
+#X connect 27 0 11 0;
+#X connect 28 0 1 0;
+#X connect 29 0 28 1;
+#X connect 33 0 32 0;
+#X connect 34 0 16 0;
+#X connect 35 0 19 0;
+#X connect 36 0 37 0;
+#X connect 38 0 44 1;
+#X connect 38 1 26 1;
+#X connect 39 0 38 0;
+#X connect 40 0 38 0;
+#X connect 41 0 38 0;
+#X connect 42 0 38 0;
+#X connect 43 0 44 0;
+#X connect 43 1 26 0;
+#X connect 44 0 30 0;
+#X connect 45 0 38 0;
+#X connect 46 0 62 0;
+#X connect 47 0 61 0;
+#X connect 48 0 58 0;
+#X connect 49 0 51 0;
+#X connect 50 0 49 0;
+#X connect 51 0 52 0;
+#X connect 52 0 31 0;
+#X connect 52 1 20 0;
+#X connect 53 0 10 0;
+#X connect 53 1 43 0;
+#X connect 55 0 39 0;
+#X connect 55 1 40 0;
+#X connect 55 2 41 0;
+#X connect 55 3 42 0;
+#X connect 55 4 45 0;
+#X connect 56 0 16 0;
+#X connect 57 0 35 0;
+#X connect 58 0 54 0;
+#X connect 58 1 56 0;
+#X connect 58 2 57 0;
+#X connect 58 3 50 0;
+#X connect 58 4 64 0;
+#X connect 59 0 43 0;
+#X connect 59 1 10 0;
+#X connect 59 2 55 0;
+#X connect 59 3 43 0;
+#X connect 59 4 53 0;
+#X connect 60 0 55 0;
+#X connect 61 0 0 0;
+#X connect 61 1 2 0;
+#X connect 62 0 47 0;
+#X connect 63 0 1 0;
+#X connect 64 0 60 0;
diff --git a/clkUDPIn-help.pd b/clkUDPIn-help.pd
new file mode 100644
index 0000000..4ea349b
--- /dev/null
+++ b/clkUDPIn-help.pd
@@ -0,0 +1,15 @@
+#N canvas 1361 372 628 323 10;
+#X text 41 32 Description: Receive a timing flow through UDP;
+#X obj 106 127 loadbang;
+#X msg 106 154 external 1;
+#X text 211 123 Argument: port to listen to;
+#X obj 106 185 mtl/clkMaster;
+#X obj 193 213 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 212 147 mtl/clkUDPIn 8247;
+#X text 51 245 open clkUDPOut's help for a working example.;
+#X text 41 53 tags: timing network;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 4 2 5 0;
+#X connect 6 0 4 1;
diff --git a/clkUDPIn.pd b/clkUDPIn.pd
new file mode 100644
index 0000000..9769ad9
--- /dev/null
+++ b/clkUDPIn.pd
@@ -0,0 +1,4 @@
+#N canvas 447 194 450 300 10;
+#X obj 147 141 netreceive \$1 1;
+#X obj 147 250 outlet;
+#X connect 0 0 1 0;
diff --git a/clkUDPOut-help.pd b/clkUDPOut-help.pd
new file mode 100644
index 0000000..ac4bf50
--- /dev/null
+++ b/clkUDPOut-help.pd
@@ -0,0 +1,11 @@
+#N canvas 1087 85 450 300 10;
+#X text 16 86 Description: Send a timing flow through UDP;
+#X floatatom 300 102 5 0 0 0 - - -;
+#X obj 387 151 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 27 203 mtl/clkUDPOut localhost 8247;
+#X obj 300 126 mtl/clkMaster;
+#X text 18 158 open clkUDPIn's help for a working example.;
+#X text 15 102 tags: timing network;
+#X connect 1 0 4 0;
+#X connect 4 2 2 0;
diff --git a/clkUDPOut.pd b/clkUDPOut.pd
new file mode 100644
index 0000000..f0c3dc9
--- /dev/null
+++ b/clkUDPOut.pd
@@ -0,0 +1,34 @@
+#N canvas 322 55 650 439 10;
+#X obj 348 72 loadbang;
+#X obj 35 168 spigot;
+#X obj 35 317 netsend 1;
+#X obj 35 207 list prepend send;
+#X obj 35 237 list trim;
+#X msg 164 279 connect \$1 \$2;
+#X obj 164 256 pack s f;
+#X obj 44 348 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 35 47 tof/getdollarzero root;
+#X obj 240 179 tof/argument 1 localhost;
+#X obj 303 214 tof/argument 2 8247;
+#X obj 35 139 iemlib/iem_receive;
+#X msg 35 112 set \$1CLK;
+#X obj 226 122 s NEWCLK;
+#X obj 336 121 t b b b b;
+#X connect 0 0 14 0;
+#X connect 1 0 3 0;
+#X connect 2 0 1 1;
+#X connect 2 0 7 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 0;
+#X connect 5 0 2 0;
+#X connect 6 0 5 0;
+#X connect 8 0 12 0;
+#X connect 9 0 6 0;
+#X connect 10 0 6 1;
+#X connect 11 0 1 0;
+#X connect 12 0 11 0;
+#X connect 14 0 13 0;
+#X connect 14 1 9 0;
+#X connect 14 2 10 0;
+#X connect 14 3 8 0;
diff --git a/clocker-help.pd b/clocker-help.pd
new file mode 100644
index 0000000..4eb07dd
--- /dev/null
+++ b/clocker-help.pd
@@ -0,0 +1,23 @@
+#N canvas 478 217 416 259 10;
+#X obj 148 114 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X floatatom 128 186 5 0 0 0 - - -;
+#X obj 128 207 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 167 112 Start(1)/stop(0);
+#X floatatom 233 142 5 0 0 0 - - -;
+#X text 269 140 Interval;
+#X obj 128 92 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 146 91 Reset+start;
+#X obj 128 165 mtl/clocker 1000;
+#X obj 12 8 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 17 12 description: Metronome that reports time since it was
+started.;
+#X text 17 50 tags: timing;
+#X connect 0 0 8 0;
+#X connect 1 0 2 0;
+#X connect 4 0 8 1;
+#X connect 6 0 8 0;
+#X connect 8 0 1 0;
diff --git a/clocker.pd b/clocker.pd
new file mode 100644
index 0000000..8396a11
--- /dev/null
+++ b/clocker.pd
@@ -0,0 +1,24 @@
+#N canvas 0 0 450 300 10;
+#X obj 112 35 inlet;
+#X obj 111 171 metro \$1;
+#X obj 97 224 timer;
+#X obj 75 132 t b b;
+#X obj 97 256 outlet;
+#X obj 303 61 inlet;
+#X obj 93 87 sel 1 0;
+#X msg 140 120 0;
+#X obj 113 60 route float;
+#X msg 176 86 bang;
+#X connect 0 0 8 0;
+#X connect 1 0 2 1;
+#X connect 2 0 4 0;
+#X connect 3 0 1 0;
+#X connect 3 1 2 0;
+#X connect 5 0 1 1;
+#X connect 6 0 3 0;
+#X connect 6 1 7 0;
+#X connect 6 2 3 0;
+#X connect 7 0 1 0;
+#X connect 8 0 6 0;
+#X connect 8 1 9 0;
+#X connect 9 0 3 0;
diff --git a/closestNote-help.pd b/closestNote-help.pd
new file mode 100644
index 0000000..95e9404
--- /dev/null
+++ b/closestNote-help.pd
@@ -0,0 +1,89 @@
+#N canvas 515 25 670 581 10;
+#X obj 10 361 mtof;
+#X msg 240 51 0 2 4 5 7 9 11;
+#X text 337 52 major;
+#X msg 251 74 0 1 4 5 7 8 11;
+#X msg 263 97 0 2 4 6 7 9 10;
+#X msg 274 119 0 2 3 5 7 8 11;
+#X msg 297 164 0 2 4 6 8 10;
+#X msg 307 186 0 2 3 5 6 8 9 11;
+#X msg 327 252 0 0.5 1 1.5 2 2.5 3 3.5 4;
+#X text 349 74 middle-east-like minor;
+#X text 360 98 lydian-dominant (jazzy);
+#X text 372 121 harmonic minor;
+#X msg 285 142 0 2 3 4 5 6 7 9 10 11;
+#X text 423 142 chromatic blues;
+#X text 383 166 whole-tones scale;
+#X text 415 187 diminished scale;
+#X msg 315 208 0 2 4 7 9;
+#X text 383 209 pentatonic;
+#X text 415 229 pentatonic blues;
+#X msg 323 230 0 2 3 4 7 8 9;
+#X msg 332 274 0 0.33 0.66 1 1.33 1.66 2;
+#X msg 374 421 60 61 62 63 64 65 66 67 68 69 70 71 72;
+#X obj 373 443 t a b;
+#X msg 425 509 set;
+#X msg 373 531 60 62 62 63.1 65 65 67 67 69 69 70 72 72;
+#X msg 373 508 add2 \$1;
+#X obj 373 465 zexy/drip;
+#X msg 520 465 0 2 3.1 5 7 9 10;
+#X msg 338 297 0 1.5 3 4.5 6 7.5 9 10.5;
+#X text 53 375 Argument: the list of the current chord.;
+#X text 7 8 Description: Rounds an incoming MIDI note to a note listed
+in a given chord or scale.;
+#X text 53 361 inlets: note offset to play \, scale/chord list (any
+length);
+#X text 5 61 Author: Alexandre Quessy (c) 2006;
+#X text 494 250 tests;
+#X floatatom 339 322 5 0 0 0 - - -;
+#X obj 10 383 osc~;
+#X obj 10 314 + 60;
+#X obj 9 409 mtl/out~;
+#X text 9 479 Of course \, if you use several [closestNote] objects
+at a time with the same scale and key \, you will be able to compose
+a realtime symphony. It will always be continuous if you use scales
+with the same number of notes. Also \, it will prevent the notes from
+being too high.;
+#X text 7 40 tags: musical;
+#X obj 240 341 mtl/transpose;
+#X obj 10 337 mtl/closestNote 0 2 4 7 9;
+#X obj 373 487 mtl/closestNote 0 2 4 7 9;
+#X obj 10 270 t b;
+#X obj 10 292 iemlib/modulo_counter 14 0;
+#X obj 11 96 mtl/clkMaster 120;
+#X obj 10 178 loadbang;
+#X obj 10 232 mtl/clkSlave;
+#X obj 10 207 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X connect 0 0 35 0;
+#X connect 1 0 40 0;
+#X connect 3 0 40 0;
+#X connect 4 0 40 0;
+#X connect 5 0 40 0;
+#X connect 6 0 40 0;
+#X connect 7 0 40 0;
+#X connect 8 0 40 0;
+#X connect 12 0 40 0;
+#X connect 16 0 40 0;
+#X connect 19 0 40 0;
+#X connect 20 0 40 0;
+#X connect 21 0 22 0;
+#X connect 22 0 26 0;
+#X connect 22 1 23 0;
+#X connect 23 0 24 0;
+#X connect 25 0 24 0;
+#X connect 26 0 42 0;
+#X connect 27 0 42 1;
+#X connect 28 0 40 0;
+#X connect 34 0 40 1;
+#X connect 35 0 37 0;
+#X connect 35 0 37 1;
+#X connect 36 0 41 0;
+#X connect 40 0 41 1;
+#X connect 41 0 0 0;
+#X connect 42 0 25 0;
+#X connect 43 0 44 0;
+#X connect 44 0 36 0;
+#X connect 46 0 48 0;
+#X connect 47 0 43 0;
+#X connect 48 0 47 0;
diff --git a/closestNote.pd b/closestNote.pd
new file mode 100644
index 0000000..f113c86
--- /dev/null
+++ b/closestNote.pd
@@ -0,0 +1,53 @@
+#N canvas 314 224 742 589 10;
+#X obj 173 244 + 12;
+#X obj 173 275 -;
+#X obj 141 179 t b a;
+#X obj 141 154 list append;
+#X obj 122 108 t f b f b;
+#X obj 359 20 inlet;
+#X obj 297 163 f;
+#X obj 177 326 min;
+#X obj 207 350 f;
+#X obj 143 385 f;
+#X obj 122 60 inlet;
+#X obj 122 417 +;
+#X obj 122 449 outlet;
+#X obj 301 263 f 12;
+#X text 390 105 minimum ( Each of the notes in the scale - the current
+input note );
+#X text 239 417 + the current input note;
+#X text 47 491 Need abs() to make it more accurate (such as rint()
+but for floats);
+#X text 317 298 Differences;
+#X obj 218 449 outlet;
+#X obj 361 46 loadbang;
+#X obj 173 223 expr fmod($f1 \, 12);
+#X obj 171 299 expr fmod($f1 \, 12);
+#X obj 297 186 expr fmod($f1 \, 12);
+#X obj 365 69 iemlib/dollarg;
+#X obj 171 200 zexy/drip;
+#X connect 0 0 1 0;
+#X connect 1 0 21 0;
+#X connect 2 0 9 0;
+#X connect 2 1 24 0;
+#X connect 3 0 2 0;
+#X connect 4 0 11 0;
+#X connect 4 1 3 0;
+#X connect 4 2 6 0;
+#X connect 4 3 13 0;
+#X connect 5 0 3 1;
+#X connect 6 0 22 0;
+#X connect 7 0 8 0;
+#X connect 8 0 7 1;
+#X connect 8 0 9 1;
+#X connect 9 0 11 1;
+#X connect 9 0 18 0;
+#X connect 10 0 4 0;
+#X connect 11 0 12 0;
+#X connect 13 0 7 1;
+#X connect 19 0 23 0;
+#X connect 20 0 0 0;
+#X connect 21 0 7 0;
+#X connect 22 0 1 1;
+#X connect 23 0 3 1;
+#X connect 24 0 20 0;
diff --git a/colorGrid-help.pd b/colorGrid-help.pd
new file mode 100644
index 0000000..70d91eb
--- /dev/null
+++ b/colorGrid-help.pd
@@ -0,0 +1,9 @@
+#N canvas 334 399 317 222 10;
+#X text 20 14 Description: A color selector.;
+#X obj 20 181 print float_RGB;
+#X obj 200 180 print pd_color;
+#X obj 20 86 mtl/colorGrid;
+#X text 18 65 Click and drag!;
+#X text 20 32 tags: ui;
+#X connect 3 0 1 0;
+#X connect 3 1 2 0;
diff --git a/colorGrid.pd b/colorGrid.pd
new file mode 100644
index 0000000..92ce17e
--- /dev/null
+++ b/colorGrid.pd
@@ -0,0 +1,140 @@
+#N canvas 356 25 814 683 10;
+#X obj 101 101 cnv 15 185 20 empty \$0label colorGrid 4 11 0 8 -1 -262144
+0;
+#X obj 105 143 hsl 179 20 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 0;
+#X obj 105 122 hsl 179 20 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 0;
+#X msg 719 273 nopoll;
+#X obj 725 233 sel 0;
+#X msg 610 260 zero \, poll;
+#X msg 769 260 1;
+#X obj 607 162 spigot 1;
+#X msg 692 192 0;
+#X obj 625 386 +;
+#X obj 608 227 t b b f;
+#X obj 450 706 s \$0label;
+#X obj 101 143 cnv 15 20 20 empty empty empty 20 12 0 14 -258049 -66577
+0;
+#X obj 101 122 cnv 15 20 20 \$0cnv_s \$0cnv_r empty 20 12 0 14 -131073
+-66577 0;
+#X obj 158 143 cnv 15 35 20 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X obj 158 122 cnv 15 35 20 empty empty empty 20 12 0 14 -22726 -66577
+0;
+#X obj 266 143 cnv 15 20 20 empty empty empty 20 12 0 14 -258049 -66577
+0;
+#X obj 266 122 cnv 15 20 20 empty empty empty 20 12 0 14 -131073 -66577
+0;
+#X obj 122 143 cnv 15 35 20 empty empty empty 20 12 0 14 -241291 -66577
+0;
+#X obj 122 122 cnv 15 35 20 empty empty empty 20 12 0 14 -166411 -66577
+0;
+#X obj 194 122 cnv 15 35 20 empty empty empty 20 12 0 14 -32 -66577
+0;
+#X obj 194 143 cnv 15 35 20 empty empty empty 20 12 0 14 -64 -66577
+0;
+#X obj 230 143 cnv 15 35 20 empty empty empty 20 12 0 14 -258112 -66577
+0;
+#X obj 230 122 cnv 15 35 20 empty empty empty 20 12 0 14 -135202 -66577
+0;
+#X obj 511 349 f;
+#X obj 481 126 t f b f;
+#X obj 446 195 t f b f;
+#X msg 563 165 20;
+#X obj 104 164 hsl 179 20 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 0;
+#X obj 101 164 cnv 15 20 20 empty empty empty 20 12 0 14 -261689 -66577
+0;
+#X obj 158 164 cnv 15 35 20 empty empty empty 20 12 0 14 -225271 -66577
+0;
+#X obj 266 164 cnv 15 20 20 empty empty empty 20 12 0 14 -261689 -66577
+0;
+#X obj 122 164 cnv 15 35 20 empty empty empty 20 12 0 14 -262131 -66577
+0;
+#X obj 194 164 cnv 15 35 20 empty empty empty 20 12 0 14 -228992 -66577
+0;
+#X obj 230 164 cnv 15 35 20 empty empty empty 20 12 0 14 -257472 -66577
+0;
+#X msg 544 258 30;
+#X obj 332 264 t b f;
+#X obj 628 429 moses 30;
+#X obj 623 470 / 30;
+#X obj 511 375 pack f f f;
+#X obj 552 336 unpack;
+#X obj 542 308 t b a;
+#X obj 680 489 / 30;
+#X obj 627 407 clip 0 60;
+#X msg 621 498 1 \$1;
+#X msg 681 522 \$1 1;
+#X obj 720 560 -;
+#X msg 752 562 2 \$1;
+#X obj 431 653 pack;
+#X msg 424 681 color \$1 \$2;
+#X obj 468 536 * -1;
+#X msg 392 325 50;
+#X obj 11 708 outlet float_RGB;
+#X obj 319 705 outlet pd_color;
+#X obj 302 629 t a a;
+#X obj 146 496 t a a a a;
+#X obj 468 510 - 1;
+#X obj 689 299 cyclone/MouseState;
+#X obj 396 513 ./listOp;
+#X obj 397 588 ./rgbToNum;
+#X obj 234 574 ./rgbToNum;
+#X obj 94 430 ./hsvToRgb;
+#X connect 1 0 26 0;
+#X connect 2 0 25 0;
+#X connect 3 0 57 0;
+#X connect 4 0 3 0;
+#X connect 4 0 6 0;
+#X connect 5 0 57 0;
+#X connect 6 0 7 1;
+#X connect 7 0 10 0;
+#X connect 8 0 7 1;
+#X connect 9 0 43 0;
+#X connect 10 0 5 0;
+#X connect 10 1 8 0;
+#X connect 10 2 9 1;
+#X connect 24 0 39 0;
+#X connect 25 1 27 0;
+#X connect 25 2 24 1;
+#X connect 26 1 35 0;
+#X connect 26 2 24 1;
+#X connect 27 0 7 0;
+#X connect 28 0 36 0;
+#X connect 35 0 7 0;
+#X connect 36 0 51 0;
+#X connect 36 1 24 1;
+#X connect 37 0 38 0;
+#X connect 37 1 42 0;
+#X connect 38 0 44 0;
+#X connect 39 0 61 0;
+#X connect 40 0 39 1;
+#X connect 40 1 39 2;
+#X connect 41 0 24 0;
+#X connect 41 1 40 0;
+#X connect 42 0 47 0;
+#X connect 43 0 37 0;
+#X connect 44 0 41 0;
+#X connect 45 0 41 0;
+#X connect 46 0 45 0;
+#X connect 47 0 46 0;
+#X connect 48 0 49 0;
+#X connect 49 0 11 0;
+#X connect 50 0 58 1;
+#X connect 51 0 7 0;
+#X connect 54 0 53 0;
+#X connect 54 1 48 0;
+#X connect 55 0 52 0;
+#X connect 55 2 60 0;
+#X connect 55 3 58 0;
+#X connect 56 0 50 0;
+#X connect 57 0 4 0;
+#X connect 57 2 9 0;
+#X connect 58 0 59 0;
+#X connect 58 1 56 0;
+#X connect 59 0 48 1;
+#X connect 60 0 54 0;
+#X connect 61 0 55 0;
+#X coords 0 -1 1 1 187 85 1 100 100;
diff --git a/coloredNoise~-help.pd b/coloredNoise~-help.pd
new file mode 100644
index 0000000..8cbe3d7
--- /dev/null
+++ b/coloredNoise~-help.pd
@@ -0,0 +1,37 @@
+#N canvas 524 25 703 543 10;
+#X text 56 72 Comment: Taken from Andy Farnell's work.;
+#X text 58 52 Description: Generates different colored noises.;
+#X obj 57 143 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -33289
+-262144 -1 0 1;
+#X obj 122 142 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -90881
+-262144 -1 0 1;
+#X obj 195 141 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -258699
+-262144 -1 0 1;
+#X obj 299 140 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -260818
+-262144 -1 0 1;
+#X obj 381 138 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -241291
+-262144 -1 0 1;
+#X obj 463 138 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -24198
+-262144 -1 0 1;
+#X obj 544 137 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -62784
+-262144 -1 0 1;
+#X obj 641 133 vsl 15 128 0 127 0 0 empty empty empty 0 -8 0 8 -250685
+-262144 -1 0 1;
+#X text 56 85 Version: 2;
+#X text 330 345 All inputs are 0-127;
+#X obj 218 347 mtl/coloredNoise~;
+#X obj 218 384 mtl/out~;
+#X obj 381 384 cyclone/Scope~ 130 130 256 3 128 -1 1 0 0 0 0 102 255
+51 135 135 135 0;
+#X text 70 105 tags: synthesize~;
+#X connect 2 0 12 0;
+#X connect 3 0 12 1;
+#X connect 4 0 12 2;
+#X connect 5 0 12 3;
+#X connect 6 0 12 4;
+#X connect 7 0 12 5;
+#X connect 8 0 12 6;
+#X connect 9 0 12 7;
+#X connect 12 0 13 0;
+#X connect 12 0 13 1;
+#X connect 12 0 14 0;
diff --git a/coloredNoise~.pd b/coloredNoise~.pd
new file mode 100644
index 0000000..a6decf2
--- /dev/null
+++ b/coloredNoise~.pd
@@ -0,0 +1,182 @@
+#N canvas 307 271 890 629 10;
+#X obj 469 42 noise~;
+#X obj 134 119 lop~ 50;
+#X obj 132 141 lop~ 50;
+#X obj 133 165 lop~ 50;
+#X obj 132 188 lop~ 50;
+#X obj 199 121 hip~ 50;
+#X obj 199 143 hip~ 50;
+#X obj 199 165 hip~ 50;
+#X obj 199 187 hip~ 50;
+#X obj 200 210 lop~ 250;
+#X obj 199 232 lop~ 250;
+#X obj 200 256 lop~ 250;
+#X obj 199 279 lop~ 250;
+#X obj 270 122 hip~ 250;
+#X obj 270 144 hip~ 250;
+#X obj 270 166 hip~ 250;
+#X obj 270 188 hip~ 250;
+#X obj 271 211 lop~ 500;
+#X obj 270 233 lop~ 500;
+#X obj 271 257 lop~ 500;
+#X obj 270 281 lop~ 500;
+#X obj 362 121 hip~ 500;
+#X obj 362 143 hip~ 500;
+#X obj 362 165 hip~ 500;
+#X obj 362 187 hip~ 500;
+#X obj 362 210 lop~ 1000;
+#X obj 362 232 lop~ 1000;
+#X obj 363 256 lop~ 1000;
+#X obj 362 280 lop~ 1000;
+#X obj 444 118 hip~ 1000;
+#X obj 444 140 hip~ 1000;
+#X obj 444 162 hip~ 1000;
+#X obj 444 184 hip~ 1000;
+#X obj 444 207 lop~ 3000;
+#X obj 444 229 lop~ 3000;
+#X obj 445 253 lop~ 3000;
+#X obj 444 277 lop~ 3000;
+#X obj 524 118 hip~ 3000;
+#X obj 524 140 hip~ 3000;
+#X obj 524 161 hip~ 3000;
+#X obj 524 184 hip~ 3000;
+#X obj 524 207 lop~ 7000;
+#X obj 524 229 lop~ 7000;
+#X obj 525 253 lop~ 7000;
+#X obj 524 277 lop~ 7000;
+#X obj 604 117 hip~ 7000;
+#X obj 604 139 hip~ 7000;
+#X obj 604 160 hip~ 7000;
+#X obj 604 183 hip~ 7000;
+#X obj 604 206 lop~ 15000;
+#X obj 604 228 lop~ 15000;
+#X obj 604 252 lop~ 15000;
+#X obj 604 276 lop~ 15000;
+#X obj 697 115 hip~ 15000;
+#X obj 697 137 hip~ 15000;
+#X obj 697 158 hip~ 15000;
+#X obj 697 181 hip~ 15000;
+#X obj 697 204 lop~ 20000;
+#X obj 697 226 lop~ 20000;
+#X obj 697 250 lop~ 20000;
+#X obj 697 274 lop~ 20000;
+#X obj 442 527 *~ 0.5;
+#X obj 133 459 *~;
+#X obj 198 458 *~;
+#X obj 271 457 *~;
+#X obj 443 454 *~;
+#X obj 361 456 *~;
+#X obj 525 454 *~;
+#X obj 605 453 *~;
+#X obj 696 449 *~;
+#X text 443 12 Noise colours;
+#X obj 440 561 outlet~;
+#X obj 150 60 inlet~;
+#X obj 255 53 inlet~;
+#X obj 325 56 inlet~;
+#X obj 379 66 inlet~;
+#X obj 484 59 inlet~;
+#X obj 554 62 inlet~;
+#X obj 649 50 inlet~;
+#X obj 719 53 inlet~;
+#X obj 729 400 *~ 0.001;
+#X obj 147 377 *~ 0.2;
+#X obj 296 402 *~ 0.2;
+#X obj 232 397 *~ 0.15;
+#X obj 385 402 *~ 0.1;
+#X obj 458 401 *~ 0.05;
+#X obj 613 404 *~ 0.001;
+#X obj 530 407 *~ 0.005;
+#X connect 0 0 1 0;
+#X connect 0 0 5 0;
+#X connect 0 0 13 0;
+#X connect 0 0 21 0;
+#X connect 0 0 29 0;
+#X connect 0 0 37 0;
+#X connect 0 0 45 0;
+#X connect 0 0 53 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 62 0;
+#X connect 5 0 6 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 11 0 12 0;
+#X connect 12 0 63 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 18 0;
+#X connect 18 0 19 0;
+#X connect 19 0 20 0;
+#X connect 20 0 64 0;
+#X connect 21 0 22 0;
+#X connect 22 0 23 0;
+#X connect 23 0 24 0;
+#X connect 24 0 25 0;
+#X connect 25 0 26 0;
+#X connect 26 0 27 0;
+#X connect 27 0 28 0;
+#X connect 28 0 66 0;
+#X connect 29 0 30 0;
+#X connect 30 0 31 0;
+#X connect 31 0 32 0;
+#X connect 32 0 33 0;
+#X connect 33 0 34 0;
+#X connect 34 0 35 0;
+#X connect 35 0 36 0;
+#X connect 36 0 65 0;
+#X connect 37 0 38 0;
+#X connect 38 0 39 0;
+#X connect 39 0 40 0;
+#X connect 40 0 41 0;
+#X connect 41 0 42 0;
+#X connect 42 0 43 0;
+#X connect 43 0 44 0;
+#X connect 44 0 67 0;
+#X connect 45 0 46 0;
+#X connect 46 0 47 0;
+#X connect 47 0 48 0;
+#X connect 48 0 49 0;
+#X connect 49 0 50 0;
+#X connect 50 0 51 0;
+#X connect 51 0 52 0;
+#X connect 52 0 68 0;
+#X connect 53 0 54 0;
+#X connect 54 0 55 0;
+#X connect 55 0 56 0;
+#X connect 56 0 57 0;
+#X connect 57 0 58 0;
+#X connect 58 0 59 0;
+#X connect 59 0 60 0;
+#X connect 60 0 69 0;
+#X connect 61 0 71 0;
+#X connect 62 0 61 0;
+#X connect 63 0 61 0;
+#X connect 64 0 61 0;
+#X connect 65 0 61 0;
+#X connect 66 0 61 0;
+#X connect 67 0 61 0;
+#X connect 68 0 61 0;
+#X connect 69 0 61 0;
+#X connect 72 0 81 0;
+#X connect 73 0 83 0;
+#X connect 74 0 82 0;
+#X connect 75 0 84 0;
+#X connect 76 0 85 0;
+#X connect 77 0 87 0;
+#X connect 78 0 86 0;
+#X connect 79 0 80 0;
+#X connect 80 0 69 1;
+#X connect 81 0 62 1;
+#X connect 82 0 64 1;
+#X connect 83 0 63 1;
+#X connect 84 0 66 1;
+#X connect 85 0 65 1;
+#X connect 86 0 68 1;
+#X connect 87 0 67 1;
diff --git a/compress~-help.pd b/compress~-help.pd
new file mode 100644
index 0000000..f99513f
--- /dev/null
+++ b/compress~-help.pd
@@ -0,0 +1,59 @@
+#N canvas 643 527 448 238 10;
+#X text 16 39 From www.netpd.org;
+#X text 15 8 Description: rcomp is a basic downward compressor. its
+control chain is processed in audio rate.;
+#X obj 18 141 mtl/compress~;
+#X obj 18 170 mtl/out~;
+#X obj 18 95 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X text 16 60 tags: mix~;
+#X obj 189 137 hsl 100 15 1 10 0 0 \$0/compress~/ratio \$0/compress~/ratio_
+/compress~/ratio 105 7 0 8 -262144 -1 -1 0 1;
+#X obj 189 157 hsl 100 15 -60 0 0 0 \$0/compress~/threshold \$0/compress~/threshold_
+/compress~/threshold 105 7 0 8 -262144 -1 -1 9900 1;
+#X obj 189 177 hsl 100 15 1 300 0 0 \$0/compress~/attack \$0/compress~/attack_
+/compress~/attack 105 7 0 8 -262144 -1 -1 298 1;
+#X obj 189 197 hsl 100 15 5 3000 0 0 \$0/compress~/release \$0/compress~/release_
+/compress~/release 105 7 0 8 -262144 -1 -1 512 1;
+#X obj 186 97 tgl 15 0 \$0/compress~/switch \$0/compress~/switch_ /compress~/switch
+17 7 0 8 -262144 -1 -1 0 1;
+#X obj 189 117 hsl 100 15 -20 30 0 0 \$0/compress~/gain \$0/compress~/gain_
+/compress~/gain 105 7 0 8 -262144 -1 -1 3960 1;
+#N canvas 5 185 450 300 generate~ 0;
+#X obj 32 213 osc~ 200;
+#X obj 32 89 metro 400;
+#X obj 32 175 mtof;
+#X obj 104 195 mtof;
+#X obj 32 132 + 20;
+#X obj 32 111 random 70;
+#X floatatom 83 69 5 0 0 0 - - -;
+#X obj 32 261 outlet~;
+#X obj 103 261 outlet~;
+#X obj 30 14 inlet;
+#X obj 104 175 mtl/closestNote 0 2 4 7 9;
+#X obj 104 234 *~;
+#X obj 31 234 *~;
+#X obj 104 214 osc~ 100;
+#X obj 32 155 mtl/closestNote 0 2 4 7 9;
+#X connect 0 0 12 0;
+#X connect 1 0 5 0;
+#X connect 2 0 0 0;
+#X connect 3 0 13 0;
+#X connect 4 0 10 0;
+#X connect 4 0 14 0;
+#X connect 5 0 4 0;
+#X connect 6 0 1 1;
+#X connect 9 0 1 0;
+#X connect 9 0 11 1;
+#X connect 9 0 12 1;
+#X connect 10 0 3 0;
+#X connect 11 0 8 0;
+#X connect 12 0 7 0;
+#X connect 13 0 11 0;
+#X connect 14 0 2 0;
+#X restore 18 120 pd generate~;
+#X connect 2 0 3 0;
+#X connect 2 1 3 1;
+#X connect 4 0 12 0;
+#X connect 12 0 2 0;
+#X connect 12 1 2 1;
diff --git a/compress~.pd b/compress~.pd
new file mode 100644
index 0000000..338f24e
--- /dev/null
+++ b/compress~.pd
@@ -0,0 +1,203 @@
+#N canvas 678 217 640 350 10;
+#N canvas 233 421 588 419 processing 0;
+#X obj 7 271 *~;
+#N canvas 284 416 336 370 amp-factor 0;
+#X obj 19 22 inlet~;
+#X obj 84 23 inlet;
+#X text 120 23 Ratio;
+#X obj 168 26 inlet;
+#X text 204 26 Threshold;
+#X obj 200 54 loadbang;
+#X msg 200 78 100;
+#X obj 200 102 sig~;
+#X obj 168 102 sig~;
+#X obj 168 134 +~;
+#X obj 155 161 -~;
+#X obj 155 206 /~;
+#X obj 155 184 max~ 0;
+#X obj 142 262 -~;
+#X obj 142 286 dbtorms~;
+#X obj 142 311 outlet~;
+#X obj 84 179 sig~;
+#X obj 97 129 - 1;
+#X obj 84 156 /;
+#X obj 19 68 rmstodb~;
+#X obj 19 45 abs~;
+#X text 18 4 Signal;
+#X text 189 310 Factor in RMS;
+#X connect 0 0 20 0;
+#X connect 1 0 17 0;
+#X connect 1 0 18 0;
+#X connect 3 0 8 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 9 1;
+#X connect 7 0 13 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 1;
+#X connect 10 0 12 0;
+#X connect 11 0 13 1;
+#X connect 12 0 11 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 16 0 11 1;
+#X connect 17 0 18 1;
+#X connect 18 0 16 0;
+#X connect 19 0 10 0;
+#X connect 20 0 19 0;
+#X restore 143 109 pd amp-factor;
+#X obj 294 112 /;
+#X obj 294 91 57;
+#X obj 294 70 t b f;
+#X obj 333 112 /;
+#X obj 333 91 57;
+#X obj 333 70 t b f;
+#X obj 7 31 inlet~;
+#X obj 7 350 outlet~;
+#X obj 179 24 inlet ratio;
+#X obj 216 50 inlet threshold;
+#X obj 294 25 inlet attack;
+#X obj 333 47 inlet release;
+#X obj 120 232 inlet gain;
+#X obj 120 253 + 100;
+#X obj 120 275 dbtorms;
+#X obj 200 212 loadbang;
+#X obj 64 271 *~;
+#X obj 78 230 *~;
+#X obj 63 34 inlet~;
+#X obj 64 350 outlet~;
+#X obj 101 73 *~ 0.707946;
+#X text 119 55 -3dB;
+#N canvas 597 484 506 356 att-rel-filtering 0;
+#N canvas 386 426 585 414 a-r-det 0;
+#X obj 43 51 inlet~;
+#X obj 43 200 outlet~;
+#X obj 94 200 outlet~;
+#X obj 43 145 max~ 0;
+#X obj 94 171 -~;
+#X obj 94 121 loadbang;
+#X msg 94 146 1;
+#X obj 105 50 inlet~;
+#X obj 43 97 -~;
+#X text 7 33 vgl.: "soll" mit "ist";
+#X text 33 218 Attack / Release;
+#X obj 43 121 zexy/sgn~;
+#X connect 0 0 8 1;
+#X connect 3 0 4 1;
+#X connect 3 0 1 0;
+#X connect 4 0 2 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 7 0 8 0;
+#X connect 8 0 11 0;
+#X connect 11 0 3 0;
+#X restore 50 86 pd a-r-det;
+#X text 26 99 att;
+#X text 111 101 rel;
+#X obj 22 195 vcf~;
+#X msg 134 162 0.4;
+#X obj 50 126 *~;
+#X obj 105 128 *~;
+#X obj 75 163 +~;
+#X obj 134 138 loadbang;
+#X obj 22 26 inlet~;
+#X text 67 26 amp-factor;
+#X obj 164 84 inlet;
+#X text 200 85 attack;
+#X text 237 104 release;
+#X obj 196 106 inlet;
+#X obj 22 272 outlet~;
+#X obj 290 47 block~ 2;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-factor 16 float 0;
+#X coords 0 100 15 0 20 20 1;
+#X restore 287 169 graph;
+#X obj 22 239 *~ 0.971042;
+#X obj 109 233 tabsend~ \$0-factor;
+#X obj 105 62 tabreceive~ \$0-factor;
+#X connect 0 0 5 0;
+#X connect 0 1 6 0;
+#X connect 3 0 18 0;
+#X connect 3 0 19 0;
+#X connect 4 0 3 2;
+#X connect 5 0 7 0;
+#X connect 6 0 7 1;
+#X connect 7 0 3 1;
+#X connect 8 0 4 0;
+#X connect 9 0 3 0;
+#X connect 9 0 0 0;
+#X connect 11 0 5 1;
+#X connect 14 0 6 1;
+#X connect 18 0 15 0;
+#X connect 20 0 0 1;
+#X restore 143 148 pd att-rel-filtering;
+#X obj 200 232 0;
+#X obj 306 309 env~ 6000;
+#X obj 306 334 outlet;
+#X connect 0 0 9 0;
+#X connect 1 0 24 0;
+#X connect 2 0 24 1;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 4 1 2 1;
+#X connect 5 0 24 2;
+#X connect 6 0 5 0;
+#X connect 7 0 6 0;
+#X connect 7 1 5 1;
+#X connect 8 0 0 0;
+#X connect 8 0 22 0;
+#X connect 10 0 1 1;
+#X connect 11 0 1 2;
+#X connect 12 0 4 0;
+#X connect 13 0 7 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 19 1;
+#X connect 17 0 25 0;
+#X connect 18 0 21 0;
+#X connect 19 0 0 1;
+#X connect 19 0 18 1;
+#X connect 20 0 18 0;
+#X connect 20 0 22 0;
+#X connect 22 0 1 0;
+#X connect 24 0 19 0;
+#X connect 24 0 26 0;
+#X connect 25 0 15 0;
+#X connect 26 0 27 0;
+#X restore 119 164 pd processing;
+#X obj 66 71 inlet~;
+#X obj 116 71 inlet~;
+#X obj 64 239 outlet~;
+#X obj 158 239 outlet~;
+#X obj 445 37 inlet params;
+#X obj 445 59 tof/paramRoute;
+#X obj 445 83 print PARAM_NOTFOUND;
+#X obj 154 96 tof/param /ratio 1 /g slider 1 10;
+#X obj 164 76 tof/param /threshold 0 /g slider -60 0;
+#X obj 174 56 tof/param /attack 10 /g slider 1 300;
+#X obj 185 35 tof/param /release 160 /g slider 5 3000;
+#X obj 64 211 tof/crossfade~ 2;
+#X obj 217 145 tof/param /switch 0 /g tgl;
+#X obj 217 166 != 0;
+#X msg 217 190 \$1 200;
+#X obj 144 116 tof/param /gain 0 /g slider -20 30;
+#X obj 217 212 line~;
+#X connect 0 0 12 2;
+#X connect 0 1 12 3;
+#X connect 1 0 0 0;
+#X connect 1 0 12 0;
+#X connect 2 0 0 1;
+#X connect 2 0 12 1;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 8 0 0 3;
+#X connect 9 0 0 4;
+#X connect 10 0 0 5;
+#X connect 11 0 0 6;
+#X connect 12 0 3 0;
+#X connect 12 1 4 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 17 0;
+#X connect 16 0 0 2;
+#X connect 17 0 12 4;
diff --git a/concat-help.pd b/concat-help.pd
new file mode 100644
index 0000000..307fb0a
--- /dev/null
+++ b/concat-help.pd
@@ -0,0 +1,10 @@
+#N canvas 301 154 450 300 10;
+#X obj 104 145 mtl/concat;
+#X msg 104 105 a b c d;
+#X text 29 32 tags: lists;
+#X text 35 10 description: concatenates the elements of a list.;
+#X msg 177 112 1 2 3 4;
+#X obj 105 179 print;
+#X connect 0 0 5 0;
+#X connect 1 0 0 0;
+#X connect 4 0 0 0;
diff --git a/concat.pd b/concat.pd
new file mode 100644
index 0000000..f9e1ae3
--- /dev/null
+++ b/concat.pd
@@ -0,0 +1,12 @@
+#N canvas 301 154 450 300 10;
+#X msg 233 110 symbol;
+#X obj 234 88 loadbang;
+#X obj 159 37 inlet;
+#X obj 170 138 zexy/list2symbol;
+#X obj 162 217 outlet;
+#X obj 164 173 cyclone/fromsymbol;
+#X connect 0 0 3 1;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 5 0;
+#X connect 5 0 4 0;
diff --git a/core.txt b/core.txt
new file mode 100644
index 0000000..5a946bc
--- /dev/null
+++ b/core.txt
@@ -0,0 +1,199 @@
+mtl/2dAngle 2d
+mtl/2dAngleLine 2d
+mtl/2dDistance 2d
+mtl/2dRatio 2d
+mtl/3dAdd 3d
+mtl/3dAngle 3d
+mtl/3dCross 3d
+mtl/3dDistance 3d
+mtl/3dDot 3d
+mtl/3dMagnitude 3d
+mtl/3dMove 3d
+mtl/3dNormalize 3d
+mtl/3dPanTilt 3d
+mtl/3dRotate 3d
+mtl/3dScale 3d
+mtl/3dSubtract 3d
+mtl/additive~ instrument~
+mtl/adsr~ control~
+mtl/ambient~ synthesize~
+mtl/applause~ synthesize~
+mtl/arpeggio musical
+mtl/asciiToPd conversion
+mtl/aux~ mix~
+mtl/beep~ synthesize~
+mtl/bell~ synthesize~
+mtl/benchmark tools
+mtl/binaryToByte conversion
+mtl/biorythm~ control~
+mtl/blip~ synthesize~
+mtl/bounce~ synthesize~
+mtl/bpmToFreq conversion
+mtl/bpmToMs conversion
+mtl/bubbles~ synthesize~
+mtl/buttonColor ui
+mtl/byteToBinary conversion
+mtl/bytesToIntSigned conversion
+mtl/center math
+mtl/channel~ mix~
+mtl/chordGuess midi
+mtl/chronometer timing
+mtl/clap808~ synthesize~
+mtl/clap~ synthesize~
+mtl/clkMaster timing
+mtl/clkSlave timing
+mtl/clkUDPIn timing network
+mtl/clkUDPOut timing network
+mtl/clocker timing
+mtl/closestNote musical
+mtl/colorGrid ui
+mtl/coloredNoise~ synthesize~
+mtl/compress~ mix~
+mtl/concat lists
+mtl/crackles~ synthesize~
+mtl/cranks~ synthesize~
+mtl/cues timing
+mtl/cues~ timing
+mtl/cycle5 musical
+mtl/degreeToChord musical
+mtl/degreeToRadian conversion
+mtl/delayPhasor~ fx~
+mtl/distoAp~ fx~
+mtl/distoCrusher~ fx~
+mtl/distoFuzz~ fx~
+mtl/distoLofi~ fx~
+mtl/distoNonmonotone~ fx~
+mtl/distoSign~ fx~
+mtl/distoTanh~ fx~
+mtl/dodeca musical
+mtl/doubleClick ui
+mtl/drips~ synthesize~
+mtl/dtmfBusy~ synthesize~
+mtl/dtmfHandUp~ synthesize~
+mtl/dtmfHurryUp~ synthesize~
+mtl/dtmfNumber~ synthesize~
+mtl/dtmfRing~ synthesize~
+mtl/echoRobot~ fx~
+mtl/echoVd~ fx~
+mtl/eq~ mix~
+mtl/every sequencing
+mtl/fibonacci math
+mtl/fileBrowser ui file
+mtl/fit musical
+mtl/form musical behavior
+mtl/fpsToMs conversion
+mtl/framesToSmpte conversion
+mtl/frying~ synthesize~
+mtl/gBrowser ui
+mtl/gateNoise~ mix~
+mtl/gemsAlpha gems
+mtl/gemsAverageColor gems
+mtl/gemsCropMap gems
+mtl/gemsCuber gems
+mtl/gemsDuplicate gems
+mtl/gemsFeedback gems
+mtl/gemsFit gems
+mtl/gemsLines gems
+mtl/gemsLoop gems
+mtl/gemsMouse gems
+mtl/gemsMovies gems
+mtl/gemsPolygon gems
+mtl/gemsWheel gems
+mtl/gemsWin gems
+mtl/granularLive~ fx~
+mtl/gunGas~ synthesize~
+mtl/gunShot~ synthesize~
+mtl/hexToDec conversion
+mtl/hissing~ synthesize~
+mtl/hold~ control~
+mtl/hsv ui
+mtl/hsvToRgb conversion
+mtl/inBetweens math
+mtl/indexer data
+mtl/instrument~ instrument~
+mtl/intToDigits conversion
+mtl/in~ mix~
+mtl/keyNameLearn ui
+mtl/keyR ui
+mtl/keyText ui symbols
+mtl/kick808~ synthesize~
+mtl/lightFreqToWave conversion
+mtl/lightWaveToFreq conversion
+mtl/lightning~ synthesize~
+mtl/limit~ mix~
+mtl/listBoolToPos lists
+mtl/listBuild lists
+mtl/listCutUp lists
+mtl/listDelay lists timing
+mtl/listJump lists musical
+mtl/listOp lists math
+mtl/mToHarm
+mtl/mToSpeed conversion
+mtl/main~ mix~
+mtl/makeLabel ui
+mtl/material~ fx~
+mtl/modf math
+mtl/msToBpm conversion
+mtl/msToFps conversion
+mtl/msToFreq conversion
+mtl/msToSmp conversion
+mtl/msToTime conversion
+mtl/nbx~ info~
+mtl/noteClose midi
+mtl/noteFloat midi
+mtl/noteSplit midi
+mtl/noteToName musical
+mtl/numToRgb conversion
+mtl/octava musical
+mtl/oldRecord~ synthesize~
+mtl/out~ mix~
+mtl/pdToAscii conversion
+mtl/phi math
+mtl/piano ui midi
+mtl/pitchShift~ fx~
+mtl/player~ tables play~
+mtl/punch~ mix~
+mtl/qtrack sequencing
+mtl/radianToDegree conversion
+mtl/rain~ synthesize~
+mtl/randomFloat random
+mtl/reverbCm~ fx~
+mtl/reverbFdn~ fx~
+mtl/reverbFree~ fx~
+mtl/rgbToHsv conversion
+mtl/rgbToNum conversion
+mtl/round math
+mtl/roundUp math
+mtl/rumble~ synthesize~
+mtl/sawor~ instrument~
+mtl/scaleSmart math
+mtl/seq1x8 sequencing
+mtl/seq8x8 sequencing
+mtl/sfIndexer tables file~
+mtl/shrinkSymbol symbols
+mtl/sigToFloat~ conversion
+mtl/sign math
+mtl/sl8 ui
+mtl/smpToBpm conversion musical
+mtl/smpToFreq conversion
+mtl/smpToMem conversion
+mtl/smpToMs conversion
+mtl/smpToTime conversion
+mtl/smpteToFrames conversion
+mtl/sometimes random
+mtl/soundFreqToWave conversion
+mtl/soundWaveToFreq conversion
+mtl/spectrum~ info~
+mtl/speedToM conversion
+mtl/splitExtension file
+mtl/tabwriteAuto tables
+mtl/tempo timing
+mtl/theMatrix data math
+mtl/timeToMs conversion
+mtl/tracker4 sequencing
+mtl/transpose musical
+mtl/valueChange routing
+mtl/vdirac~ synthesize~
+mtl/vocoder~ fx~
+mtl/vu~ info~
+mtl/wind~ synthesize~
diff --git a/crackles~-help.pd b/crackles~-help.pd
new file mode 100644
index 0000000..812fc00
--- /dev/null
+++ b/crackles~-help.pd
@@ -0,0 +1,11 @@
+#N canvas 607 109 316 236 10;
+#X text 40 43 Comment: Taken from Andy Farnell's work.;
+#X text 41 26 Description: Generates crackles.;
+#X obj 44 130 mtl/crackles~;
+#X obj 44 162 mtl/out~;
+#X obj 47 110 hsl 128 15 5 20000 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X text 40 62 tags: synthesize~;
+#X connect 2 0 3 0;
+#X connect 2 0 3 1;
+#X connect 4 0 2 0;
diff --git a/crackles~.pd b/crackles~.pd
new file mode 100644
index 0000000..86b72fd
--- /dev/null
+++ b/crackles~.pd
@@ -0,0 +1,45 @@
+#N canvas 732 120 583 535 10;
+#N canvas 0 0 610 502 crackles 0;
+#X obj 64 394 *~;
+#X obj 77 104 env~;
+#X msg 128 170 bang;
+#X obj 77 127 moses 50;
+#X obj 128 148 moses 51;
+#X obj 128 237 line~;
+#X msg 128 216 1 \, 0 \$1;
+#X obj 128 265 *~;
+#X obj 96 325 + 1500;
+#X obj 64 349 bp~ 4000 1;
+#X obj 95 303 * 500;
+#X obj 65 490 outlet~;
+#X obj 63 52 inlet~;
+#X obj 77 80 lop~ 1;
+#X obj 128 193 random 30;
+#X obj 64 445 lop~ 2000;
+#X obj 150 390 inlet;
+#X connect 0 0 15 0;
+#X connect 1 0 3 0;
+#X connect 2 0 14 0;
+#X connect 3 1 4 0;
+#X connect 4 0 2 0;
+#X connect 5 0 7 0;
+#X connect 5 0 7 1;
+#X connect 6 0 5 0;
+#X connect 7 0 0 1;
+#X connect 8 0 9 1;
+#X connect 9 0 0 0;
+#X connect 10 0 8 0;
+#X connect 12 0 9 0;
+#X connect 12 0 13 0;
+#X connect 13 0 1 0;
+#X connect 14 0 6 0;
+#X connect 14 0 10 0;
+#X connect 15 0 11 0;
+#X connect 16 0 15 1;
+#X restore 127 146 pd crackles;
+#X obj 128 110 noise~;
+#X obj 128 364 outlet~;
+#X obj 189 110 inlet;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 3 0 0 1;
diff --git a/cranks~-help.pd b/cranks~-help.pd
new file mode 100644
index 0000000..1449e22
--- /dev/null
+++ b/cranks~-help.pd
@@ -0,0 +1,16 @@
+#N canvas 240 512 341 248 10;
+#X obj 47 67 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 62 112 hradio 15 1 0 6 empty empty empty 0 -6 0 8 -262144 -1
+-1 0;
+#X text 64 68 random;
+#X text 59 92 select 1 of 6;
+#X text 9 2 Description: Generates six different crank sounds.;
+#X text 9 20 Comment: Taken from Andy Farnell's work.;
+#X obj 47 138 mtl/cranks~;
+#X obj 47 174 mtl/out~;
+#X text 12 37 tags: synthesize~;
+#X connect 0 0 6 0;
+#X connect 1 0 6 0;
+#X connect 6 0 7 0;
+#X connect 6 0 7 1;
diff --git a/cranks~.pd b/cranks~.pd
new file mode 100644
index 0000000..dd8edbe
--- /dev/null
+++ b/cranks~.pd
@@ -0,0 +1,210 @@
+#N canvas 0 0 611 565 10;
+#X obj 120 72 inlet;
+#X obj 184 484 outlet~;
+#N canvas 0 0 991 658 3cogs 0;
+#X obj 100 328 *~;
+#X obj 187 325 *~;
+#X obj 320 325 *~;
+#X obj 408 325 *~;
+#X obj 508 327 *~;
+#X obj 651 324 *~;
+#X obj 751 326 *~;
+#X obj 351 143 noise~;
+#X obj 351 164 hip~ 300;
+#X obj 12 326 *~;
+#X obj 407 518 outlet~;
+#X obj 27 224 bp~ 6666 40;
+#X obj 115 223 bp~ 7012 40;
+#X obj 202 222 bp~ 1500 35;
+#X obj 335 222 bp~ 4535 45;
+#X obj 423 223 bp~ 8325 40;
+#X obj 524 223 bp~ 11023 46;
+#X obj 668 223 bp~ 3567 40;
+#X obj 100 389 *~ 0.33;
+#X obj 855 327 *~;
+#X obj 408 385 *~ 0.33;
+#X obj 750 379 *~ 0.33;
+#X obj 767 224 bp~ 4290 20;
+#X obj 871 225 bp~ 6470 20;
+#X obj 422 11 inlet;
+#X obj 422 37 sel 1 2 3;
+#X obj 407 477 *~ 1;
+#X obj 12 121 creb/ead~ 1 30;
+#X obj 100 121 creb/ead~ 1 10;
+#X obj 187 118 creb/ead~ 1 10;
+#X obj 320 118 creb/ead~ 1 70;
+#X obj 408 118 creb/ead~ 1 45;
+#X obj 508 120 creb/ead~ 1 11;
+#X obj 651 117 creb/ead~ 1 40;
+#X obj 751 119 creb/ead~ 1 22;
+#X obj 855 120 creb/ead~ 1 8;
+#X connect 0 0 18 0;
+#X connect 1 0 18 0;
+#X connect 2 0 20 0;
+#X connect 3 0 20 0;
+#X connect 4 0 20 0;
+#X connect 5 0 21 0;
+#X connect 6 0 21 0;
+#X connect 7 0 8 0;
+#X connect 8 0 11 0;
+#X connect 8 0 12 0;
+#X connect 8 0 13 0;
+#X connect 8 0 14 0;
+#X connect 8 0 15 0;
+#X connect 8 0 16 0;
+#X connect 8 0 17 0;
+#X connect 8 0 22 0;
+#X connect 8 0 23 0;
+#X connect 9 0 18 0;
+#X connect 11 0 9 1;
+#X connect 12 0 0 1;
+#X connect 13 0 1 1;
+#X connect 14 0 2 1;
+#X connect 15 0 3 1;
+#X connect 16 0 4 1;
+#X connect 17 0 5 1;
+#X connect 18 0 26 0;
+#X connect 19 0 21 0;
+#X connect 20 0 26 0;
+#X connect 21 0 26 0;
+#X connect 22 0 6 1;
+#X connect 23 0 19 1;
+#X connect 24 0 25 0;
+#X connect 25 0 27 0;
+#X connect 25 0 28 0;
+#X connect 25 0 29 0;
+#X connect 25 1 30 0;
+#X connect 25 1 31 0;
+#X connect 25 1 32 0;
+#X connect 25 2 33 0;
+#X connect 25 2 34 0;
+#X connect 25 2 35 0;
+#X connect 26 0 10 0;
+#X connect 27 0 9 0;
+#X connect 28 0 0 0;
+#X connect 29 0 1 0;
+#X connect 30 0 2 0;
+#X connect 31 0 3 0;
+#X connect 32 0 4 0;
+#X connect 33 0 5 0;
+#X connect 34 0 6 0;
+#X connect 35 0 19 0;
+#X restore 85 304 pd 3cogs;
+#N canvas 0 0 1255 783 clickfactory 0;
+#X obj 100 328 *~;
+#X obj 187 325 *~;
+#X obj 320 325 *~;
+#X obj 408 325 *~;
+#X obj 508 327 *~;
+#X obj 651 324 *~;
+#X obj 751 326 *~;
+#X obj 752 77 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 351 143 noise~;
+#X obj 351 164 hip~ 300;
+#X obj 12 326 *~;
+#X obj 407 518 outlet~;
+#X obj 407 477 *~ 0.33;
+#X obj 524 223 bp~ 11023 46;
+#X obj 100 389 *~ 0.33;
+#X obj 855 327 *~;
+#X obj 408 385 *~ 0.33;
+#X obj 750 379 *~ 0.33;
+#X obj 408 75 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 100 76 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 58 75 cog1;
+#X text 368 73 cog2;
+#X text 705 78 cog3;
+#X obj 422 11 inlet;
+#X obj 422 37 sel 1 2 3;
+#X obj 871 225 bp~ 2470 20;
+#X obj 27 224 bp~ 4564 3;
+#X obj 115 223 bp~ 4237 14;
+#X obj 199 222 bp~ 4876 12;
+#X obj 335 222 bp~ 345 22;
+#X obj 422 223 bp~ 256 3;
+#X obj 767 224 bp~ 6290 20;
+#X obj 668 223 bp~ 5432 40;
+#X obj 10 120 creb/ead~ 1 50;
+#X obj 100 121 creb/ead~ 1 10;
+#X obj 187 118 creb/ead~ 1 10;
+#X obj 320 118 creb/ead~ 1 70;
+#X obj 408 118 creb/ead~ 1 45;
+#X obj 508 120 creb/ead~ 1 11;
+#X obj 651 117 creb/ead~ 1 40;
+#X obj 751 119 creb/ead~ 1 22;
+#X obj 855 120 creb/ead~ 1 8;
+#X connect 0 0 14 0;
+#X connect 1 0 14 0;
+#X connect 2 0 16 0;
+#X connect 3 0 16 0;
+#X connect 4 0 16 0;
+#X connect 5 0 17 0;
+#X connect 6 0 17 0;
+#X connect 7 0 39 0;
+#X connect 7 0 40 0;
+#X connect 7 0 41 0;
+#X connect 8 0 9 0;
+#X connect 9 0 13 0;
+#X connect 9 0 25 0;
+#X connect 9 0 26 0;
+#X connect 9 0 27 0;
+#X connect 9 0 28 0;
+#X connect 9 0 29 0;
+#X connect 9 0 30 0;
+#X connect 9 0 31 0;
+#X connect 9 0 32 0;
+#X connect 10 0 14 0;
+#X connect 12 0 11 0;
+#X connect 13 0 4 1;
+#X connect 14 0 12 0;
+#X connect 15 0 17 0;
+#X connect 16 0 12 0;
+#X connect 17 0 12 0;
+#X connect 18 0 36 0;
+#X connect 18 0 37 0;
+#X connect 18 0 38 0;
+#X connect 19 0 33 0;
+#X connect 19 0 34 0;
+#X connect 19 0 35 0;
+#X connect 23 0 24 0;
+#X connect 24 0 19 0;
+#X connect 24 1 18 0;
+#X connect 24 2 7 0;
+#X connect 25 0 15 1;
+#X connect 26 0 10 1;
+#X connect 27 0 0 1;
+#X connect 28 0 1 1;
+#X connect 29 0 2 1;
+#X connect 30 0 3 1;
+#X connect 31 0 6 1;
+#X connect 32 0 5 1;
+#X connect 33 0 10 0;
+#X connect 34 0 0 0;
+#X connect 35 0 1 0;
+#X connect 36 0 2 0;
+#X connect 37 0 3 0;
+#X connect 38 0 4 0;
+#X connect 39 0 5 0;
+#X connect 40 0 6 0;
+#X connect 41 0 15 0;
+#X restore 206 337 pd clickfactory;
+#X obj 184 243 moses 4;
+#X obj 190 214 + 1;
+#X obj 225 153 mod 6;
+#X obj 228 300 - 3;
+#X obj 93 165 random 6;
+#X obj 127 121 route bang;
+#X connect 0 0 9 0;
+#X connect 2 0 1 0;
+#X connect 3 0 1 0;
+#X connect 4 0 2 0;
+#X connect 4 1 7 0;
+#X connect 5 0 4 0;
+#X connect 6 0 5 0;
+#X connect 7 0 3 0;
+#X connect 8 0 5 0;
+#X connect 9 0 8 0;
+#X connect 9 1 6 0;
diff --git a/cues-help.pd b/cues-help.pd
new file mode 100644
index 0000000..cc98870
--- /dev/null
+++ b/cues-help.pd
@@ -0,0 +1,41 @@
+#N canvas 335 357 568 303 10;
+#X obj 20 -53 bng 15 250 50 0 empty empty empty 0 -6 0 10 -262144 -1
+-1;
+#X msg 122 20 read \$1;
+#X obj 20 -3 metro 1;
+#X floatatom 20 44 5 0 0 0 - - -;
+#X obj 20 -31 t b b b;
+#X text 200 19 You can also add messages manually;
+#X obj 20 65 mtl/cues;
+#X msg 204 57 clear \, add 10 AYE AYE \, add 3750 POPEYE \, add 6000
+is a sailor man;
+#X obj 122 -3 openpanel;
+#X obj 122 -23 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 204 35 loadbang;
+#X obj 20 90 print index;
+#X obj 99 89 print cue;
+#X text 373 113 Example: 10 AYE AYE;
+#X text 427 126 3750 POPEYE;
+#X text 427 138 6000 IS A SAILOR MAN;
+#X text 18 113 You can provide a cue file. Each line can contain one
+cue and must end with a carriage return.;
+#X obj 10 -123 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 15 -120 description: Cues events to a number stream.;
+#X text 15 -81 tags: timing;
+#X obj 20 21 tof/increment;
+#X connect 0 0 4 0;
+#X connect 1 0 6 1;
+#X connect 2 0 20 0;
+#X connect 3 0 6 0;
+#X connect 4 0 2 0;
+#X connect 4 1 20 1;
+#X connect 4 2 6 1;
+#X connect 6 0 11 0;
+#X connect 6 1 12 0;
+#X connect 7 0 6 1;
+#X connect 8 0 1 0;
+#X connect 9 0 8 0;
+#X connect 10 0 7 0;
+#X connect 20 0 3 0;
diff --git a/cues.pd b/cues.pd
new file mode 100644
index 0000000..b1ba45c
--- /dev/null
+++ b/cues.pd
@@ -0,0 +1,61 @@
+#N canvas 141 142 868 556 10;
+#X obj 145 381 outlet cue_number;
+#X obj 400 -249 inlet reset;
+#X obj 584 247 textfile;
+#X obj 122 152 spigot;
+#X msg 194 92 1;
+#X msg 234 93 0;
+#X msg 658 317 0;
+#X obj 122 196 t b b b;
+#X obj 391 17 t b b b;
+#X obj 145 274 t a b;
+#X obj 214 346 outlet cue_time;
+#X msg 691 255 print;
+#X obj 102 27 t b a a b;
+#X obj 500 -68 route read;
+#X obj 703 49 symbol;
+#X obj 757 -51 loadbang;
+#X msg 391 117 rewind \, bang;
+#X obj 214 311 list;
+#X obj 90 118 moses;
+#X obj 90 -118 inlet;
+#X obj 122 91 unpack f;
+#X text 814 138 write one;
+#X obj 757 -15 iemlib/dollarg;
+#X msg 695 212 read \$1 cr \, rewind \, bang;
+#X obj 141 237 tof/increment;
+#X obj 414 -106 zexy/relay add clear;
+#X connect 1 0 25 0;
+#X connect 2 0 12 0;
+#X connect 2 1 6 0;
+#X connect 3 0 7 0;
+#X connect 4 0 3 1;
+#X connect 5 0 3 1;
+#X connect 6 0 3 1;
+#X connect 7 0 2 0;
+#X connect 7 1 24 0;
+#X connect 7 2 5 0;
+#X connect 8 0 16 0;
+#X connect 8 1 24 1;
+#X connect 8 2 5 0;
+#X connect 9 0 0 0;
+#X connect 9 1 17 0;
+#X connect 11 0 2 0;
+#X connect 12 1 20 0;
+#X connect 12 2 17 1;
+#X connect 12 3 4 0;
+#X connect 13 0 14 0;
+#X connect 13 1 8 0;
+#X connect 14 0 23 0;
+#X connect 15 0 22 0;
+#X connect 16 0 2 0;
+#X connect 17 0 10 0;
+#X connect 18 1 3 0;
+#X connect 19 0 18 0;
+#X connect 20 0 18 1;
+#X connect 22 0 14 0;
+#X connect 23 0 2 0;
+#X connect 24 0 9 0;
+#X connect 25 0 2 0;
+#X connect 25 1 2 0;
+#X connect 25 2 13 0;
diff --git a/cues~-help.pd b/cues~-help.pd
new file mode 100644
index 0000000..d8b3e99
--- /dev/null
+++ b/cues~-help.pd
@@ -0,0 +1,41 @@
+#N canvas 417 217 626 315 10;
+#X obj 25 1 bng 15 250 50 0 empty empty empty 0 -6 0 10 -262144 -1
+-1;
+#X msg 123 64 read \$1;
+#X text 190 7 You can also add messages manually;
+#X msg 193 48 clear \, add 10 AYE AYE \, add 3750 POPEYE \, add 6000
+is a sailor man;
+#X obj 123 41 openpanel;
+#X obj 123 19 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 193 26 loadbang;
+#X obj 25 122 print index;
+#X obj 105 123 print cue;
+#X text 385 151 Example: 10 AYE AYE;
+#X text 439 167 3750 POPEYE;
+#X text 439 182 6000 IS A SAILOR MAN;
+#X text 23 151 You can provide a cue file. Each line can contain one
+cue and must end with a carriage return.;
+#X obj 25 91 mtl/cues~;
+#X obj 25 64 line~;
+#X obj 25 21 t b b;
+#X obj 144 99 bng 15 250 50 0 empty empty Reset 0 -6 0 10 -262144 -1
+-1;
+#X msg 25 42 0 \, 10000 10000;
+#X obj 17 -70 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 22 -28 tags: timing;
+#X text 23 -68 description: Cues events to a number stream.;
+#X connect 0 0 15 0;
+#X connect 1 0 13 1;
+#X connect 3 0 13 1;
+#X connect 4 0 1 0;
+#X connect 5 0 4 0;
+#X connect 6 0 3 0;
+#X connect 13 0 7 0;
+#X connect 13 1 8 0;
+#X connect 14 0 13 0;
+#X connect 15 0 17 0;
+#X connect 15 1 13 1;
+#X connect 16 0 13 1;
+#X connect 17 0 14 0;
diff --git a/cues~.pd b/cues~.pd
new file mode 100644
index 0000000..ea5f74d
--- /dev/null
+++ b/cues~.pd
@@ -0,0 +1,78 @@
+#N canvas 559 76 1005 692 10;
+#X obj 56 -121 inlet~;
+#X obj 108 507 outlet cue_number;
+#X obj 560 -181 inlet reset;
+#X obj 81 160 bng 15 250 50 0 empty empty empty 0 -6 0 10 -262144 -1
+-1;
+#X obj 277 140 bng 15 250 50 0 empty empty empty 0 -6 0 10 -262144
+-1 -1;
+#X obj 121 109 threshold~ 0 0 0 0;
+#X obj 613 220 textfile;
+#X msg 136 47 set \$1 0 0.001 0;
+#X msg 251 80 0;
+#X obj 266 214 spigot;
+#X obj 751 9 t a b;
+#X msg 808 29 symbol;
+#X obj 751 61 sel symbol;
+#X msg 703 145 read \$1 cr \, rewind \, bang;
+#X msg 373 165 1;
+#X msg 419 165 0;
+#X msg 709 280 0;
+#X obj 287 272 t b b b;
+#X obj 496 -32 t b b b;
+#X obj 213 403 t a b;
+#X obj 477 507 outlet cue_time;
+#X msg 708 203 print;
+#X obj 271 -12 t b a a b;
+#X obj 751 -45 symbol;
+#X obj 805 -143 loadbang;
+#X msg 616 53 rewind \, bang;
+#X obj 282 440 list;
+#X obj 136 22 list split 1;
+#X obj 800 -109 iemlib/dollarg;
+#X obj 653 -98 route read;
+#X obj 205 367 tof/increment;
+#X obj 566 -143 zexy/relay add clear;
+#X connect 0 0 5 0;
+#X connect 2 0 31 0;
+#X connect 5 0 3 0;
+#X connect 5 0 9 0;
+#X connect 5 1 4 0;
+#X connect 6 0 22 0;
+#X connect 6 1 16 0;
+#X connect 7 0 5 0;
+#X connect 8 0 5 1;
+#X connect 9 0 17 0;
+#X connect 10 0 12 0;
+#X connect 10 1 11 0;
+#X connect 11 0 12 1;
+#X connect 12 1 13 0;
+#X connect 13 0 6 0;
+#X connect 14 0 9 1;
+#X connect 15 0 9 1;
+#X connect 16 0 9 1;
+#X connect 17 0 6 0;
+#X connect 17 1 30 0;
+#X connect 17 2 15 0;
+#X connect 18 0 25 0;
+#X connect 18 1 30 1;
+#X connect 18 2 15 0;
+#X connect 19 0 1 0;
+#X connect 19 1 26 0;
+#X connect 21 0 6 0;
+#X connect 22 0 8 0;
+#X connect 22 1 27 0;
+#X connect 22 2 26 1;
+#X connect 22 3 14 0;
+#X connect 23 0 10 0;
+#X connect 24 0 28 0;
+#X connect 25 0 6 0;
+#X connect 26 0 20 0;
+#X connect 27 0 7 0;
+#X connect 28 0 23 0;
+#X connect 29 0 23 0;
+#X connect 29 1 18 0;
+#X connect 30 0 19 0;
+#X connect 31 0 6 0;
+#X connect 31 1 6 0;
+#X connect 31 2 29 0;
diff --git a/cycle5-help.pd b/cycle5-help.pd
new file mode 100644
index 0000000..e463877
--- /dev/null
+++ b/cycle5-help.pd
@@ -0,0 +1,8 @@
+#N canvas 0 0 350 147 10;
+#X floatatom 26 56 5 0 0 0 - - -;
+#X floatatom 26 103 5 0 0 0 - - -;
+#X obj 26 80 mtl/cycle5;
+#X text 24 29 tags: musical;
+#X text 25 11 Description: Cycles through the serie of fifths;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
diff --git a/cycle5.pd b/cycle5.pd
new file mode 100644
index 0000000..aa0a9fd
--- /dev/null
+++ b/cycle5.pd
@@ -0,0 +1,10 @@
+#N canvas 0 0 450 300 10;
+#X obj 55 68 inlet;
+#X obj 260 71 loadbang;
+#X obj 69 226 expr ((abs($f1+12)%12)*7)%12;
+#X obj 21 277 outlet;
+#X obj 251 111 tof/argument 1 0;
+#X connect 0 0 2 0;
+#X connect 1 0 4 0;
+#X connect 2 0 3 0;
+#X connect 4 0 2 0;
diff --git a/degreeToChord-help.pd b/degreeToChord-help.pd
new file mode 100644
index 0000000..d303b6e
--- /dev/null
+++ b/degreeToChord-help.pd
@@ -0,0 +1,25 @@
+#N canvas 550 235 380 315 10;
+#X floatatom 76 118 5 0 0 0 - - -;
+#X text 115 117 Number of notes in the chord;
+#X floatatom 27 84 5 0 0 0 - - -;
+#X text 63 79 Degree of the chord in the major scale;
+#X floatatom 172 202 5 0 0 0 - - -;
+#X text 42 169 You might want to transpose as well;
+#X floatatom 172 249 5 0 0 0 - - -;
+#X text 23 12 Description: Cycles through the chords of n notes in
+a scale \, the major scale by default;
+#X text 64 92 1 is the first degree \, not 0;
+#X obj 27 146 mtl/degreeToChord;
+#X obj 27 215 mtl/transpose;
+#X obj 172 225 mtl/cycle5;
+#X obj 27 248 cyclone/prepend set;
+#X text 24 44 tags: musical;
+#X msg 27 275;
+#X connect 0 0 9 1;
+#X connect 2 0 9 0;
+#X connect 4 0 11 0;
+#X connect 9 0 10 0;
+#X connect 10 0 12 0;
+#X connect 11 0 6 0;
+#X connect 11 0 10 1;
+#X connect 12 0 14 0;
diff --git a/degreeToChord.pd b/degreeToChord.pd
new file mode 100644
index 0000000..9591073
--- /dev/null
+++ b/degreeToChord.pd
@@ -0,0 +1,46 @@
+#N canvas 369 115 1071 783 10;
+#X obj 191 419 list;
+#X msg 733 559 1 0 1 0 1 1 0 1 0 1 0 1;
+#X obj 736 535 loadbang;
+#X obj 716 510 inlet;
+#X obj 146 87 inlet;
+#X text 759 590 The major;
+#X obj 849 650 - 1;
+#X text 713 484 Scale;
+#X obj 224 174 t b f;
+#X text 94 54 Offset (degree) of the chord to get;
+#X obj 412 179 inlet;
+#X text 418 153 Number of notes in the chord;
+#X obj 415 224 f;
+#X obj 183 694 outlet;
+#X obj 226 130 - 1;
+#X text 199 89 In music \, index 1 is the first degree. In computer
+sciences \, it is index 0;
+#X obj 218 464 expr 0-$f1;
+#X text 302 464 The offset are the inverse (negative) than those in
+list-rot;
+#X obj 459 192 tof/argument 1 3;
+#X obj 459 172 loadbang;
+#X obj 716 620 ./listBoolToPos;
+#X obj 716 653 ./listOp;
+#X obj 156 524 cyclone/zl rot;
+#X obj 183 639 ./listJump 2 3;
+#X connect 0 0 22 0;
+#X connect 1 0 20 0;
+#X connect 2 0 1 0;
+#X connect 3 0 20 0;
+#X connect 4 0 14 0;
+#X connect 6 0 21 1;
+#X connect 8 0 0 0;
+#X connect 8 1 16 0;
+#X connect 10 0 12 0;
+#X connect 12 0 23 2;
+#X connect 14 0 8 0;
+#X connect 16 0 22 1;
+#X connect 18 0 12 0;
+#X connect 19 0 18 0;
+#X connect 20 0 21 0;
+#X connect 21 0 0 1;
+#X connect 21 1 6 0;
+#X connect 22 0 23 0;
+#X connect 23 0 13 0;
diff --git a/degreeToRadian-help.pd b/degreeToRadian-help.pd
new file mode 100644
index 0000000..66784ca
--- /dev/null
+++ b/degreeToRadian-help.pd
@@ -0,0 +1,14 @@
+#N canvas 242 154 426 192 10;
+#X floatatom 144 91 5 0 0 0 - - -;
+#X floatatom 144 147 0 0 0 0 - - -;
+#X msg 191 92 180;
+#X obj 13 9 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 125 51 Author: Roman Haefeli;
+#X text 268 51 Version: 2007-12-09;
+#X text 18 12 Description: Converts degrees into radians.;
+#X obj 144 123 mtl/degreeToRadian;
+#X text 18 51 tags: conversion;
+#X connect 0 0 7 0;
+#X connect 2 0 7 0;
+#X connect 7 0 1 0;
diff --git a/degreeToRadian.pd b/degreeToRadian.pd
new file mode 100644
index 0000000..0e0ca1c
--- /dev/null
+++ b/degreeToRadian.pd
@@ -0,0 +1,17 @@
+#N canvas 426 297 448 298 10;
+#X obj 79 86 inlet;
+#X obj 79 172 outlet;
+#X obj 151 121 / 45;
+#X obj 151 55 loadbang;
+#X obj 79 120 f;
+#X obj 151 98 atan;
+#X msg 151 77 1;
+#X text 73 27 taken from zexy;
+#X obj 79 144 *;
+#X connect 0 0 4 0;
+#X connect 2 0 8 1;
+#X connect 3 0 6 0;
+#X connect 4 0 8 0;
+#X connect 5 0 2 0;
+#X connect 6 0 5 0;
+#X connect 8 0 1 0;
diff --git a/delayPhasor~-help.pd b/delayPhasor~-help.pd
new file mode 100644
index 0000000..6d53c0e
--- /dev/null
+++ b/delayPhasor~-help.pd
@@ -0,0 +1,54 @@
+#N canvas 584 57 499 243 10;
+#X text 14 29 Author: Chun Lee (sonicvariable.goto10.org);
+#X text 15 8 Description: Delay controlled by a phasor;
+#X obj 20 171 mtl/out~;
+#X obj 20 138 mtl/delayPhasor~ /id delayPhasor;
+#X text 15 50 tags: fx~;
+#X obj 19 90 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#N canvas 5 185 450 300 generate~ 0;
+#X obj 32 213 osc~ 200;
+#X obj 32 89 metro 400;
+#X obj 32 175 mtof;
+#X obj 104 195 mtof;
+#X obj 32 132 + 20;
+#X obj 32 111 random 70;
+#X floatatom 83 69 5 0 0 0 - - -;
+#X obj 32 261 outlet~;
+#X obj 103 261 outlet~;
+#X obj 30 14 inlet;
+#X obj 104 175 mtl/closestNote 0 2 4 7 9;
+#X obj 104 234 *~;
+#X obj 31 234 *~;
+#X obj 104 214 osc~ 100;
+#X obj 32 155 mtl/closestNote 0 2 4 7 9;
+#X connect 0 0 12 0;
+#X connect 1 0 5 0;
+#X connect 2 0 0 0;
+#X connect 3 0 13 0;
+#X connect 4 0 10 0;
+#X connect 4 0 14 0;
+#X connect 5 0 4 0;
+#X connect 6 0 1 1;
+#X connect 9 0 1 0;
+#X connect 9 0 11 1;
+#X connect 9 0 12 1;
+#X connect 10 0 3 0;
+#X connect 11 0 8 0;
+#X connect 12 0 7 0;
+#X connect 13 0 11 0;
+#X connect 14 0 2 0;
+#X restore 19 115 pd generate~;
+#X obj 238 138 hsl 100 15 0 1 0 0 \$0/delayPhasor/wet \$0/delayPhasor/wet_
+/delayPhasor/wet 105 7 0 8 -262144 -1 -1 0 1;
+#X obj 238 178 hsl 100 15 1 20000 0 0 \$0/delayPhasor/delay2 \$0/delayPhasor/delay2_
+/delayPhasor/delay2 105 7 0 8 -262144 -1 -1 4 1;
+#X obj 238 158 hsl 100 15 1 20000 0 0 \$0/delayPhasor/delay1 \$0/delayPhasor/delay1_
+/delayPhasor/delay1 105 7 0 8 -262144 -1 -1 49 1;
+#X obj 238 198 hsl 100 15 0.01 10 0 0 \$0/delayPhasor/phasor \$0/delayPhasor/phasor_
+/delayPhasor/phasor 105 7 0 8 -262144 -1 -1 287 1;
+#X connect 3 0 2 0;
+#X connect 3 1 2 1;
+#X connect 5 0 6 0;
+#X connect 6 0 3 0;
+#X connect 6 1 3 1;
diff --git a/delayPhasor~.pd b/delayPhasor~.pd
new file mode 100644
index 0000000..92b0d89
--- /dev/null
+++ b/delayPhasor~.pd
@@ -0,0 +1,97 @@
+#N canvas 362 310 740 458 10;
+#N canvas 460 241 627 300 delayphasor 0;
+#X obj 311 292 *~ 0.8;
+#X obj 310 249 /~ 44.1;
+#X obj 310 226 +~ 100;
+#X obj 310 204 *~ 50;
+#X obj 308 132 -~ 0.5;
+#X obj 309 158 abs~;
+#X obj 310 183 *~ 2;
+#X obj 84 247 /~ 44.1;
+#X obj 84 224 +~ 100;
+#X obj 84 202 *~ 50;
+#X obj 82 130 -~ 0.5;
+#X obj 83 156 abs~;
+#X obj 84 181 *~ 2;
+#X floatatom 169 91 5 0 0 0 - - -;
+#X obj 84 290 *~ 0.8;
+#X obj 9 4 inlet~;
+#X obj 169 50 loadbang;
+#X msg 169 69 0.5;
+#X floatatom 380 36 5 0 0 0 - - -;
+#X floatatom 422 34 5 0 0 0 - - -;
+#X obj 380 12 inlet;
+#X obj 422 11 inlet;
+#X obj 253 68 inlet~;
+#X obj 83 110 phasor~ 0.033;
+#X obj 309 112 phasor~ 0.033;
+#X obj 83 317 outlet~;
+#X obj 312 319 outlet~;
+#X obj 9 26 delwrite~ dpdelay11 1000;
+#X obj 253 90 delwrite~ dpdelay22 1000;
+#X obj 309 271 vd~ dpdelay22;
+#X obj 82 269 vd~ dpdelay11;
+#X obj 488 13 inlet phasor;
+#X connect 0 0 26 0;
+#X connect 0 0 28 0;
+#X connect 1 0 29 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 3 0;
+#X connect 7 0 30 0;
+#X connect 8 0 7 0;
+#X connect 9 0 8 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 9 0;
+#X connect 13 0 23 1;
+#X connect 14 0 25 0;
+#X connect 14 0 27 0;
+#X connect 15 0 27 0;
+#X connect 16 0 17 0;
+#X connect 17 0 13 0;
+#X connect 18 0 9 1;
+#X connect 18 0 3 1;
+#X connect 19 0 8 1;
+#X connect 19 0 2 1;
+#X connect 20 0 18 0;
+#X connect 21 0 19 0;
+#X connect 22 0 28 0;
+#X connect 23 0 10 0;
+#X connect 24 0 4 0;
+#X connect 29 0 0 0;
+#X connect 30 0 14 0;
+#X connect 31 0 13 0;
+#X restore 27 86 pd delayphasor;
+#X obj 135 309 outlet~;
+#X obj 227 308 outlet~;
+#X obj 27 47 inlet~;
+#X obj 87 47 inlet~;
+#X obj 590 32 inlet params;
+#X obj 590 78 print PARAM_NOTFOUND;
+#X obj 135 273 tof/crossfade~ 2;
+#X obj 253 176 tof/param /wet 0 /g slider 0 1;
+#X obj 307 48 tof/param /delay2 10 /g slider 1 20000;
+#X obj 307 18 tof/param /delay1 100 /g slider 1 20000;
+#X obj 317 98 tof/param /phasor 0.3 /g slider 0.01 10;
+#X obj 253 219 line~;
+#X msg 253 198 \$1 5;
+#X obj 590 54 tof/param route;
+#X connect 0 0 7 2;
+#X connect 0 1 7 3;
+#X connect 3 0 0 0;
+#X connect 3 0 7 0;
+#X connect 4 0 0 1;
+#X connect 4 0 7 1;
+#X connect 5 0 14 0;
+#X connect 7 0 1 0;
+#X connect 7 1 2 0;
+#X connect 8 0 13 0;
+#X connect 9 0 0 3;
+#X connect 10 0 0 2;
+#X connect 11 0 0 4;
+#X connect 12 0 7 4;
+#X connect 13 0 12 0;
+#X connect 14 0 6 0;
diff --git a/distoAp~-help.pd b/distoAp~-help.pd
new file mode 100644
index 0000000..47f9428
--- /dev/null
+++ b/distoAp~-help.pd
@@ -0,0 +1,65 @@
+#N canvas 631 397 563 270 10;
+#X text 10 50 See: http://www.acoustics.hut.fi/~jpekonen/Papers/dafx08/
+;
+#X text 11 5 Description: "Coefficient Modulated Allpass Filter as
+Distortion Effect" as in the DAFx 2008 paper by Jussi Pekonen;
+#X obj 15 125 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 15 211 mtl/out~;
+#X text 9 68 Author: Frank Barknecht \, 2008;
+#X text 10 85 tags: fx~;
+#X obj 243 132 hsl 100 15 0 127 0 0 \$0/disAp/lop \$0/disAp/lop_ /disAp/lop
+105 7 0 8 -262144 -1 -1 0 1;
+#X obj 243 152 hsl 100 15 0 500 0 0 \$0/disAp/drive \$0/disAp/drive_
+/disAp/drive 105 7 0 8 -262144 -1 -1 0 1;
+#X obj 243 112 hsl 100 15 0 1 0 0 \$0/disAp/wet \$0/disAp/wet_ /disAp/wet
+105 7 0 8 -262144 -1 -1 0 1;
+#X text 239 173 presets;
+#X msg 252 214 /disAp/lop 30 \, /disAp/drive 110 \, /disAp/wet 1;
+#X msg 175 164 /wet \$1;
+#X floatatom 175 143 5 0 1 0 - - -;
+#X msg 241 194 /disAp/lop 80 \, /disAp/drive 10 \, /disAp/wet 1;
+#N canvas 5 185 450 300 generate~ 0;
+#X obj 32 213 osc~ 200;
+#X obj 32 89 metro 400;
+#X obj 32 175 mtof;
+#X obj 104 195 mtof;
+#X obj 32 132 + 20;
+#X obj 32 111 random 70;
+#X floatatom 83 69 5 0 0 0 - - -;
+#X obj 32 261 outlet~;
+#X obj 103 261 outlet~;
+#X obj 30 14 inlet;
+#X obj 104 175 mtl/closestNote 0 2 4 7 9;
+#X obj 104 234 *~;
+#X obj 31 234 *~;
+#X obj 104 214 osc~ 100;
+#X obj 32 155 mtl/closestNote 0 2 4 7 9;
+#X connect 0 0 12 0;
+#X connect 1 0 5 0;
+#X connect 2 0 0 0;
+#X connect 3 0 13 0;
+#X connect 4 0 10 0;
+#X connect 4 0 14 0;
+#X connect 5 0 4 0;
+#X connect 6 0 1 1;
+#X connect 9 0 1 0;
+#X connect 9 0 11 1;
+#X connect 9 0 12 1;
+#X connect 10 0 3 0;
+#X connect 11 0 8 0;
+#X connect 12 0 7 0;
+#X connect 13 0 11 0;
+#X connect 14 0 2 0;
+#X restore 15 150 pd generate~;
+#X obj 16 187 mtl/distoAp~ /id disAp;
+#X obj 241 235 tof/param route;
+#X connect 2 0 14 0;
+#X connect 10 0 16 0;
+#X connect 11 0 15 2;
+#X connect 12 0 11 0;
+#X connect 13 0 16 0;
+#X connect 14 0 15 0;
+#X connect 14 1 15 1;
+#X connect 15 0 3 0;
+#X connect 15 1 3 1;
diff --git a/distoAp~.pd b/distoAp~.pd
new file mode 100644
index 0000000..1393660
--- /dev/null
+++ b/distoAp~.pd
@@ -0,0 +1,79 @@
+#N canvas 612 363 767 304 10;
+#X obj 33 21 inlet~;
+#X obj 31 231 outlet~;
+#X obj 125 213 outlet~;
+#X obj 95 22 inlet~;
+#X obj 402 19 inlet params;
+#N canvas 275 202 786 441 lofidisto 0;
+#X obj -213 210 rpole~;
+#X obj -213 185 rzero_rev~;
+#X obj -213 -60 inlet~;
+#X obj -213 235 outlet~;
+#X obj -147 2 lop~ 500;
+#X obj -146 143 clip~ -0.9999 0.9999;
+#X obj 202 -110 inlet;
+#X obj 265 -111 inlet;
+#X obj -31 41 pack 0 10;
+#X obj -31 63 line~;
+#X obj -147 115 *~;
+#X text 202 -132 lop;
+#X text 265 -131 drive;
+#X obj 202 -85 mtof;
+#X obj 47 210 rpole~;
+#X obj 47 185 rzero_rev~;
+#X obj 47 -60 inlet~;
+#X obj 47 235 outlet~;
+#X obj 113 2 lop~ 500;
+#X obj 114 143 clip~ -0.9999 0.9999;
+#X obj 229 41 pack 0 10;
+#X obj 229 63 line~;
+#X obj 113 115 *~;
+#X connect 0 0 3 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 2 0 4 0;
+#X connect 4 0 10 0;
+#X connect 5 0 0 1;
+#X connect 5 0 1 1;
+#X connect 6 0 13 0;
+#X connect 7 0 8 0;
+#X connect 7 0 20 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 1;
+#X connect 10 0 5 0;
+#X connect 13 0 4 1;
+#X connect 13 0 18 1;
+#X connect 14 0 17 0;
+#X connect 15 0 14 0;
+#X connect 16 0 15 0;
+#X connect 16 0 18 0;
+#X connect 18 0 22 0;
+#X connect 19 0 14 1;
+#X connect 19 0 15 1;
+#X connect 20 0 21 0;
+#X connect 21 0 22 1;
+#X connect 22 0 19 0;
+#X restore 81 107 pd lofidisto;
+#X obj 32 179 tof/crossfade~ 2;
+#X obj 161 18 tof/param /lop 0 /g slider 0 127;
+#X obj 164 48 tof/param /drive 0 /g slider 0 500;
+#X obj 187 76 tof/param /wet 0 /g slider 0 1;
+#X obj 402 65 print PARAM_NOTFOUND;
+#X msg 187 100 \$1 5;
+#X obj 187 122 line~;
+#X obj 402 41 tof/param route;
+#X connect 0 0 5 0;
+#X connect 0 0 6 0;
+#X connect 3 0 5 1;
+#X connect 3 0 6 1;
+#X connect 4 0 13 0;
+#X connect 5 0 6 2;
+#X connect 5 1 6 3;
+#X connect 6 0 1 0;
+#X connect 6 1 2 0;
+#X connect 7 0 5 2;
+#X connect 8 0 5 3;
+#X connect 9 0 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 6 4;
+#X connect 13 0 10 0;
diff --git a/distoCrusher~-help.pd b/distoCrusher~-help.pd
new file mode 100644
index 0000000..7269141
--- /dev/null
+++ b/distoCrusher~-help.pd
@@ -0,0 +1,26 @@
+#N canvas 526 221 476 401 10;
+#X text 15 32 Author: Enrique Erne;
+#X text 15 14 Description: a bit crusher;
+#X obj 46 112 *~ 0.5;
+#X obj 141 112 *~ 0.5;
+#X obj 47 188 mtl/out~;
+#X obj 235 250 cyclone/Scope~ 130 130 256 3 128 -1 1 0 0 0 0 102 255
+51 135 135 135 0;
+#X obj 20 249 cyclone/Scope~ 130 130 256 3 128 -1 1 0 0 0 0 102 255
+51 135 135 135 0;
+#X text 16 51 tags: fx~;
+#X obj 259 136 hsl 100 15 0 1 0 0 \$0/crush/wet \$0/crush/wet_ /crush/wet
+105 7 0 8 -262144 -1 -1 0 1;
+#X obj 259 156 hsl 100 15 0 1 0 0 \$0/crush/gain \$0/crush/gain_ /crush/gain
+105 7 0 8 -262144 -1 -1 0 1;
+#X obj 47 88 osc~ 110;
+#X obj 141 88 osc~ 110;
+#X obj 47 154 mtl/distoCrusher~ /id crush;
+#X connect 2 0 6 0;
+#X connect 2 0 12 0;
+#X connect 3 0 12 1;
+#X connect 10 0 2 0;
+#X connect 11 0 3 0;
+#X connect 12 0 4 0;
+#X connect 12 1 4 1;
+#X connect 12 1 5 0;
diff --git a/distoCrusher~.pd b/distoCrusher~.pd
new file mode 100644
index 0000000..3c7e2f2
--- /dev/null
+++ b/distoCrusher~.pd
@@ -0,0 +1,75 @@
+#N canvas 318 244 673 261 10;
+#X obj 36 32 inlet~;
+#X obj 86 32 inlet~;
+#X obj 35 196 outlet~;
+#X obj 127 197 outlet~;
+#N canvas 663 330 575 300 bitcrusher 0;
+#X obj 164 163 wrap~;
+#X obj 148 204 -~;
+#X obj 164 143 +~ 0.1;
+#X obj 164 184 -~ 0.1;
+#X obj 57 163 wrap~;
+#X obj 41 204 -~;
+#X obj 57 143 +~ 0.1;
+#X obj 57 184 -~ 0.1;
+#X obj 41 123 *~ 127;
+#X obj 148 123 *~ 127;
+#X obj 148 224 /~ 127;
+#X obj 41 224 /~ 127;
+#X obj 223 123 t f f;
+#X obj 223 143 *;
+#X obj 223 183 + 1;
+#X obj 223 163 * 127;
+#X obj 46 52 inlet~;
+#X obj 136 52 inlet~;
+#X obj 40 266 outlet~;
+#X obj 149 266 outlet~;
+#X obj 223 86 inlet;
+#X connect 0 0 3 0;
+#X connect 1 0 10 0;
+#X connect 2 0 0 0;
+#X connect 3 0 1 1;
+#X connect 4 0 7 0;
+#X connect 5 0 11 0;
+#X connect 6 0 4 0;
+#X connect 7 0 5 1;
+#X connect 8 0 6 0;
+#X connect 8 0 5 0;
+#X connect 9 0 2 0;
+#X connect 9 0 1 0;
+#X connect 10 0 19 0;
+#X connect 11 0 18 0;
+#X connect 12 0 13 0;
+#X connect 12 1 13 1;
+#X connect 13 0 15 0;
+#X connect 14 0 8 1;
+#X connect 14 0 9 1;
+#X connect 14 0 10 1;
+#X connect 14 0 11 1;
+#X connect 15 0 14 0;
+#X connect 16 0 8 0;
+#X connect 17 0 9 0;
+#X connect 20 0 12 0;
+#X restore 77 114 pd bitcrusher;
+#X obj 532 27 inlet params;
+#X obj 180 108 tof/param /wet 0 /g slider 0 1;
+#X obj 532 73 print PARAM_NOTFOUND;
+#X obj 35 168 tof/crossfade~ 2;
+#X obj 152 80 tof/param /gain 0 /g slider 0 1;
+#X msg 180 129 \$1 5;
+#X obj 180 150 line~;
+#X obj 532 49 tof/param route;
+#X connect 0 0 4 0;
+#X connect 0 0 8 0;
+#X connect 1 0 4 1;
+#X connect 1 0 8 1;
+#X connect 4 0 8 2;
+#X connect 4 1 8 3;
+#X connect 5 0 12 0;
+#X connect 6 0 10 0;
+#X connect 8 0 2 0;
+#X connect 8 1 3 0;
+#X connect 9 0 4 2;
+#X connect 10 0 11 0;
+#X connect 11 0 8 4;
+#X connect 12 0 7 0;
diff --git a/distoFuzz~-help.pd b/distoFuzz~-help.pd
new file mode 100644
index 0000000..253a745
--- /dev/null
+++ b/distoFuzz~-help.pd
@@ -0,0 +1,37 @@
+#N canvas 526 221 495 395 10;
+#X obj 50 109 *~ 0.5;
+#X obj 134 110 *~ 0.5;
+#X text 10 28 Author: netpd;
+#X text 10 13 Description: a lofi distortion with frequency control
+;
+#X obj 51 179 mtl/out~;
+#X obj 51 85 osc~ 110;
+#X obj 134 85 osc~ 110;
+#X obj 24 233 cyclone/Scope~ 130 130 256 3 128 -1 1 0 0 0 0 102 255
+51 135 135 135 0;
+#X obj 215 233 cyclone/Scope~ 130 130 256 3 128 -1 1 0 0 0 0 102 255
+51 135 135 135 0;
+#X text 11 43 tags: fx~;
+#X obj 255 98 hsl 100 15 0 1 0 0 \$0/fuzz/wet \$0/fuzz/wet_ /fuzz/wet
+105 7 0 8 -262144 -1 -1 0 1;
+#X obj 255 118 hsl 100 15 0 1 0 0 \$0/fuzz/pregain \$0/fuzz/pregain_
+/fuzz/pregain 105 7 0 8 -262144 -1 -1 4950 1;
+#X obj 255 138 hsl 100 15 0 1 0 0 \$0/fuzz/clip \$0/fuzz/clip_ /fuzz/clip
+105 7 0 8 -262144 -1 -1 4950 1;
+#X obj 252 78 tgl 15 0 \$0/fuzz/difference \$0/fuzz/difference_ /fuzz/difference
+17 7 0 8 -262144 -1 -1 0 1;
+#X obj 255 158 hsl 100 15 0 1 0 0 \$0/fuzz/fuzz \$0/fuzz/fuzz_ /fuzz/fuzz
+105 7 0 8 -262144 -1 -1 4950 1;
+#X obj 255 178 hsl 100 15 0 1 0 0 \$0/fuzz/lowpass \$0/fuzz/lowpass_
+/fuzz/lowpass 105 7 0 8 -262144 -1 -1 4950 1;
+#X obj 255 198 hsl 100 15 0 1 0 0 \$0/fuzz/postgain \$0/fuzz/postgain_
+/fuzz/postgain 105 7 0 8 -262144 -1 -1 4950 1;
+#X obj 51 146 mtl/distoFuzz~ /id fuzz;
+#X connect 0 0 7 0;
+#X connect 0 0 17 0;
+#X connect 1 0 17 1;
+#X connect 5 0 0 0;
+#X connect 6 0 1 0;
+#X connect 17 0 4 0;
+#X connect 17 1 4 1;
+#X connect 17 1 8 0;
diff --git a/distoFuzz~.pd b/distoFuzz~.pd
new file mode 100644
index 0000000..5caead2
--- /dev/null
+++ b/distoFuzz~.pd
@@ -0,0 +1,170 @@
+#N canvas 167 262 577 373 10;
+#X obj 33 51 inlet~;
+#X obj 31 260 outlet~;
+#X obj 126 236 outlet~;
+#X obj 95 52 inlet~;
+#N canvas 153 152 944 688 distortionfuzz 0;
+#X obj 89 464 outlet~;
+#X obj 227 462 outlet~;
+#X obj 97 -116 inlet~;
+#X obj 148 -117 inlet~;
+#X obj 479 105 * -1;
+#X obj 513 58 * 0.99;
+#X obj 475 69 + 0.01;
+#X obj 575 260 t f f;
+#X obj 577 283 *;
+#X obj 571 307 * 20000;
+#X obj 141 62 -~;
+#X obj 610 394 * 10;
+#X obj 146 137 clip~ -1 1;
+#X obj 135 172 -~;
+#X obj 334 66 -~;
+#X obj 339 141 clip~ -1 1;
+#X obj 328 176 -~;
+#X obj 377 238 * 4;
+#X obj 513 -49 * 8;
+#X obj 215 325 -~;
+#X obj 71 319 -~;
+#X obj 612 476 != 1;
+#X obj 230 408 lop~ 16000;
+#X obj 98 395 lop~ 16000;
+#X obj 241 -41 *~ 3.2;
+#X obj 99 -52 *~ 3.2;
+#X obj 108 2 clip~ -0.307 0.307;
+#X obj 304 2 clip~ -0.307 0.307;
+#X obj 345 105 *~ 1;
+#X obj 152 101 *~ 1;
+#X obj 306 346 *~ 0;
+#X obj 274 341 *~ 1;
+#X obj 148 345 *~ 0;
+#X obj 111 350 *~ 1;
+#X obj 269 276 *~ 1;
+#X obj 218 259 *~ 1;
+#X obj 100 287 *~ 1;
+#X obj 67 276 *~ 1;
+#X obj 509 -87 hsl 75 15 0 1 0 0 \$2-bon-distort-pregain \$2-bon-distort-pregainr
+pregain 12 8 0 8 -228864 -62784 -355 0 1;
+#X obj 517 32 hsl 75 15 0 1 0 0 \$2-bon-distort-clip \$2-bon-distort-clipr
+clip 12 8 0 8 -237184 -62784 -355 0 1;
+#X obj 379 209 hsl 75 15 0 1 0 0 \$2-bon-distort-postgain \$2-bon-distort-postgainr
+postgain 12 8 0 8 -241344 -62784 -355 0 1;
+#X obj 575 230 hsl 75 15 0 1 0 0 \$2-bon-distort-lopass \$2-bon-distort-lopassr
+lopass 12 8 0 8 -199744 -62784 -355 0 1;
+#X obj 616 367 hsl 60 15 0 1 0 0 \$2-bon-distort-fuzz \$2-bon-distort-fuzzr
+fuzz 12 8 0 8 -249664 -62784 -355 0 1;
+#X obj 614 432 tgl 15 0 \$2-bon-distort-difference \$2-bon-distort-differencer
+d 4 8 0 8 -228992 -62784 -62784 0 1;
+#X obj 284 -127 inlet;
+#X obj 324 -127 inlet;
+#X obj 364 -127 inlet;
+#X obj 404 -127 inlet;
+#X obj 454 -127 inlet;
+#X obj 494 -127 inlet;
+#X connect 2 0 25 0;
+#X connect 3 0 24 0;
+#X connect 4 0 12 1;
+#X connect 4 0 15 1;
+#X connect 4 0 26 1;
+#X connect 4 0 27 1;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 6 0 12 2;
+#X connect 6 0 15 2;
+#X connect 6 0 26 2;
+#X connect 6 0 27 2;
+#X connect 7 0 8 0;
+#X connect 7 1 8 1;
+#X connect 8 0 9 0;
+#X connect 9 0 22 1;
+#X connect 9 0 23 1;
+#X connect 10 0 29 0;
+#X connect 11 0 28 1;
+#X connect 11 0 29 1;
+#X connect 12 0 13 1;
+#X connect 13 0 36 0;
+#X connect 14 0 28 0;
+#X connect 15 0 16 1;
+#X connect 16 0 34 0;
+#X connect 17 0 34 1;
+#X connect 17 0 35 1;
+#X connect 17 0 36 1;
+#X connect 17 0 37 1;
+#X connect 18 0 24 1;
+#X connect 18 0 25 1;
+#X connect 19 0 30 0;
+#X connect 20 0 32 0;
+#X connect 21 0 31 1;
+#X connect 21 0 33 1;
+#X connect 22 0 1 0;
+#X connect 23 0 0 0;
+#X connect 24 0 14 0;
+#X connect 24 0 27 0;
+#X connect 24 0 35 0;
+#X connect 25 0 10 0;
+#X connect 25 0 26 0;
+#X connect 25 0 37 0;
+#X connect 26 0 10 1;
+#X connect 26 0 13 0;
+#X connect 27 0 14 1;
+#X connect 27 0 16 0;
+#X connect 28 0 15 0;
+#X connect 29 0 12 0;
+#X connect 30 0 22 0;
+#X connect 31 0 22 0;
+#X connect 32 0 23 0;
+#X connect 33 0 23 0;
+#X connect 34 0 19 1;
+#X connect 34 0 31 0;
+#X connect 35 0 19 0;
+#X connect 36 0 20 1;
+#X connect 36 0 33 0;
+#X connect 37 0 20 0;
+#X connect 38 0 18 0;
+#X connect 39 0 5 0;
+#X connect 40 0 17 0;
+#X connect 41 0 7 0;
+#X connect 42 0 11 0;
+#X connect 43 0 30 1;
+#X connect 43 0 32 1;
+#X connect 43 0 21 0;
+#X connect 44 0 18 0;
+#X connect 45 0 5 0;
+#X connect 46 0 17 0;
+#X connect 47 0 7 0;
+#X connect 48 0 11 0;
+#X connect 49 0 21 0;
+#X connect 49 0 30 1;
+#X connect 49 0 32 1;
+#X restore 81 137 pd distortionfuzz;
+#X obj 400 7 inlet params;
+#X obj 205 167 tof/param /wet 0 /g slider 0 1;
+#X obj 400 53 print PARAM_NOTFOUND;
+#X obj 32 209 tof/crossfade~ 2;
+#X obj 133 -78 tof/param /pregain 0.5 /g slider 0 1;
+#X obj 148 -57 tof/param /clip 0.5 /g slider 0 1;
+#X obj 194 23 tof/param /difference 0 /g tgl;
+#X obj 183 3 tof/param /fuzz 0.5 /g slider 0 1;
+#X obj 174 -16 tof/param /lowpass 0.5 /g slider 0 1;
+#X obj 158 -37 tof/param /postgain 0.5 /g slider 0 1;
+#X msg 205 190 \$1 5;
+#X obj 205 214 line~;
+#X obj 400 29 tof/param route;
+#X connect 0 0 4 0;
+#X connect 0 0 8 0;
+#X connect 3 0 4 1;
+#X connect 3 0 8 1;
+#X connect 4 0 8 2;
+#X connect 4 1 8 3;
+#X connect 5 0 17 0;
+#X connect 6 0 15 0;
+#X connect 8 0 1 0;
+#X connect 8 1 2 0;
+#X connect 9 0 4 2;
+#X connect 10 0 4 3;
+#X connect 11 0 4 7;
+#X connect 12 0 4 6;
+#X connect 13 0 4 5;
+#X connect 14 0 4 4;
+#X connect 15 0 16 0;
+#X connect 16 0 8 4;
+#X connect 17 0 7 0;
diff --git a/distoLofi~-help.pd b/distoLofi~-help.pd
new file mode 100644
index 0000000..fa8ffc5
--- /dev/null
+++ b/distoLofi~-help.pd
@@ -0,0 +1,29 @@
+#N canvas 526 221 452 396 10;
+#X obj 45 102 *~ 0.5;
+#X obj 126 101 *~ 0.5;
+#X text 14 29 Author: netpd;
+#X text 15 12 Description: a lofi distortion with frequency control
+;
+#X obj 44 167 mtl/out~;
+#X text 15 45 tags: fx~;
+#X obj 22 223 cyclone/Scope~ 130 130 256 3 128 -1 1 0 0 0 0 102 255
+51 135 135 135 0;
+#X obj 213 223 cyclone/Scope~ 130 130 256 3 128 -1 1 0 0 0 0 102 255
+51 135 135 135 0;
+#X obj 234 95 hsl 100 15 0 1 0 0 \$0/lofi/wet \$0/lofi/wet_ /lofi/wet
+105 7 0 8 -262144 -1 -1 0 1;
+#X obj 234 115 hsl 100 15 0 1 0 0 \$0/lofi/freq \$0/lofi/freq_ /lofi/freq
+105 7 0 8 -262144 -1 -1 4950 1;
+#X obj 234 135 hsl 100 15 0 1 0 0 \$0/lofi/bits \$0/lofi/bits_ /lofi/bits
+105 7 0 8 -262144 -1 -1 3960 1;
+#X obj 46 78 osc~ 110;
+#X obj 126 77 osc~ 110;
+#X obj 44 134 mtl/distoLofi~ /id lofi;
+#X connect 0 0 6 0;
+#X connect 0 0 13 0;
+#X connect 1 0 13 1;
+#X connect 11 0 0 0;
+#X connect 12 0 1 0;
+#X connect 13 0 4 0;
+#X connect 13 1 4 1;
+#X connect 13 1 7 0;
diff --git a/distoLofi~.pd b/distoLofi~.pd
new file mode 100644
index 0000000..f8b2502
--- /dev/null
+++ b/distoLofi~.pd
@@ -0,0 +1,88 @@
+#N canvas 101 162 539 284 10;
+#X obj 33 21 inlet~;
+#X obj 31 231 outlet~;
+#X obj 125 208 outlet~;
+#X obj 95 22 inlet~;
+#N canvas 289 236 786 441 lofidisto 0;
+#X obj 80 261 outlet~;
+#X obj 130 261 outlet~;
+#X obj 97 -116 inlet~;
+#X obj 148 -117 inlet~;
+#X obj 246 -117 inlet;
+#X obj 205 48 samphold~;
+#X obj 126 45 samphold~;
+#X obj 231 171 wrap~;
+#X obj 296 142 pow;
+#X obj 284 98 t b f;
+#X msg 286 120 2;
+#X obj 93 175 wrap~;
+#X obj 248 -87 * 21550;
+#X obj 248 -65 + 500;
+#X obj 287 15 * 15;
+#X obj 195 118 +~ 1e-11;
+#X obj 78 122 +~ 1e-11;
+#X obj 207 -14 phasor~ 5877.5;
+#X obj 212 145 *~ 128;
+#X obj 77 149 *~ 128;
+#X obj 83 201 -~;
+#X obj 80 224 /~ 128;
+#X obj 211 222 /~ 128;
+#X obj 218 197 -~;
+#X text 249 -135 freq;
+#X text 298 -133 bits;
+#X obj 296 -117 inlet;
+#X connect 2 0 6 0;
+#X connect 3 0 5 0;
+#X connect 4 0 12 0;
+#X connect 5 0 15 0;
+#X connect 6 0 16 0;
+#X connect 7 0 23 1;
+#X connect 8 0 18 1;
+#X connect 8 0 19 1;
+#X connect 8 0 21 1;
+#X connect 8 0 22 1;
+#X connect 9 0 10 0;
+#X connect 9 1 8 1;
+#X connect 10 0 8 0;
+#X connect 11 0 20 1;
+#X connect 12 0 13 0;
+#X connect 13 0 17 0;
+#X connect 14 0 9 0;
+#X connect 15 0 18 0;
+#X connect 16 0 19 0;
+#X connect 17 0 5 1;
+#X connect 17 0 6 1;
+#X connect 18 0 7 0;
+#X connect 18 0 23 0;
+#X connect 19 0 11 0;
+#X connect 19 0 20 0;
+#X connect 20 0 21 0;
+#X connect 21 0 0 0;
+#X connect 22 0 1 0;
+#X connect 23 0 22 0;
+#X connect 26 0 14 0;
+#X restore 81 107 pd lofidisto;
+#X obj 414 -13 inlet params;
+#X obj 165 130 tof/param /wet 0 /g slider 0 1;
+#X obj 414 33 print PARAM_NOTFOUND;
+#X obj 32 179 tof/crossfade~ 2;
+#X obj 167 -5 tof/param /freq 0.5 /g slider 0 1;
+#X obj 182 16 tof/param /bits 0.4 /g slider 0 1;
+#X msg 215 200 \$1 5;
+#X obj 215 224 line~;
+#X obj 414 9 tof/param route;
+#X connect 0 0 4 0;
+#X connect 0 0 8 0;
+#X connect 3 0 4 1;
+#X connect 3 0 8 1;
+#X connect 4 0 8 2;
+#X connect 4 1 8 3;
+#X connect 5 0 13 0;
+#X connect 6 0 11 0;
+#X connect 8 0 1 0;
+#X connect 8 1 2 0;
+#X connect 9 0 4 2;
+#X connect 10 0 4 3;
+#X connect 11 0 12 0;
+#X connect 12 0 8 4;
+#X connect 13 0 7 0;
diff --git a/distoNonmonotone~-help.pd b/distoNonmonotone~-help.pd
new file mode 100644
index 0000000..8af67d7
--- /dev/null
+++ b/distoNonmonotone~-help.pd
@@ -0,0 +1,52 @@
+#N canvas 494 278 763 356 10;
+#X obj 405 5 cnv 15 320 90 empty empty empty 20 12 0 14 -261682 -66577
+0;
+#X text 408 29 le 16 septembre 2009;
+#X text 407 64 Copyright © 2009 par Mathieu Bouchard;
+#X text 408 52 Fabriqué à Villeray \, avec amour;
+#X text 408 17 Tel que presenté au club PureData de Montréal;
+#X text 408 6 Patch de distorsion nonmonotone qui suit l'enveloppe
+;
+#X text 407 79 Publié sous licence Standard Improved BSD;
+#X obj 243 186 cyclone/Scope~ 130 130 256 3 128 -1 1 0 0 0 0 102 255
+51 135 135 135 0;
+#X obj 16 186 cyclone/Scope~ 130 130 256 3 128 -1 1 0 0 0 0 102 255
+51 135 135 135 0;
+#X obj 31 121 mtl/out~;
+#X text 26 -2 Description: distortion nonmonotone;
+#X text 28 14 tags: fx~;
+#X obj 31 71 *~ 0.5;
+#X obj 136 72 *~ 0.5;
+#X obj 32 47 osc~ 110;
+#X obj 136 47 osc~ 110;
+#X obj 407 108 hsl 100 15 0 1 0 0 \$0/matju/wet \$0/matju/wet_ /matju/wet
+105 7 0 8 -262144 -1 -1 0 1;
+#X obj 407 128 nbx 5 14 -1e+37 1e+37 0 0 \$0/matju/freq1 \$0/matju/freq1_
+/matju/freq1 48 7 0 8 -262144 -1 -1 0 256;
+#X obj 407 148 nbx 5 14 -1e+37 1e+37 0 0 \$0/matju/amp1 \$0/matju/amp1_
+/matju/amp1 48 7 0 8 -262144 -1 -1 0 256;
+#X obj 407 168 nbx 5 14 -1e+37 1e+37 0 0 \$0/matju/base1 \$0/matju/base1_
+/matju/base1 48 7 0 8 -262144 -1 -1 0 256;
+#X obj 407 188 nbx 5 14 -1e+37 1e+37 0 0 \$0/matju/freq2 \$0/matju/freq2_
+/matju/freq2 48 7 0 8 -262144 -1 -1 0 256;
+#X obj 407 208 nbx 5 14 -1e+37 1e+37 0 0 \$0/matju/amp2 \$0/matju/amp2_
+/matju/amp2 48 7 0 8 -262144 -1 -1 0 256;
+#X obj 407 228 nbx 5 14 -1e+37 1e+37 0 0 \$0/matju/base2 \$0/matju/base2_
+/matju/base2 48 7 0 8 -262144 -1 -1 0 256;
+#X obj 407 248 nbx 5 14 -1e+37 1e+37 0 0 \$0/matju/freqfeed \$0/matju/freqfeed_
+/matju/freqfeed 48 7 0 8 -262144 -1 -1 0 256;
+#X obj 407 268 nbx 5 14 -1e+37 1e+37 0 0 \$0/matju/ampfeed \$0/matju/ampfeed_
+/matju/ampfeed 48 7 0 8 -262144 -1 -1 0 256;
+#X obj 407 288 nbx 5 14 -1e+37 1e+37 0 0 \$0/matju/basefeed \$0/matju/basefeed_
+/matju/basefeed 48 7 0 8 -262144 -1 -1 0 256;
+#X obj 407 308 nbx 5 14 -1e+37 1e+37 0 0 \$0/matju/feedback \$0/matju/feedback_
+/matju/feedback 48 7 0 8 -262144 -1 -1 0 256;
+#X obj 31 96 mtl/distoNonmonotone~ /id matju;
+#X connect 12 0 8 0;
+#X connect 12 0 27 0;
+#X connect 13 0 27 1;
+#X connect 14 0 12 0;
+#X connect 15 0 13 0;
+#X connect 27 0 9 0;
+#X connect 27 1 7 0;
+#X connect 27 1 9 1;
diff --git a/distoNonmonotone~.pd b/distoNonmonotone~.pd
new file mode 100644
index 0000000..a1a106a
--- /dev/null
+++ b/distoNonmonotone~.pd
@@ -0,0 +1,160 @@
+#N canvas 2 363 639 371 10;
+#X obj 65 238 outlet~ left;
+#X obj 148 238 outlet~ right;
+#X obj 67 86 inlet~ left;
+#X obj 146 86 inlet~ right;
+#N canvas 300 102 1068 724 distortionnonmonotone 0;
+#X obj 54 20 inlet~;
+#X obj 513 17 inlet~;
+#X obj 42 527 outlet~;
+#X obj 504 518 outlet~;
+#X obj 111 228 dbtorms;
+#X floatatom 271 265 5 0 0 0 - - -;
+#X obj 54 226 +~;
+#X obj 54 51 hip~ 5;
+#X obj 229 167 phasor~;
+#X obj 229 223 phasor~;
+#X obj 111 210 env~;
+#X obj 54 375 +~;
+#X obj 69 428 phasor~;
+#X obj 69 447 expr~ sin($v1*3.1416*2)*$f2+$f3;
+#X obj 53 502 +~;
+#X obj 229 185 expr~ sin($v1*3.141593*2)*$f2+$f3;
+#X obj 229 241 expr~ sin($v1*3.141593*2)*$f2+$f3;
+#X obj 67 483 *~;
+#X obj 70 267 expr~ sin($v1*$v2/$f3)*$f3*0.35;
+#X obj 70 287 expr~ sin($v1*$v2/$f3)*$f3*0.35;
+#X text 93 194 calcul du volume;
+#X text 306 265 volume;
+#X obj 571 218 dbtorms;
+#X floatatom 731 255 5 0 0 0 - - -;
+#X obj 514 216 +~;
+#X obj 514 41 hip~ 5;
+#X obj 689 157 phasor~;
+#X obj 689 213 phasor~;
+#X obj 571 200 env~;
+#X obj 514 365 +~;
+#X obj 529 418 phasor~;
+#X obj 529 437 expr~ sin($v1*3.1416*2)*$f2+$f3;
+#X obj 513 492 +~;
+#X obj 689 175 expr~ sin($v1*3.141593*2)*$f2+$f3;
+#X obj 689 231 expr~ sin($v1*3.141593*2)*$f2+$f3;
+#X obj 529 474 *~;
+#X obj 530 257 expr~ sin($v1*$v2/$f3)*$f3*0.35;
+#X obj 530 277 expr~ sin($v1*$v2/$f3)*$f3*0.35;
+#X text 553 184 calcul du volume;
+#X text 766 255 volume;
+#X obj 71 464 vd~ \$0bar1;
+#X obj 95 527 delwrite~ \$0bar1 50;
+#X obj 555 517 delwrite~ \$0bar2 50;
+#X obj 529 455 vd~ \$0bar2;
+#X floatatom 245 514 5 0 0 0 - - -;
+#X floatatom 142 420 5 0 0 0 - - -;
+#X text 110 4 distorsion non-monotone (deux copies);
+#X text 111 68 mix avec le son original pcq l'effet tout seul sonne
+trop aigu (il élimine les graves);
+#X text 111 16 l'effet est conjugué par un compresseur total de volume
+\,;
+#X text 111 28 c'est-à-dire qu'on annule le volume avant l'effet;
+#X text 111 40 et qu'on le restitue ensuite \, pour que la distorsion
+ait;
+#X text 111 52 un impact à peu près constant \, quel que soit le
+volume.;
+#X obj 723 -83 tof/param /freq1 0 /g nbx;
+#X obj 723 -63 tof/param /amp1 0 /g nbx;
+#X obj 723 -43 tof/param /base1 0 /g nbx;
+#X obj 723 -23 tof/param /freq2 0 /g nbx;
+#X obj 723 -3 tof/param /amp2 0 /g nbx;
+#X obj 723 17 tof/param /base2 0 /g nbx;
+#X obj 723 37 tof/param /freqfeed 0 /g nbx;
+#X obj 724 57 tof/param /ampfeed 0 /g nbx;
+#X obj 724 79 tof/param /basefeed 0 /g nbx;
+#X obj 724 99 tof/param /feedback 0 /g nbx;
+#X connect 0 0 7 0;
+#X connect 1 0 25 0;
+#X connect 4 0 5 0;
+#X connect 4 0 18 2;
+#X connect 4 0 19 2;
+#X connect 6 0 10 0;
+#X connect 6 0 11 0;
+#X connect 6 0 18 0;
+#X connect 6 0 19 0;
+#X connect 7 0 6 0;
+#X connect 8 0 15 0;
+#X connect 9 0 16 0;
+#X connect 10 0 4 0;
+#X connect 11 0 14 0;
+#X connect 12 0 13 0;
+#X connect 13 0 40 0;
+#X connect 14 0 2 0;
+#X connect 14 0 41 0;
+#X connect 15 0 18 1;
+#X connect 16 0 19 1;
+#X connect 17 0 14 1;
+#X connect 18 0 11 0;
+#X connect 19 0 11 0;
+#X connect 22 0 23 0;
+#X connect 22 0 36 2;
+#X connect 22 0 37 2;
+#X connect 24 0 28 0;
+#X connect 24 0 29 0;
+#X connect 24 0 36 0;
+#X connect 24 0 37 0;
+#X connect 25 0 24 0;
+#X connect 26 0 33 0;
+#X connect 27 0 34 0;
+#X connect 28 0 22 0;
+#X connect 29 0 32 0;
+#X connect 30 0 31 0;
+#X connect 31 0 43 0;
+#X connect 32 0 3 0;
+#X connect 32 0 42 0;
+#X connect 33 0 36 1;
+#X connect 34 0 37 1;
+#X connect 35 0 32 1;
+#X connect 36 0 29 0;
+#X connect 37 0 29 0;
+#X connect 40 0 17 0;
+#X connect 43 0 35 0;
+#X connect 44 0 17 1;
+#X connect 44 0 35 1;
+#X connect 52 0 8 0;
+#X connect 52 0 26 0;
+#X connect 53 0 15 1;
+#X connect 53 0 33 1;
+#X connect 54 0 33 2;
+#X connect 54 0 15 2;
+#X connect 55 0 9 0;
+#X connect 55 0 27 0;
+#X connect 56 0 16 1;
+#X connect 56 0 34 1;
+#X connect 57 0 16 2;
+#X connect 57 0 34 2;
+#X connect 58 0 30 0;
+#X connect 58 0 12 0;
+#X connect 59 0 31 1;
+#X connect 59 0 13 1;
+#X connect 60 0 31 2;
+#X connect 60 0 13 2;
+#X connect 61 0 44 0;
+#X restore 98 134 pd distortionnonmonotone;
+#X obj 438 70 inlet params;
+#X obj 214 177 tof/param /wet 0 /g slider 0 1;
+#X obj 438 116 print PARAM_NOTFOUND;
+#X obj 67 191 tof/crossfade~ 2;
+#X msg 255 213 \$1 5;
+#X obj 255 237 line~;
+#X obj 438 92 tof/param route;
+#X connect 2 0 4 0;
+#X connect 2 0 8 0;
+#X connect 3 0 4 1;
+#X connect 3 0 8 1;
+#X connect 4 0 8 2;
+#X connect 4 1 8 3;
+#X connect 5 0 11 0;
+#X connect 6 0 9 0;
+#X connect 8 0 0 0;
+#X connect 8 1 1 0;
+#X connect 9 0 10 0;
+#X connect 10 0 8 4;
+#X connect 11 0 7 0;
diff --git a/distoSign~-help.pd b/distoSign~-help.pd
new file mode 100644
index 0000000..fb4a311
--- /dev/null
+++ b/distoSign~-help.pd
@@ -0,0 +1,22 @@
+#N canvas 610 186 462 238 10;
+#X obj -25 118 *~ 0.5;
+#X obj 71 117 *~ 0.5;
+#X obj -25 177 mtl/out~;
+#X text -29 46 tags: fx~;
+#X obj -25 94 osc~ 110;
+#X obj 71 93 osc~ 110;
+#X obj 193 106 hsl 100 15 0 1 0 0 \$0/distoSign/wet \$0/distoSign/wet_
+/distoSign/wet 105 7 0 8 -262144 -1 -1 0 1;
+#X obj 193 126 hsl 100 15 0 1 0 0 \$0/distoSign/positive \$0/distoSign/positive_
+/distoSign/positive 105 7 0 8 -262144 -1 -1 0 1;
+#X obj 193 146 hsl 100 15 0 1 0 0 \$0/distoSign/negative \$0/distoSign/negative_
+/distoSign/negative 105 7 0 8 -262144 -1 -1 0 1;
+#X text -29 12 Description: A simple distortion. Positive and negative
+distortion can be set independently.;
+#X obj -26 146 mtl/distoSign~ /id distoSign;
+#X connect 0 0 10 0;
+#X connect 1 0 10 1;
+#X connect 4 0 0 0;
+#X connect 5 0 1 0;
+#X connect 10 0 2 0;
+#X connect 10 1 2 1;
diff --git a/distoSign~.pd b/distoSign~.pd
new file mode 100644
index 0000000..5996b69
--- /dev/null
+++ b/distoSign~.pd
@@ -0,0 +1,146 @@
+#N canvas 238 397 726 371 10;
+#X obj 54 279 outlet~;
+#X text 52 141 NEEDS ZEXY;
+#X obj 53 164 inlet~;
+#N canvas 501 275 730 557 disto 0;
+#X obj -189 264 * -1;
+#X msg -47 372 1 \$1;
+#X obj -47 401 /;
+#X obj 146 65 inlet;
+#X obj -215 497 outlet~;
+#X obj 117 169 -;
+#X text 170 208 CLIPS AND THEN BOOSTS THE SIGNAL;
+#X text -213 39 NEEDS ZEXY;
+#X obj -217 359 clip~ -1 1;
+#X obj -210 113 inlet~;
+#X obj -133 59 inlet;
+#X obj -123 177 -;
+#X obj -52 289 t b f;
+#X obj -215 418 *~ 1;
+#X obj -43 316 -;
+#X obj -47 348 / 2;
+#X obj -216 391 +~ 0;
+#X obj 116 381 t b f;
+#X obj 125 436 +;
+#X obj -215 460 +~ 0;
+#X obj -6 456 / -2;
+#X text -90 57 positive distort level (0-1);
+#X text 194 63 negative distort level (0-1);
+#X obj -123 218 / 1;
+#X obj -13 227 / 1;
+#X msg -122 148 1.00001 \$1;
+#X msg 118 140 1.00001 \$1;
+#X connect 0 0 8 1;
+#X connect 0 0 12 0;
+#X connect 0 0 18 0;
+#X connect 1 0 2 0;
+#X connect 2 0 13 1;
+#X connect 3 0 25 0;
+#X connect 5 0 24 0;
+#X connect 8 0 16 0;
+#X connect 9 0 8 0;
+#X connect 10 0 26 0;
+#X connect 11 0 23 0;
+#X connect 12 0 14 0;
+#X connect 12 1 14 1;
+#X connect 13 0 19 0;
+#X connect 14 0 15 0;
+#X connect 15 0 1 0;
+#X connect 16 0 13 0;
+#X connect 17 0 18 0;
+#X connect 17 1 18 1;
+#X connect 18 0 20 0;
+#X connect 19 0 4 0;
+#X connect 20 0 16 1;
+#X connect 23 0 0 0;
+#X connect 24 0 8 2;
+#X connect 24 0 14 0;
+#X connect 24 0 17 0;
+#X connect 25 0 11 0;
+#X connect 26 0 5 0;
+#X restore 182 227 pd disto;
+#N canvas 652 186 730 557 disto 0;
+#X obj -189 264 * -1;
+#X msg -47 372 1 \$1;
+#X obj -47 401 /;
+#X obj 146 65 inlet;
+#X obj -215 497 outlet~;
+#X obj 117 169 -;
+#X text 170 208 CLIPS AND THEN BOOSTS THE SIGNAL;
+#X text -213 39 NEEDS ZEXY;
+#X obj -217 359 clip~ -1 1;
+#X obj -210 113 inlet~;
+#X obj -133 59 inlet;
+#X obj -123 177 -;
+#X obj -52 289 t b f;
+#X obj -215 418 *~ 1;
+#X obj -43 316 -;
+#X obj -47 348 / 2;
+#X obj -216 391 +~ 0;
+#X obj 116 381 t b f;
+#X obj 125 436 +;
+#X obj -215 460 +~ 0;
+#X obj -6 456 / -2;
+#X text -90 57 positive distort level (0-1);
+#X text 195 59 negative distort level (0-1);
+#X obj -123 218 / 1;
+#X obj -13 227 / 1;
+#X msg -122 148 1.00001 \$1;
+#X msg 118 140 1.00001 \$1;
+#X connect 0 0 8 1;
+#X connect 0 0 12 0;
+#X connect 0 0 18 0;
+#X connect 1 0 2 0;
+#X connect 2 0 13 1;
+#X connect 3 0 25 0;
+#X connect 5 0 24 0;
+#X connect 8 0 16 0;
+#X connect 9 0 8 0;
+#X connect 10 0 26 0;
+#X connect 11 0 23 0;
+#X connect 12 0 14 0;
+#X connect 12 1 14 1;
+#X connect 13 0 19 0;
+#X connect 14 0 15 0;
+#X connect 15 0 1 0;
+#X connect 16 0 13 0;
+#X connect 17 0 18 0;
+#X connect 17 1 18 1;
+#X connect 18 0 20 0;
+#X connect 19 0 4 0;
+#X connect 20 0 16 1;
+#X connect 23 0 0 0;
+#X connect 24 0 8 2;
+#X connect 24 0 14 0;
+#X connect 24 0 17 0;
+#X connect 25 0 11 0;
+#X connect 26 0 5 0;
+#X restore 67 225 pd disto;
+#X obj 113 164 inlet~;
+#X obj 114 279 outlet~;
+#X obj 477 83 inlet params;
+#X obj 181 253 tof/param /wet 0 /g slider 0 1;
+#X obj 477 129 print PARAM_NOTFOUND;
+#X obj 54 254 tof/crossfade~ 2;
+#X obj 197 100 tof/param /positive 0 /g slider 0 1;
+#X obj 218 119 tof/param /negative 0 /g slider 0 1;
+#X msg 218 283 \$1 5;
+#X obj 218 307 line~;
+#X obj 477 105 tof/param route;
+#X connect 2 0 4 0;
+#X connect 2 0 10 0;
+#X connect 3 0 10 3;
+#X connect 4 0 10 2;
+#X connect 5 0 3 0;
+#X connect 5 0 10 1;
+#X connect 7 0 15 0;
+#X connect 8 0 13 0;
+#X connect 10 0 0 0;
+#X connect 10 1 6 0;
+#X connect 11 0 4 1;
+#X connect 11 0 3 1;
+#X connect 12 0 4 2;
+#X connect 12 0 3 2;
+#X connect 13 0 14 0;
+#X connect 14 0 10 4;
+#X connect 15 0 9 0;
diff --git a/distoTanh~-help.pd b/distoTanh~-help.pd
new file mode 100644
index 0000000..a2fc55d
--- /dev/null
+++ b/distoTanh~-help.pd
@@ -0,0 +1,19 @@
+#N canvas 509 200 434 220 10;
+#X obj -35 88 *~ 0.5;
+#X obj 46 88 *~ 0.5;
+#X text -38 9 Description: A distortion using expr~ tanh;
+#X obj -36 155 mtl/out~;
+#X obj -36 64 osc~ 110;
+#X obj 47 63 osc~ 110;
+#X text -37 27 tags: fx~;
+#X obj 149 94 hsl 100 15 0 1 0 0 \$0/tanh/wet \$0/tanh/wet_ /tanh/wet
+105 7 0 8 -262144 -1 -1 0 1;
+#X obj 149 114 hsl 100 15 1 100 0 0 \$0/tanh/amount \$0/tanh/amount_
+/tanh/amount 105 7 0 8 -262144 -1 -1 0 1;
+#X obj -35 113 mtl/distoTanh~ /id tanh;
+#X connect 0 0 9 0;
+#X connect 1 0 9 1;
+#X connect 4 0 0 0;
+#X connect 5 0 1 0;
+#X connect 9 0 3 0;
+#X connect 9 1 3 1;
diff --git a/distoTanh~.pd b/distoTanh~.pd
new file mode 100644
index 0000000..557d187
--- /dev/null
+++ b/distoTanh~.pd
@@ -0,0 +1,42 @@
+#N canvas 105 155 539 284 10;
+#X obj 33 21 inlet~;
+#X obj 31 231 outlet~;
+#X obj 82 209 outlet~;
+#X obj 95 22 inlet~;
+#N canvas 1 57 450 300 fx 0;
+#X obj 83 182 outlet~;
+#X obj 133 182 outlet~;
+#X obj 83 42 inlet~;
+#X obj 133 42 inlet~;
+#X obj 83 102 expr~ tanh($v1*$f2);
+#X obj 134 125 expr~ tanh($v1*$f2);
+#X obj 231 42 inlet;
+#X connect 2 0 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 0 0;
+#X connect 5 0 1 0;
+#X connect 6 0 5 1;
+#X connect 6 0 4 1;
+#X restore 81 107 pd fx;
+#X obj 393 81 inlet params;
+#X obj 126 131 tof/param /wet 0 /g slider 0 1;
+#X obj 393 127 print PARAM_NOTFOUND;
+#X obj 32 179 tof/crossfade~ 2;
+#X obj 152 84 tof/param /amount 1 /g slider 1 100;
+#X msg 235 220 \$1 5;
+#X obj 235 244 line~;
+#X obj 393 103 tof/param route;
+#X connect 0 0 4 0;
+#X connect 0 0 8 0;
+#X connect 3 0 4 1;
+#X connect 3 0 8 1;
+#X connect 4 0 8 2;
+#X connect 4 1 8 3;
+#X connect 5 0 12 0;
+#X connect 6 0 10 0;
+#X connect 8 0 1 0;
+#X connect 8 1 2 0;
+#X connect 9 0 4 2;
+#X connect 10 0 11 0;
+#X connect 11 0 8 4;
+#X connect 12 0 7 0;
diff --git a/dodeca-help.pd b/dodeca-help.pd
new file mode 100644
index 0000000..79615dc
--- /dev/null
+++ b/dodeca-help.pd
@@ -0,0 +1,38 @@
+#N canvas 669 81 385 377 10;
+#X floatatom 72 198 5 0 0 0 - - -;
+#X floatatom 34 251 5 0 0 0 - - -;
+#X floatatom 153 201 5 0 0 0 - - -;
+#X obj 72 252 mtof;
+#X obj 72 274 osc~;
+#X obj 33 152 f;
+#X obj 62 152 + 1;
+#X obj 33 174 % 60;
+#X obj 33 196 + 60;
+#X floatatom 84 79 5 0 0 0 - - -;
+#X obj 33 121 metro 150;
+#X obj 33 100 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X text 150 182 change the seed \, resynths the serie;
+#X text 21 -4 Description: Given a seed \, the serie will always be
+the same.;
+#X text 21 24 Comments: gets a note from the serie;
+#X obj 84 98 mtl/bpmToMs;
+#X obj 72 223 mtl/dodeca;
+#X obj 72 304 mtl/out~;
+#X text 22 39 tags: musical;
+#X connect 0 0 16 0;
+#X connect 2 0 16 1;
+#X connect 3 0 4 0;
+#X connect 4 0 17 0;
+#X connect 4 0 17 1;
+#X connect 5 0 6 0;
+#X connect 5 0 7 0;
+#X connect 6 0 5 1;
+#X connect 7 0 8 0;
+#X connect 8 0 16 0;
+#X connect 9 0 15 0;
+#X connect 10 0 5 0;
+#X connect 11 0 10 0;
+#X connect 15 0 10 1;
+#X connect 16 0 1 0;
+#X connect 16 0 3 0;
diff --git a/dodeca.pd b/dodeca.pd
new file mode 100644
index 0000000..f4850a4
--- /dev/null
+++ b/dodeca.pd
@@ -0,0 +1,66 @@
+#N canvas 43 71 721 504 10;
+#X obj 353 190 until;
+#X msg 510 123 clear;
+#X obj 383 319 pack f f;
+#X obj 384 368 tabwrite \$0-serie;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-serie 12 float 2;
+#X coords 0 11 11 0 120 120 1;
+#X restore 105 273 graph;
+#X obj 62 45 inlet;
+#X obj 28 133 tabread \$0-serie;
+#X obj 35 199 outlet;
+#X floatatom 590 289 5 0 0 0 - - -;
+#X obj 498 233 f 0;
+#X obj 533 232 + 1;
+#X obj 353 149 t b f b;
+#X obj 328 113 inlet;
+#X obj 399 54 loadbang;
+#X obj 403 87 f \$1;
+#X text 337 8 seed (resets it);
+#X text 67 11 offset;
+#X msg 512 156 0;
+#X obj 367 219 t b b;
+#X floatatom 331 56 5 0 0 0 - - -;
+#X msg 503 191 seed \$1;
+#X floatatom 135 48 5 0 0 0 - - -;
+#X floatatom 103 196 5 0 0 0 - - -;
+#X obj 70 75 t f f;
+#X text 189 -28 serial music abstraction;
+#X msg 353 168 12;
+#X obj 205 124 div 12;
+#X obj 32 112 % 12;
+#X text 110 248 this is a permutation;
+#X text 690 -18 @uses zexy;
+#X obj 32 170 expr $f1+12*$f2;
+#X obj 384 256 cyclone/urn 12;
+#X connect 0 0 18 0;
+#X connect 1 0 31 0;
+#X connect 2 0 3 0;
+#X connect 5 0 23 0;
+#X connect 6 0 30 0;
+#X connect 9 0 10 0;
+#X connect 9 0 8 0;
+#X connect 9 0 2 1;
+#X connect 10 0 9 1;
+#X connect 11 0 25 0;
+#X connect 11 1 20 0;
+#X connect 11 2 1 0;
+#X connect 11 2 17 0;
+#X connect 12 0 11 0;
+#X connect 13 0 14 0;
+#X connect 14 0 11 0;
+#X connect 17 0 9 1;
+#X connect 18 0 31 0;
+#X connect 18 1 9 0;
+#X connect 19 0 11 0;
+#X connect 20 0 31 0;
+#X connect 21 0 23 0;
+#X connect 23 0 27 0;
+#X connect 23 1 26 0;
+#X connect 25 0 0 0;
+#X connect 26 0 30 1;
+#X connect 27 0 6 0;
+#X connect 30 0 22 0;
+#X connect 30 0 7 0;
+#X connect 31 0 2 0;
diff --git a/doubleClick-help.pd b/doubleClick-help.pd
new file mode 100644
index 0000000..169433f
--- /dev/null
+++ b/doubleClick-help.pd
@@ -0,0 +1,24 @@
+#N canvas 282 79 541 436 10;
+#X obj 31 214 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 31 260 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 20 9 Description: Detects double clicks.;
+#X msg 142 208 175;
+#X msg 187 207 300;
+#X obj 31 235 mtl/doubleClick 300;
+#X obj 33 126 cyclone/MouseState;
+#X obj 32 56 loadbang;
+#X obj 35 156 sel 1;
+#X msg 31 87 poll;
+#X text 49 258 Argument 1 and right inlet : Determines the double click
+interval (defaults to 175).;
+#X text 20 27 tags: ui;
+#X connect 0 0 5 0;
+#X connect 3 0 5 1;
+#X connect 4 0 5 1;
+#X connect 5 0 1 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 0 0;
+#X connect 9 0 6 0;
diff --git a/doubleClick.pd b/doubleClick.pd
new file mode 100644
index 0000000..05e3fae
--- /dev/null
+++ b/doubleClick.pd
@@ -0,0 +1,19 @@
+#N canvas 0 0 450 300 10;
+#X obj 125 104 timer;
+#X obj 125 148 b;
+#X obj 126 48 inlet;
+#X obj 126 72 t b b;
+#X obj 125 172 outlet;
+#X obj 125 128 moses 175;
+#X obj 241 34 loadbang;
+#X obj 334 89 inlet;
+#X obj 241 55 tof/argument 1 175;
+#X connect 0 0 5 0;
+#X connect 1 0 4 0;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X connect 3 1 0 1;
+#X connect 5 0 1 0;
+#X connect 6 0 8 0;
+#X connect 7 0 5 1;
+#X connect 8 0 5 1;
diff --git a/drips~-help.pd b/drips~-help.pd
new file mode 100644
index 0000000..aea4b60
--- /dev/null
+++ b/drips~-help.pd
@@ -0,0 +1,10 @@
+#N canvas 539 355 309 233 10;
+#X text 18 8 Description: Generates a dripping sound.;
+#X text 16 27 Comment: Taken from Andy Farnell's work.;
+#X obj 22 85 mtl/drips~;
+#X obj 23 143 mtl/out~;
+#X obj 22 114 mtl/punch~;
+#X text 24 52 tags: synthesize~;
+#X connect 2 0 4 0;
+#X connect 4 0 3 0;
+#X connect 4 0 3 1;
diff --git a/drips~.pd b/drips~.pd
new file mode 100644
index 0000000..c531584
--- /dev/null
+++ b/drips~.pd
@@ -0,0 +1,37 @@
+#N canvas 0 0 812 584 10;
+#N canvas 0 0 946 675 drip 0;
+#X obj 167 72 noise~;
+#X obj 53 72 noise~;
+#X obj 281 71 noise~;
+#X obj 65 105 lop~ 16;
+#X obj 429 208 /~;
+#X obj 428 315 clip~ 0 0.9;
+#X obj 181 98 lop~ 0.01;
+#X obj 428 233 hip~ 10000;
+#X obj 359 100 lop~ 1900;
+#X obj 429 294 *~;
+#X obj 430 269 *~ 0.03;
+#X obj 467 358 +~ 1000;
+#X obj 66 131 *~ 300000;
+#X obj 466 394 clip~ 1000 10000;
+#X obj 424 493 outlet~;
+#X obj 429 426 vcf~ 20;
+#X connect 0 0 6 0;
+#X connect 1 0 3 0;
+#X connect 2 0 8 0;
+#X connect 3 0 12 0;
+#X connect 4 0 7 0;
+#X connect 5 0 15 0;
+#X connect 6 0 4 0;
+#X connect 7 0 10 0;
+#X connect 8 0 4 1;
+#X connect 9 0 5 0;
+#X connect 10 0 9 0;
+#X connect 10 0 9 1;
+#X connect 11 0 13 0;
+#X connect 12 0 11 0;
+#X connect 13 0 15 1;
+#X connect 15 0 14 0;
+#X restore 335 162 pd drip;
+#X obj 333 341 outlet~;
+#X connect 0 0 1 0;
diff --git a/dtmfBusy~-help.pd b/dtmfBusy~-help.pd
new file mode 100644
index 0000000..a22f385
--- /dev/null
+++ b/dtmfBusy~-help.pd
@@ -0,0 +1,12 @@
+#N canvas 337 122 290 232 10;
+#X text 20 9 Description: DTMF telephone sound;
+#X text 18 29 Author: Alexandre Quessy;
+#X text 18 46 Version: 1;
+#X obj 20 100 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 20 121 mtl/dtmfBusy~;
+#X obj 21 143 mtl/out~;
+#X text 19 63 tags: synthesize~;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 5 1;
diff --git a/dtmfBusy~.pd b/dtmfBusy~.pd
new file mode 100644
index 0000000..3238992
--- /dev/null
+++ b/dtmfBusy~.pd
@@ -0,0 +1,45 @@
+#N canvas 0 22 454 304 10;
+#X obj 48 103 t b b b;
+#X obj 53 165 osc~;
+#X obj 95 165 osc~;
+#X msg 187 141 bang;
+#X msg 197 182 0;
+#X obj 185 161 t b b;
+#X msg 59 144 480;
+#X msg 100 146 620;
+#X obj 277 154 delay 500;
+#X obj 264 113 delay 500;
+#X msg 161 78 stop;
+#X obj 126 55 select 1 0;
+#X obj 49 254 outlet~;
+#X obj 127 28 inlet;
+#X text 198 34 expects 0 or 1;
+#X msg 165 180 1;
+#X obj 52 198 *~ 1;
+#X obj 122 270 outlet~;
+#X obj 125 214 *~ 1;
+#X connect 0 0 6 0;
+#X connect 0 1 7 0;
+#X connect 0 2 3 0;
+#X connect 1 0 16 0;
+#X connect 2 0 18 0;
+#X connect 3 0 5 0;
+#X connect 4 0 16 1;
+#X connect 4 0 18 1;
+#X connect 5 0 15 0;
+#X connect 5 1 8 0;
+#X connect 6 0 1 0;
+#X connect 7 0 2 0;
+#X connect 8 0 4 0;
+#X connect 8 0 9 0;
+#X connect 9 0 3 0;
+#X connect 10 0 9 0;
+#X connect 10 0 8 0;
+#X connect 10 0 4 0;
+#X connect 11 0 0 0;
+#X connect 11 1 10 0;
+#X connect 13 0 11 0;
+#X connect 15 0 16 1;
+#X connect 15 0 18 1;
+#X connect 16 0 12 0;
+#X connect 18 0 17 0;
diff --git a/dtmfHandUp~-help.pd b/dtmfHandUp~-help.pd
new file mode 100644
index 0000000..abf9395
--- /dev/null
+++ b/dtmfHandUp~-help.pd
@@ -0,0 +1,12 @@
+#N canvas 1 57 279 246 10;
+#X text 17 9 Description: DTMF telephone sound;
+#X text 16 24 Author: Alexandre Quessy;
+#X text 16 42 Version: 1;
+#X obj 25 99 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 25 120 mtl/dtmfHandUp~;
+#X obj 26 145 mtl/out~;
+#X text 17 57 tags: synthesize~;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 5 1;
diff --git a/dtmfHandUp~.pd b/dtmfHandUp~.pd
new file mode 100644
index 0000000..dbfdd77
--- /dev/null
+++ b/dtmfHandUp~.pd
@@ -0,0 +1,38 @@
+#N canvas 0 22 506 445 10;
+#X msg 176 96 bang;
+#X msg 230 190 0;
+#X obj 201 129 t b b;
+#X obj 261 159 delay 250;
+#X obj 298 114 delay 250;
+#X msg 250 68 stop;
+#X obj 30 201 *~;
+#X obj 67 42 select 1 0;
+#X obj 31 242 outlet~;
+#X text 303 66 triggers the sound;
+#X obj 70 3 inlet;
+#X text 122 4 expects 0 or 1;
+#X msg 179 167 1;
+#X obj 116 218 *~;
+#X obj 117 259 outlet~;
+#X obj 25 147 osc~ 480;
+#X obj 97 147 osc~ 620;
+#X connect 0 0 2 0;
+#X connect 1 0 6 1;
+#X connect 1 0 13 1;
+#X connect 2 0 12 0;
+#X connect 2 1 3 0;
+#X connect 3 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 5 0 4 0;
+#X connect 5 0 3 0;
+#X connect 5 0 1 0;
+#X connect 6 0 8 0;
+#X connect 7 0 0 0;
+#X connect 7 1 5 0;
+#X connect 10 0 7 0;
+#X connect 12 0 6 1;
+#X connect 12 0 13 1;
+#X connect 13 0 14 0;
+#X connect 15 0 6 0;
+#X connect 16 0 13 0;
diff --git a/dtmfHurryUp~-help.pd b/dtmfHurryUp~-help.pd
new file mode 100644
index 0000000..e6c5e45
--- /dev/null
+++ b/dtmfHurryUp~-help.pd
@@ -0,0 +1,12 @@
+#N canvas 175 225 414 240 10;
+#X text 14 9 Description: DTMF telephone sound;
+#X text 13 26 Author: Alexandre Quessy;
+#X text 13 42 Version: 1;
+#X obj 19 104 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 19 124 mtl/dtmfHurryUp~;
+#X obj 18 147 mtl/out~;
+#X text 16 62 tags: synthesize~;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 5 1;
diff --git a/dtmfHurryUp~.pd b/dtmfHurryUp~.pd
new file mode 100644
index 0000000..52ef746
--- /dev/null
+++ b/dtmfHurryUp~.pd
@@ -0,0 +1,65 @@
+#N canvas 174 193 463 399 10;
+#X obj 3 159 osc~;
+#X obj 45 159 osc~;
+#X msg 197 96 bang;
+#X msg 254 187 0;
+#X obj 218 130 t b b;
+#X obj 78 161 osc~;
+#X obj 113 161 osc~;
+#X obj 31 92 t b b b b b;
+#X msg 1 138 1400;
+#X msg 42 140 2060;
+#X msg 75 142 2450;
+#X msg 110 142 2600;
+#X obj 285 103 delay 100;
+#X obj 281 156 delay 100;
+#X msg 229 73 stop;
+#X obj 8 208 *~;
+#X obj 126 46 select 1 0;
+#X obj 8 292 outlet~;
+#X obj 129 12 inlet;
+#X msg 206 164 1;
+#X text 184 11 0 or 1;
+#X obj 71 211 *~;
+#X obj 71 295 outlet~;
+#X obj 133 217 *~;
+#X obj 133 301 outlet~;
+#X obj 195 219 *~;
+#X obj 195 303 outlet~;
+#X connect 0 0 15 0;
+#X connect 1 0 21 0;
+#X connect 2 0 4 0;
+#X connect 3 0 15 1;
+#X connect 3 0 25 1;
+#X connect 3 0 23 1;
+#X connect 3 0 21 1;
+#X connect 4 0 19 0;
+#X connect 4 1 13 0;
+#X connect 5 0 23 0;
+#X connect 6 0 25 0;
+#X connect 7 0 8 0;
+#X connect 7 1 9 0;
+#X connect 7 2 2 0;
+#X connect 7 3 10 0;
+#X connect 7 4 11 0;
+#X connect 8 0 0 0;
+#X connect 9 0 1 0;
+#X connect 10 0 5 0;
+#X connect 11 0 6 0;
+#X connect 12 0 2 0;
+#X connect 13 0 3 0;
+#X connect 13 0 12 0;
+#X connect 14 0 12 0;
+#X connect 14 0 13 0;
+#X connect 14 0 3 0;
+#X connect 15 0 17 0;
+#X connect 16 0 7 0;
+#X connect 16 1 14 0;
+#X connect 18 0 16 0;
+#X connect 19 0 15 1;
+#X connect 19 0 25 1;
+#X connect 19 0 23 1;
+#X connect 19 0 21 1;
+#X connect 21 0 22 0;
+#X connect 23 0 24 0;
+#X connect 25 0 26 0;
diff --git a/dtmfNumber~-help.pd b/dtmfNumber~-help.pd
new file mode 100644
index 0000000..f94a7ba
--- /dev/null
+++ b/dtmfNumber~-help.pd
@@ -0,0 +1,11 @@
+#N canvas 236 89 236 288 10;
+#X text 13 12 Description: DTMF telephone sound;
+#X text 12 30 Author: Alexandre Quessy;
+#X text 12 47 Version: 1;
+#X floatatom 17 111 5 0 0 0 - - -;
+#X obj 17 155 mtl/dtmfNumber~;
+#X obj 18 185 mtl/out~;
+#X text 13 68 tags: synthesize~;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 5 1;
diff --git a/dtmfNumber~.pd b/dtmfNumber~.pd
new file mode 100644
index 0000000..48dbf27
--- /dev/null
+++ b/dtmfNumber~.pd
@@ -0,0 +1,112 @@
+#N canvas 0 22 792 718 10;
+#X msg 130 333 770;
+#X msg 133 368 852;
+#X msg 311 458 1209;
+#X msg 358 457 1336;
+#X msg 404 457 1477;
+#X msg 463 456 1633;
+#X msg 228 224 1;
+#X msg 308 226 2;
+#X msg 378 227 3;
+#X msg 233 280 4;
+#X msg 309 280 5;
+#X msg 374 280 6;
+#X msg 233 342 7;
+#X msg 309 335 8;
+#X msg 371 335 9;
+#X msg 304 398 0;
+#X msg 238 402 *;
+#X msg 362 401 #;
+#X obj 40 484 osc~;
+#X obj 299 563 osc~;
+#X msg 438 225 A;
+#X msg 437 285 B;
+#X msg 438 335 C;
+#X msg 439 396 D;
+#X obj 168 138 select 0 1 2 3 4 5 6 7 8 9 # * A B C D;
+#X msg 143 401 941;
+#X msg 131 295 697;
+#X obj 298 664 outlet~;
+#X obj 39 655 outlet~;
+#X obj 228 49 inlet;
+#X text 221 23 phone key;
+#X obj 68 453 t f;
+#X obj 312 534 t f;
+#X obj 250 91 t a b;
+#X obj 61 564 *~;
+#X obj 282 596 *~;
+#X obj 191 523 *~ 1;
+#X msg 182 482 1;
+#X msg 223 487 0;
+#X obj 214 450 delay 100;
+#X connect 0 0 31 0;
+#X connect 1 0 31 0;
+#X connect 2 0 32 0;
+#X connect 3 0 32 0;
+#X connect 4 0 32 0;
+#X connect 5 0 32 0;
+#X connect 6 0 26 0;
+#X connect 6 0 2 0;
+#X connect 7 0 26 0;
+#X connect 7 0 3 0;
+#X connect 8 0 26 0;
+#X connect 8 0 4 0;
+#X connect 9 0 0 0;
+#X connect 9 0 2 0;
+#X connect 10 0 0 0;
+#X connect 10 0 3 0;
+#X connect 11 0 4 0;
+#X connect 11 0 0 0;
+#X connect 12 0 1 0;
+#X connect 12 0 2 0;
+#X connect 13 0 1 0;
+#X connect 13 0 3 0;
+#X connect 14 0 1 0;
+#X connect 14 0 4 0;
+#X connect 15 0 25 0;
+#X connect 15 0 3 0;
+#X connect 16 0 25 0;
+#X connect 16 0 2 0;
+#X connect 17 0 25 0;
+#X connect 17 0 4 0;
+#X connect 18 0 34 0;
+#X connect 19 0 35 0;
+#X connect 20 0 26 0;
+#X connect 20 0 5 0;
+#X connect 21 0 0 0;
+#X connect 21 0 5 0;
+#X connect 22 0 1 0;
+#X connect 22 0 5 0;
+#X connect 23 0 25 0;
+#X connect 23 0 5 0;
+#X connect 24 0 15 0;
+#X connect 24 1 6 0;
+#X connect 24 2 7 0;
+#X connect 24 3 8 0;
+#X connect 24 4 9 0;
+#X connect 24 5 10 0;
+#X connect 24 6 11 0;
+#X connect 24 7 12 0;
+#X connect 24 8 13 0;
+#X connect 24 9 14 0;
+#X connect 24 10 17 0;
+#X connect 24 11 16 0;
+#X connect 24 12 20 0;
+#X connect 24 13 21 0;
+#X connect 24 14 22 0;
+#X connect 24 15 23 0;
+#X connect 25 0 31 0;
+#X connect 26 0 31 0;
+#X connect 29 0 33 0;
+#X connect 31 0 18 0;
+#X connect 32 0 19 0;
+#X connect 33 0 24 0;
+#X connect 33 1 37 0;
+#X connect 33 1 39 0;
+#X connect 34 0 28 0;
+#X connect 35 0 27 0;
+#X connect 36 0 34 1;
+#X connect 36 0 35 1;
+#X connect 37 0 36 0;
+#X connect 38 0 36 0;
+#X connect 39 0 38 0;
diff --git a/dtmfRing~-help.pd b/dtmfRing~-help.pd
new file mode 100644
index 0000000..aac067f
--- /dev/null
+++ b/dtmfRing~-help.pd
@@ -0,0 +1,12 @@
+#N canvas 184 139 265 252 10;
+#X text 23 22 Description: DTMF telephone sound;
+#X text 22 39 Author: Alexandre Quessy;
+#X text 22 56 Version: 1;
+#X obj 24 116 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 24 137 mtl/dtmfRing~;
+#X obj 24 161 mtl/out~;
+#X text 22 75 tags: synthesize~;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 5 1;
diff --git a/dtmfRing~.pd b/dtmfRing~.pd
new file mode 100644
index 0000000..82e17f6
--- /dev/null
+++ b/dtmfRing~.pd
@@ -0,0 +1,39 @@
+#N canvas 496 263 808 507 10;
+#X obj 303 267 delay 2000;
+#X obj 413 138 delay 4000;
+#X msg 158 260 0;
+#X obj 118 133 t b b;
+#X msg 182 91 stop;
+#X obj -49 213 *~;
+#X obj 94 33 select 1 0;
+#X obj -64 264 outlet~;
+#X obj 95 0 inlet;
+#X text 148 2 expects 0 or 1;
+#X msg 128 176 1;
+#X obj 17 265 outlet~;
+#X obj 5 239 *~;
+#X obj 303 87 t b b b;
+#X obj -58 187 osc~ 440;
+#X obj 7 192 osc~ 480;
+#X msg 413 159 bang;
+#X connect 0 0 2 0;
+#X connect 0 0 1 0;
+#X connect 1 0 16 0;
+#X connect 2 0 5 1;
+#X connect 2 0 12 1;
+#X connect 3 0 10 0;
+#X connect 3 1 0 0;
+#X connect 4 0 2 0;
+#X connect 4 0 1 0;
+#X connect 4 0 0 0;
+#X connect 5 0 7 0;
+#X connect 6 0 3 0;
+#X connect 6 1 4 0;
+#X connect 6 1 13 0;
+#X connect 8 0 6 0;
+#X connect 10 0 5 1;
+#X connect 10 0 12 1;
+#X connect 12 0 11 0;
+#X connect 14 0 5 0;
+#X connect 15 0 12 0;
+#X connect 16 0 3 0;
diff --git a/echoBp~-help.pd b/echoBp~-help.pd
new file mode 100644
index 0000000..d436297
--- /dev/null
+++ b/echoBp~-help.pd
@@ -0,0 +1,94 @@
+#N canvas 172 143 499 499 10;
+#X obj 323 93 hsl 128 15 0 2000 0 0 empty delay.l empty -2 -8 0 10
+-262144 -1 -1 1900 1;
+#X obj 323 141 hsl 128 15 0 2000 0 0 empty delay.r empty -2 -8 0 10
+-262144 -1 -1 4800 1;
+#X obj 323 235 hsl 128 15 0 127 0 0 empty frequency empty -2 -8 0 10
+-262144 -1 -1 3800 1;
+#X obj 324 189 hsl 128 15 0 127 0 0 empty feedback empty -2 -8 0 10
+-262144 -1 -1 11900 1;
+#X obj 323 280 hsl 128 15 0 127 0 0 empty q empty -2 -8 0 10 -262144
+-1 -1 2700 1;
+#X obj 320 323 tgl 17 0 empty routing empty 17 7 0 10 -262144 -1 -1
+0 1;
+#X text 1 58 Author: Roman Haefeli;
+#X text 2 72 Version: 2007-11-04;
+#X obj 1 -21 cnv 15 690 30 empty empty echoBp~ 2 12 1 14 -233017 -66577
+0;
+#X obj 15 402 cnv 15 400 40 empty empty empty 20 12 0 14 -258699 -66577
+0;
+#X text 17 403 warning:;
+#X text 17 421 high q and high feedback can show unstable behaviour.
+;
+#X obj 324 49 hsl 128 15 0 1 0 0 empty frequency empty -2 -8 0 10 -262144
+-1 -1 12700 1;
+#X obj 20 258 mtl/out~;
+#X msg 320 114 /delayl \$1;
+#X msg 320 162 /delayr \$1;
+#X msg 321 209 /feedback \$1;
+#X msg 320 255 /frequency \$1;
+#X msg 320 300 /q \$1;
+#X msg 320 345 /routing \$1;
+#X msg 321 69 /wet \$1;
+#X obj 20 223 mtl/echoBp~ /id fbdel;
+#X obj 20 171 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#N canvas 5 185 450 300 generate~ 0;
+#X obj 32 213 osc~ 200;
+#X obj 32 89 metro 400;
+#X obj 32 175 mtof;
+#X obj 104 195 mtof;
+#X obj 32 132 + 20;
+#X obj 32 111 random 70;
+#X floatatom 83 69 5 0 0 0 - - -;
+#X obj 32 261 outlet~;
+#X obj 103 261 outlet~;
+#X obj 30 14 inlet;
+#X obj 104 175 mtl/closestNote 0 2 4 7 9;
+#X obj 104 234 *~;
+#X obj 31 234 *~;
+#X obj 104 214 osc~ 100;
+#X obj 32 155 mtl/closestNote 0 2 4 7 9;
+#X connect 0 0 12 0;
+#X connect 1 0 5 0;
+#X connect 2 0 0 0;
+#X connect 3 0 13 0;
+#X connect 4 0 10 0;
+#X connect 4 0 14 0;
+#X connect 5 0 4 0;
+#X connect 6 0 1 1;
+#X connect 9 0 1 0;
+#X connect 9 0 11 1;
+#X connect 9 0 12 1;
+#X connect 10 0 3 0;
+#X connect 11 0 8 0;
+#X connect 12 0 7 0;
+#X connect 13 0 11 0;
+#X connect 14 0 2 0;
+#X restore 20 196 pd generate~;
+#X text 2 41 tag: fx~;
+#X text 1 12 Description: stereo delay with a bandpass filter in the
+feedback loop.;
+#X obj 407 345 tof/paramGui;
+#X obj 407 325 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X connect 0 0 14 0;
+#X connect 1 0 15 0;
+#X connect 2 0 17 0;
+#X connect 3 0 16 0;
+#X connect 4 0 18 0;
+#X connect 5 0 19 0;
+#X connect 12 0 20 0;
+#X connect 14 0 21 2;
+#X connect 15 0 21 2;
+#X connect 16 0 21 2;
+#X connect 17 0 21 2;
+#X connect 18 0 21 2;
+#X connect 19 0 21 2;
+#X connect 20 0 21 2;
+#X connect 21 0 13 0;
+#X connect 21 1 13 1;
+#X connect 22 0 23 0;
+#X connect 23 0 21 0;
+#X connect 23 1 21 1;
+#X connect 27 0 26 0;
diff --git a/echoBp~.pd b/echoBp~.pd
new file mode 100644
index 0000000..1eab977
--- /dev/null
+++ b/echoBp~.pd
@@ -0,0 +1,139 @@
+#N canvas 294 281 682 266 10;
+#X text 333 81 feedback 0-127;
+#X text 334 97 frequency 0-127;
+#X text 334 110 q 0-127;
+#X text 334 125 routing 0/1;
+#X text 337 21 parameters:;
+#X text 341 191 Author: Roman Haefeli;
+#X text 334 49 delay.l <1-5000ms>;
+#X text 334 65 delay.r <1-5000ms>;
+#X text 333 140 switch 0/1;
+#X text 340 176 Version: 2007-11-04;
+#N canvas 20 57 814 783 echobp 0;
+#X obj 131 718 delwrite~ \$0-fildelr 5000;
+#X obj 33 737 delwrite~ \$0-fildell 5000;
+#X obj 32 182 delread~ \$0-fildell;
+#X obj 103 153 delread~ \$0-fildelr;
+#X obj 32 281 *~;
+#X obj 103 283 *~;
+#X obj 33 433 *~;
+#X obj 60 434 *~;
+#X obj 104 432 *~;
+#X obj 131 432 *~;
+#X obj 312 318 * -1;
+#X obj 312 339 + 1;
+#X obj 33 680 *~;
+#X obj 131 680 *~;
+#X obj 131 653 bp~;
+#X obj 191 608 mtof;
+#X obj 191 587 + 47;
+#X obj 272 578 + 1;
+#X obj 272 625 +;
+#X obj 272 603 * 0.4;
+#X obj 53 215 outlet~;
+#X obj 130 219 outlet~;
+#X obj 59 310 inlet~;
+#X obj 131 307 inlet~;
+#X obj 290 184 pack f 20;
+#X obj 290 205 line~;
+#X obj 312 360 pack f 20;
+#X obj 312 381 line~;
+#X obj 239 361 pack f 20;
+#X obj 239 382 line~;
+#X obj 33 649 bp~;
+#X obj 272 560 * 0.031496;
+#X obj 191 543 min 127;
+#X obj 191 523 max 0;
+#X obj 272 540 min 127;
+#X obj 272 520 max 0;
+#X obj 290 143 min 127;
+#X obj 290 123 max 0;
+#X obj 191 567 * 0.62;
+#X obj 290 164 / 160;
+#X obj 482 35 tof/param /delayl 100 /g slider 1 10000;
+#X obj 488 61 tof/param /delayr 100 /g slider 1 10000;
+#X obj 484 85 tof/param /feedback 0 /g slider 0 127;
+#X obj 499 109 tof/param /routing 0 /g tgl;
+#X obj 498 131 tof/param /frequency 100 /g slider 0 127;
+#X obj 494 155 tof/param /q 0 /g slider 0 127;
+#X connect 2 0 4 0;
+#X connect 2 0 20 0;
+#X connect 3 0 5 0;
+#X connect 3 0 21 0;
+#X connect 4 0 6 0;
+#X connect 4 0 7 0;
+#X connect 5 0 8 0;
+#X connect 5 0 9 0;
+#X connect 6 0 30 0;
+#X connect 7 0 14 0;
+#X connect 8 0 30 0;
+#X connect 9 0 14 0;
+#X connect 10 0 11 0;
+#X connect 11 0 26 0;
+#X connect 12 0 1 0;
+#X connect 13 0 0 0;
+#X connect 14 0 13 0;
+#X connect 15 0 14 1;
+#X connect 15 0 30 1;
+#X connect 16 0 15 0;
+#X connect 17 0 14 2;
+#X connect 17 0 19 0;
+#X connect 17 0 30 2;
+#X connect 18 0 12 1;
+#X connect 18 0 13 1;
+#X connect 19 0 18 0;
+#X connect 22 0 6 0;
+#X connect 22 0 7 0;
+#X connect 23 0 8 0;
+#X connect 23 0 9 0;
+#X connect 24 0 25 0;
+#X connect 25 0 5 1;
+#X connect 25 0 4 1;
+#X connect 26 0 27 0;
+#X connect 27 0 9 1;
+#X connect 27 0 6 1;
+#X connect 28 0 29 0;
+#X connect 29 0 7 1;
+#X connect 29 0 8 1;
+#X connect 30 0 12 0;
+#X connect 31 0 17 0;
+#X connect 32 0 38 0;
+#X connect 33 0 32 0;
+#X connect 34 0 31 0;
+#X connect 35 0 34 0;
+#X connect 36 0 39 0;
+#X connect 37 0 36 0;
+#X connect 38 0 16 0;
+#X connect 39 0 24 0;
+#X connect 40 0 2 0;
+#X connect 41 0 3 0;
+#X connect 42 0 37 0;
+#X connect 43 0 28 0;
+#X connect 43 0 10 0;
+#X connect 44 0 33 0;
+#X connect 45 0 35 0;
+#X restore 69 39 pd echobp;
+#X obj 21 14 inlet~;
+#X obj 71 14 inlet~;
+#X obj 22 105 outlet~;
+#X obj 71 105 outlet~;
+#X obj 21 63 tof/crossfade~ 2;
+#X obj 499 -8 inlet params;
+#X obj 499 14 tof/paramRoute;
+#X obj 499 38 print PARAM_NOTFOUND;
+#X obj 159 -6 tof/param /wet 0 /g slider 0 1;
+#X obj 159 37 line~;
+#X msg 159 16 \$1 5;
+#X connect 10 0 15 2;
+#X connect 10 1 15 3;
+#X connect 11 0 10 0;
+#X connect 11 0 15 0;
+#X connect 12 0 10 1;
+#X connect 12 0 15 1;
+#X connect 15 0 13 0;
+#X connect 15 1 14 0;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 19 0 21 0;
+#X connect 20 0 15 4;
+#X connect 21 0 20 0;
diff --git a/echoRobot~-help.pd b/echoRobot~-help.pd
new file mode 100644
index 0000000..93e761a
--- /dev/null
+++ b/echoRobot~-help.pd
@@ -0,0 +1,49 @@
+#N canvas 618 57 435 205 10;
+#X obj 16 133 mtl/out~;
+#X text 15 24 tags: fx~;
+#X obj 15 56 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1
+;
+#N canvas 5 185 450 300 generate~ 0;
+#X obj 32 213 osc~ 200;
+#X obj 32 89 metro 400;
+#X obj 32 175 mtof;
+#X obj 104 195 mtof;
+#X obj 32 132 + 20;
+#X obj 32 111 random 70;
+#X floatatom 83 69 5 0 0 0 - - -;
+#X obj 32 261 outlet~;
+#X obj 103 261 outlet~;
+#X obj 30 14 inlet;
+#X obj 104 175 mtl/closestNote 0 2 4 7 9;
+#X obj 104 234 *~;
+#X obj 31 234 *~;
+#X obj 104 214 osc~ 100;
+#X obj 32 155 mtl/closestNote 0 2 4 7 9;
+#X connect 0 0 12 0;
+#X connect 1 0 5 0;
+#X connect 2 0 0 0;
+#X connect 3 0 13 0;
+#X connect 4 0 10 0;
+#X connect 4 0 14 0;
+#X connect 5 0 4 0;
+#X connect 6 0 1 1;
+#X connect 9 0 1 0;
+#X connect 9 0 11 1;
+#X connect 9 0 12 1;
+#X connect 10 0 3 0;
+#X connect 11 0 8 0;
+#X connect 12 0 7 0;
+#X connect 13 0 11 0;
+#X connect 14 0 2 0;
+#X restore 15 81 pd generate~;
+#X obj 210 86 hsl 100 15 0 1 0 0 \$0/echorobot/wet \$0/echorobot/wet_
+/echorobot/wet 105 7 0 8 -262144 -1 -1 0 1;
+#X obj 210 106 hsl 100 15 1 100 0 0 \$0/echorobot/amount \$0/echorobot/amount_
+/echorobot/amount 105 7 0 8 -262144 -1 -1 1900 1;
+#X text 14 8 Description: Basic echo.;
+#X obj 16 106 mtl/echoRobot~ /id echorobot;
+#X connect 2 0 3 0;
+#X connect 3 0 7 0;
+#X connect 3 1 7 1;
+#X connect 7 0 0 0;
+#X connect 7 1 0 1;
diff --git a/echoRobot~.pd b/echoRobot~.pd
new file mode 100644
index 0000000..150f6ff
--- /dev/null
+++ b/echoRobot~.pd
@@ -0,0 +1,54 @@
+#N canvas 344 463 628 279 10;
+#N canvas 457 452 466 316 robotfeedback 0;
+#X obj 260 117 *~ 0.9;
+#X obj 33 118 *~ 0.9;
+#X obj 31 173 *~ 0.5;
+#X obj 220 179 *~ 0.5;
+#X obj 32 89 delwrite~ \$0-elevate 1000;
+#X obj 225 88 delwrite~ \$0-trashed 1000;
+#X obj 221 152 delread~ \$0-trashed 1000;
+#X obj 336 38 inlet;
+#X obj 32 65 inlet~;
+#X obj 226 61 inlet~;
+#X obj 31 200 outlet~;
+#X obj 221 206 outlet~;
+#X obj 32 149 delread~ \$0-elevate 1000;
+#X connect 0 0 5 0;
+#X connect 1 0 4 0;
+#X connect 2 0 10 0;
+#X connect 3 0 11 0;
+#X connect 6 0 0 0;
+#X connect 6 0 3 0;
+#X connect 7 0 6 0;
+#X connect 7 0 12 0;
+#X connect 8 0 4 0;
+#X connect 9 0 5 0;
+#X connect 12 0 1 0;
+#X connect 12 0 2 0;
+#X restore 54 100 pd robotfeedback;
+#X obj 32 40 inlet~;
+#X obj 82 30 inlet~;
+#X obj 50 220 outlet~;
+#X obj 100 220 outlet~;
+#X obj 51 172 tof/crossfade~ 2;
+#X obj 484 11 inlet params;
+#X obj 484 57 print PARAM_NOTFOUND;
+#X obj 263 186 tof/param /wet 0 /g slider 0 1;
+#X obj 263 229 line~;
+#X msg 263 208 \$1 5;
+#X obj 147 29 tof/param /amount 20 /g slider 1 100;
+#X obj 484 33 tof/param route;
+#X connect 0 0 5 2;
+#X connect 0 1 5 3;
+#X connect 1 0 0 0;
+#X connect 1 0 5 0;
+#X connect 2 0 0 1;
+#X connect 2 0 5 1;
+#X connect 5 0 3 0;
+#X connect 5 1 4 0;
+#X connect 6 0 12 0;
+#X connect 8 0 10 0;
+#X connect 9 0 5 4;
+#X connect 10 0 9 0;
+#X connect 11 0 0 2;
+#X connect 12 0 7 0;
diff --git a/echoVd~-help.pd b/echoVd~-help.pd
new file mode 100644
index 0000000..00d70cc
--- /dev/null
+++ b/echoVd~-help.pd
@@ -0,0 +1,51 @@
+#N canvas 499 262 425 194 10;
+#X obj 24 101 mtl/echoVd~ /id echovd;
+#X obj 25 126 mtl/out~;
+#X text 22 4 Description: Echo.;
+#X text 22 21 tags: fx~;
+#X obj 24 52 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#N canvas 5 185 450 300 generate~ 0;
+#X obj 32 213 osc~ 200;
+#X obj 32 89 metro 400;
+#X obj 32 175 mtof;
+#X obj 104 195 mtof;
+#X obj 32 132 + 20;
+#X obj 32 111 random 70;
+#X floatatom 83 69 5 0 0 0 - - -;
+#X obj 32 261 outlet~;
+#X obj 103 261 outlet~;
+#X obj 30 14 inlet;
+#X obj 104 175 mtl/closestNote 0 2 4 7 9;
+#X obj 104 234 *~;
+#X obj 31 234 *~;
+#X obj 104 214 osc~ 100;
+#X obj 32 155 mtl/closestNote 0 2 4 7 9;
+#X connect 0 0 12 0;
+#X connect 1 0 5 0;
+#X connect 2 0 0 0;
+#X connect 3 0 13 0;
+#X connect 4 0 10 0;
+#X connect 4 0 14 0;
+#X connect 5 0 4 0;
+#X connect 6 0 1 1;
+#X connect 9 0 1 0;
+#X connect 9 0 11 1;
+#X connect 9 0 12 1;
+#X connect 10 0 3 0;
+#X connect 11 0 8 0;
+#X connect 12 0 7 0;
+#X connect 13 0 11 0;
+#X connect 14 0 2 0;
+#X restore 24 77 pd generate~;
+#X obj 185 62 hsl 100 15 0 1 0 0 \$0/echovd/wet \$0/echovd/wet_ /echovd/wet
+105 7 0 8 -262144 -1 -1 0 1;
+#X obj 185 82 hsl 100 15 0 5000 0 0 \$0/echovd/delay \$0/echovd/delay_
+/echovd/delay 105 7 0 8 -262144 -1 -1 0 1;
+#X obj 185 102 hsl 100 15 0 1 0 0 \$0/echovd/strength \$0/echovd/strength_
+/echovd/strength 105 7 0 8 -262144 -1 -1 0 1;
+#X connect 0 0 1 0;
+#X connect 0 1 1 1;
+#X connect 4 0 5 0;
+#X connect 5 0 0 0;
+#X connect 5 1 0 1;
diff --git a/echoVd~.pd b/echoVd~.pd
new file mode 100644
index 0000000..4a1f7be
--- /dev/null
+++ b/echoVd~.pd
@@ -0,0 +1,85 @@
+#N canvas 396 180 626 518 12;
+#X obj 31 42 inlet~;
+#X obj 81 42 inlet~;
+#X obj 31 344 outlet~;
+#X obj 101 344 outlet~;
+#X obj 40 173 line~;
+#X msg 40 147 \$1 5;
+#X obj 110 173 line~;
+#X msg 110 147 \$1 5;
+#N canvas 145 311 597 529 fxecho 0;
+#X obj -68 205 inlet~;
+#X obj -68 410 outlet~;
+#X obj -69 285 +~;
+#X obj -6 300 -~;
+#X obj 38 85 inlet~;
+#X obj 237 91 inlet;
+#X obj 176 220 clip 0 1;
+#X obj 13 369 *~ 0;
+#X text -76 43 Based on a pabstraction in help patch 44;
+#X obj 14 239 vd~ \$0fbr;
+#X obj 14 395 delwrite~ \$0fbr 1000;
+#X connect 0 0 2 0;
+#X connect 0 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 7 0;
+#X connect 4 0 9 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 1;
+#X connect 7 0 10 0;
+#X connect 9 0 2 1;
+#X connect 9 0 3 1;
+#X restore 96 198 pd fxecho;
+#N canvas 168 140 597 529 fxecho 0;
+#X obj -68 205 inlet~;
+#X obj -68 410 outlet~;
+#X obj -69 285 +~;
+#X obj -6 300 -~;
+#X obj 38 85 inlet~;
+#X obj 237 91 inlet;
+#X obj 176 220 clip 0 1;
+#X obj 13 369 *~ 0;
+#X text -76 43 Based on a pabstraction in help patch 44;
+#X obj 14 239 vd~ \$0fbl;
+#X obj 14 395 delwrite~ \$0fbl 1000;
+#X connect 0 0 2 0;
+#X connect 0 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 7 0;
+#X connect 4 0 9 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 1;
+#X connect 7 0 10 0;
+#X connect 9 0 2 1;
+#X connect 9 0 3 1;
+#X restore 26 198 pd fxecho;
+#X obj 523 61 inlet params;
+#X obj 523 107 print PARAM_NOTFOUND;
+#X obj 186 205 tof/param /wet 0 /g slider 0 1;
+#X obj 186 248 line~;
+#X msg 186 227 \$1 5;
+#X obj 31 291 tof/crossfade~ 2;
+#X obj 184 122 tof/param /delay 100 /g slider 0 5000;
+#X obj 194 152 tof/param /strength 0.5 /g slider 0 1;
+#X obj 523 83 tof/param route;
+#X connect 0 0 9 0;
+#X connect 0 0 15 0;
+#X connect 1 0 8 0;
+#X connect 1 0 15 1;
+#X connect 4 0 9 1;
+#X connect 5 0 4 0;
+#X connect 6 0 8 1;
+#X connect 7 0 6 0;
+#X connect 8 0 15 3;
+#X connect 9 0 15 2;
+#X connect 10 0 18 0;
+#X connect 12 0 14 0;
+#X connect 13 0 15 4;
+#X connect 14 0 13 0;
+#X connect 15 0 2 0;
+#X connect 15 1 3 0;
+#X connect 16 0 7 0;
+#X connect 16 0 5 0;
+#X connect 17 0 8 2;
+#X connect 17 0 9 2;
+#X connect 18 0 11 0;
diff --git a/eq~-help.pd b/eq~-help.pd
new file mode 100644
index 0000000..9be71ae
--- /dev/null
+++ b/eq~-help.pd
@@ -0,0 +1,24 @@
+#N canvas 489 464 408 202 10;
+#X text 20 1 Description: equalizer using hml_shelf;
+#X obj 23 63 noise~;
+#X obj 22 131 mtl/out~;
+#X obj 23 98 mtl/eq~ /id eq;
+#X text 20 18 tags: mix~;
+#X obj 191 38 tgl 15 0 \$0/eq/switch \$0/eq/switch_ /eq/switch 17 7
+0 8 -262144 -1 -1 1 1;
+#X obj 195 158 hsl 100 15 0 5000 0 0 \$0/eq/release \$0/eq/release_
+/eq/release 105 7 0 8 -262144 -1 -1 5600 1;
+#X obj 195 58 hsl 100 15 -40 40 0 0 \$0/eq/low \$0/eq/low_ /eq/low
+105 7 0 8 -262144 -1 -1 6000 1;
+#X obj 195 78 hsl 100 15 -40 40 0 0 \$0/eq/mid \$0/eq/mid_ /eq/mid
+105 7 0 8 -262144 -1 -1 4787 1;
+#X obj 195 98 hsl 100 15 -40 40 0 0 \$0/eq/high \$0/eq/high_ /eq/high
+105 7 0 8 -262144 -1 -1 3000 1;
+#X obj 195 118 hsl 100 15 880 14080 0 0 \$0/eq/hfreq \$0/eq/hfreq_
+/eq/hfreq 105 7 0 8 -262144 -1 -1 7266 1;
+#X obj 195 138 hsl 100 15 22.5 440 0 0 \$0/eq/lfreq \$0/eq/lfreq_ /eq/lfreq
+105 7 0 8 -262144 -1 -1 5571 1;
+#X connect 1 0 3 0;
+#X connect 1 0 3 1;
+#X connect 3 0 2 0;
+#X connect 3 1 2 1;
diff --git a/eq~.pd b/eq~.pd
new file mode 100644
index 0000000..d149b84
--- /dev/null
+++ b/eq~.pd
@@ -0,0 +1,179 @@
+#N canvas 387 257 757 453 10;
+#X obj 29 109 inlet~;
+#X obj 27 246 outlet~;
+#X obj 212 102 inlet~;
+#X obj 77 247 outlet~;
+#N canvas 2 89 732 530 hml_shelf 0;
+#X floatatom 288 116 5 2 9999 0 - - -;
+#X text 330 116 ms;
+#X obj 355 25 vsl 15 49 27.5 440 1 1 empty empty low_freq. -8 -8 0
+8 -262144 -1 -1 1200 1;
+#X obj 108 28 vsl 15 81 -40 40 0 1 empty empty low_level -18 -8 0 8
+-262144 -1 -1 3000 1;
+#X obj 176 27 vsl 15 81 -40 40 0 1 empty empty mid_level -10 -8 0 8
+-262144 -1 -1 4000 1;
+#X obj 244 26 vsl 15 81 -40 40 0 1 empty empty high_level 0 -8 0 8
+-262144 -1 -1 3000 1;
+#X text 372 19 -440Hz;
+#X text 372 67 -27.5Hz;
+#X text 372 43 -110Hz;
+#X obj 426 25 vsl 15 49 880 14080 1 1 empty empty high_freq. -8 -8
+0 8 -262144 -1 -1 3800 1;
+#X text 443 19 -14080Hz;
+#X text 443 67 -880Hz;
+#X text 443 43 -3520Hz;
+#X floatatom 108 117 4 0 0 0 - - -;
+#X floatatom 175 113 4 0 0 0 - - -;
+#X floatatom 244 115 4 0 0 0 - - -;
+#X floatatom 355 96 8 0 0 0 - - -;
+#X floatatom 426 96 8 0 0 0 - - -;
+#X text 124 23 +40;
+#X text 126 62 0;
+#X text 124 102 -40;
+#X text 194 61 0;
+#X text 192 101 -40;
+#X text 192 22 +40;
+#X text 260 21 +40;
+#X text 262 60 0;
+#X text 260 100 -40;
+#X text 107 0 dB;
+#X text 174 -2 dB;
+#X text 243 -2 dB;
+#X obj 75 -68 inlet~;
+#X obj 175 341 outlet~;
+#X obj 116 -41 inlet;
+#X obj 165 -41 inlet;
+#X obj 217 -41 inlet;
+#X obj 358 -40 inlet;
+#X obj 263 -41 inlet;
+#X obj 309 -41 inlet;
+#X obj 74 140 iemlib/hml_shelf~ 6 100 0 4000 -6 200;
+#X connect 0 0 38 6;
+#X connect 2 0 16 0;
+#X connect 3 0 13 0;
+#X connect 4 0 14 0;
+#X connect 5 0 15 0;
+#X connect 9 0 17 0;
+#X connect 13 0 38 1;
+#X connect 14 0 38 3;
+#X connect 15 0 38 5;
+#X connect 16 0 38 2;
+#X connect 17 0 38 4;
+#X connect 30 0 38 0;
+#X connect 32 0 38 1;
+#X connect 33 0 38 3;
+#X connect 34 0 38 5;
+#X connect 35 0 38 6;
+#X connect 36 0 38 2;
+#X connect 37 0 38 4;
+#X connect 38 0 31 0;
+#X restore 229 137 pd hml_shelf;
+#N canvas 308 294 748 546 hml_shelf 0;
+#X floatatom 288 116 5 2 9999 0 - - -;
+#X text 330 116 ms;
+#X obj 355 25 vsl 15 49 27.5 440 1 1 empty empty low_freq. -8 -8 0
+8 -262144 -1 -1 1200 1;
+#X obj 108 28 vsl 15 81 -40 40 0 1 empty empty low_level -18 -8 0 8
+-262144 -1 -1 3000 1;
+#X obj 176 27 vsl 15 81 -40 40 0 1 empty empty mid_level -10 -8 0 8
+-262144 -1 -1 4000 1;
+#X obj 244 26 vsl 15 81 -40 40 0 1 empty empty high_level 0 -8 0 8
+-262144 -1 -1 3500 1;
+#X text 372 19 -440Hz;
+#X text 372 67 -27.5Hz;
+#X text 372 43 -110Hz;
+#X obj 426 25 vsl 15 49 880 14080 1 1 empty empty high_freq. -8 -8
+0 8 -262144 -1 -1 3800 1;
+#X text 443 19 -14080Hz;
+#X text 443 67 -880Hz;
+#X text 443 43 -3520Hz;
+#X floatatom 108 117 4 0 0 0 - - -;
+#X floatatom 175 113 4 0 0 0 - - -;
+#X floatatom 244 115 4 0 0 0 - - -;
+#X floatatom 355 96 8 0 0 0 - - -;
+#X floatatom 426 96 8 0 0 0 - - -;
+#X text 124 23 +40;
+#X text 126 62 0;
+#X text 124 102 -40;
+#X text 194 61 0;
+#X text 192 101 -40;
+#X text 192 22 +40;
+#X text 260 21 +40;
+#X text 262 60 0;
+#X text 260 100 -40;
+#X text 107 0 dB;
+#X text 174 -2 dB;
+#X text 243 -2 dB;
+#X obj 75 -68 inlet~;
+#X obj 178 327 outlet~;
+#X obj 116 -41 inlet;
+#X obj 165 -41 inlet;
+#X obj 217 -41 inlet;
+#X obj 358 -40 inlet;
+#X obj 263 -41 inlet;
+#X obj 309 -41 inlet;
+#X floatatom 336 187 5 0 0 0 - - -;
+#X obj 74 140 iemlib/hml_shelf~ 6 100 0 4000 -6 200;
+#X connect 0 0 39 6;
+#X connect 2 0 16 0;
+#X connect 3 0 13 0;
+#X connect 4 0 14 0;
+#X connect 5 0 15 0;
+#X connect 9 0 17 0;
+#X connect 13 0 39 1;
+#X connect 14 0 39 3;
+#X connect 15 0 39 5;
+#X connect 16 0 39 2;
+#X connect 17 0 39 4;
+#X connect 30 0 39 0;
+#X connect 32 0 39 1;
+#X connect 33 0 39 3;
+#X connect 34 0 39 5;
+#X connect 35 0 38 0;
+#X connect 35 0 39 6;
+#X connect 36 0 39 2;
+#X connect 37 0 39 4;
+#X connect 39 0 31 0;
+#X restore 78 144 pd hml_shelf;
+#X text 342 -90 TODO: reset?;
+#X obj 29 189 tof/crossfade~ 2;
+#X obj 602 -65 inlet params;
+#X obj 602 -43 tof/paramRoute;
+#X obj 602 -19 print PARAM_NOTFOUND;
+#X obj 175 216 tof/param /switch 0 /g tgl;
+#X obj 175 237 != 0;
+#X msg 175 261 \$1 200;
+#X obj 175 283 line~;
+#X obj 136 -17 tof/param /hfreq 7901.13 /g slider 880 14080;
+#X obj 141 4 tof/param /lfreq 55 /g slider 22.5 440;
+#X obj 98 -75 tof/param /low 0 /g slider -40 40;
+#X obj 115 -57 tof/param /mid 0 /g slider -40 40;
+#X obj 127 -37 tof/param /high 0 /g slider -40 40;
+#X obj 201 20 tof/param /release 100 /g slider 0 5000;
+#X connect 0 0 5 0;
+#X connect 0 0 7 0;
+#X connect 2 0 4 0;
+#X connect 2 0 7 1;
+#X connect 4 0 7 3;
+#X connect 5 0 7 2;
+#X connect 7 0 1 0;
+#X connect 7 1 3 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 14 0 7 4;
+#X connect 15 0 5 5;
+#X connect 15 0 4 5;
+#X connect 16 0 5 4;
+#X connect 16 0 4 4;
+#X connect 17 0 5 1;
+#X connect 17 0 4 1;
+#X connect 18 0 5 2;
+#X connect 18 0 4 2;
+#X connect 19 0 5 3;
+#X connect 19 0 4 3;
+#X connect 20 0 4 6;
+#X connect 20 0 5 6;
+#X coords 0 0 1 1 213 69 0;
diff --git a/every-help.pd b/every-help.pd
new file mode 100644
index 0000000..02d2171
--- /dev/null
+++ b/every-help.pd
@@ -0,0 +1,23 @@
+#N canvas 0 0 570 364 10;
+#X floatatom 245 185 5 0 0 0 - - -;
+#X text 243 166 Change the number of required bangs;
+#X obj 54 3 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 57 7 description: bangs out every X bang received;
+#X obj 150 104 loadbang;
+#X obj 174 181 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 195 262 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 300 209 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X text 324 210 Reset;
+#X obj 150 132 metro 1000;
+#X obj 194 233 mtl/every 3;
+#X text 60 23 tags: sequencing;
+#X connect 0 0 10 1;
+#X connect 4 0 9 0;
+#X connect 5 0 10 0;
+#X connect 7 0 10 2;
+#X connect 9 0 5 0;
+#X connect 10 0 6 0;
diff --git a/every.pd b/every.pd
new file mode 100644
index 0000000..acc197d
--- /dev/null
+++ b/every.pd
@@ -0,0 +1,25 @@
+#N canvas 1215 144 608 403 10;
+#X obj 103 205 outlet;
+#X obj 274 41 tof/argument 1 1;
+#X obj 233 71 max 1;
+#X obj 103 164 sel 1;
+#X obj 102 76 inlet bang;
+#X obj 226 16 inlet bangs;
+#X obj 427 21 inlet reset;
+#X obj 428 51 b;
+#X obj 327 9 loadbang;
+#X obj 103 122 iemlib/modulo_counter;
+#X msg 337 97 0;
+#X obj 202 151 - 1;
+#X connect 1 0 2 0;
+#X connect 2 0 9 0;
+#X connect 2 0 11 0;
+#X connect 3 0 0 0;
+#X connect 4 0 9 0;
+#X connect 5 0 2 0;
+#X connect 6 0 7 0;
+#X connect 7 0 10 0;
+#X connect 8 0 1 0;
+#X connect 9 0 3 0;
+#X connect 10 0 9 1;
+#X connect 11 0 3 1;
diff --git a/examples/gems-fft~.pd b/examples/gems-fft~.pd
new file mode 100644
index 0000000..ae63fb3
--- /dev/null
+++ b/examples/gems-fft~.pd
@@ -0,0 +1,107 @@
+#N canvas 353 122 523 473 10;
+#X declare -lib Gem;
+#X declare -lib Gem;
+#X text -7 -41 Description: FFT spectral graphical analysis;
+#X obj -4 7 gemhead;
+#X obj 57 111 t f f;
+#X msg 145 281 \$1 0.5 1;
+#X obj 283 -21 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj -4 66 mtl/gemsDuplicate 128;
+#X obj 57 90 tof/increment;
+#X obj 145 301 mtl/hsvToRgb;
+#X obj -4 356 color;
+#N canvas 0 63 968 641 fft 0;
+#N canvas 997 194 427 326 fft 0;
+#X obj 46 64 inlet~;
+#X obj 46 94 rfft~;
+#X obj 46 127 *~;
+#X obj 77 127 *~;
+#X obj 46 157 sqrt~;
+#X obj 216 60 inlet;
+#X obj 278 96 block~ 1024 1;
+#X obj 53 204 clip~ 0 500;
+#X obj 144 265 tabwrite~ \$0-fft;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 0 2 1;
+#X connect 1 1 3 0;
+#X connect 1 1 3 1;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X connect 4 0 7 0;
+#X connect 5 0 8 0;
+#X connect 7 0 8 0;
+#X restore 311 350 pd fft;
+#X obj 312 75 inlet~;
+#X obj 451 293 metro 20;
+#X msg 456 224 1;
+#X obj 456 204 loadbang;
+#X obj 312 301 hip~ 50;
+#X obj 312 321 *~ 1;
+#X obj 300 452 table \$0-fft 128;
+#X obj 193 196 tabread \$0-fft;
+#X obj 194 173 clip 0 127;
+#X obj 74 69 inlet tabread.index;
+#X obj 125 522 outlet tabread.values;
+#X connect 1 0 5 0;
+#X connect 2 0 0 1;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 5 0 6 0;
+#X connect 6 0 0 0;
+#X connect 8 0 11 0;
+#X connect 9 0 8 0;
+#X connect 10 0 9 0;
+#X restore 145 160 pd fft;
+#X obj 283 1 mtl/gemsWin /dimen 640 480;
+#X obj 57 157 - 1;
+#X obj 57 134 / 64;
+#X obj -4 378 rectangle 0.008 0.008;
+#X obj 145 184 clip 0 100;
+#X obj 145 236 + 0.5;
+#X obj 145 258 maxlib/wrap 0 1;
+#X obj 145 214 maxlib/scale 0 100 0 0.5;
+#X obj 178 123 readsf~;
+#X obj 178 78 openpanel;
+#X obj 178 59 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X msg 178 100 open \$1 \, start;
+#X obj 284 126 adc~;
+#X text 201 56 <- read a soundfile;
+#X text 319 124 <- talk into your mic;
+#X obj -4 39 mtl/gemsFit fill 0.9;
+#X obj -4 331 translateXYZ 0 0 0;
+#X obj 249 259 maxlib/scale 0 100 0.001 1;
+#X obj 374 -34 import Gem;
+#X obj 252 159 mtl/out~;
+#X text -9 -24 Authors: Alexandre Quessy and TOF;
+#X connect 1 0 25 0;
+#X connect 2 0 12 0;
+#X connect 2 1 9 0;
+#X connect 3 0 7 0;
+#X connect 4 0 10 0;
+#X connect 5 0 26 0;
+#X connect 5 1 6 0;
+#X connect 5 2 6 1;
+#X connect 6 0 2 0;
+#X connect 7 0 8 1;
+#X connect 8 0 13 0;
+#X connect 9 0 14 0;
+#X connect 11 0 26 1;
+#X connect 12 0 11 0;
+#X connect 14 0 17 0;
+#X connect 14 0 27 0;
+#X connect 15 0 16 0;
+#X connect 16 0 3 0;
+#X connect 17 0 15 0;
+#X connect 18 0 9 1;
+#X connect 18 0 29 0;
+#X connect 18 0 29 1;
+#X connect 19 0 21 0;
+#X connect 20 0 19 0;
+#X connect 21 0 18 0;
+#X connect 22 0 9 1;
+#X connect 25 0 5 0;
+#X connect 26 0 8 0;
+#X connect 27 0 13 2;
diff --git a/examples/gems-movies_with_sound~.pd b/examples/gems-movies_with_sound~.pd
new file mode 100644
index 0000000..1ed8495
--- /dev/null
+++ b/examples/gems-movies_with_sound~.pd
@@ -0,0 +1,43 @@
+#N canvas 804 121 441 494 10;
+#X declare -lib Gem;
+#X obj 23 59 gemhead;
+#X obj 23 398 pix_texture;
+#X obj 23 450 square;
+#X obj 236 60 tgl 15 0 empty empty empty 0 -6 0 10 -262144 -1 -1 1
+1;
+#X obj 236 84 mtl/gemsWin /dimen 320 320;
+#X obj 23 424 mtl/gemsFit window;
+#X obj 180 295 mtl/out~;
+#X obj 43 91 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 43 175 openpanel;
+#X obj 23 362 mtl/gemsMovies;
+#X obj 179 131 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 84 309 snapshot~;
+#X obj 23 249 t a b;
+#X obj 180 175 mtl/sfIndexer;
+#X obj 179 154 openpanel;
+#X text 63 88 1) Load movie here;
+#X text 201 128 2) Load soundfile here;
+#X msg 180 199 set \$1 \, bang;
+#X text 22 10 How to play a movie synchronized to a soundfile.;
+#X obj 180 228 mtl/player~ 1;
+#X obj 328 61 import Gem;
+#X connect 0 0 12 0;
+#X connect 1 0 5 0;
+#X connect 3 0 4 0;
+#X connect 5 0 2 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 1;
+#X connect 9 0 1 0;
+#X connect 10 0 14 0;
+#X connect 11 0 9 3;
+#X connect 12 0 9 0;
+#X connect 12 1 11 0;
+#X connect 13 0 17 0;
+#X connect 14 0 13 0;
+#X connect 17 0 19 0;
+#X connect 19 0 6 0;
+#X connect 19 0 6 1;
+#X connect 19 1 11 0;
diff --git a/examples/gems-scope~.pd b/examples/gems-scope~.pd
new file mode 100644
index 0000000..21391db
--- /dev/null
+++ b/examples/gems-scope~.pd
@@ -0,0 +1,130 @@
+#N canvas 571 140 629 386 10;
+#X declare -lib Gem;
+#X obj 440 26 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#N canvas 0 0 1009 686 draw_audio_input 0;
+#X obj 640 -2 inlet~;
+#X obj 219 377 tabread \$0-knots;
+#X obj 127 532 pack f f f 0;
+#X obj 94 363 t f f;
+#X obj 97 240 until;
+#X msg 279 113 0;
+#X obj 111 305 f 0;
+#X obj 203 303 + 1;
+#X obj 641 384 table \$0-knots 800;
+#X obj 641 358 tabwrite~ \$0-knots;
+#X obj 223 -96 inlet;
+#X obj 232 33 t b b b;
+#X obj 174 600 outlet;
+#X msg 92 198 800;
+#X obj 105 332 t f f f;
+#X obj 133 454 expr (($f1/799)*2)-1;
+#X obj 295 280 until;
+#X msg 290 238 800;
+#X obj 201 165 zexy/demultiplex 0 1;
+#X obj 480 411 tabread \$0-knots;
+#X obj 384 582 pack f f f 0;
+#X obj 365 326 f 0;
+#X obj 464 337 + 1;
+#X obj 366 366 t f f f;
+#X obj 481 512 expr (($f1/799)*2)-1;
+#X obj 477 464 *;
+#X obj 355 397 t f f f;
+#X obj 430 427 mod 2;
+#X obj 399 519 f;
+#X msg 403 116 -1;
+#X obj 373 465 zexy/demultiplex 0 1;
+#X obj 388 493 b;
+#X obj 444 -30 inlet;
+#X connect 0 0 9 0;
+#X connect 1 0 2 2;
+#X connect 2 0 12 0;
+#X connect 3 0 2 0;
+#X connect 3 1 15 0;
+#X connect 4 0 6 0;
+#X connect 5 0 6 1;
+#X connect 5 0 21 1;
+#X connect 6 0 14 0;
+#X connect 7 0 6 1;
+#X connect 10 0 11 0;
+#X connect 11 0 18 0;
+#X connect 11 1 5 0;
+#X connect 11 1 29 0;
+#X connect 11 2 9 0;
+#X connect 13 0 4 0;
+#X connect 14 0 3 0;
+#X connect 14 1 1 0;
+#X connect 14 2 7 0;
+#X connect 15 0 2 1;
+#X connect 16 0 21 0;
+#X connect 17 0 16 0;
+#X connect 18 0 13 0;
+#X connect 18 1 17 0;
+#X connect 19 0 25 1;
+#X connect 20 0 12 0;
+#X connect 21 0 23 0;
+#X connect 22 0 21 1;
+#X connect 23 0 26 0;
+#X connect 23 1 19 0;
+#X connect 23 2 22 0;
+#X connect 24 0 20 1;
+#X connect 24 0 28 1;
+#X connect 25 0 20 2;
+#X connect 26 0 20 0;
+#X connect 26 1 30 0;
+#X connect 26 2 27 0;
+#X connect 27 0 25 0;
+#X connect 27 0 30 1;
+#X connect 28 0 20 1;
+#X connect 29 0 28 1;
+#X connect 30 0 31 0;
+#X connect 30 1 24 0;
+#X connect 31 0 28 0;
+#X connect 32 0 18 1;
+#X restore 279 198 pd draw_audio_input;
+#X obj 334 113 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 352 111 Draw mode;
+#X obj 43 347 mtl/gemsLines 800;
+#X obj 42 4 gemhead;
+#X obj 42 295 mtl/gemsFit window;
+#X obj 441 151 osc~;
+#X floatatom 441 127 5 0 0 0 - - -;
+#X obj 442 182 *~;
+#X obj 494 166 osc~ 1;
+#X obj 41 254 rotate 0 1 1 1;
+#X obj 41 210 color;
+#X obj 57 86 iemlib/modulo_counter 360;
+#X obj 221 25 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 58 112 t f f;
+#X obj 58 181 mtl/hsvToRgb;
+#X obj 57 140 / 360;
+#X msg 57 160 \$1 1 1;
+#X obj 41 39 t a b b;
+#X obj 440 46 mtl/gemsWin /dimen 640 480;
+#X obj 221 49 mtl/gemsFeedback 0.9 -0.1;
+#X floatatom 497 134 5 0 0 0 - - -;
+#X obj 544 11 import Gem;
+#X connect 0 0 20 0;
+#X connect 1 0 4 1;
+#X connect 2 0 1 1;
+#X connect 5 0 19 0;
+#X connect 6 0 4 0;
+#X connect 7 0 9 0;
+#X connect 8 0 7 0;
+#X connect 9 0 1 2;
+#X connect 10 0 9 1;
+#X connect 11 0 6 0;
+#X connect 12 0 11 0;
+#X connect 13 0 15 0;
+#X connect 14 0 21 0;
+#X connect 15 0 17 0;
+#X connect 15 1 11 1;
+#X connect 16 0 12 1;
+#X connect 17 0 18 0;
+#X connect 18 0 16 0;
+#X connect 19 0 12 0;
+#X connect 19 1 13 0;
+#X connect 19 2 1 0;
+#X connect 22 0 10 0;
diff --git a/examples/gems-sobel_filter.pd b/examples/gems-sobel_filter.pd
new file mode 100644
index 0000000..5cf9910
--- /dev/null
+++ b/examples/gems-sobel_filter.pd
@@ -0,0 +1,359 @@
+#N canvas 325 158 536 531 10;
+#X declare -lib Gem;
+#X declare -lib Gem;
+#X obj 12 87 gemhead 50;
+#X obj 14 350 pix_texture;
+#X obj 14 316 pix_invert;
+#X obj 13 248 pix_gain;
+#X floatatom 37 229 5 0 0 0 - - -;
+#X obj -11 317 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 14 272 pix_2grey;
+#X obj -15 270 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj -6 241 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 369 75 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 14 471 rectangle 5.33333 4;
+#X obj 83 230 hsl 50 15 1 100 1 0 empty empty empty -2 -6 0 8 -258699
+-1 -1 2700 1;
+#X text 14 16 Description: Applies a sobel filter to an image. Uses
+two convolution matrix filters.;
+#X obj 14 444 color;
+#X obj 368 95 mtl/gemsWin;
+#X obj 128 325 mtl/colorGrid;
+#N canvas 0 0 469 396 sobel 0;
+#X floatatom 134 94 3 -1 2 0 - - -;
+#X floatatom 157 94 3 -1 2 0 - - -;
+#X floatatom 180 94 3 -1 2 0 - - -;
+#X floatatom 134 108 3 -1 2 0 - - -;
+#X floatatom 157 108 3 -1 2 0 - - -;
+#X floatatom 180 108 3 -1 2 0 - - -;
+#X floatatom 134 122 3 -1 2 0 - - -;
+#X floatatom 157 122 3 -1 2 0 - - -;
+#X floatatom 180 122 3 -1 2 0 - - -;
+#N canvas 0 22 454 473 pack 0;
+#X obj 69 169 pack 0 0 0 0 0 0 0 0 0;
+#X obj 69 139 t b f;
+#X obj 106 139 t b f;
+#X obj 143 139 t b f;
+#X obj 180 139 t b f;
+#X obj 217 139 t b f;
+#X obj 254 139 t b f;
+#X obj 291 139 t b f;
+#X obj 328 139 t b f;
+#X obj 32 111 inlet;
+#X obj 69 111 inlet;
+#X obj 106 111 inlet;
+#X obj 143 111 inlet;
+#X obj 180 111 inlet;
+#X obj 217 111 inlet;
+#X obj 254 111 inlet;
+#X obj 291 111 inlet;
+#X obj 328 111 inlet;
+#X obj 61 349 outlet;
+#X obj 274 355 outlet;
+#X obj 71 190 t l l;
+#X obj 257 232 unpack 0 0 0 0 0 0 0 0 0;
+#X obj 399 256 +;
+#X obj 358 256 +;
+#X obj 318 256 +;
+#X obj 277 256 +;
+#X obj 379 286 +;
+#X obj 298 286 +;
+#X obj 349 316 +;
+#X obj 268 316 +;
+#X obj 58 294 select 0;
+#X msg 48 323 1;
+#X obj 132 391 /;
+#X msg 132 365 1 \$1;
+#X connect 0 0 20 0;
+#X connect 1 0 0 0;
+#X connect 1 1 0 1;
+#X connect 2 0 0 0;
+#X connect 2 1 0 2;
+#X connect 3 0 0 0;
+#X connect 3 1 0 3;
+#X connect 4 0 0 0;
+#X connect 4 1 0 4;
+#X connect 5 0 0 0;
+#X connect 5 1 0 5;
+#X connect 6 0 0 0;
+#X connect 6 1 0 6;
+#X connect 7 0 0 0;
+#X connect 7 1 0 7;
+#X connect 8 0 0 0;
+#X connect 8 1 0 8;
+#X connect 9 0 0 0;
+#X connect 10 0 1 0;
+#X connect 11 0 2 0;
+#X connect 12 0 3 0;
+#X connect 13 0 4 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 20 0 21 0;
+#X connect 20 1 19 0;
+#X connect 21 0 29 0;
+#X connect 21 1 25 0;
+#X connect 21 2 25 1;
+#X connect 21 3 24 0;
+#X connect 21 4 24 1;
+#X connect 21 5 23 0;
+#X connect 21 6 23 1;
+#X connect 21 7 22 0;
+#X connect 21 8 22 1;
+#X connect 22 0 26 1;
+#X connect 23 0 26 0;
+#X connect 24 0 27 1;
+#X connect 25 0 27 0;
+#X connect 26 0 28 1;
+#X connect 27 0 28 0;
+#X connect 28 0 29 1;
+#X connect 29 0 30 0;
+#X connect 30 0 31 0;
+#X connect 30 1 33 0;
+#X connect 31 0 18 0;
+#X connect 32 0 18 0;
+#X connect 33 0 32 0;
+#X restore 113 136 pd pack 9 . . .;
+#X obj 80 178 pix_convolve 3 3;
+#X floatatom 127 157 5 0 0 1 scale - -;
+#N canvas 491 349 613 313 unpack 0;
+#X obj 60 270 outlet;
+#X obj 111 270 outlet;
+#X obj 164 270 outlet;
+#X obj 215 270 outlet;
+#X obj 266 270 outlet;
+#X obj 317 270 outlet;
+#X obj 370 270 outlet;
+#X obj 421 270 outlet;
+#X obj 471 271 outlet;
+#X obj 179 173 unpack 0 0 0 0 0 0 0 0 0;
+#X obj 130 13 inlet;
+#X msg 125 83 -1 0 1 -2 0 2 -1 0 1;
+#X msg 156 107 1 2 1 0 0 0 -1 -2 -1;
+#X obj 130 40 sel sobel1 sobel2;
+#X connect 9 0 0 0;
+#X connect 9 1 1 0;
+#X connect 9 2 2 0;
+#X connect 9 3 3 0;
+#X connect 9 4 4 0;
+#X connect 9 5 5 0;
+#X connect 9 6 6 0;
+#X connect 9 7 7 0;
+#X connect 9 8 8 0;
+#X connect 10 0 13 0;
+#X connect 11 0 9 0;
+#X connect 12 0 9 0;
+#X connect 13 0 11 0;
+#X connect 13 1 12 0;
+#X restore 109 75 pd unpack 9 . . .;
+#X floatatom 142 258 3 -1 2 0 - - -;
+#X floatatom 165 258 3 -1 2 0 - - -;
+#X floatatom 188 258 3 -1 2 0 - - -;
+#X floatatom 142 272 3 -1 2 0 - - -;
+#X floatatom 165 272 3 -1 2 0 - - -;
+#X floatatom 188 272 3 -1 2 0 - - -;
+#X floatatom 142 286 3 -1 2 0 - - -;
+#X floatatom 165 286 3 -1 2 0 - - -;
+#X floatatom 188 286 3 -1 2 0 - - -;
+#N canvas 0 22 454 473 pack 0;
+#X obj 69 169 pack 0 0 0 0 0 0 0 0 0;
+#X obj 69 139 t b f;
+#X obj 106 139 t b f;
+#X obj 143 139 t b f;
+#X obj 180 139 t b f;
+#X obj 217 139 t b f;
+#X obj 254 139 t b f;
+#X obj 291 139 t b f;
+#X obj 328 139 t b f;
+#X obj 32 111 inlet;
+#X obj 69 111 inlet;
+#X obj 106 111 inlet;
+#X obj 143 111 inlet;
+#X obj 180 111 inlet;
+#X obj 217 111 inlet;
+#X obj 254 111 inlet;
+#X obj 291 111 inlet;
+#X obj 328 111 inlet;
+#X obj 61 349 outlet;
+#X obj 274 355 outlet;
+#X obj 71 190 t l l;
+#X obj 257 232 unpack 0 0 0 0 0 0 0 0 0;
+#X obj 399 256 +;
+#X obj 358 256 +;
+#X obj 318 256 +;
+#X obj 277 256 +;
+#X obj 379 286 +;
+#X obj 298 286 +;
+#X obj 349 316 +;
+#X obj 268 316 +;
+#X obj 58 294 select 0;
+#X msg 48 323 1;
+#X obj 132 391 /;
+#X msg 132 365 1 \$1;
+#X connect 0 0 20 0;
+#X connect 1 0 0 0;
+#X connect 1 1 0 1;
+#X connect 2 0 0 0;
+#X connect 2 1 0 2;
+#X connect 3 0 0 0;
+#X connect 3 1 0 3;
+#X connect 4 0 0 0;
+#X connect 4 1 0 4;
+#X connect 5 0 0 0;
+#X connect 5 1 0 5;
+#X connect 6 0 0 0;
+#X connect 6 1 0 6;
+#X connect 7 0 0 0;
+#X connect 7 1 0 7;
+#X connect 8 0 0 0;
+#X connect 8 1 0 8;
+#X connect 9 0 0 0;
+#X connect 10 0 1 0;
+#X connect 11 0 2 0;
+#X connect 12 0 3 0;
+#X connect 13 0 4 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 20 0 21 0;
+#X connect 20 1 19 0;
+#X connect 21 0 29 0;
+#X connect 21 1 25 0;
+#X connect 21 2 25 1;
+#X connect 21 3 24 0;
+#X connect 21 4 24 1;
+#X connect 21 5 23 0;
+#X connect 21 6 23 1;
+#X connect 21 7 22 0;
+#X connect 21 8 22 1;
+#X connect 22 0 26 1;
+#X connect 23 0 26 0;
+#X connect 24 0 27 1;
+#X connect 25 0 27 0;
+#X connect 26 0 28 1;
+#X connect 27 0 28 0;
+#X connect 28 0 29 1;
+#X connect 29 0 30 0;
+#X connect 30 0 31 0;
+#X connect 30 1 33 0;
+#X connect 31 0 18 0;
+#X connect 32 0 18 0;
+#X connect 33 0 32 0;
+#X restore 121 300 pd pack 9 . . .;
+#X obj 88 342 pix_convolve 3 3;
+#X floatatom 135 321 5 0 0 1 scale - -;
+#N canvas 411 349 617 317 unpack 0;
+#X obj 60 270 outlet;
+#X obj 111 270 outlet;
+#X obj 164 270 outlet;
+#X obj 215 270 outlet;
+#X obj 266 270 outlet;
+#X obj 317 270 outlet;
+#X obj 370 270 outlet;
+#X obj 421 270 outlet;
+#X obj 471 271 outlet;
+#X obj 179 173 unpack 0 0 0 0 0 0 0 0 0;
+#X obj 130 13 inlet;
+#X msg 125 83 -1 0 1 -2 0 2 -1 0 1;
+#X msg 156 107 1 2 1 0 0 0 -1 -2 -1;
+#X obj 130 40 sel sobel1 sobel2;
+#X connect 9 0 0 0;
+#X connect 9 1 1 0;
+#X connect 9 2 2 0;
+#X connect 9 3 3 0;
+#X connect 9 4 4 0;
+#X connect 9 5 5 0;
+#X connect 9 6 6 0;
+#X connect 9 7 7 0;
+#X connect 9 8 8 0;
+#X connect 10 0 13 0;
+#X connect 11 0 9 0;
+#X connect 12 0 9 0;
+#X connect 13 0 11 0;
+#X connect 13 1 12 0;
+#X restore 117 239 pd unpack 9 . . .;
+#X msg 252 209 symbol sobel2;
+#X msg 246 54 symbol sobel1;
+#X obj 382 103 loadbang;
+#X obj 39 104 inlet;
+#X obj 88 374 outlet;
+#X connect 0 0 9 0;
+#X connect 1 0 9 1;
+#X connect 2 0 9 2;
+#X connect 3 0 9 3;
+#X connect 4 0 9 4;
+#X connect 5 0 9 5;
+#X connect 6 0 9 6;
+#X connect 7 0 9 7;
+#X connect 8 0 9 8;
+#X connect 9 0 11 0;
+#X connect 9 1 10 2;
+#X connect 10 0 23 0;
+#X connect 11 0 10 1;
+#X connect 12 0 0 0;
+#X connect 12 1 1 0;
+#X connect 12 2 2 0;
+#X connect 12 3 3 0;
+#X connect 12 4 4 0;
+#X connect 12 5 5 0;
+#X connect 12 6 6 0;
+#X connect 12 7 7 0;
+#X connect 12 8 8 0;
+#X connect 13 0 22 0;
+#X connect 14 0 22 1;
+#X connect 15 0 22 2;
+#X connect 16 0 22 3;
+#X connect 17 0 22 4;
+#X connect 18 0 22 5;
+#X connect 19 0 22 6;
+#X connect 20 0 22 7;
+#X connect 21 0 22 8;
+#X connect 22 0 24 0;
+#X connect 22 1 23 2;
+#X connect 23 0 30 0;
+#X connect 24 0 23 1;
+#X connect 25 0 13 0;
+#X connect 25 1 14 0;
+#X connect 25 2 15 0;
+#X connect 25 3 16 0;
+#X connect 25 4 17 0;
+#X connect 25 5 18 0;
+#X connect 25 6 19 0;
+#X connect 25 7 20 0;
+#X connect 25 8 21 0;
+#X connect 26 0 25 0;
+#X connect 27 0 12 0;
+#X connect 28 0 27 0;
+#X connect 28 0 26 0;
+#X connect 29 0 10 0;
+#X restore 14 295 pd sobel;
+#X obj 18 195 mtl/gemsMovies;
+#X obj 91 113 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X text 115 110 Load movie;
+#X obj 400 16 import Gem;
+#X msg 101 142 1;
+#X text 131 140 Play it;
+#X connect 0 0 17 0;
+#X connect 1 0 13 0;
+#X connect 2 0 1 0;
+#X connect 3 0 6 0;
+#X connect 4 0 3 1;
+#X connect 5 0 2 0;
+#X connect 6 0 16 0;
+#X connect 7 0 6 0;
+#X connect 8 0 3 0;
+#X connect 9 0 14 0;
+#X connect 11 0 4 0;
+#X connect 13 0 10 0;
+#X connect 15 0 13 1;
+#X connect 16 0 2 0;
+#X connect 17 0 3 0;
+#X connect 18 0 17 1;
+#X connect 21 0 17 2;
diff --git a/fibonacci-help.pd b/fibonacci-help.pd
new file mode 100644
index 0000000..5a54915
--- /dev/null
+++ b/fibonacci-help.pd
@@ -0,0 +1,8 @@
+#N canvas 0 0 352 182 10;
+#X floatatom 106 87 9 0 0 0 - - -;
+#X floatatom 106 135 9 0 0 0 - - -;
+#X text 17 20 Description: Gets a number in the Fibonacci serie;
+#X obj 106 111 mtl/fibonacci;
+#X text 18 36 tags: math;
+#X connect 0 0 3 0;
+#X connect 3 0 1 0;
diff --git a/fibonacci.pd b/fibonacci.pd
new file mode 100644
index 0000000..8bf3946
--- /dev/null
+++ b/fibonacci.pd
@@ -0,0 +1,29 @@
+#N canvas 967 369 509 554 10;
+#X obj 40 35 inlet;
+#X obj 40 81 max 0;
+#X obj 65 145 until;
+#X obj 40 445 outlet;
+#X obj 40 59 i;
+#X obj 40 423 f;
+#X obj 76 211 f 1;
+#X obj 202 199 + 0;
+#X obj 200 172 t f f;
+#X msg 117 148 1;
+#X msg 155 144 0;
+#X obj 40 103 t b f b b;
+#X connect 0 0 4 0;
+#X connect 1 0 11 0;
+#X connect 2 0 6 0;
+#X connect 4 0 1 0;
+#X connect 5 0 3 0;
+#X connect 6 0 8 0;
+#X connect 6 0 5 1;
+#X connect 7 0 6 1;
+#X connect 8 0 7 1;
+#X connect 8 1 7 0;
+#X connect 9 0 6 1;
+#X connect 10 0 7 1;
+#X connect 11 0 5 0;
+#X connect 11 1 2 0;
+#X connect 11 2 9 0;
+#X connect 11 3 10 0;
diff --git a/fileBrowser-help.pd b/fileBrowser-help.pd
new file mode 100644
index 0000000..813527d
--- /dev/null
+++ b/fileBrowser-help.pd
@@ -0,0 +1,39 @@
+#N canvas 1145 13 741 557 10;
+#X obj 255 113 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X symbolatom 53 479 80 0 0 0 - - -;
+#X obj 53 503 print;
+#X text 75 24 Description: Nice file browser.;
+#X text 262 205 <- Drag the slider to display all the contents of a
+folder.;
+#X text 271 177 - Files are white \, folders are grey!;
+#X floatatom 58 112 5 0 0 0 - - -;
+#X text 45 91 You can select files by index.;
+#X floatatom 392 273 5 0 0 1 size - -;
+#X obj 316 323 pack 0 10;
+#X obj 392 293 t b a;
+#X floatatom 313 276 5 0 2 1 font - -;
+#X msg 316 346 text.font \$1 \$2;
+#X msg 318 379 select.colorRGB 125 125 125;
+#X text 505 381 Change the select color;
+#X msg 318 405 select.colorRGB 0 125 125;
+#X msg 204 111 clear;
+#X text 287 109 <- click the bang (or click on the grey bar) to select
+the folder to be browsed.;
+#X text 300 237 You can use any of gBrowser's right inlet options.
+See gBrowser's help for more information.;
+#X obj 53 160 mtl/fileBrowser;
+#X text 75 38 tags: ui file;
+#X connect 0 0 19 0;
+#X connect 1 0 2 0;
+#X connect 6 0 19 0;
+#X connect 8 0 10 0;
+#X connect 9 0 12 0;
+#X connect 10 0 9 0;
+#X connect 10 1 9 1;
+#X connect 11 0 9 0;
+#X connect 12 0 19 1;
+#X connect 13 0 19 1;
+#X connect 15 0 19 1;
+#X connect 16 0 19 0;
+#X connect 19 0 1 0;
diff --git a/fileBrowser.pd b/fileBrowser.pd
new file mode 100644
index 0000000..e1de285
--- /dev/null
+++ b/fileBrowser.pd
@@ -0,0 +1,142 @@
+#N canvas 1083 26 1009 673 10;
+#X obj 112 -52 inlet;
+#X obj 227 800 sel folder;
+#X msg 226 820 1;
+#X obj 53 923 outlet;
+#X msg 282 822 0;
+#X obj 351 -84 loadbang;
+#X msg 590 782 label \$1;
+#X msg 339 320 clear;
+#X obj 170 860 zexy/demultiplex 0 1;
+#X msg 346 806 0;
+#X obj 294 900 s \$0top;
+#X obj 127 -13 r \$0top;
+#X obj 96 376 sel folder;
+#X obj 18 326 t s s;
+#X obj 757 486 symbol;
+#X obj 854 583 s \$0top;
+#X obj 420 809 s \$0top;
+#X obj 141 165 t a a a b;
+#X obj 653 714 makefilename .../%s;
+#X obj 283 536 vsl 15 115 0 175 0 0 \$0slider_s \$0slider_r empty 0
+-8 0 8 -1 -262144 -1 11400 0;
+#X obj 101 534 hradio 15 1 0 12 \$0hr_0_s \$0hr_0_r empty 2 8 0 10
+-1 -1 -262144 0;
+#X obj 101 549 hradio 15 1 0 12 \$0hr_1_s \$0hr_1_r empty 2 8 0 10
+-1 -1 -262144 1;
+#X obj 101 564 hradio 15 1 0 12 \$0hr_2_s \$0hr_2_r empty 2 8 0 10
+-1 -1 -262144 1;
+#X obj 101 579 hradio 15 1 0 12 \$0hr_3_s \$0hr_3_r empty 2 8 0 10
+-1 -1 -262144 1;
+#X obj 101 594 hradio 15 1 0 12 \$0hr_4_s \$0hr_4_r empty 2 8 0 10
+-1 -1 -262144 1;
+#X obj 101 609 hradio 15 1 0 12 \$0hr_5_s \$0hr_5_r empty 2 8 0 10
+-1 -1 -262144 2;
+#X obj 101 624 hradio 15 1 0 12 \$0hr_6_s \$0hr_6_r empty 2 8 0 10
+-1 -1 -262144 2;
+#X obj 101 639 hradio 15 1 0 12 \$0hr_7_s \$0hr_7_r empty 2 8 0 10
+-1 -1 -262144 2;
+#X obj 101 517 hradio 15 1 0 13 \$0label_radio_s \$0label_radio_r empty
+2 8 0 8 -1 -1 -262144 0;
+#X obj 204 752 t a a;
+#X msg 141 413 color -1.31586e+07;
+#X msg 272 384 color -1.67772e+07;
+#X msg 9 405 file \$1;
+#X obj 356 -3 t b a;
+#X obj 335 68 symbol;
+#X obj 260 14 delay 500;
+#X obj 120 125 t a b;
+#X obj 318 182 t b b;
+#X obj 751 -36 inlet;
+#X obj 286 110 route clear patterns pattern configure;
+#X obj 280 40 spigot 1;
+#X msg 342 39 0;
+#X obj 502 155 tof/path;
+#X obj 87 88 tof/folderpanel;
+#X obj 356 -30 tof/path;
+#X obj 94 340 hcs/file_type;
+#X obj 537 675 zexy/demultiplex 0 1;
+#X obj 345 667 ./gBrowser \$0;
+#X obj 243 776 hcs/file_type;
+#X obj 94 229 zexy/makesymbol %s/*;
+#X msg 453 724 clear;
+#X obj 40 262 hcs/folder_list .;
+#X obj 99 46 route bang float;
+#X obj 473 331 hcs/split_path;
+#X msg 122 203 symbol ..;
+#X obj 477 658 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 62 199 t b a b;
+#X obj 282 721 route ..;
+#X obj 101 517 cnv 15 197 15 empty \$0hider empty 3 9 0 8 -128992 -262144
+0;
+#X obj 511 627 ./shrinkSymbol -20;
+#X connect 0 0 52 0;
+#X connect 1 0 2 0;
+#X connect 1 1 4 0;
+#X connect 2 0 8 1;
+#X connect 4 0 8 1;
+#X connect 5 0 44 0;
+#X connect 6 0 47 1;
+#X connect 7 0 47 1;
+#X connect 8 0 3 0;
+#X connect 8 1 10 0;
+#X connect 9 0 8 1;
+#X connect 11 0 52 0;
+#X connect 12 0 30 0;
+#X connect 12 1 31 0;
+#X connect 13 0 32 0;
+#X connect 13 1 45 0;
+#X connect 14 0 15 0;
+#X connect 17 0 56 0;
+#X connect 17 1 53 0;
+#X connect 17 2 59 0;
+#X connect 17 3 7 0;
+#X connect 18 0 6 0;
+#X connect 29 0 8 0;
+#X connect 29 1 48 0;
+#X connect 30 0 47 1;
+#X connect 31 0 47 1;
+#X connect 32 0 47 1;
+#X connect 33 0 35 0;
+#X connect 33 1 34 1;
+#X connect 34 0 17 0;
+#X connect 35 0 40 0;
+#X connect 36 0 17 0;
+#X connect 36 1 41 0;
+#X connect 37 0 7 0;
+#X connect 37 1 41 0;
+#X connect 38 0 47 1;
+#X connect 39 0 37 0;
+#X connect 39 3 47 1;
+#X connect 39 4 42 0;
+#X connect 40 0 34 0;
+#X connect 41 0 40 1;
+#X connect 42 0 36 0;
+#X connect 43 0 36 0;
+#X connect 44 0 33 0;
+#X connect 45 0 12 0;
+#X connect 45 1 31 0;
+#X connect 46 0 6 0;
+#X connect 46 1 18 0;
+#X connect 47 0 57 0;
+#X connect 47 1 16 0;
+#X connect 48 0 1 0;
+#X connect 48 1 9 0;
+#X connect 49 0 51 0;
+#X connect 50 0 47 1;
+#X connect 51 0 13 0;
+#X connect 52 0 43 0;
+#X connect 52 1 47 0;
+#X connect 52 2 39 0;
+#X connect 53 0 14 1;
+#X connect 54 0 47 1;
+#X connect 55 0 47 1;
+#X connect 56 0 47 1;
+#X connect 56 1 49 0;
+#X connect 56 2 54 0;
+#X connect 57 0 14 0;
+#X connect 57 1 29 0;
+#X connect 59 0 46 0;
+#X connect 59 1 46 1;
+#X coords 0 -1 1 1 198 155 1 100 500;
diff --git a/filterPeakSig~-help.pd b/filterPeakSig~-help.pd
new file mode 100644
index 0000000..7eb3168
--- /dev/null
+++ b/filterPeakSig~-help.pd
@@ -0,0 +1,65 @@
+#N canvas 553 188 617 442 10;
+#X text 423 2 Version: 2007-09-15;
+#X text 423 17 Author: Roman Haefeli;
+#X text 26 3 Description: Peakfilter with signal frequency and Q control
+;
+#X obj 350 50 cnv 15 200 100 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X text 355 55 SYNOPSIS;
+#X text 27 395 Comment: modulate q with a pad-synth as input to get
+nice sounds;
+#X obj 30 247 mtl/out~;
+#X obj 31 44 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1
+;
+#N canvas 5 185 450 300 generate~ 0;
+#X obj 32 213 osc~ 200;
+#X obj 32 89 metro 400;
+#X obj 32 175 mtof;
+#X obj 104 195 mtof;
+#X obj 32 132 + 20;
+#X obj 32 111 random 70;
+#X floatatom 83 69 5 0 0 0 - - -;
+#X obj 32 261 outlet~;
+#X obj 103 261 outlet~;
+#X obj 30 14 inlet;
+#X obj 104 175 mtl/closestNote 0 2 4 7 9;
+#X obj 104 234 *~;
+#X obj 31 234 *~;
+#X obj 104 214 osc~ 100;
+#X obj 32 155 mtl/closestNote 0 2 4 7 9;
+#X connect 0 0 12 0;
+#X connect 1 0 5 0;
+#X connect 2 0 0 0;
+#X connect 3 0 13 0;
+#X connect 4 0 10 0;
+#X connect 4 0 14 0;
+#X connect 5 0 4 0;
+#X connect 6 0 1 1;
+#X connect 9 0 1 0;
+#X connect 9 0 11 1;
+#X connect 9 0 12 1;
+#X connect 10 0 3 0;
+#X connect 11 0 8 0;
+#X connect 12 0 7 0;
+#X connect 13 0 11 0;
+#X connect 14 0 2 0;
+#X restore 31 69 pd generate~;
+#X obj 199 248 mtl/spectrum~;
+#X obj 199 98 mtl/spectrum~;
+#X text 354 79 inlet0-1: signal (input);
+#X text 354 96 inlet2: param;
+#X text 354 113 outlet0-1: signal (output);
+#X obj 30 210 mtl/filterPeakSig~ /id fps;
+#X obj 353 160 hsl 100 15 0 1 0 0 \$0/fps/wet \$0/fps/wet_ /fps/wet
+105 7 0 8 -262144 -1 -1 9900 1;
+#X obj 353 180 hsl 100 15 1 1000 0 0 \$0/fps/frequency \$0/fps/frequency_
+/fps/frequency 105 7 0 8 -262144 -1 -1 1900 1;
+#X obj 353 200 hsl 100 15 0 100 0 0 \$0/fps/q \$0/fps/q_ /fps/q 105
+7 0 8 -262144 -1 -1 6400 1;
+#X connect 7 0 8 0;
+#X connect 8 0 14 0;
+#X connect 8 1 10 0;
+#X connect 8 1 14 1;
+#X connect 14 0 6 0;
+#X connect 14 1 9 0;
+#X connect 14 1 6 1;
diff --git a/filterPeakSig~.pd b/filterPeakSig~.pd
new file mode 100644
index 0000000..387c9d6
--- /dev/null
+++ b/filterPeakSig~.pd
@@ -0,0 +1,211 @@
+#N canvas 814 361 667 473 10;
+#X text 14 413 Version: 2007-09-15;
+#X text 15 430 Author: Roman Haefeli;
+#X text 15 394 taken and modified from 3.audio.examples/H12.peaking.pd
+;
+#N canvas 212 395 643 406 filterl 0;
+#X obj 76 246 cpole~;
+#X obj 77 291 czero~;
+#X obj 343 185 *~ 0.01;
+#X obj 398 185 *~ 0.01;
+#X obj 361 146 cos~;
+#X obj 398 147 cos~;
+#X obj 398 125 -~ 0.25;
+#X obj 378 42 samplerate~;
+#X obj 362 64 /~;
+#X obj 378 19 loadbang;
+#X obj 76 15 inlet~;
+#X obj 77 319 outlet~;
+#X obj 147 212 *~;
+#X obj 175 213 *~;
+#N canvas 497 504 214 352 \$0-lookuptable 0;
+#X obj 52 125 *~ -0.1;
+#X obj 52 146 expr~ exp($v1);
+#X obj 52 167 *~ -1;
+#X obj 52 189 +~ 0.9999;
+#X obj 52 104 line~;
+#X msg 52 83 0.001 \, 100 1000;
+#X obj 8 49 t b b b;
+#X obj 30 226 tabwrite~ \$0-lookup1;
+#X obj 8 272 del 1000;
+#X obj 8 317 switch~;
+#X obj 8 292 0;
+#X obj 8 250 t b b;
+#X obj 38 294 1;
+#X obj 8 14 loadbang;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 7 0;
+#X connect 4 0 0 0;
+#X connect 5 0 4 0;
+#X connect 6 0 11 0;
+#X connect 6 1 7 0;
+#X connect 6 2 5 0;
+#X connect 8 0 10 0;
+#X connect 10 0 9 0;
+#X connect 11 0 8 0;
+#X connect 11 1 12 0;
+#X connect 12 0 9 0;
+#X connect 13 0 6 0;
+#X restore 305 276 pd \$0-lookuptable;
+#X obj 305 298 table \$0-lookup1 44100;
+#X obj 191 115 tabread~ \$0-lookup1;
+#X obj 192 93 *~ 401;
+#X obj 132 -20 mtof~;
+#X obj 210 -29 sig~ 30;
+#X floatatom 210 -54 5 0 0 0 - - -;
+#X obj 134 -87 osc~ 2;
+#X obj 134 -64 +~ 4;
+#X obj 133 -42 *~ 24;
+#X text 209 -73 Q;
+#X text 133 -105 peakfreq;
+#X obj 180 -85 inlet;
+#X obj 223 -85 inlet;
+#X connect 0 0 1 0;
+#X connect 0 1 1 1;
+#X connect 1 0 11 0;
+#X connect 2 0 1 2;
+#X connect 3 0 1 3;
+#X connect 4 0 2 0;
+#X connect 4 0 12 0;
+#X connect 5 0 3 0;
+#X connect 5 0 13 0;
+#X connect 6 0 5 0;
+#X connect 7 0 8 1;
+#X connect 8 0 6 0;
+#X connect 8 0 4 0;
+#X connect 9 0 7 0;
+#X connect 10 0 0 0;
+#X connect 12 0 0 2;
+#X connect 13 0 0 3;
+#X connect 16 0 12 1;
+#X connect 16 0 13 1;
+#X connect 17 0 16 0;
+#X connect 18 0 8 0;
+#X connect 19 0 17 0;
+#X connect 20 0 19 0;
+#X connect 21 0 22 0;
+#X connect 22 0 23 0;
+#X connect 23 0 18 0;
+#X connect 26 0 21 0;
+#X connect 27 0 19 0;
+#X restore 133 93 pd filterl;
+#X obj 88 129 tof/crossfade~ 2;
+#X obj 96 195 outlet~;
+#X obj 146 195 outlet~;
+#X obj 55 12 inlet~;
+#X obj 105 12 inlet~;
+#X obj 405 72 inlet params;
+#X obj 405 94 tof/paramRoute;
+#X obj 405 118 print PARAM_NOTFOUND;
+#X obj 207 128 tof/param /wet 0 /g slider 0 1;
+#X obj 207 171 line~;
+#X msg 207 150 \$1 5;
+#X obj 165 14 tof/param /frequency 2 /g slider 1 1000;
+#X obj 175 34 tof/param /q 0 /g slider 0 100;
+#N canvas 213 427 643 406 filterl 0;
+#X obj 76 246 cpole~;
+#X obj 77 291 czero~;
+#X obj 343 185 *~ 0.01;
+#X obj 398 185 *~ 0.01;
+#X obj 361 146 cos~;
+#X obj 398 147 cos~;
+#X obj 398 125 -~ 0.25;
+#X obj 378 42 samplerate~;
+#X obj 362 64 /~;
+#X obj 378 19 loadbang;
+#X obj 76 15 inlet~;
+#X obj 77 319 outlet~;
+#X obj 147 212 *~;
+#X obj 175 213 *~;
+#N canvas 808 267 214 352 \$0-lookuptable 0;
+#X obj 52 125 *~ -0.1;
+#X obj 52 146 expr~ exp($v1);
+#X obj 52 167 *~ -1;
+#X obj 52 189 +~ 0.9999;
+#X obj 52 104 line~;
+#X msg 52 83 0.001 \, 100 1000;
+#X obj 8 49 t b b b;
+#X obj 8 272 del 1000;
+#X obj 8 317 switch~;
+#X obj 8 292 0;
+#X obj 8 250 t b b;
+#X obj 38 294 1;
+#X obj 8 14 loadbang;
+#X obj 30 226 tabwrite~ \$0-lookup2;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 13 0;
+#X connect 4 0 0 0;
+#X connect 5 0 4 0;
+#X connect 6 0 10 0;
+#X connect 6 1 13 0;
+#X connect 6 2 5 0;
+#X connect 7 0 9 0;
+#X connect 9 0 8 0;
+#X connect 10 0 7 0;
+#X connect 10 1 11 0;
+#X connect 11 0 8 0;
+#X connect 12 0 6 0;
+#X restore 305 276 pd \$0-lookuptable;
+#X obj 192 93 *~ 401;
+#X obj 132 -20 mtof~;
+#X obj 210 -29 sig~ 30;
+#X floatatom 210 -54 5 0 0 0 - - -;
+#X obj 134 -87 osc~ 2;
+#X obj 134 -64 +~ 4;
+#X obj 133 -42 *~ 24;
+#X text 209 -73 Q;
+#X text 133 -105 peakfreq;
+#X obj 180 -85 inlet;
+#X obj 223 -85 inlet;
+#X obj 305 298 table \$0-lookup2 44100;
+#X obj 191 115 tabread~ \$0-lookup2;
+#X connect 0 0 1 0;
+#X connect 0 1 1 1;
+#X connect 1 0 11 0;
+#X connect 2 0 1 2;
+#X connect 3 0 1 3;
+#X connect 4 0 2 0;
+#X connect 4 0 12 0;
+#X connect 5 0 3 0;
+#X connect 5 0 13 0;
+#X connect 6 0 5 0;
+#X connect 7 0 8 1;
+#X connect 8 0 6 0;
+#X connect 8 0 4 0;
+#X connect 9 0 7 0;
+#X connect 10 0 0 0;
+#X connect 12 0 0 2;
+#X connect 13 0 0 3;
+#X connect 15 0 27 0;
+#X connect 16 0 8 0;
+#X connect 17 0 15 0;
+#X connect 18 0 17 0;
+#X connect 19 0 20 0;
+#X connect 20 0 21 0;
+#X connect 21 0 16 0;
+#X connect 24 0 19 0;
+#X connect 25 0 17 0;
+#X connect 27 0 12 1;
+#X connect 27 0 13 1;
+#X restore 203 93 pd filterl;
+#X connect 3 0 4 2;
+#X connect 4 0 5 0;
+#X connect 4 1 6 0;
+#X connect 7 0 4 0;
+#X connect 7 0 3 0;
+#X connect 8 0 4 1;
+#X connect 8 0 17 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 12 0 14 0;
+#X connect 13 0 4 4;
+#X connect 14 0 13 0;
+#X connect 15 0 3 1;
+#X connect 15 0 17 1;
+#X connect 16 0 3 2;
+#X connect 16 0 17 2;
+#X connect 17 0 4 3;
diff --git a/fit-help.pd b/fit-help.pd
new file mode 100644
index 0000000..6ba10fe
--- /dev/null
+++ b/fit-help.pd
@@ -0,0 +1,38 @@
+#N canvas 20 172 541 359 10;
+#X floatatom 152 164 5 0 0 0 - - -;
+#X floatatom 90 300 5 0 0 0 - - -;
+#X msg 188 126 4500;
+#X msg 230 126 2500;
+#X msg 278 128 2000;
+#X msg 150 124 250;
+#X floatatom 122 273 5 0 0 0 - - -;
+#X floatatom 144 249 5 0 0 0 - - -;
+#X text 134 309 Fitted length.;
+#X text 223 229 Ratio of fitted length / reference length.;
+#X text 195 248 Ratio of reference length / fitted length.;
+#X floatatom 174 224 5 0 0 0 - - -;
+#X text 176 272 Multiplier of original length to fit reference length.
+;
+#X text 190 164 Lenght base.;
+#X msg 16 104 300;
+#X msg 52 103 1000;
+#X msg 101 102 3000;
+#X text 11 11 Description: Tries to fit a length with an another based
+on musical 4/4 divisions.;
+#X text 15 81 Length to fit.;
+#X obj 150 101 loadbang;
+#X obj 90 188 mtl/fit;
+#X text 12 43 tags: musical;
+#X connect 0 0 20 1;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 0 0;
+#X connect 14 0 20 0;
+#X connect 15 0 20 0;
+#X connect 16 0 20 0;
+#X connect 19 0 5 0;
+#X connect 20 0 1 0;
+#X connect 20 1 6 0;
+#X connect 20 2 7 0;
+#X connect 20 3 11 0;
diff --git a/fit.pd b/fit.pd
new file mode 100644
index 0000000..e483ccb
--- /dev/null
+++ b/fit.pd
@@ -0,0 +1,113 @@
+#N canvas 0 46 1022 658 10;
+#X obj 417 24 inlet;
+#X obj 545 573 outlet;
+#X obj 750 21 inlet;
+#X obj 622 199 /;
+#X obj 594 350 *;
+#X obj 675 141 t f f;
+#X obj 698 425 /;
+#X obj 726 573 outlet;
+#X obj 813 566 outlet;
+#X obj 568 226 t b f;
+#N canvas 289 98 991 658 closestmult2 0;
+#X msg 403 194 2;
+#X obj 407 228 float;
+#X obj 465 262 moses;
+#X obj 521 193 * 2;
+#X obj 506 374 -;
+#X obj 406 145 t b f f;
+#X obj 517 417 moses;
+#X obj 529 339 t f f;
+#X obj 564 361 * 0.25;
+#X obj 492 480 float;
+#X msg 490 448 bang;
+#X msg 575 445 bang;
+#X obj 581 476 float;
+#X obj 606 501 / 2;
+#X obj 513 286 t f f f;
+#X obj 149 40 inlet;
+#X obj 255 610 outlet;
+#X obj 190 75 moses 1;
+#X obj 66 81 /;
+#X msg 75 53 1.125 \$1;
+#X obj 301 82 t f b;
+#X msg 403 354 1;
+#X obj 226 124 t f b;
+#X msg 365 355 0;
+#X msg 408 578 1 \$1;
+#X obj 412 605 /;
+#X obj 327 534 zexy/demultiplex 0 1;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 14 0;
+#X connect 3 0 1 0;
+#X connect 4 0 6 0;
+#X connect 5 0 0 0;
+#X connect 5 1 2 1;
+#X connect 5 2 4 1;
+#X connect 6 0 10 0;
+#X connect 6 1 11 0;
+#X connect 7 0 4 0;
+#X connect 7 1 8 0;
+#X connect 8 0 6 1;
+#X connect 9 0 26 0;
+#X connect 10 0 9 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 13 0 26 0;
+#X connect 14 0 7 0;
+#X connect 14 1 9 1;
+#X connect 14 2 12 1;
+#X connect 15 0 17 0;
+#X connect 17 0 19 0;
+#X connect 17 1 20 0;
+#X connect 18 0 22 0;
+#X connect 19 0 18 0;
+#X connect 20 0 5 0;
+#X connect 20 1 21 0;
+#X connect 21 0 26 1;
+#X connect 22 0 5 0;
+#X connect 22 1 23 0;
+#X connect 23 0 26 1;
+#X connect 24 0 25 0;
+#X connect 25 0 16 0;
+#X connect 26 0 24 0;
+#X connect 26 1 16 0;
+#X restore 658 264 pd closestmult2;
+#X obj 653 290 t f f;
+#X obj 532 275 f;
+#X obj 778 436 t f f;
+#X obj 895 569 outlet;
+#X obj 873 501 /;
+#X msg 847 470 1 \$1;
+#X obj 581 152 t f b f f;
+#X obj 966 569 outlet;
+#X obj 925 407 expr $f2/$f1;
+#X obj 833 65 loadbang;
+#X obj 705 80 f \$1;
+#X connect 0 0 5 0;
+#X connect 2 0 21 0;
+#X connect 3 0 9 0;
+#X connect 4 0 6 0;
+#X connect 4 0 1 0;
+#X connect 4 0 19 0;
+#X connect 5 0 3 0;
+#X connect 5 1 6 1;
+#X connect 5 1 19 1;
+#X connect 6 0 7 0;
+#X connect 9 0 12 0;
+#X connect 9 1 10 0;
+#X connect 10 0 11 0;
+#X connect 11 0 13 0;
+#X connect 11 1 4 1;
+#X connect 12 0 4 0;
+#X connect 13 0 8 0;
+#X connect 13 1 16 0;
+#X connect 15 0 14 0;
+#X connect 16 0 15 0;
+#X connect 17 0 12 1;
+#X connect 17 2 3 1;
+#X connect 19 0 18 0;
+#X connect 20 0 21 0;
+#X connect 21 0 17 0;
diff --git a/form-help.pd b/form-help.pd
new file mode 100644
index 0000000..a4d60e9
--- /dev/null
+++ b/form-help.pd
@@ -0,0 +1,52 @@
+#N canvas 391 85 515 557 10;
+#X msg 289 125 a a b a;
+#X obj 132 98 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 290 99 loadbang;
+#X msg 282 212 a b a c a b a;
+#X obj 132 124 metro 350;
+#X text 64 -40 Mainly for musical forms;
+#X text 25 -5 Does not use arguments \, but the right inlet;
+#X msg 288 264 a b;
+#X text 25 16 2nd inlet : list representing the form;
+#X msg 287 289 a a b b;
+#X msg 290 149 a b a;
+#X msg 285 333 a b a c a d a;
+#X text 399 333 Rondo;
+#X text 390 125 Ternary;
+#X text 391 212 Arch form;
+#X text 395 266 Binary;
+#X msg 58 134 reset;
+#X msg 52 226 behave \$1;
+#X obj 50 201 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X text 25 37 behave : (1 0) reset when the moment you change the form.
+Defaults to false;
+#X text 25 70 reset : resets to the first part of the form (0);
+#X text 40 390 For instance \, you could have a set of chords for each
+part of the form. You could bang this to get the current part \, looping
+through all the parts of the form you set it to use. You might want
+to use a sequencer with this \, with a different use of it in each
+part.;
+#X msg 284 355 1 2 1 3 1 4 1;
+#X obj 143 196 mtl/form;
+#X text 22 -53 Description: States machine looping through a sequence
+of states;
+#X obj 143 221 cyclone/prepend set;
+#X msg 143 247;
+#X text 25 -21 tags: musical behavior;
+#X connect 0 0 23 1;
+#X connect 1 0 4 0;
+#X connect 2 0 0 0;
+#X connect 3 0 23 1;
+#X connect 4 0 23 0;
+#X connect 7 0 23 1;
+#X connect 9 0 23 1;
+#X connect 10 0 23 1;
+#X connect 11 0 23 1;
+#X connect 16 0 23 0;
+#X connect 17 0 23 0;
+#X connect 18 0 17 0;
+#X connect 22 0 23 1;
+#X connect 23 0 25 0;
+#X connect 25 0 26 0;
diff --git a/form.pd b/form.pd
new file mode 100644
index 0000000..6d332f2
--- /dev/null
+++ b/form.pd
@@ -0,0 +1,44 @@
+#N canvas 370 173 1069 624 10;
+#X obj 37 14 inlet;
+#X obj 193 106 bang;
+#X obj 68 194 f 0;
+#X obj 110 196 + 1;
+#X msg -16 143 0;
+#X text 523 71 form a a b a;
+#X obj 466 25 inlet;
+#X obj 181 341 list;
+#X obj 213 398 list split 1;
+#X obj 181 371 list split;
+#X obj 184 280 t b f;
+#X obj 193 582 outlet;
+#X obj -15 121 bang;
+#X text 292 370 get element at;
+#X obj 74 236 %;
+#X obj 451 82 t a a b;
+#X obj 204 173 spigot;
+#X msg 203 193 1;
+#X obj 54 72 route reset behave;
+#X obj 470 231 zexy/length;
+#X connect 0 0 18 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 0 14 0;
+#X connect 3 0 2 1;
+#X connect 4 0 2 1;
+#X connect 6 0 15 0;
+#X connect 7 0 9 0;
+#X connect 8 0 11 0;
+#X connect 9 1 8 0;
+#X connect 10 0 7 0;
+#X connect 10 1 9 1;
+#X connect 12 0 4 0;
+#X connect 14 0 10 0;
+#X connect 15 0 7 1;
+#X connect 15 1 19 0;
+#X connect 15 2 16 0;
+#X connect 16 0 17 0;
+#X connect 17 0 3 1;
+#X connect 18 0 12 0;
+#X connect 18 1 16 1;
+#X connect 18 2 1 0;
+#X connect 19 0 14 1;
diff --git a/fpsToMs-help.pd b/fpsToMs-help.pd
new file mode 100644
index 0000000..900f348
--- /dev/null
+++ b/fpsToMs-help.pd
@@ -0,0 +1,11 @@
+#N canvas 30 122 422 224 10;
+#X floatatom 144 111 5 0 0 0 - - -;
+#X floatatom 144 163 5 0 0 0 - - -;
+#X text 198 109 ms;
+#X text 195 166 fps;
+#X text 34 20 Description: Converts the number frames per seconds into
+the number of milliseconds between each frame.;
+#X obj 144 137 mtl/fpsToMs;
+#X text 34 58 tags: conversion;
+#X connect 0 0 5 0;
+#X connect 5 0 1 0;
diff --git a/fpsToMs.pd b/fpsToMs.pd
new file mode 100644
index 0000000..cbdd6e5
--- /dev/null
+++ b/fpsToMs.pd
@@ -0,0 +1,8 @@
+#N canvas 0 0 450 300 10;
+#X obj 137 77 inlet;
+#X obj 136 161 /;
+#X msg 141 122 1000 \$1;
+#X obj 134 197 outlet;
+#X connect 0 0 2 0;
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;
diff --git a/framesToSmpte-help.pd b/framesToSmpte-help.pd
new file mode 100644
index 0000000..fac277f
--- /dev/null
+++ b/framesToSmpte-help.pd
@@ -0,0 +1,41 @@
+#N canvas 234 6 892 300 10;
+#X obj 443 9 cnv 15 420 250 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X text 451 58 Left inlet: duration in frames;
+#X text 455 117 Outlets from left to right: duration in hours:minutes:seconds:frames
+;
+#X text 453 88 Right inlet: frame rate (defaults to 25);
+#X text 451 24 Description: Converts a duration of frames into smpte
+time code.;
+#X floatatom 89 48 10 0 0 0 - - -;
+#X floatatom 134 122 5 0 0 1 Minutes - -;
+#X floatatom 24 123 5 0 0 1 Hours - -;
+#X floatatom 240 122 5 0 0 1 Seconds - -;
+#X floatatom 335 122 5 0 0 1 Frames - -;
+#X symbolatom 155 222 15 0 0 0 - - -;
+#X msg 188 33 24;
+#X obj 89 27 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 452 163 Author: February 2006 by oli44 (Tulle). Modified by
+Tof.;
+#X msg 220 33 30;
+#X text 451 193 Comments: Only works with integer frame rates for now.
+;
+#X obj 155 171 pack f f f f;
+#X obj 89 69 mtl/framesToSmpte;
+#X obj 155 196 zexy/list2symbol;
+#X text 455 231 tags: conversion;
+#X connect 5 0 17 0;
+#X connect 6 0 16 1;
+#X connect 7 0 16 0;
+#X connect 8 0 16 2;
+#X connect 9 0 16 3;
+#X connect 11 0 17 1;
+#X connect 12 0 5 0;
+#X connect 14 0 17 1;
+#X connect 16 0 18 0;
+#X connect 17 0 7 0;
+#X connect 17 1 6 0;
+#X connect 17 2 8 0;
+#X connect 17 3 9 0;
+#X connect 18 0 10 0;
diff --git a/framesToSmpte.pd b/framesToSmpte.pd
new file mode 100644
index 0000000..d49bc76
--- /dev/null
+++ b/framesToSmpte.pd
@@ -0,0 +1,33 @@
+#N canvas 522 175 725 591 10;
+#X obj 45 48 inlet;
+#X obj 314 22 inlet framerate;
+#X obj 45 194 / 25;
+#X obj 338 343 mod 25;
+#X obj 27 444 outlet;
+#X obj 137 444 outlet;
+#X obj 243 449 outlet;
+#X obj 338 439 outlet;
+#X obj 65 125 t f f;
+#X obj 54 228 t f f;
+#X obj 34 295 t f f;
+#X obj 245 196 f;
+#X obj 243 334 mod 60;
+#X obj 139 369 mod 60;
+#X obj 48 264 div 60;
+#X obj 41 367 div 60;
+#X connect 0 0 8 0;
+#X connect 1 0 11 0;
+#X connect 2 0 9 0;
+#X connect 3 0 7 0;
+#X connect 8 0 2 0;
+#X connect 8 1 3 0;
+#X connect 9 0 14 0;
+#X connect 9 1 12 0;
+#X connect 10 0 15 0;
+#X connect 10 1 13 0;
+#X connect 11 0 3 1;
+#X connect 11 0 2 1;
+#X connect 12 0 6 0;
+#X connect 13 0 5 0;
+#X connect 14 0 10 0;
+#X connect 15 0 4 0;
diff --git a/frying~-help.pd b/frying~-help.pd
new file mode 100644
index 0000000..7d4154b
--- /dev/null
+++ b/frying~-help.pd
@@ -0,0 +1,16 @@
+#N canvas 2 89 334 241 10;
+#X text 20 28 Comment: Taken from Andy Farnell's work.;
+#X text 21 11 Description: Generates a frying sound.;
+#X obj 21 132 mtl/frying~;
+#X obj 24 91 hsl 128 15 10 10000 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X obj 87 112 hsl 128 15 10 4000 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X text 223 110 base;
+#X text 159 89 range;
+#X obj 20 167 mtl/out~;
+#X text 22 44 tags: synthesize~;
+#X connect 2 0 7 0;
+#X connect 2 0 7 1;
+#X connect 3 0 2 0;
+#X connect 4 0 2 1;
diff --git a/frying~.pd b/frying~.pd
new file mode 100644
index 0000000..5223d86
--- /dev/null
+++ b/frying~.pd
@@ -0,0 +1,52 @@
+#N canvas 240 210 1075 630 10;
+#N canvas 283 211 798 609 fry 0;
+#X obj 341 264 osc~;
+#X obj 351 58 noise~;
+#X obj 340 336 *~;
+#X obj 307 233 +~ 2000;
+#X obj 378 261 *~;
+#X obj 378 286 *~;
+#X obj 340 440 *~ 0.01;
+#X obj 338 463 lop~ 10000;
+#X obj 352 122 bp~ 2.064 0.002;
+#X obj 379 311 *~;
+#X obj 339 370 *~ 0.3;
+#X obj 340 395 hip~ 500;
+#X obj 341 418 hip~ 500;
+#X obj 306 209 *~ 5000;
+#X obj 342 548 outlet~;
+#X obj 340 493 *~ 0.01;
+#X obj 353 177 *~ 3.8;
+#X obj 448 59 inlet range;
+#X obj 574 59 inlet base;
+#X obj 343 518 clip~ -1 1;
+#X connect 0 0 2 0;
+#X connect 1 0 8 0;
+#X connect 2 0 10 0;
+#X connect 3 0 0 0;
+#X connect 4 0 5 0;
+#X connect 4 0 5 1;
+#X connect 5 0 9 0;
+#X connect 5 0 9 1;
+#X connect 6 0 7 0;
+#X connect 7 0 15 0;
+#X connect 8 0 16 0;
+#X connect 9 0 2 1;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 6 0;
+#X connect 13 0 3 0;
+#X connect 15 0 19 0;
+#X connect 16 0 4 0;
+#X connect 16 0 4 1;
+#X connect 16 0 13 0;
+#X connect 17 0 13 1;
+#X connect 18 0 3 1;
+#X connect 19 0 14 0;
+#X restore 151 191 pd fry;
+#X obj 149 341 outlet~;
+#X obj 136 111 inlet;
+#X obj 176 111 inlet;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 1;
diff --git a/gBrowser-help.pd b/gBrowser-help.pd
new file mode 100644
index 0000000..01db77c
--- /dev/null
+++ b/gBrowser-help.pd
@@ -0,0 +1,126 @@
+#N canvas 1024 68 1022 700 10;
+#X obj 299 97 print;
+#X msg 553 -27 clear;
+#X msg 543 -127 label put_your_label;
+#X msg 543 -98 label labelizer;
+#X obj 422 134 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 200 18 5 0 0 0 - - -;
+#X obj 234 210 vsl 15 115 0 175 0 0 \$0slider_s \$0slider_r empty 0
+-8 0 8 -1 -262144 -1 0 0;
+#X obj 52 208 hradio 15 1 0 12 \$0hr_0_s \$0hr_0_r empty 2 8 0 7 -1
+-1 -262144 0;
+#X obj 52 223 hradio 15 1 0 12 \$0hr_1_s \$0hr_1_r empty 2 8 0 7 -1
+-1 -262144 0;
+#X obj 52 238 hradio 15 1 0 12 \$0hr_2_s \$0hr_2_r empty 2 8 0 7 -1
+-1 -262144 0;
+#X obj 52 253 hradio 15 1 0 12 \$0hr_3_s \$0hr_3_r empty 2 8 0 7 -1
+-1 -262144 0;
+#X obj 52 268 hradio 15 1 0 12 \$0hr_4_s \$0hr_4_r empty 2 8 0 7 -1
+-1 -262144 0;
+#X obj 52 283 hradio 15 1 0 12 \$0hr_5_s \$0hr_5_r empty 2 8 0 7 -1
+-1 -262144 0;
+#X obj 52 298 hradio 15 1 0 12 \$0hr_6_s \$0hr_6_r empty 2 8 0 7 -1
+-1 -262144 0;
+#X obj 52 313 hradio 15 1 0 12 \$0hr_7_s \$0hr_7_r empty 2 8 0 7 -1
+-1 -262144 0;
+#X text 547 -146 Change the label;
+#X text 552 -42 Clear the browser;
+#X msg 567 -68 will_be_shown will_be_output \, bang;
+#X floatatom 655 7 5 0 0 1 size - -;
+#X msg 563 134 colorRGB 0 255 0;
+#X text 667 110 Change the color of the next entry;
+#X msg 560 111 colorRGB 0 0 255;
+#X obj 562 51 pack 0 10;
+#X obj 616 26 t b a;
+#X floatatom 540 24 5 0 2 1 font - -;
+#X msg 562 74 text.font \$1 \$2;
+#X msg 567 172 select.colorRGB 125 125 125;
+#X text 748 170 Change the select color;
+#N canvas 57 37 924 659 ADDING_CONTENT 0;
+#X msg 34 -68 bob;
+#X obj 29 363 bng 15 250 50 0 empty empty empty 0 -6 0 8 -4034 -1 -1
+;
+#X msg 75 -66 mom;
+#X obj 221 289 openpanel;
+#X obj 221 262 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 243 260 Add a file;
+#X text 18 -147 There are three modes to adding content:;
+#X obj 29 406 cnv 15 400 30 empty empty empty 20 12 0 14 -258113 -66577
+0;
+#X text 127 133 FILE MODE;
+#X msg 221 319 file \$1;
+#X text 42 407 Everytime you change the content \, you must send a
+bang to update the display!;
+#X text 31 -118 PLAIN MODE;
+#X text 118 152 In file mode \, only the name of the file and not the
+full path is displayed. BUT \, when you select an item \, it will still
+output the full path!;
+#X msg 119 -66 tom;
+#X text 121 -14 TAG MODE;
+#X text 120 189 To use file mode \, prepend the word file to the file
+path to be added.;
+#X text 32 -99 In plain mode \, the message displayed and outputed
+are the same.;
+#X text 122 0 In tag mode \, the first element (the tag) is displayed
+and the rest is outputed.;
+#X msg 127 30 item_displayed items outputed;
+#X msg 163 59 shown hidden;
+#X obj 72 383 outlet;
+#X obj 30 217 t b a;
+#X text 497 181 Also \, all file paths will be split. Only the file
+name will be displayed BUT the whole path will still be output!;
+#X text 499 149 If the file mode is selected \, all spaces in symbols
+will be displayed as "_".;
+#X connect 0 0 21 0;
+#X connect 1 0 20 0;
+#X connect 2 0 21 0;
+#X connect 3 0 9 0;
+#X connect 4 0 3 0;
+#X connect 9 0 21 0;
+#X connect 13 0 21 0;
+#X connect 18 0 21 0;
+#X connect 19 0 21 0;
+#X connect 21 0 1 0;
+#X connect 21 1 20 0;
+#X restore 370 -86 pd ADDING_CONTENT;
+#X text 16 -13 Select items to be outputed by clicking on the gui or
+by selecting by index with the left inlet.;
+#X obj 342 -69 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X text 258 239 <- Use the scroll bar when there are too many items
+;
+#X text 36 -165 description: A little browser GUI (version to include
+in your own GOP abstractions).;
+#X text 45 335 To include a browser GUI in your own GOP abstraction
+\, copy the above graphical objects to your patch. Then create a [mtl/gBrowser
+\$0]. You may modify the graphical details \, but do not change the
+number of elements or the send and receive symbols.;
+#X text 46 409 Clicking on the grey bar will output a bang at mtl/gBrowser's
+right outlet.;
+#X obj 301 32 mtl/gBrowser \$0;
+#X obj 52 192 hradio 15 1 0 11 \$0label_radio_s \$0label_radio_r empty
+2 8 0 8 -1 -1 -262144 0;
+#X obj 52 192 cnv 15 197 15 empty \$0hider empty 3 9 0 8 -128992 -262144
+0;
+#X text 34 -134 tags: ui;
+#X connect 1 0 35 1;
+#X connect 2 0 35 1;
+#X connect 3 0 35 1;
+#X connect 5 0 35 0;
+#X connect 17 0 35 1;
+#X connect 18 0 23 0;
+#X connect 19 0 35 1;
+#X connect 21 0 35 1;
+#X connect 22 0 25 0;
+#X connect 23 0 22 0;
+#X connect 23 1 22 1;
+#X connect 24 0 22 0;
+#X connect 25 0 35 1;
+#X connect 26 0 35 1;
+#X connect 28 0 35 1;
+#X connect 30 0 35 1;
+#X connect 35 0 0 0;
+#X connect 35 1 4 0;
+#X coords 0 0 1 1 285 215 0;
diff --git a/gBrowser.pd b/gBrowser.pd
new file mode 100644
index 0000000..efb3741
--- /dev/null
+++ b/gBrowser.pd
@@ -0,0 +1,438 @@
+#N canvas 1032 0 1001 666 10;
+#X obj 829 775 t f f;
+#X obj 267 5 inlet;
+#X obj 128 1066 outlet;
+#X obj 512 348 t b f;
+#X obj 769 838 abs;
+#X obj 1069 951 +;
+#X obj 240 547 pack s f;
+#X msg 240 570 \$2 label \$1;
+#X obj 1102 833 t b f f;
+#X obj 267 457 -;
+#X obj 7 338 spigot;
+#X msg 151 330 1;
+#X obj 218 475 t s b;
+#X msg 234 499 0;
+#X obj 34 489 -;
+#X msg 40 514 \$1 label;
+#X obj 489 167 +;
+#X obj 1156 866 s \$0display_offset;
+#X obj 652 140 r \$0display_offset;
+#X obj 37 454 r \$0display_offset;
+#X obj 292 351 r \$0display_offset;
+#X obj 841 838 max 0;
+#X obj 640 119 r \$0clicked;
+#X obj 281 916 s \$0clicked;
+#X obj 756 813 - 175;
+#X obj 770 871 expr rint(($f1/175)*$f2);
+#X msg 512 424 175;
+#X obj 757 116 s \$0hradios;
+#X obj 289 649 r \$0hradios;
+#X msg 757 91 label \, color 112 112 0;
+#X obj 644 301 r \$0highlight;
+#X obj 561 950 -;
+#X obj 598 884 r \$0display_offset;
+#X obj 24 544 s \$0hradio;
+#X obj 337 534 r \$0hradio;
+#X obj 666 437 s \$0hradio;
+#X obj 207 297 s \$0selected;
+#X obj 477 828 r \$0selected;
+#X obj 653 1077 s \$0highlight;
+#X obj 214 151 s \$0reset;
+#X obj 757 54 r \$0reset;
+#X obj 583 916 t b f;
+#X obj 511 883 f -1;
+#X obj 490 922 moses 0;
+#X obj 665 790 r \$0reset;
+#X msg 619 839 -1;
+#X obj 615 985 moses 0;
+#X obj 656 1010 moses 12;
+#X obj 659 1037 t f f;
+#X msg 716 1046 -1;
+#X msg 616 1017 -1;
+#X obj 842 810 - 8;
+#X msg 1074 867 8;
+#N canvas 254 159 774 571 label_man 0;
+#X obj 491 8 inlet label;
+#X obj 291 93 symbol;
+#X obj 408 91 t b b;
+#X msg 450 111 symbol;
+#X obj 406 70 r \$0reset;
+#X obj 310 212 s \$1hider;
+#X msg 282 137 label \$1;
+#X connect 0 0 1 0;
+#X connect 1 0 6 0;
+#X connect 2 0 1 0;
+#X connect 2 1 3 0;
+#X connect 3 0 1 1;
+#X connect 4 0 2 0;
+#X connect 6 0 5 0;
+#X restore 436 532 pd label_man;
+#N canvas 1172 48 874 642 coll 0;
+#X obj 16 423 outlet selected;
+#X obj 733 449 outlet length;
+#X obj 579 114 list prepend store;
+#X obj 22 13 inlet selected;
+#X obj 183 23 inlet query;
+#X obj 585 14 inlet add;
+#X obj 587 144 list trim;
+#X obj 172 419 outlet selected_index;
+#X obj 542 436 outlet query_index;
+#X obj 361 424 outlet query;
+#X msg 116 97 0;
+#X obj 277 225 f;
+#X msg 255 102 1;
+#X msg 395 121 length;
+#X obj 492 204 r \$0reset;
+#X msg 497 231 clear;
+#X obj 31 77 t f b;
+#X obj 186 61 t f b;
+#X msg 564 233 0;
+#X obj 593 85 list prepend 0;
+#X msg 74 202 open;
+#X obj 505 57 t b b a;
+#X msg 462 123 2;
+#X obj 607 347 t f f f;
+#X obj 32 45 maxlib/wrap;
+#X obj 189 208 cyclone/coll;
+#C restore;
+#X obj 107 281 zexy/demultiplex 0 1 2;
+#X obj 269 288 zexy/demultiplex 0 1 2;
+#X connect 2 0 6 0;
+#X connect 3 0 24 0;
+#X connect 4 0 17 0;
+#X connect 5 0 21 0;
+#X connect 6 0 25 0;
+#X connect 10 0 11 0;
+#X connect 11 0 26 1;
+#X connect 11 0 27 1;
+#X connect 12 0 11 0;
+#X connect 13 0 25 0;
+#X connect 14 0 15 0;
+#X connect 14 0 18 0;
+#X connect 15 0 25 0;
+#X connect 16 0 25 0;
+#X connect 16 1 10 0;
+#X connect 17 0 25 0;
+#X connect 17 1 12 0;
+#X connect 18 0 19 1;
+#X connect 19 0 2 0;
+#X connect 20 0 25 0;
+#X connect 21 0 13 0;
+#X connect 21 1 22 0;
+#X connect 21 2 19 0;
+#X connect 22 0 11 0;
+#X connect 23 0 1 0;
+#X connect 23 1 19 1;
+#X connect 23 2 24 2;
+#X connect 24 0 16 0;
+#X connect 25 0 26 0;
+#X connect 25 1 27 0;
+#X connect 26 0 0 0;
+#X connect 26 1 9 0;
+#X connect 26 2 23 0;
+#X connect 27 0 7 0;
+#X connect 27 1 8 0;
+#X restore 196 237 pd coll;
+#X obj 181 320 s \$0output;
+#X obj 128 972 r \$0output;
+#X obj 306 35 route bang;
+#X obj 584 723 f;
+#X obj 111 267 list split 1;
+#X obj 185 342 list split 1;
+#X obj 122 517 pack f f;
+#X msg 188 80 bang;
+#X msg 104 536 \$2 color -1 -1 \$1;
+#X obj 368 210 list prepend -1.67772e+07;
+#X obj 35 6 inlet;
+#X obj 576 646 r \$0redraw;
+#X obj 190 913 s \$0redraw;
+#X obj 459 877 f;
+#X obj 655 947 t f f;
+#X obj 589 794 t b f;
+#X obj 565 685 bang;
+#X obj 381 996 outlet;
+#X obj 373 877 b;
+#X obj 1043 1014 s \$0get_labels;
+#X obj 30 133 r \$0get_labels;
+#X obj 44 164 t f f b;
+#X obj 24 111 s \$0redraw;
+#X obj 984 767 r \$0updated;
+#X msg 983 804 set -1;
+#X obj 659 843 t b b;
+#X obj 370 246 s \$0updated;
+#X obj 297 239 t a b;
+#X obj 243 865 t b f b;
+#X obj 287 888 s \$0updated;
+#X obj 901 918 change -1;
+#X obj 107 105 s \$0updated;
+#X obj 87 81 t b b f;
+#N canvas 1213 56 815 508 radio_receives 0;
+#X obj 290 32 route 0 1 2 3 4 5 6 7;
+#X obj 228 4 inlet;
+#X obj 651 7 inlet;
+#X obj 123 91 s \$1hr_0_r;
+#X obj 200 93 s \$1hr_1_r;
+#X obj 274 92 s \$1hr_2_r;
+#X obj 351 91 s \$1hr_3_r;
+#X obj 431 91 s \$1hr_4_r;
+#X obj 507 90 s \$1hr_5_r;
+#X obj 581 90 s \$1hr_6_r;
+#X obj 659 89 s \$1hr_7_r;
+#X connect 0 0 3 0;
+#X connect 0 1 4 0;
+#X connect 0 2 5 0;
+#X connect 0 3 6 0;
+#X connect 0 4 7 0;
+#X connect 0 5 8 0;
+#X connect 0 6 9 0;
+#X connect 0 7 10 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 2 0 4 0;
+#X connect 2 0 5 0;
+#X connect 2 0 6 0;
+#X connect 2 0 7 0;
+#X connect 2 0 8 0;
+#X connect 2 0 9 0;
+#X connect 2 0 10 0;
+#X restore 170 682 pd radio_receives;
+#N canvas 1233 260 815 508 radio_sends 0;
+#X msg 229 133 0;
+#X msg 313 133 1;
+#X msg 358 129 2;
+#X msg 397 131 3;
+#X msg 427 129 4;
+#X msg 469 128 5;
+#X msg 517 145 6;
+#X msg 555 155 7;
+#X obj 373 232 outlet;
+#X obj 123 93 r \$1hr_0_s;
+#X obj 199 92 r \$1hr_1_s;
+#X obj 274 92 r \$1hr_2_s;
+#X obj 351 91 r \$1hr_3_s;
+#X obj 431 91 r \$1hr_4_s;
+#X obj 507 90 r \$1hr_5_s;
+#X obj 583 90 r \$1hr_6_s;
+#X obj 659 89 r \$1hr_7_s;
+#X connect 0 0 8 0;
+#X connect 1 0 8 0;
+#X connect 2 0 8 0;
+#X connect 3 0 8 0;
+#X connect 4 0 8 0;
+#X connect 5 0 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 8 0;
+#X connect 9 0 0 0;
+#X connect 10 0 1 0;
+#X connect 11 0 2 0;
+#X connect 12 0 3 0;
+#X connect 13 0 4 0;
+#X connect 14 0 5 0;
+#X connect 15 0 6 0;
+#X connect 16 0 7 0;
+#X restore 177 806 pd radio_sends;
+#X obj 436 724 r \$1slider_s;
+#X obj 439 582 s \$1label_radio_r;
+#X obj 598 561 s \$1slider_r;
+#X obj 340 847 r \$1label_radio_s;
+#N canvas 1482 229 566 539 DISPLAY_MODES 0;
+#X obj 98 29 inlet;
+#X obj 146 485 outlet;
+#X obj 98 147 list trim;
+#X obj 98 177 route file;
+#X obj 227 301 list split 1;
+#X obj 156 363 zexy/symbol2list;
+#X obj 141 436 zexy/list2symbol _;
+#X obj 30 210 cyclone/tosymbol;
+#X obj 27 234 hcs/split_path;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 7 0;
+#X connect 3 1 4 0;
+#X connect 4 0 5 0;
+#X connect 4 2 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 1 0;
+#X connect 7 0 8 0;
+#X connect 8 1 5 0;
+#X restore 312 416 pd DISPLAY_MODES;
+#N canvas 1482 229 566 539 OUTPUT_MODES 0;
+#X obj 98 29 inlet;
+#X obj 125 488 outlet;
+#X obj 98 147 list trim;
+#X obj 257 367 list trim;
+#X obj 98 177 route file;
+#X obj 287 280 route bang;
+#X obj 361 305 t a b;
+#X obj 211 320 spigot;
+#X msg 394 331 0;
+#X msg 289 305 1;
+#X obj 10 227 zexy/list2symbol;
+#X obj 207 218 list split 1;
+#X connect 0 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 0;
+#X connect 4 0 10 0;
+#X connect 4 1 11 0;
+#X connect 5 0 9 0;
+#X connect 5 1 6 0;
+#X connect 6 0 3 0;
+#X connect 6 1 8 0;
+#X connect 7 0 3 0;
+#X connect 8 0 7 1;
+#X connect 9 0 7 1;
+#X connect 10 0 1 0;
+#X connect 11 0 7 0;
+#X connect 11 1 5 0;
+#X restore 128 1019 pd OUTPUT_MODES;
+#N canvas 0 0 812 389 text.size 0;
+#X obj 138 208 s \$1hr_0_r;
+#X obj 215 210 s \$1hr_1_r;
+#X obj 289 209 s \$1hr_2_r;
+#X obj 366 208 s \$1hr_3_r;
+#X obj 446 208 s \$1hr_4_r;
+#X obj 522 207 s \$1hr_5_r;
+#X obj 596 207 s \$1hr_6_r;
+#X obj 674 206 s \$1hr_7_r;
+#X obj 191 26 inlet;
+#X obj 233 131 t a;
+#X msg 201 71 label_font \$1 \$2;
+#X connect 8 0 10 0;
+#X connect 9 0 0 0;
+#X connect 9 0 1 0;
+#X connect 9 0 2 0;
+#X connect 9 0 3 0;
+#X connect 9 0 4 0;
+#X connect 9 0 5 0;
+#X connect 9 0 6 0;
+#X connect 9 0 7 0;
+#X connect 10 0 9 0;
+#X restore 592 167 pd text.size;
+#X obj 237 62 route clear label color text.font colorRGB select.colorRGB
+;
+#X obj 695 180 t b a;
+#X msg 666 410 \$1 color -1 -1 \$2;
+#X obj 764 260 loadbang;
+#X msg 763 297 255 0 0;
+#X obj 677 373 pack f f;
+#X obj 551 208 ./rgbToNum integer;
+#X obj 752 343 ./rgbToNum integer;
+#X obj 450 761 cyclone/speedlim 100;
+#X obj 1062 918 tof/iterate;
+#X obj 44 37 route bang float;
+#X connect 0 0 51 0;
+#X connect 1 0 57 0;
+#X connect 3 1 0 0;
+#X connect 4 0 25 0;
+#X connect 5 0 74 0;
+#X connect 6 0 7 0;
+#X connect 7 0 88 0;
+#X connect 8 0 52 0;
+#X connect 8 1 5 1;
+#X connect 8 2 17 0;
+#X connect 9 0 6 1;
+#X connect 9 0 61 1;
+#X connect 10 0 14 0;
+#X connect 11 0 10 1;
+#X connect 12 0 6 0;
+#X connect 12 1 13 0;
+#X connect 13 0 10 1;
+#X connect 14 0 15 0;
+#X connect 15 0 33 0;
+#X connect 16 0 54 0;
+#X connect 18 0 16 1;
+#X connect 19 0 14 1;
+#X connect 20 0 9 1;
+#X connect 21 0 25 1;
+#X connect 22 0 16 0;
+#X connect 24 0 4 0;
+#X connect 25 0 85 0;
+#X connect 26 0 92 0;
+#X connect 28 0 88 1;
+#X connect 29 0 27 0;
+#X connect 30 0 102 0;
+#X connect 31 0 69 0;
+#X connect 32 0 41 0;
+#X connect 34 0 88 0;
+#X connect 37 0 68 1;
+#X connect 40 0 29 0;
+#X connect 41 0 42 0;
+#X connect 41 1 31 1;
+#X connect 42 0 43 0;
+#X connect 43 1 31 0;
+#X connect 44 0 80 0;
+#X connect 45 0 42 1;
+#X connect 45 0 68 1;
+#X connect 46 0 50 0;
+#X connect 46 1 47 0;
+#X connect 47 0 48 0;
+#X connect 47 1 49 0;
+#X connect 48 0 38 0;
+#X connect 51 0 21 0;
+#X connect 52 0 106 0;
+#X connect 54 0 59 0;
+#X connect 54 1 36 0;
+#X connect 54 2 60 0;
+#X connect 54 3 9 0;
+#X connect 54 4 3 0;
+#X connect 56 0 95 0;
+#X connect 57 0 26 0;
+#X connect 57 1 97 0;
+#X connect 58 0 70 0;
+#X connect 59 1 55 0;
+#X connect 60 0 61 0;
+#X connect 60 1 94 0;
+#X connect 61 0 63 0;
+#X connect 62 0 39 0;
+#X connect 63 0 88 0;
+#X connect 64 0 82 0;
+#X connect 65 0 107 0;
+#X connect 66 0 71 0;
+#X connect 68 0 42 0;
+#X connect 69 0 46 0;
+#X connect 70 0 68 0;
+#X connect 70 1 24 0;
+#X connect 71 0 58 0;
+#X connect 73 0 72 0;
+#X connect 75 0 76 0;
+#X connect 76 0 10 0;
+#X connect 76 1 54 1;
+#X connect 76 2 11 0;
+#X connect 78 0 79 0;
+#X connect 79 0 85 0;
+#X connect 80 0 45 0;
+#X connect 80 1 79 0;
+#X connect 82 0 54 2;
+#X connect 82 1 81 0;
+#X connect 83 0 67 0;
+#X connect 83 1 23 0;
+#X connect 83 2 84 0;
+#X connect 85 0 8 0;
+#X connect 87 0 77 0;
+#X connect 87 1 86 0;
+#X connect 87 2 54 0;
+#X connect 89 0 83 0;
+#X connect 90 0 105 0;
+#X connect 93 0 73 0;
+#X connect 94 0 12 0;
+#X connect 95 0 2 0;
+#X connect 97 0 39 0;
+#X connect 97 1 53 0;
+#X connect 97 2 64 1;
+#X connect 97 3 96 0;
+#X connect 97 4 103 0;
+#X connect 97 5 98 0;
+#X connect 97 6 64 0;
+#X connect 98 0 26 0;
+#X connect 98 1 104 0;
+#X connect 99 0 35 0;
+#X connect 100 0 101 0;
+#X connect 101 0 104 0;
+#X connect 102 0 99 0;
+#X connect 103 0 64 1;
+#X connect 104 0 102 1;
+#X connect 105 0 58 0;
+#X connect 106 0 5 0;
+#X connect 107 1 87 0;
+#X coords 0 0 1 1 198 138 0;
diff --git a/gateNoise~-help.pd b/gateNoise~-help.pd
new file mode 100644
index 0000000..faff14c
--- /dev/null
+++ b/gateNoise~-help.pd
@@ -0,0 +1,83 @@
+#N canvas 463 121 588 450 10;
+#X obj 128 196 nbx 5 14 -1e+37 1e+37 0 0 empty empty right 0 -8 0 10
+-262144 -1 -1 96.9235 256;
+#X obj 16 135 *~;
+#X obj 33 114 osc~ 2;
+#X obj 104 135 *~;
+#X obj 104 92 osc~ 240;
+#X obj 121 114 osc~ 4;
+#N canvas 172 333 450 300 env 0;
+#X obj 279 93 env~ 16384 8192;
+#X obj 279 49 inlet~;
+#X obj 279 177 outlet;
+#X text 294 123 don't know why;
+#X obj 279 144 + 2.94;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 4 0 2 0;
+#X restore 114 161 pd env;
+#N canvas 173 365 450 300 env 0;
+#X obj 279 93 env~ 16384 8192;
+#X obj 279 49 inlet~;
+#X obj 279 177 outlet;
+#X text 294 123 don't know why;
+#X obj 279 144 + 2.4;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 4 0 2 0;
+#X restore 28 163 pd env;
+#X obj 40 197 nbx 5 14 -1e+37 1e+37 0 0 empty empty left 0 -8 0 10
+-262144 -1 -1 96.6015 256;
+#X obj 43 256 bonk~;
+#X obj 143 255 bonk~;
+#X text 189 255 only an idea;
+#X msg 70 279 trigger;
+#X msg 170 278 trigger;
+#X obj 15 92 osc~ 160;
+#X obj 16 223 mtl/gateNoise~ /id gatenoise;
+#X obj 170 299 mtl/clap~;
+#X obj 70 299 mtl/clap~;
+#X obj 16 380 mtl/out~;
+#X text 13 10 Description: a noise gate (cut off volume below the threshold).
+useful for removing noise from an incoming signal or making breakbeat.
+;
+#X text 13 53 tags: mix~;
+#X obj 299 88 hsl 100 15 0 1 0 0 \$0/gatenoise/wet \$0/gatenoise/wet_
+/gatenoise/wet 105 7 0 8 -262144 -1 -1 9900 1;
+#X obj 299 118 hsl 100 15 0 100 0 0 \$0/gatenoise/thresholdleft \$0/gatenoise/thresholdleft_
+/gatenoise/thresholdleft 105 7 0 8 -262144 -1 -1 0 1;
+#X obj 299 138 hsl 100 15 0 100 0 0 \$0/gatenoise/thresholdright \$0/gatenoise/thresholdright_
+/gatenoise/thresholdright 105 7 0 8 -262144 -1 -1 0 1;
+#X obj 299 158 hsl 100 15 0 500 0 0 \$0/gatenoise/attackleft \$0/gatenoise/attackleft_
+/gatenoise/attackleft 105 7 0 8 -262144 -1 -1 20 1;
+#X obj 299 178 hsl 100 15 0 500 0 0 \$0/gatenoise/attackright \$0/gatenoise/attackright_
+/gatenoise/attackright 105 7 0 8 -262144 -1 -1 20 1;
+#X obj 299 198 hsl 100 15 0 5000 0 0 \$0/gatenoise/releaseleft \$0/gatenoise/releaseleft_
+/gatenoise/releaseleft 105 7 0 8 -262144 -1 -1 396 1;
+#X obj 299 218 hsl 100 15 0 5000 0 0 \$0/gatenoise/releaseright \$0/gatenoise/releaseright_
+/gatenoise/releaseright 105 7 0 8 -262144 -1 -1 396 1;
+#X obj 289 298 tgl 15 0 \$0/gatenoise/automatic \$0/gatenoise/automatic_
+/gatenoise/automatic 17 7 0 8 -262144 -1 -1 1 1;
+#X obj 299 268 hsl 100 15 0 100 0 0 \$0/gatenoise/automatic+- \$0/gatenoise/automatic+-_
+/gatenoise/automatic+- 105 7 0 8 -262144 -1 -1 9900 1;
+#X obj 69 320 mtl/out~ 30;
+#X connect 1 0 7 0;
+#X connect 1 0 15 0;
+#X connect 2 0 1 1;
+#X connect 3 0 6 0;
+#X connect 3 0 15 1;
+#X connect 4 0 3 0;
+#X connect 5 0 3 1;
+#X connect 6 0 0 0;
+#X connect 7 0 8 0;
+#X connect 9 1 12 0;
+#X connect 10 1 13 0;
+#X connect 12 0 17 0;
+#X connect 13 0 16 0;
+#X connect 14 0 1 0;
+#X connect 15 0 9 0;
+#X connect 15 0 18 0;
+#X connect 15 1 10 0;
+#X connect 15 1 18 1;
+#X connect 16 0 30 1;
+#X connect 17 0 30 0;
diff --git a/gateNoise~.pd b/gateNoise~.pd
new file mode 100644
index 0000000..8eee243
--- /dev/null
+++ b/gateNoise~.pd
@@ -0,0 +1,161 @@
+#N canvas 385 148 1054 304 10;
+#N canvas 437 219 602 401 noisegate~ 0;
+#X obj 114 112 env~;
+#X obj 78 282 *~;
+#X obj 114 260 line~;
+#X obj 78 74 inlet~;
+#X obj 78 303 outlet~;
+#X obj 133 73 inlet;
+#X obj 173 170 inlet;
+#X obj 215 169 inlet;
+#X obj 114 151 change;
+#X obj 114 172 sel 1 0;
+#X obj 258 112 inlet;
+#X obj 313 136 spigot;
+#X obj 376 183 t b;
+#X floatatom 285 210 5 0 0 0 - - -;
+#X floatatom 364 212 5 0 0 0 - - -;
+#X obj 376 158 sel 1;
+#X obj 376 136 == 20;
+#X obj 310 112 inlet;
+#X obj 114 131 > 0;
+#X obj 114 200 f 0;
+#X obj 157 199 f 0;
+#X msg 114 225 1 \$1;
+#X msg 157 224 0 \$1;
+#X obj 285 159 ./listBuild;
+#X obj 285 183 zexy/minmax;
+#X obj 283 249 maxlib/scale 0 100 -1 1;
+#X connect 0 0 11 0;
+#X connect 0 0 18 0;
+#X connect 1 0 4 0;
+#X connect 2 0 1 1;
+#X connect 3 0 0 0;
+#X connect 3 0 1 0;
+#X connect 5 0 18 1;
+#X connect 6 0 19 1;
+#X connect 7 0 20 1;
+#X connect 8 0 9 0;
+#X connect 9 0 19 0;
+#X connect 9 1 20 0;
+#X connect 10 0 11 1;
+#X connect 11 0 23 1;
+#X connect 12 0 23 0;
+#X connect 12 0 25 0;
+#X connect 15 0 12 0;
+#X connect 16 0 15 0;
+#X connect 17 0 25 0;
+#X connect 18 0 8 0;
+#X connect 19 0 21 0;
+#X connect 20 0 22 0;
+#X connect 21 0 2 0;
+#X connect 22 0 2 0;
+#X connect 23 0 24 0;
+#X connect 23 1 16 0;
+#X connect 24 0 13 0;
+#X connect 24 0 25 3;
+#X connect 24 1 14 0;
+#X connect 24 1 25 4;
+#X connect 25 0 18 1;
+#X restore 61 164 pd noisegate~;
+#N canvas 204 409 477 401 noisegate~ 0;
+#X obj 114 112 env~;
+#X obj 78 282 *~;
+#X obj 114 260 line~;
+#X obj 78 74 inlet~;
+#X obj 78 303 outlet~;
+#X obj 133 73 inlet;
+#X obj 173 170 inlet;
+#X obj 215 169 inlet;
+#X obj 114 151 change;
+#X obj 114 172 sel 1 0;
+#X obj 258 112 inlet;
+#X obj 313 136 spigot;
+#X obj 376 183 t b;
+#X floatatom 285 210 5 0 0 0 - - -;
+#X floatatom 364 212 5 0 0 0 - - -;
+#X obj 376 158 sel 1;
+#X obj 376 136 == 20;
+#X obj 310 112 inlet;
+#X obj 114 131 > 0;
+#X obj 114 199 f 0;
+#X obj 157 199 f 0;
+#X msg 114 225 1 \$1;
+#X msg 157 224 0 \$1;
+#X obj 285 159 ./listBuild;
+#X obj 285 182 zexy/minmax;
+#X obj 286 247 maxlib/scale 0 100 -1 1;
+#X connect 0 0 11 0;
+#X connect 0 0 18 0;
+#X connect 1 0 4 0;
+#X connect 2 0 1 1;
+#X connect 3 0 0 0;
+#X connect 3 0 1 0;
+#X connect 5 0 18 1;
+#X connect 6 0 19 1;
+#X connect 7 0 20 1;
+#X connect 8 0 9 0;
+#X connect 9 0 19 0;
+#X connect 9 1 20 0;
+#X connect 10 0 11 1;
+#X connect 11 0 23 1;
+#X connect 12 0 23 0;
+#X connect 12 0 25 0;
+#X connect 15 0 12 0;
+#X connect 16 0 15 0;
+#X connect 17 0 25 0;
+#X connect 18 0 8 0;
+#X connect 19 0 21 0;
+#X connect 20 0 22 0;
+#X connect 21 0 2 0;
+#X connect 22 0 2 0;
+#X connect 23 0 24 0;
+#X connect 23 1 16 0;
+#X connect 24 0 13 0;
+#X connect 24 0 25 3;
+#X connect 24 1 14 0;
+#X connect 24 1 25 4;
+#X connect 25 0 18 1;
+#X restore 149 165 pd noisegate~;
+#X obj 51 130 inlet~ left;
+#X obj 148 129 inlet~ right;
+#X obj 24 234 outlet~ left;
+#X obj 115 233 outlet~ right;
+#X obj 857 0 inlet params;
+#X obj 857 22 tof/paramRoute;
+#X obj 857 46 print PARAM_NOTFOUND;
+#X obj 232 213 tof/param /wet 0 /g slider 0 1;
+#X obj 232 256 line~;
+#X msg 232 235 \$1 5;
+#X obj 24 209 tof/crossfade~ 2;
+#X obj 49 4 tof/param /thresholdleft 0 /g slider 0 100;
+#X obj 49 24 tof/param /thresholdright 0 /g slider 0 100;
+#X obj 319 4 tof/param /attackleft 1 /g slider 0 500;
+#X obj 319 24 tof/param /attackright 1 /g slider 0 500;
+#X obj 575 2 tof/param /releaseleft 200 /g slider 0 5000;
+#X obj 579 24 tof/param /releaseright 200 /g slider 0 5000;
+#X obj 307 88 tof/param /automatic 0 /g tgl;
+#X obj 307 107 tof/param /automatic+- 50 /g slider 0 100;
+#X connect 0 0 12 2;
+#X connect 1 0 12 3;
+#X connect 2 0 0 0;
+#X connect 2 0 12 0;
+#X connect 3 0 1 0;
+#X connect 3 0 12 1;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 9 0 11 0;
+#X connect 10 0 12 4;
+#X connect 11 0 10 0;
+#X connect 12 0 4 0;
+#X connect 12 1 5 0;
+#X connect 13 0 0 1;
+#X connect 14 0 1 1;
+#X connect 15 0 0 2;
+#X connect 16 0 1 2;
+#X connect 17 0 0 3;
+#X connect 18 0 1 3;
+#X connect 19 0 1 4;
+#X connect 19 0 0 4;
+#X connect 20 0 1 5;
+#X connect 20 0 0 5;
diff --git a/gemsAlpha-help.pd b/gemsAlpha-help.pd
new file mode 100644
index 0000000..7dd4138
--- /dev/null
+++ b/gemsAlpha-help.pd
@@ -0,0 +1,130 @@
+#N canvas 89 124 891 601 10;
+#X declare -lib Gem;
+#X obj 197 398 vsl 15 50 0 1 0 0 empty empty empty 0 -8 0 8 -258699
+-262144 -1 2572 1;
+#X obj 104 454 colorRGB 1 1 1 1;
+#X floatatom 195 266 5 0 0 0 - - -;
+#X floatatom 271 300 5 0 0 0 - - -;
+#X msg 699 306 GL_ONE_MINUS_SRC_ALPHA;
+#X msg 699 183 GL_ONE;
+#X msg 699 162 GL_ZERO;
+#X msg 700 245 GL_ONE_MINUS_DST_COLOR;
+#X msg 700 266 GL_ONE_MINUS_SRC_COLOR;
+#X msg 700 224 GL_DST_COLOR;
+#X text 679 160 0;
+#X text 680 182 1;
+#X text 680 206 2;
+#X text 680 225 3;
+#X text 679 247 4;
+#X text 680 268 5;
+#X msg 700 287 GL_SRC_ALPHA;
+#X text 679 290 6;
+#X text 679 308 7;
+#X msg 701 328 GL_DST_ALPHA;
+#X msg 701 349 GL_ONE_MINUS_DST_ALPHA;
+#X text 679 330 8;
+#X text 681 352 9;
+#X msg 700 371 GL_SRC_ALPHA_SATURATE;
+#X text 676 373 10;
+#X msg 699 204 GL_SRC_COLOR;
+#X text 679 135 OpenGL Alpha modes :;
+#X obj 104 281 pix_image;
+#X obj 104 478 pix_texture;
+#X text 26 -12 Description: Allows to easily change the alpha blending
+mode for the current gemchain.;
+#X obj 195 247 hradio 15 1 0 11 empty empty empty 0 -6 0 8 -258699
+-262144 -1 0;
+#X text 194 233 source;
+#X obj 271 280 hradio 15 1 0 11 empty empty empty 0 -6 0 8 -258699
+-262144 -1 0;
+#X text 270 266 destination;
+#N canvas 0 0 450 300 auto 0;
+#X obj 129 227 line;
+#X obj 140 169 sel 0 1;
+#X obj 139 60 inlet;
+#X obj 163 108 metro 1000;
+#X obj 138 266 outlet;
+#X obj 158 137 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X msg 123 194 0.01 \, 1 1000;
+#X msg 230 196 1 \, 0.01 1000;
+#X connect 0 0 4 0;
+#X connect 1 0 6 0;
+#X connect 1 1 7 0;
+#X connect 2 0 3 0;
+#X connect 3 0 5 0;
+#X connect 5 0 1 0;
+#X connect 6 0 0 0;
+#X connect 7 0 0 0;
+#X restore 221 438 pd auto;
+#X obj 221 418 tgl 15 0 empty empty empty 0 -6 0 8 -258699 -262144
+-1 1 1;
+#X symbolatom 140 368 20 0 0 0 - - -;
+#X symbolatom 269 369 20 0 0 0 - - -;
+#X obj 221 395 loadbang;
+#X obj 27 52 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X text 47 48 1) Create Gem window.;
+#X obj 104 499 translateXYZ 0 0 0.01;
+#X obj 27 77 mtl/gemsWin;
+#X text 27 16 tags: gems;
+#X obj 308 134 t a a;
+#X obj 30 171 openpanel;
+#X msg 30 197 open \$1;
+#X obj 308 105 gemhead;
+#X text 25 121 Blending image;
+#X obj 30 147 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 536 194 openpanel;
+#X msg 536 220 open \$1;
+#X obj 536 170 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X text 516 136 Background image;
+#X obj 536 269 pix_image;
+#X obj 536 301 pix_texture;
+#X text 191 205 3) Play with the controls below:;
+#X text 237 83 2) Load blending and background images;
+#X text 143 162 Do not forget that for blending to work \, the blending
+image must be in front and rendered after other images.;
+#X obj 104 547 square 1;
+#X obj 536 374 square 1;
+#X obj 103 334 mtl/gemsAlpha;
+#X obj 104 523 mtl/gemsFit fill;
+#X obj 536 243 separator;
+#X obj 103 243 separator;
+#X text 191 218 Defaults to 6 7 for best results.;
+#X obj 536 346 mtl/gemsFit fill;
+#X text 223 327 Arguments and 2-3 inlets : source mode number \, destination
+mode number;
+#X obj 791 5 import Gem;
+#X connect 0 0 1 4;
+#X connect 1 0 28 0;
+#X connect 2 0 61 1;
+#X connect 3 0 61 2;
+#X connect 27 0 61 0;
+#X connect 28 0 41 0;
+#X connect 30 0 2 0;
+#X connect 32 0 3 0;
+#X connect 34 0 0 0;
+#X connect 35 0 34 0;
+#X connect 38 0 35 0;
+#X connect 39 0 42 0;
+#X connect 41 0 62 0;
+#X connect 44 0 64 0;
+#X connect 44 1 63 0;
+#X connect 45 0 46 0;
+#X connect 46 0 27 0;
+#X connect 47 0 44 0;
+#X connect 49 0 45 0;
+#X connect 50 0 51 0;
+#X connect 51 0 54 0;
+#X connect 52 0 50 0;
+#X connect 54 0 55 0;
+#X connect 55 0 66 0;
+#X connect 61 0 1 0;
+#X connect 61 1 36 0;
+#X connect 61 2 37 0;
+#X connect 62 0 59 0;
+#X connect 63 0 54 0;
+#X connect 64 0 27 0;
+#X connect 66 0 60 0;
diff --git a/gemsAlpha.pd b/gemsAlpha.pd
new file mode 100644
index 0000000..5f9837b
--- /dev/null
+++ b/gemsAlpha.pd
@@ -0,0 +1,124 @@
+#N canvas 0 0 808 621 10;
+#X obj 30 519 GEMglBlendFunc;
+#X msg 233 356 GL_ONE_MINUS_SRC_ALPHA;
+#X msg 232 238 GL_ONE;
+#X msg 231 220 GL_ZERO;
+#X msg 234 297 GL_ONE_MINUS_DST_COLOR;
+#X msg 234 316 GL_ONE_MINUS_SRC_COLOR;
+#X msg 234 276 GL_DST_COLOR;
+#X text 272 201 Jitter Mode Equiv;
+#X text 305 222 0;
+#X text 305 237 1;
+#X text 330 258 2;
+#X text 331 278 3;
+#X text 396 300 4;
+#X text 398 318 5;
+#X msg 234 337 GL_SRC_ALPHA;
+#X text 330 340 6;
+#X text 398 357 7;
+#X msg 235 378 GL_DST_ALPHA;
+#X msg 235 399 GL_ONE_MINUS_DST_ALPHA;
+#X text 332 380 8;
+#X text 396 402 9;
+#X msg 234 421 GL_SRC_ALPHA_SATURATE;
+#X text 391 423 10;
+#X msg 471 358 GL_ONE_MINUS_SRC_ALPHA;
+#X msg 470 240 GL_ONE;
+#X msg 471 258 GL_DST_COLOR;
+#X msg 469 222 GL_ZERO;
+#X msg 472 299 GL_ONE_MINUS_DST_COLOR;
+#X msg 472 318 GL_ONE_MINUS_SRC_COLOR;
+#X msg 472 278 GL_DST_COLOR;
+#X msg 472 339 GL_SRC_ALPHA;
+#X msg 473 380 GL_DST_ALPHA;
+#X msg 473 401 GL_ONE_MINUS_DST_ALPHA;
+#X msg 472 423 GL_SRC_ALPHA_SATURATE;
+#X msg 233 256 GL_SRC_COLOR;
+#X obj 30 561 outlet;
+#X obj 8 36 inlet;
+#X obj 71 139 sel 0 1 2 3 4 5 6 7 8 9 10;
+#X obj 318 125 sel 0 1 2 3 4 5 6 7 8 9 10;
+#X obj 99 31 inlet;
+#X obj 135 56 loadbang;
+#X obj 355 17 inlet;
+#X obj 297 57 loadbang;
+#X obj 34 297 alpha;
+#X obj 247 564 outlet;
+#X obj 469 572 outlet;
+#X obj 152 489 GLdefine;
+#X obj 158 461 t a a;
+#X obj 238 530 symbol;
+#X obj 374 510 GLdefine;
+#X obj 396 463 t a a;
+#X obj 496 536 symbol;
+#X obj 42 81 clip 0 10;
+#X obj 42 105 int;
+#X obj 430 80 clip 0 10;
+#X obj 429 99 int;
+#X obj 136 83 tof/argument 1 6;
+#X obj 297 86 tof/argument 2 7;
+#X connect 0 0 35 0;
+#X connect 1 0 47 0;
+#X connect 2 0 47 0;
+#X connect 3 0 47 0;
+#X connect 4 0 47 0;
+#X connect 5 0 47 0;
+#X connect 6 0 47 0;
+#X connect 14 0 47 0;
+#X connect 17 0 47 0;
+#X connect 18 0 47 0;
+#X connect 21 0 47 0;
+#X connect 23 0 50 0;
+#X connect 24 0 50 0;
+#X connect 25 0 50 0;
+#X connect 26 0 50 0;
+#X connect 27 0 50 0;
+#X connect 28 0 50 0;
+#X connect 29 0 50 0;
+#X connect 30 0 50 0;
+#X connect 31 0 50 0;
+#X connect 32 0 50 0;
+#X connect 33 0 50 0;
+#X connect 34 0 47 0;
+#X connect 36 0 43 0;
+#X connect 37 0 3 0;
+#X connect 37 1 2 0;
+#X connect 37 2 34 0;
+#X connect 37 3 6 0;
+#X connect 37 4 4 0;
+#X connect 37 5 5 0;
+#X connect 37 6 14 0;
+#X connect 37 7 1 0;
+#X connect 37 8 17 0;
+#X connect 37 9 18 0;
+#X connect 37 10 21 0;
+#X connect 38 0 26 0;
+#X connect 38 1 24 0;
+#X connect 38 2 25 0;
+#X connect 38 3 29 0;
+#X connect 38 4 27 0;
+#X connect 38 5 28 0;
+#X connect 38 6 30 0;
+#X connect 38 7 23 0;
+#X connect 38 8 31 0;
+#X connect 38 9 32 0;
+#X connect 38 10 33 0;
+#X connect 39 0 52 0;
+#X connect 40 0 56 0;
+#X connect 41 0 54 0;
+#X connect 42 0 57 0;
+#X connect 43 0 0 0;
+#X connect 46 0 0 1;
+#X connect 47 0 48 0;
+#X connect 47 1 46 0;
+#X connect 48 0 44 0;
+#X connect 49 0 0 2;
+#X connect 50 0 51 0;
+#X connect 50 1 49 0;
+#X connect 51 0 45 0;
+#X connect 52 0 53 0;
+#X connect 53 0 37 0;
+#X connect 54 0 55 0;
+#X connect 55 0 38 0;
+#X connect 56 0 52 0;
+#X connect 57 0 54 0;
diff --git a/gemsAverageColor-help.pd b/gemsAverageColor-help.pd
new file mode 100644
index 0000000..27b4c1f
--- /dev/null
+++ b/gemsAverageColor-help.pd
@@ -0,0 +1,46 @@
+#N canvas 671 265 540 406 10;
+#X declare -lib Gem;
+#X obj 365 24 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 30 262 pix_texture;
+#X text 21 10 Description: Finds out the average color of a pix.;
+#X obj 134 294 gemhead 77;
+#X text 253 254 the average color of the incoming pixels;
+#X obj 253 276 unpack f f f;
+#X floatatom 367 339 5 0 0 0 - - -;
+#X floatatom 322 338 5 0 0 0 - - -;
+#X floatatom 279 339 5 0 0 0 - - -;
+#X obj 30 118 gemhead 88;
+#X obj 134 357 square 4;
+#X obj 134 334 colorRGB 1 1 1;
+#X obj 30 284 square 3.5;
+#X text 21 32 The square that is behind the film \, and looks like
+a border \, is the average color of the incoming frame.;
+#X text 22 62 tags: gems;
+#X obj 365 46 mtl/gemsWin /dimen 640 640;
+#X obj 30 236 mtl/gemsAverageColor;
+#X obj 67 142 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 67 172 openpanel;
+#X msg 137 174 1;
+#X obj 30 213 mtl/gemsMovies;
+#X text 87 141 Open movie;
+#X text 167 174 Play movie;
+#X obj 461 22 import Gem;
+#X connect 0 0 15 0;
+#X connect 1 0 12 0;
+#X connect 3 0 11 0;
+#X connect 5 0 8 0;
+#X connect 5 0 11 1;
+#X connect 5 1 7 0;
+#X connect 5 1 11 2;
+#X connect 5 2 6 0;
+#X connect 5 2 11 3;
+#X connect 9 0 20 0;
+#X connect 11 0 10 0;
+#X connect 16 0 1 0;
+#X connect 16 1 5 0;
+#X connect 17 0 18 0;
+#X connect 18 0 20 1;
+#X connect 19 0 20 2;
+#X connect 20 0 16 0;
diff --git a/gemsAverageColor.pd b/gemsAverageColor.pd
new file mode 100644
index 0000000..5ea9da9
--- /dev/null
+++ b/gemsAverageColor.pd
@@ -0,0 +1,26 @@
+#N canvas 1024 246 870 437 10;
+#X obj 520 245 pix_data;
+#X obj 520 201 t b a;
+#X obj 563 201 loadbang;
+#X msg 563 222 0.5;
+#X obj 520 180 pix_resize 1 1;
+#X obj 519 159 pix_separator;
+#X text 590 249 the average color of the incoming pixels;
+#X obj 265 17 inlet;
+#X obj 264 84 t a a;
+#X obj 257 408 outlet;
+#X obj 565 345 outlet;
+#X text 60 199 Here \, we are finding out the average color of the
+incoming pixels. We resize the pixels to a single pixel \, and then
+figure out its color value.;
+#X connect 0 1 10 0;
+#X connect 1 0 0 0;
+#X connect 1 1 0 1;
+#X connect 2 0 3 0;
+#X connect 3 0 0 2;
+#X connect 3 0 0 3;
+#X connect 4 0 1 0;
+#X connect 5 0 4 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 8 1 5 0;
diff --git a/gemsCropMap-help.pd b/gemsCropMap-help.pd
new file mode 100644
index 0000000..df2a915
--- /dev/null
+++ b/gemsCropMap-help.pd
@@ -0,0 +1,76 @@
+#N canvas 196 64 482 540 10;
+#X declare -lib Gem;
+#X declare -lib Gem;
+#X obj 26 115 gemhead;
+#X obj 26 57 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 26 464 pix_texture;
+#X obj 50 143 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 156 284 5 0 0 0 - - -;
+#X floatatom 91 256 5 0 0 0 - - -;
+#X obj 26 499 square;
+#X text 135 256 X elements;
+#X text 200 285 Y elements;
+#X text 22 9 Description: multiple cropping and mapping;
+#X obj 26 426 rotateXYZ;
+#X obj 26 76 mtl/gemsWin /dimen 320 240;
+#X obj 26 193 mtl/gemsMovies;
+#X text 67 142 Load a movie;
+#X obj 26 217 mtl/gemsFit window 0.8;
+#X msg 79 163 1;
+#X text 110 165 Play it;
+#N canvas 0 0 450 300 rotation 0;
+#X obj 156 158 line;
+#X obj 155 116 metro 5000;
+#X msg 155 137 0 \, 360 5000;
+#X obj 250 159 line;
+#X obj 248 115 metro 8000;
+#X msg 249 137 0 \, 360 8000;
+#X obj 108 32 inlet;
+#X obj 47 77 sel 0;
+#X obj 78 235 outlet;
+#X obj 170 234 outlet;
+#X obj 155 73 t f f f;
+#X msg 75 118 stop;
+#X msg 47 170 0;
+#X connect 0 0 8 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 3 0 9 0;
+#X connect 4 0 5 0;
+#X connect 5 0 3 0;
+#X connect 6 0 10 0;
+#X connect 7 0 11 0;
+#X connect 7 0 12 0;
+#X connect 10 0 7 0;
+#X connect 10 1 1 0;
+#X connect 10 2 4 0;
+#X connect 11 0 0 0;
+#X connect 11 0 3 0;
+#X connect 12 0 8 0;
+#X connect 12 0 9 0;
+#X restore 43 401 pd rotation;
+#X obj 43 380 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X text 61 380 <- Rotation animation;
+#X obj 43 355 loadbang;
+#X text 153 313 Arguments: initial number of x and y elements;
+#X obj 26 312 mtl/gemsCropMap 8 6;
+#X text 23 24 tags: gems;
+#X obj 391 11 import Gem;
+#X connect 0 0 12 0;
+#X connect 1 0 11 0;
+#X connect 2 0 6 0;
+#X connect 3 0 12 1;
+#X connect 4 0 22 2;
+#X connect 5 0 22 1;
+#X connect 10 0 2 0;
+#X connect 12 0 14 0;
+#X connect 14 0 22 0;
+#X connect 15 0 12 2;
+#X connect 17 0 10 1;
+#X connect 17 1 10 2;
+#X connect 18 0 17 0;
+#X connect 20 0 18 0;
+#X connect 22 0 10 0;
diff --git a/gemsCropMap.pd b/gemsCropMap.pd
new file mode 100644
index 0000000..9f2fafe
--- /dev/null
+++ b/gemsCropMap.pd
@@ -0,0 +1,122 @@
+#N canvas 18 25 991 686 10;
+#X obj 49 154 separator;
+#X obj 52 178 t a b;
+#X obj 52 224 t a b;
+#X obj 53 276 separator;
+#X obj 55 300 t a b;
+#X obj 54 594 pix_crop;
+#X text 263 578 xdim ydim xoff yoff;
+#X obj 330 533 /;
+#X obj 292 513 /;
+#X obj 269 331 *;
+#X obj 270 353 /;
+#X obj 252 445 *;
+#X obj 251 498 /;
+#X obj 53 771 outlet;
+#X obj 402 133 f;
+#X obj 403 29 inlet;
+#X text 410 -3 num X;
+#X obj 591 56 loadbang;
+#X obj 549 137 f;
+#X obj 550 33 inlet;
+#X text 557 1 num Y;
+#X obj 52 41 inlet;
+#X obj 54 101 pix_info ------;
+#X obj 144 612 expr (1/$f2)*($f1*2+1)-1;
+#X obj 471 601 /;
+#X obj 605 547 /;
+#X obj 208 653 expr (1/$f2)*($f1*2+1)-1;
+#X msg 466 574 1;
+#X msg 600 520 1;
+#X obj 469 653 f 1;
+#X obj 560 665 f 1;
+#X obj 720 636 min;
+#X obj 54 76 t a b b b b;
+#X obj 473 531 t b f;
+#X obj 607 477 t b f;
+#X obj 501 623 t f f;
+#X obj 645 566 t f f;
+#X obj 499 63 t b b;
+#X obj 686 688 f 1;
+#X obj 403 155 t f f f f f f;
+#X obj 550 159 t f f f f f f;
+#X obj 54 672 translateXYZ;
+#X obj 59 725 scaleXYZ;
+#X obj 583 112 tof/argument 2 1;
+#X obj 436 108 tof/argument 1 1;
+#X obj 323 303 t f f;
+#X obj 302 378 t f f;
+#X obj 150 327 tof/increment;
+#X obj 112 203 tof/increment;
+#X obj 49 128 zexy/repeat 1;
+#X obj 53 250 zexy/repeat 1;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 48 0;
+#X connect 2 0 50 0;
+#X connect 2 1 47 1;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 1 47 0;
+#X connect 5 0 41 0;
+#X connect 7 0 5 2;
+#X connect 8 0 5 1;
+#X connect 9 0 10 0;
+#X connect 10 0 5 3;
+#X connect 11 0 12 0;
+#X connect 12 0 5 4;
+#X connect 14 0 39 0;
+#X connect 15 0 14 0;
+#X connect 17 0 37 0;
+#X connect 18 0 40 0;
+#X connect 19 0 18 0;
+#X connect 21 0 32 0;
+#X connect 22 0 49 0;
+#X connect 22 1 45 0;
+#X connect 22 2 46 0;
+#X connect 23 0 41 1;
+#X connect 24 0 35 0;
+#X connect 25 0 36 0;
+#X connect 26 0 41 2;
+#X connect 27 0 24 0;
+#X connect 28 0 25 0;
+#X connect 29 0 42 1;
+#X connect 30 0 42 2;
+#X connect 31 0 38 0;
+#X connect 32 0 22 0;
+#X connect 32 1 48 1;
+#X connect 33 0 27 0;
+#X connect 33 1 24 1;
+#X connect 34 0 28 0;
+#X connect 34 1 25 1;
+#X connect 35 0 29 0;
+#X connect 35 1 31 0;
+#X connect 36 0 30 0;
+#X connect 36 1 31 1;
+#X connect 37 0 44 0;
+#X connect 37 1 43 0;
+#X connect 38 0 42 3;
+#X connect 39 0 49 1;
+#X connect 39 1 10 1;
+#X connect 39 3 23 1;
+#X connect 39 4 33 0;
+#X connect 40 0 50 1;
+#X connect 40 1 12 1;
+#X connect 40 2 8 1;
+#X connect 40 3 26 1;
+#X connect 40 4 34 0;
+#X connect 40 5 7 1;
+#X connect 41 0 42 0;
+#X connect 42 0 13 0;
+#X connect 43 0 18 0;
+#X connect 44 0 14 0;
+#X connect 45 0 9 1;
+#X connect 45 1 8 0;
+#X connect 46 0 11 1;
+#X connect 46 1 7 0;
+#X connect 47 0 26 0;
+#X connect 47 0 11 0;
+#X connect 48 0 23 0;
+#X connect 48 0 9 0;
+#X connect 49 0 0 0;
+#X connect 50 0 3 0;
diff --git a/gemsCuber-help.pd b/gemsCuber-help.pd
new file mode 100644
index 0000000..db21241
--- /dev/null
+++ b/gemsCuber-help.pd
@@ -0,0 +1,59 @@
+#N canvas 620 70 553 565 10;
+#X declare -lib Gem;
+#X declare -lib Gem;
+#X obj 19 78 gemhead;
+#X obj 193 73 tgl 15 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0
+1;
+#X obj 19 105 alpha;
+#X floatatom 138 348 5 0 0 1 num_of_z_repetitions - -;
+#X obj 19 283 rotateXYZ;
+#X floatatom 61 245 5 0 0 0 - - -;
+#X text 146 397 Args:;
+#N canvas 152 523 450 300 autorotate 0;
+#X obj 83 191 outlet;
+#X obj 80 41 inlet;
+#X obj 82 81 metro 10000;
+#X msg 86 119 0 \, 360 10000;
+#X obj 90 151 line;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X restore 70 218 pd autorotate;
+#X obj 71 173 loadbang;
+#X floatatom 92 329 5 0 0 1 num_of_y_repetitions - -;
+#X floatatom 55 309 5 0 0 1 num_of_x_repetitions - -;
+#X text 161 412 x repetitions (minimum of 1);
+#X text 162 428 y repetitions (minimum of 1);
+#X obj 16 526 cube 0.5;
+#X obj 193 93 mtl/gemsWin /dimen 320 240 /lighting 1;
+#X text 15 30 tags: gems;
+#X text 14 14 Description: Builds a cube out of duplicated geos.;
+#X obj 356 206 world_light;
+#X obj 356 145 gemhead;
+#X obj 19 407 mtl/gemsCuber;
+#X text 164 443 z repetitions (minimum of 1);
+#X obj 19 137 mtl/gemsFit window 0.7;
+#X obj 16 477 colorRGB;
+#X text 144 477 Outlet 2: relative x of geos being rendered;
+#X text 143 492 Outlet 3: relative y of geos being rendered;
+#X text 146 510 Outlet 4: relative z of geos being rendered;
+#X obj 453 11 import Gem;
+#X connect 0 0 2 0;
+#X connect 1 0 14 0;
+#X connect 2 0 21 0;
+#X connect 3 0 19 3;
+#X connect 4 0 19 0;
+#X connect 5 0 4 2;
+#X connect 5 0 4 1;
+#X connect 7 0 5 0;
+#X connect 8 0 7 0;
+#X connect 9 0 19 2;
+#X connect 10 0 19 1;
+#X connect 18 0 17 0;
+#X connect 19 0 22 0;
+#X connect 19 1 22 1;
+#X connect 19 2 22 2;
+#X connect 19 3 22 3;
+#X connect 21 0 4 0;
+#X connect 22 0 13 0;
diff --git a/gemsCuber.pd b/gemsCuber.pd
new file mode 100644
index 0000000..2405f9f
--- /dev/null
+++ b/gemsCuber.pd
@@ -0,0 +1,131 @@
+#N canvas 12 32 1022 686 10;
+#X obj 49 154 separator;
+#X obj 53 276 separator;
+#X obj 403 664 outlet;
+#X obj 406 128 f;
+#X obj 403 29 inlet;
+#X text 410 -3 num X;
+#X obj 606 19 loadbang;
+#X obj 554 127 f;
+#X obj 551 16 inlet;
+#X text 557 1 num Y;
+#X obj 49 128 repeat 1;
+#X obj 53 250 repeat 1;
+#X obj 144 17 inlet;
+#X obj 188 568 expr (1/$f2)*($f1*2+1)-1;
+#X obj 465 484 /;
+#X obj 606 472 /;
+#X obj 139 517 expr (1/$f2)*($f1*2+1)-1;
+#X msg 460 457 1;
+#X msg 601 445 1;
+#X obj 467 414 t b f;
+#X obj 608 402 t b f;
+#X obj 389 184 t f f f f f f;
+#X obj 547 189 t f f f f f f;
+#X obj 65 610 translateXYZ;
+#X obj 394 627 scaleXYZ;
+#X obj 146 52 t a b;
+#X obj 400 159 max 1;
+#X obj 549 164 max 1;
+#X obj 60 384 separator;
+#X obj 66 409 t a b;
+#X obj 60 358 repeat 1;
+#X obj 51 179 t a b b;
+#X obj 55 300 t a b b;
+#X obj 721 31 inlet;
+#X text 722 8 num z;
+#X obj 721 129 f;
+#X obj 726 165 max 1;
+#X obj 731 192 t f f f;
+#X obj 104 470 expr (1/$f2)*($f1*2+1)-1;
+#X obj 724 470 /;
+#X msg 715 439 1;
+#X obj 766 404 t b f;
+#X obj 499 63 t b b b b;
+#X obj 436 108 tof/argument 1 1;
+#X obj 578 94 tof/argument 2 1;
+#X obj 750 111 tof/argument 3 1;
+#X obj 120 209 tof/increment;
+#X obj 106 324 tof/increment;
+#X obj 113 433 tof/increment;
+#X obj 559 653 outlet;
+#X obj 651 656 outlet;
+#X obj 779 654 outlet;
+#X obj 559 606 /;
+#X obj 659 589 /;
+#X obj 771 591 /;
+#X obj 783 490 - 1;
+#X obj 650 534 - 1;
+#X obj 524 493 - 1;
+#X connect 0 0 31 0;
+#X connect 1 0 32 0;
+#X connect 3 0 26 0;
+#X connect 4 0 3 0;
+#X connect 6 0 42 0;
+#X connect 7 0 27 0;
+#X connect 8 0 7 0;
+#X connect 10 0 0 0;
+#X connect 11 0 1 0;
+#X connect 12 0 25 0;
+#X connect 13 0 23 3;
+#X connect 14 0 24 1;
+#X connect 15 0 24 2;
+#X connect 16 0 23 2;
+#X connect 17 0 14 0;
+#X connect 18 0 15 0;
+#X connect 19 0 17 0;
+#X connect 19 1 14 1;
+#X connect 19 1 57 0;
+#X connect 20 0 18 0;
+#X connect 20 1 15 1;
+#X connect 20 1 56 0;
+#X connect 21 0 30 1;
+#X connect 21 1 38 1;
+#X connect 21 4 19 0;
+#X connect 22 0 11 1;
+#X connect 22 3 16 1;
+#X connect 22 4 20 0;
+#X connect 23 0 24 0;
+#X connect 24 0 2 0;
+#X connect 25 0 10 0;
+#X connect 25 1 46 1;
+#X connect 26 0 21 0;
+#X connect 27 0 22 0;
+#X connect 28 0 29 0;
+#X connect 29 0 23 0;
+#X connect 29 1 48 0;
+#X connect 30 0 28 0;
+#X connect 31 0 11 0;
+#X connect 31 2 46 0;
+#X connect 32 0 30 0;
+#X connect 32 2 47 0;
+#X connect 33 0 35 0;
+#X connect 35 0 36 0;
+#X connect 36 0 37 0;
+#X connect 37 0 10 1;
+#X connect 37 1 13 1;
+#X connect 37 2 41 0;
+#X connect 38 0 23 1;
+#X connect 39 0 24 3;
+#X connect 40 0 39 0;
+#X connect 41 0 40 0;
+#X connect 41 1 39 1;
+#X connect 41 1 55 0;
+#X connect 42 0 43 0;
+#X connect 42 1 44 0;
+#X connect 42 2 45 0;
+#X connect 43 0 3 0;
+#X connect 44 0 7 0;
+#X connect 45 0 35 0;
+#X connect 46 0 13 0;
+#X connect 46 0 54 0;
+#X connect 47 0 16 0;
+#X connect 47 0 53 0;
+#X connect 48 0 38 0;
+#X connect 48 0 52 0;
+#X connect 52 0 49 0;
+#X connect 53 0 50 0;
+#X connect 54 0 51 0;
+#X connect 55 0 54 1;
+#X connect 56 0 53 1;
+#X connect 57 0 52 1;
diff --git a/gemsDuplicate-help.pd b/gemsDuplicate-help.pd
new file mode 100644
index 0000000..c6c9885
--- /dev/null
+++ b/gemsDuplicate-help.pd
@@ -0,0 +1,58 @@
+#N canvas 609 88 707 533 10;
+#X declare -lib Gem;
+#X declare -lib Gem;
+#X obj 19 87 gemhead;
+#X obj 387 -8 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X floatatom 157 70 5 0 0 0 - - -;
+#X text 204 69 Number of iterations;
+#X text 8 2 You can change the number of iteration using the right
+inlet.;
+#X text 8 32 tags: gems;
+#X text 7 -16 Description: Duplicates and separates a Gem chain.;
+#X text 198 105 Outlet 2 bangs when rendering each duplication. Outlet
+3 bangs at the start of the rendering.;
+#X obj 20 471 circle;
+#X obj 19 112 mtl/gemsDuplicate 10;
+#X obj 76 144 tof/increment;
+#X obj 20 285 color;
+#X obj 157 94 t f f;
+#X obj 76 173 /;
+#X obj 76 257 mtl/hsvToRgb;
+#X obj 20 433 translateXYZ;
+#X msg 76 235 \$1 1 1;
+#X obj 220 314 sin;
+#X obj 76 209 t f f;
+#X obj 193 258 * 6.28319;
+#X obj 193 282 t f f;
+#X obj 131 307 cos;
+#X floatatom 195 363 5 0 0 1 diameter - -;
+#X obj 387 12 mtl/gemsWin /dimen 640 480 /anti-aliasing 1;
+#X obj 86 395 * 3;
+#X obj 130 398 * 3;
+#X obj 585 -14 import Gem;
+#X connect 0 0 9 0;
+#X connect 1 0 23 0;
+#X connect 2 0 12 0;
+#X connect 9 0 11 0;
+#X connect 9 1 10 0;
+#X connect 9 2 10 1;
+#X connect 10 0 13 0;
+#X connect 11 0 15 0;
+#X connect 12 0 9 1;
+#X connect 12 1 13 1;
+#X connect 13 0 18 0;
+#X connect 14 0 11 1;
+#X connect 15 0 8 0;
+#X connect 16 0 14 0;
+#X connect 17 0 25 0;
+#X connect 18 0 16 0;
+#X connect 18 1 19 0;
+#X connect 19 0 20 0;
+#X connect 20 0 21 0;
+#X connect 20 1 17 0;
+#X connect 21 0 24 0;
+#X connect 22 0 24 1;
+#X connect 22 0 25 1;
+#X connect 24 0 15 1;
+#X connect 25 0 15 2;
diff --git a/gemsDuplicate.pd b/gemsDuplicate.pd
new file mode 100644
index 0000000..aaf8bf6
--- /dev/null
+++ b/gemsDuplicate.pd
@@ -0,0 +1,20 @@
+#N canvas 906 283 341 293 10;
+#X obj 41 87 t a b;
+#X obj 44 167 t a b;
+#X obj 39 39 inlet;
+#X obj 41 232 outlet;
+#X obj 126 240 outlet;
+#X obj 212 233 outlet;
+#X obj 43 200 separator;
+#X obj 192 57 inlet;
+#X obj 204 121 max 0;
+#X obj 42 144 zexy/repeat \$1;
+#X connect 0 0 9 0;
+#X connect 0 1 5 0;
+#X connect 1 0 6 0;
+#X connect 1 1 4 0;
+#X connect 2 0 0 0;
+#X connect 6 0 3 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 1;
+#X connect 9 0 1 0;
diff --git a/gemsFeedback-help.pd b/gemsFeedback-help.pd
new file mode 100644
index 0000000..9a8deea
--- /dev/null
+++ b/gemsFeedback-help.pd
@@ -0,0 +1,62 @@
+#N canvas 373 57 590 646 10;
+#X declare -lib Gem;
+#X obj 163 125 hsl 128 15 0 1 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 11430 1;
+#X floatatom 160 143 5 0 0 0 - - -;
+#X floatatom 225 179 5 0 0 0 - - -;
+#X obj 86 240 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 86 208 loadbang;
+#X text 16 -2 Description: A more advanced video feedback loop using
+snapshots of the rendering window.;
+#X text 105 240 feedback on/off;
+#X obj 272 27 tgl 15 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0
+1;
+#X text 20 44 tags: gems;
+#X obj 159 455 mtl/gemsMouse;
+#X obj 95 531 translateXYZ;
+#X obj 153 494 unpack;
+#X obj 95 472 gemhead;
+#X text 299 127 feedback amount (0-1);
+#X text 203 490 Move the mouse around in the GEM window.;
+#X obj 272 57 mtl/gemsWin /dimen 320 240;
+#X obj 205 377 mtl/gemsFeedback;
+#X obj 225 156 iemlib/init 0.1;
+#X obj 92 591 circle 0.2;
+#X obj 160 103 iemlib/init 0.9;
+#X obj 94 568 colorRGB 1 0 0 1;
+#X obj 263 520 gemhead;
+#X obj 255 578 circle 0.2;
+#X obj 256 547 colorRGB 0 1 0;
+#X text 270 173 feedback in/out;
+#X floatatom 274 213 5 0 0 0 - - -;
+#X floatatom 309 248 5 0 0 0 - - -;
+#X text 308 210 feedback left/right;
+#X text 346 247 feedback down/up;
+#X floatatom 332 312 5 0 0 0 - - -;
+#X text 339 329 feedback rotate;
+#X text 340 370 Argument 1: feedback amount;
+#X text 343 406 Argument 3: feeback left/right;
+#X text 340 388 Argument 2: feedback in/out;
+#X text 345 424 Argument 4: feedback down/up;
+#X text 346 442 Argument 5: feedback rotate;
+#X obj 376 6 import Gem;
+#X connect 0 0 1 0;
+#X connect 1 0 16 1;
+#X connect 2 0 16 2;
+#X connect 3 0 16 0;
+#X connect 4 0 3 0;
+#X connect 7 0 15 0;
+#X connect 9 0 11 0;
+#X connect 10 0 20 0;
+#X connect 11 0 10 1;
+#X connect 11 1 10 2;
+#X connect 12 0 10 0;
+#X connect 17 0 2 0;
+#X connect 19 0 0 0;
+#X connect 20 0 18 0;
+#X connect 21 0 23 0;
+#X connect 23 0 22 0;
+#X connect 25 0 16 3;
+#X connect 26 0 16 4;
+#X connect 29 0 16 5;
diff --git a/gemsFeedback.pd b/gemsFeedback.pd
new file mode 100644
index 0000000..21384cc
--- /dev/null
+++ b/gemsFeedback.pd
@@ -0,0 +1,83 @@
+#N canvas 0 53 1009 658 10;
+#X obj 12 24 gemhead 100000;
+#X msg 27 116 snap;
+#X obj 287 -42 inlet alpha/colorRGBA;
+#X obj 166 434 unpack f f f f;
+#X obj 289 12 route list;
+#X obj 56 -40 inlet render;
+#X obj 43 179 pix_snap2tex 0 0 320 240;
+#X obj 169 576 rectangle 5.33333 4;
+#X obj 56 398 scaleXYZ 5.5 5.5 1;
+#X obj 124 29 gemhead 0;
+#X obj 369 173 loadbang;
+#X obj 417 241 value GEMSH;
+#X obj 325 241 value GEMSW;
+#X obj 370 201 t b b;
+#X obj 484 186 r GEMS;
+#X obj 347 286 pack;
+#X obj 175 542 alpha;
+#X obj 369 36 clip 0 1;
+#X obj 349 94 pow 0.3;
+#X obj 148 471 colorRGB 1 1 1 0.5;
+#X obj 487 2 moses 0;
+#X obj 783 75 + 1;
+#X obj 430 66 expr abs(1/($f1-1));
+#X obj 49 310 translateXYZ 0 0 -15;
+#X obj 138 347 * 4.75;
+#X obj 492 -52 inlet in/out;
+#X obj 637 -43 inlet left/right;
+#X obj 763 -39 inlet up/down;
+#X obj 916 -42 inlet rotate;
+#X obj 187 511 rotateXYZ;
+#X obj 188 -11 tof/argument 1 0.3;
+#X obj 428 -95 loadbang;
+#X obj 511 -27 tof/argument 2 0.1;
+#X obj 619 -9 tof/argument 3 0;
+#X obj 718 19 tof/argument 4 0;
+#X obj 855 35 tof/argument 5 0;
+#X connect 0 0 1 0;
+#X connect 1 0 6 0;
+#X connect 2 0 4 0;
+#X connect 3 0 19 1;
+#X connect 3 1 19 2;
+#X connect 3 2 19 3;
+#X connect 4 0 3 0;
+#X connect 4 1 17 0;
+#X connect 5 0 0 0;
+#X connect 5 0 9 0;
+#X connect 6 0 23 0;
+#X connect 8 0 19 0;
+#X connect 9 0 6 0;
+#X connect 10 0 13 0;
+#X connect 11 0 15 1;
+#X connect 12 0 15 0;
+#X connect 13 0 12 0;
+#X connect 13 1 11 0;
+#X connect 14 0 13 0;
+#X connect 15 0 6 2;
+#X connect 16 0 7 0;
+#X connect 17 0 18 0;
+#X connect 18 0 19 4;
+#X connect 19 0 29 0;
+#X connect 20 0 22 0;
+#X connect 20 1 21 0;
+#X connect 21 0 24 0;
+#X connect 22 0 24 0;
+#X connect 23 0 8 0;
+#X connect 24 0 8 1;
+#X connect 24 0 8 2;
+#X connect 25 0 20 0;
+#X connect 26 0 23 1;
+#X connect 27 0 23 2;
+#X connect 28 0 29 3;
+#X connect 29 0 16 0;
+#X connect 30 0 4 0;
+#X connect 31 0 30 0;
+#X connect 31 0 32 0;
+#X connect 31 0 33 0;
+#X connect 31 0 34 0;
+#X connect 31 0 35 0;
+#X connect 32 0 20 0;
+#X connect 33 0 23 1;
+#X connect 34 0 23 2;
+#X connect 35 0 29 3;
diff --git a/gemsFit-help.pd b/gemsFit-help.pd
new file mode 100644
index 0000000..008afd0
--- /dev/null
+++ b/gemsFit-help.pd
@@ -0,0 +1,60 @@
+#N canvas 269 79 874 527 10;
+#X declare -lib Gem;
+#X text 21 10 Description: Wraps gems.fit with an additonal internal
+scaleXYZ object.;
+#X obj 88 136 gemhead;
+#X obj 88 165 pix_image;
+#X obj 88 396 pix_texture;
+#X obj 26 87 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X msg 229 241 window;
+#X obj 197 217 hradio 15 1 0 4 empty empty empty 0 -6 0 8 -262144 -1
+-1 0;
+#X msg 253 264 pixsize;
+#X msg 259 285 pixratio;
+#X floatatom 287 347 5 0 0 0 scale - -;
+#X msg 274 318 fill;
+#X text 191 180 You can change the fitting by sending the mode name
+or the fittings's number.;
+#X text 279 238 number 0;
+#X text 312 265 number 1;
+#X text 324 289 number 2;
+#X text 311 321 number 3;
+#X text 477 407 pixsize: reproduce the image \, pixel by pixel in the
+gem win.;
+#X text 476 453 fill: fills the whole gemwin;
+#X floatatom 282 381 5 0 0 1 depth - -;
+#X obj 88 419 square;
+#X text 476 374 window or win: fit to the gem window while maintaining
+the width to height ratio.;
+#X obj 26 108 mtl/gemsWin;
+#X obj 162 108 openpanel;
+#X msg 162 133 open \$1;
+#X obj 162 87 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 88 373 mtl/gemsFit window;
+#X text 408 234 Argument 1: Selects how you want the fitting.;
+#X text 408 256 Argument 2: The scale (defaults to 1).;
+#X text 408 277 Argument 3: The depth (defaults to 1).;
+#X text 408 339 Inlet 3: Determines the scaling.;
+#X text 476 429 pixratio: normalized ration of the image's size.;
+#X text 421 480 Inlet 4: depth;
+#X text 408 323 Inlet 2: selects how you want the fitting.;
+#X text 408 306 Inlet 1: gemlist.;
+#X text 23 44 tags: gems;
+#X obj 405 15 import Gem;
+#X connect 1 0 2 0;
+#X connect 2 0 25 0;
+#X connect 3 0 19 0;
+#X connect 4 0 21 0;
+#X connect 5 0 25 1;
+#X connect 6 0 25 1;
+#X connect 7 0 25 1;
+#X connect 8 0 25 1;
+#X connect 9 0 25 2;
+#X connect 10 0 25 1;
+#X connect 18 0 25 3;
+#X connect 22 0 23 0;
+#X connect 23 0 2 0;
+#X connect 24 0 22 0;
+#X connect 25 0 3 0;
diff --git a/gemsFit.pd b/gemsFit.pd
new file mode 100644
index 0000000..f821c45
--- /dev/null
+++ b/gemsFit.pd
@@ -0,0 +1,247 @@
+#N canvas 1254 97 865 661 10;
+#X obj 46 54 inlet;
+#X obj 77 399 scaleXYZ;
+#X obj 186 38 inlet mode;
+#X obj 354 37 inlet scale;
+#X obj 477 45 inlet depth;
+#X obj 103 142 t f f;
+#X obj 384 392 * 1;
+#X obj 406 297 t b f;
+#X obj 381 326 f 1;
+#N canvas 418 0 1022 698 fit 0;
+#X obj 42 -6 inlet;
+#X text 354 629 height;
+#X text 693 638 width;
+#X obj 304 632 outlet;
+#X obj 641 638 outlet;
+#X text 93 -6 gemlist;
+#X obj 42 599 outlet;
+#X text 95 600 gemlist;
+#X obj 44 168 pix_info;
+#X msg 172 109 0;
+#X msg 243 113 1;
+#X msg 299 109 2;
+#N canvas 133 18 895 686 fit2window 0;
+#X text 359 606 height;
+#X text 696 611 width;
+#X obj 309 609 outlet;
+#X obj 644 611 outlet;
+#X obj 541 84 r \$0dimen;
+#X obj 29 181 inlet;
+#X obj 35 215 route -1;
+#X obj 136 452 f 4;
+#X obj 40 284 t b b;
+#X obj 367 274 * 4;
+#X obj 39 452 f 4;
+#X obj 515 285 /;
+#X obj 339 354 moses;
+#X obj 333 496 * 4;
+#X obj 509 496 * 4;
+#X obj 124 248 /;
+#X obj 306 398 t f b;
+#X msg 336 423 1;
+#X obj 385 418 f;
+#X obj 455 435 /;
+#X obj 380 374 t b b f;
+#X obj 424 412 f;
+#X obj 368 216 min 1;
+#X connect 4 0 11 0;
+#X connect 5 0 6 0;
+#X connect 6 0 8 0;
+#X connect 6 1 15 0;
+#X connect 7 0 3 0;
+#X connect 8 0 10 0;
+#X connect 8 1 7 0;
+#X connect 9 0 10 1;
+#X connect 9 0 7 1;
+#X connect 10 0 2 0;
+#X connect 11 0 12 1;
+#X connect 11 0 18 1;
+#X connect 11 0 21 1;
+#X connect 11 0 22 0;
+#X connect 12 0 16 0;
+#X connect 12 1 20 0;
+#X connect 13 0 2 0;
+#X connect 14 0 3 0;
+#X connect 15 0 12 0;
+#X connect 16 0 13 0;
+#X connect 16 1 17 0;
+#X connect 17 0 14 0;
+#X connect 18 0 13 0;
+#X connect 19 0 14 0;
+#X connect 20 0 18 0;
+#X connect 20 1 21 0;
+#X connect 20 2 19 1;
+#X connect 21 0 19 0;
+#X connect 22 0 9 0;
+#X restore 177 444 pd fit2window;
+#N canvas 0 0 810 635 fit2originalsize 0;
+#X obj 82 26 inlet;
+#X obj 463 310 /;
+#X obj 463 440 *;
+#X obj 695 365 t f b f;
+#X obj 767 184 / 4;
+#X obj 694 252 f;
+#X obj 695 328 /;
+#X obj 629 222 t f b;
+#X obj 469 181 unpack f f;
+#X obj 555 249 t f f;
+#X obj 694 281 t b f;
+#X obj 309 609 outlet;
+#X obj 644 611 outlet;
+#X text 545 181 image width heigth (in pixels);
+#X obj 702 156 unpack f f;
+#X obj 695 303 f;
+#X obj 694 134 r \$0dimen;
+#X obj 519 212 sel -1;
+#X obj 393 249 sel -1;
+#X msg 363 366 1;
+#X msg 615 450 1;
+#X connect 0 0 8 0;
+#X connect 1 0 2 0;
+#X connect 2 0 11 0;
+#X connect 3 0 12 0;
+#X connect 3 1 2 0;
+#X connect 3 2 2 1;
+#X connect 4 0 5 1;
+#X connect 5 0 10 0;
+#X connect 6 0 3 0;
+#X connect 7 0 15 0;
+#X connect 7 1 5 0;
+#X connect 8 0 18 0;
+#X connect 8 1 17 0;
+#X connect 9 0 1 1;
+#X connect 9 1 7 0;
+#X connect 10 0 15 0;
+#X connect 10 1 6 1;
+#X connect 14 1 4 0;
+#X connect 15 0 6 0;
+#X connect 16 0 14 0;
+#X connect 17 0 20 0;
+#X connect 17 1 9 0;
+#X connect 18 0 19 0;
+#X connect 18 1 1 0;
+#X connect 19 0 11 0;
+#X connect 20 0 12 0;
+#X restore 290 442 pd fit2originalsize;
+#X obj 478 448 unpack;
+#X obj 337 123 s \$0dimen;
+#X obj 123 250 pack;
+#X obj 412 89 route float bang;
+#X obj 44 493 t a b b;
+#X obj 333 580 f 5.333;
+#X obj 497 579 f 4;
+#X obj 174 -25 inlet scale;
+#X obj 358 -23 inlet mode;
+#X obj 299 608 * 1;
+#X obj 628 609 * 1;
+#X obj 156 55 route window pixsize pixratio dimen win fill;
+#X msg 353 84 3;
+#N canvas 0 0 1024 730 fill 0;
+#X text 359 606 height;
+#X text 696 611 width;
+#X obj 309 609 outlet;
+#X obj 644 611 outlet;
+#X obj 529 143 r \$0dimen;
+#X obj 59 126 inlet;
+#X obj 443 276 /;
+#X obj 73 187 b;
+#X obj 420 332 * 4;
+#X obj 509 496 f 4;
+#X obj 327 509 f;
+#X connect 4 0 6 0;
+#X connect 5 0 7 0;
+#X connect 6 0 8 0;
+#X connect 7 0 10 0;
+#X connect 7 0 9 0;
+#X connect 8 0 10 1;
+#X connect 9 0 3 0;
+#X connect 10 0 2 0;
+#X restore 642 431 pd fill;
+#X obj 474 426 ./2dRatio;
+#X obj 158 370 zexy/demultiplex 0 1 2 3;
+#X connect 0 0 8 0;
+#X connect 8 0 18 0;
+#X connect 8 1 16 0;
+#X connect 8 2 16 1;
+#X connect 9 0 29 1;
+#X connect 10 0 29 1;
+#X connect 11 0 29 1;
+#X connect 12 0 19 0;
+#X connect 12 1 20 0;
+#X connect 13 0 19 0;
+#X connect 13 1 20 0;
+#X connect 14 0 19 0;
+#X connect 14 1 20 0;
+#X connect 16 0 29 0;
+#X connect 17 0 29 1;
+#X connect 18 0 6 0;
+#X connect 18 1 19 0;
+#X connect 18 2 20 0;
+#X connect 19 0 23 0;
+#X connect 20 0 24 0;
+#X connect 21 0 23 1;
+#X connect 21 0 24 1;
+#X connect 22 0 25 0;
+#X connect 23 0 3 0;
+#X connect 24 0 4 0;
+#X connect 25 0 9 0;
+#X connect 25 1 10 0;
+#X connect 25 2 11 0;
+#X connect 25 3 15 0;
+#X connect 25 4 9 0;
+#X connect 25 5 26 0;
+#X connect 25 6 17 0;
+#X connect 26 0 29 1;
+#X connect 27 0 19 0;
+#X connect 27 1 20 0;
+#X connect 28 0 14 0;
+#X connect 29 0 12 0;
+#X connect 29 1 13 0;
+#X connect 29 2 28 0;
+#X connect 29 3 27 0;
+#X restore 82 242 pd fit;
+#X text 614 158 gemwin width height (in pixels);
+#X obj 703 237 t b b;
+#X obj 708 390 pack;
+#X obj 698 495 s \$0dimen;
+#X obj 547 123 loadbang;
+#X obj 725 188 r GEMS;
+#X obj 653 295 value GEMSW;
+#X obj 771 296 value GEMSH;
+#X obj 309 152 tof/argument 1 window;
+#X obj 311 193 list trim;
+#X obj 492 210 tof/argument 2 1;
+#X obj 546 149 t b b b;
+#X obj 66 533 outlet;
+#X floatatom 155 312 5 0 0 0 - - -;
+#X floatatom 206 317 5 0 0 0 - - -;
+#X connect 0 0 9 0;
+#X connect 1 0 22 0;
+#X connect 2 0 9 2;
+#X connect 3 0 5 0;
+#X connect 4 0 7 0;
+#X connect 5 0 9 1;
+#X connect 5 1 8 0;
+#X connect 6 0 1 3;
+#X connect 7 0 8 0;
+#X connect 7 1 6 1;
+#X connect 8 0 6 0;
+#X connect 9 0 1 0;
+#X connect 9 1 1 1;
+#X connect 9 1 23 0;
+#X connect 9 2 1 2;
+#X connect 9 2 24 0;
+#X connect 11 0 16 0;
+#X connect 11 1 17 0;
+#X connect 12 0 13 0;
+#X connect 14 0 21 0;
+#X connect 15 0 11 0;
+#X connect 16 0 12 0;
+#X connect 17 0 12 1;
+#X connect 18 0 19 0;
+#X connect 19 0 9 2;
+#X connect 20 0 5 0;
+#X connect 21 0 18 0;
+#X connect 21 1 20 0;
+#X connect 21 2 11 0;
diff --git a/gemsImages-help.pd b/gemsImages-help.pd
new file mode 100644
index 0000000..f813cdf
--- /dev/null
+++ b/gemsImages-help.pd
@@ -0,0 +1,29 @@
+#N canvas 656 22 540 465 10;
+#X obj 21 179 gemhead;
+#X obj 27 38 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 161 188 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 103 147 5 0 0 0 - - -;
+#X text 109 22 Description: Multiple images handler. The images do
+not need to be the same dimension.;
+#X obj 27 61 mtl/gemsWin /dimen 640 480;
+#X obj 22 210 mtl/gemsImages;
+#X obj 25 329 mtl/gemsFit window;
+#X obj 25 373 rectangle 1;
+#X text 138 144 Select a previously loaded image;
+#X text 186 184 Open a panel to select an image;
+#X obj 198 232 openpanel;
+#X obj 200 210 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X text 200 253 Add an image;
+#X obj 25 284 pix_texture;
+#X connect 0 0 6 0;
+#X connect 1 0 5 0;
+#X connect 2 0 6 1;
+#X connect 3 0 6 1;
+#X connect 6 0 14 0;
+#X connect 7 0 8 0;
+#X connect 11 0 6 1;
+#X connect 12 0 11 0;
+#X connect 14 0 7 0;
diff --git a/gemsImages.pd b/gemsImages.pd
new file mode 100644
index 0000000..ed46f41
--- /dev/null
+++ b/gemsImages.pd
@@ -0,0 +1,22 @@
+#N canvas 70 104 790 664 10;
+#X obj 46 431 pix_image;
+#X msg 246 319 open \$1;
+#X obj 252 125 openpanel;
+#X obj 313 6 inlet;
+#X obj 15 22 inlet;
+#X obj 64 538 outlet;
+#X obj 315 49 route bang symbol float;
+#X obj 319 220 ./indexer;
+#X obj 271 264 unpack f s;
+#X connect 0 0 5 0;
+#X connect 1 0 0 0;
+#X connect 2 0 7 0;
+#X connect 3 0 6 0;
+#X connect 4 0 0 0;
+#X connect 6 0 2 0;
+#X connect 6 1 7 0;
+#X connect 6 2 7 2;
+#X connect 7 0 8 0;
+#X connect 7 1 8 0;
+#X connect 7 2 8 0;
+#X connect 8 1 1 0;
diff --git a/gemsLines-help.pd b/gemsLines-help.pd
new file mode 100644
index 0000000..e5cd493
--- /dev/null
+++ b/gemsLines-help.pd
@@ -0,0 +1,92 @@
+#N canvas 351 135 507 529 10;
+#X declare -lib Gem;
+#X obj 20 63 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X obj 33 162 gemhead;
+#X text 5 24 tags: gems;
+#X obj 18 90 mtl/gemsWin /dimen 320 240;
+#X text 149 426 inlet 1: gemlist;
+#X text 6 9 Description: Creates a dynamic number of lines.;
+#X obj 33 435 mtl/gemsLines 10;
+#N canvas 0 0 670 501 mouseDraw 0;
+#X obj 244 450 outlet;
+#X obj 183 44 mtl/gemsMouse;
+#X obj 391 140 table \$0x 10;
+#X obj 392 168 table \$0y 10;
+#X obj 222 136 iemlib/modulo_counter 10;
+#X obj 182 107 t l b;
+#X obj 124 140 unpack f f;
+#X obj 121 185 tabwrite \$0x;
+#X obj 178 212 tabwrite \$0y;
+#X obj 222 163 t f f b f;
+#X obj 305 250 +;
+#X obj 229 384 pack f f f 0;
+#X obj 273 331 tabread \$0x;
+#X obj 361 346 tabread \$0y;
+#X obj 242 295 t f f f;
+#X obj 271 219 tof/iterate;
+#X msg 269 185 10;
+#X obj 296 272 maxlib/wrap 0 10;
+#X obj 219 256 t f f;
+#X obj 183 76 maxlib/speedlim 50;
+#X connect 1 0 19 0;
+#X connect 4 0 9 0;
+#X connect 5 0 6 0;
+#X connect 5 1 4 0;
+#X connect 6 0 7 0;
+#X connect 6 1 8 0;
+#X connect 9 0 7 1;
+#X connect 9 1 8 1;
+#X connect 9 2 16 0;
+#X connect 9 3 10 1;
+#X connect 10 0 17 0;
+#X connect 11 0 0 0;
+#X connect 12 0 11 1;
+#X connect 13 0 11 2;
+#X connect 14 1 12 0;
+#X connect 14 2 13 0;
+#X connect 15 0 18 0;
+#X connect 16 0 15 0;
+#X connect 17 0 14 0;
+#X connect 18 0 11 0;
+#X connect 18 1 10 0;
+#X connect 19 0 5 0;
+#X restore 79 272 pd mouseDraw;
+#X text 150 485 inlet 3: create a # of lines;
+#X text 269 457 line# x y z;
+#X text 150 440 inlet 2: control each line with the following format:
+;
+#X text 162 274 Mouve your mouse in the gem window;
+#X msg 143 301 0 -1 -1 0;
+#X text 214 302 Positions line# 0 to point -1 -1 0;
+#X text 220 327 Positions line# 5 to point 3 2 0;
+#X msg 160 328 5 3 2 0;
+#N canvas 0 27 736 449 random 0;
+#X obj 174 97 inlet;
+#X obj 174 161 tof/iterate;
+#X msg 174 130 10;
+#X obj 175 195 t f b b;
+#X obj 215 234 mtl/randomFloat -5.3 5.3;
+#X obj 402 232 mtl/randomFloat -4 4;
+#X obj 187 290 pack f f f 0;
+#X obj 185 348 outlet;
+#X connect 0 0 2 0;
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 6 0;
+#X connect 3 1 4 0;
+#X connect 3 2 5 0;
+#X connect 4 0 6 1;
+#X connect 5 0 6 2;
+#X connect 6 0 7 0;
+#X restore 183 378 pd random;
+#X obj 187 356 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 409 11 import Gem;
+#X connect 0 0 3 0;
+#X connect 1 0 6 0;
+#X connect 7 0 6 1;
+#X connect 12 0 6 1;
+#X connect 15 0 6 1;
+#X connect 16 0 6 1;
+#X connect 17 0 16 0;
diff --git a/gemsLines.pd b/gemsLines.pd
new file mode 100644
index 0000000..7e9bc29
--- /dev/null
+++ b/gemsLines.pd
@@ -0,0 +1,149 @@
+#N canvas 39 54 970 527 10;
+#N canvas 0 22 502 352 \$0-dynamicpatch 0;
+#X obj 150 40 route 0 1 2 3 4;
+#X obj 150 15 r 1324xyz;
+#X obj 10 15 r 1324gem;
+#X obj 10 40 GEMglVertex3fv;
+#X obj 10 40 GEMglVertex3fv;
+#X obj 10 40 GEMglVertex3fv;
+#X obj 10 40 GEMglVertex3fv;
+#X obj 10 40 GEMglVertex3fv;
+#X obj 10 60 s 1324gemout;
+#X connect 0 0 3 1;
+#X connect 0 1 4 1;
+#X connect 0 2 5 1;
+#X connect 0 3 6 1;
+#X connect 0 4 7 1;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 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 restore 291 18 pd \$0-dynamicpatch;
+#X obj 111 74 f \$1;
+#X obj 151 120 until;
+#X obj 185 14 inlet;
+#X obj 112 15 loadbang;
+#X obj -113 14 inlet gemchain;
+#X obj -112 96 s \$0gem;
+#X msg 195 121 0;
+#X obj 335 135 symbol;
+#X msg 336 159 \; \$1 clear;
+#X obj 335 93 zexy/makesymbol pd-%s-dynamicpatch;
+#X obj 335 73 f \$0;
+#X text 359 114 id of the dynamic subpatch;
+#X obj 151 142 f 0;
+#X obj 189 144 + 1;
+#X obj 268 212 pack f s;
+#X obj 268 191 f \$0;
+#X obj 35 -16 inlet knot_xyz;
+#X obj -87 468 outlet gemchain;
+#X obj -87 416 r \$0gemout;
+#X msg 666 221 set;
+#X msg 667 242 addsemi;
+#X msg 668 312 add2 \$1;
+#X obj 548 214 until;
+#X msg 588 220 0;
+#X obj 548 244 f 0;
+#X obj 578 243 + 1;
+#X obj 530 315 symbol;
+#X obj 181 167 t f f f;
+#X obj 149 217 pack f f f s;
+#X obj 530 152 f \$1;
+#X text 168 -3 objects: 0:route 0-n-1 \, 1:r 0xyz \, 2:r 0gem;
+#X obj 181 191 + 2;
+#X obj 212 193 + 3;
+#X text 22 370 dollards: 1:route number \, 2:previous object \, 3:current
+object;
+#X obj 19 224 pack f s f f;
+#X obj 33 148 t f f;
+#X obj 33 174 + 2;
+#X obj 63 175 + 3;
+#X msg 19 248 \; \$2 obj 10 60 s \$3gemout \; \$2 connect \$1 0 \$4
+0;
+#X msg 670 263 adddollar 1;
+#X msg 268 234 \; \$2 obj 150 15 r \$1xyz \; \$2 obj 10 15 r \$1gem
+\; \$2 connect 1 0 0 0 \;;
+#X msg 531 373 \; \$1 obj 150 40 route 0 1 2 3 4;
+#X msg 670 288 add2 obj 150 40 route;
+#X msg 150 299 \; \$4 obj 10 40 GEMglVertex3fv \; \$4 connect \$2 0
+\$3 0 \; \$4 connect 0 \$1 \$3 1 \;;
+#X obj 186 38 t f b b f b;
+#X obj -112 72 GEMglBegin;
+#X obj -47 53 GLdefine GL_LINE_STRIP;
+#X obj -47 34 loadbang;
+#X obj -88 440 GEMglEnd;
+#X obj 531 178 t b f b b b b b;
+#X obj 106 35 t b b b b;
+#X obj 111 97 t f f f;
+#X obj 38 10 s \$0xyz;
+#X msg 236 17 0;
+#X connect 1 0 52 0;
+#X connect 2 0 13 0;
+#X connect 3 0 45 0;
+#X connect 4 0 51 0;
+#X connect 5 0 46 0;
+#X connect 7 0 13 1;
+#X connect 8 0 9 0;
+#X connect 10 0 8 0;
+#X connect 10 0 15 1;
+#X connect 10 0 27 1;
+#X connect 10 0 29 3;
+#X connect 10 0 35 1;
+#X connect 11 0 10 0;
+#X connect 11 0 35 2;
+#X connect 13 0 14 0;
+#X connect 13 0 28 0;
+#X connect 14 0 13 1;
+#X connect 15 0 41 0;
+#X connect 16 0 15 0;
+#X connect 17 0 53 0;
+#X connect 19 0 49 0;
+#X connect 20 0 42 0;
+#X connect 21 0 42 0;
+#X connect 22 0 42 0;
+#X connect 23 0 25 0;
+#X connect 24 0 25 1;
+#X connect 25 0 26 0;
+#X connect 25 0 22 0;
+#X connect 26 0 25 1;
+#X connect 27 0 42 0;
+#X connect 28 0 29 0;
+#X connect 28 1 32 0;
+#X connect 28 2 33 0;
+#X connect 29 0 44 0;
+#X connect 30 0 50 0;
+#X connect 32 0 29 1;
+#X connect 33 0 29 2;
+#X connect 35 0 39 0;
+#X connect 36 0 37 0;
+#X connect 36 1 38 0;
+#X connect 37 0 35 0;
+#X connect 38 0 35 3;
+#X connect 40 0 42 0;
+#X connect 43 0 42 0;
+#X connect 45 0 1 0;
+#X connect 45 1 7 0;
+#X connect 45 2 16 0;
+#X connect 45 3 30 0;
+#X connect 45 4 8 0;
+#X connect 46 0 6 0;
+#X connect 47 0 46 1;
+#X connect 48 0 47 0;
+#X connect 49 0 18 0;
+#X connect 50 0 27 0;
+#X connect 50 1 23 0;
+#X connect 50 2 43 0;
+#X connect 50 3 40 0;
+#X connect 50 4 21 0;
+#X connect 50 5 20 0;
+#X connect 50 6 24 0;
+#X connect 51 0 1 0;
+#X connect 51 1 16 0;
+#X connect 51 2 30 0;
+#X connect 51 3 11 0;
+#X connect 52 0 36 0;
+#X connect 52 1 2 0;
+#X connect 54 0 45 0;
diff --git a/gemsLoop-help.pd b/gemsLoop-help.pd
new file mode 100644
index 0000000..4414ff5
--- /dev/null
+++ b/gemsLoop-help.pd
@@ -0,0 +1,41 @@
+#N canvas 533 102 521 605 10;
+#X declare -lib Gem;
+#X obj 98 103 gemhead;
+#X obj 140 169 bng 15 250 50 0 empty empty load_movie 0 -6 0 8 -262144
+-1 -1;
+#X obj 160 358 tgl 15 0 empty empty REC 0 -6 0 8 -258699 -262144 -1
+0 1;
+#X obj 98 537 pix_texture;
+#X floatatom 127 486 5 0 0 1 current_frame - -;
+#X floatatom 156 464 5 0 0 1 frames_recorded - -;
+#X obj 186 446 tgl 15 0 empty empty rec_status 0 -6 0 8 -262144 -1
+-1 0 1;
+#X obj 302 100 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X floatatom 192 358 5 0 0 2 speed - -;
+#X floatatom 234 361 5 0 0 2 frame - -;
+#X text 10 9 Description: Loops an image sequence (frames) with variable
+speed playback and seek function.;
+#X obj 302 128 mtl/gemsWin /dimen 320 240;
+#X obj 98 240 mtl/gemsMovies;
+#X obj 98 409 mtl/gemsLoop 32;
+#X msg 215 185 1;
+#X obj 98 562 rectangle;
+#X obj 98 509 mtl/gemsFit window;
+#X text 204 410 Argument: maximum number of frames.;
+#X text 9 42 tags: gems;
+#X obj 444 15 import Gem;
+#X connect 0 0 12 0;
+#X connect 1 0 12 1;
+#X connect 2 0 13 1;
+#X connect 3 0 15 0;
+#X connect 7 0 11 0;
+#X connect 8 0 13 2;
+#X connect 9 0 13 3;
+#X connect 12 0 13 0;
+#X connect 13 0 16 0;
+#X connect 13 1 4 0;
+#X connect 13 2 5 0;
+#X connect 13 3 6 0;
+#X connect 14 0 12 2;
+#X connect 16 0 3 0;
diff --git a/gemsLoop.pd b/gemsLoop.pd
new file mode 100644
index 0000000..599311c
--- /dev/null
+++ b/gemsLoop.pd
@@ -0,0 +1,214 @@
+#N canvas 496 227 1104 687 10;
+#X obj 110 292 pix_buffer_write \$0loop;
+#X obj 478 -29 inlet on/off;
+#X obj -9 627 outlet gemlist;
+#X obj 157 65 inlet source_video(gemlist);
+#X obj 300 473 t f f;
+#X obj 532 93 sel 0 1;
+#X obj 567 201 f;
+#X obj 625 210 + 1;
+#X obj 546 307 f;
+#X msg 620 161 0;
+#X obj 478 126 t b b;
+#X msg 446 173 0;
+#X obj 559 537 outlet recorded;
+#X obj 414 537 outlet playing;
+#X msg 544 144 1;
+#X obj 648 278 >= \$1;
+#X obj 654 307 sel 1;
+#X msg 652 339 0;
+#X obj -68 132 pix_buffer \$0loop \$1;
+#X obj 683 33 change;
+#X obj 763 545 outlet status;
+#X obj 691 117 t f f;
+#X obj 549 235 t f f f f;
+#X obj 749 178 f \$1;
+#X obj 554 119 t b b b b;
+#X obj 475 1 route bang;
+#X msg 554 39 set 0 \, 1;
+#X text -29 -8 BUG: The default image overrides the main gemlist!;
+#N canvas 0 22 1022 686 videoplayer.guts 0;
+#X obj 337 600 outlet;
+#X obj 321 513 t f f;
+#X obj 307 345 f 1;
+#X obj 319 479 int;
+#X obj 398 210 unpack;
+#X obj 353 378 * 0;
+#X obj 400 383 * 1;
+#X obj 352 319 t f f;
+#X obj 401 329 t b f;
+#X obj 446 325 t b f;
+#X obj 456 455 expr $f1*($f3-$f2)+$f2;
+#X obj 464 425 pack f 0 1;
+#X obj 139 612 outlet;
+#N canvas 0 22 478 328 fcounter 0;
+#X obj 145 159 t f f f;
+#X obj 165 214 -;
+#X obj 182 184 int;
+#X obj 155 261 +;
+#X obj 110 21 inlet;
+#X obj 221 20 inlet;
+#N canvas 0 22 474 324 count 0;
+#X obj 84 48 inlet;
+#X obj 192 274 outlet;
+#X obj 89 80 route bang;
+#X obj 176 139 t b f;
+#X obj 182 219 t f f;
+#X obj 173 171 f;
+#X obj 291 49 inlet;
+#X obj 289 78 route bang;
+#X msg 288 120 0;
+#X obj 186 194 + 1;
+#X obj 183 39 inlet;
+#X connect 0 0 2 0;
+#X connect 2 0 5 0;
+#X connect 2 1 3 0;
+#X connect 3 0 5 0;
+#X connect 3 1 9 1;
+#X connect 4 0 1 0;
+#X connect 4 1 5 1;
+#X connect 5 0 9 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 7 1 5 1;
+#X connect 8 0 5 1;
+#X connect 9 0 4 0;
+#X connect 10 0 9 1;
+#X restore 149 99 pd count;
+#X obj 163 366 outlet;
+#X obj 282 20 inlet;
+#X obj 348 23 inlet;
+#X obj 291 218 -;
+#X obj 162 329 +;
+#X obj 252 92 t b f f f;
+#X obj 147 296 t f f;
+#X obj 76 182 moses 0;
+#X obj 52 209 - 1;
+#X obj 50 261 + 1;
+#X obj 46 236 mod 0;
+#X obj 117 221 mod 0;
+#X obj 219 68 - 0;
+#X connect 0 0 14 0;
+#X connect 0 1 1 0;
+#X connect 0 2 2 0;
+#X connect 1 0 3 1;
+#X connect 2 0 1 1;
+#X connect 3 0 13 0;
+#X connect 4 0 6 0;
+#X connect 5 0 19 0;
+#X connect 6 0 0 0;
+#X connect 8 0 12 0;
+#X connect 9 0 10 0;
+#X connect 10 0 17 1;
+#X connect 10 0 18 1;
+#X connect 11 0 7 0;
+#X connect 12 0 10 0;
+#X connect 12 1 10 1;
+#X connect 12 2 11 1;
+#X connect 12 3 19 1;
+#X connect 13 0 11 0;
+#X connect 13 1 6 2;
+#X connect 14 0 15 0;
+#X connect 14 1 18 0;
+#X connect 15 0 17 0;
+#X connect 16 0 3 0;
+#X connect 17 0 16 0;
+#X connect 18 0 3 0;
+#X connect 19 0 6 2;
+#X restore 320 440 pd fcounter;
+#X obj 92 220 t a b;
+#X obj 488 597 outlet;
+#X obj 296 391 t f f;
+#X obj 536 386 - 1;
+#X obj 387 569 s \$0frame;
+#X obj 732 585 s \$0speed;
+#X obj 310 179 route float;
+#X obj 623 199 inlet relative_frame;
+#X obj 788 249 inlet frame;
+#X obj 851 288 inlet frames;
+#X obj 439 152 inlet loop;
+#X obj 269 153 inlet speed;
+#X obj 92 157 inlet gemlist;
+#X connect 1 0 18 0;
+#X connect 1 1 0 0;
+#X connect 2 0 16 0;
+#X connect 3 0 1 0;
+#X connect 4 0 8 0;
+#X connect 4 1 9 0;
+#X connect 5 0 11 1;
+#X connect 5 0 13 2;
+#X connect 6 0 13 3;
+#X connect 6 0 17 0;
+#X connect 7 0 5 0;
+#X connect 7 1 6 0;
+#X connect 8 0 5 0;
+#X connect 8 1 5 1;
+#X connect 9 0 6 0;
+#X connect 9 1 6 1;
+#X connect 10 0 13 1;
+#X connect 11 0 10 0;
+#X connect 13 0 3 0;
+#X connect 14 0 12 0;
+#X connect 14 1 2 0;
+#X connect 16 0 13 0;
+#X connect 16 1 15 0;
+#X connect 17 0 11 2;
+#X connect 20 0 2 1;
+#X connect 20 0 19 0;
+#X connect 21 0 11 0;
+#X connect 22 0 13 1;
+#X connect 23 0 7 0;
+#X connect 24 0 4 0;
+#X connect 25 0 20 0;
+#X connect 26 0 14 0;
+#X restore 100 398 pd videoplayer.guts;
+#X msg 439 382 0;
+#X obj 803 -18 inlet speed;
+#X obj 922 -15 inlet frame;
+#X obj -1 519 pix_buffer_read \$0loop;
+#X obj 139 212 t a b;
+#X obj 143 475 zexy/multiplex 0 1;
+#X connect 0 0 28 0;
+#X connect 1 0 25 0;
+#X connect 3 0 33 0;
+#X connect 4 0 13 0;
+#X connect 4 1 34 0;
+#X connect 5 0 10 0;
+#X connect 5 1 24 0;
+#X connect 6 0 22 0;
+#X connect 7 0 6 1;
+#X connect 8 0 12 0;
+#X connect 8 0 28 5;
+#X connect 9 0 6 1;
+#X connect 10 0 11 0;
+#X connect 10 1 8 0;
+#X connect 11 0 34 2;
+#X connect 14 0 34 2;
+#X connect 15 0 16 0;
+#X connect 16 0 17 0;
+#X connect 17 0 19 0;
+#X connect 19 0 21 0;
+#X connect 21 0 20 0;
+#X connect 21 1 5 0;
+#X connect 22 0 15 0;
+#X connect 22 1 8 1;
+#X connect 22 2 0 1;
+#X connect 22 2 34 1;
+#X connect 22 3 7 0;
+#X connect 23 0 28 5;
+#X connect 24 0 14 0;
+#X connect 24 1 9 0;
+#X connect 24 2 23 0;
+#X connect 24 3 29 0;
+#X connect 25 0 26 0;
+#X connect 25 1 19 0;
+#X connect 26 0 19 0;
+#X connect 28 0 32 0;
+#X connect 28 1 4 0;
+#X connect 29 0 28 4;
+#X connect 30 0 28 1;
+#X connect 31 0 28 4;
+#X connect 32 0 2 0;
+#X connect 33 0 0 0;
+#X connect 33 1 6 0;
+#X connect 34 0 32 1;
diff --git a/gemsMouse-help.pd b/gemsMouse-help.pd
new file mode 100644
index 0000000..1a89d6f
--- /dev/null
+++ b/gemsMouse-help.pd
@@ -0,0 +1,33 @@
+#N canvas 1 57 545 398 10;
+#X declare -lib Gem;
+#X obj 17 91 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X msg 17 350 5.13333 -0.15;
+#X msg 71 297 0 1.06667 -0.166667;
+#X msg 118 235 0 1.3 0.533333;
+#X msg 150 182 0 1.3 0.533333;
+#X text 195 265 left button: state(up/down) X Y;
+#X text 240 209 middle button: state(up/down) X Y;
+#X text 281 156 right button: state(up/down) X Y;
+#X text 106 130 First inlet is a scaling factor.;
+#X obj 16 109 mtl/gemsWin;
+#X obj 17 133 mtl/gemsMouse;
+#X obj 17 320 cyclone/prepend set;
+#X obj 71 267 cyclone/prepend set;
+#X obj 118 209 cyclone/prepend set;
+#X obj 150 156 cyclone/prepend set;
+#X text 143 320 X Y;
+#X text 16 55 tags: gems;
+#X text 17 14 Description: sends out mouse events which occur in the
+GEM window. The coordinates match the coordinates of the GEM world.
+;
+#X obj 441 17 import Gem;
+#X connect 0 0 9 0;
+#X connect 10 0 11 0;
+#X connect 10 1 12 0;
+#X connect 10 2 13 0;
+#X connect 10 3 14 0;
+#X connect 11 0 1 0;
+#X connect 12 0 2 0;
+#X connect 13 0 3 0;
+#X connect 14 0 4 0;
diff --git a/gemsMouse.pd b/gemsMouse.pd
new file mode 100644
index 0000000..2b87298
--- /dev/null
+++ b/gemsMouse.pd
@@ -0,0 +1,91 @@
+#N canvas 992 0 1009 711 10;
+#X obj 160 290 pack;
+#X obj 33 406 *;
+#X obj 157 330 /;
+#X obj 178 413 / 2;
+#X obj 162 386 t f f;
+#X obj 59 462 -;
+#X obj 202 553 pack;
+#X obj 543 241 * -8;
+#X obj 152 359 * 8;
+#X obj 586 295 + 4;
+#X obj 121 86 gemmouse 1 1;
+#X obj 54 710 outlet position;
+#X obj 204 590 t a a;
+#X obj 321 727 outlet left_button_state&position;
+#X obj 321 688 list prepend;
+#X obj 501 553 list;
+#X obj 26 329 clip 0 1;
+#X obj 230 153 clip 0 1;
+#X obj 119 153 loadbang;
+#X obj 121 181 t b b;
+#X obj 657 724 outlet mid_button;
+#X obj 862 704 outlet right_button;
+#X obj 524 411 t b b f;
+#X msg 464 473 0;
+#X obj 655 677 list prepend;
+#X obj 869 655 list prepend;
+#X obj 683 427 t b b f;
+#X obj 864 432 t b b f;
+#X msg 685 477 1;
+#X msg 875 483 2;
+#X obj 637 36 inlet scale;
+#X obj 498 621 zexy/demultiplex 0 1 2;
+#X obj 149 517 / 1;
+#X obj 261 500 / 1;
+#X obj 170 455 t b b f f;
+#X obj 75 223 value GEMSW;
+#X obj 187 227 value GEMSH;
+#X obj 27 121 r GEMS;
+#X connect 0 0 2 0;
+#X connect 1 0 5 0;
+#X connect 2 0 8 0;
+#X connect 3 0 5 1;
+#X connect 4 0 1 1;
+#X connect 4 1 3 0;
+#X connect 5 0 32 0;
+#X connect 6 0 12 0;
+#X connect 7 0 9 0;
+#X connect 8 0 4 0;
+#X connect 9 0 33 0;
+#X connect 10 0 16 0;
+#X connect 10 1 17 0;
+#X connect 10 2 22 0;
+#X connect 10 3 26 0;
+#X connect 10 4 27 0;
+#X connect 12 0 11 0;
+#X connect 12 1 15 1;
+#X connect 14 0 13 0;
+#X connect 15 0 31 0;
+#X connect 16 0 1 0;
+#X connect 17 0 7 0;
+#X connect 18 0 19 0;
+#X connect 19 0 35 0;
+#X connect 19 1 36 0;
+#X connect 22 0 15 0;
+#X connect 22 1 23 0;
+#X connect 22 2 14 1;
+#X connect 23 0 31 1;
+#X connect 24 0 20 0;
+#X connect 25 0 21 0;
+#X connect 26 0 15 0;
+#X connect 26 1 28 0;
+#X connect 26 2 24 1;
+#X connect 27 0 15 0;
+#X connect 27 1 29 0;
+#X connect 27 2 25 1;
+#X connect 28 0 31 1;
+#X connect 29 0 31 1;
+#X connect 30 0 34 0;
+#X connect 31 0 14 0;
+#X connect 31 1 24 0;
+#X connect 31 2 25 0;
+#X connect 32 0 6 0;
+#X connect 33 0 6 1;
+#X connect 34 0 32 0;
+#X connect 34 1 33 0;
+#X connect 34 2 32 1;
+#X connect 34 3 33 1;
+#X connect 35 0 0 0;
+#X connect 36 0 0 1;
+#X connect 37 0 19 0;
diff --git a/gemsMovies-help.pd b/gemsMovies-help.pd
new file mode 100644
index 0000000..ff19b0b
--- /dev/null
+++ b/gemsMovies-help.pd
@@ -0,0 +1,79 @@
+#N canvas 560 88 653 630 10;
+#X declare -lib Gem;
+#X floatatom 96 182 5 0 0 0 - - -;
+#X floatatom 141 225 5 0 0 0 - - -;
+#X floatatom 145 249 5 0 0 0 - - -;
+#X floatatom 116 489 5 0 0 0 - - -;
+#X text 151 483 width;
+#X text 181 467 height;
+#X floatatom 143 469 5 0 0 0 - - -;
+#X floatatom 89 509 5 0 0 0 - - -;
+#X text 131 507 #frames;
+#X obj 144 206 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 0;
+#X text 132 181 Playback speed;
+#X text 6 6 Description: A movie file manager and player.;
+#X text 439 186 SUMMARY:;
+#X text 439 206 Inlet_1: Gemlist;
+#X text 440 220 Inlet_2: File managment;
+#X text 440 236 Inlet_3: PLayback rate;
+#X text 444 276 Outlet_1: Gemlist;
+#X obj 187 67 tgl 15 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0
+1;
+#X floatatom 74 138 5 0 0 0 - - -;
+#X floatatom 171 446 5 0 0 0 - - -;
+#X obj 71 66 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 10 67 gemhead;
+#X obj 10 534 pix_texture;
+#X obj 187 91 mtl/gemsWin /dimen 640 480;
+#X obj 71 90 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 71 110 openpanel;
+#X obj 10 560 mtl/gemsFit window;
+#X obj 10 587 rectangle;
+#X text 115 134 You can recall movies by an index number once they
+are loaded.;
+#X text 6 20 tags: gems;
+#X text 441 251 Inlet_4: Frame select;
+#X text 442 294 Outlet_2: Movie info;
+#X text 442 310 Outlet_3: End of file (bang);
+#X text 214 303 Loop;
+#X text 176 225 Relative frame (0-1);
+#X msg 144 271 abs \$1;
+#X text 192 265 Absolute frame;
+#X msg 161 304 0.25 0.3;
+#X msg 191 333 0 0.5;
+#X msg 190 358 0 1;
+#X obj 89 401 unpack f f f f s;
+#X symbolatom 206 424 50 0 0 0 - - -;
+#X text 510 423 filename;
+#X obj 10 354 mtl/gemsMovies;
+#X obj 95 160 iemlib/init 1;
+#X obj 566 9 import Gem;
+#X text 206 446 frame rate(fps) \, defaults to 20 with old versions
+of Gem;
+#X connect 0 0 43 2;
+#X connect 1 0 43 3;
+#X connect 2 0 35 0;
+#X connect 9 0 1 0;
+#X connect 17 0 23 0;
+#X connect 18 0 43 1;
+#X connect 20 0 43 1;
+#X connect 21 0 43 0;
+#X connect 22 0 26 0;
+#X connect 24 0 25 0;
+#X connect 25 0 43 1;
+#X connect 26 0 27 0;
+#X connect 35 0 43 3;
+#X connect 37 0 43 4;
+#X connect 38 0 43 4;
+#X connect 39 0 43 4;
+#X connect 40 0 7 0;
+#X connect 40 1 3 0;
+#X connect 40 2 6 0;
+#X connect 40 3 19 0;
+#X connect 40 4 41 0;
+#X connect 43 0 22 0;
+#X connect 43 1 40 0;
+#X connect 44 0 0 0;
diff --git a/gemsMovies.pd b/gemsMovies.pd
new file mode 100644
index 0000000..a610294
--- /dev/null
+++ b/gemsMovies.pd
@@ -0,0 +1,254 @@
+#N canvas 0 25 1009 686 10;
+#X obj -53 500 r \$0out;
+#X obj 269 -10 openpanel;
+#N canvas 1282 217 1022 686 loadmovie 0;
+#X obj -5 357 r \$0info;
+#N canvas 1026 82 1022 686 make_pix_film 0;
+#X obj 21 1 inlet;
+#X obj -206 99 * 7;
+#X obj -223 164 + 1;
+#X obj -196 165 + 2;
+#X obj -169 164 + 3;
+#X obj -142 164 + 4;
+#X obj -115 165 + 5;
+#X obj -86 165 + 6;
+#X obj -207 128 t f f f f f f f;
+#X obj 480 119 s pd-\$0films;
+#X msg 481 89 clear;
+#X obj 93 483 s pd-\$0films;
+#X obj -70 254 pack f f f f f f f;
+#X obj 137 253 pack s \$0;
+#X obj 50 63 t l b;
+#X obj 67 98 unpack f s;
+#X obj 537 58 r \$0empty;
+#X msg -58 319 connect \$1 0 \$7 0 \, connect \$2 0 \$6 0 \, connect
+\$6 0 \$7 1 \, connect \$7 0 \$3 0 \, connect \$7 1 \$4 0 \, connect
+\$7 2 \$5 0;
+#X msg 117 306 obj 10 40 pix_film \, obj 10 15 r \$1in \, obj 100 0
+r \$1frame \, obj 10 65 s \$2out \, obj 110 65 s \$2info \, obj 220
+65 s \$2end \, obj 100 15 f;
+#X connect 0 0 14 0;
+#X connect 1 0 8 0;
+#X connect 2 0 12 0;
+#X connect 3 0 12 1;
+#X connect 4 0 12 2;
+#X connect 5 0 12 3;
+#X connect 6 0 12 4;
+#X connect 7 0 12 5;
+#X connect 8 0 2 0;
+#X connect 8 1 3 0;
+#X connect 8 2 4 0;
+#X connect 8 3 5 0;
+#X connect 8 4 6 0;
+#X connect 8 5 7 0;
+#X connect 8 6 12 6;
+#X connect 10 0 9 0;
+#X connect 12 0 17 0;
+#X connect 13 0 18 0;
+#X connect 14 0 15 0;
+#X connect 15 0 1 0;
+#X connect 15 1 13 0;
+#X connect 16 0 10 0;
+#X connect 17 0 11 0;
+#X connect 18 0 11 0;
+#X restore 269 383 pd make_pix_film;
+#X text 376 383 make pix_films;
+#X obj 282 -4 inlet add;
+#X obj 59 0 inlet get_by_index;
+#N canvas 1358 271 590 440 \$0films 0;
+#X restore 483 152 pd \$0films;
+#X obj 207 203 unpack f s;
+#X msg 252 294 symbol \$2/\$1;
+#X obj 340 310 r \$0empty;
+#X obj 228 94 r \$0empty;
+#X obj 174 229 pack f \$0;
+#X obj 101 470 iemlib/iem_send;
+#X obj 211 261 t l l;
+#X msg 101 424 colorspace RGBA \, open \$1;
+#X obj 101 385 symbol;
+#X obj 445 267 s \$0empty;
+#X obj 445 236 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X msg 173 385 set \$2/\$1in;
+#X text 199 150 Check if file has been loaded;
+#X text 317 343 Check if a pixfilm has been created;
+#X obj -65 341 spigot;
+#X msg 23 319 1;
+#X msg -58 450 0;
+#X msg -65 370 \$1;
+#X obj 95 163 ./indexer;
+#X obj 252 344 ./indexer;
+#X obj 279 634 outlet;
+#X text 281 653 symbol;
+#X obj 395 537 cyclone/coll;
+#C restore;
+#X obj 37 290 t l b b l l;
+#X msg 50 411 \$1;
+#X obj 21 508 list prepend;
+#X obj 519 624 outlet;
+#X msg 277 608 symbol \$2/\$1;
+#X obj 285 541 pack f \$0;
+#X obj 295 484 t f f;
+#X obj -8 445 f;
+#X obj -23 398 t b b l;
+#X obj 371 467 unpack f s;
+#X obj 513 587 pack f f f f s;
+#X obj 447 433 route bang;
+#X text 532 656 frames \, width \, height \, fps \, filename;
+#X connect 0 0 37 0;
+#X connect 3 0 24 0;
+#X connect 4 0 24 2;
+#X connect 6 0 10 0;
+#X connect 6 1 14 1;
+#X connect 6 1 39 4;
+#X connect 7 0 25 0;
+#X connect 8 0 25 1;
+#X connect 9 0 24 1;
+#X connect 10 0 12 0;
+#X connect 12 0 29 0;
+#X connect 12 1 7 0;
+#X connect 13 0 11 0;
+#X connect 14 0 13 0;
+#X connect 16 0 15 0;
+#X connect 17 0 11 1;
+#X connect 20 0 23 0;
+#X connect 21 0 20 1;
+#X connect 22 0 20 1;
+#X connect 23 0 24 1;
+#X connect 24 0 38 0;
+#X connect 24 1 6 0;
+#X connect 24 2 40 0;
+#X connect 25 1 1 0;
+#X connect 28 0 39 0;
+#X connect 29 0 20 0;
+#X connect 29 1 14 0;
+#X connect 29 2 21 0;
+#X connect 29 3 17 0;
+#X connect 29 4 30 0;
+#X connect 30 0 31 1;
+#X connect 30 0 36 1;
+#X connect 31 0 28 0;
+#X connect 33 0 26 0;
+#X connect 34 0 33 0;
+#X connect 35 0 34 0;
+#X connect 35 1 28 0;
+#X connect 36 0 35 0;
+#X connect 37 0 22 0;
+#X connect 37 1 36 0;
+#X connect 37 2 31 0;
+#X connect 38 0 35 0;
+#X connect 38 1 39 4;
+#X connect 39 0 32 0;
+#X connect 40 1 38 0;
+#X restore 324 171 pd loadmovie;
+#X obj 640 183 s \$0empty;
+#X obj 644 141 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 65 -101 inlet file_manage;
+#X obj 239 -101 inlet play_speed;
+#X obj -62 -95 inlet gemlist;
+#X obj -53 542 outlet gemlist;
+#X obj 414 525 outlet info;
+#X obj 66 -76 route float bang;
+#X obj 361 -9 tof/path;
+#X obj -58 424 iemlib/iem_send \$0out;
+#X msg 234 341 set \$1in;
+#X obj 247 465 iemlib/iem_send;
+#X msg 389 384 set \$1frame;
+#X obj 465 -100 inlet frame;
+#X msg 522 271 \$1;
+#X obj 531 336 *;
+#X obj 179 62 value GEMSFPS;
+#X obj 179 14 loadbang;
+#X obj 132 17 r GEMS;
+#X obj 309 243 t a a;
+#X obj 392 209 t l l l;
+#X obj 169 137 /;
+#X obj 176 86 t b f;
+#X msg 165 112 1;
+#X obj 9 117 * 0;
+#X obj 8 84 f 0;
+#X obj -58 -12 t a b;
+#X obj 10 280 maxlib/wrap 0 100;
+#X obj 12 344 t f f;
+#X obj 9 235 + 0;
+#X obj 9 196 * 1;
+#X obj 621 -95 inlet loop;
+#X obj 545 -2 unpack f f;
+#X obj 466 109 route abs;
+#X obj 254 381 t f f;
+#X obj 542 66 * 0;
+#X obj 592 73 * 1;
+#X obj 705 -39 t b b f f;
+#X msg 109 177 \$4;
+#X obj 570 128 -;
+#X obj 499 169 * 1;
+#X obj 563 157 abs;
+#X obj 507 206 + 0;
+#X obj 540 101 t f f;
+#X obj 542 38 f 0;
+#X obj 592 46 f 1;
+#X text 528 522 frames \, width \, height \, fps \, filename;
+#X connect 0 0 8 0;
+#X connect 1 0 2 1;
+#X connect 2 0 22 0;
+#X connect 2 1 23 0;
+#X connect 4 0 3 0;
+#X connect 5 0 10 0;
+#X connect 6 0 28 1;
+#X connect 7 0 29 0;
+#X connect 10 0 2 0;
+#X connect 10 1 1 0;
+#X connect 10 2 11 0;
+#X connect 11 0 2 1;
+#X connect 13 0 12 1;
+#X connect 15 0 14 1;
+#X connect 16 0 36 0;
+#X connect 17 0 18 1;
+#X connect 17 0 40 0;
+#X connect 18 0 37 0;
+#X connect 19 0 25 0;
+#X connect 20 0 19 0;
+#X connect 21 0 19 0;
+#X connect 22 0 13 0;
+#X connect 22 1 15 0;
+#X connect 23 0 9 0;
+#X connect 23 1 17 0;
+#X connect 23 2 41 0;
+#X connect 24 0 27 1;
+#X connect 25 0 26 0;
+#X connect 25 1 24 1;
+#X connect 26 0 24 0;
+#X connect 27 0 33 0;
+#X connect 28 0 27 0;
+#X connect 29 0 12 0;
+#X connect 29 1 28 0;
+#X connect 30 0 31 0;
+#X connect 31 0 14 0;
+#X connect 31 1 32 1;
+#X connect 32 0 30 0;
+#X connect 33 0 32 0;
+#X connect 34 0 35 0;
+#X connect 35 0 47 0;
+#X connect 35 1 48 0;
+#X connect 36 0 37 0;
+#X connect 36 1 43 0;
+#X connect 37 0 32 1;
+#X connect 37 1 14 0;
+#X connect 38 0 30 1;
+#X connect 38 0 46 0;
+#X connect 39 0 30 2;
+#X connect 39 0 42 1;
+#X connect 40 0 47 0;
+#X connect 40 1 48 0;
+#X connect 40 2 38 1;
+#X connect 40 3 39 1;
+#X connect 41 0 33 1;
+#X connect 42 0 44 0;
+#X connect 43 0 45 0;
+#X connect 44 0 43 1;
+#X connect 45 0 37 0;
+#X connect 46 0 42 0;
+#X connect 46 1 45 1;
+#X connect 47 0 38 0;
+#X connect 48 0 39 0;
diff --git a/gemsPolygon-help.pd b/gemsPolygon-help.pd
new file mode 100644
index 0000000..2a01b82
--- /dev/null
+++ b/gemsPolygon-help.pd
@@ -0,0 +1,99 @@
+#N canvas 811 267 558 422 10;
+#X declare -lib Gem;
+#X declare -lib Gem;
+#X obj 129 99 gemhead;
+#X msg 15 154 draw line;
+#X msg 15 109 draw fill;
+#X msg 14 131 draw point;
+#X msg 15 174 draw linestrip;
+#X msg 15 194 draw tri;
+#X msg 15 216 draw tristrip;
+#X msg 14 239 draw trifan;
+#X msg 14 260 draw quad;
+#X msg 14 282 draw quadstrip;
+#X obj 129 55 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X text 10 32 tags: gems;
+#N canvas 1 26 709 455 random 0;
+#X obj 132 58 inlet;
+#X obj 137 125 tof/iterate;
+#X obj 146 261 pack f f f 0;
+#X obj 146 303 outlet;
+#X obj 138 157 t f b b b;
+#X obj 158 211 ./randomFloat -2 2;
+#X obj 283 208 ./randomFloat -2 2;
+#X obj 425 205 ./randomFloat -2 2;
+#X msg 134 91 30;
+#X connect 0 0 8 0;
+#X connect 1 0 4 0;
+#X connect 2 0 3 0;
+#X connect 4 0 2 0;
+#X connect 4 1 5 0;
+#X connect 4 2 6 0;
+#X connect 4 3 7 0;
+#X connect 5 0 2 1;
+#X connect 6 0 2 2;
+#X connect 7 0 2 3;
+#X connect 8 0 1 0;
+#X restore 181 284 pd random;
+#X obj 181 262 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 129 160 rotateXYZ;
+#N canvas 0 0 450 300 autorotate 0;
+#X obj 89 33 loadbang;
+#X obj 89 87 metro 10000;
+#X msg 96 135 0 \, 360 10000;
+#X obj 103 161 line;
+#X obj 100 196 outlet;
+#X obj 94 60 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1
+;
+#X connect 0 0 5 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 5 0 1 0;
+#X restore 163 134 pd autorotate;
+#X obj 385 164 gemhead;
+#X obj 385 186 rotateXYZ 0 -30 0;
+#X obj 385 250 light;
+#X msg 412 229 1 0 0;
+#X obj 384 75 gemhead;
+#X obj 384 117 rotateXYZ 0 -30 0;
+#X obj 412 207 loadbang;
+#X obj 129 311 mtl/gemsPolygon 30;
+#X text 127 336 inlet 1: gemlist;
+#X text 9 2 Description: Creates a polygon with a dynamic number of
+points.;
+#X text 248 311 Argument: Number of points in polygon.;
+#X text 127 351 inlet 2: control each point with the following format:
+;
+#X text 242 369 point# x y z;
+#X text 128 390 inlet 3: create a polygin with this # of points;
+#X obj 384 96 translateXYZ 1.47 1.53 0;
+#X obj 384 139 light;
+#X obj 379 6 import Gem;
+#X obj 181 238 loadbang;
+#X obj 129 75 mtl/gemsWin /lighting 1 /dimen 640 480;
+#X connect 0 0 14 0;
+#X connect 1 0 23 0;
+#X connect 2 0 23 0;
+#X connect 3 0 23 0;
+#X connect 4 0 23 0;
+#X connect 5 0 23 0;
+#X connect 6 0 23 0;
+#X connect 7 0 23 0;
+#X connect 8 0 23 0;
+#X connect 9 0 23 0;
+#X connect 10 0 34 0;
+#X connect 12 0 23 1;
+#X connect 13 0 12 0;
+#X connect 14 0 23 0;
+#X connect 15 0 14 2;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 19 0 18 1;
+#X connect 20 0 30 0;
+#X connect 21 0 31 0;
+#X connect 22 0 19 0;
+#X connect 30 0 21 0;
+#X connect 33 0 13 0;
diff --git a/gemsPolygon.pd b/gemsPolygon.pd
new file mode 100644
index 0000000..9cfc40d
--- /dev/null
+++ b/gemsPolygon.pd
@@ -0,0 +1,147 @@
+#N canvas 199 246 1022 520 10;
+#N canvas 1 57 681 330 \$0-dynamicpatch 0;
+#X obj 150 40 route 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
+19 20 21 22 23 24 25 26 27 28 29;
+#X obj 150 15 r 1052xyz;
+#X obj 10 15 r 1052gem;
+#X obj 150 150 polygon 30;
+#X obj 10 60 s 1052gemout;
+#X obj 150 40 route 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
+19 20 21 22 23 24 25 26 27 28 29;
+#X connect 0 0 3 1;
+#X connect 0 1 3 2;
+#X connect 0 2 3 3;
+#X connect 0 3 3 4;
+#X connect 0 4 3 5;
+#X connect 0 5 3 6;
+#X connect 0 6 3 7;
+#X connect 0 7 3 8;
+#X connect 0 8 3 9;
+#X connect 0 9 3 10;
+#X connect 0 10 3 11;
+#X connect 0 11 3 12;
+#X connect 0 12 3 13;
+#X connect 0 13 3 14;
+#X connect 0 14 3 15;
+#X connect 0 15 3 16;
+#X connect 0 16 3 17;
+#X connect 0 17 3 18;
+#X connect 0 18 3 19;
+#X connect 0 19 3 20;
+#X connect 0 20 3 21;
+#X connect 0 21 3 22;
+#X connect 0 22 3 23;
+#X connect 0 23 3 24;
+#X connect 0 24 3 25;
+#X connect 0 25 3 26;
+#X connect 0 26 3 27;
+#X connect 0 27 3 28;
+#X connect 0 28 3 29;
+#X connect 0 29 3 30;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X restore 647 22 pd \$0-dynamicpatch;
+#X obj 81 123 until;
+#X obj 287 6 inlet;
+#X obj 80 11 loadbang;
+#X obj -113 14 inlet gemchain;
+#X obj -113 45 s \$0gem;
+#X msg 125 124 0;
+#X obj 335 135 symbol;
+#X msg 335 159 \; \$1 clear;
+#X obj 335 73 f \$0;
+#X text 359 114 id of the dynamic subpatch;
+#X obj 81 145 f 0;
+#X obj 119 147 + 1;
+#X obj 268 191 f \$0;
+#X obj 176 -1 inlet knot_xyz;
+#X obj 176 20 s \$0xyz;
+#X obj -102 487 outlet gemchain;
+#X obj -102 460 r \$0gemout;
+#X msg 666 221 set;
+#X msg 667 242 addsemi;
+#X msg 668 312 add2 \$1;
+#X obj 548 214 until;
+#X msg 588 220 0;
+#X obj 548 244 f 0;
+#X obj 578 243 + 1;
+#X obj 530 315 symbol;
+#X msg 670 263 adddollar 1;
+#X msg 531 373 \; \$1 obj 150 40 route 0 1 2 3 4 5 6 7 8 9 10 11 12
+13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29;
+#X msg 670 288 add2 obj 150 40 route;
+#X obj 531 178 t b f b b b b b;
+#X obj 268 212 pack f s f;
+#X obj 289 31 t f b b f b f;
+#X obj 80 33 t b b b b b;
+#X text 608 353 This message can become very long !;
+#X text 18 408 dollars: 1:route number \, 2:previous object \, 3:current
+inlet;
+#X obj 116 194 + 1;
+#X obj 79 220 pack f f s;
+#X obj 111 170 t f f;
+#X msg 77 251 \; \$3 connect 0 \$1 3 \$2 \;;
+#X text 142 470 objects: 0:route 0 1 2 3 4...n-1 \, 1:receive 0xyz
+\, 2:receive 0gem \, 3: polygon n \, 4 send 0gemout;
+#X msg 269 234 \; \$2 obj 150 15 r \$1xyz \; \$2 obj 10 15 r \$1gem
+\; \$2 obj 150 150 polygon \$3 \; \$2 obj 10 60 s \$1gemout \; \$2
+connect 1 0 0 0 \; \$2 connect 2 0 3 0 \; \$2 connect 3 0 4 0 \;;
+#X obj 79 85 tof/argument 1 1;
+#X obj 382 201 tof/argument 1 1;
+#X obj 530 150 tof/argument 1 1;
+#X obj 335 93 zexy/makesymbol pd-%s-dynamicpatch;
+#X connect 1 0 11 0;
+#X connect 2 0 31 0;
+#X connect 3 0 32 0;
+#X connect 4 0 5 0;
+#X connect 6 0 11 1;
+#X connect 7 0 8 0;
+#X connect 9 0 44 0;
+#X connect 11 0 12 0;
+#X connect 11 0 37 0;
+#X connect 12 0 11 1;
+#X connect 13 0 30 0;
+#X connect 14 0 15 0;
+#X connect 17 0 16 0;
+#X connect 18 0 27 0;
+#X connect 19 0 27 0;
+#X connect 20 0 27 0;
+#X connect 21 0 23 0;
+#X connect 22 0 23 1;
+#X connect 23 0 24 0;
+#X connect 23 0 20 0;
+#X connect 24 0 23 1;
+#X connect 25 0 27 0;
+#X connect 26 0 27 0;
+#X connect 28 0 27 0;
+#X connect 29 0 25 0;
+#X connect 29 1 21 0;
+#X connect 29 2 28 0;
+#X connect 29 3 26 0;
+#X connect 29 4 19 0;
+#X connect 29 5 18 0;
+#X connect 29 6 22 0;
+#X connect 30 0 40 0;
+#X connect 31 0 1 0;
+#X connect 31 1 6 0;
+#X connect 31 2 13 0;
+#X connect 31 3 29 0;
+#X connect 31 4 7 0;
+#X connect 31 5 30 2;
+#X connect 32 0 41 0;
+#X connect 32 1 13 0;
+#X connect 32 2 43 0;
+#X connect 32 3 9 0;
+#X connect 32 4 42 0;
+#X connect 35 0 36 1;
+#X connect 36 0 38 0;
+#X connect 37 0 36 0;
+#X connect 37 1 35 0;
+#X connect 41 0 1 0;
+#X connect 42 0 30 2;
+#X connect 43 0 29 0;
+#X connect 44 0 7 0;
+#X connect 44 0 25 1;
+#X connect 44 0 30 1;
+#X connect 44 0 36 2;
diff --git a/gemsWheel-help.pd b/gemsWheel-help.pd
new file mode 100644
index 0000000..256acdf
--- /dev/null
+++ b/gemsWheel-help.pd
@@ -0,0 +1,42 @@
+#N canvas 554 265 594 457 10;
+#X declare -lib Gem;
+#X obj 44 104 gemhead;
+#X floatatom 147 247 5 0 0 1 duplications - -;
+#X obj 313 78 tgl 15 0 empty empty empty 0 -6 0 10 -262144 -1 -1 0
+1;
+#X obj 157 57 loadbang;
+#X obj 158 111 metro 5000;
+#X obj 157 157 line;
+#X msg 156 134 0 \, 360 5000;
+#X obj 47 156 rotateXYZ;
+#X obj 155 87 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 46 198 mtl/gemsFit window;
+#X obj 313 117 mtl/gemsWin;
+#X msg 124 333 \$1 1 1;
+#X obj 51 386 color;
+#X obj 125 308 / 360;
+#X text 24 42 tags: gems;
+#X text 145 286 Outlet 2: angle of the element being rendered in degrees
+;
+#X obj 124 362 mtl/hsvToRgb;
+#X text 18 21 Description: Makes a wheel out of duplicated geos.;
+#X obj 51 421 circle;
+#X obj 46 267 mtl/gemsWheel 4;
+#X obj 494 16 import Gem;
+#X connect 0 0 7 0;
+#X connect 1 0 19 1;
+#X connect 2 0 10 0;
+#X connect 3 0 8 0;
+#X connect 4 0 6 0;
+#X connect 5 0 7 3;
+#X connect 6 0 5 0;
+#X connect 7 0 9 0;
+#X connect 8 0 4 0;
+#X connect 9 0 19 0;
+#X connect 11 0 16 0;
+#X connect 12 0 18 0;
+#X connect 13 0 11 0;
+#X connect 16 0 12 1;
+#X connect 19 0 12 0;
+#X connect 19 1 13 0;
diff --git a/gemsWheel.pd b/gemsWheel.pd
new file mode 100644
index 0000000..4c61d6f
--- /dev/null
+++ b/gemsWheel.pd
@@ -0,0 +1,45 @@
+#N canvas 1266 10 782 702 10;
+#X obj 37 27 inlet gemlist;
+#X obj 41 87 t a b;
+#X obj 44 167 t a b;
+#X obj 47 293 separator;
+#X obj 256 28 inlet;
+#X obj 42 144 repeat \$1;
+#X obj 225 174 expr 360/$f1;
+#X obj 65 493 scale 1;
+#X obj 244 114 max 3;
+#X obj 55 421 translateXYZ 1 0 0;
+#X obj 56 378 scale 1;
+#X obj 295 299 expr 1/($f1+1);
+#X obj 171 295 *;
+#X obj 46 327 rotateXYZ 0 0 0;
+#X obj 404 619 outlet angle;
+#X obj 173 266 tof/increment;
+#X obj 71 618 outlet gemlist;
+#X obj 304 55 tof/argument 1 3;
+#X obj 315 28 loadbang;
+#X obj 315 246 expr sin(3.14159/$f1);
+#X connect 0 0 1 0;
+#X connect 1 0 5 0;
+#X connect 1 1 15 1;
+#X connect 2 0 3 0;
+#X connect 2 1 15 0;
+#X connect 3 0 13 0;
+#X connect 4 0 8 0;
+#X connect 5 0 2 0;
+#X connect 6 0 12 1;
+#X connect 7 0 16 0;
+#X connect 8 0 5 1;
+#X connect 8 0 6 0;
+#X connect 8 0 19 0;
+#X connect 9 0 7 0;
+#X connect 10 0 9 0;
+#X connect 11 0 10 1;
+#X connect 12 0 13 3;
+#X connect 12 0 14 0;
+#X connect 13 0 10 0;
+#X connect 15 0 12 0;
+#X connect 17 0 8 0;
+#X connect 18 0 17 0;
+#X connect 19 0 7 1;
+#X connect 19 0 11 0;
diff --git a/gemsWin-help.pd b/gemsWin-help.pd
new file mode 100644
index 0000000..434c9f3
--- /dev/null
+++ b/gemsWin-help.pd
@@ -0,0 +1,74 @@
+#N canvas 277 124 807 512 10;
+#X declare -lib Gem;
+#X text 6 -12 Description: Controls the Gem window.;
+#X text 7 185 Clicking with the RIGHT mouse button in the Gem window
+will move the camera.;
+#X text 7 220 Double clicking with the RIGHT mouse button will reset
+the camera.;
+#X text 409 92 Outlet_1: Outputs the settings made to the Gem window.
+NOTE that this outlet is COMMON to all gems.win.;
+#X text 412 136 Arguments (use none \, some or all of these):;
+#X text 7 255 Double clicking with the MIDDLE mouse button will destroy
+the window.;
+#X text 408 39 Inlet_1 (float): 1=Create and render. 0=Destroy. All
+of the standard Gem window commands can still be used (see gemwin's
+help for more information).;
+#X text 6 162 -- MOUSE CONTROLS (for Linux and Windows) --;
+#X text 434 196 /fps f: sets the Gem window framerate.;
+#X text 434 217 /border f: set the Gem window border presence.;
+#X text 5 3 tags: gems;
+#X obj 63 408 cube;
+#X obj 63 354 gemhead;
+#X obj 13 50 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X msg 84 48 /dimen 640 480;
+#X obj 544 344 nbx 5 14 -1e+37 1e+37 0 0 \$0/gemsWin/fps \$0/gemsWin/fps_
+/gemsWin/fps 57 7 0 10 -262144 -1 -1 20 256;
+#X obj 544 324 tgl 15 0 \$0/gemsWin/border \$0/gemsWin/border_ /gemsWin/border
+17 7 0 10 -262144 -1 -1 1 1;
+#X obj 544 363 tgl 15 0 \$0/gemsWin/lighting \$0/gemsWin/lighting_
+/gemsWin/lighting 17 7 0 10 -262144 -1 -1 1 1;
+#X obj 544 383 nbx 5 14 -1e+37 1e+37 0 0 \$0/gemsWin/w \$0/gemsWin/w_
+/gemsWin/w 57 7 0 10 -262144 -1 -1 320 256;
+#X obj 544 403 nbx 5 14 -1e+37 1e+37 0 0 \$0/gemsWin/h \$0/gemsWin/h_
+/gemsWin/h 57 7 0 10 -262144 -1 -1 240 256;
+#X obj 544 423 nbx 5 14 -1e+37 1e+37 0 0 \$0/gemsWin/x \$0/gemsWin/x_
+/gemsWin/x 57 7 0 10 -262144 -1 -1 0 256;
+#X obj 544 443 nbx 5 14 -1e+37 1e+37 0 0 \$0/gemsWin/y \$0/gemsWin/y_
+/gemsWin/y 57 7 0 10 -262144 -1 -1 0 256;
+#X obj 544 305 tgl 15 0 \$0/gemsWin/create \$0/gemsWin/create_ /gemsWin/create
+17 7 0 10 -262144 -1 -1 0 1;
+#X text 433 158 /dimen Width Height: sets the Gem window dimension.
+;
+#X text 434 177 /offset Width Height: sets the Gem window offset.;
+#X text 430 238 /lighting f: turns the lighting on/off;
+#X text 432 256 /anti-aliasing f: turns the antialiasing on/of;
+#X obj 183 333 gemhead;
+#X obj 183 364 rotateXYZ 30 30 0;
+#X msg 116 75 /lighting 0;
+#X obj 183 417 light;
+#X obj 235 419 loadbang;
+#X msg 236 443 1 1 0;
+#X obj 329 336 gemhead;
+#X obj 329 420 light;
+#X obj 381 422 loadbang;
+#X msg 382 446 0 1 0;
+#X obj 329 367 rotateXYZ -30 -45 0;
+#X obj 329 393 translateXYZ 0 0 5;
+#X obj 183 390 translateXYZ 0 0 5;
+#X obj 714 -5 import Gem;
+#X obj 8 112 mtl/gemsWin /dimen 320 240 /lighting 1;
+#X connect 12 0 11 0;
+#X connect 13 0 41 0;
+#X connect 14 0 41 0;
+#X connect 27 0 28 0;
+#X connect 28 0 39 0;
+#X connect 29 0 41 0;
+#X connect 31 0 32 0;
+#X connect 32 0 30 1;
+#X connect 33 0 37 0;
+#X connect 35 0 36 0;
+#X connect 36 0 34 1;
+#X connect 37 0 38 0;
+#X connect 38 0 34 0;
+#X connect 39 0 30 0;
diff --git a/gemsWin.pd b/gemsWin.pd
new file mode 100644
index 0000000..9961a4b
--- /dev/null
+++ b/gemsWin.pd
@@ -0,0 +1,273 @@
+#N canvas 16 29 993 682 10;
+#X declare -lib Gem;
+#X obj 236 355 gemwin;
+#X obj -10 -340 inlet;
+#X obj -11 -182 sel 1 0;
+#X msg 157 235 0;
+#X msg 100 238 destroy;
+#X obj 110 141 t b b;
+#X obj 20 223 s \$0reset;
+#X msg 42 274 create;
+#X msg 5 274 1;
+#X obj -12 172 t b b;
+#X obj 113 164 delay 200;
+#N canvas 364 209 654 496 MOUSE_INPUT 0;
+#X obj 82 49 gemmouse;
+#X obj 186 184 sel 1;
+#X msg 182 261 0;
+#N canvas 211 90 618 711 viewing 0;
+#X obj 65 57 inlet;
+#X obj 123 55 inlet;
+#X obj 238 52 inlet;
+#X obj 182 680 outlet;
+#X obj 43 558 pack f f f 100;
+#X msg 43 588 view \$1 \$2 \$3 0 0 0 0 \$4 0;
+#X obj 41 498 expr sin($f1)*cos($f2)*4;
+#X obj 380 499 expr cos($f1)*cos($f2)*4;
+#X obj 226 498 expr sin($f1)*4;
+#X obj 297 221 spigot;
+#X obj 244 221 spigot;
+#X obj 308 156 t f f f;
+#X obj 368 181 sel 1;
+#X obj 230 282 t f f;
+#X obj 311 285 t f f;
+#X obj 181 314 t f f;
+#X obj 203 355 -;
+#X obj 314 313 t f f;
+#X obj 320 364 -;
+#X obj 389 312 spigot 1;
+#X obj 248 307 spigot 1;
+#X msg 372 218 1;
+#X obj 237 334 t f b;
+#X msg 265 357 0;
+#X obj 185 415 +;
+#X obj 297 417 +;
+#X obj 184 438 t f f f f;
+#X obj 296 440 t f f f;
+#X obj 141 390 / -100;
+#X msg 473 245 0 0;
+#X obj 485 81 inlet reset;
+#X obj 447 388 / 100;
+#X obj 492 212 ./doubleClick 500;
+#X connect 0 0 10 0;
+#X connect 1 0 9 0;
+#X connect 2 0 11 0;
+#X connect 4 0 5 0;
+#X connect 5 0 3 0;
+#X connect 6 0 4 0;
+#X connect 7 0 4 2;
+#X connect 8 0 4 1;
+#X connect 9 0 14 0;
+#X connect 10 0 13 0;
+#X connect 11 1 9 1;
+#X connect 11 1 10 1;
+#X connect 11 2 12 0;
+#X connect 12 0 21 0;
+#X connect 12 0 32 0;
+#X connect 13 0 15 0;
+#X connect 13 1 20 0;
+#X connect 14 0 17 0;
+#X connect 14 1 19 0;
+#X connect 15 0 16 1;
+#X connect 15 1 16 0;
+#X connect 16 0 28 0;
+#X connect 17 0 18 1;
+#X connect 17 1 18 0;
+#X connect 18 0 31 0;
+#X connect 19 0 18 1;
+#X connect 20 0 22 0;
+#X connect 21 0 20 1;
+#X connect 21 0 19 1;
+#X connect 22 0 16 1;
+#X connect 22 1 23 0;
+#X connect 23 0 20 1;
+#X connect 23 0 19 1;
+#X connect 24 0 26 0;
+#X connect 25 0 27 0;
+#X connect 26 0 6 0;
+#X connect 26 2 7 0;
+#X connect 26 3 24 1;
+#X connect 27 0 6 1;
+#X connect 27 0 8 0;
+#X connect 27 1 7 1;
+#X connect 27 2 25 1;
+#X connect 28 0 24 0;
+#X connect 29 0 25 0;
+#X connect 29 0 24 0;
+#X connect 30 0 29 0;
+#X connect 31 0 25 0;
+#X connect 32 0 29 0;
+#X restore 59 168 pd viewing;
+#X obj 176 326 outlet;
+#X obj 56 327 outlet;
+#X obj 177 225 ./doubleClick 500;
+#X obj 283 24 inlet;
+#X obj 172 82 ./valueChange gems.win/right_click;
+#X obj 187 138 ./valueChange gems.win/middle_click;
+#X connect 0 0 3 0;
+#X connect 0 1 3 1;
+#X connect 0 3 9 0;
+#X connect 0 4 8 0;
+#X connect 1 0 6 0;
+#X connect 2 0 4 0;
+#X connect 3 0 5 0;
+#X connect 6 0 2 0;
+#X connect 7 0 3 3;
+#X connect 8 0 3 2;
+#X connect 9 0 1 0;
+#X restore 351 160 pd MOUSE_INPUT;
+#N canvas 609 121 830 679 CREATE&DESTROY 0;
+#X obj 104 -313 inlet;
+#X msg 138 -180 0;
+#X obj 27 -183 t b b;
+#X msg 90 -138 0;
+#X msg 36 -104 1;
+#X obj 16 -138 delay 201;
+#X obj 91 -280 route 1 0;
+#X obj 95 -243 route create destroy;
+#X obj 176 42 outlet;
+#X connect 0 0 6 0;
+#X connect 1 0 8 0;
+#X connect 2 0 5 0;
+#X connect 2 1 3 0;
+#X connect 3 0 8 0;
+#X connect 4 0 8 0;
+#X connect 5 0 4 0;
+#X connect 6 0 2 0;
+#X connect 6 1 1 0;
+#X connect 6 2 7 0;
+#X connect 7 0 2 0;
+#X connect 7 1 1 0;
+#X restore -11 -213 pd CREATE&DESTROY;
+#X obj -67 327 s GEMS;
+#X obj -36 212 t b b b;
+#N canvas 309 104 1019 673 SETTINGS 0;
+#X obj 219 -72 inlet;
+#X obj 69 461 outlet;
+#X msg 229 177 frame \$1;
+#X msg 519 120 border \$1;
+#X msg 723 156 lighting \$1;
+#N canvas 1 57 1022 686 dimen 0;
+#X msg 117 392 dimen \$1 \$2;
+#X obj 159 261 value GEMSW;
+#X obj 307 265 value GEMSH;
+#X obj 37 135 unpack f f;
+#X obj 102 258 pack;
+#X obj 87 228 t f f;
+#X obj 284 236 t f f;
+#X obj 60 20 inlet;
+#X obj 109 468 outlet;
+#X obj 104 58 t b b;
+#X obj 47 111 tof/param /dimen 320 240 /ns;
+#X obj 73 200 tof/param /w 320 /nlb /wfb /nps /g nbx;
+#X obj 322 204 tof/param /h 240 /nlb /wfb /nps /g nbx;
+#X connect 0 0 8 0;
+#X connect 3 0 11 0;
+#X connect 3 1 12 0;
+#X connect 4 0 0 0;
+#X connect 5 0 4 0;
+#X connect 5 1 1 0;
+#X connect 6 0 4 1;
+#X connect 6 1 2 0;
+#X connect 7 0 9 0;
+#X connect 9 0 11 0;
+#X connect 9 1 12 0;
+#X connect 10 0 3 0;
+#X connect 11 0 5 0;
+#X connect 12 0 6 0;
+#X restore 47 102 pd dimen;
+#N canvas 1 57 1022 686 offset 0;
+#X obj 37 135 unpack f f;
+#X obj 102 258 pack;
+#X obj 60 20 inlet;
+#X obj 109 468 outlet;
+#X msg 117 392 offset \$1 \$2;
+#X obj 123 67 t b b;
+#X obj 37 112 tof/param /offset 0 0 /ns;
+#X obj 298 200 tof/param /y 0 /nlb /wfb /nps /g nbx;
+#X obj 67 202 tof/param /x 0 /nlb /wfb /nps /g nbx;
+#X connect 0 0 8 0;
+#X connect 0 1 7 0;
+#X connect 1 0 4 0;
+#X connect 2 0 5 0;
+#X connect 4 0 3 0;
+#X connect 5 0 8 0;
+#X connect 5 1 7 0;
+#X connect 6 0 0 0;
+#X connect 7 0 1 1;
+#X connect 8 0 1 0;
+#X restore 178 113 pd offset;
+#X obj 723 120 tof/param /lighting 0 /nlb /g tgl /wfb;
+#X obj 218 -39 t b b b b b b;
+#X msg 620 319 FSAA \$1;
+#X obj 621 294 * 2;
+#X obj 327 176 value GEMSFPS;
+#X obj 256 118 tof/param /fps 20 /nlb /wfb /nps /g nbx;
+#X obj 505 85 tof/param /border 1 /nlb /g tgl /nps /wfb;
+#X obj 623 269 tof/param /anti-aliasing 0 /g nbx /nlb /wfb /nps;
+#X connect 0 0 8 0;
+#X connect 2 0 1 0;
+#X connect 3 0 1 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 1 0;
+#X connect 7 0 4 0;
+#X connect 8 0 5 0;
+#X connect 8 1 6 0;
+#X connect 8 2 12 0;
+#X connect 8 3 13 0;
+#X connect 8 4 7 0;
+#X connect 8 5 14 0;
+#X connect 9 0 1 0;
+#X connect 10 0 9 0;
+#X connect 12 0 2 0;
+#X connect 12 0 11 0;
+#X connect 13 0 3 0;
+#X connect 14 0 10 0;
+#X restore 184 -101 pd SETTINGS;
+#X obj -11 -315 route float bang;
+#X msg 35 -283 1;
+#X text 488 -43 Internal messages:;
+#X text 515 -21 send "GEMS" bang when a new window is created;
+#X text 517 -3 value "GEMSW" holds the last width set;
+#X text 516 13 value "GEMSH" holds the last height set;
+#X obj 255 -63 print WIN;
+#X text 517 33 value "GEMSFPS" holds the frame rate;
+#X obj -6 -134 t b b b;
+#X obj 201 -152 value GEMSI;
+#X msg 201 -175 0;
+#X obj -11 -243 tof/param /create 0 /nlb /g tgl /ns;
+#X obj 509 -203 iemguts/propertybang;
+#X obj 498 -267 import Gem;
+#X obj 510 -174 tof/param gui;
+#X obj 82 -288 tof/param route;
+#X connect 1 0 16 0;
+#X connect 2 0 24 0;
+#X connect 2 1 5 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 0;
+#X connect 5 0 10 0;
+#X connect 5 1 3 0;
+#X connect 7 0 0 0;
+#X connect 8 0 0 0;
+#X connect 9 0 14 0;
+#X connect 9 1 6 0;
+#X connect 10 0 4 0;
+#X connect 11 0 0 0;
+#X connect 11 1 27 0;
+#X connect 12 0 2 0;
+#X connect 14 0 13 0;
+#X connect 14 1 8 0;
+#X connect 14 2 7 0;
+#X connect 15 0 0 0;
+#X connect 15 0 22 0;
+#X connect 16 0 27 0;
+#X connect 16 1 17 0;
+#X connect 16 2 31 0;
+#X connect 17 0 27 0;
+#X connect 24 0 9 0;
+#X connect 24 1 15 0;
+#X connect 24 2 26 0;
+#X connect 26 0 25 0;
+#X connect 27 0 12 0;
+#X connect 28 0 30 0;
diff --git a/granularLive~-help.pd b/granularLive~-help.pd
new file mode 100644
index 0000000..2deda57
--- /dev/null
+++ b/granularLive~-help.pd
@@ -0,0 +1,62 @@
+#N canvas 368 121 560 246 10;
+#X text 17 11 Description: Live granular;
+#X text 18 27 Author: Unknown;
+#X obj 20 123 mtl/granularLive~ /id granule;
+#X obj 21 159 mtl/out~;
+#X text 18 43 tags: fx~;
+#X obj 20 71 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#N canvas 5 185 450 300 generate~ 0;
+#X obj 32 213 osc~ 200;
+#X obj 32 89 metro 400;
+#X obj 32 175 mtof;
+#X obj 104 195 mtof;
+#X obj 32 132 + 20;
+#X obj 32 111 random 70;
+#X floatatom 83 69 5 0 0 0 - - -;
+#X obj 32 261 outlet~;
+#X obj 103 261 outlet~;
+#X obj 30 14 inlet;
+#X obj 104 175 mtl/closestNote 0 2 4 7 9;
+#X obj 104 234 *~;
+#X obj 31 234 *~;
+#X obj 104 214 osc~ 100;
+#X obj 32 155 mtl/closestNote 0 2 4 7 9;
+#X connect 0 0 12 0;
+#X connect 1 0 5 0;
+#X connect 2 0 0 0;
+#X connect 3 0 13 0;
+#X connect 4 0 10 0;
+#X connect 4 0 14 0;
+#X connect 5 0 4 0;
+#X connect 6 0 1 1;
+#X connect 9 0 1 0;
+#X connect 9 0 11 1;
+#X connect 9 0 12 1;
+#X connect 10 0 3 0;
+#X connect 11 0 8 0;
+#X connect 12 0 7 0;
+#X connect 13 0 11 0;
+#X connect 14 0 2 0;
+#X restore 20 96 pd generate~;
+#X obj 220 64 hsl 100 15 0 1 0 0 \$0/granule/wet \$0/granule/wet_ /granule/wet
+105 7 0 8 -262144 -1 -1 4400 1;
+#X obj 220 84 hsl 100 15 0 1 0 0 \$0/granule/feedbackleft \$0/granule/feedbackleft_
+/granule/feedbackleft 105 7 0 8 -262144 -1 -1 4300 1;
+#X obj 220 104 hsl 100 15 0 1 0 0 \$0/granule/feedbackright \$0/granule/feedbackright_
+/granule/feedbackright 105 7 0 8 -262144 -1 -1 3600 1;
+#X obj 220 124 nbx 5 14 -1e+37 1e+37 0 0 \$0/granule/transpositionleft
+\$0/granule/transpositionleft_ /granule/transpositionleft 48 7 0 8
+-262144 -1 -1 12 256;
+#X obj 220 144 nbx 5 14 -1e+37 1e+37 0 0 \$0/granule/transpositionright
+\$0/granule/transpositionright_ /granule/transpositionright 48 7 0
+8 -262144 -1 -1 24 256;
+#X obj 220 164 nbx 5 14 -1e+37 1e+37 0 0 \$0/granule/windowleft \$0/granule/windowleft_
+/granule/windowleft 48 7 0 8 -262144 -1 -1 100 256;
+#X obj 220 184 nbx 5 14 -1e+37 1e+37 0 0 \$0/granule/windowright \$0/granule/windowright_
+/granule/windowright 48 7 0 8 -262144 -1 -1 100 256;
+#X connect 2 0 3 0;
+#X connect 2 1 3 1;
+#X connect 5 0 6 0;
+#X connect 6 0 2 0;
+#X connect 6 1 2 1;
diff --git a/granularLive~.pd b/granularLive~.pd
new file mode 100644
index 0000000..df715b9
--- /dev/null
+++ b/granularLive~.pd
@@ -0,0 +1,249 @@
+#N canvas 368 121 768 472 10;
+#N canvas 291 103 1105 738 process 0;
+#X obj 107 314 phasor~;
+#X obj 107 391 *~ -1;
+#X obj 108 416 +~ 1;
+#X obj 125 561 sig~ 1;
+#X obj 190 560 cos~;
+#X obj 126 585 -~;
+#X obj 127 610 *~ 0.5;
+#X obj 106 639 *~;
+#X obj 142 473 samphold~;
+#X obj 108 500 *~;
+#X obj 143 445 sig~;
+#X floatatom 135 260 10 0 0 0 - - -;
+#X floatatom 266 218 5 0 0 0 - - -;
+#X obj 249 253 t b f;
+#X obj 229 371 / 44.1;
+#X obj 342 392 *~ -1;
+#X obj 343 417 +~ 1;
+#X obj 360 562 sig~ 1;
+#X obj 424 562 cos~;
+#X obj 361 586 -~;
+#X obj 362 611 *~ 0.5;
+#X obj 343 636 *~;
+#X obj 377 474 samphold~;
+#X obj 343 501 *~;
+#X obj 378 446 sig~;
+#X obj 339 344 +~ 0.5;
+#X obj 339 366 wrap~;
+#X obj 144 288 expr (pow(2 \, ($f2/12)) - 1) * 44100/$f1;
+#X obj 102 97 vsl 15 128 100 30000 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 102 235 t b f;
+#X obj 266 138 vsl 15 73 -36 36 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 484 348 *~ 0;
+#X obj 517 107 vsl 15 128 0.01 1 1 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 517 267 sel 0.01;
+#X msg 515 294 0;
+#X floatatom 515 323 5 0 0 0 - - -;
+#X text 520 79 feedback;
+#X text 269 114 transposition;
+#X text 37 71 window-width (samples);
+#X obj 494 376 inlet~;
+#X obj 105 698 outlet~;
+#X obj 586 46 inlet;
+#X obj 675 46 inlet;
+#X obj 629 46 inlet;
+#X obj 485 408 delwrite~ \$0-delay 5000;
+#X obj 344 527 vd~ \$0-delay;
+#X obj 109 526 vd~ \$0-delay;
+#X connect 0 0 1 0;
+#X connect 0 0 4 0;
+#X connect 0 0 8 1;
+#X connect 0 0 25 0;
+#X connect 1 0 2 0;
+#X connect 2 0 9 0;
+#X connect 3 0 5 0;
+#X connect 4 0 5 1;
+#X connect 5 0 6 0;
+#X connect 6 0 7 1;
+#X connect 7 0 31 0;
+#X connect 7 0 40 0;
+#X connect 8 0 9 1;
+#X connect 9 0 46 0;
+#X connect 10 0 8 0;
+#X connect 11 0 27 0;
+#X connect 12 0 13 0;
+#X connect 13 0 11 0;
+#X connect 13 1 27 1;
+#X connect 14 0 10 0;
+#X connect 14 0 24 0;
+#X connect 15 0 16 0;
+#X connect 16 0 23 0;
+#X connect 17 0 19 0;
+#X connect 18 0 19 1;
+#X connect 19 0 20 0;
+#X connect 20 0 21 1;
+#X connect 21 0 31 0;
+#X connect 21 0 40 0;
+#X connect 22 0 23 1;
+#X connect 23 0 45 0;
+#X connect 24 0 22 0;
+#X connect 25 0 26 0;
+#X connect 26 0 15 0;
+#X connect 26 0 22 1;
+#X connect 26 0 18 0;
+#X connect 27 0 0 0;
+#X connect 28 0 29 0;
+#X connect 29 0 12 0;
+#X connect 29 1 14 0;
+#X connect 29 1 11 0;
+#X connect 30 0 12 0;
+#X connect 31 0 44 0;
+#X connect 32 0 33 0;
+#X connect 33 0 34 0;
+#X connect 33 1 35 0;
+#X connect 34 0 35 0;
+#X connect 35 0 31 1;
+#X connect 39 0 44 0;
+#X connect 41 0 29 0;
+#X connect 42 0 33 0;
+#X connect 43 0 12 0;
+#X connect 45 0 21 0;
+#X connect 46 0 7 0;
+#X restore 148 118 pd process;
+#X obj 56 65 inlet~;
+#X obj 100 260 outlet~;
+#X obj 151 238 outlet~;
+#X obj 101 66 inlet~;
+#X obj 536 238 inlet params;
+#X obj 536 284 print PARAM_NOTFOUND;
+#X obj 210 209 tof/param /wet 0 /g slider 0 1;
+#X obj 210 252 line~;
+#X msg 210 231 \$1 5;
+#X obj 102 208 tof/crossfade~ 2;
+#N canvas 292 102 1105 738 process 0;
+#X obj 107 314 phasor~;
+#X obj 107 391 *~ -1;
+#X obj 108 416 +~ 1;
+#X obj 125 561 sig~ 1;
+#X obj 190 560 cos~;
+#X obj 126 585 -~;
+#X obj 127 610 *~ 0.5;
+#X obj 106 639 *~;
+#X obj 142 473 samphold~;
+#X obj 108 500 *~;
+#X obj 143 445 sig~;
+#X floatatom 135 260 10 0 0 0 - - -;
+#X floatatom 266 218 5 0 0 0 - - -;
+#X obj 249 253 t b f;
+#X obj 229 371 / 44.1;
+#X obj 342 392 *~ -1;
+#X obj 343 417 +~ 1;
+#X obj 360 562 sig~ 1;
+#X obj 424 562 cos~;
+#X obj 361 586 -~;
+#X obj 362 611 *~ 0.5;
+#X obj 343 636 *~;
+#X obj 377 474 samphold~;
+#X obj 343 501 *~;
+#X obj 378 446 sig~;
+#X obj 339 344 +~ 0.5;
+#X obj 339 366 wrap~;
+#X obj 144 288 expr (pow(2 \, ($f2/12)) - 1) * 44100/$f1;
+#X obj 102 97 vsl 15 128 100 30000 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 102 235 t b f;
+#X obj 266 138 vsl 15 73 -36 36 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 484 348 *~ 0;
+#X obj 517 107 vsl 15 128 0.01 1 1 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 0 1;
+#X obj 517 267 sel 0.01;
+#X msg 515 294 0;
+#X floatatom 515 323 5 0 0 0 - - -;
+#X text 520 79 feedback;
+#X text 269 114 transposition;
+#X text 37 71 window-width (samples);
+#X obj 494 376 inlet~;
+#X obj 105 698 outlet~;
+#X obj 586 46 inlet;
+#X obj 675 46 inlet;
+#X obj 629 46 inlet;
+#X obj 485 408 delwrite~ \$0-delayr 5000;
+#X obj 344 527 vd~ \$0-delayr;
+#X obj 109 526 vd~ \$0-delayr;
+#X connect 0 0 1 0;
+#X connect 0 0 4 0;
+#X connect 0 0 8 1;
+#X connect 0 0 25 0;
+#X connect 1 0 2 0;
+#X connect 2 0 9 0;
+#X connect 3 0 5 0;
+#X connect 4 0 5 1;
+#X connect 5 0 6 0;
+#X connect 6 0 7 1;
+#X connect 7 0 31 0;
+#X connect 7 0 40 0;
+#X connect 8 0 9 1;
+#X connect 9 0 46 0;
+#X connect 10 0 8 0;
+#X connect 11 0 27 0;
+#X connect 12 0 13 0;
+#X connect 13 0 11 0;
+#X connect 13 1 27 1;
+#X connect 14 0 10 0;
+#X connect 14 0 24 0;
+#X connect 15 0 16 0;
+#X connect 16 0 23 0;
+#X connect 17 0 19 0;
+#X connect 18 0 19 1;
+#X connect 19 0 20 0;
+#X connect 20 0 21 1;
+#X connect 21 0 31 0;
+#X connect 21 0 40 0;
+#X connect 22 0 23 1;
+#X connect 23 0 45 0;
+#X connect 24 0 22 0;
+#X connect 25 0 26 0;
+#X connect 26 0 15 0;
+#X connect 26 0 22 1;
+#X connect 26 0 18 0;
+#X connect 27 0 0 0;
+#X connect 28 0 29 0;
+#X connect 29 0 12 0;
+#X connect 29 1 14 0;
+#X connect 29 1 11 0;
+#X connect 30 0 12 0;
+#X connect 31 0 44 0;
+#X connect 32 0 33 0;
+#X connect 33 0 34 0;
+#X connect 33 1 35 0;
+#X connect 34 0 35 0;
+#X connect 35 0 31 1;
+#X connect 39 0 44 0;
+#X connect 41 0 29 0;
+#X connect 42 0 33 0;
+#X connect 43 0 12 0;
+#X connect 45 0 21 0;
+#X connect 46 0 7 0;
+#X restore 228 118 pd process;
+#X obj 420 38 tof/param /feedbackleft 0 /g slider 0 1;
+#X obj 446 94 tof/param /feedbackright 0 /g slider 0 1;
+#X obj 409 16 tof/param /transpositionleft 0 /g nbx;
+#X obj 438 76 tof/param /transpositionright 0 /g nbx;
+#X obj 400 -2 tof/param /windowleft 15000 /g nbx;
+#X obj 429 58 tof/param /windowright 15000 /g nbx;
+#X obj 536 260 tof/param route;
+#X connect 0 0 10 2;
+#X connect 1 0 10 0;
+#X connect 1 0 0 0;
+#X connect 4 0 10 1;
+#X connect 4 0 11 0;
+#X connect 5 0 18 0;
+#X connect 7 0 9 0;
+#X connect 8 0 10 4;
+#X connect 9 0 8 0;
+#X connect 10 0 2 0;
+#X connect 10 1 3 0;
+#X connect 11 0 10 3;
+#X connect 12 0 0 3;
+#X connect 13 0 11 3;
+#X connect 14 0 0 2;
+#X connect 15 0 11 2;
+#X connect 16 0 0 1;
+#X connect 17 0 11 1;
+#X connect 18 0 6 0;
diff --git a/gunGas~-help.pd b/gunGas~-help.pd
new file mode 100644
index 0000000..404662c
--- /dev/null
+++ b/gunGas~-help.pd
@@ -0,0 +1,18 @@
+#N canvas 117 420 308 258 10;
+#X obj 25 78 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 105 101 5 0 0 0 - - -;
+#X text 141 100 Reverb time;
+#X msg 73 101 5;
+#X msg 43 101 50;
+#X text 20 29 Comment: Taken from Andy Farnell's work.;
+#X text 21 14 Description: Generates part of a gun sound.;
+#X obj 25 139 mtl/gunGas~;
+#X obj 25 175 mtl/out~;
+#X text 21 44 tags: synthesize~;
+#X connect 0 0 7 0;
+#X connect 1 0 7 1;
+#X connect 3 0 7 0;
+#X connect 4 0 7 0;
+#X connect 7 0 8 0;
+#X connect 7 0 8 1;
diff --git a/gunGas~.pd b/gunGas~.pd
new file mode 100644
index 0000000..5fba022
--- /dev/null
+++ b/gunGas~.pd
@@ -0,0 +1,110 @@
+#N canvas 2 27 448 300 10;
+#N canvas 635 281 487 526 gas 0;
+#X obj 47 267 *~;
+#X obj 63 127 line~;
+#X obj 134 155 noise~;
+#X msg 137 103 0;
+#X obj 205 129 line~;
+#X obj 78 290 +~;
+#X obj 82 338 biquad~;
+#X msg 95 317 1.84252 -0.866142 -0.0787402 -0.677165;
+#X obj 63 155 *~;
+#X obj 134 200 *~;
+#X obj 64 177 *~ 10000;
+#X obj 64 223 *~ 10000;
+#X obj 136 448 bp~ 400 7;
+#X obj 146 431 clip~ -0.1 0.2;
+#X obj 79 448 hip~ 30;
+#X obj 205 156 *~;
+#X obj 135 223 *~ 0.02;
+#X obj 80 484 *~ 0.3;
+#X obj 148 280 loadbang;
+#X obj 65 244 osc~;
+#X obj 64 201 osc~;
+#X obj 135 177 bp~ 900 1;
+#X obj 205 178 *~;
+#X obj 81 359 *~ 0.1;
+#X obj 9 386 bp~ 400 1;
+#X obj 81 386 bp~ 800 1;
+#X obj 164 387 bp~ 1600 1;
+#X obj 111 32 t b b b;
+#X obj 32 449 *~ 0.9;
+#X text 75 -12 AK47 gas venting 2 + reverb;
+#X obj 99 520 outlet~;
+#X obj 118 11 inlet;
+#X obj 76 77 f 10;
+#X obj 227 77 f 2000;
+#X msg 205 107 1 0 \, 0 \$1;
+#X msg 62 104 1 0 \, 0 \$1;
+#X obj 329 32 inlet;
+#X obj 435 37 inlet;
+#X floatatom 297 184 5 0 0 0 - - -;
+#X connect 0 0 5 0;
+#X connect 1 0 8 0;
+#X connect 1 0 8 1;
+#X connect 1 0 0 0;
+#X connect 2 0 21 0;
+#X connect 3 0 19 1;
+#X connect 3 0 20 1;
+#X connect 4 0 15 0;
+#X connect 4 0 15 1;
+#X connect 5 0 6 0;
+#X connect 6 0 23 0;
+#X connect 7 0 6 0;
+#X connect 8 0 10 0;
+#X connect 9 0 16 0;
+#X connect 10 0 20 0;
+#X connect 11 0 19 0;
+#X connect 12 0 17 0;
+#X connect 13 0 14 0;
+#X connect 13 0 12 0;
+#X connect 14 0 17 0;
+#X connect 15 0 22 0;
+#X connect 15 0 22 1;
+#X connect 16 0 5 1;
+#X connect 17 0 30 0;
+#X connect 18 0 7 0;
+#X connect 19 0 0 1;
+#X connect 20 0 11 0;
+#X connect 21 0 9 0;
+#X connect 22 0 9 1;
+#X connect 23 0 24 0;
+#X connect 23 0 25 0;
+#X connect 23 0 26 0;
+#X connect 24 0 13 0;
+#X connect 24 0 28 0;
+#X connect 25 0 13 0;
+#X connect 25 0 28 0;
+#X connect 26 0 13 0;
+#X connect 26 0 28 0;
+#X connect 27 0 32 0;
+#X connect 27 1 3 0;
+#X connect 27 2 33 0;
+#X connect 28 0 17 0;
+#X connect 31 0 27 0;
+#X connect 32 0 35 0;
+#X connect 33 0 34 0;
+#X connect 34 0 4 0;
+#X connect 35 0 1 0;
+#X connect 36 0 32 1;
+#X connect 36 0 38 0;
+#X connect 37 0 33 1;
+#X restore 126 190 pd gas;
+#X obj 99 269 outlet~;
+#X obj 157 141 t b f;
+#X obj 119 100 route bang float;
+#X msg 230 155 2000;
+#X msg 239 187 200;
+#X obj 116 39 inlet trig;
+#X obj 276 42 inlet reverb;
+#X msg 115 128 10;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
+#X connect 2 1 0 1;
+#X connect 3 0 8 0;
+#X connect 3 1 2 0;
+#X connect 4 0 0 2;
+#X connect 5 0 0 2;
+#X connect 6 0 3 0;
+#X connect 7 0 0 2;
+#X connect 8 0 2 0;
diff --git a/gunShot~-help.pd b/gunShot~-help.pd
new file mode 100644
index 0000000..ed7a348
--- /dev/null
+++ b/gunShot~-help.pd
@@ -0,0 +1,11 @@
+#N canvas 1 57 286 217 10;
+#X obj 18 70 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 15 22 Comment: Taken from Andy Farnell's work.;
+#X text 16 6 Description: Generates a gun shot.;
+#X obj 18 93 mtl/gunShot~;
+#X obj 18 131 mtl/out~;
+#X text 17 39 tags: synthesize~;
+#X connect 0 0 3 0;
+#X connect 3 0 4 0;
+#X connect 3 0 4 1;
diff --git a/gunShot~.pd b/gunShot~.pd
new file mode 100644
index 0000000..40d987a
--- /dev/null
+++ b/gunShot~.pd
@@ -0,0 +1,139 @@
+#N canvas 387 285 645 616 10;
+#X obj 268 281 noise~;
+#X obj 268 352 *~;
+#X obj 267 330 clip~ -0.3 0.3;
+#X obj 122 443 cos~;
+#X obj 123 418 +~;
+#X text 98 236 freq;
+#X text 163 468 amp;
+#X obj 156 171 *~;
+#X obj 156 192 *~;
+#X obj 140 350 noise~;
+#X obj 139 373 *~;
+#X obj 156 215 *~;
+#X obj 155 240 *~;
+#X obj 191 350 *~ 0.33;
+#X obj 122 308 phasor~;
+#X obj 138 394 lop~;
+#X obj 121 264 *~ 5000;
+#X obj 121 286 +~ 100;
+#X obj 240 516 *~;
+#X obj 277 669 *~ 2.5;
+#X obj 69 668 *~ 2;
+#X obj 140 610 * 4600;
+#X obj 50 610 * 3600;
+#X obj 387 485 * 1;
+#X obj 157 142 line~;
+#X msg 157 120 1 0 \, 0 25;
+#X obj 269 515 *~;
+#X obj 269 181 *~;
+#X obj 269 202 *~;
+#X obj 269 225 *~;
+#X obj 268 250 *~;
+#X obj 270 152 line~;
+#X obj 267 304 *~ 100;
+#X msg 387 462 0.913;
+#X obj 440 669 *~ 6;
+#X obj 362 669 *~ 5;
+#X obj 268 374 hip~ 12;
+#X obj 233 78 t b b;
+#X obj 234 58 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 441 634 bp~ 1 3;
+#X obj 458 605 * 800;
+#X obj 387 608 * 975;
+#X obj 362 633 bp~ 1 5;
+#X obj 305 610 * 1222;
+#X obj 223 610 * 2620;
+#X obj 193 670 *~ 3;
+#X obj 387 440 loadbang;
+#X text 184 33 AK47 shell detonation;
+#X obj 276 715 clip~ -1 1;
+#X obj 270 110 del 10;
+#X obj 275 633 bp~ 1 3;
+#X obj 194 639 bp~ 1 2;
+#X obj 14 638 bp~ 1 2;
+#X obj 103 637 bp~ 1 2;
+#X msg 270 130 1 0 \, 0 1700;
+#X obj 219 6 inlet;
+#X obj 276 738 outlet~;
+#X connect 0 0 32 0;
+#X connect 1 0 36 0;
+#X connect 2 0 1 0;
+#X connect 3 0 18 0;
+#X connect 4 0 3 0;
+#X connect 7 0 8 0;
+#X connect 7 0 8 1;
+#X connect 8 0 11 0;
+#X connect 8 0 11 1;
+#X connect 8 0 18 1;
+#X connect 9 0 10 0;
+#X connect 10 0 15 0;
+#X connect 11 0 12 0;
+#X connect 11 0 12 1;
+#X connect 11 0 13 0;
+#X connect 12 0 16 0;
+#X connect 13 0 10 1;
+#X connect 14 0 4 0;
+#X connect 15 0 4 1;
+#X connect 16 0 17 0;
+#X connect 17 0 14 0;
+#X connect 18 0 39 0;
+#X connect 18 0 42 0;
+#X connect 18 0 50 0;
+#X connect 18 0 51 0;
+#X connect 18 0 52 0;
+#X connect 18 0 53 0;
+#X connect 19 0 48 0;
+#X connect 20 0 48 0;
+#X connect 21 0 53 1;
+#X connect 22 0 52 1;
+#X connect 23 0 22 0;
+#X connect 23 0 21 0;
+#X connect 23 0 40 0;
+#X connect 23 0 41 0;
+#X connect 23 0 43 0;
+#X connect 23 0 44 0;
+#X connect 24 0 7 0;
+#X connect 24 0 7 1;
+#X connect 25 0 24 0;
+#X connect 26 0 39 0;
+#X connect 26 0 42 0;
+#X connect 26 0 50 0;
+#X connect 26 0 51 0;
+#X connect 26 0 52 0;
+#X connect 26 0 53 0;
+#X connect 27 0 28 0;
+#X connect 27 0 28 1;
+#X connect 28 0 29 0;
+#X connect 28 0 29 1;
+#X connect 29 0 30 0;
+#X connect 29 0 30 1;
+#X connect 30 0 26 1;
+#X connect 30 0 1 1;
+#X connect 31 0 27 0;
+#X connect 31 0 27 1;
+#X connect 32 0 2 0;
+#X connect 33 0 23 0;
+#X connect 34 0 48 0;
+#X connect 35 0 48 0;
+#X connect 36 0 26 0;
+#X connect 37 0 25 0;
+#X connect 37 1 49 0;
+#X connect 38 0 37 0;
+#X connect 39 0 34 0;
+#X connect 40 0 39 1;
+#X connect 41 0 42 1;
+#X connect 42 0 35 0;
+#X connect 43 0 50 1;
+#X connect 44 0 51 1;
+#X connect 45 0 48 0;
+#X connect 46 0 33 0;
+#X connect 48 0 56 0;
+#X connect 49 0 54 0;
+#X connect 50 0 19 0;
+#X connect 51 0 45 0;
+#X connect 52 0 20 0;
+#X connect 53 0 20 0;
+#X connect 54 0 31 0;
+#X connect 55 0 38 0;
diff --git a/hexToDec-help.pd b/hexToDec-help.pd
new file mode 100644
index 0000000..79262b6
--- /dev/null
+++ b/hexToDec-help.pd
@@ -0,0 +1,16 @@
+#N canvas 364 98 626 444 10;
+#X floatatom 177 350 30 0 0 0 - - -;
+#X text 20 11 Description: Hexadecimal to decimal conversion.;
+#X msg 268 134 0x11;
+#X msg 291 190 0xa1;
+#X text 20 25 tags: conversion;
+#X obj 177 322 mtl/hexToDec;
+#X msg 101 137 0xffaa;
+#X msg 83 184 0xf0;
+#X msg 175 110 0xffcc33;
+#X connect 2 0 5 0;
+#X connect 3 0 5 0;
+#X connect 5 0 0 0;
+#X connect 6 0 5 0;
+#X connect 7 0 5 0;
+#X connect 8 0 5 0;
diff --git a/hexToDec.pd b/hexToDec.pd
new file mode 100644
index 0000000..98048e5
--- /dev/null
+++ b/hexToDec.pd
@@ -0,0 +1,8 @@
+#N canvas 1248 92 592 550 10;
+#X obj 102 -128 inlet;
+#X obj 102 78 outlet;
+#X obj 102 2 zexy/atoi;
+#X obj 102 -58 cyclone/tosymbol;
+#X connect 0 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
diff --git a/hissing~-help.pd b/hissing~-help.pd
new file mode 100644
index 0000000..1d28937
--- /dev/null
+++ b/hissing~-help.pd
@@ -0,0 +1,8 @@
+#N canvas 746 161 338 200 10;
+#X text 40 33 Comment: Taken from Andy Farnell's work.;
+#X text 41 17 Description: Generates some random hissing.;
+#X obj 44 85 mtl/hissing~;
+#X obj 45 116 mtl/out~;
+#X text 41 49 tags: synthesize~;
+#X connect 2 0 3 0;
+#X connect 2 0 3 1;
diff --git a/hissing~.pd b/hissing~.pd
new file mode 100644
index 0000000..2043555
--- /dev/null
+++ b/hissing~.pd
@@ -0,0 +1,27 @@
+#N canvas 632 158 618 416 10;
+#N canvas 1 57 450 300 hissing 0;
+#X obj 106 188 *~;
+#X obj 141 57 lop~ 1;
+#X obj 142 107 *~;
+#X obj 66 58 hip~ 1000;
+#X obj 141 133 *~;
+#X obj 142 80 *~ 10;
+#X obj 141 157 *~ 600;
+#X obj 105 222 outlet~;
+#X obj 111 27 inlet~;
+#X connect 0 0 7 0;
+#X connect 1 0 5 0;
+#X connect 2 0 4 0;
+#X connect 2 0 4 1;
+#X connect 3 0 0 0;
+#X connect 4 0 6 0;
+#X connect 5 0 2 0;
+#X connect 5 0 2 1;
+#X connect 6 0 0 1;
+#X connect 8 0 1 0;
+#X connect 8 0 3 0;
+#X restore 128 158 pd hissing;
+#X obj 126 352 outlet~;
+#X obj 128 126 noise~;
+#X connect 0 0 1 0;
+#X connect 2 0 0 0;
diff --git a/hold~-help.pd b/hold~-help.pd
new file mode 100644
index 0000000..2c10476
--- /dev/null
+++ b/hold~-help.pd
@@ -0,0 +1,12 @@
+#N canvas 0 0 508 403 10;
+#X obj 222 117 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 104 12 Description: Holds a signal to a fixed value.;
+#X obj 142 93 osc~ 0.5;
+#X text 106 30 tags: control~;
+#X obj 143 154 mtl/hold~;
+#X obj 145 254 cyclone/Scope~ 130 130 256 3 128 -1 1 0 0 0 0 102 255
+51 135 135 135 0;
+#X connect 0 0 4 1;
+#X connect 2 0 4 0;
+#X connect 4 0 5 0;
diff --git a/hold~.pd b/hold~.pd
new file mode 100644
index 0000000..6cb7ec2
--- /dev/null
+++ b/hold~.pd
@@ -0,0 +1,30 @@
+#N canvas 632 94 450 300 10;
+#N canvas 434 246 756 522 hold~ 0;
+#X obj 94 114 inlet~;
+#X obj 147 414 outlet~;
+#X obj 324 96 inlet;
+#X obj 255 213 sig~ 0;
+#X obj 304 168 sel 0 1;
+#X obj 328 281 snapshot~;
+#X obj 258 141 t f f;
+#X obj 138 241 zexy/multiplex~ 0 1;
+#X connect 0 0 7 0;
+#X connect 2 0 6 0;
+#X connect 3 0 7 1;
+#X connect 4 1 5 0;
+#X connect 5 0 3 0;
+#X connect 6 0 7 0;
+#X connect 6 1 4 0;
+#X connect 7 0 1 0;
+#X connect 7 0 5 0;
+#X restore 96 77 pd hold~;
+#X obj 90 24 inlet~;
+#X obj 107 200 outlet~;
+#X obj 206 9 inlet;
+#X obj 181 51 != 0;
+#X obj 185 74 change 0;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 0 1;
diff --git a/hsv-help.pd b/hsv-help.pd
new file mode 100644
index 0000000..eaf04a3
--- /dev/null
+++ b/hsv-help.pd
@@ -0,0 +1,8 @@
+#N canvas 0 0 450 300 10;
+#X text 43 23 Description: Hue saturation value (HSV) sliders;
+#X obj 109 101 mtl/hsv;
+#X obj 109 172 cyclone/prepend set;
+#X msg 109 194;
+#X text 43 38 tags: ui;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
diff --git a/hsv.pd b/hsv.pd
new file mode 100644
index 0000000..13d7eb8
--- /dev/null
+++ b/hsv.pd
@@ -0,0 +1,63 @@
+#N canvas 10 187 722 597 10;
+#X obj 103 117 hsl 128 15 0 1 0 0 empty empty hue 4 8 0 8 -1 -262144
+-262144 0 1;
+#X obj 53 282 pack f f f;
+#X obj 103 134 hsl 128 15 0 1 0 0 empty empty saturation 4 8 0 8 -1
+-262144 -262144 0 1;
+#X obj 104 151 hsl 128 15 0 1 0 0 empty empty value 4 8 0 8 -1 -262144
+-262144 0 1;
+#X obj 222 188 t b f;
+#X obj 267 188 t b f;
+#X obj 5 519 outlet hsvn;
+#X obj 48 -45 inlet;
+#X obj 129 41 unpack f f f;
+#X msg 73 75 set \$1;
+#X msg 144 73 set \$1;
+#X msg 204 71 set \$1;
+#X obj 512 505 s \$0label;
+#X obj 512 462 pack;
+#X msg 512 484 color \$1 \$2;
+#X obj 368 462 outlet pd_color;
+#X obj 368 416 t a a;
+#X obj 25 1 t l l;
+#X obj 41 352 t l l;
+#X obj 346 337 t a a;
+#X msg 551 306 1 \$1;
+#X obj 551 329 -;
+#X obj 482 306 ./listOp;
+#X obj 295 311 ./hsvToRgb;
+#X obj 338 374 ./rgbToNum;
+#X obj 482 386 ./rgbToNum;
+#X connect 0 0 1 0;
+#X connect 1 0 18 0;
+#X connect 2 0 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 1 0;
+#X connect 4 1 1 1;
+#X connect 5 0 1 0;
+#X connect 5 1 1 2;
+#X connect 7 0 17 0;
+#X connect 8 0 9 0;
+#X connect 8 1 10 0;
+#X connect 8 2 11 0;
+#X connect 9 0 0 0;
+#X connect 10 0 2 0;
+#X connect 11 0 3 0;
+#X connect 13 0 14 0;
+#X connect 14 0 12 0;
+#X connect 16 0 15 0;
+#X connect 16 1 13 0;
+#X connect 17 0 1 0;
+#X connect 17 1 8 0;
+#X connect 18 0 6 0;
+#X connect 18 1 23 0;
+#X connect 19 0 24 0;
+#X connect 19 1 22 0;
+#X connect 20 0 21 0;
+#X connect 21 0 22 1;
+#X connect 22 0 25 0;
+#X connect 22 1 20 0;
+#X connect 23 0 19 0;
+#X connect 24 0 16 0;
+#X connect 25 0 13 1;
+#X coords 0 -1 1 1 134 67 1 100 100;
diff --git a/hsvToRgb-help.pd b/hsvToRgb-help.pd
new file mode 100644
index 0000000..64eaaad
--- /dev/null
+++ b/hsvToRgb-help.pd
@@ -0,0 +1,49 @@
+#N canvas 533 195 452 442 10;
+#X msg 84 210 0 1 1;
+#X msg 92 231 0.6 1 0.5;
+#X floatatom 98 140 5 0 1 1 Value - -;
+#X floatatom 61 120 5 0 1 1 Saturation - -;
+#X floatatom 44 100 5 0 1 1 Hue - -;
+#X obj 44 188 pack 0 0 0;
+#X obj 61 162 t b f;
+#X obj 98 162 t b f;
+#X obj 44 310 unpack 0 0 0;
+#X floatatom 113 336 5 0 0 1 Blue - -;
+#X floatatom 78 362 5 0 0 1 Green - -;
+#X floatatom 44 385 5 0 0 1 Red - -;
+#X obj 213 259 unpack 0 0 0;
+#X floatatom 282 281 5 0 0 1 Blue - -;
+#X floatatom 247 301 5 0 0 1 Green - -;
+#X floatatom 213 324 5 0 0 1 Red - -;
+#X text 42 80 Float HSV input;
+#X text 55 288 Float RGB output;
+#X text 16 11 Description: convert from float HSV colorspace to float
+RGB or 8bit(integer) RGB colorspace.;
+#X text 233 237 8bit/int/integer RGB output;
+#X text 211 120 Float HSV input;
+#X obj 44 269 mtl/hsvToRgb;
+#X text 15 45 tags: conversion;
+#X obj 213 217 mtl/hsvToRgb 8bit;
+#X obj 212 365 mtl/hsvToRgb int;
+#X obj 213 386 mtl/hsvToRgb integer;
+#X obj 213 141 mtl/hsv;
+#X connect 0 0 21 0;
+#X connect 1 0 21 0;
+#X connect 2 0 7 0;
+#X connect 3 0 6 0;
+#X connect 4 0 5 0;
+#X connect 5 0 21 0;
+#X connect 6 0 5 0;
+#X connect 6 1 5 1;
+#X connect 7 0 5 0;
+#X connect 7 1 5 2;
+#X connect 8 0 11 0;
+#X connect 8 1 10 0;
+#X connect 8 2 9 0;
+#X connect 12 0 15 0;
+#X connect 12 1 14 0;
+#X connect 12 2 13 0;
+#X connect 21 0 8 0;
+#X connect 23 0 12 0;
+#X connect 26 0 21 0;
+#X connect 26 0 23 0;
diff --git a/hsvToRgb.pd b/hsvToRgb.pd
new file mode 100644
index 0000000..dd30b3b
--- /dev/null
+++ b/hsvToRgb.pd
@@ -0,0 +1,180 @@
+#N canvas 1 57 882 699 10;
+#X obj 187 84 route 0;
+#X msg 187 56 \$2 \$3 \$1;
+#X obj 231 111 unpack 0 0 0;
+#X text 250 71 svh;
+#X obj 187 28 inlet hsv;
+#X obj 181 666 outlet rgb;
+#X obj 401 149 * 6;
+#X obj 380 196 % 6;
+#X obj 350 173 t f f;
+#X msg 350 149 0;
+#X text 406 196 i;
+#X obj 350 219 -;
+#X obj 231 217 *;
+#X obj 231 178 - 1;
+#X obj 231 198 * -1;
+#X obj 263 330 *;
+#X obj 263 291 - 1;
+#X obj 263 311 * -1;
+#X obj 263 269 *;
+#X obj 350 240 t f f;
+#X obj 380 262 - 1;
+#X obj 380 283 * -1;
+#X obj 302 356 *;
+#X obj 302 317 - 1;
+#X obj 302 337 * -1;
+#X obj 302 295 *;
+#X obj 231 151 t f f f;
+#X obj 238 411 pack 0 0 0 0;
+#N canvas 388 287 646 315 select 0;
+#X obj 290 37 inlet;
+#X obj 16 247 outlet;
+#X obj 92 104 t b l;
+#X obj 125 128 unpack 0 0 0 0;
+#X obj 89 43 inlet p q t v;
+#X obj 92 128 i;
+#X obj 92 151 select 0 1 2 3 4 5;
+#X obj 16 223 pack 0 0 0;
+#X obj 16 203 f;
+#X obj 96 223 pack 0 0 0;
+#X obj 96 203 f;
+#X obj 176 223 pack 0 0 0;
+#X obj 176 203 f;
+#X obj 256 223 pack 0 0 0;
+#X obj 256 203 f;
+#X obj 336 223 pack 0 0 0;
+#X obj 336 203 f;
+#X obj 416 223 pack 0 0 0;
+#X obj 416 203 f;
+#X connect 0 0 5 1;
+#X connect 2 0 5 0;
+#X connect 2 1 3 0;
+#X connect 3 0 7 2;
+#X connect 3 0 9 2;
+#X connect 3 0 12 1;
+#X connect 3 0 14 1;
+#X connect 3 0 15 1;
+#X connect 3 0 17 1;
+#X connect 3 1 10 1;
+#X connect 3 1 13 1;
+#X connect 3 1 17 2;
+#X connect 3 2 7 1;
+#X connect 3 2 11 2;
+#X connect 3 2 16 1;
+#X connect 3 3 8 1;
+#X connect 3 3 9 1;
+#X connect 3 3 11 1;
+#X connect 3 3 13 2;
+#X connect 3 3 15 2;
+#X connect 3 3 18 1;
+#X connect 4 0 2 0;
+#X connect 5 0 6 0;
+#X connect 6 0 8 0;
+#X connect 6 1 10 0;
+#X connect 6 2 12 0;
+#X connect 6 3 14 0;
+#X connect 6 4 16 0;
+#X connect 6 5 18 0;
+#X connect 7 0 1 0;
+#X connect 8 0 7 0;
+#X connect 9 0 1 0;
+#X connect 10 0 9 0;
+#X connect 11 0 1 0;
+#X connect 12 0 11 0;
+#X connect 13 0 1 0;
+#X connect 14 0 13 0;
+#X connect 15 0 1 0;
+#X connect 16 0 15 0;
+#X connect 17 0 1 0;
+#X connect 18 0 17 0;
+#X restore 243 456 pd select;
+#X msg 187 478 \$1 \$1 \$1;
+#X obj 126 437 clip 0 1;
+#X obj 231 131 clip 0 1;
+#X obj 270 173 clip 0 1;
+#X obj 350 109 clip 0 1;
+#X obj 350 129 select 1;
+#X msg 139 357 \$1;
+#X obj 189 373 abs;
+#X obj 228 352 abs;
+#X obj 271 386 abs;
+#X obj 302 541 unpack f f f;
+#X obj 299 572 * 255;
+#X obj 347 571 * 255;
+#X obj 414 572 * 255;
+#X obj 343 625 pack f f f;
+#X obj 304 599 int;
+#X obj 352 598 int;
+#X obj 404 603 int;
+#X obj 564 446 loadbang;
+#X msg 634 535 1;
+#X obj 562 503 sel 8bit int integer;
+#X obj 259 491 zexy/demultiplex 0 1;
+#X obj 564 475 iemlib/dollarg;
+#X connect 0 0 35 0;
+#X connect 0 1 2 0;
+#X connect 1 0 0 0;
+#X connect 2 0 31 0;
+#X connect 2 1 32 0;
+#X connect 2 2 33 0;
+#X connect 4 0 1 0;
+#X connect 6 0 8 0;
+#X connect 7 0 11 1;
+#X connect 7 0 28 1;
+#X connect 8 0 11 0;
+#X connect 8 1 7 0;
+#X connect 9 0 8 0;
+#X connect 11 0 19 0;
+#X connect 12 0 36 0;
+#X connect 13 0 14 0;
+#X connect 14 0 12 0;
+#X connect 15 0 37 0;
+#X connect 16 0 17 0;
+#X connect 17 0 15 0;
+#X connect 18 0 16 0;
+#X connect 19 0 18 1;
+#X connect 19 1 20 0;
+#X connect 20 0 21 0;
+#X connect 21 0 25 1;
+#X connect 22 0 38 0;
+#X connect 23 0 24 0;
+#X connect 24 0 22 0;
+#X connect 25 0 23 0;
+#X connect 26 0 13 0;
+#X connect 26 1 18 0;
+#X connect 26 2 25 0;
+#X connect 27 0 28 0;
+#X connect 28 0 50 0;
+#X connect 29 0 50 0;
+#X connect 30 0 29 0;
+#X connect 31 0 26 0;
+#X connect 32 0 12 1;
+#X connect 32 0 27 3;
+#X connect 32 0 15 1;
+#X connect 32 0 22 1;
+#X connect 33 0 34 0;
+#X connect 34 0 9 0;
+#X connect 34 1 6 0;
+#X connect 35 0 30 0;
+#X connect 36 0 27 0;
+#X connect 37 0 27 1;
+#X connect 38 0 27 2;
+#X connect 39 0 40 0;
+#X connect 39 1 41 0;
+#X connect 39 2 42 0;
+#X connect 40 0 44 0;
+#X connect 41 0 45 0;
+#X connect 42 0 46 0;
+#X connect 43 0 5 0;
+#X connect 44 0 43 0;
+#X connect 45 0 43 1;
+#X connect 46 0 43 2;
+#X connect 47 0 51 0;
+#X connect 48 0 50 1;
+#X connect 49 0 48 0;
+#X connect 49 1 48 0;
+#X connect 49 2 48 0;
+#X connect 50 0 5 0;
+#X connect 50 1 39 0;
+#X connect 51 0 49 0;
diff --git a/import.sh b/import.sh
new file mode 100755
index 0000000..0151395
--- /dev/null
+++ b/import.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+if [ $# -ne 2 ]
+then
+echo "Usage: $0 original_name new_name"
+exit
+fi
+cp ../pdmtl/$1-help.pd ./$2-help.pd \
+&& cp ../pdmtl/$1.pd ./$2.pd \
+&& svn add ./$2-help.pd ./$2.pd
diff --git a/inBetweens-help.pd b/inBetweens-help.pd
new file mode 100644
index 0000000..2b47f1c
--- /dev/null
+++ b/inBetweens-help.pd
@@ -0,0 +1,18 @@
+#N canvas 223 263 619 407 12;
+#X msg 261 118 0;
+#X text 302 118 Sets current value;
+#X obj 115 226 print;
+#X msg 17 92 0;
+#X msg 176 95 10;
+#X msg 77 90 2;
+#X msg 136 93 9;
+#X text 12 3 Description: Prints all the integers between the last
+and previous received integers.;
+#X obj 115 161 mtl/inBetweens;
+#X text 10 42 tags: math;
+#X connect 0 0 8 1;
+#X connect 3 0 8 0;
+#X connect 4 0 8 0;
+#X connect 5 0 8 0;
+#X connect 6 0 8 0;
+#X connect 8 0 2 0;
diff --git a/inBetweens.pd b/inBetweens.pd
new file mode 100644
index 0000000..c35987d
--- /dev/null
+++ b/inBetweens.pd
@@ -0,0 +1,53 @@
+#N canvas 221 199 515 412 12;
+#X obj 171 207 until;
+#X obj 161 42 int;
+#X obj 171 121 -;
+#X obj 274 222 f;
+#X obj 228 265 +;
+#N canvas 0 0 454 304 sign 0;
+#X obj 97 184 abs;
+#X obj 105 79 inlet;
+#X obj 105 143 t f f;
+#X obj 160 186 moses 0;
+#X msg 159 215 -1;
+#X msg 209 217 1;
+#X obj 101 249 outlet;
+#X obj 190 260 outlet;
+#X connect 0 0 6 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 2 1 3 0;
+#X connect 3 0 4 0;
+#X connect 3 1 5 0;
+#X connect 4 0 7 0;
+#X connect 5 0 7 0;
+#X restore 171 147 pd sign;
+#X obj 228 297 t f f f;
+#X obj 163 177 sel 0;
+#X obj 142 247 f;
+#X obj 175 77 t f f;
+#X obj 159 13 inlet;
+#X text 40 -15 Spills values between integers.;
+#X obj 317 67 inlet;
+#X obj 228 328 outlet;
+#X text 375 15 set current value;
+#X obj 340 197 t f f;
+#X connect 0 0 3 0;
+#X connect 1 0 9 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 0;
+#X connect 4 0 6 0;
+#X connect 5 0 7 0;
+#X connect 5 1 4 1;
+#X connect 6 0 13 0;
+#X connect 6 1 3 1;
+#X connect 6 2 2 1;
+#X connect 7 0 8 0;
+#X connect 7 1 0 0;
+#X connect 8 0 13 0;
+#X connect 9 0 2 0;
+#X connect 9 1 8 1;
+#X connect 10 0 1 0;
+#X connect 12 0 15 0;
+#X connect 15 0 3 1;
+#X connect 15 1 2 1;
diff --git a/indexer-help.pd b/indexer-help.pd
new file mode 100644
index 0000000..79a5c2b
--- /dev/null
+++ b/indexer-help.pd
@@ -0,0 +1,51 @@
+#N canvas 1176 46 728 641 10;
+#X obj 183 287 bng 15 250 50 0 empty empty clear 17 7 0 10 -262144
+-1 -1;
+#X obj 35 489 mtl/indexer;
+#X obj 16 9 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 21 51 tags: data;
+#X msg 183 311 symbol bananas;
+#X msg 35 106 symbol apples;
+#X msg 61 128 symbol raisins;
+#X msg 77 153 symbol bananas;
+#X text 21 11 description: Creates a symbol to integer map. Each symbol
+is assigned a unique numerical index.;
+#X text 250 285 Inlet 2: delete previous indexations;
+#X text 246 361 Inlet 3: test for an indexation;
+#X msg 250 381 symbol raisins;
+#X obj 87 536 print TEST;
+#X text 151 535 Outlet 3 bangs if no matching index was found during
+a test.;
+#X msg 250 403 2;
+#X text 280 402 Test by index;
+#X text 340 379 Test by symbol;
+#X text 279 310 Delete a previous symbol;
+#X text 34 83 Inlet 1: add or retreive;
+#X msg 190 334 1;
+#X obj 248 457 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X text 268 456 Inlet 4: dump the contents;
+#X obj 110 515 print DUMP;
+#X text 223 333 Delete a previous index number;
+#X obj 36 587 print FOUND;
+#X obj 62 560 print NEW;
+#X msg 107 224 2 pineapple;
+#X text 105 175 You can also attempt to force an index. The symbol
+will only be added to that index if neither the symbol or index have
+been stored.;
+#X text 186 225 Attempt to force pineapple at index 2;
+#X connect 0 0 1 1;
+#X connect 1 0 24 0;
+#X connect 1 1 25 0;
+#X connect 1 2 12 0;
+#X connect 1 3 22 0;
+#X connect 4 0 1 1;
+#X connect 5 0 1 0;
+#X connect 6 0 1 0;
+#X connect 7 0 1 0;
+#X connect 11 0 1 2;
+#X connect 14 0 1 2;
+#X connect 19 0 1 1;
+#X connect 20 0 1 3;
+#X connect 26 0 1 0;
diff --git a/indexer.pd b/indexer.pd
new file mode 100644
index 0000000..d8498d0
--- /dev/null
+++ b/indexer.pd
@@ -0,0 +1,138 @@
+#N canvas 1030 52 1018 711 10;
+#X obj 344 420 cyclone/coll;
+#C restore;
+#X obj 77 -19 inlet try_to_add;
+#X obj 39 155 spigot;
+#X obj 30 70 t s s b b;
+#X msg 109 101 1;
+#X msg 71 100 0;
+#X obj 344 482 t l b;
+#X msg 143 101 0;
+#X msg 117 219 1;
+#X obj 391 483 b;
+#X obj 37 217 t s b b;
+#X obj 120 294 + 1;
+#X obj 120 324 t f f f;
+#X msg 135 430 nstore \$1 \$2 \$1 \$2;
+#X obj 47 318 f;
+#X obj 46 365 pack f s;
+#X obj 47 282 t b s;
+#X obj 46 404 t l l;
+#X obj 285 595 outlet NEW;
+#X obj 62 597 outlet OLD;
+#X obj 480 -5 inlet clear/remove;
+#X obj 480 26 route bang;
+#X obj 527 124 cyclone/prepend remove;
+#X obj 452 61 t b b;
+#X obj 120 269 f -1;
+#X msg 417 116 -1;
+#X msg 460 95 clear;
+#X obj 84 22 route symbol list;
+#X obj 784 1 inlet test;
+#X obj 717 169 spigot;
+#X msg 782 121 1;
+#X msg 813 122 0;
+#X msg 810 144 3;
+#X obj 528 520 t a b;
+#X obj 673 589 outlet TEST;
+#X obj 935 24 inlet dump;
+#X msg 900 177 dump;
+#X obj 939 120 t b b;
+#X msg 972 185 4;
+#X obj 871 588 outlet DUMP;
+#X obj 203 147 spigot;
+#X obj 210 50 t l l b b;
+#X msg 255 84 1;
+#X msg 341 77 2;
+#X msg 276 116 0;
+#X obj 389 592 print indexer;
+#X obj 439 527 t l b;
+#X msg 389 564 Symbol \$2 is already at index \$1.;
+#X obj 716 120 t b a b b;
+#X obj 495 266 route symbol float;
+#X obj 467 289 symbol;
+#X obj 258 147 unpack f s;
+#X obj 260 201 spigot;
+#X obj 544 84 t b a b;
+#X obj 344 450 zexy/demultiplex 0 1 2 3 4;
+#X connect 0 0 54 0;
+#X connect 1 0 27 0;
+#X connect 2 0 10 0;
+#X connect 3 0 2 0;
+#X connect 3 1 0 0;
+#X connect 3 2 5 0;
+#X connect 3 3 4 0;
+#X connect 4 0 2 1;
+#X connect 5 0 54 1;
+#X connect 6 0 19 0;
+#X connect 6 1 7 0;
+#X connect 7 0 2 1;
+#X connect 8 0 54 1;
+#X connect 9 0 24 0;
+#X connect 10 0 16 0;
+#X connect 10 1 24 0;
+#X connect 10 2 8 0;
+#X connect 11 0 12 0;
+#X connect 12 0 0 0;
+#X connect 12 1 14 1;
+#X connect 12 2 24 1;
+#X connect 13 0 0 0;
+#X connect 14 0 15 0;
+#X connect 15 0 17 0;
+#X connect 16 0 14 0;
+#X connect 16 1 15 1;
+#X connect 17 0 18 0;
+#X connect 17 1 13 0;
+#X connect 20 0 21 0;
+#X connect 21 0 23 0;
+#X connect 21 1 53 0;
+#X connect 22 0 0 0;
+#X connect 23 0 25 0;
+#X connect 23 1 26 0;
+#X connect 24 0 11 0;
+#X connect 25 0 24 1;
+#X connect 26 0 0 0;
+#X connect 27 0 3 0;
+#X connect 27 1 41 0;
+#X connect 28 0 48 0;
+#X connect 29 0 34 0;
+#X connect 30 0 29 1;
+#X connect 31 0 29 1;
+#X connect 32 0 54 1;
+#X connect 33 0 34 0;
+#X connect 33 1 31 0;
+#X connect 35 0 37 0;
+#X connect 36 0 0 0;
+#X connect 37 0 36 0;
+#X connect 37 1 38 0;
+#X connect 38 0 54 1;
+#X connect 40 0 17 0;
+#X connect 41 0 40 0;
+#X connect 41 1 51 0;
+#X connect 41 2 42 0;
+#X connect 41 3 43 0;
+#X connect 42 0 40 1;
+#X connect 42 0 52 1;
+#X connect 43 0 54 1;
+#X connect 44 0 40 1;
+#X connect 44 0 52 1;
+#X connect 46 0 47 0;
+#X connect 46 1 44 0;
+#X connect 47 0 45 0;
+#X connect 48 0 29 0;
+#X connect 48 1 49 0;
+#X connect 48 2 32 0;
+#X connect 48 3 30 0;
+#X connect 49 0 50 0;
+#X connect 49 1 0 0;
+#X connect 50 0 0 0;
+#X connect 51 0 52 0;
+#X connect 51 1 0 0;
+#X connect 52 0 0 0;
+#X connect 53 0 25 0;
+#X connect 53 1 22 0;
+#X connect 54 0 6 0;
+#X connect 54 1 9 0;
+#X connect 54 2 46 0;
+#X connect 54 3 33 0;
+#X connect 54 4 39 0;
diff --git a/instrument~-help.pd b/instrument~-help.pd
new file mode 100644
index 0000000..d574ab1
--- /dev/null
+++ b/instrument~-help.pd
@@ -0,0 +1,28 @@
+#N canvas 1116 289 729 396 10;
+#X text 40 53 tags: instrument~;
+#X text 43 19 Description: Creates a polyphonic version of any mtl
+abstraction tagged with "instrument~" (except itslef :).;
+#X text 398 198 Arguments:;
+#X text 405 228 2: the name of the abstraction.;
+#X text 406 213 1: the number of voices.;
+#X text 406 242 3+: arguments passed to the abstraction.;
+#X text 402 265 Inlet 1: note input;
+#X text 402 286 Inlet 2: abstraction inlet 2 as definded by that abstraction.
+;
+#X obj 64 95 notein;
+#X obj 64 118 pack;
+#X obj 42 262 mtl/out~;
+#X obj 176 82 mtl/piano 1;
+#X obj 44 210 instrument~ 3 additive~ 0.7 1 0.2 1;
+#X msg 277 215 0 1 0 1;
+#X msg 274 237 1 0 1 0;
+#X msg 281 266 0.7 1 0.2 1;
+#X connect 8 0 9 0;
+#X connect 8 1 9 1;
+#X connect 9 0 12 0;
+#X connect 11 0 12 0;
+#X connect 12 0 10 0;
+#X connect 12 0 10 1;
+#X connect 13 0 12 1;
+#X connect 14 0 12 1;
+#X connect 15 0 12 1;
diff --git a/instrument~.pd b/instrument~.pd
new file mode 100644
index 0000000..2642a43
--- /dev/null
+++ b/instrument~.pd
@@ -0,0 +1,88 @@
+#N canvas 19 38 1022 625 10;
+#X obj 46 35 inlet notes;
+#X obj 46 72 s \$0in;
+#X obj 50 304 catch~ \$0out;
+#X obj 49 346 outlet~;
+#X obj 360 56 loadbang;
+#X obj 360 104 iemlib/dollarg;
+#X obj 361 139 list split 1;
+#N canvas 1263 179 497 429 \$0i 0;
+#X restore 47 179 pd \$0i;
+#X obj 521 149 sel 0;
+#X obj 792 363 ./listBuild;
+#X obj 856 317 tof/iterate;
+#X obj 810 385 cyclone/prepend obj 0 60 route;
+#X obj 722 503 s pd-\$0i;
+#X obj 486 216 list;
+#X obj 304 201 tof/iterate;
+#X obj 622 163 t b b f f;
+#X obj 640 285 t b b;
+#X obj 306 234 t f f f b;
+#X obj 351 267 * 20;
+#X obj 300 324 pack f f f;
+#X obj 353 292 + 80;
+#X obj 700 185 pack f \$0;
+#X msg 693 222 clear \, obj 0 0 r \$2in \, obj 0 20 poly \$1 1 \, connect
+0 0 1 0 \, obj 0 40 pack f f f \, connect 1 0 2 0 \, connect 1 1 2
+1 \, connect 1 2 2 2 \, obj 200 0 throw~ \$2out \, obj 400 0 r \$2in2
+;
+#X obj 186 33 inlet set;
+#X msg 693 395 connect 2 0 5 0;
+#X obj 320 302 + 6;
+#X obj 190 67 s \$0in2;
+#X msg 796 462 clear;
+#X obj 416 339 cyclone/prepend obj;
+#X obj 321 356 t l l;
+#X msg 416 316 \$1 \$3;
+#X msg 315 416 connect 5 \$1 \$2 0 \, connect \$2 0 3 0 \, connect
+4 0 \$2 1;
+#X obj 451 60 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 430 371 list;
+#X obj 586 387 list trim;
+#X obj 358 165 t b f f;
+#X msg 205 258 loadbang;
+#X obj 880 345 + 1;
+#X connect 0 0 1 0;
+#X connect 2 0 3 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 35 0;
+#X connect 6 1 13 1;
+#X connect 8 1 15 0;
+#X connect 9 0 11 0;
+#X connect 10 0 37 0;
+#X connect 11 0 12 0;
+#X connect 13 0 33 1;
+#X connect 14 0 17 0;
+#X connect 15 1 16 0;
+#X connect 15 2 10 0;
+#X connect 15 3 21 0;
+#X connect 16 0 24 0;
+#X connect 16 1 9 0;
+#X connect 17 0 19 0;
+#X connect 17 1 25 0;
+#X connect 17 2 18 0;
+#X connect 17 3 13 0;
+#X connect 18 0 20 0;
+#X connect 19 0 29 0;
+#X connect 20 0 19 2;
+#X connect 21 0 22 0;
+#X connect 22 0 12 0;
+#X connect 23 0 26 0;
+#X connect 24 0 12 0;
+#X connect 25 0 19 1;
+#X connect 27 0 12 0;
+#X connect 28 0 33 0;
+#X connect 29 0 31 0;
+#X connect 29 1 30 0;
+#X connect 30 0 28 0;
+#X connect 31 0 12 0;
+#X connect 32 0 5 0;
+#X connect 33 0 34 0;
+#X connect 34 0 12 0;
+#X connect 35 0 36 0;
+#X connect 35 1 14 0;
+#X connect 35 2 8 0;
+#X connect 36 0 12 0;
+#X connect 37 0 9 1;
diff --git a/intToDigits-help.pd b/intToDigits-help.pd
new file mode 100644
index 0000000..f4b0434
--- /dev/null
+++ b/intToDigits-help.pd
@@ -0,0 +1,14 @@
+#N canvas 473 159 370 244 10;
+#X msg 78 95 123;
+#X obj 78 188 print digit_list;
+#X floatatom 165 167 5 0 0 1 number_of_digits - -;
+#X msg 85 117 563427;
+#X text 131 117 <- decimals are ignored;
+#X text 16 12 Description: Converts a number to a list of digits. Decimals
+are ignored.;
+#X obj 78 143 mtl/intToDigits;
+#X text 16 47 tags: conversion;
+#X connect 0 0 6 0;
+#X connect 3 0 6 0;
+#X connect 6 0 1 0;
+#X connect 6 1 2 0;
diff --git a/intToDigits.pd b/intToDigits.pd
new file mode 100644
index 0000000..a16778c
--- /dev/null
+++ b/intToDigits.pd
@@ -0,0 +1,23 @@
+#N canvas 427 258 1013 616 10;
+#X obj 495 97 mod 10;
+#X obj 415 137 t f f;
+#X obj 384 215 div 10;
+#X obj 417 252 sel 0;
+#X obj 347 41 inlet;
+#X obj 411 438 outlet;
+#X obj 527 438 outlet;
+#X obj 347 77 route float;
+#X msg 587 355 0;
+#X obj 417 337 ./listBuild prepend;
+#X connect 0 0 9 1;
+#X connect 1 0 2 0;
+#X connect 1 1 0 0;
+#X connect 2 0 3 0;
+#X connect 3 0 9 0;
+#X connect 3 1 1 0;
+#X connect 4 0 7 0;
+#X connect 7 0 1 0;
+#X connect 7 1 8 0;
+#X connect 8 0 6 0;
+#X connect 9 0 5 0;
+#X connect 9 1 6 0;
diff --git a/in~-help.pd b/in~-help.pd
new file mode 100644
index 0000000..3dae479
--- /dev/null
+++ b/in~-help.pd
@@ -0,0 +1,10 @@
+#N canvas 1140 143 838 392 10;
+#X text 13 46 tags: mix~;
+#X obj 69 114 mtl/in~;
+#X text 13 15 Description: Controls the input volume and displays a
+stereo VU.;
+#X obj 70 189 mtl/out~;
+#X text 245 122 The square next to the volume slider glows green when
+DSP is ON and input is detected.;
+#X connect 1 0 3 0;
+#X connect 1 1 3 1;
diff --git a/in~.pd b/in~.pd
new file mode 100644
index 0000000..dc8602a
--- /dev/null
+++ b/in~.pd
@@ -0,0 +1,238 @@
+#N canvas 1182 26 790 663 10;
+#N canvas 1191 53 886 636 guts 0;
+#X obj 371 459 snapshot~;
+#X obj 474 466 snapshot~;
+#N canvas 1221 106 734 553 size&color 0;
+#X obj 90 14 inlet;
+#X obj 26 371 s \$0left;
+#X obj 162 187 moses 50;
+#X obj 88 121 t f f;
+#X msg 157 213 0;
+#X msg 213 230 1;
+#X msg 193 315 color 14;
+#X msg 260 318 color 13;
+#X msg 120 312 color 16;
+#X obj 195 285 sel 0 1 2;
+#X obj 193 257 change -1;
+#X msg 264 235 2;
+#X obj 213 208 moses 90;
+#X obj 87 96 + 1;
+#X obj 85 34 change -1;
+#X obj 86 53 clip 0 1;
+#X obj 96 74 * 100;
+#X obj 67 178 * 1.5;
+#X msg 43 217 vis_size \$1 7;
+#X connect 0 0 14 0;
+#X connect 2 0 4 0;
+#X connect 2 1 12 0;
+#X connect 3 0 17 0;
+#X connect 3 1 2 0;
+#X connect 4 0 10 0;
+#X connect 5 0 10 0;
+#X connect 6 0 1 0;
+#X connect 7 0 1 0;
+#X connect 8 0 1 0;
+#X connect 9 0 8 0;
+#X connect 9 1 6 0;
+#X connect 9 2 7 0;
+#X connect 10 0 9 0;
+#X connect 11 0 10 0;
+#X connect 12 0 5 0;
+#X connect 12 1 11 0;
+#X connect 13 0 3 0;
+#X connect 14 0 15 0;
+#X connect 15 0 16 0;
+#X connect 16 0 13 0;
+#X connect 17 0 18 0;
+#X connect 18 0 1 0;
+#X restore 353 543 pd size&color;
+#X obj 47 18 loadbang;
+#X msg 52 44 0;
+#X obj 241 85 inlet~;
+#X obj 421 89 inlet~;
+#X obj 493 184 line~;
+#X obj 50 291 *~;
+#X obj 173 309 *~;
+#X obj 27 359 hip~ 10;
+#X obj 102 369 hip~ 10;
+#X obj 551 86 inlet vol;
+#X obj 37 485 outlet~;
+#X obj 144 490 outlet~;
+#X msg 535 135 \$1 100;
+#X obj 596 210 sel 0;
+#X msg 558 243 0;
+#X obj 647 260 metro 200;
+#N canvas 0 0 734 553 size&color 0;
+#X obj 90 14 inlet;
+#X obj 162 187 moses 50;
+#X obj 88 121 t f f;
+#X msg 157 213 0;
+#X msg 213 230 1;
+#X msg 193 315 color 14;
+#X msg 260 318 color 13;
+#X msg 120 312 color 16;
+#X obj 195 285 sel 0 1 2;
+#X obj 193 257 change -1;
+#X msg 264 235 2;
+#X obj 213 208 moses 90;
+#X obj 87 96 + 1;
+#X obj 96 74 * 99;
+#X obj 85 34 change -1;
+#X obj 86 53 clip 0 1;
+#X obj 26 371 s \$0right;
+#X obj 83 178 * 1.5;
+#X msg 44 224 vis_size \$1 7;
+#X connect 0 0 14 0;
+#X connect 1 0 3 0;
+#X connect 1 1 11 0;
+#X connect 2 0 17 0;
+#X connect 2 1 1 0;
+#X connect 3 0 9 0;
+#X connect 4 0 9 0;
+#X connect 5 0 16 0;
+#X connect 6 0 16 0;
+#X connect 7 0 16 0;
+#X connect 8 0 7 0;
+#X connect 8 1 5 0;
+#X connect 8 2 6 0;
+#X connect 9 0 8 0;
+#X connect 10 0 9 0;
+#X connect 11 0 4 0;
+#X connect 11 1 10 0;
+#X connect 12 0 2 0;
+#X connect 13 0 12 0;
+#X connect 14 0 15 0;
+#X connect 15 0 13 0;
+#X connect 17 0 18 0;
+#X connect 18 0 16 0;
+#X restore 485 536 pd size&color;
+#X obj 566 166 != 0;
+#X obj 367 426 iemlib/peakenv~ 1000;
+#X obj 481 401 iemlib/peakenv~ 1000;
+#X obj 654 547 outlet;
+#X obj 663 172 r pd;
+#X obj 670 224 route dsp;
+#X obj 599 521 max;
+#X obj 631 408 iemlib/peakenv~ 1000;
+#X obj 766 404 iemlib/peakenv~ 1000;
+#X obj 643 457 snapshot~;
+#X obj 746 464 snapshot~;
+#X obj 656 349 t b b;
+#X connect 0 0 2 0;
+#X connect 1 0 19 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 0;
+#X connect 4 0 19 0;
+#X connect 5 0 8 0;
+#X connect 5 0 27 0;
+#X connect 6 0 9 0;
+#X connect 6 0 28 0;
+#X connect 7 0 8 1;
+#X connect 7 0 9 1;
+#X connect 8 0 10 0;
+#X connect 8 0 21 0;
+#X connect 9 0 11 0;
+#X connect 9 0 22 0;
+#X connect 10 0 13 0;
+#X connect 11 0 14 0;
+#X connect 12 0 15 0;
+#X connect 15 0 7 0;
+#X connect 15 0 20 0;
+#X connect 16 0 17 0;
+#X connect 16 1 18 0;
+#X connect 17 0 2 0;
+#X connect 17 0 18 0;
+#X connect 17 0 19 0;
+#X connect 18 0 0 0;
+#X connect 18 0 1 0;
+#X connect 18 0 31 0;
+#X connect 20 0 16 0;
+#X connect 21 0 0 0;
+#X connect 22 0 1 0;
+#X connect 24 0 25 0;
+#X connect 25 0 18 0;
+#X connect 26 0 23 0;
+#X connect 27 0 29 0;
+#X connect 28 0 30 0;
+#X connect 29 0 26 0;
+#X connect 30 0 26 1;
+#X connect 31 0 29 0;
+#X connect 31 1 30 0;
+#X restore 56 443 pd guts;
+#X obj 244 401 / 100;
+#X obj 244 425 pow 3;
+#X obj 102 134 cnv 7 149 15 empty empty empty 20 12 0 14 -1 -66577
+0;
+#X obj 102 134 cnv 1 1 7 empty \$0left empty 20 12 0 14 -24198 -262144
+0;
+#X obj 102 142 cnv 1 1 7 empty \$0right empty 20 12 0 14 -24198 -262144
+0;
+#X obj 106 116 hsl 100 15 0 90 0 0 empty empty vol 104 8 0 9 -228856
+-1 -1 0 1;
+#X obj 99 51 iemlib/init 0;
+#X obj 25 563 outlet~;
+#X obj 143 562 outlet~;
+#X obj 10 199 adc~ 1 2;
+#X obj 234 116 cnv 15 15 15 empty \$0led empty 20 12 0 14 -237178 -262144
+0;
+#X obj 306 302 > 0;
+#X msg 311 433 \; pd dsp 1;
+#X obj 306 326 sel 1;
+#X obj 306 351 value DSP;
+#X obj 312 382 sel 0;
+#X obj 310 406 t b b;
+#X msg 365 408 1;
+#X obj 244 273 t f f;
+#X obj 356 493 delay 300;
+#X obj 243 476 t f b;
+#X obj 359 694 s \$0led;
+#X msg 357 517 0;
+#X obj 443 494 loadbang;
+#X obj 372 592 change -1;
+#X obj 285 530 moses 0.5;
+#X msg 236 547 0;
+#X msg 291 550 1;
+#X msg 333 552 2;
+#X msg 237 656 color -1.50666e+07;
+#X msg 480 654 color -58625;
+#X obj 370 619 sel 0 1 2;
+#X msg 356 654 color -1.17242e+07;
+#X obj 227 509 moses 0.001;
+#X connect 0 0 8 0;
+#X connect 0 1 9 0;
+#X connect 0 2 21 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 2;
+#X connect 6 0 19 0;
+#X connect 7 0 6 0;
+#X connect 10 0 0 0;
+#X connect 10 1 0 1;
+#X connect 12 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 13 0;
+#X connect 17 1 18 0;
+#X connect 18 0 15 0;
+#X connect 19 0 1 0;
+#X connect 19 1 12 0;
+#X connect 20 0 23 0;
+#X connect 21 0 34 0;
+#X connect 21 1 20 0;
+#X connect 23 0 25 0;
+#X connect 24 0 23 0;
+#X connect 25 0 32 0;
+#X connect 26 0 28 0;
+#X connect 26 1 29 0;
+#X connect 27 0 25 0;
+#X connect 28 0 25 0;
+#X connect 29 0 25 0;
+#X connect 30 0 22 0;
+#X connect 31 0 22 0;
+#X connect 32 0 30 0;
+#X connect 32 1 33 0;
+#X connect 32 2 31 0;
+#X connect 33 0 22 0;
+#X connect 34 0 27 0;
+#X connect 34 1 26 0;
+#X coords 0 -1 1 1 153 52 1 100 100;
diff --git a/keyNameLearn-help.pd b/keyNameLearn-help.pd
new file mode 100644
index 0000000..37382e5
--- /dev/null
+++ b/keyNameLearn-help.pd
@@ -0,0 +1,15 @@
+#N canvas 663 196 309 206 10;
+#X obj 32 74 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 32 147 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X symbolatom 125 145 10 0 0 0 - - -;
+#X text 52 145 Key press.;
+#X text 200 146 Key learned.;
+#X text 51 72 Learn.;
+#X obj 32 105 mtl/keyNameLearn;
+#X text 12 8 Description: Choose a key that toggle.;
+#X text 13 24 tags: ui;
+#X connect 0 0 6 0;
+#X connect 6 0 1 0;
+#X connect 6 1 2 0;
diff --git a/keyNameLearn.pd b/keyNameLearn.pd
new file mode 100644
index 0000000..d040455
--- /dev/null
+++ b/keyNameLearn.pd
@@ -0,0 +1,31 @@
+#N canvas 651 318 450 300 10;
+#X obj 158 43 keyname;
+#X obj 297 35 inlet;
+#X obj 202 84 sel none;
+#X obj 269 145 spigot;
+#X msg 366 156 0;
+#X obj 336 254 outlet;
+#X obj 111 263 outlet;
+#X obj 115 158 spigot;
+#X msg 191 110 1;
+#X obj 238 112 t a b;
+#X msg 225 144 0;
+#X obj 288 181 t a b a b;
+#X msg 304 74 1;
+#X connect 0 0 7 0;
+#X connect 0 1 2 0;
+#X connect 1 0 12 0;
+#X connect 2 0 8 0;
+#X connect 2 1 9 0;
+#X connect 3 0 11 0;
+#X connect 4 0 3 1;
+#X connect 7 0 6 0;
+#X connect 8 0 7 1;
+#X connect 9 0 3 0;
+#X connect 9 1 10 0;
+#X connect 10 0 7 1;
+#X connect 11 0 5 0;
+#X connect 11 1 8 0;
+#X connect 11 2 2 1;
+#X connect 11 3 4 0;
+#X connect 12 0 3 1;
diff --git a/keyR-help.pd b/keyR-help.pd
new file mode 100644
index 0000000..d322b9a
--- /dev/null
+++ b/keyR-help.pd
@@ -0,0 +1,23 @@
+#N canvas 267 162 340 212 10;
+#X obj 17 109 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X text 15 64 The "a" key.;
+#X obj 99 107 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X text 96 63 The "2" key.;
+#X obj 179 109 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X text 177 64 The left control key.;
+#X obj 16 179 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X text 14 134 The right control key.;
+#X text 15 13 Description: Receive a computer key's status.;
+#X obj 99 81 mtl/keyR 2;
+#X obj 16 152 mtl/keyR Shift_L;
+#X obj 17 81 mtl/keyR a;
+#X obj 179 82 mtl/keyR Control_L;
+#X text 17 33 tags: ui;
+#X connect 9 0 2 0;
+#X connect 10 0 6 0;
+#X connect 11 0 0 0;
+#X connect 12 0 4 0;
diff --git a/keyR.pd b/keyR.pd
new file mode 100644
index 0000000..e8d42a2
--- /dev/null
+++ b/keyR.pd
@@ -0,0 +1,22 @@
+#N canvas 1213 210 494 344 10;
+#X obj 121 253 outlet;
+#X obj 116 20 keyname;
+#X obj 119 117 spigot;
+#X msg 207 90 1;
+#X msg 248 92 0;
+#X obj 111 188 change -1;
+#X obj 332 44 loadbang;
+#X obj 223 60 sel symbol;
+#X obj 332 78 iemlib/dollarg;
+#X obj 329 113 cyclone/tosymbol;
+#X connect 1 0 2 0;
+#X connect 1 1 7 0;
+#X connect 2 0 5 0;
+#X connect 3 0 2 1;
+#X connect 4 0 2 1;
+#X connect 5 0 0 0;
+#X connect 6 0 8 0;
+#X connect 7 0 3 0;
+#X connect 7 1 4 0;
+#X connect 8 0 9 0;
+#X connect 9 0 7 1;
diff --git a/keyText-help.pd b/keyText-help.pd
new file mode 100644
index 0000000..de376b2
--- /dev/null
+++ b/keyText-help.pd
@@ -0,0 +1,29 @@
+#N canvas 51 115 657 406 10;
+#X obj 75 181 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+;
+#X obj 73 128 loadbang;
+#X msg 75 153 1;
+#X text 91 177 on/off;
+#X text 214 53 WARNING: Has only been tested on Linux!;
+#X msg 86 285 ui symbols;
+#X obj 88 254 cyclone/prepend set;
+#X text 20 14 The focus must be given to a patcher window. There are
+two input modes.;
+#X msg 241 289;
+#X obj 243 258 cyclone/prepend set;
+#X obj 88 214 mtl/keyText 1 1;
+#X text 22 42 Argument 1: on/off (1/0).;
+#X text 20 61 Inlet 1: on/off (1/0).;
+#X text 22 -24 Description: Creates symbols and phrases while you type.
+;
+#X text 184 119 Outlet 1: result as it is being built.;
+#X text 183 136 Outlet 2: complete result when Enter/Return us pressed.
+;
+#X text 24 -10 tags: ui symbols;
+#X connect 0 0 10 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 6 0 5 0;
+#X connect 9 0 8 0;
+#X connect 10 0 6 0;
+#X connect 10 1 9 0;
diff --git a/keyText.pd b/keyText.pd
new file mode 100644
index 0000000..a5c4146
--- /dev/null
+++ b/keyText.pd
@@ -0,0 +1,64 @@
+#N canvas 987 0 781 711 10;
+#X obj 76 688 outlet;
+#X obj 72 629 t a b;
+#X obj 337 452 list;
+#X obj 341 477 t a a;
+#X obj -1 17 inlet;
+#X obj 26 123 spigot \$1;
+#X obj 119 248 makefilename %c;
+#X msg 118 222 32;
+#X obj 51 19 keyname;
+#X obj 78 79 symbol;
+#X obj 49 49 sel 1;
+#X obj 418 468 zexy/length;
+#X obj 347 520 list split;
+#X obj 420 494 - 1;
+#X obj 77 664 zexy/list2symbol;
+#X msg 171 625 symbol;
+#X obj 196 177 sel Space Return BackSpace Control_L Shift_L Shift_R
+Tab Alt_L Atl_R ISO_Prev_Group ISO_Next_Group Caps_Lock;
+#X obj 310 610 list;
+#X obj 405 685 outlet;
+#X obj 392 626 t a b;
+#X obj 397 661 zexy/list2symbol;
+#X msg 491 622 symbol;
+#X obj 162 565 t a a a;
+#X obj 147 463 t a;
+#X obj 144 505 list prepend;
+#X obj 249 444 t b b b;
+#X connect 1 0 14 0;
+#X connect 1 1 15 0;
+#X connect 2 0 3 0;
+#X connect 3 0 12 0;
+#X connect 3 1 11 0;
+#X connect 4 0 5 1;
+#X connect 5 0 16 0;
+#X connect 6 0 23 0;
+#X connect 7 0 6 0;
+#X connect 8 0 10 0;
+#X connect 8 1 9 1;
+#X connect 9 0 5 0;
+#X connect 10 0 9 0;
+#X connect 11 0 13 0;
+#X connect 12 0 22 0;
+#X connect 13 0 12 1;
+#X connect 14 0 0 0;
+#X connect 15 0 14 1;
+#X connect 16 0 7 0;
+#X connect 16 1 25 0;
+#X connect 16 2 2 0;
+#X connect 16 12 23 0;
+#X connect 17 0 19 0;
+#X connect 19 0 20 0;
+#X connect 19 1 21 0;
+#X connect 20 0 18 0;
+#X connect 21 0 20 1;
+#X connect 22 0 1 0;
+#X connect 22 1 2 1;
+#X connect 22 1 17 1;
+#X connect 22 2 24 1;
+#X connect 23 0 24 0;
+#X connect 24 0 22 0;
+#X connect 25 0 24 0;
+#X connect 25 1 24 1;
+#X connect 25 2 17 0;
diff --git a/kick808~-help.pd b/kick808~-help.pd
new file mode 100644
index 0000000..58e8d76
--- /dev/null
+++ b/kick808~-help.pd
@@ -0,0 +1,50 @@
+#N canvas 108 195 818 494 10;
+#X obj 77 353 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 8 113 trigger;
+#X obj 8 91 bng 15 250 50 0 empty empty empty 17 7 0 10 -24198 -1 -1
+;
+#X msg 157 290 click \$1;
+#X msg 161 137 gain \$1;
+#X msg 158 215 decay \$1;
+#X text 33 92 <- play it;
+#X text 375 435 Author: Roman Haefeli;
+#X text 95 351 <- can be used to switch~ dsp off;
+#X obj 365 90 cnv 15 430 180 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X text 376 100 SYNOPSIS;
+#X text 375 160 outlet0: signal;
+#X text 375 176 outlet1: float (0/1) \, switch~ outlet;
+#X text 374 208 arg1: gain (0-127) / default = 100;
+#X text 373 226 arg2: decay (0-127) / default = 50;
+#X text 373 244 arg3: click (0-127) / default = 50;
+#X text 376 129 inlet0: accepts methods 'trigger' \, 'bang' \, 'gain'
+\, 'decay' and 'click';
+#X text 375 456 Version: 2008-03-05;
+#X obj 160 113 cnv 15 40 15 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X floatatom 161 113 5 0 0 0 - transpo-set -;
+#X obj 158 192 cnv 15 40 15 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X floatatom 158 192 5 0 0 0 - transpo-set -;
+#X obj 156 266 cnv 15 40 15 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X floatatom 157 266 5 0 0 0 - transpo-set -;
+#X text 7 33 Description: an emulation of the kickdrum from the fancy
+tr808 beatmachine;
+#X obj 3 1 cnv 15 800 30 empty empty synth.drum.808.kick~ 2 12 1 14
+-233017 -66577 0;
+#X obj 8 329 mtl/kick808~;
+#X obj 7 417 mtl/out~;
+#X text 8 60 tags: synthesize~;
+#X connect 1 0 26 0;
+#X connect 2 0 1 0;
+#X connect 3 0 26 0;
+#X connect 4 0 26 0;
+#X connect 5 0 26 0;
+#X connect 19 0 4 0;
+#X connect 21 0 5 0;
+#X connect 23 0 3 0;
+#X connect 26 0 27 0;
+#X connect 26 0 27 1;
+#X connect 26 1 0 0;
diff --git a/kick808~.pd b/kick808~.pd
new file mode 100644
index 0000000..777435a
--- /dev/null
+++ b/kick808~.pd
@@ -0,0 +1,409 @@
+#N canvas 589 142 639 633 10;
+#N canvas 876 339 208 203 counter 0;
+#X obj 10 16 inlet;
+#X obj 10 145 outlet;
+#X obj 10 119 f;
+#X obj 44 120 + 1;
+#X obj 10 96 until;
+#X obj 10 44 t b b;
+#X obj 54 73 0;
+#X obj 10 75 200;
+#X connect 0 0 5 0;
+#X connect 2 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 1;
+#X connect 4 0 2 0;
+#X connect 5 0 7 0;
+#X connect 5 1 6 0;
+#X connect 6 0 2 1;
+#X connect 7 0 4 0;
+#X restore 460 334 pd counter;
+#X obj 460 312 t b f;
+#X obj 163 342 line~;
+#X msg 163 319 0 \, 192 5;
+#X obj 146 416 *~;
+#X obj 22 456 *~;
+#X obj 39 359 line~;
+#X obj 39 381 dbtorms~;
+#X obj 254 362 osc~ 50;
+#X obj 65 330 pack 0 1000;
+#N canvas 1068 512 275 328 curve 0;
+#N canvas 751 327 229 226 gleichung 0;
+#X obj 123 85 + 1;
+#X obj 78 85 * -1;
+#X obj 123 12 inlet;
+#X obj 16 5 inlet;
+#X obj 16 68 *;
+#X obj 16 47 t f f;
+#X obj 16 111 *;
+#X obj 16 90 t f f;
+#X obj 16 137 *;
+#X obj 16 166 +;
+#X obj 76 135 *;
+#X obj 16 24 t f f;
+#X obj 16 191 outlet;
+#X connect 0 0 10 1;
+#X connect 1 0 8 1;
+#X connect 2 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 11 0;
+#X connect 4 0 7 0;
+#X connect 5 0 4 0;
+#X connect 5 1 4 1;
+#X connect 6 0 8 0;
+#X connect 7 0 6 0;
+#X connect 7 1 6 1;
+#X connect 8 0 9 0;
+#X connect 9 0 12 0;
+#X connect 10 0 9 1;
+#X connect 11 0 5 0;
+#X connect 11 1 10 0;
+#X restore 31 52 pd gleichung;
+#X obj 31 17 inlet;
+#X obj 31 230 outlet;
+#X obj 136 12 inlet;
+#N canvas 750 295 229 226 gleichung 0;
+#X obj 123 85 + 1;
+#X obj 78 85 * -1;
+#X obj 123 12 inlet;
+#X obj 16 5 inlet;
+#X obj 16 68 *;
+#X obj 16 47 t f f;
+#X obj 16 111 *;
+#X obj 16 90 t f f;
+#X obj 16 137 *;
+#X obj 16 166 +;
+#X obj 76 135 *;
+#X obj 16 24 t f f;
+#X obj 16 191 outlet;
+#X connect 0 0 10 1;
+#X connect 1 0 8 1;
+#X connect 2 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 11 0;
+#X connect 4 0 7 0;
+#X connect 5 0 4 0;
+#X connect 5 1 4 1;
+#X connect 6 0 8 0;
+#X connect 7 0 6 0;
+#X connect 7 1 6 1;
+#X connect 8 0 9 0;
+#X connect 9 0 12 0;
+#X connect 10 0 9 1;
+#X connect 11 0 5 0;
+#X connect 11 1 10 0;
+#X restore 31 72 pd gleichung;
+#N canvas 750 295 229 226 gleichung 0;
+#X obj 123 85 + 1;
+#X obj 78 85 * -1;
+#X obj 123 12 inlet;
+#X obj 16 5 inlet;
+#X obj 16 68 *;
+#X obj 16 47 t f f;
+#X obj 16 111 *;
+#X obj 16 90 t f f;
+#X obj 16 137 *;
+#X obj 16 166 +;
+#X obj 76 135 *;
+#X obj 16 24 t f f;
+#X obj 16 191 outlet;
+#X connect 0 0 10 1;
+#X connect 1 0 8 1;
+#X connect 2 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 11 0;
+#X connect 4 0 7 0;
+#X connect 5 0 4 0;
+#X connect 5 1 4 1;
+#X connect 6 0 8 0;
+#X connect 7 0 6 0;
+#X connect 7 1 6 1;
+#X connect 8 0 9 0;
+#X connect 9 0 12 0;
+#X connect 10 0 9 1;
+#X connect 11 0 5 0;
+#X connect 11 1 10 0;
+#X restore 31 92 pd gleichung;
+#N canvas 750 295 229 226 gleichung 0;
+#X obj 123 85 + 1;
+#X obj 78 85 * -1;
+#X obj 123 12 inlet;
+#X obj 16 5 inlet;
+#X obj 16 68 *;
+#X obj 16 47 t f f;
+#X obj 16 111 *;
+#X obj 16 90 t f f;
+#X obj 16 137 *;
+#X obj 16 166 +;
+#X obj 76 135 *;
+#X obj 16 24 t f f;
+#X obj 16 191 outlet;
+#X connect 0 0 10 1;
+#X connect 1 0 8 1;
+#X connect 2 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 11 0;
+#X connect 4 0 7 0;
+#X connect 5 0 4 0;
+#X connect 5 1 4 1;
+#X connect 6 0 8 0;
+#X connect 7 0 6 0;
+#X connect 7 1 6 1;
+#X connect 8 0 9 0;
+#X connect 9 0 12 0;
+#X connect 10 0 9 1;
+#X connect 11 0 5 0;
+#X connect 11 1 10 0;
+#X restore 31 112 pd gleichung;
+#N canvas 750 295 229 226 gleichung 0;
+#X obj 123 85 + 1;
+#X obj 78 85 * -1;
+#X obj 123 12 inlet;
+#X obj 16 5 inlet;
+#X obj 16 68 *;
+#X obj 16 47 t f f;
+#X obj 16 111 *;
+#X obj 16 90 t f f;
+#X obj 16 137 *;
+#X obj 16 166 +;
+#X obj 76 135 *;
+#X obj 16 24 t f f;
+#X obj 16 191 outlet;
+#X connect 0 0 10 1;
+#X connect 1 0 8 1;
+#X connect 2 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 11 0;
+#X connect 4 0 7 0;
+#X connect 5 0 4 0;
+#X connect 5 1 4 1;
+#X connect 6 0 8 0;
+#X connect 7 0 6 0;
+#X connect 7 1 6 1;
+#X connect 8 0 9 0;
+#X connect 9 0 12 0;
+#X connect 10 0 9 1;
+#X connect 11 0 5 0;
+#X connect 11 1 10 0;
+#X restore 31 132 pd gleichung;
+#N canvas 751 327 229 226 gleichung 0;
+#X obj 123 85 + 1;
+#X obj 78 85 * -1;
+#X obj 123 12 inlet;
+#X obj 16 5 inlet;
+#X obj 16 68 *;
+#X obj 16 47 t f f;
+#X obj 16 111 *;
+#X obj 16 90 t f f;
+#X obj 16 137 *;
+#X obj 16 166 +;
+#X obj 76 135 *;
+#X obj 16 24 t f f;
+#X obj 16 191 outlet;
+#X connect 0 0 10 1;
+#X connect 1 0 8 1;
+#X connect 2 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 11 0;
+#X connect 4 0 7 0;
+#X connect 5 0 4 0;
+#X connect 5 1 4 1;
+#X connect 6 0 8 0;
+#X connect 7 0 6 0;
+#X connect 7 1 6 1;
+#X connect 8 0 9 0;
+#X connect 9 0 12 0;
+#X connect 10 0 9 1;
+#X connect 11 0 5 0;
+#X connect 11 1 10 0;
+#X restore 31 152 pd gleichung;
+#N canvas 750 295 229 226 gleichung 0;
+#X obj 123 85 + 1;
+#X obj 78 85 * -1;
+#X obj 123 12 inlet;
+#X obj 16 5 inlet;
+#X obj 16 68 *;
+#X obj 16 47 t f f;
+#X obj 16 111 *;
+#X obj 16 90 t f f;
+#X obj 16 137 *;
+#X obj 16 166 +;
+#X obj 76 135 *;
+#X obj 16 24 t f f;
+#X obj 16 191 outlet;
+#X connect 0 0 10 1;
+#X connect 1 0 8 1;
+#X connect 2 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 11 0;
+#X connect 4 0 7 0;
+#X connect 5 0 4 0;
+#X connect 5 1 4 1;
+#X connect 6 0 8 0;
+#X connect 7 0 6 0;
+#X connect 7 1 6 1;
+#X connect 8 0 9 0;
+#X connect 9 0 12 0;
+#X connect 10 0 9 1;
+#X connect 11 0 5 0;
+#X connect 11 1 10 0;
+#X restore 31 172 pd gleichung;
+#N canvas 750 295 229 226 gleichung 0;
+#X obj 123 85 + 1;
+#X obj 78 85 * -1;
+#X obj 123 12 inlet;
+#X obj 16 5 inlet;
+#X obj 16 68 *;
+#X obj 16 47 t f f;
+#X obj 16 111 *;
+#X obj 16 90 t f f;
+#X obj 16 137 *;
+#X obj 16 166 +;
+#X obj 76 135 *;
+#X obj 16 24 t f f;
+#X obj 16 191 outlet;
+#X connect 0 0 10 1;
+#X connect 1 0 8 1;
+#X connect 2 0 1 0;
+#X connect 2 0 0 0;
+#X connect 3 0 11 0;
+#X connect 4 0 7 0;
+#X connect 5 0 4 0;
+#X connect 5 1 4 1;
+#X connect 6 0 8 0;
+#X connect 7 0 6 0;
+#X connect 7 1 6 1;
+#X connect 8 0 9 0;
+#X connect 9 0 12 0;
+#X connect 10 0 9 1;
+#X connect 11 0 5 0;
+#X connect 11 1 10 0;
+#X restore 31 192 pd gleichung;
+#X obj 136 35 + 0.1;
+#X obj 136 58 * 0.6;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 3 0 11 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 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 2 0;
+#X connect 11 0 12 0;
+#X connect 12 0 0 1;
+#X connect 12 0 4 1;
+#X connect 12 0 5 1;
+#X connect 12 0 6 1;
+#X connect 12 0 7 1;
+#X connect 12 0 8 1;
+#X connect 12 0 9 1;
+#X connect 12 0 10 1;
+#X restore 460 430 pd curve;
+#X obj 460 407 / 39;
+#X obj 459 269 t f f;
+#X obj 459 290 *;
+#X obj 254 340 line~;
+#X obj 65 309 del 3;
+#X obj 460 385 moses 40;
+#X obj 460 358 t f f;
+#X obj 460 473 table \$0-attack 39;
+#X obj 460 453 tabwrite \$0-attack;
+#X obj 21 238 tabplay~ \$0-attack;
+#X obj 298 341 f 0.58;
+#X msg 254 318 500 \, 50 5;
+#X obj 21 188 t b;
+#X obj 164 215 *;
+#X obj 164 237 rmstodb;
+#X obj 252 259 exp;
+#X obj 252 238 + 5.1;
+#X obj 252 216 * 3.2;
+#X obj 35 315 f;
+#X obj 21 9 inlet;
+#X obj 353 457 del;
+#X obj 323 436 t b b;
+#X obj 353 497 0;
+#X obj 323 498 1;
+#X obj 323 526 t a;
+#X obj 364 565 switch~;
+#X obj 323 591 outlet;
+#X obj 369 435 + 3;
+#X obj 22 565 outlet~;
+#X text 451 509 Author: Roman Haefeli;
+#X obj 164 194 t f f;
+#X text 372 592 switch~;
+#X obj 459 247 / 127;
+#X obj 252 194 / 127;
+#X obj 164 171 / 127;
+#X obj 146 373 expr~ $v1 > 38;
+#X text 450 527 Version: 2008-03-05;
+#X obj 21 39 route bang trigger gain decay click;
+#X obj 309 48 loadbang;
+#X obj 309 78 tof/argument 1 100;
+#X obj 323 103 tof/argument 2 50;
+#X obj 337 127 tof/argument 3 50;
+#X connect 0 0 17 0;
+#X connect 1 0 0 0;
+#X connect 1 1 10 1;
+#X connect 2 0 46 0;
+#X connect 3 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 39 0;
+#X connect 6 0 7 0;
+#X connect 7 0 5 1;
+#X connect 8 0 4 1;
+#X connect 9 0 6 0;
+#X connect 10 0 19 0;
+#X connect 11 0 10 0;
+#X connect 12 0 13 0;
+#X connect 12 1 13 1;
+#X connect 13 0 1 0;
+#X connect 14 0 8 0;
+#X connect 15 0 9 0;
+#X connect 16 0 11 0;
+#X connect 17 0 16 0;
+#X connect 17 1 19 1;
+#X connect 20 0 5 0;
+#X connect 21 0 8 1;
+#X connect 22 0 14 0;
+#X connect 23 0 20 0;
+#X connect 23 0 15 0;
+#X connect 23 0 3 0;
+#X connect 23 0 22 0;
+#X connect 23 0 21 0;
+#X connect 23 0 29 0;
+#X connect 23 0 32 0;
+#X connect 24 0 25 0;
+#X connect 25 0 29 1;
+#X connect 26 0 9 1;
+#X connect 26 0 38 0;
+#X connect 27 0 26 0;
+#X connect 28 0 27 0;
+#X connect 29 0 6 0;
+#X connect 30 0 48 0;
+#X connect 31 0 33 0;
+#X connect 32 0 34 0;
+#X connect 32 1 31 0;
+#X connect 33 0 35 0;
+#X connect 34 0 35 0;
+#X connect 35 0 36 0;
+#X connect 35 0 37 0;
+#X connect 38 0 31 1;
+#X connect 41 0 24 0;
+#X connect 41 1 24 1;
+#X connect 43 0 12 0;
+#X connect 44 0 28 0;
+#X connect 45 0 41 0;
+#X connect 46 0 4 0;
+#X connect 48 0 23 0;
+#X connect 48 1 23 0;
+#X connect 48 2 45 0;
+#X connect 48 3 44 0;
+#X connect 48 4 43 0;
+#X connect 49 0 50 0;
+#X connect 49 0 51 0;
+#X connect 49 0 52 0;
+#X connect 50 0 45 0;
+#X connect 51 0 44 0;
+#X connect 52 0 43 0;
diff --git a/lightFreqToWave-help.pd b/lightFreqToWave-help.pd
new file mode 100644
index 0000000..ef3e3bf
--- /dev/null
+++ b/lightFreqToWave-help.pd
@@ -0,0 +1,8 @@
+#N canvas 0 0 353 189 10;
+#X floatatom 117 126 15 0 0 0 - - -;
+#X floatatom 117 77 15 0 0 0 - - -;
+#X obj 117 100 mtl/lightFreqToWave;
+#X text 29 10 Description: Frequency (Hz) to wave length (m);
+#X text 30 26 tags: conversion;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
diff --git a/lightFreqToWave.pd b/lightFreqToWave.pd
new file mode 100644
index 0000000..7253495
--- /dev/null
+++ b/lightFreqToWave.pd
@@ -0,0 +1,7 @@
+#N canvas 0 0 409 345 10;
+#X obj 88 81 inlet;
+#X obj 95 248 outlet;
+#X obj 94 187 / 3e+08;
+#X text 60 39 Light : Frequency (Hz) to wave length (m);
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
diff --git a/lightWaveToFreq-help.pd b/lightWaveToFreq-help.pd
new file mode 100644
index 0000000..bc98daa
--- /dev/null
+++ b/lightWaveToFreq-help.pd
@@ -0,0 +1,8 @@
+#N canvas 0 0 361 190 10;
+#X floatatom 104 84 5 0 0 0 - - -;
+#X floatatom 104 131 5 0 0 0 - - -;
+#X obj 104 106 mtl/lightWaveToFreq;
+#X text 27 14 Description: Wave length (m) to frequency (Hz);
+#X text 27 32 tags: conversion;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
diff --git a/lightWaveToFreq.pd b/lightWaveToFreq.pd
new file mode 100644
index 0000000..665ba03
--- /dev/null
+++ b/lightWaveToFreq.pd
@@ -0,0 +1,9 @@
+#N canvas 0 0 450 300 10;
+#X obj 125 70 inlet;
+#X obj 131 176 /;
+#X msg 132 127 3e+08 \$1;
+#X obj 132 237 outlet;
+#X text 82 26 Light : Wave length (m) to frequency (Hz);
+#X connect 0 0 2 0;
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;
diff --git a/lightning~-help.pd b/lightning~-help.pd
new file mode 100644
index 0000000..f5dd551
--- /dev/null
+++ b/lightning~-help.pd
@@ -0,0 +1,27 @@
+#N canvas 1 57 354 321 10;
+#X obj 22 77 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 103 143 *~ 0.5;
+#X obj 61 143 *~ 0.5;
+#X obj 250 169 *~ 0.5;
+#X obj 208 168 *~ 0.5;
+#X obj 168 124 delay 10;
+#X text 19 26 Comment: Taken from Andy Farnell's work.;
+#X text 20 8 Description: Generates some lightning.;
+#X obj 168 147 mtl/lightning~;
+#X obj 22 122 mtl/lightning~;
+#X obj 23 241 mtl/out~;
+#X text 22 45 tags: synthesize~;
+#X connect 0 0 5 0;
+#X connect 0 0 9 0;
+#X connect 1 0 10 0;
+#X connect 2 0 10 0;
+#X connect 3 0 10 1;
+#X connect 4 0 10 1;
+#X connect 5 0 8 0;
+#X connect 8 0 10 1;
+#X connect 8 1 4 0;
+#X connect 8 2 3 0;
+#X connect 9 0 10 0;
+#X connect 9 1 2 0;
+#X connect 9 2 1 0;
diff --git a/lightning~.pd b/lightning~.pd
new file mode 100644
index 0000000..e1130f6
--- /dev/null
+++ b/lightning~.pd
@@ -0,0 +1,155 @@
+#N canvas 582 98 549 496 10;
+#N canvas 439 84 987 658 lightning 1;
+#X obj 10 426 noise~;
+#X obj 96 478 noise~;
+#X obj 81 512 *~;
+#X obj 80 562 bp~ 333 4;
+#X obj 9 449 lop~ 3;
+#X obj 81 535 clip~ -1 1;
+#X obj 61 380 line;
+#X obj 61 426 + 3;
+#X obj 61 405 * 30;
+#X obj 10 473 *~ 80;
+#X obj 126 377 line;
+#X obj 79 586 *~;
+#X obj 399 334 noise~;
+#X obj 561 454 bp~ 40 3;
+#X obj 489 454 bp~ 360 5;
+#X obj 489 480 *~ 2.5;
+#X obj 302 483 *~ 2;
+#X obj 420 481 *~ 1.2;
+#X obj 419 454 bp~ 235 7;
+#X obj 562 478 *~ 10;
+#X obj 478 521 bp~ 2500 0.5;
+#X obj 451 360 *~ 10;
+#X obj 434 381 *~;
+#X obj 435 402 clip~ -0.3 0.3;
+#X obj 336 455 bp~ 3600 8;
+#X obj 252 453 bp~ 2300 7;
+#X obj 562 424 * 80;
+#X obj 480 427 * 720;
+#X obj 421 430 * 480;
+#X obj 284 429 * 4600;
+#X obj 198 426 * 3600;
+#X obj 367 431 * 7200;
+#X obj 531 289 /;
+#X msg 524 263 1;
+#X obj 530 239 t b f;
+#X msg 603 72 bang;
+#X obj 261 364 / 20;
+#X obj 477 574 *~ 0.1;
+#X msg 61 353 1 \, 0 600;
+#X msg 126 353 1 \, 0 6000;
+#X obj 261 386 + 0.01;
+#X obj 79 608 *~ 0.9;
+#X obj 162 454 bp~ 4700 7;
+#X obj 690 480 biquad~;
+#X msg 690 433 80 20;
+#X obj 692 528 lop~ 200;
+#X obj 691 504 hip~ 5;
+#X obj 639 453 noise~;
+#X obj 689 414 loadbang;
+#X obj 692 581 *~;
+#X obj 693 551 *~ 20;
+#X obj 758 469 *~;
+#X obj 758 498 clip~ 0 0.77;
+#X obj 758 441 ead~ 2000 20000;
+#X obj 108 321 del 200;
+#X obj 424 17 inlet;
+#X obj 478 701 outlet~;
+#X text 797 667 ajf2006;
+#X text 61 49 very very frightening ...;
+#X text 60 75 Galileo \, Figaro....;
+#X obj 75 634 outlet~;
+#X obj 693 672 outlet~;
+#X obj 758 413 del 100;
+#X obj 452 333 ead~ 0 5000;
+#X msg 530 180 2;
+#X obj 687 454 ggee/bandpass;
+#X connect 0 0 4 0;
+#X connect 1 0 2 1;
+#X connect 2 0 5 0;
+#X connect 3 0 11 0;
+#X connect 4 0 9 0;
+#X connect 5 0 3 0;
+#X connect 6 0 8 0;
+#X connect 7 0 4 1;
+#X connect 8 0 7 0;
+#X connect 9 0 2 0;
+#X connect 10 0 11 1;
+#X connect 11 0 41 0;
+#X connect 12 0 22 0;
+#X connect 13 0 19 0;
+#X connect 14 0 15 0;
+#X connect 15 0 20 0;
+#X connect 16 0 20 0;
+#X connect 17 0 20 0;
+#X connect 18 0 17 0;
+#X connect 19 0 20 0;
+#X connect 20 0 37 0;
+#X connect 21 0 22 1;
+#X connect 22 0 23 0;
+#X connect 23 0 13 0;
+#X connect 23 0 14 0;
+#X connect 23 0 18 0;
+#X connect 23 0 24 0;
+#X connect 23 0 25 0;
+#X connect 23 0 42 0;
+#X connect 24 0 16 0;
+#X connect 25 0 16 0;
+#X connect 26 0 13 1;
+#X connect 27 0 14 1;
+#X connect 28 0 18 1;
+#X connect 29 0 25 1;
+#X connect 30 0 42 1;
+#X connect 31 0 24 1;
+#X connect 33 0 32 0;
+#X connect 34 0 33 0;
+#X connect 34 0 63 0;
+#X connect 34 1 32 1;
+#X connect 35 0 64 0;
+#X connect 35 0 62 0;
+#X connect 36 0 40 0;
+#X connect 37 0 56 0;
+#X connect 38 0 6 0;
+#X connect 39 0 10 0;
+#X connect 40 0 26 0;
+#X connect 40 0 27 0;
+#X connect 40 0 28 0;
+#X connect 40 0 31 0;
+#X connect 40 0 29 0;
+#X connect 40 0 30 0;
+#X connect 41 0 60 0;
+#X connect 42 0 16 0;
+#X connect 43 0 46 0;
+#X connect 44 0 65 0;
+#X connect 45 0 50 0;
+#X connect 46 0 45 0;
+#X connect 47 0 43 0;
+#X connect 48 0 44 0;
+#X connect 49 0 61 0;
+#X connect 50 0 49 0;
+#X connect 51 0 52 0;
+#X connect 52 0 49 1;
+#X connect 53 0 51 0;
+#X connect 53 0 51 1;
+#X connect 54 0 38 0;
+#X connect 54 0 39 0;
+#X connect 55 0 35 0;
+#X connect 55 0 54 0;
+#X connect 62 0 53 0;
+#X connect 63 0 21 0;
+#X connect 64 0 34 0;
+#X connect 64 0 36 0;
+#X connect 65 0 43 0;
+#X restore 323 262 pd lightning;
+#X obj 418 359 outlet~;
+#X msg 315 228 40;
+#X obj 350 353 outlet~;
+#X obj 272 361 outlet~;
+#X obj 308 176 inlet;
+#X connect 0 0 4 0;
+#X connect 0 1 3 0;
+#X connect 0 2 1 0;
+#X connect 2 0 0 0;
+#X connect 5 0 2 0;
diff --git a/limit~-help.pd b/limit~-help.pd
new file mode 100644
index 0000000..28e9232
--- /dev/null
+++ b/limit~-help.pd
@@ -0,0 +1,94 @@
+#N canvas 526 281 454 286 10;
+#X floatatom 65 144 0 0 0 2 left - -;
+#X floatatom 151 144 0 0 0 2 right - -;
+#X floatatom 106 127 0 0 0 2 both - -;
+#N canvas 59 76 600 400 generator~ 0;
+#X obj 86 49 inlet;
+#X obj 252 54 inlet;
+#X obj 112 229 outlet~;
+#X obj 112 185 *~;
+#X obj 151 185 *~;
+#X obj 122 128 osc~ 440;
+#X obj 151 145 osc~ 689.062;
+#X obj 112 163 line~;
+#X obj 167 162 line~;
+#X msg 167 128 \$1 100;
+#X msg 112 111 \$1 100;
+#X obj 86 97 f;
+#X obj 252 98 f;
+#X obj 154 229 outlet~;
+#X obj 86 72 dbtorms;
+#X obj 252 78 dbtorms;
+#X connect 0 0 14 0;
+#X connect 1 0 15 0;
+#X connect 3 0 2 0;
+#X connect 4 0 13 0;
+#X connect 5 0 3 1;
+#X connect 6 0 4 0;
+#X connect 7 0 3 0;
+#X connect 8 0 4 1;
+#X connect 9 0 8 0;
+#X connect 10 0 7 0;
+#X connect 11 0 10 0;
+#X connect 12 0 9 0;
+#X connect 14 0 11 0;
+#X connect 15 0 12 0;
+#X restore 65 166 pd generator~;
+#X floatatom 240 141 0 0 0 2 left - -;
+#X floatatom 326 141 0 0 0 2 right - -;
+#X floatatom 282 124 0 0 0 2 both - -;
+#N canvas 59 76 600 400 generator~ 0;
+#X obj 86 49 inlet;
+#X obj 252 54 inlet;
+#X obj 112 229 outlet~;
+#X obj 112 185 *~;
+#X obj 151 185 *~;
+#X obj 122 128 osc~ 440;
+#X obj 151 145 osc~ 689.062;
+#X obj 112 163 line~;
+#X obj 167 162 line~;
+#X msg 167 128 \$1 100;
+#X msg 112 111 \$1 100;
+#X obj 86 97 f;
+#X obj 252 98 f;
+#X obj 154 229 outlet~;
+#X obj 86 72 dbtorms;
+#X obj 252 78 dbtorms;
+#X connect 0 0 14 0;
+#X connect 1 0 15 0;
+#X connect 3 0 2 0;
+#X connect 4 0 13 0;
+#X connect 5 0 3 1;
+#X connect 6 0 4 0;
+#X connect 7 0 3 0;
+#X connect 8 0 4 1;
+#X connect 9 0 8 0;
+#X connect 10 0 7 0;
+#X connect 11 0 10 0;
+#X connect 12 0 9 0;
+#X connect 14 0 11 0;
+#X connect 15 0 12 0;
+#X restore 240 163 pd generator~;
+#X obj 66 191 mtl/limit~;
+#X text 61 82 with a limiter~;
+#X text 235 83 without a limiter~;
+#X obj 14 7 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 20 9 description: a limiter (10ms buffer).;
+#X text 21 47 tags: mix~;
+#X obj 66 215 mtl/out~;
+#X obj 239 215 mtl/out~;
+#X connect 0 0 3 0;
+#X connect 1 0 3 1;
+#X connect 2 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 8 0;
+#X connect 3 1 8 1;
+#X connect 4 0 7 0;
+#X connect 5 0 7 1;
+#X connect 6 0 4 0;
+#X connect 6 0 5 0;
+#X connect 7 0 15 0;
+#X connect 7 1 15 1;
+#X connect 8 0 14 0;
+#X connect 8 1 14 1;
diff --git a/limit~.pd b/limit~.pd
new file mode 100644
index 0000000..a300f0e
--- /dev/null
+++ b/limit~.pd
@@ -0,0 +1,31 @@
+#N canvas 207 199 657 483 10;
+#X obj 78 59 inlet~ left;
+#X obj 179 63 inlet~ right;
+#X obj 79 122 outlet~ left;
+#X obj 182 122 outlet~ right;
+#X text 27 25 very nice limiter from zexy with 10 ms buffer;
+#N canvas 788 221 454 439 limiter~ 0;
+#X obj 78 168 *~;
+#X obj 109 168 *~;
+#X obj 79 63 inlet~ left;
+#X obj 179 63 inlet~ right;
+#X obj 77 195 outlet~ left;
+#X obj 180 195 outlet~ right;
+#X obj 95 118 zexy/limiter~ 10 1;
+#X obj 147 149 zexy/z~ 90;
+#X obj 78 148 zexy/z~ 90;
+#X connect 0 0 4 0;
+#X connect 1 0 5 0;
+#X connect 2 0 6 0;
+#X connect 2 0 8 0;
+#X connect 3 0 6 1;
+#X connect 3 0 7 0;
+#X connect 6 0 1 0;
+#X connect 6 0 0 1;
+#X connect 7 0 1 1;
+#X connect 8 0 0 0;
+#X restore 79 85 pd limiter~;
+#X connect 0 0 5 0;
+#X connect 1 0 5 1;
+#X connect 5 0 2 0;
+#X connect 5 1 3 0;
diff --git a/listBoolToPos-help.pd b/listBoolToPos-help.pd
new file mode 100644
index 0000000..75d7cb9
--- /dev/null
+++ b/listBoolToPos-help.pd
@@ -0,0 +1,16 @@
+#N canvas 402 297 520 293 10;
+#X msg 62 144 1 0 1 0 1 1 0 1 0 1 0 1;
+#X obj 61 118 loadbang;
+#X msg 62 223 1 3 5 6 8 10 12;
+#X text 39 26 Description: Converts a list of boolean values to a list
+containing the index of values that are TRUE (1) in the first list
+;
+#X msg 185 116 0 0 0 0 1 1 1 1;
+#X obj 62 173 listBoolToPos;
+#X obj 62 198 cyclone/prepend set;
+#X text 44 75 tags: lists;
+#X connect 0 0 5 0;
+#X connect 1 0 0 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 2 0;
diff --git a/listBoolToPos.pd b/listBoolToPos.pd
new file mode 100644
index 0000000..e115ffd
--- /dev/null
+++ b/listBoolToPos.pd
@@ -0,0 +1,20 @@
+#N canvas 0 0 462 441 10;
+#X obj 238 72 inlet;
+#X obj 243 205 == 1;
+#X obj 279 256 f;
+#X obj 238 114 t b l b;
+#X obj 209 327 outlet;
+#X obj 253 234 sel 1;
+#X obj 200 291 ./listBuild;
+#X obj 255 144 tof/listUnfold;
+#X obj 332 212 + 1;
+#X connect 0 0 3 0;
+#X connect 1 0 5 0;
+#X connect 2 0 6 1;
+#X connect 3 0 6 0;
+#X connect 3 1 7 0;
+#X connect 5 0 2 0;
+#X connect 6 0 4 0;
+#X connect 7 0 1 0;
+#X connect 7 1 8 0;
+#X connect 8 0 2 1;
diff --git a/listBuild-help.pd b/listBuild-help.pd
new file mode 100644
index 0000000..6cac545
--- /dev/null
+++ b/listBuild-help.pd
@@ -0,0 +1,52 @@
+#N canvas 1178 0 766 692 12;
+#X floatatom 345 114 5 0 0 0 - - -;
+#X obj 182 138 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 147 375 print result;
+#X text 395 115 Data;
+#X msg 343 169 symbol foo;
+#X msg 347 200 symbol glue;
+#X text 454 180 works with symbols too;
+#X obj 343 258 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 368 258 Bang to clear current list;
+#X text 35 112 Bang to output and clear;
+#X floatatom 333 374 5 0 0 0 - - -;
+#X text 390 374 current length of list being built;
+#X text 61 30 Description: Builds a list with the incomming data. New
+data is either append or prepended to the list being built.;
+#X text 326 291 Appends data by default.;
+#X floatatom 343 416 5 0 0 0 - - -;
+#X obj 180 440 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 145 677 print result;
+#X text 393 417 Data;
+#X text 486 475 works with symbols too;
+#X obj 410 562 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 437 559 Bang to clear current list;
+#X text 33 414 Bang to output and clear;
+#X floatatom 354 663 5 0 0 0 - - -;
+#X text 357 682 current length of list being built;
+#X text 389 591 Can also prepend.;
+#X msg 398 470 symbol a;
+#X msg 402 501 symbol b;
+#X msg 415 529 symbol c;
+#X obj 202 290 mtl/listBuild;
+#X text 70 69 tags: lists;
+#X obj 200 592 mtl/listBuild prepend;
+#X connect 0 0 28 1;
+#X connect 1 0 28 0;
+#X connect 4 0 28 1;
+#X connect 5 0 28 1;
+#X connect 7 0 28 1;
+#X connect 14 0 30 1;
+#X connect 15 0 30 0;
+#X connect 19 0 30 1;
+#X connect 25 0 30 1;
+#X connect 26 0 30 1;
+#X connect 27 0 30 1;
+#X connect 28 0 2 0;
+#X connect 28 1 10 0;
+#X connect 30 0 16 0;
+#X connect 30 1 22 0;
diff --git a/listBuild.pd b/listBuild.pd
new file mode 100644
index 0000000..253ac50
--- /dev/null
+++ b/listBuild.pd
@@ -0,0 +1,48 @@
+#N canvas 0 0 633 500 10;
+#X obj 174 313 t l l;
+#X obj 135 381 list;
+#X obj 148 445 outlet;
+#X obj 75 87 inlet;
+#X obj 347 254 f;
+#X obj 337 313 t f f;
+#X obj 337 283 + 1;
+#X msg 395 215 0;
+#X obj 351 455 outlet;
+#X obj 334 31 inlet clear;
+#X obj 307 77 route bang;
+#X obj 358 107 t b b b;
+#X obj 174 277 list \$1;
+#X obj 174 248 list;
+#X obj 109 202 t b b b b b;
+#X obj 225 177 t b b a;
+#X obj 87 125 route bang clear;
+#X obj 134 151 t b b b;
+#X connect 0 0 1 1;
+#X connect 0 1 13 1;
+#X connect 1 0 2 0;
+#X connect 3 0 16 0;
+#X connect 4 0 6 0;
+#X connect 5 0 8 0;
+#X connect 5 1 4 1;
+#X connect 6 0 5 0;
+#X connect 7 0 4 1;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 10 1 15 0;
+#X connect 11 0 13 1;
+#X connect 11 1 1 1;
+#X connect 11 2 7 0;
+#X connect 12 0 0 0;
+#X connect 13 0 12 0;
+#X connect 14 0 1 1;
+#X connect 14 1 1 0;
+#X connect 14 2 13 1;
+#X connect 14 3 7 0;
+#X connect 15 0 4 0;
+#X connect 15 1 13 0;
+#X connect 15 2 12 1;
+#X connect 16 0 14 0;
+#X connect 16 1 17 0;
+#X connect 17 0 1 1;
+#X connect 17 1 13 1;
+#X connect 17 2 7 0;
diff --git a/listCutUp-help.pd b/listCutUp-help.pd
new file mode 100644
index 0000000..a775c64
--- /dev/null
+++ b/listCutUp-help.pd
@@ -0,0 +1,15 @@
+#N canvas 0 0 648 276 10;
+#X msg 48 125 1 2 3 4 5 6;
+#X obj 113 239 print;
+#X msg 191 130 list a b c d e f g;
+#X text 37 11 Description: Cuts up a list into sublists. Leftovers
+are also output.;
+#X text 188 95 Note that with this second list \, the leftover 'g'
+is output by itself.;
+#X text 294 184 Argument_1: Size of cuts.;
+#X text 292 168 Inlet_1: Size if cuts.;
+#X obj 112 185 listCutUp 3;
+#X text 44 49 tags: lists;
+#X connect 0 0 7 0;
+#X connect 2 0 7 0;
+#X connect 7 0 1 0;
diff --git a/listCutUp.pd b/listCutUp.pd
new file mode 100644
index 0000000..0b561a1
--- /dev/null
+++ b/listCutUp.pd
@@ -0,0 +1,13 @@
+#N canvas 0 0 450 300 10;
+#X obj 67 71 inlet;
+#X obj 99 260 outlet;
+#X obj 207 74 inlet;
+#X obj 73 169 zexy/repack \$1;
+#X obj 90 114 t b a;
+#X obj 79 208 route bang;
+#X connect 0 0 4 0;
+#X connect 2 0 3 1;
+#X connect 3 0 5 0;
+#X connect 4 0 3 0;
+#X connect 4 1 3 0;
+#X connect 5 1 1 0;
diff --git a/listDelay-help.pd b/listDelay-help.pd
new file mode 100644
index 0000000..e7ec639
--- /dev/null
+++ b/listDelay-help.pd
@@ -0,0 +1,19 @@
+#N canvas 358 242 458 308 10;
+#X obj 127 210 print;
+#X msg 70 81 4 5 6;
+#X obj 235 76 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 256 75 stop;
+#X floatatom 254 112 5 0 0 0 - - -;
+#X text 291 113 delay;
+#X msg 115 82 list a b c;
+#X text 72 11 Description: Delays an incomming list.;
+#X obj 127 157 ./listDelay 1000;
+#X msg 131 117 stop;
+#X text 76 32 tags: lists timing;
+#X connect 1 0 8 0;
+#X connect 2 0 8 1;
+#X connect 4 0 8 1;
+#X connect 6 0 8 0;
+#X connect 8 0 0 0;
+#X connect 9 0 8 0;
diff --git a/listDelay.pd b/listDelay.pd
new file mode 100644
index 0000000..00d5ec9
--- /dev/null
+++ b/listDelay.pd
@@ -0,0 +1,18 @@
+#N canvas 0 0 458 308 10;
+#X obj 51 15 inlet;
+#X obj 96 196 list;
+#X obj 97 113 t b a;
+#X obj 238 32 inlet;
+#X obj 200 104 delay \$1;
+#X obj 100 241 outlet;
+#X obj 246 65 route bang;
+#X msg 188 69 stop;
+#X connect 0 0 2 0;
+#X connect 1 0 5 0;
+#X connect 2 0 4 0;
+#X connect 2 1 1 1;
+#X connect 3 0 6 0;
+#X connect 4 0 1 0;
+#X connect 6 0 7 0;
+#X connect 6 1 4 1;
+#X connect 7 0 4 0;
diff --git a/listJump-help.pd b/listJump-help.pd
new file mode 100644
index 0000000..1a9e35e
--- /dev/null
+++ b/listJump-help.pd
@@ -0,0 +1,34 @@
+#N canvas 756 363 681 405 10;
+#X msg 33 221 0 4 8 0 4 8 0 4 8 0 4 8 0 4 8;
+#X floatatom 126 134 5 0 0 0 - - -;
+#X floatatom 79 124 5 0 0 0 - - -;
+#X text 293 125 It is used for building chords out of a scale.;
+#X msg 304 196 0 2 4 5 7 9 11;
+#X msg 304 319 0 0 0 0;
+#X floatatom 405 226 5 0 0 0 - - -;
+#X msg 33 101 0 1 2 3 4 5 6 7 8 9 10 11;
+#X obj 304 170 t b f;
+#X floatatom 302 148 5 0 0 0 - - -;
+#X text 414 195 Major scale;
+#X text 448 228 Number of notes in each chord;
+#X text 378 152 Interval between each note;
+#X text 22 7 Description: Jumps through the elements of a list \, giving
+every n element (jumping over some \, if necessary) and a total of
+up to m elements;
+#X obj 33 196 cyclone/prepend set;
+#X obj 302 282 cyclone/prepend set;
+#X obj 33 154 mtl/listJump 2 4;
+#X text 31 66 tags: lists musical;
+#X obj 303 253 mtl/listJump 2 4;
+#X connect 1 0 16 2;
+#X connect 2 0 16 1;
+#X connect 4 0 18 0;
+#X connect 6 0 18 2;
+#X connect 7 0 16 0;
+#X connect 8 0 4 0;
+#X connect 8 1 18 1;
+#X connect 9 0 8 0;
+#X connect 14 0 0 0;
+#X connect 15 0 5 0;
+#X connect 16 0 14 0;
+#X connect 18 0 15 0;
diff --git a/listJump.pd b/listJump.pd
new file mode 100644
index 0000000..37afacf
--- /dev/null
+++ b/listJump.pd
@@ -0,0 +1,56 @@
+#N canvas 37 86 642 617 10;
+#X obj 139 32 inlet;
+#X obj 105 554 outlet;
+#X obj 293 128 list append;
+#X obj 505 70 inlet;
+#X obj 178 264 list split 1;
+#X text 552 71 number of elements to keep;
+#X obj 395 354 + 1;
+#X obj 275 297 t a b;
+#X obj 108 85 t b a b;
+#X obj 155 370 spigot;
+#X obj 220 455 t f f;
+#X obj 204 25 inlet;
+#X text 144 11 list;
+#X text 299 61 output every n items;
+#X text 518 167 for m items;
+#X text 228 185 formerly [list-rot];
+#X msg 393 310 0;
+#X obj 357 353 f 0;
+#X obj 360 389 <;
+#X text 392 390 from 0 to n-1;
+#X obj 235 99 expr 0-$f1;
+#X text 277 82 Needs to be negative \, it seems;
+#X obj 291 38 tof/argument 1 2;
+#X obj 516 214 tof/argument 2 1;
+#X obj 196 215 cyclone/zl rot;
+#X obj 103 527 ./listBuild;
+#X obj 468 14 loadbang;
+#X obj 472 40 t b b;
+#X connect 0 0 8 0;
+#X connect 2 0 24 0;
+#X connect 3 0 18 1;
+#X connect 4 0 9 0;
+#X connect 4 1 7 0;
+#X connect 6 0 17 1;
+#X connect 7 0 2 1;
+#X connect 7 1 17 0;
+#X connect 8 0 25 0;
+#X connect 8 1 4 0;
+#X connect 8 2 16 0;
+#X connect 9 0 10 0;
+#X connect 10 0 2 0;
+#X connect 10 1 25 1;
+#X connect 11 0 20 0;
+#X connect 16 0 17 1;
+#X connect 17 0 6 0;
+#X connect 17 0 18 0;
+#X connect 18 0 9 1;
+#X connect 20 0 24 1;
+#X connect 22 0 20 0;
+#X connect 23 0 18 1;
+#X connect 24 0 4 0;
+#X connect 25 0 1 0;
+#X connect 26 0 27 0;
+#X connect 27 0 22 0;
+#X connect 27 1 23 0;
diff --git a/listOp-help.pd b/listOp-help.pd
new file mode 100644
index 0000000..dd17ad1
--- /dev/null
+++ b/listOp-help.pd
@@ -0,0 +1,25 @@
+#N canvas 364 465 756 308 10;
+#X msg 59 96 2 6 3;
+#X obj 134 157 * 2;
+#X obj 59 229 print RESULT;
+#X msg 206 93 list foo bar;
+#X obj 204 210 print SYMBOLS;
+#X msg 436 98 1 2 3;
+#X obj 434 215 print no_op;
+#X text 60 20 Description: Executes an operation on every element of
+a list.;
+#X text 69 61 tags: lists math;
+#X obj 434 158 mtl/listOp;
+#X obj 59 155 mtl/listOp;
+#X obj 203 153 mtl/listOp;
+#X obj 279 155 zexy/makesymbol tube_%s;
+#X connect 0 0 10 0;
+#X connect 1 0 10 1;
+#X connect 3 0 11 0;
+#X connect 5 0 9 0;
+#X connect 9 0 6 0;
+#X connect 10 0 2 0;
+#X connect 10 1 1 0;
+#X connect 11 0 4 0;
+#X connect 11 1 12 0;
+#X connect 12 0 11 1;
diff --git a/listOp.pd b/listOp.pd
new file mode 100644
index 0000000..2237547
--- /dev/null
+++ b/listOp.pd
@@ -0,0 +1,32 @@
+#N canvas 187 254 739 514 10;
+#X msg 303 287 list;
+#X obj 110 42 inlet;
+#X obj 468 457 outlet;
+#X obj 492 80 inlet;
+#X obj 122 457 outlet;
+#X obj 208 317 list prepend;
+#X msg 177 250 1;
+#X msg 117 278 0;
+#X obj 122 431 list;
+#X obj 110 399 route bang;
+#X obj 90 123 t b b a b b a;
+#X obj 110 375 zexy/demultiplex 0 1;
+#X obj 475 219 zexy/drip;
+#X connect 0 0 5 1;
+#X connect 1 0 10 0;
+#X connect 3 0 5 0;
+#X connect 5 0 11 0;
+#X connect 6 0 11 1;
+#X connect 7 0 11 1;
+#X connect 8 0 4 0;
+#X connect 9 0 8 0;
+#X connect 9 1 4 0;
+#X connect 10 0 5 0;
+#X connect 10 1 7 0;
+#X connect 10 2 12 0;
+#X connect 10 3 0 0;
+#X connect 10 4 6 0;
+#X connect 10 5 8 1;
+#X connect 11 0 9 0;
+#X connect 11 1 5 1;
+#X connect 12 0 2 0;
diff --git a/love.txt b/love.txt
new file mode 100644
index 0000000..532f5ed
--- /dev/null
+++ b/love.txt
@@ -0,0 +1,148 @@
+abs~ control~
+boids/boids2d behavior
+boids/boids3d behavior
+choice behavior
+creb/dist~ fx~
+creb/ead~ control~
+creb/ear~ control~
+creb/fdn~ fx~
+cyclone/active patch
+cyclone/Append lists symbols routing
+cyclone/Borax midi
+cyclone/Bucket lists routing
+cyclone/capture info data
+cyclone/Clip lists
+cyclone/coll data file
+cyclone/curve~ control~
+cyclone/cycle routing
+cyclone/decide random
+cyclone/delay~ fx~
+cyclone/drunk random
+cyclone/funnel routing
+cyclone/Histo data
+cyclone/match lists
+cyclone/midiformat midi
+cyclone/midiparse midi
+cyclone/mousefilter ui
+cyclone/MouseState ui
+cyclone/onebang initialization routing
+cyclone/overdrive~ fx~
+cyclone/prepend lists symbols routing
+cyclone/prob behavior
+cyclone/record~ file~ record~
+cyclone/Scope~ info~
+cyclone/seq midi
+cyclone/sprintf symbols
+cyclone/substitute symbols
+cyclone/sustain midi
+cyclone/thresh lists
+cyclone/TogEdge routing
+cyclone/tosymbol symbols conversion
+cyclone/urn random
+cyclone/zl lists
+ekext/cup counter
+ekext/cupd counter
+flashserver/flashserver network
+flatspace/arraysize tables
+flatspace/entry ui symbols
+ggee/image ui
+ggee/moog~ fx~
+hcs/canvas_name tools
+hcs/colorpanel ui
+hcs/file_type file
+hcs/folder_list file
+hcs/ISOdate timing
+hcs/ISOtime timing
+hcs/noquit patch
+hcs/screensize tools
+hcs/split_path file
+hcs/sys_gui tools
+hcs/version tools
+hcs/window_name tools
+iemguts/canvasargs tools
+iemguts/canvasindex tools
+iemguts/canvasobjectposition tools
+iemguts/canvasposition tools
+iemguts/propertybang patch
+iemlib/dollarg initialization patch
+iemlib/fade~ control~
+iemlib/iem_anything data
+iemlib/iem_receive routing
+iemlib/iem_send routing
+iemlib/init initialization
+iemlib/modulo_counter counter
+iemlib/mp3play~ play~
+iemlib/soundfile_info file~ info~
+iemlib/unsig~ info~ conversion
+line~ control~
+list-abs/list-abs lists
+list-abs/list-accum lists
+list-abs/list-centroid lists
+list-abs/list-compare lists
+list-abs/list-delete lists
+list-abs/list-fifo lists
+list-abs/list-mean lists
+list-abs/list-rev lists
+list lists
+mapping/breakpoint math
+mapping/exponential_curve math
+mapping/smooth math
+mapping/timeroll info
+markex/counter counter
+maxlib/arbran random
+maxlib/arraycopy tables
+maxlib/average math
+maxlib/delta math
+maxlib/mlife behavior
+maxlib/nchange routing
+maxlib/nroute routing
+maxlib/remote routing
+maxlib/scale math
+maxlib/speedlim timing
+maxlib/split routing
+maxlib/sync lists
+maxlib/temperature info
+maxlib/timebang timing
+maxlib/wrap math
+mjlib/morse conversion
+mjlib/n2m midi
+moocow/any2string conversion
+moocow/string2any conversion
+moonlib/tabreadl tables
+motex/pansig~ mix~
+mrpeach/midifile midi file
+mrpeach/pipelist lists timing
+netreceive network
+netsend network
+pdogg/oggread~ file~ play~
+pdogg/oggwrite~ file~ record~
+pdvjtools/colorgrid ui
+receive routing
+send routing
+sigpack/vowel~ fx~
+smlib/threshold routing
+tof/argument initialization patch
+tof/crossfade~ mix~
+tof/folderpanel file
+tof/getdollarzero patch
+tof/increment counter
+tof/iterate routing
+tof/listUnfold lists
+tof/path patch file
+unauthorized/grid ui
+unauthorized/wahwah~ fx~
+writesf~ file~ record~
+zexy/list2symbol conversion symbols lists
+zexy/makesymbol symbols
+zexy/minmax lists
+zexy/msgfile file data
+zexy/packel lists
+zexy/prime math
+zexy/relay routing
+zexy/repeat routing
+zexy/sort lists
+zexy/sum lists
+zexy/symbol2list conversion symbols lists
+zexy/tabdump tables
+zexy/tabset tables
+zexy/uniqsym symbols
diff --git a/mToHarm-help.pd b/mToHarm-help.pd
new file mode 100644
index 0000000..67750dc
--- /dev/null
+++ b/mToHarm-help.pd
@@ -0,0 +1,14 @@
+#N canvas 449 54 537 211 10;
+#X floatatom 34 78 5 0 0 0 - - -;
+#X floatatom 115 79 5 0 0 0 - - -;
+#X text 158 78 You can change the number of harmonics displayed;
+#X obj 34 131 cyclone/prepend set;
+#X obj 34 105 mtl/mToHarm 12;
+#X msg 34 155;
+#X text 28 17 Description: Gets the MIDI notes of the harmonic serie
+of a MIDI note.;
+#X text 29 47 tags:;
+#X connect 0 0 4 0;
+#X connect 1 0 4 1;
+#X connect 3 0 5 0;
+#X connect 4 0 3 0;
diff --git a/mToHarm.pd b/mToHarm.pd
new file mode 100644
index 0000000..3d0fd61
--- /dev/null
+++ b/mToHarm.pd
@@ -0,0 +1,40 @@
+#N canvas 505 158 659 622 10;
+#X obj 16 7 inlet;
+#X obj 298 68 loadbang;
+#X obj 83 320 *;
+#X obj 177 231 until;
+#X obj 202 263 f 1;
+#X obj 235 267 + 1;
+#X obj 178 211 f;
+#X msg 221 242 1;
+#X obj 409 93 inlet;
+#X obj 173 34 t b b f b b;
+#X obj 60 347 ftom;
+#X obj 63 204 mtof;
+#X obj 200 415 list prepend;
+#X obj 162 452 list append;
+#X obj 126 492 list append;
+#X obj 136 542 outlet;
+#X obj 298 95 tof/argument 1 8;
+#X connect 0 0 9 0;
+#X connect 1 0 16 0;
+#X connect 2 0 10 0;
+#X connect 3 0 4 0;
+#X connect 4 0 5 0;
+#X connect 4 0 2 0;
+#X connect 5 0 4 1;
+#X connect 6 0 3 0;
+#X connect 7 0 4 1;
+#X connect 8 0 6 1;
+#X connect 9 0 14 0;
+#X connect 9 1 6 0;
+#X connect 9 2 11 0;
+#X connect 9 3 7 0;
+#X connect 9 4 12 1;
+#X connect 10 0 12 0;
+#X connect 11 0 2 1;
+#X connect 12 0 13 0;
+#X connect 13 0 12 1;
+#X connect 13 0 14 1;
+#X connect 14 0 15 0;
+#X connect 16 0 6 1;
diff --git a/mToSpeed-help.pd b/mToSpeed-help.pd
new file mode 100644
index 0000000..16f6975
--- /dev/null
+++ b/mToSpeed-help.pd
@@ -0,0 +1,19 @@
+#N canvas 375 105 450 296 10;
+#X msg 176 149 60;
+#X floatatom 71 149 5 0 0 0 - - -;
+#X msg 208 149 72;
+#X text 67 127 Current note;
+#X floatatom 71 223 5 0 0 0 - - -;
+#X text 105 223 Play speed ratio (on 1);
+#X text 173 126 MIDI base note;
+#X text 80 195 Argument : the MIDI base note of the original sound.
+;
+#X text 14 13 Description: Converts a MIDI note to the speed you must
+play the sample.;
+#X text 13 46 Comments: The default MIDI base note is 60;
+#X text 15 66 tags: conversion;
+#X obj 71 176 mtl/mToSpeed 72;
+#X connect 0 0 11 1;
+#X connect 1 0 11 0;
+#X connect 2 0 11 1;
+#X connect 11 0 4 0;
diff --git a/mToSpeed.pd b/mToSpeed.pd
new file mode 100644
index 0000000..2a5d573
--- /dev/null
+++ b/mToSpeed.pd
@@ -0,0 +1,17 @@
+#N canvas 35 267 418 364 10;
+#X obj 86 44 inlet;
+#X obj 229 73 inlet;
+#X obj 116 181 mtof;
+#X obj 195 183 mtof;
+#X obj 158 236 /;
+#X obj 168 290 outlet;
+#X obj 105 90 t f b;
+#X obj 220 141 f 60;
+#X connect 0 0 6 0;
+#X connect 1 0 7 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 1;
+#X connect 4 0 5 0;
+#X connect 6 0 2 0;
+#X connect 6 1 7 0;
+#X connect 7 0 3 0;
diff --git a/main~-help.pd b/main~-help.pd
new file mode 100644
index 0000000..4be2dfa
--- /dev/null
+++ b/main~-help.pd
@@ -0,0 +1,6 @@
+#N canvas 195 112 482 257 10;
+#X text 65 60 tags: mix~;
+#X obj 157 142 mtl/main~;
+#X text 67 26 Description: Receives the main stereo signal routed by
+mtl/channel~;
+#X coords 0 0 1 1 133 33 0;
diff --git a/main~.pd b/main~.pd
new file mode 100644
index 0000000..e702e50
--- /dev/null
+++ b/main~.pd
@@ -0,0 +1,8 @@
+#N canvas 27 128 814 528 10;
+#X obj 147 267 outlet~;
+#X obj 373 268 outlet~;
+#X obj 209 152 tof/common~ MTLMAINL;
+#X obj 382 165 tof/common~ MTLMAINR;
+#X connect 2 0 0 0;
+#X connect 3 0 1 0;
+#X coords 0 0 1 1 133 33 0;
diff --git a/makeLabel-help.pd b/makeLabel-help.pd
new file mode 100644
index 0000000..82635b2
--- /dev/null
+++ b/makeLabel-help.pd
@@ -0,0 +1,19 @@
+#N canvas 332 188 556 399 10;
+#X obj 54 213 hsl 128 15 0 127 0 0 \$0s \$0r low:0dB -2 -8 0 10 -262144
+-1 -1 0 1;
+#X obj 5 97 cnv 1 430 1 empty empty empty 0 -10 0 16 -66577 -66577
+0;
+#X obj 5 -12 cnv 15 430 20 empty empty empty 20 12 0 14 -216438 -66577
+0;
+#X obj 5 9 cnv 1 430 1 empty empty empty 4 -10 2 12 -66577 -1 0;
+#X obj 5 -12 cnv 1 430 1 empty empty empty 0 -10 0 16 -66577 -66577
+0;
+#X text 18 49 Contact: patrick ( at ) 11h11.com;
+#X text 18 33 Author: patrick s coulombe;
+#X text 19 15 Description: write gui value to label;
+#X text 23 120 Arguments: gui's send \, gui's receive \, loadbangvalue
+\, label \, typeofvalue;
+#X text 295 -8 Version: 2009;
+#X text 6 -9 :: makeLabel ::;
+#X obj 251 211 mtl/makeLabel \$0s \$0r 0 low dB;
+#X text 18 64 tags: ui;
diff --git a/makeLabel.pd b/makeLabel.pd
new file mode 100644
index 0000000..c13c476
--- /dev/null
+++ b/makeLabel.pd
@@ -0,0 +1,46 @@
+#N canvas 1095 197 736 442 10;
+#X msg 247 390 label \$1;
+#X obj 250 315 pack s s;
+#X obj 269 179 int;
+#X obj 306 98 del 5;
+#X obj 306 77 t b;
+#X obj 269 139 spigot;
+#X msg 306 118 1;
+#X obj 185 38 inlet;
+#X obj 69 70 r \$1;
+#X obj 116 419 s \$2;
+#X obj 282 11 loadbang;
+#X obj 283 47 t b b;
+#X obj 151 180 f \$3;
+#X msg 112 383 set \$1;
+#X obj 268 246 symbol \$4;
+#X obj 247 366 zexy/list2symbol :;
+#X obj 173 66 s \$2;
+#X obj 73 98 t a a;
+#X obj 35 389 outlet;
+#X obj 158 205 t f f;
+#X obj 296 279 zexy/makesymbol %s\$5;
+#X obj 269 222 t b f;
+#X connect 0 0 9 0;
+#X connect 1 0 15 0;
+#X connect 2 0 21 0;
+#X connect 3 0 6 0;
+#X connect 4 0 3 0;
+#X connect 5 0 2 0;
+#X connect 6 0 5 1;
+#X connect 7 0 16 0;
+#X connect 8 0 17 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 11 1 4 0;
+#X connect 12 0 19 0;
+#X connect 13 0 9 0;
+#X connect 14 0 1 0;
+#X connect 15 0 0 0;
+#X connect 17 0 18 0;
+#X connect 17 1 5 0;
+#X connect 19 0 13 0;
+#X connect 19 1 2 0;
+#X connect 20 0 1 1;
+#X connect 21 0 14 0;
+#X connect 21 1 20 0;
diff --git a/makecore.sh b/makecore.sh
new file mode 100755
index 0000000..6ee5958
--- /dev/null
+++ b/makecore.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+echo "Creating core tags"
+rm core.txt
+grep "tags:" *-help.pd | sed 's/-help.*tags://' | sed 's/^/mtl\//'| sed 's/;//' > core.txt
+
+echo "Sorting love"
+sort -o amourette.txt love.txt
+rm love.txt
+mv amourette.txt love.txt
+
+echo "Making copy of browser.pd"
+cp browser.pd 1-13LP.pd
diff --git a/material~-help.pd b/material~-help.pd
new file mode 100644
index 0000000..5dbff02
--- /dev/null
+++ b/material~-help.pd
@@ -0,0 +1,55 @@
+#N canvas 682 523 310 305 10;
+#X text 139 169 metal;
+#X text 139 153 glass 2;
+#X text 139 90 wood;
+#X text 139 106 plastic;
+#X text 139 122 china;
+#X text 139 138 glass 1;
+#X text 139 74 cardboard;
+#X obj 118 80 vradio 15 1 0 7 empty empty empty 0 -6 0 8 -262144 -1
+-1 1;
+#X text 11 25 Comment: Taken from Andy Farnell's work.;
+#X text 11 3 Description: Filtering by material type.;
+#X obj 17 132 mtl/material~;
+#X obj 18 228 mtl/out~;
+#X text 12 45 tags: fx~;
+#X obj 17 81 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#N canvas 5 185 450 300 generate~ 0;
+#X obj 32 213 osc~ 200;
+#X obj 32 89 metro 400;
+#X obj 32 175 mtof;
+#X obj 104 195 mtof;
+#X obj 32 132 + 20;
+#X obj 32 111 random 70;
+#X floatatom 83 69 5 0 0 0 - - -;
+#X obj 32 261 outlet~;
+#X obj 103 261 outlet~;
+#X obj 30 14 inlet;
+#X obj 104 175 mtl/closestNote 0 2 4 7 9;
+#X obj 104 234 *~;
+#X obj 31 234 *~;
+#X obj 104 214 osc~ 100;
+#X obj 32 155 mtl/closestNote 0 2 4 7 9;
+#X connect 0 0 12 0;
+#X connect 1 0 5 0;
+#X connect 2 0 0 0;
+#X connect 3 0 13 0;
+#X connect 4 0 10 0;
+#X connect 4 0 14 0;
+#X connect 5 0 4 0;
+#X connect 6 0 1 1;
+#X connect 9 0 1 0;
+#X connect 9 0 11 1;
+#X connect 9 0 12 1;
+#X connect 10 0 3 0;
+#X connect 11 0 8 0;
+#X connect 12 0 7 0;
+#X connect 13 0 11 0;
+#X connect 14 0 2 0;
+#X restore 17 106 pd generate~;
+#X connect 7 0 10 1;
+#X connect 10 0 11 0;
+#X connect 10 0 11 1;
+#X connect 13 0 14 0;
+#X connect 14 0 10 0;
diff --git a/material~.pd b/material~.pd
new file mode 100644
index 0000000..dcbcb59
--- /dev/null
+++ b/material~.pd
@@ -0,0 +1,72 @@
+#N canvas 333 321 643 501 10;
+#X obj 11 401 bp~ 440 80;
+#X obj 89 401 bp~ 440 80;
+#X obj 166 401 bp~ 440 80;
+#X obj 244 401 bp~ 440 80;
+#X obj 83 236 unpack 1 2 3 4 5;
+#X msg 83 46 3454 5645 6433 6999 600;
+#X text 11 46 metal;
+#X text 9 73 glass 2;
+#X text 11 179 wood;
+#X msg 83 208 109 230 352 413 10;
+#X msg 83 127 1245 1503 2131 2575 100;
+#X text 11 151 plastic;
+#X text 10 125 china;
+#X text 10 99 glass 1;
+#X text 7 207 cardboard;
+#X msg 83 154 627 781 972 1184 70;
+#X text 65 12 Simple material formants;
+#X msg 83 71 2312 2466 3200 5314 380;
+#X msg 82 98 1679 1233 4251 4640 340;
+#X msg 83 181 221 333 426 527 40;
+#X obj 122 497 clip~ -1 1;
+#X obj 9 266 inlet~;
+#X obj 117 558 outlet~;
+#X floatatom 195 463 5 0 0 0 - - -;
+#X obj 123 454 *~ 1;
+#X obj 398 334 / 10;
+#X obj 356 102 inlet;
+#X obj 357 169 route 0 1 2 3 4 5 6;
+#X obj 432 115 loadbang;
+#X obj 358 139 f 0;
+#X obj 242 246 t f f;
+#X connect 0 0 24 0;
+#X connect 1 0 24 0;
+#X connect 2 0 24 0;
+#X connect 3 0 24 0;
+#X connect 4 0 0 1;
+#X connect 4 1 1 1;
+#X connect 4 2 2 1;
+#X connect 4 3 3 1;
+#X connect 4 4 25 0;
+#X connect 4 4 30 0;
+#X connect 5 0 4 0;
+#X connect 9 0 4 0;
+#X connect 10 0 4 0;
+#X connect 15 0 4 0;
+#X connect 17 0 4 0;
+#X connect 18 0 4 0;
+#X connect 19 0 4 0;
+#X connect 20 0 22 0;
+#X connect 21 0 0 0;
+#X connect 21 0 1 0;
+#X connect 21 0 2 0;
+#X connect 21 0 3 0;
+#X connect 23 0 24 1;
+#X connect 24 0 20 0;
+#X connect 25 0 24 1;
+#X connect 26 0 29 0;
+#X connect 27 0 9 0;
+#X connect 27 1 19 0;
+#X connect 27 2 15 0;
+#X connect 27 3 10 0;
+#X connect 27 4 18 0;
+#X connect 27 5 17 0;
+#X connect 27 6 5 0;
+#X connect 28 0 29 0;
+#X connect 29 0 27 0;
+#X connect 30 0 3 2;
+#X connect 30 0 2 2;
+#X connect 30 0 1 2;
+#X connect 30 0 0 2;
+#X connect 30 1 25 0;
diff --git a/modf-help.pd b/modf-help.pd
new file mode 100644
index 0000000..38d492d
--- /dev/null
+++ b/modf-help.pd
@@ -0,0 +1,17 @@
+#N canvas 1128 0 778 541 10;
+#X text 63 37 tags: math;
+#X text 66 20 description: modulo for floats;
+#X floatatom 89 93 5 0 0 0 - - -;
+#X floatatom 89 201 5 0 0 0 - - -;
+#X floatatom 189 105 5 0 0 0 - - -;
+#X text 167 152 Argument and inlet 2: modulo;
+#X floatatom 91 316 5 0 0 0 - - -;
+#X obj 92 288 maxlib/wrap 5;
+#X obj 89 154 mtl/modf 5;
+#X floatatom 92 261 5 0 0 0 - - -;
+#X text 156 255 You can also just use maxlib/wrap or fmod;
+#X connect 2 0 8 0;
+#X connect 4 0 8 1;
+#X connect 7 0 6 0;
+#X connect 8 0 3 0;
+#X connect 9 0 7 0;
diff --git a/modf.pd b/modf.pd
new file mode 100644
index 0000000..4340f95
--- /dev/null
+++ b/modf.pd
@@ -0,0 +1,12 @@
+#N canvas 1354 223 450 300 10;
+#X obj 121 81 inlet;
+#X obj 115 249 outlet;
+#X obj 259 76 inlet;
+#X obj 305 125 tof/argument 1 1;
+#X obj 313 79 loadbang;
+#X obj 117 191 maxlib/wrap 1;
+#X connect 0 0 5 0;
+#X connect 2 0 5 2;
+#X connect 3 0 5 2;
+#X connect 4 0 3 0;
+#X connect 5 0 1 0;
diff --git a/msToBpm-help.pd b/msToBpm-help.pd
new file mode 100644
index 0000000..c268b94
--- /dev/null
+++ b/msToBpm-help.pd
@@ -0,0 +1,18 @@
+#N canvas 232 249 409 284 10;
+#X obj 159 99 loadbang;
+#X obj 159 122 metro 500;
+#X floatatom 159 235 5 0 0 0 - - -;
+#X obj 159 166 timer;
+#X obj 159 144 t b b;
+#X text 31 14 Description: Converts a millisecond interval to beats
+per minute.;
+#X floatatom 159 187 5 0 0 0 - - -;
+#X obj 159 209 mtl/msToBpm;
+#X text 32 47 tags: conversion;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 3 0 6 0;
+#X connect 4 0 3 0;
+#X connect 4 1 3 1;
+#X connect 6 0 7 0;
+#X connect 7 0 2 0;
diff --git a/msToBpm.pd b/msToBpm.pd
new file mode 100644
index 0000000..8fbfc00
--- /dev/null
+++ b/msToBpm.pd
@@ -0,0 +1,11 @@
+#N canvas 134 284 456 306 10;
+#X obj 106 76 inlet;
+#X obj 106 125 /;
+#X obj 106 151 * 60;
+#X msg 106 102 1000 \$1;
+#X obj 106 185 outlet;
+#X text 59 47 Milliseconds between 2 beats to bpm conversion;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 0;
diff --git a/msToFps-help.pd b/msToFps-help.pd
new file mode 100644
index 0000000..2dee5cc
--- /dev/null
+++ b/msToFps-help.pd
@@ -0,0 +1,15 @@
+#N canvas 467 346 472 245 10;
+#X floatatom 45 133 5 0 0 0 - - -;
+#X floatatom 45 179 5 0 0 0 - - -;
+#X text 33 20 Description: Converts the amount of miliseconds between
+two frames into the numbers of frames per seconds.;
+#X text 94 133 ms;
+#X text 88 180 fps;
+#X msg 45 105 50;
+#X text 77 100 20 fps in the default Gem rate. It takes 50 ms between
+each frame.;
+#X obj 45 156 mtl/msToFps;
+#X text 33 53 tags: conversion;
+#X connect 0 0 7 0;
+#X connect 5 0 0 0;
+#X connect 7 0 1 0;
diff --git a/msToFps.pd b/msToFps.pd
new file mode 100644
index 0000000..28a31f8
--- /dev/null
+++ b/msToFps.pd
@@ -0,0 +1,8 @@
+#N canvas 195 357 324 250 10;
+#X obj 137 77 inlet;
+#X obj 136 161 /;
+#X msg 141 122 1000 \$1;
+#X obj 134 197 outlet;
+#X connect 0 0 2 0;
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;
diff --git a/msToFreq-help.pd b/msToFreq-help.pd
new file mode 100644
index 0000000..2160961
--- /dev/null
+++ b/msToFreq-help.pd
@@ -0,0 +1,11 @@
+#N canvas 363 333 430 211 10;
+#X floatatom 106 91 5 0 0 0 - - -;
+#X floatatom 106 153 5 0 0 0 - - -;
+#X text 155 90 Interval in milliseconds;
+#X text 155 153 Frequency;
+#X text 21 15 Description: Converts a millisecond interval to a frequency.
+;
+#X obj 106 117 mtl/msToFreq;
+#X text 22 34 tags: conversion;
+#X connect 0 0 5 0;
+#X connect 5 0 1 0;
diff --git a/msToFreq.pd b/msToFreq.pd
new file mode 100644
index 0000000..636dfc1
--- /dev/null
+++ b/msToFreq.pd
@@ -0,0 +1,8 @@
+#N canvas 0 0 452 302 12;
+#X obj 153 46 inlet;
+#X obj 161 144 /;
+#X msg 156 98 1000 \$1;
+#X obj 161 204 outlet;
+#X connect 0 0 2 0;
+#X connect 1 0 3 0;
+#X connect 2 0 1 0;
diff --git a/msToSmp-help.pd b/msToSmp-help.pd
new file mode 100644
index 0000000..c5ee950
--- /dev/null
+++ b/msToSmp-help.pd
@@ -0,0 +1,11 @@
+#N canvas 120 81 372 242 10;
+#X floatatom 93 91 5 0 0 0 - - -;
+#X floatatom 93 169 5 0 0 0 - - -;
+#X text 144 89 Length in milliseconds;
+#X text 145 169 Number of samples;
+#X text 17 8 Description: Converts a millisecond interval to a it's
+corresponding number of samples.;
+#X obj 93 130 mtl/msToSmp;
+#X text 18 42 tags: conversion;
+#X connect 0 0 5 0;
+#X connect 5 0 1 0;
diff --git a/msToSmp.pd b/msToSmp.pd
new file mode 100644
index 0000000..ca6f61a
--- /dev/null
+++ b/msToSmp.pd
@@ -0,0 +1,15 @@
+#N canvas 0 0 452 302 10;
+#X obj 31 46 inlet;
+#X obj 132 84 loadbang;
+#X obj 132 110 samplerate~;
+#X obj 53 266 outlet;
+#X obj 135 136 / 1000;
+#X obj 52 204 * 44.1;
+#X obj 52 83 t f b;
+#X connect 0 0 6 0;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 4 0 5 1;
+#X connect 5 0 3 0;
+#X connect 6 0 5 0;
+#X connect 6 1 2 0;
diff --git a/msToTime-help.pd b/msToTime-help.pd
new file mode 100644
index 0000000..78ba393
--- /dev/null
+++ b/msToTime-help.pd
@@ -0,0 +1,25 @@
+#N canvas 380 290 395 359 10;
+#X obj 135 151 timer;
+#X obj 162 103 loadbang;
+#X floatatom 135 178 10 0 0 0 - - -;
+#X obj 162 127 metro 50;
+#X floatatom 135 303 5 0 0 0 - - -;
+#X floatatom 164 281 5 0 0 0 - - -;
+#X floatatom 193 256 5 0 0 0 - - -;
+#X text 228 254 seconds;
+#X text 201 281 minutes;
+#X text 172 303 hours;
+#X floatatom 222 234 5 0 0 0 - - -;
+#X text 259 231 msec;
+#X text 18 12 Description: Converts a millisecond duration to a easier
+read format.;
+#X text 20 47 tags: conversion;
+#X obj 135 210 mtl/msToTime;
+#X connect 0 0 2 0;
+#X connect 1 0 3 0;
+#X connect 2 0 14 0;
+#X connect 3 0 0 1;
+#X connect 14 0 4 0;
+#X connect 14 1 5 0;
+#X connect 14 2 6 0;
+#X connect 14 3 10 0;
diff --git a/msToTime.pd b/msToTime.pd
new file mode 100644
index 0000000..9ac3bb1
--- /dev/null
+++ b/msToTime.pd
@@ -0,0 +1,30 @@
+#N canvas 385 294 1008 686 10;
+#X obj 127 14 inlet;
+#X obj 100 223 outlet;
+#X obj 177 222 outlet;
+#X obj 245 224 outlet;
+#X obj 121 127 / 60000;
+#X obj 207 127 / 1000;
+#X obj 124 148 int;
+#X obj 207 147 int;
+#X obj 207 170 mod 60;
+#X obj 141 180 mod 60;
+#X obj 33 131 / 3.6e+006;
+#X obj 45 159 int;
+#X obj 297 166 mod 1000;
+#X obj 156 72 t f f f f;
+#X obj 317 225 outlet;
+#X connect 0 0 13 0;
+#X connect 4 0 6 0;
+#X connect 5 0 7 0;
+#X connect 6 0 9 0;
+#X connect 7 0 8 0;
+#X connect 8 0 3 0;
+#X connect 9 0 2 0;
+#X connect 10 0 11 0;
+#X connect 11 0 1 0;
+#X connect 12 0 14 0;
+#X connect 13 0 10 0;
+#X connect 13 1 4 0;
+#X connect 13 2 5 0;
+#X connect 13 3 12 0;
diff --git a/mtl-meta.pd b/mtl-meta.pd
new file mode 100644
index 0000000..8529ac3
--- /dev/null
+++ b/mtl-meta.pd
@@ -0,0 +1,11 @@
+#N canvas 10 47 200 200 10;
+#N canvas 320 267 420 300 META 1;
+#X text 18 125 META this is a prototype of a libdir meta file;
+#X text 15 8 VERSION 2.2;
+#X text 16 23 LICENSE GPL;
+#X text 17 40 NAME mtl;
+#X text 15 60 DESCRIPTION A collection of abstractions made by Montreal
+pd users.;
+#X text 17 90 AUTHOR Thomas Ouellet Fredericks - Alexandre Quessy -
+Patrick Sebastien Coulombe;
+#X restore 10 10 pd META;
diff --git a/nbx~-help.pd b/nbx~-help.pd
new file mode 100644
index 0000000..bcbf6c3
--- /dev/null
+++ b/nbx~-help.pd
@@ -0,0 +1,16 @@
+#N canvas 393 304 464 314 12;
+#X obj 173 50 osc~ 1;
+#X obj 27 72 loadbang;
+#X msg 26 94 \; pd dsp 1;
+#X obj 173 158 vsl 15 128 -1 1 0 0 empty empty empty 0 -8 0 8 -262144
+-1 -1 5696 1;
+#X floatatom 260 78 5 0 0 0 - - -;
+#X text 291 94 Update interval.;
+#X text 292 115 Defaults to 100ms.;
+#X text 14 15 Description: displays a signal.;
+#X obj 173 125 mtl/nbx~;
+#X text 15 34 tags: info~;
+#X connect 0 0 8 0;
+#X connect 1 0 2 0;
+#X connect 4 0 8 1;
+#X connect 8 0 3 0;
diff --git a/nbx~.pd b/nbx~.pd
new file mode 100644
index 0000000..6fad256
--- /dev/null
+++ b/nbx~.pd
@@ -0,0 +1,19 @@
+#N canvas 78 314 710 382 10;
+#X obj 102 28 inlet~;
+#X obj 99 218 outlet;
+#X obj 368 19 inlet;
+#X obj 101 55 snapshot~;
+#X obj 199 83 metro 100;
+#X obj 249 12 loadbang;
+#X msg 249 32 1;
+#X obj 101 101 nbx 8 16 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
+-1 -262144 -1 0 256;
+#X obj 177 101 cnv 16 15 16 empty empty ~ 3 6 0 14 -1 -262144 0;
+#X connect 0 0 3 0;
+#X connect 2 0 4 1;
+#X connect 3 0 7 0;
+#X connect 4 0 3 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 7 0 1 0;
+#X coords 0 -1 1 1 94 18 1 100 100;
diff --git a/noteClose-help.pd b/noteClose-help.pd
new file mode 100644
index 0000000..6386a37
--- /dev/null
+++ b/noteClose-help.pd
@@ -0,0 +1,67 @@
+#N canvas 500 29 557 562 10;
+#X obj 38 343 osc~ 440;
+#X obj 39 403 *~;
+#X msg 41 194 64 127;
+#X msg 94 194 64 0;
+#X msg 133 194 67 127;
+#X msg 184 194 67 0;
+#X text 2 0 Description: Closes an opened note before opening a new
+one.;
+#X obj 38 317 mtof;
+#X obj 289 314 osc~ 440;
+#X obj 289 289 mtof;
+#X obj 290 357 *~;
+#X msg 289 197 64 127;
+#X msg 345 197 64 0;
+#X msg 386 196 67 127;
+#X msg 439 196 67 0;
+#X text 1 46 Argument_1: The delay time (must match the release time
+of synth.adsr~);
+#X text 0 15 Comments: This abstraction is monophonic. Understands
+float triggers.;
+#X msg 153 221 1;
+#X msg 189 221 0;
+#X msg 406 226 1;
+#X msg 443 226 0;
+#X text 39 174 Try only triggerind note_ons;
+#X text 286 174 Try only triggerind note_ons;
+#X text 140 292 NO GLITCHING!;
+#X text 394 261 GLITCHING!;
+#X obj 41 264 mtl/noteClose 5;
+#X text 2 77 tags: midi;
+#X text 1 109 COMPARE TRIGGERING NOTES WITH mtl/noteClose TO THE LEFT
+AND WITHOUT mtl/noteClose ON THE RIGHT.;
+#X text 15 498 WARNING mtl/noteClose's argument (the close delay) must
+be the same value as the release time!;
+#X obj 38 291 mtl/noteSplit;
+#X obj 289 262 mtl/noteSplit;
+#X obj 40 431 mtl/out~;
+#X obj 96 360 mtl/adsr~ 5 5 0.5 5;
+#X obj 351 334 mtl/adsr~ 5 5 0.5 5;
+#X connect 0 0 1 0;
+#X connect 1 0 31 0;
+#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 7 0 0 0;
+#X connect 8 0 10 0;
+#X connect 9 0 8 0;
+#X connect 10 0 31 1;
+#X connect 11 0 30 0;
+#X connect 12 0 30 0;
+#X connect 13 0 30 0;
+#X connect 14 0 30 0;
+#X connect 17 0 25 0;
+#X connect 18 0 25 0;
+#X connect 19 0 30 0;
+#X connect 20 0 30 0;
+#X connect 25 0 29 0;
+#X connect 29 0 7 0;
+#X connect 29 1 32 0;
+#X connect 29 2 32 0;
+#X connect 30 0 9 0;
+#X connect 30 1 33 0;
+#X connect 30 2 33 0;
+#X connect 32 0 1 1;
+#X connect 33 0 10 1;
diff --git a/noteClose.pd b/noteClose.pd
new file mode 100644
index 0000000..054ef3b
--- /dev/null
+++ b/noteClose.pd
@@ -0,0 +1,94 @@
+#N canvas 765 73 535 735 10;
+#X obj 49 -48 inlet;
+#X obj 48 666 outlet;
+#X obj 48 250 t a a;
+#X obj 85 282 unpack f f;
+#X obj 85 329 spigot;
+#X obj 143 311 != 0;
+#X obj 103 379 t f b;
+#X obj 157 444 f;
+#X msg 209 338 1;
+#X obj 383 672 outlet forced_close;
+#X obj 321 290 list;
+#X msg 160 483 \$1 0;
+#X obj 301 331 route bang;
+#X obj 313 391 t a b;
+#X msg 401 410 0;
+#X obj 88 47 unpack f f;
+#X obj 50 21 t a a;
+#X obj 151 76 == 0;
+#X msg 222 125 0;
+#X obj 250 239 delay 5;
+#X obj 323 48 loadbang;
+#N canvas 0 0 907 659 float_triggers 0;
+#X obj 146 111 route float;
+#X msg 321 310 127;
+#X obj 56 43 inlet;
+#X obj 78 462 outlet;
+#X obj 286 360 pack f f;
+#X obj 231 162 sel 0;
+#X obj 222 227 f 60;
+#X obj 284 281 t f b f;
+#X msg 210 267 \$1 0;
+#X obj 326 200 ./speedToM;
+#X connect 0 0 5 0;
+#X connect 0 1 3 0;
+#X connect 1 0 4 1;
+#X connect 2 0 0 0;
+#X connect 4 0 3 0;
+#X connect 5 0 6 0;
+#X connect 5 1 9 0;
+#X connect 6 0 8 0;
+#X connect 7 0 4 0;
+#X connect 7 1 1 0;
+#X connect 7 2 6 1;
+#X connect 8 0 3 0;
+#X connect 9 0 7 0;
+#X restore 49 -13 pd float_triggers;
+#X obj 194 101 t a b b;
+#X msg 258 125 stop;
+#X obj 308 200 t b b a b b;
+#X msg 226 159 2;
+#X obj 325 86 tof/argument 1 5;
+#X obj 48 111 zexy/demultiplex;
+#X obj 48 148 zexy/demultiplex 0 1 2;
+#X connect 0 0 21 0;
+#X connect 2 0 1 0;
+#X connect 2 1 3 0;
+#X connect 3 0 4 0;
+#X connect 3 1 5 0;
+#X connect 4 0 6 0;
+#X connect 5 0 4 1;
+#X connect 6 0 7 1;
+#X connect 6 1 8 0;
+#X connect 7 0 11 0;
+#X connect 8 0 28 1;
+#X connect 10 0 12 0;
+#X connect 11 0 1 0;
+#X connect 12 1 13 0;
+#X connect 13 0 2 0;
+#X connect 13 1 14 0;
+#X connect 14 0 28 1;
+#X connect 15 1 17 0;
+#X connect 16 0 27 0;
+#X connect 16 1 15 0;
+#X connect 17 0 27 1;
+#X connect 18 0 28 1;
+#X connect 19 0 10 0;
+#X connect 20 0 26 0;
+#X connect 21 0 16 0;
+#X connect 22 0 1 0;
+#X connect 22 1 18 0;
+#X connect 22 2 23 0;
+#X connect 23 0 19 0;
+#X connect 24 0 19 0;
+#X connect 24 1 7 0;
+#X connect 24 2 10 1;
+#X connect 24 3 25 0;
+#X connect 24 4 9 0;
+#X connect 25 0 28 1;
+#X connect 26 0 19 1;
+#X connect 27 0 28 0;
+#X connect 27 1 22 0;
+#X connect 28 0 2 0;
+#X connect 28 1 24 0;
diff --git a/noteFloat-help.pd b/noteFloat-help.pd
new file mode 100644
index 0000000..907f5bb
--- /dev/null
+++ b/noteFloat-help.pd
@@ -0,0 +1,27 @@
+#N canvas 458 339 484 340 10;
+#X floatatom 72 83 5 0 0 0 - - -;
+#X obj 122 85 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 150 86 60 127;
+#X msg 52 128 2;
+#X msg 47 172 0;
+#X msg 200 137 0 57 65;
+#X msg 218 162 0 57 0;
+#X msg 179 112 60 0;
+#X obj 123 254 cyclone/prepend set;
+#X text 46 49 tags: midi;
+#X msg 123 280 60 0;
+#X obj 123 226 mtl/noteFloat;
+#X text 45 9 Description: Converts float inputs to midi notes. Removes
+any channel information. Regular midi notes simply pass through.;
+#X text 214 200 Inlet 2: midi base note. 60 by default.;
+#X connect 0 0 11 0;
+#X connect 1 0 11 0;
+#X connect 2 0 11 0;
+#X connect 3 0 11 0;
+#X connect 4 0 11 0;
+#X connect 5 0 11 0;
+#X connect 6 0 11 0;
+#X connect 7 0 11 0;
+#X connect 8 0 10 0;
+#X connect 11 0 8 0;
diff --git a/noteFloat.pd b/noteFloat.pd
new file mode 100644
index 0000000..75c0c3e
--- /dev/null
+++ b/noteFloat.pd
@@ -0,0 +1,33 @@
+#N canvas 187 313 629 476 10;
+#X obj 57 32 inlet;
+#X obj 61 62 t a a;
+#X obj 199 427 outlet;
+#X obj 57 184 sel 0;
+#X obj 51 240 f 60;
+#X obj 333 35 inlet;
+#X obj 111 264 t f f;
+#X msg 114 292 \$1 127;
+#X msg 37 286 \$1 0;
+#X obj 188 125 - 1;
+#X obj 180 91 list length;
+#X obj 108 237 ./speedToM;
+#X obj 59 148 zexy/demultiplex 0 1 2;
+#X obj 188 176 list split 1;
+#X connect 0 0 1 0;
+#X connect 1 0 12 0;
+#X connect 1 1 10 0;
+#X connect 3 0 4 0;
+#X connect 3 1 11 0;
+#X connect 4 0 8 0;
+#X connect 5 0 11 1;
+#X connect 6 0 7 0;
+#X connect 6 1 4 1;
+#X connect 7 0 2 0;
+#X connect 8 0 2 0;
+#X connect 9 0 12 1;
+#X connect 10 0 9 0;
+#X connect 11 0 6 0;
+#X connect 12 0 3 0;
+#X connect 12 1 2 0;
+#X connect 12 2 13 0;
+#X connect 13 1 2 0;
diff --git a/noteSplit-help.pd b/noteSplit-help.pd
new file mode 100644
index 0000000..89c7d41
--- /dev/null
+++ b/noteSplit-help.pd
@@ -0,0 +1,26 @@
+#N canvas 1247 160 438 404 10;
+#X obj 194 96 print note_off;
+#X obj 156 171 print note_on_vel;
+#X obj 119 249 print note_on_pitch;
+#X msg 119 27 73 127;
+#X msg 168 27 54 0;
+#X text 23 -17 tags: midi;
+#X obj 119 274 cyclone/prepend set;
+#X obj 156 194 cyclone/prepend set;
+#X obj 194 117 cyclone/prepend set;
+#X obj 119 69 mtl/noteSplit;
+#X msg 156 219 127;
+#X msg 119 299 73;
+#X msg 194 142 0;
+#X text 24 -33 Description: Splits note offs from a midi stream.;
+#X connect 3 0 9 0;
+#X connect 4 0 9 0;
+#X connect 6 0 11 0;
+#X connect 7 0 10 0;
+#X connect 8 0 12 0;
+#X connect 9 0 2 0;
+#X connect 9 0 6 0;
+#X connect 9 1 1 0;
+#X connect 9 1 7 0;
+#X connect 9 2 0 0;
+#X connect 9 2 8 0;
diff --git a/noteSplit.pd b/noteSplit.pd
new file mode 100644
index 0000000..7a1cb1c
--- /dev/null
+++ b/noteSplit.pd
@@ -0,0 +1,21 @@
+#N canvas 272 194 752 574 10;
+#X obj 78 23 inlet;
+#X obj 177 376 outlet note;
+#X obj 330 384 outlet vel;
+#X obj 435 384 outlet off;
+#X obj 322 252 spigot;
+#X obj 420 211 t f f;
+#X obj 399 245 > 0;
+#X obj 452 241 sel 0;
+#X msg 438 346 0;
+#X obj 330 176 list split 1;
+#X connect 0 0 9 0;
+#X connect 4 0 1 0;
+#X connect 5 0 6 0;
+#X connect 5 1 7 0;
+#X connect 6 0 4 1;
+#X connect 7 0 8 0;
+#X connect 7 1 2 0;
+#X connect 8 0 3 0;
+#X connect 9 0 4 0;
+#X connect 9 1 5 0;
diff --git a/noteToName-help.pd b/noteToName-help.pd
new file mode 100644
index 0000000..6a8dd0e
--- /dev/null
+++ b/noteToName-help.pd
@@ -0,0 +1,12 @@
+#N canvas 0 0 448 276 10;
+#X obj 20 62 mtl/piano 1;
+#X obj 20 214 cyclone/prepend set;
+#X obj 20 170 unpack;
+#X msg 20 235 E;
+#X text 17 12 Description: Convert note number to note name.;
+#X text 17 34 tags: musical;
+#X obj 20 193 mtl/noteToName;
+#X connect 0 0 2 0;
+#X connect 1 0 3 0;
+#X connect 2 0 6 0;
+#X connect 6 0 1 0;
diff --git a/noteToName.pd b/noteToName.pd
new file mode 100644
index 0000000..fedfc93
--- /dev/null
+++ b/noteToName.pd
@@ -0,0 +1,47 @@
+#N canvas 483 102 555 353 10;
+#X obj 170 59 inlet;
+#X obj 167 131 sel 0 1 2 3 4 5 6 7 8 9 10 11;
+#X obj 270 295 symbol;
+#X obj 273 319 outlet;
+#X msg 111 191 C;
+#X msg 172 192 D;
+#X msg 142 192 C#;
+#X msg 203 191 Eb;
+#X msg 235 190 E;
+#X msg 265 191 F;
+#X msg 295 191 F#;
+#X msg 326 190 G;
+#X msg 356 192 Ab;
+#X msg 387 193 A;
+#X msg 417 193 Bb;
+#X msg 448 192 B;
+#X obj 311 80 % 12;
+#X floatatom 316 111 5 0 0 0 - - -;
+#X connect 0 0 16 0;
+#X connect 1 0 4 0;
+#X connect 1 1 6 0;
+#X connect 1 2 5 0;
+#X connect 1 3 7 0;
+#X connect 1 4 8 0;
+#X connect 1 5 9 0;
+#X connect 1 6 10 0;
+#X connect 1 7 11 0;
+#X connect 1 8 12 0;
+#X connect 1 9 13 0;
+#X connect 1 10 14 0;
+#X connect 1 11 15 0;
+#X connect 2 0 3 0;
+#X connect 4 0 2 0;
+#X connect 5 0 2 0;
+#X connect 6 0 2 0;
+#X connect 7 0 2 0;
+#X connect 8 0 2 0;
+#X connect 9 0 2 0;
+#X connect 10 0 2 0;
+#X connect 11 0 2 0;
+#X connect 12 0 2 0;
+#X connect 13 0 2 0;
+#X connect 14 0 2 0;
+#X connect 15 0 2 0;
+#X connect 16 0 17 0;
+#X connect 16 0 1 0;
diff --git a/numToRgb-help.pd b/numToRgb-help.pd
new file mode 100644
index 0000000..d628560
--- /dev/null
+++ b/numToRgb-help.pd
@@ -0,0 +1,24 @@
+#N canvas 180 227 524 308 10;
+#X obj 28 82 cnv 15 250 60 empty can empty 20 12 0 14 -1638 -262144
+0;
+#X msg 34 235 \; can color \$1;
+#X floatatom 128 156 5 1 13000 0 - - -;
+#X obj 128 177 * -125;
+#X floatatom 128 200 10 0 0 0 - - -;
+#X text 197 200 Pd color;
+#X obj 128 261 print float_RGB;
+#X obj 229 261 print 8bit_RGB;
+#X text 27 15 Description: Converts a pd color value into float RGB
+and 8bit RGB.;
+#X obj 128 236 mtl/numToRgb;
+#X text 26 50 tags: conversion;
+#X obj 229 238 mtl/numToRgb 8bit;
+#X obj 361 239 mtl/numToRgb int;
+#X obj 361 261 mtl/numToRgb integer;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 9 0;
+#X connect 4 0 11 0;
+#X connect 9 0 6 0;
+#X connect 11 0 7 0;
diff --git a/numToRgb.pd b/numToRgb.pd
new file mode 100644
index 0000000..bad29f9
--- /dev/null
+++ b/numToRgb.pd
@@ -0,0 +1,60 @@
+#N canvas 170 117 1168 783 10;
+#X obj 468 98 inlet;
+#X obj 468 168 t f f f;
+#X obj 477 247 -;
+#X obj 553 208 mod 256;
+#X obj 495 327 / 256;
+#X obj 566 394 + 255;
+#X obj 554 268 * -1;
+#X obj 381 296 * -1;
+#X obj 489 378 + 255;
+#X obj 497 350 * -1;
+#X obj 544 234 t f f;
+#X obj 388 335 int;
+#X obj 461 284 mod 65536;
+#X obj 382 228 / 65537;
+#X obj 396 742 outlet float;
+#X obj 425 471 pack f f f;
+#X obj 238 561 unpack f f f;
+#X obj 279 645 pack f f f;
+#X obj 967 286 loadbang;
+#X msg 1037 375 1;
+#X obj 965 343 sel 8bit int integer;
+#X obj 235 592 / 255;
+#X obj 283 591 / 255;
+#X obj 350 592 / 255;
+#X obj 391 505 zexy/demultiplex 0 1;
+#X obj 967 316 iemlib/dollarg;
+#X connect 0 0 1 0;
+#X connect 1 0 13 0;
+#X connect 1 1 2 0;
+#X connect 1 2 3 0;
+#X connect 2 0 12 0;
+#X connect 3 0 10 0;
+#X connect 4 0 9 0;
+#X connect 5 0 15 2;
+#X connect 6 0 5 0;
+#X connect 7 0 11 0;
+#X connect 8 0 15 1;
+#X connect 9 0 8 0;
+#X connect 10 0 6 0;
+#X connect 10 1 2 1;
+#X connect 11 0 15 0;
+#X connect 12 0 4 0;
+#X connect 13 0 7 0;
+#X connect 15 0 24 0;
+#X connect 16 0 21 0;
+#X connect 16 1 22 0;
+#X connect 16 2 23 0;
+#X connect 17 0 14 0;
+#X connect 18 0 25 0;
+#X connect 19 0 24 1;
+#X connect 20 0 19 0;
+#X connect 20 1 19 0;
+#X connect 20 2 19 0;
+#X connect 21 0 17 0;
+#X connect 22 0 17 1;
+#X connect 23 0 17 2;
+#X connect 24 0 16 0;
+#X connect 24 1 14 0;
+#X connect 25 0 20 0;
diff --git a/octava-help.pd b/octava-help.pd
new file mode 100644
index 0000000..97990db
--- /dev/null
+++ b/octava-help.pd
@@ -0,0 +1,18 @@
+#N canvas 395 212 393 329 10;
+#X msg 24 57 0 4 7;
+#X obj 81 85 vradio 15 1 0 8 empty empty empty 0 -6 0 8 -262144 -1
+-1 6;
+#X obj 81 212 expr 7-$f1;
+#X text 101 82 Choose your octava;
+#X text 74 56 Major chord;
+#X text 18 5 Desription: Transposes a chord to a higher or lower octava
+;
+#X obj 24 235 mtl/octava;
+#X obj 24 258 cyclone/prepend set;
+#X text 19 23 tags: musical;
+#X msg 24 282;
+#X connect 0 0 6 0;
+#X connect 1 0 2 0;
+#X connect 2 0 6 1;
+#X connect 6 0 7 0;
+#X connect 7 0 9 0;
diff --git a/octava.pd b/octava.pd
new file mode 100644
index 0000000..2e883d9
--- /dev/null
+++ b/octava.pd
@@ -0,0 +1,15 @@
+#N canvas 0 0 450 300 10;
+#X obj 61 105 inlet;
+#X obj 149 192 expr $f1+12*$f2;
+#X obj 305 71 inlet;
+#X obj 65 235 outlet;
+#X obj 304 121 tof/argument 1 0;
+#X obj 304 100 loadbang;
+#X obj 39 190 ./listOp;
+#X connect 0 0 6 0;
+#X connect 1 0 6 1;
+#X connect 2 0 1 1;
+#X connect 4 0 1 1;
+#X connect 5 0 4 0;
+#X connect 6 0 3 0;
+#X connect 6 1 1 0;
diff --git a/oldRecord~-help.pd b/oldRecord~-help.pd
new file mode 100644
index 0000000..5dbbf37
--- /dev/null
+++ b/oldRecord~-help.pd
@@ -0,0 +1,9 @@
+#N canvas 6 57 382 198 10;
+#X text 13 24 Comment: Taken from Andy Farnell's work.;
+#X text 15 7 Description: Simulates the crackling of an old record.
+;
+#X obj 18 79 mtl/oldRecord~;
+#X obj 18 107 mtl/out~;
+#X text 19 48 tags: synthesize~;
+#X connect 2 0 3 0;
+#X connect 2 0 3 1;
diff --git a/oldRecord~.pd b/oldRecord~.pd
new file mode 100644
index 0000000..66697c5
--- /dev/null
+++ b/oldRecord~.pd
@@ -0,0 +1,50 @@
+#N canvas 115 161 450 300 10;
+#N canvas 1 57 636 592 fry 0;
+#X obj 341 264 osc~;
+#X obj 351 58 noise~;
+#X obj 340 336 *~;
+#X obj 307 233 +~ 2000;
+#X obj 378 261 *~;
+#X obj 378 286 *~;
+#X obj 340 440 *~ 0.01;
+#X obj 338 463 lop~ 10000;
+#X obj 352 122 bp~ 2.064 0.002;
+#X obj 379 311 *~;
+#X obj 339 370 *~ 0.3;
+#X obj 340 395 hip~ 500;
+#X obj 341 418 hip~ 500;
+#X obj 342 548 outlet~;
+#X obj 340 493 *~ 0.01;
+#X obj 353 177 *~ 3.8;
+#X obj 448 59 inlet range;
+#X obj 574 59 inlet base;
+#X obj 343 518 clip~ -1 1;
+#X obj 306 209 *~ 100;
+#X connect 0 0 2 0;
+#X connect 1 0 8 0;
+#X connect 2 0 10 0;
+#X connect 3 0 0 0;
+#X connect 4 0 5 0;
+#X connect 4 0 5 1;
+#X connect 5 0 9 0;
+#X connect 5 0 9 1;
+#X connect 6 0 7 0;
+#X connect 7 0 14 0;
+#X connect 8 0 15 0;
+#X connect 9 0 2 1;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 6 0;
+#X connect 14 0 18 0;
+#X connect 15 0 4 0;
+#X connect 15 0 4 1;
+#X connect 15 0 19 0;
+#X connect 16 0 19 1;
+#X connect 17 0 3 1;
+#X connect 18 0 13 0;
+#X connect 19 0 3 0;
+#X restore 115 128 pd fry;
+#X msg 113 66 100;
+#X obj 116 180 outlet~;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
diff --git a/out~-help.pd b/out~-help.pd
new file mode 100644
index 0000000..b85ff5e
--- /dev/null
+++ b/out~-help.pd
@@ -0,0 +1,19 @@
+#N canvas 162 421 583 258 10;
+#X text 13 46 tags: mix~;
+#X obj 18 86 osc~ 400;
+#X obj 18 148 *~;
+#X obj 162 151 *~;
+#X text 12 14 Description: Controls the output volume and displays
+a VU for both channels.;
+#X obj 33 123 osc~ 0.1;
+#X obj 177 127 osc~ 0.1;
+#X text 180 175 The square next to the volume slider glows green when
+DSP is ON and input is detected. It goes red if the input peak.;
+#X obj 17 180 mtl/out~;
+#X text 181 208 Argument: volume ie: [mtl/out~ 90] default 50;
+#X connect 1 0 2 0;
+#X connect 1 0 3 0;
+#X connect 2 0 8 0;
+#X connect 3 0 8 1;
+#X connect 5 0 2 1;
+#X connect 6 0 3 1;
diff --git a/out~.pd b/out~.pd
new file mode 100644
index 0000000..a3fe5fb
--- /dev/null
+++ b/out~.pd
@@ -0,0 +1,275 @@
+#N canvas 440 166 759 674 10;
+#X obj 51 520 dac~ 1 2;
+#N canvas 498 116 886 636 guts 0;
+#X obj 371 459 snapshot~;
+#X obj 474 466 snapshot~;
+#N canvas 563 189 734 553 size&color 0;
+#X obj 90 14 inlet;
+#X obj 26 371 s \$0left;
+#X obj 88 121 t f f;
+#X msg 157 213 0;
+#X msg 213 230 1;
+#X msg 193 315 color 14;
+#X msg 373 315 color 13;
+#X msg 120 312 color 16;
+#X obj 193 257 change -1;
+#X msg 274 239 2;
+#X obj 87 96 + 1;
+#X obj 85 34 change -1;
+#X obj 86 53 clip 0 1;
+#X obj 96 74 * 100;
+#X msg 43 217 vis_size \$1 7;
+#X obj 67 178 * 1.48;
+#X obj 162 187 moses 60;
+#X obj 214 208 moses 80;
+#X obj 274 218 moses 100;
+#X msg 324 245 3;
+#X obj 196 285 sel 0 1 2 3;
+#X msg 253 314 color -1.5626e+07;
+#X obj 324 271 s \$0peak;
+#X connect 0 0 11 0;
+#X connect 2 0 15 0;
+#X connect 2 1 16 0;
+#X connect 3 0 8 0;
+#X connect 4 0 8 0;
+#X connect 5 0 1 0;
+#X connect 6 0 1 0;
+#X connect 7 0 1 0;
+#X connect 8 0 20 0;
+#X connect 9 0 8 0;
+#X connect 10 0 2 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 13 0 10 0;
+#X connect 14 0 1 0;
+#X connect 15 0 14 0;
+#X connect 16 0 3 0;
+#X connect 16 1 17 0;
+#X connect 17 0 4 0;
+#X connect 17 1 18 0;
+#X connect 18 0 9 0;
+#X connect 18 1 19 0;
+#X connect 19 0 8 0;
+#X connect 19 0 22 0;
+#X connect 20 0 7 0;
+#X connect 20 1 5 0;
+#X connect 20 2 21 0;
+#X connect 20 3 6 0;
+#X connect 21 0 1 0;
+#X restore 353 543 pd size&color;
+#X obj 47 18 loadbang;
+#X msg 52 44 0;
+#X obj 241 85 inlet~;
+#X obj 421 89 inlet~;
+#X obj 493 184 line~;
+#X obj 50 291 *~;
+#X obj 173 309 *~;
+#X obj 27 359 hip~ 10;
+#X obj 102 369 hip~ 10;
+#X obj 551 86 inlet vol;
+#X obj 37 485 outlet~;
+#X obj 144 490 outlet~;
+#X msg 535 135 \$1 100;
+#X obj 596 210 sel 0;
+#X msg 558 243 0;
+#X obj 647 260 metro 200;
+#N canvas 2 89 734 553 size&color 0;
+#X obj 90 14 inlet;
+#X obj 88 121 t f f;
+#X msg 157 213 0;
+#X msg 213 230 1;
+#X msg 193 315 color 14;
+#X msg 260 318 color 13;
+#X msg 120 312 color 16;
+#X obj 193 257 change -1;
+#X msg 271 242 2;
+#X obj 87 96 + 1;
+#X obj 85 34 change -1;
+#X obj 86 53 clip 0 1;
+#X obj 26 371 s \$0right;
+#X msg 44 224 vis_size \$1 7;
+#X obj 96 74 * 100;
+#X obj 83 178 * 1.48;
+#X obj 162 187 moses 60;
+#X obj 213 208 moses 80;
+#X obj 273 218 moses 100;
+#X msg 324 245 3;
+#X obj 195 285 sel 0 1 2 3;
+#X msg 236 367 color -1.5626e+07;
+#X obj 334 281 s \$0peak;
+#X connect 0 0 10 0;
+#X connect 1 0 15 0;
+#X connect 1 1 16 0;
+#X connect 2 0 7 0;
+#X connect 3 0 7 0;
+#X connect 4 0 12 0;
+#X connect 5 0 12 0;
+#X connect 6 0 12 0;
+#X connect 7 0 20 0;
+#X connect 8 0 7 0;
+#X connect 9 0 1 0;
+#X connect 10 0 11 0;
+#X connect 11 0 14 0;
+#X connect 13 0 12 0;
+#X connect 14 0 9 0;
+#X connect 15 0 13 0;
+#X connect 16 0 2 0;
+#X connect 16 1 17 0;
+#X connect 17 0 3 0;
+#X connect 17 1 18 0;
+#X connect 18 0 8 0;
+#X connect 18 1 19 0;
+#X connect 19 0 7 0;
+#X connect 19 0 22 0;
+#X connect 20 0 6 0;
+#X connect 20 1 4 0;
+#X connect 20 2 21 0;
+#X connect 20 3 5 0;
+#X connect 21 0 12 0;
+#X restore 485 536 pd size&color;
+#X obj 566 166 != 0;
+#X obj 367 426 iemlib/peakenv~ 1000;
+#X obj 481 401 iemlib/peakenv~ 1000;
+#X obj 682 161 r pd;
+#X obj 677 202 route dsp;
+#X obj 617 544 outlet;
+#X obj 589 511 max;
+#X obj 621 398 iemlib/peakenv~ 1000;
+#X obj 761 374 iemlib/peakenv~ 1000;
+#X obj 633 447 snapshot~;
+#X obj 736 454 snapshot~;
+#X obj 646 339 t b b;
+#X connect 0 0 2 0;
+#X connect 1 0 19 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 0;
+#X connect 4 0 19 0;
+#X connect 5 0 8 0;
+#X connect 5 0 27 0;
+#X connect 6 0 9 0;
+#X connect 6 0 28 0;
+#X connect 7 0 8 1;
+#X connect 7 0 9 1;
+#X connect 8 0 10 0;
+#X connect 8 0 21 0;
+#X connect 9 0 11 0;
+#X connect 9 0 22 0;
+#X connect 10 0 13 0;
+#X connect 11 0 14 0;
+#X connect 12 0 15 0;
+#X connect 15 0 7 0;
+#X connect 15 0 20 0;
+#X connect 16 0 17 0;
+#X connect 16 1 18 0;
+#X connect 17 0 2 0;
+#X connect 17 0 18 0;
+#X connect 17 0 19 0;
+#X connect 18 0 0 0;
+#X connect 18 0 1 0;
+#X connect 18 0 31 0;
+#X connect 20 0 16 0;
+#X connect 21 0 0 0;
+#X connect 22 0 1 0;
+#X connect 23 0 24 0;
+#X connect 24 0 18 0;
+#X connect 26 0 25 0;
+#X connect 27 0 29 0;
+#X connect 28 0 30 0;
+#X connect 29 0 26 0;
+#X connect 30 0 26 1;
+#X connect 31 0 29 0;
+#X connect 31 1 30 0;
+#X restore 56 443 pd guts;
+#X obj 10 199 inlet~;
+#X obj 69 198 inlet~;
+#X obj 95 386 / 100;
+#X obj 95 410 pow 3;
+#X obj 271 303 > 0;
+#X msg 276 434 \; pd dsp 1;
+#X obj 271 327 sel 1;
+#X obj 102 134 cnv 7 149 15 empty empty empty 20 12 0 14 -1 -66577
+0;
+#X obj 102 134 cnv 1 51 7 empty \$0left empty 20 12 0 14 -24198 -262144
+0;
+#X obj 102 142 cnv 1 46 7 empty \$0right empty 20 12 0 14 -24198 -262144
+0;
+#X obj 105 116 hsl 100 15 0 100 0 0 \$0nans \$0nanr vol 106 7 0 8 -228856
+-33289 -33289 6600 1;
+#X obj 271 352 value DSP;
+#X obj 231 265 t f f;
+#X obj 277 383 sel 0;
+#X obj 275 407 t b b;
+#X msg 330 409 1;
+#X obj 236 116 cnv 15 15 15 empty \$0led empty 20 12 0 14 -3649 -262144
+0;
+#X obj 277 483 delay 300;
+#X obj 164 466 t f b;
+#X obj 280 684 s \$0led;
+#X msg 278 507 0;
+#X obj 364 484 loadbang;
+#X obj 293 582 change -1;
+#X obj 206 520 moses 0.5;
+#X msg 157 537 0;
+#X msg 212 540 1;
+#X msg 254 542 2;
+#X msg 158 646 color -1.50666e+07;
+#X msg 401 644 color -58625;
+#X obj 291 609 sel 0 1 2;
+#X msg 277 644 color -1.17242e+07;
+#X obj 148 499 moses 0.001;
+#X obj 43 561 outlet~;
+#X obj 73 581 outlet~;
+#X obj 493 604 r \$0peak;
+#X obj 493 625 t b;
+#X msg 493 645 color 13;
+#X obj 493 667 t b;
+#X obj 520 667 delay 300;
+#X obj 102 61 loadbang;
+#X obj 102 84 tof/argument 1 50;
+#X connect 1 0 0 0;
+#X connect 1 0 34 0;
+#X connect 1 1 0 1;
+#X connect 1 1 35 0;
+#X connect 1 2 20 0;
+#X connect 2 0 1 0;
+#X connect 3 0 1 1;
+#X connect 4 0 5 0;
+#X connect 5 0 1 2;
+#X connect 6 0 8 0;
+#X connect 8 0 13 0;
+#X connect 12 0 14 0;
+#X connect 13 0 15 0;
+#X connect 14 0 4 0;
+#X connect 14 1 6 0;
+#X connect 15 0 16 0;
+#X connect 16 0 7 0;
+#X connect 16 1 17 0;
+#X connect 17 0 13 0;
+#X connect 19 0 22 0;
+#X connect 20 0 33 0;
+#X connect 20 1 19 0;
+#X connect 22 0 24 0;
+#X connect 23 0 22 0;
+#X connect 24 0 31 0;
+#X connect 25 0 27 0;
+#X connect 25 1 28 0;
+#X connect 26 0 24 0;
+#X connect 27 0 24 0;
+#X connect 28 0 24 0;
+#X connect 29 0 21 0;
+#X connect 30 0 21 0;
+#X connect 31 0 29 0;
+#X connect 31 1 32 0;
+#X connect 31 2 30 0;
+#X connect 32 0 21 0;
+#X connect 33 0 26 0;
+#X connect 33 1 25 0;
+#X connect 36 0 37 0;
+#X connect 37 0 38 0;
+#X connect 38 0 21 0;
+#X connect 38 0 39 0;
+#X connect 39 0 40 0;
+#X connect 40 0 30 0;
+#X connect 41 0 42 0;
+#X connect 42 0 12 0;
+#X coords 0 -1 1 1 153 42 1 100 111;
diff --git a/param-enabled-help.pd b/param-enabled-help.pd
new file mode 100644
index 0000000..382e33e
--- /dev/null
+++ b/param-enabled-help.pd
@@ -0,0 +1,2 @@
+#N canvas 85 170 792 517 10;
+#X text 64 32 This will detail all about param's.... someday :);
diff --git a/pdToAscii-help.pd b/pdToAscii-help.pd
new file mode 100644
index 0000000..6cab3a1
--- /dev/null
+++ b/pdToAscii-help.pd
@@ -0,0 +1,27 @@
+#N canvas 243 150 569 441 10;
+#X text 26 48 tags: conversion;
+#X msg 54 90 A B C;
+#X obj 54 212 print;
+#X msg 97 114 list A B C;
+#X obj 54 185 mtl/pdToAscii;
+#X msg 123 147 567;
+#X text 99 89 Spaces in lists are converted (ASCII code 32);
+#X obj 57 314 list append 13;
+#X text 152 307 By using list append \, you can append special ASCII
+characters like the carriage return (ASCII code 13) in this case.;
+#X msg 57 247 78;
+#X msg 115 254 test;
+#X obj 57 344 print;
+#X text 27 17 Description: Converts Pd messages to a list of ASCII
+bytes.;
+#X msg 110 232 hello world;
+#X obj 57 286 mtl/pdToAscii;
+#X connect 1 0 4 0;
+#X connect 3 0 4 0;
+#X connect 4 0 2 0;
+#X connect 5 0 4 0;
+#X connect 7 0 11 0;
+#X connect 9 0 14 0;
+#X connect 10 0 14 0;
+#X connect 13 0 14 0;
+#X connect 14 0 7 0;
diff --git a/pdToAscii.pd b/pdToAscii.pd
new file mode 100644
index 0000000..b82a42c
--- /dev/null
+++ b/pdToAscii.pd
@@ -0,0 +1,8 @@
+#N canvas 989 362 450 300 10;
+#X obj 111 39 inlet;
+#X obj 110 237 outlet;
+#X obj 111 82 list trim;
+#X obj 110 122 moocow/any2bytes 0 -1;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 1 0;
diff --git a/phi-help.pd b/phi-help.pd
new file mode 100644
index 0000000..604e10b
--- /dev/null
+++ b/phi-help.pd
@@ -0,0 +1,10 @@
+#N canvas 535 339 406 181 10;
+#X obj 172 85 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 172 137 print;
+#X text 47 16 Description: Outputs the constant phi ((1+sqrt(5))/2).
+;
+#X obj 172 112 mtl/phi;
+#X text 48 33 tags: math;
+#X connect 0 0 3 0;
+#X connect 3 0 1 0;
diff --git a/phi.pd b/phi.pd
new file mode 100644
index 0000000..67fba76
--- /dev/null
+++ b/phi.pd
@@ -0,0 +1,16 @@
+#N canvas 263 342 446 296 10;
+#X obj 93 21 inlet;
+#X obj 93 162 outlet;
+#X obj 148 80 sqrt;
+#X msg 148 58 5;
+#X obj 148 101 + 1;
+#X obj 148 121 / 2;
+#X obj 148 35 loadbang;
+#X obj 93 125 f;
+#X connect 0 0 7 0;
+#X connect 2 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 5 0;
+#X connect 5 0 7 1;
+#X connect 6 0 3 0;
+#X connect 7 0 1 0;
diff --git a/piano-help.pd b/piano-help.pd
new file mode 100644
index 0000000..efa53ab
--- /dev/null
+++ b/piano-help.pd
@@ -0,0 +1,13 @@
+#N canvas 232 64 457 287 10;
+#X text 21 8 Description: Transform your computer keyboard into a midi
+piano.;
+#X obj 23 203 unpack;
+#X floatatom 23 226 5 0 0 0 - - -;
+#X floatatom 56 226 5 0 0 0 - - -;
+#X obj 23 94 mtl/piano 1;
+#X text 21 57 Argument: listen to key input at start 0/1;
+#X text 96 225 Note Velocity;
+#X text 21 37 tags: ui midi;
+#X connect 1 0 2 0;
+#X connect 1 1 3 0;
+#X connect 4 0 1 0;
diff --git a/piano.pd b/piano.pd
new file mode 100644
index 0000000..1ded1ee
--- /dev/null
+++ b/piano.pd
@@ -0,0 +1,373 @@
+#N canvas 430 89 1009 673 10;
+#X obj 329 386 tabread \$0keys;
+#X obj 325 445 pack;
+#X obj 324 466 route 0;
+#X obj 378 439 * 127;
+#X obj 920 156 bng 15 250 50 0 empty empty empty 0 -6 0 8 -224695 -1
+-1;
+#X text 938 154 all reset;
+#X obj 889 11 table \$0keys 256;
+#X obj 285 613 pack s f;
+#X obj 285 568 unpack;
+#X msg 285 635 \; \$1 set \$2;
+#X obj 607 456 swap;
+#X obj 600 495 pack;
+#N canvas 0 25 1006 673 mouse_receives 0;
+#X obj 77 86 r \$0s49;
+#X obj 143 86 r \$0s50;
+#X obj 202 85 r \$0s51;
+#X obj 275 83 r \$0s52;
+#X obj 343 83 r \$0s53;
+#X obj 403 86 r \$0s54;
+#X obj 465 84 r \$0s55;
+#X obj 526 84 r \$0s56;
+#X obj 585 86 r \$0s57;
+#X obj 650 88 r \$0s58;
+#X obj 703 86 r \$0s59;
+#X obj 754 88 r \$0s60;
+#X obj 808 89 r \$0s61;
+#X obj 859 89 r \$0s62;
+#X obj 914 90 r \$0s63;
+#X obj 961 92 r \$0s64;
+#X obj 1019 95 r \$0s65;
+#X obj 8 382 r \$0s66;
+#X obj 72 383 r \$0s67;
+#X obj 135 381 r \$0s68;
+#X obj 187 384 r \$0s69;
+#X obj 238 388 r \$0s70;
+#X obj 293 387 r \$0s71;
+#X obj 344 387 r \$0s72;
+#X obj 400 386 r \$0s73;
+#X obj 452 385 r \$0s74;
+#X obj 503 385 r \$0s75;
+#X obj 552 385 r \$0s76;
+#X obj 601 382 r \$0s77;
+#X obj 654 385 r \$0s78;
+#X obj 702 386 r \$0s79;
+#X obj 755 386 r \$0s80;
+#X obj 809 387 r \$0s81;
+#X obj 859 387 r \$0s82;
+#X obj 909 387 r \$0s83;
+#X obj 957 388 r \$0s84;
+#X obj 5 86 r \$0s48;
+#X obj 3 111 pack f 48;
+#X obj 69 112 pack f 49;
+#X obj 135 112 pack f 50;
+#X obj 200 108 pack f 51;
+#X obj 277 106 pack f 52;
+#X obj 341 109 pack f 53;
+#X obj 404 110 pack f 54;
+#X obj 464 109 pack f 55;
+#X obj 526 109 pack f 56;
+#X obj 587 109 pack f 57;
+#X obj 498 310 outlet;
+#X obj 652 108 pack f 58;
+#X obj 715 114 pack f 59;
+#X obj 754 144 pack f 60;
+#X obj 803 167 pack f 61;
+#X obj 873 198 pack f 62;
+#X obj 901 231 pack f 63;
+#X obj 921 278 pack f 64;
+#X obj 8 412 pack f 66;
+#X obj 74 413 pack f 67;
+#X obj 140 413 pack f 68;
+#X obj 186 459 pack f 69;
+#X obj 239 423 pack f 70;
+#X obj 294 448 pack f 71;
+#X obj 343 422 pack f 72;
+#X obj 401 448 pack f 73;
+#X obj 451 419 pack f 74;
+#X obj 501 441 pack f 75;
+#X obj 551 416 pack f 76;
+#X obj 567 468 pack f 77;
+#X obj 651 411 pack f 78;
+#X obj 696 457 pack f 79;
+#X obj 750 421 pack f 80;
+#X obj 804 446 pack f 81;
+#X obj 854 420 pack f 82;
+#X obj 912 446 pack f 83;
+#X obj 962 417 pack f 84;
+#X obj 983 297 pack f 65;
+#X connect 0 0 38 0;
+#X connect 1 0 39 0;
+#X connect 2 0 40 0;
+#X connect 3 0 41 0;
+#X connect 4 0 42 0;
+#X connect 5 0 43 0;
+#X connect 6 0 44 0;
+#X connect 7 0 45 0;
+#X connect 8 0 46 0;
+#X connect 9 0 48 0;
+#X connect 10 0 49 0;
+#X connect 11 0 50 0;
+#X connect 12 0 51 0;
+#X connect 13 0 52 0;
+#X connect 14 0 53 0;
+#X connect 15 0 54 0;
+#X connect 16 0 74 0;
+#X connect 17 0 55 0;
+#X connect 18 0 56 0;
+#X connect 19 0 57 0;
+#X connect 20 0 58 0;
+#X connect 21 0 59 0;
+#X connect 22 0 60 0;
+#X connect 23 0 61 0;
+#X connect 24 0 62 0;
+#X connect 25 0 63 0;
+#X connect 26 0 64 0;
+#X connect 27 0 65 0;
+#X connect 28 0 66 0;
+#X connect 29 0 67 0;
+#X connect 30 0 68 0;
+#X connect 31 0 69 0;
+#X connect 32 0 70 0;
+#X connect 33 0 71 0;
+#X connect 34 0 72 0;
+#X connect 35 0 73 0;
+#X connect 36 0 37 0;
+#X connect 37 0 47 0;
+#X connect 38 0 47 0;
+#X connect 39 0 47 0;
+#X connect 40 0 47 0;
+#X connect 41 0 47 0;
+#X connect 42 0 47 0;
+#X connect 43 0 47 0;
+#X connect 44 0 47 0;
+#X connect 45 0 47 0;
+#X connect 46 0 47 0;
+#X connect 48 0 47 0;
+#X connect 49 0 47 0;
+#X connect 50 0 47 0;
+#X connect 51 0 47 0;
+#X connect 52 0 47 0;
+#X connect 53 0 47 0;
+#X connect 54 0 47 0;
+#X connect 55 0 47 0;
+#X connect 56 0 47 0;
+#X connect 57 0 47 0;
+#X connect 58 0 47 0;
+#X connect 59 0 47 0;
+#X connect 60 0 47 0;
+#X connect 61 0 47 0;
+#X connect 62 0 47 0;
+#X connect 63 0 47 0;
+#X connect 64 0 47 0;
+#X connect 65 0 47 0;
+#X connect 66 0 47 0;
+#X connect 67 0 47 0;
+#X connect 68 0 47 0;
+#X connect 69 0 47 0;
+#X connect 70 0 47 0;
+#X connect 71 0 47 0;
+#X connect 72 0 47 0;
+#X connect 73 0 47 0;
+#X connect 74 0 47 0;
+#X restore 607 413 pd mouse_receives;
+#X obj 329 363 swap;
+#N canvas 673 209 355 563 keys 0;
+#X obj 142 39 key;
+#X obj 213 46 keyup;
+#X msg 122 102 1 \$1;
+#X msg 220 104 0 \$1;
+#X obj 42 461 outlet;
+#X connect 0 0 2 0;
+#X connect 1 0 3 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X restore 329 175 pd keys;
+#X obj 95 16 cnv 15 20 80 empty empty empty 20 12 0 14 -224695 -66577
+0;
+#X obj 118 16 cnv 15 20 80 empty empty empty 20 12 0 14 -224695 -66577
+0;
+#X obj 141 16 cnv 15 20 80 empty empty empty 20 12 0 14 -224695 -66577
+0;
+#X obj 3 16 cnv 15 20 80 empty yellow empty 20 12 0 14 -224695 -224695
+0;
+#X obj 26 16 cnv 15 20 80 empty empty empty 20 12 0 14 -224695 -66577
+0;
+#X obj 49 16 cnv 15 20 80 empty empty empty 20 12 0 14 -224695 -66577
+0;
+#X obj 72 16 cnv 15 20 80 empty empty empty 20 12 0 14 -224695 -66577
+0;
+#X obj 16 16 cnv 14 14 55 empty empty empty 20 12 0 14 -1 -66577 0
+;
+#X obj 42 16 cnv 14 14 55 empty empty empty 20 12 0 14 -1 -66577 0
+;
+#X obj 85 16 cnv 14 14 55 empty empty empty 20 12 0 14 -1 -66577 0
+;
+#X obj 109 16 cnv 14 14 55 empty empty empty 20 12 0 14 -1 -66577 0
+;
+#X obj 134 16 cnv 14 14 55 empty empty empty 20 12 0 14 -1 -66577 0
+;
+#X obj 7 78 tgl 12 0 \$0s48 \$0r48mk empty 20 8 0 8 -262144 -1 -1 0
+127;
+#X obj 17 57 tgl 12 0 \$0s49 \$0r49mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 30 78 tgl 12 0 \$0s50 \$0r50mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 43 57 tgl 12 0 \$0s51 \$0r51mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 53 78 tgl 12 0 \$0s52 \$0r52mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 76 78 tgl 12 0 \$0s53 \$0r53mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 99 78 tgl 12 0 \$0s55 \$0r55mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 122 78 tgl 12 0 \$0s57 \$0r57mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 86 57 tgl 12 0 \$0s54 \$0r54mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 110 57 tgl 12 0 \$0s56 \$0r56mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 135 57 tgl 12 0 \$0s58 \$0r58mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 145 78 tgl 12 0 \$0s59 \$0r59mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 256 36 cnv 15 20 60 empty empty empty 20 12 0 14 -224695 -66577
+0;
+#X obj 279 36 cnv 15 20 60 empty empty empty 20 12 0 14 -224695 -66577
+0;
+#X obj 302 36 cnv 15 20 60 empty empty empty 20 12 0 14 -224695 -66577
+0;
+#X obj 164 36 cnv 15 20 60 empty empty empty 20 12 0 14 -224695 -66577
+0;
+#X obj 187 36 cnv 15 20 60 empty empty empty 20 12 0 14 -224695 -66577
+0;
+#X obj 211 36 cnv 15 20 60 empty empty empty 20 12 0 14 -224695 -66577
+0;
+#X obj 233 36 cnv 15 20 60 empty empty empty 20 12 0 14 -224695 -66577
+0;
+#X obj 177 36 cnv 14 14 35 empty empty empty 20 12 0 14 -1 -66577 0
+;
+#X obj 203 36 cnv 14 14 35 empty empty empty 20 12 0 14 -1 -66577 0
+;
+#X obj 246 36 cnv 14 14 35 empty empty empty 20 12 0 14 -1 -66577 0
+;
+#X obj 270 36 cnv 14 14 35 empty empty empty 20 12 0 14 -1 -66577 0
+;
+#X obj 295 36 cnv 14 14 35 empty empty empty 20 12 0 14 -1 -66577 0
+;
+#X obj 168 78 tgl 12 0 \$0s60 \$0r60mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 178 57 tgl 12 0 \$0s61 \$0r61mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 191 78 tgl 12 0 \$0s62 \$0r62mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 204 57 tgl 12 0 \$0s63 \$0r63mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 214 78 tgl 12 0 \$0s64 \$0r64mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 237 78 tgl 12 0 \$0s65 \$0r65mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 260 78 tgl 12 0 \$0s67 \$0r67mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 283 78 tgl 12 0 \$0s69 \$0r69mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 247 57 tgl 12 0 \$0s66 \$0r66mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 271 57 tgl 12 0 \$0s68 \$0r68mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 296 57 tgl 12 0 \$0s70 \$0r70mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 306 78 tgl 12 0 \$0s71 \$0r71mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 325 36 cnv 15 20 60 empty empty empty 20 12 0 14 -224695 -66577
+0;
+#X obj 348 36 cnv 15 20 60 empty empty empty 20 12 0 14 -224695 -66577
+0;
+#X obj 371 36 cnv 15 20 60 empty empty empty 20 12 0 14 -224695 -66577
+0;
+#X obj 338 36 cnv 14 14 35 empty empty empty 20 12 0 14 -1 -66577 0
+;
+#X obj 364 36 cnv 14 14 35 empty empty empty 20 12 0 14 -1 -66577 0
+;
+#X obj 329 78 tgl 12 0 \$0s72 \$0r72mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 339 57 tgl 12 0 \$0s73 \$0r73mk empty 20 8 0 8 -262144 -1 -1
+0 1;
+#X obj 352 78 tgl 12 0 \$0s74 \$0r74mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 365 57 tgl 12 0 \$0s75 \$0r75mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 375 78 tgl 12 0 \$0s76 \$0r76mk empty 20 8 0 8 -262144 -1 -1
+0 127;
+#X obj 424 698 outlet;
+#X obj 343 13 bng 12 250 50 0 empty empty Panic 15 6 0 8 -258699 -1
+-1;
+#X obj 930 180 t b b;
+#X obj 929 249 + 47;
+#X obj 383 231 spigot \$1;
+#X obj 281 13 tgl 12 0 empty empty Listen 15 6 0 8 -262144 -1 -1 1
+1;
+#X msg 1108 342 \; \$1 set 0;
+#X obj 450 570 r \$0output;
+#X obj 835 318 s \$0output;
+#X msg 834 294 \$1 0;
+#X obj 933 268 t f f;
+#X obj 491 726 tabwrite \$0states;
+#X obj 432 652 t l l l;
+#X obj 497 681 swap;
+#X obj 891 56 table \$0states 77;
+#X obj 947 290 tabread \$0states;
+#X obj 957 311 sel 1;
+#X obj 1007 317 f;
+#X obj 1006 346 t f f;
+#X obj 490 702 > 0;
+#X obj 924 226 tof/iterate;
+#X obj 285 591 zexy/makesymbol \$0r%smk;
+#X obj 1106 309 zexy/makesymbol \$0r%smk;
+#X obj 468 102 f \$0;
+#X msg 469 131 \; \$1keys 44 60 0 62 64 75 0 61 63 0 66 68 70 0 73
+0 63 0 78 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
+77 0 79 0 0 0 0 55 52 51 64 0 54 56 72 58 0 61 59 57 74 76 60 65 49
+67 71 53 62 50 69 48 60 0 62 64 75 0 61 63 0 66 68 70 0 73 0 63 0 78
+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 77 0 79 0
+0 0 0 55 52 51 64 0 54 56 72 58 0 61 59 57 74 76 60 65 49 67 71 53
+62 50 69 48;
+#X obj 465 74 loadbang;
+#X obj 418 102 f \$1;
+#X msg 918 199 30;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 1 8 0;
+#X connect 2 1 85 0;
+#X connect 3 0 1 1;
+#X connect 4 0 75 0;
+#X connect 7 0 9 0;
+#X connect 8 0 94 0;
+#X connect 8 1 7 1;
+#X connect 10 0 11 0;
+#X connect 10 1 11 1;
+#X connect 11 0 85 0;
+#X connect 12 0 10 0;
+#X connect 13 0 0 0;
+#X connect 13 1 3 0;
+#X connect 14 0 77 0;
+#X connect 74 0 4 0;
+#X connect 75 0 100 0;
+#X connect 76 0 83 0;
+#X connect 77 0 13 0;
+#X connect 78 0 77 1;
+#X connect 80 0 85 0;
+#X connect 82 0 81 0;
+#X connect 83 0 88 0;
+#X connect 83 1 90 1;
+#X connect 85 0 73 0;
+#X connect 85 2 86 0;
+#X connect 86 0 92 0;
+#X connect 86 1 84 1;
+#X connect 88 0 89 0;
+#X connect 89 0 90 0;
+#X connect 90 0 91 0;
+#X connect 91 0 82 0;
+#X connect 91 1 95 0;
+#X connect 92 0 84 0;
+#X connect 93 0 76 0;
+#X connect 94 0 7 0;
+#X connect 95 0 79 0;
+#X connect 96 0 97 0;
+#X connect 98 0 96 0;
+#X connect 98 0 99 0;
+#X connect 99 0 78 0;
+#X connect 100 0 93 0;
+#X coords 0 -1 1 1 394 100 1 0 0;
diff --git a/pitchShift~-help.pd b/pitchShift~-help.pd
new file mode 100644
index 0000000..a815edd
--- /dev/null
+++ b/pitchShift~-help.pd
@@ -0,0 +1,29 @@
+#N canvas 417 57 407 261 10;
+#X obj 9 157 mtl/out~;
+#X text 5 15 tags: fx~;
+#X obj 205 133 nbx 5 14 -1e+37 1e+37 0 0 \$0/pishi/transpose \$0/pishi/transpose_
+/pishi/transpose 48 7 0 8 -262144 -1 -1 25 256;
+#X obj 205 88 tgl 15 0 \$0/pishi/switch \$0/pishi/switch_ /pishi/switch
+17 7 0 8 -262144 -1 -1 0 1;
+#X obj 8 61 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#N canvas 367 242 582 409 loop_sample 0;
+#X obj 47 313 outlet~;
+#X obj 43 9 inlet;
+#X obj 193 319 outlet~;
+#X msg 47 163 panel;
+#X obj 47 200 mtl/player~ 1;
+#X connect 1 0 3 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 4 0 2 0;
+#X restore 8 97 pd loop_sample;
+#X obj 205 109 tgl 15 0 \$0/pishi/method \$0/pishi/method_ /pishi/method
+17 7 0 8 -262144 -1 -1 1 1;
+#X obj 8 129 mtl/pitchShift~ /id pishi;
+#X text 5 -2 Description: pitchshifter with 2 methods.;
+#X connect 4 0 5 0;
+#X connect 5 0 7 0;
+#X connect 5 1 7 1;
+#X connect 7 0 0 0;
+#X connect 7 1 0 1;
diff --git a/pitchShift~.pd b/pitchShift~.pd
new file mode 100644
index 0000000..ae2091f
--- /dev/null
+++ b/pitchShift~.pd
@@ -0,0 +1,770 @@
+#N canvas 656 399 678 298 10;
+#N canvas 449 458 721 323 processing 0;
+#N canvas 0 110 466 295 hann-window 0;
+#X obj 288 130 osc~;
+#X obj 288 155 *~ -0.5;
+#X obj 288 179 +~ 0.5;
+#X obj 26 118 samplerate~;
+#X obj 26 142 /;
+#X msg 161 71 resize \$1;
+#X msg 292 95 0;
+#X obj 240 96 t f b;
+#X obj 26 94 t b f f;
+#X text 22 8 calculate Hann window table (variable window size) and
+constants window-hz (fundamental frequency of analysis).;
+#X obj 241 212 tabwrite~ \$0.hann;
+#X obj 26 67 r \$0.window.size;
+#X obj 26 166 s \$0.window.hz;
+#X obj 161 95 s \$0.hann;
+#X obj 240 70 r \$0.window.hz;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 10 0;
+#X connect 3 0 4 0;
+#X connect 4 0 12 0;
+#X connect 5 0 13 0;
+#X connect 6 0 0 1;
+#X connect 7 0 0 0;
+#X connect 7 1 6 0;
+#X connect 7 1 10 0;
+#X connect 8 0 3 0;
+#X connect 8 1 4 1;
+#X connect 8 2 5 0;
+#X connect 11 0 8 0;
+#X connect 14 0 7 0;
+#X restore 307 277 pd hann-window;
+#X obj 16 15 inlet~;
+#X obj 19 238 outlet~;
+#X obj 309 27 inlet;
+#X obj 306 160 table \$0.prev.imag.l 4096;
+#X obj 306 179 table \$0.prev.real.l 4096;
+#X obj 306 198 table \$0.prev.imag.r 4096;
+#X obj 306 217 table \$0.prev.real.r 4096;
+#X obj 306 236 table \$0.hann;
+#X msg 511 64 2048;
+#X obj 511 42 loadbang;
+#N canvas 41 57 750 770 fft.analysis.l 0;
+#X obj 51 477 *~;
+#X obj 18 477 *~;
+#X obj 18 499 -~;
+#X obj 167 475 *~;
+#X obj 136 475 *~;
+#X obj 136 497 +~;
+#X obj 109 193 *~;
+#X obj 78 193 *~;
+#X obj 50 193 *~;
+#X obj 19 193 *~;
+#X obj 19 218 +~;
+#X obj 127 379 *~;
+#X obj 20 622 *~;
+#X obj 236 175 rfft~;
+#X obj 108 161 rfft~;
+#X obj 19 564 rifft~;
+#X obj 21 646 outlet~;
+#X obj 97 379 *~;
+#X obj 97 401 +~;
+#X obj 124 218 -~;
+#X obj 18 431 *~;
+#X obj 51 432 *~;
+#X obj 21 728 block~;
+#X obj 19 349 +~ 1e-15;
+#X obj 19 598 *~;
+#X obj 127 643 expr 2/(3*$f1);
+#X msg 21 703 set \$1 4;
+#X obj 97 425 q8_rsqrt~;
+#X obj 121 69 *~;
+#X obj 89 69 *~;
+#X obj 89 91 +~;
+#X obj 159 94 q8_rsqrt~;
+#X obj 159 71 +~ 1e-20;
+#X obj 73 119 *~;
+#X obj 19 118 *~;
+#X obj 29 245 lrshift~ 1;
+#X obj 24 269 lrshift~ -1;
+#X obj 141 245 lrshift~ 1;
+#X obj 133 269 lrshift~ -1;
+#X obj 19 325 +~;
+#X obj 125 331 +~;
+#N canvas 0 0 554 671 read-windows 0;
+#X obj 18 358 line~;
+#X obj 16 523 outlet~;
+#X obj 125 531 outlet~;
+#X text 220 313 "back" window 1/4 cycle behind "front" one;
+#X obj 18 266 pack f f;
+#X obj 31 143 t b f;
+#X obj 31 184 -;
+#X obj 90 145 *;
+#X obj 90 114 - 1;
+#X obj 90 57 mtof;
+#X obj 90 77 / 440;
+#X obj 90 38 + 69;
+#X obj 353 123 samplerate~;
+#X obj 328 102 t f b;
+#X obj 328 141 /;
+#X obj 328 163 * 1000;
+#X text 376 163 window size (ms);
+#X obj 18 207 f;
+#X obj 16 492 *~;
+#X obj 124 503 *~;
+#X obj 18 75 bang~;
+#X obj 31 164 100;
+#X obj 197 286 *;
+#X obj 206 263 t b f;
+#X text 235 288 stretched window size (ms);
+#X obj 220 210 / 4;
+#X text 252 207 computation time for an overlap of 4;
+#X obj 18 230 / 4;
+#X obj 71 229 / 4;
+#X obj 17 393 +~;
+#X obj 193 310 / 4;
+#X obj 135 369 / 4;
+#X text 47 395 '+' since a bigger value in vd~ means 'earlier'.;
+#X text 114 110 subtract speed of read-out \, when;
+#X text 114 122 delay-time is static;
+#X text 134 37 convert cents of halftones to read-out speed;
+#X text 41 229 *);
+#X text 93 229 *);
+#X text 162 367 *);
+#X text 67 336 *);
+#X obj 18 287 t l b;
+#X obj 43 309 100;
+#X obj 43 333 / 4;
+#X text 57 165 initial delay (ms);
+#X text 71 307 initial delay (ms);
+#X text 21 556 *);
+#X text 24 572 it seems that if a time is specified in ms instead of
+samples \, the value has to be divided by the overlap factor (4 in
+this case) in order for the vd~ to read out the desired amount of samples.
+i'm still unsure what the reason for this might be.;
+#X obj 90 -6 r \$0.transpo;
+#X obj 328 81 r \$0.window.size;
+#X obj 164 468 tabreceive~ \$0.hann;
+#X obj 16 441 vd~ \$0.input.l;
+#X obj 123 443 vd~ \$0.input.l;
+#X obj 88 195 r \$0.latency;
+#X obj 102 274 r \$0.latency;
+#X connect 0 0 29 0;
+#X connect 0 0 51 0;
+#X connect 4 0 40 0;
+#X connect 5 0 21 0;
+#X connect 5 1 6 1;
+#X connect 6 0 17 1;
+#X connect 7 0 5 0;
+#X connect 8 0 7 0;
+#X connect 9 0 10 0;
+#X connect 10 0 8 0;
+#X connect 10 0 22 0;
+#X connect 11 0 9 0;
+#X connect 12 0 14 1;
+#X connect 13 0 14 0;
+#X connect 13 1 12 0;
+#X connect 14 0 15 0;
+#X connect 15 0 7 1;
+#X connect 15 0 23 0;
+#X connect 15 0 25 0;
+#X connect 17 0 27 0;
+#X connect 18 0 1 0;
+#X connect 19 0 2 0;
+#X connect 20 0 17 0;
+#X connect 21 0 6 0;
+#X connect 22 0 30 0;
+#X connect 23 0 22 0;
+#X connect 23 1 22 1;
+#X connect 25 0 28 0;
+#X connect 27 0 4 0;
+#X connect 28 0 4 1;
+#X connect 29 0 50 0;
+#X connect 30 0 31 0;
+#X connect 31 0 29 1;
+#X connect 40 0 0 0;
+#X connect 40 1 41 0;
+#X connect 41 0 42 0;
+#X connect 42 0 0 0;
+#X connect 47 0 11 0;
+#X connect 48 0 13 0;
+#X connect 49 0 19 1;
+#X connect 49 0 18 1;
+#X connect 50 0 18 0;
+#X connect 51 0 19 0;
+#X connect 52 0 21 1;
+#X connect 53 0 41 1;
+#X restore 442 106 pd read-windows;
+#X text 318 304 the left part is taken from miller puckette's audio
+example I07.phase.vocoder.pd from the doc.;
+#X obj 52 598 tabreceive~ \$0.hann;
+#X obj 127 622 r \$0.window.size;
+#X obj 35 300 *~ 1;
+#X obj 159 312 *~ 1;
+#X obj 21 679 r \$0.window.size;
+#X obj 20 8 tabreceive~ \$0.prev.real.l;
+#X obj 73 29 tabreceive~ \$0.prev.imag.l;
+#X obj 137 543 tabsend~ \$0.prev.imag.l;
+#X obj 136 567 tabsend~ \$0.prev.real.l;
+#X connect 0 0 2 1;
+#X connect 1 0 2 0;
+#X connect 2 0 15 0;
+#X connect 2 0 51 0;
+#X connect 3 0 5 1;
+#X connect 4 0 5 0;
+#X connect 5 0 15 1;
+#X connect 5 0 50 0;
+#X connect 6 0 19 1;
+#X connect 7 0 19 0;
+#X connect 8 0 10 1;
+#X connect 9 0 10 0;
+#X connect 10 0 36 0;
+#X connect 10 0 35 0;
+#X connect 10 0 39 0;
+#X connect 11 0 18 1;
+#X connect 12 0 16 0;
+#X connect 13 0 1 1;
+#X connect 13 0 3 1;
+#X connect 13 1 0 1;
+#X connect 13 1 4 1;
+#X connect 14 0 9 1;
+#X connect 14 0 7 1;
+#X connect 14 1 6 1;
+#X connect 14 1 8 1;
+#X connect 15 0 24 0;
+#X connect 17 0 18 0;
+#X connect 18 0 27 0;
+#X connect 19 0 37 0;
+#X connect 19 0 38 0;
+#X connect 19 0 40 0;
+#X connect 20 0 1 0;
+#X connect 20 0 4 0;
+#X connect 21 0 0 0;
+#X connect 21 0 3 0;
+#X connect 23 0 17 1;
+#X connect 23 0 17 0;
+#X connect 23 0 20 0;
+#X connect 24 0 12 0;
+#X connect 25 0 12 1;
+#X connect 26 0 22 0;
+#X connect 27 0 20 1;
+#X connect 27 0 21 1;
+#X connect 28 0 30 1;
+#X connect 29 0 30 0;
+#X connect 30 0 32 0;
+#X connect 31 0 33 1;
+#X connect 31 0 34 1;
+#X connect 32 0 31 0;
+#X connect 33 0 8 0;
+#X connect 33 0 7 0;
+#X connect 34 0 9 0;
+#X connect 34 0 6 0;
+#X connect 35 0 45 0;
+#X connect 36 0 45 0;
+#X connect 37 0 46 0;
+#X connect 38 0 46 0;
+#X connect 39 0 23 0;
+#X connect 40 0 11 0;
+#X connect 40 0 11 1;
+#X connect 40 0 21 0;
+#X connect 41 0 14 0;
+#X connect 41 1 13 0;
+#X connect 43 0 24 1;
+#X connect 44 0 25 0;
+#X connect 45 0 39 1;
+#X connect 46 0 40 1;
+#X connect 47 0 26 0;
+#X connect 48 0 29 1;
+#X connect 48 0 29 0;
+#X connect 48 0 34 0;
+#X connect 49 0 28 1;
+#X connect 49 0 28 0;
+#X connect 49 0 33 0;
+#X restore 18 142 pd fft.analysis.l;
+#X obj 309 122 s \$0.transpo;
+#X obj 511 87 s \$0.window.size;
+#X obj 77 17 inlet~;
+#X obj 98 239 outlet~;
+#X obj 16 96 delwrite~ \$0.input.l 1000;
+#X obj 76 67 delwrite~ \$0.input.r 1000;
+#N canvas 40 20 750 770 fft.analysis.r 0;
+#X obj 51 477 *~;
+#X obj 18 477 *~;
+#X obj 18 499 -~;
+#X obj 167 475 *~;
+#X obj 136 475 *~;
+#X obj 136 497 +~;
+#X obj 109 193 *~;
+#X obj 78 193 *~;
+#X obj 50 193 *~;
+#X obj 19 193 *~;
+#X obj 19 218 +~;
+#X obj 127 379 *~;
+#X obj 20 622 *~;
+#X obj 236 175 rfft~;
+#X obj 108 161 rfft~;
+#X obj 19 564 rifft~;
+#X obj 21 646 outlet~;
+#X obj 97 379 *~;
+#X obj 97 401 +~;
+#X obj 124 218 -~;
+#X obj 18 431 *~;
+#X obj 51 432 *~;
+#X obj 21 728 block~;
+#X obj 19 349 +~ 1e-15;
+#X obj 19 598 *~;
+#X obj 127 643 expr 2/(3*$f1);
+#X msg 21 703 set \$1 4;
+#X obj 97 425 q8_rsqrt~;
+#X obj 121 69 *~;
+#X obj 89 69 *~;
+#X obj 89 91 +~;
+#X obj 159 94 q8_rsqrt~;
+#X obj 159 71 +~ 1e-20;
+#X obj 73 119 *~;
+#X obj 19 118 *~;
+#X obj 29 245 lrshift~ 1;
+#X obj 24 269 lrshift~ -1;
+#X obj 141 245 lrshift~ 1;
+#X obj 133 269 lrshift~ -1;
+#X obj 19 325 +~;
+#X obj 125 331 +~;
+#N canvas 139 105 510 684 read-windows 0;
+#X obj 18 358 line~;
+#X obj 16 523 outlet~;
+#X obj 125 531 outlet~;
+#X text 220 313 "back" window 1/4 cycle behind "front" one;
+#X obj 18 266 pack f f;
+#X obj 31 143 t b f;
+#X obj 31 184 -;
+#X obj 90 145 *;
+#X obj 90 114 - 1;
+#X obj 90 57 mtof;
+#X obj 90 77 / 440;
+#X obj 90 38 + 69;
+#X obj 353 123 samplerate~;
+#X obj 328 102 t f b;
+#X obj 328 141 /;
+#X obj 328 163 * 1000;
+#X text 376 163 window size (ms);
+#X obj 18 207 f;
+#X obj 16 492 *~;
+#X obj 124 503 *~;
+#X obj 18 75 bang~;
+#X obj 31 164 100;
+#X obj 197 286 *;
+#X obj 206 263 t b f;
+#X text 235 288 stretched window size (ms);
+#X obj 220 210 / 4;
+#X text 252 207 computation time for an overlap of 4;
+#X obj 18 230 / 4;
+#X obj 71 229 / 4;
+#X obj 17 393 +~;
+#X obj 193 310 / 4;
+#X obj 135 369 / 4;
+#X text 47 395 '+' since a bigger value in vd~ means 'earlier'.;
+#X text 114 110 subtract speed of read-out \, when;
+#X text 114 122 delay-time is static;
+#X text 134 37 convert cents of halftones to read-out speed;
+#X text 41 229 *);
+#X text 93 229 *);
+#X text 162 367 *);
+#X text 67 336 *);
+#X obj 18 287 t l b;
+#X obj 43 309 100;
+#X obj 43 333 / 4;
+#X text 57 165 initial delay (ms);
+#X text 71 307 initial delay (ms);
+#X text 21 556 *);
+#X text 24 572 it seems that if a time is specified in ms instead of
+samples \, the value has to be divided by the overlap factor (4 in
+this case) in order for the vd~ to read out the desired amount of samples.
+i'm still unsure what the reason for this might be.;
+#X obj 90 -6 r \$0.transpo;
+#X obj 328 81 r \$0.window.size;
+#X obj 164 468 tabreceive~ \$0.hann;
+#X obj 16 441 vd~ \$0.input.r;
+#X obj 123 443 vd~ \$0.input.r;
+#X obj 88 195 r \$0.latency;
+#X obj 102 274 r \$0.latency;
+#X connect 0 0 29 0;
+#X connect 0 0 51 0;
+#X connect 4 0 40 0;
+#X connect 5 0 21 0;
+#X connect 5 1 6 1;
+#X connect 6 0 17 1;
+#X connect 7 0 5 0;
+#X connect 8 0 7 0;
+#X connect 9 0 10 0;
+#X connect 10 0 8 0;
+#X connect 10 0 22 0;
+#X connect 11 0 9 0;
+#X connect 12 0 14 1;
+#X connect 13 0 14 0;
+#X connect 13 1 12 0;
+#X connect 14 0 15 0;
+#X connect 15 0 7 1;
+#X connect 15 0 23 0;
+#X connect 15 0 25 0;
+#X connect 17 0 27 0;
+#X connect 18 0 1 0;
+#X connect 19 0 2 0;
+#X connect 20 0 17 0;
+#X connect 21 0 6 0;
+#X connect 22 0 30 0;
+#X connect 23 0 22 0;
+#X connect 23 1 22 1;
+#X connect 25 0 28 0;
+#X connect 27 0 4 0;
+#X connect 28 0 4 1;
+#X connect 29 0 50 0;
+#X connect 30 0 31 0;
+#X connect 31 0 29 1;
+#X connect 40 0 0 0;
+#X connect 40 1 41 0;
+#X connect 41 0 42 0;
+#X connect 42 0 0 0;
+#X connect 47 0 11 0;
+#X connect 48 0 13 0;
+#X connect 49 0 19 1;
+#X connect 49 0 18 1;
+#X connect 50 0 18 0;
+#X connect 51 0 19 0;
+#X connect 52 0 21 1;
+#X connect 53 0 41 1;
+#X restore 442 106 pd read-windows;
+#X text 318 304 the left part is taken from miller puckette's audio
+example I07.phase.vocoder.pd from the doc.;
+#X obj 52 598 tabreceive~ \$0.hann;
+#X obj 127 622 r \$0.window.size;
+#X obj 35 300 *~ 1;
+#X obj 159 312 *~ 1;
+#X obj 21 679 r \$0.window.size;
+#X obj 20 8 tabreceive~ \$0.prev.real.r;
+#X obj 73 29 tabreceive~ \$0.prev.imag.r;
+#X obj 137 543 tabsend~ \$0.prev.imag.r;
+#X obj 136 567 tabsend~ \$0.prev.real.r;
+#X connect 0 0 2 1;
+#X connect 1 0 2 0;
+#X connect 2 0 15 0;
+#X connect 2 0 51 0;
+#X connect 3 0 5 1;
+#X connect 4 0 5 0;
+#X connect 5 0 15 1;
+#X connect 5 0 50 0;
+#X connect 6 0 19 1;
+#X connect 7 0 19 0;
+#X connect 8 0 10 1;
+#X connect 9 0 10 0;
+#X connect 10 0 36 0;
+#X connect 10 0 35 0;
+#X connect 10 0 39 0;
+#X connect 11 0 18 1;
+#X connect 12 0 16 0;
+#X connect 13 0 1 1;
+#X connect 13 0 3 1;
+#X connect 13 1 0 1;
+#X connect 13 1 4 1;
+#X connect 14 0 9 1;
+#X connect 14 0 7 1;
+#X connect 14 1 6 1;
+#X connect 14 1 8 1;
+#X connect 15 0 24 0;
+#X connect 17 0 18 0;
+#X connect 18 0 27 0;
+#X connect 19 0 37 0;
+#X connect 19 0 38 0;
+#X connect 19 0 40 0;
+#X connect 20 0 1 0;
+#X connect 20 0 4 0;
+#X connect 21 0 0 0;
+#X connect 21 0 3 0;
+#X connect 23 0 17 1;
+#X connect 23 0 17 0;
+#X connect 23 0 20 0;
+#X connect 24 0 12 0;
+#X connect 25 0 12 1;
+#X connect 26 0 22 0;
+#X connect 27 0 20 1;
+#X connect 27 0 21 1;
+#X connect 28 0 30 1;
+#X connect 29 0 30 0;
+#X connect 30 0 32 0;
+#X connect 31 0 33 1;
+#X connect 31 0 34 1;
+#X connect 32 0 31 0;
+#X connect 33 0 8 0;
+#X connect 33 0 7 0;
+#X connect 34 0 9 0;
+#X connect 34 0 6 0;
+#X connect 35 0 45 0;
+#X connect 36 0 45 0;
+#X connect 37 0 46 0;
+#X connect 38 0 46 0;
+#X connect 39 0 23 0;
+#X connect 40 0 11 0;
+#X connect 40 0 11 1;
+#X connect 40 0 21 0;
+#X connect 41 0 14 0;
+#X connect 41 1 13 0;
+#X connect 43 0 24 1;
+#X connect 44 0 25 0;
+#X connect 45 0 39 1;
+#X connect 46 0 40 1;
+#X connect 47 0 26 0;
+#X connect 48 0 29 1;
+#X connect 48 0 29 0;
+#X connect 48 0 34 0;
+#X connect 49 0 28 1;
+#X connect 49 0 28 0;
+#X connect 49 0 33 0;
+#X restore 97 169 pd fft.analysis.r;
+#X obj 339 99 s \$0.latency;
+#X obj 309 56 t a a;
+#N canvas 998 307 217 230 latency 0;
+#X obj 19 22 inlet;
+#X obj 19 194 outlet;
+#X obj 19 48 / 12;
+#X obj 19 95 pow;
+#X msg 19 72 2 \$1;
+#X obj 19 117 max 1;
+#X obj 119 73 samplerate~;
+#X obj 119 93 * 0.001;
+#X obj 89 29 r \$0.window.size;
+#X obj 89 53 t a b;
+#X obj 89 115 /;
+#X obj 19 161 *;
+#X connect 0 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 3 0;
+#X connect 5 0 11 0;
+#X connect 6 0 7 0;
+#X connect 7 0 10 1;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 9 1 6 0;
+#X connect 10 0 11 1;
+#X connect 11 0 1 0;
+#X restore 339 77 pd latency;
+#X obj 626 31 inlet;
+#X obj 634 63 switch~;
+#X connect 1 0 16 0;
+#X connect 3 0 20 0;
+#X connect 9 0 13 0;
+#X connect 10 0 9 0;
+#X connect 11 0 2 0;
+#X connect 14 0 17 0;
+#X connect 18 0 15 0;
+#X connect 20 0 12 0;
+#X connect 20 1 21 0;
+#X connect 21 0 19 0;
+#X connect 22 0 23 0;
+#X restore 139 141 pd processing;
+#X obj 71 25 inlet~;
+#X obj 153 31 inlet~;
+#X obj 70 277 outlet~;
+#X obj 128 278 outlet~;
+#X text 268 226 based on pd doc: I07.phase.vocoder.pd;
+#X text 267 244 adapted by: Roman Haefeli;
+#X text 267 266 version: 2008-03-05;
+#X obj 71 233 tof/crossfade~ 2;
+#X obj 548 43 inlet params;
+#X obj 548 89 print PARAM_NOTFOUND;
+#X obj 214 30 tof/param /transpose 0 /g nbx;
+#X obj 221 192 tof/param /switch 0 /g tgl;
+#X obj 221 213 != 0;
+#X msg 221 237 \$1 200;
+#X obj 221 259 line~;
+#N canvas 80 84 906 756 pitchshift 0;
+#X obj 94 420 *~;
+#X obj 202 351 line~;
+#X obj 202 325 pack 0 200;
+#X obj 29 204 exp;
+#X floatatom 29 230 0 0 0 0 - - -;
+#X obj 29 320 /;
+#X obj 156 250 * 0.001;
+#X obj 29 471 cos~;
+#X obj 29 498 *~;
+#X obj 29 527 +~;
+#X obj 116 378 wrap~;
+#X obj 261 421 *~;
+#X obj 198 481 cos~;
+#X obj 198 508 *~;
+#X obj 156 277 t b f;
+#X floatatom 29 346 0 0 0 0 - - -;
+#X obj 29 373 phasor~ 0;
+#X obj 116 351 +~ 0.5;
+#X obj 29 419 -~ 0.5;
+#X obj 29 445 *~ 0.5;
+#X obj 198 420 -~ 0.5;
+#X obj 198 453 *~ 0.5;
+#X obj 29 257 - 1;
+#X obj 29 178 * 0.05776;
+#X obj 29 283 * -1;
+#X text 78 123 <-- transposition;
+#X text 116 138 (halpn_lftones);
+#X text 96 238 speed;
+#X text 95 252 change;
+#X text 64 313 tape head;
+#X text 65 326 rotation speed;
+#X obj -131 115 inlet~;
+#X obj 28 607 outlet~;
+#X obj 29 122 inlet;
+#X obj 94 472 vd~ \$0delay1;
+#X obj 260 483 vd~ \$0delay1;
+#X obj 267 147 loadbang;
+#X obj 271 176 f 10;
+#X obj 271 204 clip 1 1e+07;
+#X msg 373 157 128;
+#X obj -131 147 delwrite~ \$0delay1 10;
+#X obj 646 51 inlet;
+#X obj 654 83 switch~;
+#X connect 0 0 34 0;
+#X connect 1 0 0 1;
+#X connect 1 0 11 1;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 22 0;
+#X connect 5 0 15 0;
+#X connect 6 0 14 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 9 0 32 0;
+#X connect 10 0 11 0;
+#X connect 10 0 20 0;
+#X connect 11 0 35 0;
+#X connect 12 0 13 0;
+#X connect 13 0 9 1;
+#X connect 14 0 5 0;
+#X connect 14 1 5 1;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X connect 16 0 18 0;
+#X connect 16 0 17 0;
+#X connect 17 0 10 0;
+#X connect 18 0 19 0;
+#X connect 19 0 7 0;
+#X connect 20 0 21 0;
+#X connect 21 0 12 0;
+#X connect 22 0 24 0;
+#X connect 23 0 3 0;
+#X connect 24 0 5 0;
+#X connect 31 0 40 0;
+#X connect 33 0 23 0;
+#X connect 34 0 8 1;
+#X connect 35 0 13 1;
+#X connect 36 0 37 0;
+#X connect 37 0 38 0;
+#X connect 38 0 2 0;
+#X connect 38 0 6 0;
+#X connect 39 0 38 0;
+#X connect 41 0 42 0;
+#X restore 238 140 pd pitchshift;
+#N canvas 313 84 906 756 pitchshift 0;
+#X obj 94 420 *~;
+#X obj 202 351 line~;
+#X obj 202 325 pack 0 200;
+#X obj 29 204 exp;
+#X floatatom 29 230 0 0 0 0 - - -;
+#X obj 29 320 /;
+#X obj 156 250 * 0.001;
+#X obj 29 471 cos~;
+#X obj 29 498 *~;
+#X obj 29 527 +~;
+#X obj 116 378 wrap~;
+#X obj 261 421 *~;
+#X obj 198 481 cos~;
+#X obj 198 508 *~;
+#X obj 156 277 t b f;
+#X floatatom 29 346 0 0 0 0 - - -;
+#X obj 29 373 phasor~ 0;
+#X obj 116 351 +~ 0.5;
+#X obj 29 419 -~ 0.5;
+#X obj 29 445 *~ 0.5;
+#X obj 198 420 -~ 0.5;
+#X obj 198 453 *~ 0.5;
+#X obj 29 257 - 1;
+#X obj 29 178 * 0.05776;
+#X obj 29 283 * -1;
+#X text 78 123 <-- transposition;
+#X text 116 138 (halpn_lftones);
+#X text 96 238 speed;
+#X text 95 252 change;
+#X text 64 313 tape head;
+#X text 65 326 rotation speed;
+#X obj -131 115 inlet~;
+#X obj 28 607 outlet~;
+#X obj 29 122 inlet;
+#X obj 267 147 loadbang;
+#X obj 271 176 f 10;
+#X obj 271 204 clip 1 1e+07;
+#X msg 373 157 128;
+#X obj 260 483 vd~ \$0delay2;
+#X obj 93 471 vd~ \$0delay2;
+#X obj -129 147 delwrite~ \$0delay2 10;
+#X obj 636 41 inlet;
+#X obj 644 73 switch~;
+#X connect 0 0 39 0;
+#X connect 1 0 0 1;
+#X connect 1 0 11 1;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 22 0;
+#X connect 5 0 15 0;
+#X connect 6 0 14 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 9 0 32 0;
+#X connect 10 0 11 0;
+#X connect 10 0 20 0;
+#X connect 11 0 38 0;
+#X connect 12 0 13 0;
+#X connect 13 0 9 1;
+#X connect 14 0 5 0;
+#X connect 14 1 5 1;
+#X connect 15 0 16 0;
+#X connect 16 0 0 0;
+#X connect 16 0 18 0;
+#X connect 16 0 17 0;
+#X connect 17 0 10 0;
+#X connect 18 0 19 0;
+#X connect 19 0 7 0;
+#X connect 20 0 21 0;
+#X connect 21 0 12 0;
+#X connect 22 0 24 0;
+#X connect 23 0 3 0;
+#X connect 24 0 5 0;
+#X connect 31 0 40 0;
+#X connect 33 0 23 0;
+#X connect 34 0 35 0;
+#X connect 35 0 36 0;
+#X connect 36 0 2 0;
+#X connect 36 0 6 0;
+#X connect 37 0 36 0;
+#X connect 38 0 13 1;
+#X connect 39 0 8 1;
+#X connect 41 0 42 0;
+#X restore 328 140 pd pitchshift;
+#X obj 313 64 tof/param /method 0 /g tgl;
+#X obj 313 85 == 0;
+#X obj 548 65 tof/param route;
+#X connect 0 0 8 2;
+#X connect 0 1 8 3;
+#X connect 1 0 0 0;
+#X connect 1 0 8 0;
+#X connect 1 0 16 0;
+#X connect 2 0 0 1;
+#X connect 2 0 8 1;
+#X connect 2 0 17 0;
+#X connect 8 0 3 0;
+#X connect 8 1 4 0;
+#X connect 9 0 20 0;
+#X connect 11 0 0 2;
+#X connect 11 0 16 1;
+#X connect 11 0 17 1;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 15 0 8 4;
+#X connect 16 0 8 2;
+#X connect 17 0 8 3;
+#X connect 18 0 19 0;
+#X connect 18 0 0 3;
+#X connect 19 0 16 2;
+#X connect 19 0 17 2;
+#X connect 20 0 10 0;
diff --git a/player~-help.pd b/player~-help.pd
new file mode 100644
index 0000000..557ec6a
--- /dev/null
+++ b/player~-help.pd
@@ -0,0 +1,75 @@
+#N canvas 570 214 919 638 10;
+#X floatatom 237 475 10 0 0 1 samples - -;
+#X obj 261 436 bng 15 250 50 0 empty empty stopped 0 -6 0 10 -262144
+-1 -1;
+#X msg 48 33 1;
+#X msg 92 73 2;
+#X msg 71 52 0;
+#X obj 30 15 bng 15 250 50 0 empty empty empty 0 -6 0 10 -262144 -1
+-1;
+#X text 52 12 Play at speed 1;
+#X text 77 29 Play at speed 1;
+#X text 102 48 Stop;
+#X text 120 74 Play at speed 2;
+#X text 207 526 Progress;
+#X text 590 158 Load a sound file;
+#X msg 192 263 set table;
+#X msg 136 140 1 0.5;
+#X text 206 167 Play at speed 1 from 3/4 of the table;
+#X text 179 134 Play at speed 1 from halfway;
+#X msg 159 169 1 0.75;
+#X obj 571 183 openpanel;
+#X obj 571 158 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 18 538 mtl/out~;
+#X msg 570 343 set \$1 \, bang;
+#X text 13 -23 tags: tables play~;
+#X obj 193 348 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 199 545 mtl/nbx~;
+#X text 212 344 Loop (stops looping when the end is reached);
+#X text 652 345 Sets the table and play it.;
+#X text 259 259 You can change the table with a set message;
+#X msg 103 96 -0.5;
+#X text 137 95 Play backwards at speed 0.5;
+#X msg 172 201 -1 0.5;
+#X text 219 202 Play backwards from 1/2 of the table;
+#X obj 118 397 mtl/player~ 1;
+#X msg 200 292 panel;
+#X text 132 118 ------------ offset ------------;
+#X text 26 -5 ------------ playback ------------;
+#X text 190 240 ------------ table/file management ------------;
+#X text 13 -38 Description: Plays tables and soundfiles.;
+#X obj 569 106 table \$0table;
+#X obj 571 209 list append \$0table;
+#X obj 570 263 soundfiler;
+#X msg 570 235 read -resize \$1 \$2;
+#X obj 570 291 b;
+#X obj 570 315 symbol \$0table;
+#X text 242 383 Arguments (in any order): The name of the an external
+table and the loop flag.;
+#X text 244 292 You can load a sound file in the internal table;
+#X connect 2 0 31 0;
+#X connect 3 0 31 0;
+#X connect 4 0 31 0;
+#X connect 5 0 31 0;
+#X connect 12 0 31 0;
+#X connect 13 0 31 0;
+#X connect 16 0 31 0;
+#X connect 17 0 38 0;
+#X connect 18 0 17 0;
+#X connect 20 0 31 0;
+#X connect 22 0 31 1;
+#X connect 27 0 31 0;
+#X connect 29 0 31 0;
+#X connect 31 0 19 0;
+#X connect 31 0 19 1;
+#X connect 31 1 23 0;
+#X connect 31 2 0 0;
+#X connect 31 3 1 0;
+#X connect 32 0 31 0;
+#X connect 38 0 40 0;
+#X connect 39 0 41 0;
+#X connect 40 0 39 0;
+#X connect 41 0 42 0;
+#X connect 42 0 20 0;
diff --git a/player~.pd b/player~.pd
new file mode 100644
index 0000000..47169d1
--- /dev/null
+++ b/player~.pd
@@ -0,0 +1,137 @@
+#N canvas 1028 25 1005 686 10;
+#X obj 23 -189 inlet speed;
+#X msg 381 -13 set \$1;
+#X obj 389 -82 symbol;
+#X obj 31 544 outlet~;
+#X obj 328 545 outlet~;
+#X obj 387 541 outlet size;
+#X obj 521 533 outlet done;
+#X obj 142 -35 sel 0;
+#X obj 34 515 *~;
+#X msg 130 475 \$1 5;
+#X msg 140 445 1;
+#X obj 188 527 spigot;
+#X obj 262 390 t b b;
+#X msg 260 456 1;
+#X obj 159 396 t b b;
+#X msg 179 448 0;
+#X msg 205 475 0;
+#X obj 115 -11 s \$0stop;
+#X obj 261 365 r \$0stop;
+#X msg 13 -6 1 0;
+#X msg 186 21 \$1 0;
+#X obj 44 102 unpack f f;
+#X obj 105 502 cyclone/Line~;
+#X obj 444 104 flatspace/arraysize;
+#X msg 444 76 set \$1 \, bang;
+#X obj 24 -62 route bang list float;
+#X obj 580 -21 iemlib/dollarg;
+#X obj 581 -62 loadbang;
+#X obj 555 207 table \$0t 3;
+#X obj 395 -51 t s s;
+#X obj 29 418 cyclone/wave~;
+#X obj 32 277 tof/phasorshot~;
+#X obj 231 228 ./smpToFreq;
+#X obj 30 232 *;
+#X msg 187 551 0;
+#X obj 816 -118 inlet loop;
+#X obj 298 266 spigot 1;
+#X obj 350 236 == 0;
+#X obj 459 405 t b b b;
+#X msg 252 316 0 0;
+#X obj 146 136 clip 0 1;
+#X obj 585 4 tof/listUnfold;
+#X obj 589 30 route symbol float;
+#X obj 595 121 f;
+#X obj 26 139 moses 0;
+#X obj 122 188 -;
+#X obj 118 213 abs;
+#X obj 15 160 t f b;
+#X obj 65 162 t f b;
+#X msg 107 159 0;
+#X msg 67 195 1;
+#X obj 24 -156 route set panel;
+#X obj 216 -228 openpanel;
+#X obj 216 -154 soundfiler;
+#X msg 216 -178 read -resize \$1 \$2;
+#X obj 216 -202 list append \$0t;
+#X obj 224 -68 t b s;
+#X obj 42 65 t a b b;
+#X obj 216 -125 b;
+#X obj 218 -94 symbol \$0t;
+#X connect 0 0 51 0;
+#X connect 1 0 30 0;
+#X connect 2 0 29 0;
+#X connect 7 0 17 0;
+#X connect 7 1 20 0;
+#X connect 8 0 3 0;
+#X connect 9 0 22 0;
+#X connect 10 0 9 0;
+#X connect 11 0 34 0;
+#X connect 12 0 15 0;
+#X connect 12 1 13 0;
+#X connect 13 0 11 1;
+#X connect 14 0 10 0;
+#X connect 14 1 16 0;
+#X connect 15 0 9 0;
+#X connect 16 0 11 1;
+#X connect 18 0 12 0;
+#X connect 19 0 57 0;
+#X connect 20 0 57 0;
+#X connect 21 0 44 0;
+#X connect 21 1 40 0;
+#X connect 22 0 8 1;
+#X connect 22 1 11 0;
+#X connect 23 0 5 0;
+#X connect 23 0 32 0;
+#X connect 24 0 23 0;
+#X connect 25 0 19 0;
+#X connect 25 1 57 0;
+#X connect 25 2 7 0;
+#X connect 26 0 41 0;
+#X connect 27 0 26 0;
+#X connect 29 0 1 0;
+#X connect 29 1 24 0;
+#X connect 30 0 8 0;
+#X connect 31 0 30 0;
+#X connect 31 0 4 0;
+#X connect 31 1 36 0;
+#X connect 31 2 36 0;
+#X connect 32 0 33 1;
+#X connect 33 0 31 0;
+#X connect 34 0 31 0;
+#X connect 35 0 43 0;
+#X connect 36 0 38 0;
+#X connect 37 0 36 1;
+#X connect 38 0 6 0;
+#X connect 38 2 39 0;
+#X connect 39 0 31 0;
+#X connect 40 0 45 1;
+#X connect 41 0 42 0;
+#X connect 42 0 2 0;
+#X connect 42 1 43 0;
+#X connect 43 0 37 0;
+#X connect 43 0 31 2;
+#X connect 44 0 47 0;
+#X connect 44 1 48 0;
+#X connect 45 0 46 0;
+#X connect 46 0 31 1;
+#X connect 47 0 33 0;
+#X connect 47 1 50 0;
+#X connect 48 0 33 0;
+#X connect 48 1 49 0;
+#X connect 49 0 45 0;
+#X connect 50 0 45 0;
+#X connect 51 0 2 0;
+#X connect 51 1 52 0;
+#X connect 51 2 25 0;
+#X connect 52 0 55 0;
+#X connect 53 0 58 0;
+#X connect 54 0 53 0;
+#X connect 55 0 54 0;
+#X connect 56 0 25 0;
+#X connect 56 1 2 0;
+#X connect 57 0 21 0;
+#X connect 57 1 14 0;
+#X connect 58 0 59 0;
+#X connect 59 0 56 0;
diff --git a/punch~-help.pd b/punch~-help.pd
new file mode 100644
index 0000000..7962326
--- /dev/null
+++ b/punch~-help.pd
@@ -0,0 +1,25 @@
+#N canvas 170 114 720 484 10;
+#X obj 121 105 *~ 0.2;
+#X obj 121 68 osc~ 60;
+#X text -20 11 Description: Boost the input signal to it's maximum
+amplitude while never clipping.;
+#X obj 181 68 osc~ 120;
+#X obj 181 105 *~ 0.05;
+#X obj 246 104 loadbang;
+#X msg 246 124 10;
+#X obj 10 178 cyclone/Scope~ 130 130 256 3 128 -1 1 0 0 0 0 102 255
+51 135 135 135 0;
+#X obj 152 178 cyclone/Scope~ 130 130 256 3 128 -1 1 0 0 0 0 102 255
+51 135 135 135 0;
+#X obj 151 149 mtl/punch~;
+#X floatatom 244 145 5 0 0 0 - - -;
+#X text -19 40 tags: mix~;
+#X connect 0 0 7 0;
+#X connect 0 0 9 0;
+#X connect 1 0 0 0;
+#X connect 3 0 4 0;
+#X connect 4 0 9 1;
+#X connect 5 0 6 0;
+#X connect 6 0 9 2;
+#X connect 9 0 8 0;
+#X connect 10 0 9 2;
diff --git a/punch~.pd b/punch~.pd
new file mode 100644
index 0000000..560bfe8
--- /dev/null
+++ b/punch~.pd
@@ -0,0 +1,25 @@
+#N canvas 56 298 464 314 10;
+#X obj 109 76 inlet~;
+#X obj 109 123 *~ 10;
+#X obj 324 59 inlet;
+#X text 365 59 punch power;
+#X obj 93 242 outlet~;
+#X text 46 27 NEEDS ZEXY;
+#X text 48 16 PUNCH BOOSTS THE AMPLITUDE NEVER EXCEEDING 1 or -1;
+#X obj 229 76 inlet~;
+#X obj 229 123 *~ 10;
+#X obj 213 242 outlet~;
+#X obj 301 146 tof/argument 1 10;
+#X obj 301 122 loadbang;
+#X obj 114 187 ./limit~;
+#X connect 0 0 1 0;
+#X connect 1 0 12 0;
+#X connect 2 0 1 1;
+#X connect 2 0 8 1;
+#X connect 7 0 8 0;
+#X connect 8 0 12 1;
+#X connect 10 0 1 1;
+#X connect 10 0 8 1;
+#X connect 11 0 10 0;
+#X connect 12 0 4 0;
+#X connect 12 1 9 0;
diff --git a/qtrack-help.pd b/qtrack-help.pd
new file mode 100644
index 0000000..141fe35
--- /dev/null
+++ b/qtrack-help.pd
@@ -0,0 +1,73 @@
+#N canvas 679 22 502 640 10;
+#X obj 90 205 cnv 15 100 100 empty empty empty 20 12 0 14 -258699 -66577
+0;
+#X obj 239 336 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X msg 239 223 record;
+#X msg 241 245 stop;
+#X msg 239 202 play;
+#X msg 241 265 print;
+#X msg 241 285 write chart.txt;
+#X msg 242 305 read chart.txt;
+#X msg 238 179 tempo \$1;
+#X floatatom 238 162 5 0 0 0 - - -;
+#X text 29 397 This one is an interface to qlist.;
+#X msg 236 143 loop \$1;
+#X obj 236 125 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X floatatom 97 164 5 0 0 0 - - -;
+#X msg 97 181 a \$1;
+#X floatatom 135 165 5 0 0 0 - - -;
+#X floatatom 137 342 5 0 0 0 - - -;
+#X floatatom 95 341 5 0 0 0 - - -;
+#X msg 135 182 b \$1;
+#X text 26 465 If you want to save your chart \, you will need the
+unique id to be the same when you open your patch again and read the
+file. Therefore \, I recommend using a symbol or a number as a unique
+id \, instead of a dollar-0.;
+#X text 308 181 1 is the original speed;
+#X text 261 336 Banged when done;
+#X text 244 95 GNU public license v2.0;
+#X obj 45 145 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 185 356 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X text 40 128 Messages to be recorded;
+#X obj 188 -5 cnv 15 15 15 empty empty seq.qtrack 20 12 0 24 -262144
+-66577 0;
+#X text 27 418 You can record a sequence of any list. It will be played
+back with the same timing. You can use arbitrary selectors and lists
+of any length.;
+#X msg 42 164 foo \$1;
+#X obj 96 316 route a b foo;
+#X text 39 26 seq.qtrack <unique id>;
+#X text 40 40 Description: Can record any stream of messages and play
+it back at different speeds in loop or not.;
+#X text 29 532 Comments: This patch is quite powerful and you should
+really think about using it if you want to play back complex rhythms
+and such. It wraps qlist.;
+#X text 30 580 Todo: create a multitrack version;
+#X text 243 80 Author: Alexandre Quessy 2006;
+#X obj 92 241 mtl/qtrack id;
+#X text 40 72 tags: sequencing;
+#X connect 2 0 35 1;
+#X connect 3 0 35 1;
+#X connect 4 0 35 1;
+#X connect 5 0 35 1;
+#X connect 6 0 35 1;
+#X connect 7 0 35 1;
+#X connect 8 0 35 1;
+#X connect 9 0 8 0;
+#X connect 11 0 35 1;
+#X connect 12 0 11 0;
+#X connect 13 0 14 0;
+#X connect 14 0 35 0;
+#X connect 15 0 18 0;
+#X connect 18 0 35 0;
+#X connect 23 0 28 0;
+#X connect 28 0 35 0;
+#X connect 29 0 17 0;
+#X connect 29 1 16 0;
+#X connect 29 2 24 0;
+#X connect 35 0 29 0;
+#X connect 35 1 1 0;
diff --git a/qtrack.pd b/qtrack.pd
new file mode 100644
index 0000000..4c1456e
--- /dev/null
+++ b/qtrack.pd
@@ -0,0 +1,122 @@
+#N canvas 103 299 915 701 10;
+#X obj 285 388 cnv 15 100 100 empty empty empty 20 12 0 14 -258699
+-66577 0;
+#X obj 71 83 cnv 15 100 100 empty empty empty 20 12 0 14 -258699 -66577
+0;
+#X obj 24 277 cnv 15 100 100 empty empty empty 20 12 0 14 -258699 -66577
+0;
+#X msg 525 257 clear;
+#X text 398 608 This outlet gets a bang when you hit the end of the
+sequence.;
+#X msg 525 235 print;
+#X obj 214 33 inlet;
+#X obj 88 13 inlet;
+#X obj 112 129 timer;
+#X obj 305 427 qlist;
+#X msg 526 280 bang;
+#X msg 328 130 tempo \$1;
+#X obj 115 216 * 1;
+#X obj 645 585 outlet;
+#X obj 90 89 t a b b;
+#X obj 29 186 t b a;
+#X msg 243 191 clear;
+#X msg 210 189 1;
+#X obj 88 58 spigot;
+#X obj 307 110 t f f b;
+#X msg 327 251 0;
+#X obj 298 170 t b b;
+#X obj 5 251 f;
+#X obj 95 403 list append;
+#X text 136 12 inlet: data to be recorded;
+#X text 569 284 sequenced automagically;
+#X obj 96 425 route list;
+#X obj 209 133 t b b b;
+#X obj 93 288 loadbang;
+#X text 97 450 add <receive symbol> <time> <data>;
+#X obj 44 302 t b f;
+#X msg 31 322 add;
+#X obj 23 349 pack s f s;
+#X text 523 4 Sequencer abstraction. Interface to qlist.;
+#X text 572 17 Copyleft )c( Alexandre Quessy 2006;
+#X obj 524 153 list prepend write;
+#X obj 524 172 route list;
+#X obj 523 213 route list;
+#X obj 523 194 list prepend read;
+#X msg 367 249 rewind;
+#X text 344 30 inlet: record \, play \, tempo \, clear \, print \,
+read <file.txt> \, write <file.txt> \, stop \, loop <1 \, 0>;
+#X text 35 260 Add cue and set receive symbol;
+#X obj 216 71 route record play tempo clear print read write stop loop
+;
+#X obj 524 100 spigot;
+#X text 299 148 play;
+#X text 313 95 tempo;
+#X text 220 118 rec;
+#X text 382 204 stop;
+#X obj 367 221 t b b;
+#X obj 526 304 spigot;
+#X msg 224 322 1;
+#X text 225 305 enable playing;
+#X obj 92 310 symbol \$1-r;
+#X obj 105 499 cnv 15 100 100 empty empty empty 20 12 0 14 -258699
+-66577 0;
+#X text 62 599 this outlet gets the lines in sequence.;
+#X obj 132 573 outlet;
+#X obj 132 535 r \$1-r;
+#X connect 3 0 9 0;
+#X connect 5 0 9 0;
+#X connect 6 0 42 0;
+#X connect 7 0 18 0;
+#X connect 8 0 12 0;
+#X connect 9 1 13 0;
+#X connect 9 1 43 0;
+#X connect 10 0 49 0;
+#X connect 11 0 9 0;
+#X connect 12 0 22 1;
+#X connect 14 0 15 0;
+#X connect 14 1 8 0;
+#X connect 14 2 8 1;
+#X connect 15 0 22 0;
+#X connect 15 1 23 1;
+#X connect 16 0 9 0;
+#X connect 17 0 18 1;
+#X connect 18 0 14 0;
+#X connect 19 0 12 1;
+#X connect 19 1 11 0;
+#X connect 20 0 18 1;
+#X connect 21 0 10 0;
+#X connect 21 1 20 0;
+#X connect 22 0 30 0;
+#X connect 23 0 26 0;
+#X connect 26 0 9 0;
+#X connect 27 0 17 0;
+#X connect 27 0 50 0;
+#X connect 27 1 16 0;
+#X connect 27 2 8 0;
+#X connect 28 0 52 0;
+#X connect 30 0 31 0;
+#X connect 30 1 32 1;
+#X connect 31 0 32 0;
+#X connect 32 0 23 0;
+#X connect 35 0 36 0;
+#X connect 36 0 9 0;
+#X connect 37 0 9 0;
+#X connect 38 0 37 0;
+#X connect 39 0 9 0;
+#X connect 42 0 27 0;
+#X connect 42 1 21 0;
+#X connect 42 2 19 0;
+#X connect 42 3 3 0;
+#X connect 42 4 5 0;
+#X connect 42 5 38 0;
+#X connect 42 5 50 0;
+#X connect 42 6 35 0;
+#X connect 42 7 48 0;
+#X connect 42 8 43 1;
+#X connect 43 0 21 0;
+#X connect 48 0 39 0;
+#X connect 48 1 20 0;
+#X connect 49 0 9 0;
+#X connect 50 0 49 1;
+#X connect 52 0 32 2;
+#X connect 56 0 55 0;
diff --git a/radianToDegree-help.pd b/radianToDegree-help.pd
new file mode 100644
index 0000000..c3edc04
--- /dev/null
+++ b/radianToDegree-help.pd
@@ -0,0 +1,17 @@
+#N canvas 441 378 422 237 10;
+#X floatatom 160 103 5 0 0 0 - - -;
+#X obj 198 102 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X floatatom 160 183 0 0 0 0 - - -;
+#X obj 22 16 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 135 58 Author: Roman Haefeli;
+#X text 277 58 Version: 2007-12-09;
+#X text 29 20 Description: Converts radians into degrees.;
+#X obj 198 126 hcs/pi;
+#X obj 160 153 radianToDegree;
+#X text 27 58 tags: conversion;
+#X connect 0 0 8 0;
+#X connect 1 0 7 0;
+#X connect 7 0 8 0;
+#X connect 8 0 2 0;
diff --git a/radianToDegree.pd b/radianToDegree.pd
new file mode 100644
index 0000000..c4a7ed4
--- /dev/null
+++ b/radianToDegree.pd
@@ -0,0 +1,13 @@
+#N canvas 533 532 299 207 10;
+#X obj 44 41 inlet;
+#X obj 44 155 outlet;
+#X obj 97 55 loadbang;
+#X obj 44 104 /;
+#X obj 44 130 * 180;
+#X text 118 142 Version 2007-12-09;
+#X obj 97 76 hcs/pi;
+#X connect 0 0 3 0;
+#X connect 2 0 6 0;
+#X connect 3 0 4 0;
+#X connect 4 0 1 0;
+#X connect 6 0 3 1;
diff --git a/rain~-help.pd b/rain~-help.pd
new file mode 100644
index 0000000..30377be
--- /dev/null
+++ b/rain~-help.pd
@@ -0,0 +1,8 @@
+#N canvas 40 465 283 218 10;
+#X text 12 28 Comment: Taken from Andy Farnell's work.;
+#X text 13 10 Description: Generates a rain sound.;
+#X obj 15 87 mtl/rain~;
+#X obj 16 129 mtl/out~;
+#X text 11 50 tags: synthesize~;
+#X connect 2 0 3 0;
+#X connect 2 0 3 1;
diff --git a/rain~.pd b/rain~.pd
new file mode 100644
index 0000000..5fdc380
--- /dev/null
+++ b/rain~.pd
@@ -0,0 +1,164 @@
+#N canvas 2 89 695 598 10;
+#X obj 226 263 osc~;
+#X obj 237 59 noise~;
+#X obj 226 337 *~;
+#X obj 193 234 +~ 2000;
+#X obj 264 262 *~;
+#X obj 264 287 *~;
+#X obj 226 441 *~ 0.01;
+#X obj 227 463 lop~ 10000;
+#X obj 238 155 bp~ 2.064 0.002;
+#X obj 265 312 *~;
+#X obj 225 371 *~ 0.3;
+#X obj 239 178 *~ 3.2;
+#X obj 226 396 hip~ 500;
+#X obj 227 419 hip~ 500;
+#X obj 192 210 *~ 3000;
+#X obj 226 486 *~ 0.02;
+#X obj 112 263 osc~;
+#X obj 123 59 noise~;
+#X obj 112 337 *~;
+#X obj 150 262 *~;
+#X obj 150 287 *~;
+#X obj 112 441 *~ 0.01;
+#X obj 113 463 lop~ 10000;
+#X obj 124 155 bp~ 2.064 0.002;
+#X obj 151 312 *~;
+#X obj 111 371 *~ 0.3;
+#X obj 125 178 *~ 3.2;
+#X obj 112 396 hip~ 500;
+#X obj 113 419 hip~ 500;
+#X obj 340 262 osc~;
+#X obj 351 58 noise~;
+#X obj 340 336 *~;
+#X obj 307 233 +~ 2000;
+#X obj 378 261 *~;
+#X obj 378 286 *~;
+#X obj 340 440 *~ 0.01;
+#X obj 341 462 lop~ 10000;
+#X obj 352 154 bp~ 2.064 0.002;
+#X obj 379 311 *~;
+#X obj 339 370 *~ 0.3;
+#X obj 340 395 hip~ 500;
+#X obj 341 418 hip~ 500;
+#X obj 78 210 *~ 344;
+#X obj 79 234 +~ 3000;
+#X obj 112 486 *~ 0.01;
+#X obj 306 209 *~ 5000;
+#X obj 353 177 *~ 3.8;
+#X obj 340 485 *~ 0.01;
+#X obj 427 201 *~;
+#X obj 135 92 lop~ 16;
+#X obj 427 492 *~ 1;
+#X obj 499 195 /~;
+#X obj 498 302 clip~ 0 0.9;
+#X obj 427 287 bp~ 333 4;
+#X obj 232 534 lop~ 12000;
+#X obj 428 335 *~ 0.4;
+#X obj 9 335 *~ 0.007;
+#X obj 251 85 lop~ 0.01;
+#X obj 498 220 hip~ 10000;
+#X obj 429 87 lop~ 1900;
+#X obj 499 281 *~;
+#X obj 500 256 *~ 0.03;
+#X text 201 3 Rain generator;
+#X obj 498 413 vcf~ 3333 30;
+#X obj 537 345 +~ 1000;
+#X obj 136 118 *~ 300000;
+#X obj 536 381 clip~ 1000 10000;
+#X obj 589 413 iemlib/init 20;
+#X obj 495 440 *~ 0.7;
+#X text 25 377 ambience;
+#X text 433 364 rumble;
+#X text 494 465 drips;
+#X text 143 349 droplets;
+#X text 266 349 droplets;
+#X text 176 24 with ambience gen highlighted;
+#X obj 233 566 outlet~;
+#X connect 0 0 2 0;
+#X connect 1 0 8 0;
+#X connect 1 0 57 0;
+#X connect 2 0 10 0;
+#X connect 3 0 0 0;
+#X connect 4 0 5 0;
+#X connect 4 0 5 1;
+#X connect 5 0 9 0;
+#X connect 5 0 9 1;
+#X connect 6 0 7 0;
+#X connect 7 0 15 0;
+#X connect 8 0 11 0;
+#X connect 9 0 2 1;
+#X connect 10 0 12 0;
+#X connect 11 0 4 0;
+#X connect 11 0 4 1;
+#X connect 11 0 14 0;
+#X connect 12 0 13 0;
+#X connect 13 0 6 0;
+#X connect 14 0 3 0;
+#X connect 15 0 54 0;
+#X connect 16 0 18 0;
+#X connect 17 0 23 0;
+#X connect 17 0 49 0;
+#X connect 17 0 56 0;
+#X connect 18 0 25 0;
+#X connect 19 0 20 0;
+#X connect 19 0 20 1;
+#X connect 20 0 24 0;
+#X connect 20 0 24 1;
+#X connect 21 0 22 0;
+#X connect 22 0 44 0;
+#X connect 23 0 26 0;
+#X connect 24 0 18 1;
+#X connect 25 0 27 0;
+#X connect 26 0 19 0;
+#X connect 26 0 19 1;
+#X connect 26 0 42 0;
+#X connect 27 0 28 0;
+#X connect 28 0 21 0;
+#X connect 29 0 31 0;
+#X connect 30 0 37 0;
+#X connect 30 0 48 1;
+#X connect 30 0 59 0;
+#X connect 31 0 39 0;
+#X connect 32 0 29 0;
+#X connect 33 0 34 0;
+#X connect 33 0 34 1;
+#X connect 34 0 38 0;
+#X connect 34 0 38 1;
+#X connect 35 0 36 0;
+#X connect 36 0 47 0;
+#X connect 37 0 46 0;
+#X connect 38 0 31 1;
+#X connect 39 0 40 0;
+#X connect 40 0 41 0;
+#X connect 41 0 35 0;
+#X connect 42 0 43 0;
+#X connect 43 0 16 0;
+#X connect 44 0 54 0;
+#X connect 45 0 32 0;
+#X connect 46 0 33 0;
+#X connect 46 0 33 1;
+#X connect 46 0 45 0;
+#X connect 47 0 54 0;
+#X connect 48 0 53 0;
+#X connect 49 0 48 0;
+#X connect 49 0 65 0;
+#X connect 50 0 54 0;
+#X connect 51 0 58 0;
+#X connect 52 0 63 0;
+#X connect 53 0 55 0;
+#X connect 54 0 75 0;
+#X connect 55 0 50 0;
+#X connect 56 0 54 0;
+#X connect 57 0 51 0;
+#X connect 58 0 61 0;
+#X connect 59 0 51 1;
+#X connect 60 0 52 0;
+#X connect 61 0 60 0;
+#X connect 61 0 60 1;
+#X connect 63 0 68 0;
+#X connect 64 0 66 0;
+#X connect 65 0 64 0;
+#X connect 66 0 63 1;
+#X connect 67 0 63 2;
+#X connect 68 0 54 0;
diff --git a/randomFloat-help.pd b/randomFloat-help.pd
new file mode 100644
index 0000000..f51a35b
--- /dev/null
+++ b/randomFloat-help.pd
@@ -0,0 +1,40 @@
+#N canvas 601 25 423 460 10;
+#X obj 21 188 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 21 237 5 0 0 0 - - -;
+#X floatatom 67 163 5 0 0 0 - - -;
+#X floatatom 114 184 5 0 0 0 - - -;
+#X text 101 163 min random value;
+#X text 151 183 max random value;
+#X obj 20 83 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 20 128 5 0 0 0 - - -;
+#X text 124 207 Args: min \, max;
+#X obj 21 276 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 21 321 5 0 0 0 - - -;
+#X text 118 297 min: -3 \, max: 1;
+#X obj 21 360 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X floatatom 21 408 5 0 0 0 - - -;
+#X text 92 103 min:0 \, max: 1;
+#X text 153 380 min: -100 \, max: 100;
+#X obj 11 9 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 16 51 tags: random;
+#X text 17 14 Description: Generate a random float in a certain range.
+Bang to output the random value.;
+#X obj 20 104 randomFloat;
+#X obj 21 208 randomFloat 1 10;
+#X obj 21 298 randomFloat -3;
+#X obj 21 382 randomFloat -100 100;
+#X connect 0 0 20 0;
+#X connect 2 0 20 1;
+#X connect 3 0 20 2;
+#X connect 6 0 19 0;
+#X connect 9 0 21 0;
+#X connect 12 0 22 0;
+#X connect 19 0 7 0;
+#X connect 20 0 1 0;
+#X connect 21 0 10 0;
+#X connect 22 0 13 0;
diff --git a/randomFloat.pd b/randomFloat.pd
new file mode 100644
index 0000000..726c60d
--- /dev/null
+++ b/randomFloat.pd
@@ -0,0 +1,43 @@
+#N canvas 137 54 887 638 12;
+#X obj 69 161 inlet;
+#X obj 69 190 b;
+#X obj 174 483 outlet;
+#X obj 267 39 inlet;
+#X obj 373 35 inlet;
+#X text 266 17 min;
+#X text 371 14 max;
+#X obj 416 210 tof/argument 1 0;
+#X obj 549 151 tof/argument 2 1;
+#X obj 476 24 loadbang;
+#X obj 479 52 t b b;
+#X obj 172 322 markex/randomF 1;
+#X obj 252 208 -;
+#X obj 364 95 t b f;
+#X obj 279 125 f;
+#X obj 265 156 t f f;
+#X obj 227 391 +;
+#X obj 78 225 zexy/demultiplex;
+#X obj 323 278 * -1;
+#X obj 154 194 != 0;
+#X connect 0 0 1 0;
+#X connect 1 0 17 0;
+#X connect 3 0 14 0;
+#X connect 4 0 13 0;
+#X connect 7 0 14 0;
+#X connect 8 0 12 1;
+#X connect 9 0 10 0;
+#X connect 10 0 7 0;
+#X connect 10 1 8 0;
+#X connect 11 0 16 0;
+#X connect 12 0 18 0;
+#X connect 12 0 19 0;
+#X connect 13 0 14 0;
+#X connect 13 1 12 1;
+#X connect 14 0 15 0;
+#X connect 15 0 12 0;
+#X connect 15 1 16 1;
+#X connect 16 0 2 0;
+#X connect 17 0 2 0;
+#X connect 17 1 11 0;
+#X connect 18 0 11 1;
+#X connect 19 0 17 1;
diff --git a/reverbCm~-help.pd b/reverbCm~-help.pd
new file mode 100644
index 0000000..96fc928
--- /dev/null
+++ b/reverbCm~-help.pd
@@ -0,0 +1,52 @@
+#N canvas 278 185 422 227 10;
+#X text 11 -44 Comment: Original patch by Claude H.;
+#X text 12 -57 Description: A simple stereo reverb.;
+#X obj 33 93 mtl/out~;
+#X obj 33 6 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1
+;
+#N canvas 5 185 450 300 generate~ 0;
+#X obj 32 213 osc~ 200;
+#X obj 32 89 metro 400;
+#X obj 32 175 mtof;
+#X obj 104 195 mtof;
+#X obj 32 132 + 20;
+#X obj 32 111 random 70;
+#X floatatom 83 69 5 0 0 0 - - -;
+#X obj 32 261 outlet~;
+#X obj 103 261 outlet~;
+#X obj 30 14 inlet;
+#X obj 104 175 mtl/closestNote 0 2 4 7 9;
+#X obj 104 234 *~;
+#X obj 31 234 *~;
+#X obj 104 214 osc~ 100;
+#X obj 32 155 mtl/closestNote 0 2 4 7 9;
+#X connect 0 0 12 0;
+#X connect 1 0 5 0;
+#X connect 2 0 0 0;
+#X connect 3 0 13 0;
+#X connect 4 0 10 0;
+#X connect 4 0 14 0;
+#X connect 5 0 4 0;
+#X connect 6 0 1 1;
+#X connect 9 0 1 0;
+#X connect 9 0 11 1;
+#X connect 9 0 12 1;
+#X connect 10 0 3 0;
+#X connect 11 0 8 0;
+#X connect 12 0 7 0;
+#X connect 13 0 11 0;
+#X connect 14 0 2 0;
+#X restore 33 31 pd generate~;
+#X text 11 -30 tags: fx~;
+#X obj 33 59 mtl/reverbCm~ /id rc;
+#X obj 183 20 hsl 100 15 0 1 0 0 \$0/rc/wet \$0/rc/wet_ /rc/wet 105
+7 0 8 -262144 -1 -1 9900 1;
+#X obj 183 40 hsl 100 15 0 1 0 0 \$0/rc/delay \$0/rc/delay_ /rc/delay
+105 7 0 8 -262144 -1 -1 1000 1;
+#X obj 183 60 hsl 100 15 0 1 0 0 \$0/rc/feedback \$0/rc/feedback_ /rc/feedback
+105 7 0 8 -262144 -1 -1 8600 1;
+#X connect 3 0 4 0;
+#X connect 4 0 6 0;
+#X connect 4 1 6 1;
+#X connect 6 0 2 0;
+#X connect 6 1 2 1;
diff --git a/reverbCm~.pd b/reverbCm~.pd
new file mode 100644
index 0000000..78add1c
--- /dev/null
+++ b/reverbCm~.pd
@@ -0,0 +1,118 @@
+#N canvas 605 82 811 495 10;
+#N canvas 2 89 731 555 cmreverb 0;
+#X obj 25 22 inlet~;
+#X obj 85 22 inlet~;
+#X obj 397 5 inlet;
+#X obj 227 148 delread~ \$0-A 100;
+#X obj 257 168 delread~ \$0-B 161.8;
+#X obj 287 188 delread~ \$0-C 261.8;
+#X obj 317 208 delread~ \$0-D 61.8;
+#X obj 173 202 +~;
+#X obj 215 202 +~;
+#X obj 10 273 outlet~;
+#X obj 80 273 outlet~;
+#X obj 158 252 +~;
+#X obj 262 253 +~;
+#X obj 200 252 -~;
+#X obj 302 252 -~;
+#X obj 157 308 +~;
+#X obj 201 309 +~;
+#X obj 245 310 -~;
+#X obj 284 310 -~;
+#X obj 244 392 *~ 0;
+#X obj 202 391 *~ 0;
+#X obj 157 390 *~ 0;
+#X obj 285 393 *~ 0;
+#X obj 284 413 delwrite~ \$0-D 1000;
+#X obj 245 436 delwrite~ \$0-C 1000;
+#X obj 203 459 delwrite~ \$0-B 1000;
+#X obj 158 481 delwrite~ \$0-A 1000;
+#X obj 227 127 * 1;
+#X obj 257 127 * 1.618;
+#X obj 317 127 * 2.618;
+#X obj 377 127 / 1.618;
+#X obj 397 31 route /feedback /delay;
+#X text 187 38 Claude M;
+#X obj 384 298 f;
+#X obj 442 70 * 381;
+#X obj 409 250 / 2;
+#X connect 0 0 7 0;
+#X connect 1 0 8 0;
+#X connect 2 0 31 0;
+#X connect 3 0 7 1;
+#X connect 4 0 8 1;
+#X connect 5 0 14 0;
+#X connect 5 0 12 0;
+#X connect 6 0 14 1;
+#X connect 6 0 12 1;
+#X connect 7 0 9 0;
+#X connect 7 0 11 0;
+#X connect 7 0 13 0;
+#X connect 8 0 10 0;
+#X connect 8 0 11 1;
+#X connect 8 0 13 1;
+#X connect 11 0 15 0;
+#X connect 11 0 17 0;
+#X connect 12 0 17 1;
+#X connect 12 0 15 1;
+#X connect 13 0 16 0;
+#X connect 13 0 18 0;
+#X connect 14 0 16 1;
+#X connect 14 0 18 1;
+#X connect 15 0 21 0;
+#X connect 16 0 20 0;
+#X connect 17 0 19 0;
+#X connect 18 0 22 0;
+#X connect 19 0 24 0;
+#X connect 20 0 25 0;
+#X connect 21 0 26 0;
+#X connect 22 0 23 0;
+#X connect 27 0 3 0;
+#X connect 28 0 4 0;
+#X connect 29 0 5 0;
+#X connect 30 0 6 0;
+#X connect 31 0 35 0;
+#X connect 31 1 34 0;
+#X connect 33 0 22 1;
+#X connect 33 0 19 1;
+#X connect 33 0 20 1;
+#X connect 33 0 21 1;
+#X connect 34 0 27 0;
+#X connect 34 0 28 0;
+#X connect 34 0 29 0;
+#X connect 34 0 30 0;
+#X connect 35 0 33 0;
+#X restore 38 113 pd cmreverb;
+#X obj 4 16 inlet~;
+#X obj 97 25 inlet~;
+#X obj 44 361 outlet~;
+#X obj 130 367 outlet~;
+#X msg 164 98 /feedback \$1;
+#X msg 278 133 /delay \$1;
+#X text 160 166 Simple verb by Claude H;
+#X obj 593 215 inlet params;
+#X obj 593 261 print PARAM_NOTFOUND;
+#X obj -4 293 tof/crossfade~ 2;
+#X obj 114 196 tof/param /wet 0 /g slider 0 1;
+#X obj 114 239 line~;
+#X msg 114 218 \$1 5;
+#X obj 278 111 tof/param /delay 0 /g slider 0 1;
+#X obj 169 64 tof/param /feedback 0 /g slider 0 1;
+#X obj 593 237 tof/param route;
+#X connect 0 0 10 2;
+#X connect 0 1 10 3;
+#X connect 1 0 10 0;
+#X connect 1 0 0 0;
+#X connect 2 0 10 1;
+#X connect 2 0 0 1;
+#X connect 5 0 0 2;
+#X connect 6 0 0 2;
+#X connect 8 0 16 0;
+#X connect 10 0 3 0;
+#X connect 10 1 4 0;
+#X connect 11 0 13 0;
+#X connect 12 0 10 4;
+#X connect 13 0 12 0;
+#X connect 14 0 6 0;
+#X connect 15 0 5 0;
+#X connect 16 0 9 0;
diff --git a/reverbFdn~-help.pd b/reverbFdn~-help.pd
new file mode 100644
index 0000000..0b047eb
--- /dev/null
+++ b/reverbFdn~-help.pd
@@ -0,0 +1,63 @@
+#N canvas 699 384 606 282 10;
+#X obj -2 0 cnv 15 600 30 empty empty fx.reverb.fdn~ 2 12 1 14 -233017
+-66577 0;
+#X text 426 42 Author: Miller Puckette;
+#X text 426 58 Version: 2008-03-05;
+#X obj 183 203 dac~ 3 4;
+#X text 179 217 outlets 3 and 4 can be used to feed rear channels in
+a multichannel setup (they don't require addition computation power).
+;
+#X text 11 37 Description: feedback delay network based reverb;
+#X obj 14 148 mtl/reverbFdn~ /id fdn;
+#X obj 15 213 mtl/out~;
+#X text 11 51 tags: fx~;
+#X obj 15 93 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#N canvas 5 185 450 300 generate~ 0;
+#X obj 32 213 osc~ 200;
+#X obj 32 89 metro 400;
+#X obj 32 175 mtof;
+#X obj 104 195 mtof;
+#X obj 32 132 + 20;
+#X obj 32 111 random 70;
+#X floatatom 83 69 5 0 0 0 - - -;
+#X obj 32 261 outlet~;
+#X obj 103 261 outlet~;
+#X obj 30 14 inlet;
+#X obj 104 175 mtl/closestNote 0 2 4 7 9;
+#X obj 104 234 *~;
+#X obj 31 234 *~;
+#X obj 104 214 osc~ 100;
+#X obj 32 155 mtl/closestNote 0 2 4 7 9;
+#X connect 0 0 12 0;
+#X connect 1 0 5 0;
+#X connect 2 0 0 0;
+#X connect 3 0 13 0;
+#X connect 4 0 10 0;
+#X connect 4 0 14 0;
+#X connect 5 0 4 0;
+#X connect 6 0 1 1;
+#X connect 9 0 1 0;
+#X connect 9 0 11 1;
+#X connect 9 0 12 1;
+#X connect 10 0 3 0;
+#X connect 11 0 8 0;
+#X connect 12 0 7 0;
+#X connect 13 0 11 0;
+#X connect 14 0 2 0;
+#X restore 15 118 pd generate~;
+#X obj 188 91 hsl 100 15 0 1 0 0 \$0/fdn/wet \$0/fdn/wet_ /fdn/wet
+105 7 0 8 -262144 -1 -1 0 1;
+#X obj 188 111 hsl 100 15 0 100 0 0 \$0/fdn/damp \$0/fdn/damp_ /fdn/damp
+105 7 0 8 -262144 -1 -1 7920 1;
+#X obj 188 131 hsl 100 15 0 100 0 0 \$0/fdn/liveness \$0/fdn/liveness_
+/fdn/liveness 105 7 0 8 -262144 -1 -1 8910 1;
+#X obj 188 151 hsl 100 15 0 127 0 0 \$0/fdn/crossover \$0/fdn/crossover_
+/fdn/crossover 105 7 0 8 -262144 -1 -1 6236 1;
+#X connect 6 0 7 0;
+#X connect 6 1 7 1;
+#X connect 6 2 3 0;
+#X connect 6 3 3 1;
+#X connect 9 0 10 0;
+#X connect 10 0 6 0;
+#X connect 10 1 6 1;
diff --git a/reverbFdn~.pd b/reverbFdn~.pd
new file mode 100644
index 0000000..41be59a
--- /dev/null
+++ b/reverbFdn~.pd
@@ -0,0 +1,438 @@
+#N canvas 221 111 705 576 10;
+#N canvas 549 339 890 407 processing 0;
+#X obj 420 84 inlet;
+#X obj 420 190 pack 0 50;
+#X obj 75 250 outlet~;
+#X obj 144 250 outlet~;
+#X obj 420 141 clip 0 100;
+#X obj 212 250 outlet~;
+#X obj 280 250 outlet~;
+#X obj 605 172 clip 0 100;
+#X obj 518 84 inlet;
+#X obj 596 88 inlet;
+#X obj 605 195 f;
+#X obj 605 218 * 0.01;
+#X obj 605 242 pack 0 50;
+#X text 433 275 control inlets:;
+#X obj 516 221 s \$0-lop;
+#N canvas 170 57 919 783 doit 0;
+#X obj 218 386 *~;
+#X obj 341 396 *~;
+#X obj 267 389 *~;
+#X obj 305 392 *~;
+#X obj 28 175 lop~;
+#X obj 27 204 -~;
+#X obj 27 291 *~;
+#X obj 16 319 +~;
+#X obj 75 182 lop~;
+#X obj 76 214 -~;
+#X obj 77 294 *~;
+#X obj 67 318 +~;
+#X obj 124 187 lop~;
+#X obj 124 214 -~;
+#X obj 125 297 *~;
+#X obj 116 322 +~;
+#X obj 176 191 lop~;
+#X obj 175 218 -~;
+#X obj 175 301 *~;
+#X obj 168 326 +~;
+#X obj 15 372 *~;
+#X obj 169 383 *~;
+#X obj 67 376 *~;
+#X obj 115 380 *~;
+#X obj 207 160 r \$0-lop;
+#X obj 183 246 r \$0-damp;
+#X obj 183 271 line~;
+#X obj 17 14 delread~ \$0-del1 10;
+#X obj 117 56 delread~ \$0-del3 13.4567;
+#X obj 68 35 delread~ \$0-del2 11.6356;
+#X obj 171 77 delread~ \$0-del4 16.7345;
+#X obj 524 407 *~;
+#X obj 631 409 *~;
+#X obj 560 408 *~;
+#X obj 595 409 *~;
+#X obj 377 399 *~;
+#X obj 488 406 *~;
+#X obj 414 402 *~;
+#X obj 451 405 *~;
+#X obj 654 354 line~;
+#X obj 708 387 r \$0-fb;
+#X obj 218 100 delread~ \$0-del5 20.1862;
+#X obj 267 121 delread~ \$0-del6 25.7417;
+#X obj 304 142 delread~ \$0-del7 31.4693;
+#X obj 341 163 delread~ \$0-del8 38.2944;
+#X obj 376 184 delread~ \$0-del9 46.6838;
+#X obj 414 205 delread~ \$0-del10 55.4567;
+#X obj 488 247 delread~ \$0-del12 76.8243;
+#X obj 524 268 delread~ \$0-del13 88.5623;
+#X obj 561 289 delread~ \$0-del14 101.278;
+#X obj 595 310 delread~ \$0-del15 115.397;
+#X obj 632 331 delread~ \$0-del16 130.502;
+#X obj 25 346 inlet~;
+#X obj 87 346 inlet~;
+#X obj 69 440 +~;
+#X obj 105 440 -~;
+#X obj 141 440 +~;
+#X obj 177 440 -~;
+#X obj 214 440 +~;
+#X obj 250 440 -~;
+#X obj 286 440 +~;
+#X obj 322 440 -~;
+#X obj 359 440 +~;
+#X obj 395 440 -~;
+#X obj 431 440 +~;
+#X obj 467 440 -~;
+#X obj 504 440 +~;
+#X obj 540 440 -~;
+#X obj 576 440 +~;
+#X obj 612 440 -~;
+#X obj 69 474 +~;
+#X obj 177 474 -~;
+#X obj 105 474 +~;
+#X obj 141 474 -~;
+#X obj 214 474 +~;
+#X obj 322 474 -~;
+#X obj 250 474 +~;
+#X obj 286 474 -~;
+#X obj 359 474 +~;
+#X obj 467 474 -~;
+#X obj 395 474 +~;
+#X obj 431 474 -~;
+#X obj 504 474 +~;
+#X obj 612 474 -~;
+#X obj 540 474 +~;
+#X obj 576 474 -~;
+#X obj 69 518 +~;
+#X obj 105 518 +~;
+#X obj 322 518 -~;
+#X obj 286 518 -~;
+#X obj 141 518 +~;
+#X obj 177 518 +~;
+#X obj 214 518 -~;
+#X obj 250 518 -~;
+#X obj 360 518 +~;
+#X obj 396 518 +~;
+#X obj 613 518 -~;
+#X obj 577 518 -~;
+#X obj 432 518 +~;
+#X obj 468 518 +~;
+#X obj 505 518 -~;
+#X obj 541 518 -~;
+#X obj 70 575 +~;
+#X obj 106 575 +~;
+#X obj 469 575 -~;
+#X obj 433 575 -~;
+#X obj 142 575 +~;
+#X obj 178 575 +~;
+#X obj 361 575 -~;
+#X obj 397 575 -~;
+#X obj 215 575 +~;
+#X obj 251 575 +~;
+#X obj 287 575 +~;
+#X obj 323 575 +~;
+#X obj 614 575 -~;
+#X obj 578 575 -~;
+#X obj 506 575 -~;
+#X obj 542 575 -~;
+#X obj 628 606 outlet~;
+#X obj 698 606 outlet~;
+#X obj 768 607 outlet~;
+#X obj 838 607 outlet~;
+#X obj 451 226 delread~ \$0-del11 65.1755;
+#X obj 614 629 delwrite~ \$0-del16 130.502;
+#X obj 361 776 delwrite~ \$0-del9 46.6838;
+#X obj 398 755 delwrite~ \$0-del10 55.4567;
+#X obj 434 734 delwrite~ \$0-del11 65.1755;
+#X obj 470 713 delwrite~ \$0-del12 76.8243;
+#X obj 506 692 delwrite~ \$0-del13 88.5623;
+#X obj 542 671 delwrite~ \$0-del14 101.278;
+#X obj 579 650 delwrite~ \$0-del15 115.397;
+#X obj 323 606 delwrite~ \$0-del8 38.2944;
+#X obj 287 628 delwrite~ \$0-del7 31.4693;
+#X obj 252 650 delwrite~ \$0-del6 25.7417;
+#X obj 215 672 delwrite~ \$0-del5 20.1862;
+#X obj 71 761 delwrite~ \$0-del1 10;
+#X obj 106 737 delwrite~ \$0-del2 11.6356;
+#X obj 141 715 delwrite~ \$0-del3 13.4567;
+#X obj 179 693 delwrite~ \$0-del4 16.7345;
+#X connect 0 0 58 0;
+#X connect 0 0 59 0;
+#X connect 1 0 60 1;
+#X connect 1 0 61 1;
+#X connect 2 0 58 1;
+#X connect 2 0 59 1;
+#X connect 3 0 60 0;
+#X connect 3 0 61 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 1;
+#X connect 7 0 20 0;
+#X connect 8 0 9 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 1;
+#X connect 11 0 22 0;
+#X connect 12 0 13 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 1;
+#X connect 15 0 23 0;
+#X connect 16 0 17 0;
+#X connect 17 0 18 0;
+#X connect 18 0 19 1;
+#X connect 19 0 21 0;
+#X connect 20 0 54 0;
+#X connect 20 0 55 0;
+#X connect 21 0 56 1;
+#X connect 21 0 57 1;
+#X connect 22 0 55 1;
+#X connect 22 0 54 1;
+#X connect 23 0 56 0;
+#X connect 23 0 57 0;
+#X connect 24 0 16 1;
+#X connect 24 0 12 1;
+#X connect 24 0 8 1;
+#X connect 24 0 4 1;
+#X connect 25 0 26 0;
+#X connect 26 0 18 1;
+#X connect 26 0 14 1;
+#X connect 26 0 10 1;
+#X connect 26 0 6 1;
+#X connect 27 0 4 0;
+#X connect 27 0 5 1;
+#X connect 27 0 7 0;
+#X connect 28 0 15 0;
+#X connect 28 0 12 0;
+#X connect 28 0 13 1;
+#X connect 29 0 8 0;
+#X connect 29 0 9 1;
+#X connect 29 0 11 0;
+#X connect 30 0 19 0;
+#X connect 30 0 17 1;
+#X connect 30 0 16 0;
+#X connect 31 0 66 0;
+#X connect 31 0 67 0;
+#X connect 32 0 68 1;
+#X connect 32 0 69 1;
+#X connect 33 0 66 1;
+#X connect 33 0 67 1;
+#X connect 34 0 68 0;
+#X connect 34 0 69 0;
+#X connect 35 0 62 0;
+#X connect 35 0 63 0;
+#X connect 36 0 64 1;
+#X connect 36 0 65 1;
+#X connect 37 0 62 1;
+#X connect 37 0 63 1;
+#X connect 38 0 64 0;
+#X connect 38 0 65 0;
+#X connect 39 0 2 1;
+#X connect 39 0 0 1;
+#X connect 39 0 3 1;
+#X connect 39 0 1 1;
+#X connect 39 0 21 1;
+#X connect 39 0 23 1;
+#X connect 39 0 22 1;
+#X connect 39 0 20 1;
+#X connect 39 0 35 1;
+#X connect 39 0 38 1;
+#X connect 39 0 36 1;
+#X connect 39 0 31 1;
+#X connect 39 0 33 1;
+#X connect 39 0 34 1;
+#X connect 39 0 32 1;
+#X connect 39 0 37 1;
+#X connect 40 0 39 0;
+#X connect 41 0 0 0;
+#X connect 42 0 2 0;
+#X connect 43 0 3 0;
+#X connect 44 0 1 0;
+#X connect 45 0 35 0;
+#X connect 46 0 37 0;
+#X connect 47 0 36 0;
+#X connect 48 0 31 0;
+#X connect 49 0 33 0;
+#X connect 50 0 34 0;
+#X connect 51 0 32 0;
+#X connect 52 0 20 0;
+#X connect 53 0 22 0;
+#X connect 54 0 70 0;
+#X connect 54 0 73 0;
+#X connect 55 0 72 0;
+#X connect 55 0 71 0;
+#X connect 56 0 70 1;
+#X connect 56 0 73 1;
+#X connect 57 0 72 1;
+#X connect 57 0 71 1;
+#X connect 58 0 74 0;
+#X connect 58 0 77 0;
+#X connect 59 0 76 0;
+#X connect 59 0 75 0;
+#X connect 60 0 74 1;
+#X connect 60 0 77 1;
+#X connect 61 0 76 1;
+#X connect 61 0 75 1;
+#X connect 62 0 78 0;
+#X connect 62 0 81 0;
+#X connect 63 0 80 0;
+#X connect 63 0 79 0;
+#X connect 64 0 78 1;
+#X connect 64 0 81 1;
+#X connect 65 0 80 1;
+#X connect 65 0 79 1;
+#X connect 66 0 82 0;
+#X connect 66 0 85 0;
+#X connect 67 0 84 0;
+#X connect 67 0 83 0;
+#X connect 68 0 82 1;
+#X connect 68 0 85 1;
+#X connect 69 0 84 1;
+#X connect 69 0 83 1;
+#X connect 70 0 86 0;
+#X connect 70 0 92 0;
+#X connect 71 0 91 0;
+#X connect 71 0 88 0;
+#X connect 72 0 87 0;
+#X connect 72 0 93 0;
+#X connect 73 0 90 0;
+#X connect 73 0 89 0;
+#X connect 74 0 86 1;
+#X connect 74 0 92 1;
+#X connect 75 0 91 1;
+#X connect 75 0 88 1;
+#X connect 76 0 87 1;
+#X connect 76 0 93 1;
+#X connect 77 0 90 1;
+#X connect 77 0 89 1;
+#X connect 78 0 94 0;
+#X connect 78 0 100 0;
+#X connect 79 0 99 0;
+#X connect 79 0 96 0;
+#X connect 80 0 95 0;
+#X connect 80 0 101 0;
+#X connect 81 0 98 0;
+#X connect 81 0 97 0;
+#X connect 82 0 94 1;
+#X connect 82 0 100 1;
+#X connect 83 0 99 1;
+#X connect 83 0 96 1;
+#X connect 84 0 95 1;
+#X connect 84 0 101 1;
+#X connect 85 0 98 1;
+#X connect 85 0 97 1;
+#X connect 86 0 102 0;
+#X connect 86 0 108 0;
+#X connect 87 0 103 0;
+#X connect 87 0 109 0;
+#X connect 88 0 113 0;
+#X connect 88 0 114 0;
+#X connect 89 0 112 0;
+#X connect 89 0 115 0;
+#X connect 90 0 106 0;
+#X connect 90 0 105 0;
+#X connect 91 0 107 0;
+#X connect 91 0 104 0;
+#X connect 92 0 110 0;
+#X connect 92 0 116 0;
+#X connect 93 0 111 0;
+#X connect 93 0 117 0;
+#X connect 94 0 108 1;
+#X connect 94 0 102 1;
+#X connect 95 0 109 1;
+#X connect 95 0 103 1;
+#X connect 96 0 114 1;
+#X connect 96 0 113 1;
+#X connect 97 0 115 1;
+#X connect 97 0 112 1;
+#X connect 98 0 105 1;
+#X connect 98 0 106 1;
+#X connect 99 0 104 1;
+#X connect 99 0 107 1;
+#X connect 100 0 116 1;
+#X connect 100 0 110 1;
+#X connect 101 0 117 1;
+#X connect 101 0 111 1;
+#X connect 102 0 135 0;
+#X connect 103 0 136 0;
+#X connect 104 0 127 0;
+#X connect 105 0 126 0;
+#X connect 106 0 137 0;
+#X connect 107 0 138 0;
+#X connect 108 0 124 0;
+#X connect 109 0 125 0;
+#X connect 110 0 134 0;
+#X connect 111 0 133 0;
+#X connect 112 0 132 0;
+#X connect 113 0 131 0;
+#X connect 114 0 121 0;
+#X connect 114 0 123 0;
+#X connect 115 0 120 0;
+#X connect 115 0 130 0;
+#X connect 116 0 118 0;
+#X connect 116 0 128 0;
+#X connect 117 0 119 0;
+#X connect 117 0 129 0;
+#X connect 122 0 38 0;
+#X restore 75 158 pd doit;
+#X obj 76 96 inlet~;
+#X obj 133 96 inlet~;
+#X obj 420 220 s \$0-fb;
+#X obj 605 269 s \$0-damp;
+#X obj 420 166 / 400;
+#X text 430 310 1: liveness \, 0-100 \, usually between 85 and 100
+;
+#X text 430 327 2: crossover frequency in Hz. (3000 default);
+#X text 429 344 3: high frequency damping \, 0-100;
+#X obj 517 167 mtof;
+#X connect 0 0 4 0;
+#X connect 1 0 18 0;
+#X connect 4 0 20 0;
+#X connect 7 0 10 0;
+#X connect 8 0 24 0;
+#X connect 9 0 7 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 12 0 19 0;
+#X connect 15 0 2 0;
+#X connect 15 1 3 0;
+#X connect 15 2 5 0;
+#X connect 15 3 6 0;
+#X connect 16 0 15 0;
+#X connect 17 0 15 1;
+#X connect 20 0 1 0;
+#X connect 24 0 14 0;
+#X restore 199 175 pd processing;
+#X obj 57 26 inlet~;
+#X obj 114 26 inlet~;
+#X obj 50 431 outlet~;
+#X obj 108 431 outlet~;
+#X obj 166 432 outlet~;
+#X obj 224 432 outlet~;
+#X text 479 487 Version: 2008-03-05;
+#X text 479 471 Author: Miller Puckette;
+#X obj 573 3 inlet params;
+#X obj 573 49 print PARAM_NOTFOUND;
+#X obj 289 232 tof/param /wet 0 /g slider 0 1;
+#X obj 289 275 line~;
+#X msg 289 254 \$1 5;
+#X obj 43 294 tof/crossfade~ 2;
+#X obj 276 49 tof/param /damp 80 /g slider 0 100;
+#X obj 242 -21 tof/param /liveness 90 /g slider 0 100;
+#X obj 245 10 tof/param /crossover 80 /g slider 0 127;
+#X obj 573 25 tof/param route;
+#X connect 0 0 14 2;
+#X connect 0 1 14 3;
+#X connect 0 2 5 0;
+#X connect 0 3 6 0;
+#X connect 1 0 0 0;
+#X connect 1 0 14 0;
+#X connect 2 0 0 1;
+#X connect 2 0 14 1;
+#X connect 9 0 18 0;
+#X connect 11 0 13 0;
+#X connect 12 0 14 4;
+#X connect 13 0 12 0;
+#X connect 14 0 3 0;
+#X connect 14 1 4 0;
+#X connect 15 0 0 4;
+#X connect 16 0 0 2;
+#X connect 17 0 0 3;
+#X connect 18 0 10 0;
diff --git a/reverbFree~-help.pd b/reverbFree~-help.pd
new file mode 100644
index 0000000..71467df
--- /dev/null
+++ b/reverbFree~-help.pd
@@ -0,0 +1,55 @@
+#N canvas 474 91 456 233 10;
+#X obj 24 134 mtl/reverbFree~ /id freeverb;
+#X obj 23 161 mtl/out~;
+#X text 19 25 tags: fx~;
+#X obj 23 84 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1
+;
+#N canvas 5 185 450 300 generate~ 0;
+#X obj 32 213 osc~ 200;
+#X obj 32 89 metro 400;
+#X obj 32 175 mtof;
+#X obj 104 195 mtof;
+#X obj 32 132 + 20;
+#X obj 32 111 random 70;
+#X floatatom 83 69 5 0 0 0 - - -;
+#X obj 32 261 outlet~;
+#X obj 103 261 outlet~;
+#X obj 30 14 inlet;
+#X obj 104 175 mtl/closestNote 0 2 4 7 9;
+#X obj 104 234 *~;
+#X obj 31 234 *~;
+#X obj 104 214 osc~ 100;
+#X obj 32 155 mtl/closestNote 0 2 4 7 9;
+#X connect 0 0 12 0;
+#X connect 1 0 5 0;
+#X connect 2 0 0 0;
+#X connect 3 0 13 0;
+#X connect 4 0 10 0;
+#X connect 4 0 14 0;
+#X connect 5 0 4 0;
+#X connect 6 0 1 1;
+#X connect 9 0 1 0;
+#X connect 9 0 11 1;
+#X connect 9 0 12 1;
+#X connect 10 0 3 0;
+#X connect 11 0 8 0;
+#X connect 12 0 7 0;
+#X connect 13 0 11 0;
+#X connect 14 0 2 0;
+#X restore 23 109 pd generate~;
+#X text 18 8 Description: wrap freeverb.;
+#X obj 217 53 hsl 100 15 0 1 0 0 \$0/freeverb/wet \$0/freeverb/wet_
+/freeverb/wet 105 7 0 8 -262144 -1 -1 0 1;
+#X obj 217 93 hsl 100 15 0 1 0 0 \$0/freeverb/width \$0/freeverb/width_
+/freeverb/width 105 7 0 8 -262144 -1 -1 0 1;
+#X obj 217 73 hsl 100 15 0.11 1.6 0 0 \$0/freeverb/roomsize \$0/freeverb/roomsize_
+/freeverb/roomsize 105 7 0 8 -262144 -1 -1 0 1;
+#X obj 214 133 tgl 15 0 \$0/freeverb/freeze \$0/freeverb/freeze_ /freeverb/freeze
+17 7 0 8 -262144 -1 -1 0 1;
+#X obj 217 113 hsl 100 15 0 2 0 0 \$0/freeverb/damping \$0/freeverb/damping_
+/freeverb/damping 105 7 0 8 -262144 -1 -1 0 1;
+#X connect 0 0 1 0;
+#X connect 0 1 1 1;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 4 1 0 1;
diff --git a/reverbFree~.pd b/reverbFree~.pd
new file mode 100644
index 0000000..a0d35e5
--- /dev/null
+++ b/reverbFree~.pd
@@ -0,0 +1,74 @@
+#N canvas 166 155 1016 505 10;
+#X obj 42 454 outlet~ left;
+#X obj 134 454 outlet~ right;
+#X obj 44 71 inlet~ left;
+#X obj 131 71 inlet~ right;
+#N canvas 2 89 1012 443 freeverb 0;
+#X obj 43 16 inlet~;
+#X obj 39 414 outlet~;
+#X obj 154 412 outlet~;
+#X obj 187 15 inlet~;
+#X obj 283 8 inlet;
+#X obj 350 7 inlet;
+#X obj 410 8 inlet;
+#X msg 110 63 roomsize \$1;
+#X msg 110 108 damping \$1;
+#X msg 110 152 width \$1;
+#X msg 120 206 wet \$1;
+#X msg 124 229 dry \$1;
+#X msg 163 302 freeze \$1;
+#X msg 209 346 bypass \$1;
+#X obj 481 6 inlet;
+#X msg 198 155 1;
+#X msg 230 156 0;
+#X obj 221 131 loadbang;
+#X obj 94 381 freeverb/freeverb~;
+#X connect 0 0 18 0;
+#X connect 3 0 18 1;
+#X connect 4 0 7 0;
+#X connect 5 0 8 0;
+#X connect 6 0 9 0;
+#X connect 7 0 18 0;
+#X connect 8 0 18 0;
+#X connect 9 0 18 0;
+#X connect 10 0 18 0;
+#X connect 11 0 18 0;
+#X connect 12 0 18 0;
+#X connect 13 0 18 0;
+#X connect 14 0 12 0;
+#X connect 15 0 10 0;
+#X connect 16 0 11 0;
+#X connect 16 0 13 0;
+#X connect 17 0 15 0;
+#X connect 17 0 16 0;
+#X connect 18 0 1 0;
+#X connect 18 1 2 0;
+#X restore 100 314 pd freeverb;
+#X obj 43 382 tof/crossfade~ 2;
+#X obj 742 130 inlet params;
+#X obj 742 176 print PARAM_NOTFOUND;
+#X obj 194 325 tof/param /wet 0 /g slider 0 1;
+#X obj 194 368 line~;
+#X msg 194 347 \$1 5;
+#X obj 360 157 tof/param /width 1 /g slider 0 1;
+#X obj 360 117 tof/param /roomsize 0.3 /g slider 0.11 1.6;
+#X obj 360 177 tof/param /freeze 0 /g tgl;
+#X obj 360 137 tof/param /damping 0.4 /g slider 0 2;
+#X obj 741 152 tof/param route;
+#X connect 2 0 4 0;
+#X connect 2 0 5 0;
+#X connect 3 0 4 1;
+#X connect 3 0 5 1;
+#X connect 4 0 5 2;
+#X connect 4 1 5 3;
+#X connect 5 0 0 0;
+#X connect 5 1 1 0;
+#X connect 6 0 15 0;
+#X connect 8 0 10 0;
+#X connect 9 0 5 4;
+#X connect 10 0 9 0;
+#X connect 11 0 4 4;
+#X connect 12 0 4 2;
+#X connect 13 0 4 5;
+#X connect 14 0 4 3;
+#X connect 15 0 7 0;
diff --git a/rgbToHsv-help.pd b/rgbToHsv-help.pd
new file mode 100644
index 0000000..ea0026e
--- /dev/null
+++ b/rgbToHsv-help.pd
@@ -0,0 +1,31 @@
+#N canvas 659 100 426 439 10;
+#X text 19 15 Description: Convert float RGB or 8bit RGB to float HSV.
+;
+#X text 59 298 outlet: float HSV;
+#X text 181 319 outlet: float HSV;
+#X obj 185 209 nbx 5 14 0 255 0 0 empty empty empty 0 -6 0 10 -262144
+-1 -1 0 256;
+#X obj 244 209 nbx 5 14 0 255 0 0 empty empty empty 0 -6 0 10 -262144
+-1 -1 0 256;
+#X obj 302 210 nbx 5 14 0 255 0 0 empty empty empty 0 -6 0 10 -262144
+-1 -1 0 256;
+#X obj 237 236 t b f;
+#X obj 291 237 t b f;
+#X obj 185 268 pack f f f;
+#X text 181 187 8bit_RGB input;
+#X obj 51 280 mtl/rgbToHsv;
+#X obj 51 341 mtl/hsv;
+#X obj 185 298 mtl/rgbToHsv int;
+#X text 20 36 tags: conversion;
+#X obj 51 89 mtl/colorGrid;
+#X connect 3 0 8 0;
+#X connect 4 0 6 0;
+#X connect 5 0 7 0;
+#X connect 6 0 8 0;
+#X connect 6 1 8 1;
+#X connect 7 0 8 0;
+#X connect 7 1 8 2;
+#X connect 8 0 12 0;
+#X connect 10 0 11 0;
+#X connect 12 0 11 0;
+#X connect 14 0 10 0;
diff --git a/rgbToHsv.pd b/rgbToHsv.pd
new file mode 100644
index 0000000..db989fd
--- /dev/null
+++ b/rgbToHsv.pd
@@ -0,0 +1,326 @@
+#N canvas 359 28 689 725 10;
+#X obj 249 303 unpack 0 0 0;
+#X obj 196 529 pack 0 0 0;
+#X obj 186 142 t f f;
+#X obj 186 163 t f f;
+#X obj 186 185 -;
+#X obj 186 224 /;
+#X obj 186 244 t f f;
+#X obj 145 266 select 0;
+#X msg 145 286 0;
+#X obj 186 204 t f f;
+#N canvas 0 0 450 515 sort3 0;
+#X obj 55 109 inlet;
+#X obj 55 375 outlet;
+#X obj 205 375 outlet;
+#X obj 55 313 unpack;
+#X obj 105 313 unpack;
+#X obj 155 313 unpack;
+#X msg 55 156 \$1 0;
+#X msg 97 155 \$1 1;
+#X msg 145 156 \$1 2;
+#X obj 55 132 unpack 0 0 0;
+#X obj 55 352 pack 0 0 0;
+#X obj 205 352 pack 0 0 0;
+#N canvas 0 0 489 412 sort_header 0;
+#X obj 67 27 inlet;
+#X obj 67 318 outlet;
+#X obj 212 318 outlet;
+#X obj 67 79 t f l;
+#X obj 157 27 inlet;
+#X obj 157 79 t f l;
+#X obj 67 119 >;
+#X obj 67 149 select 0 1;
+#X obj 67 181 t b b;
+#X obj 227 175 t b b;
+#X obj 67 291 pack;
+#X obj 83 250 unpack;
+#X obj 67 271 f;
+#X obj 117 291 pack;
+#X obj 133 250 unpack;
+#X obj 117 271 f;
+#X obj 227 291 pack;
+#X obj 243 250 unpack;
+#X obj 227 271 f;
+#X obj 277 291 pack;
+#X obj 293 250 unpack;
+#X obj 277 271 f;
+#X connect 0 0 3 0;
+#X connect 3 0 6 0;
+#X connect 3 1 11 0;
+#X connect 3 1 20 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 1;
+#X connect 5 1 14 0;
+#X connect 5 1 17 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 7 1 9 0;
+#X connect 8 0 12 0;
+#X connect 8 1 15 0;
+#X connect 9 0 18 0;
+#X connect 9 1 21 0;
+#X connect 10 0 1 0;
+#X connect 11 0 12 1;
+#X connect 11 1 10 1;
+#X connect 12 0 10 0;
+#X connect 13 0 2 0;
+#X connect 14 0 15 1;
+#X connect 14 1 13 1;
+#X connect 15 0 13 0;
+#X connect 16 0 1 0;
+#X connect 17 0 18 1;
+#X connect 17 1 16 1;
+#X connect 18 0 16 0;
+#X connect 19 0 2 0;
+#X connect 20 0 21 1;
+#X connect 20 1 19 1;
+#X connect 21 0 19 0;
+#X restore 110 178 pd sort_header;
+#N canvas 0 0 450 300 sort_header 0;
+#X obj 67 27 inlet;
+#X obj 67 318 outlet;
+#X obj 212 318 outlet;
+#X obj 67 79 t f l;
+#X obj 157 27 inlet;
+#X obj 157 79 t f l;
+#X obj 67 119 >;
+#X obj 67 149 select 0 1;
+#X obj 67 181 t b b;
+#X obj 227 175 t b b;
+#X obj 67 291 pack;
+#X obj 83 250 unpack;
+#X obj 67 271 f;
+#X obj 117 291 pack;
+#X obj 133 250 unpack;
+#X obj 117 271 f;
+#X obj 227 291 pack;
+#X obj 243 250 unpack;
+#X obj 227 271 f;
+#X obj 277 291 pack;
+#X obj 293 250 unpack;
+#X obj 277 271 f;
+#X connect 0 0 3 0;
+#X connect 3 0 6 0;
+#X connect 3 1 11 0;
+#X connect 3 1 20 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 1;
+#X connect 5 1 14 0;
+#X connect 5 1 17 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 7 1 9 0;
+#X connect 8 0 12 0;
+#X connect 8 1 15 0;
+#X connect 9 0 18 0;
+#X connect 9 1 21 0;
+#X connect 10 0 1 0;
+#X connect 11 0 12 1;
+#X connect 11 1 10 1;
+#X connect 12 0 10 0;
+#X connect 13 0 2 0;
+#X connect 14 0 15 1;
+#X connect 14 1 13 1;
+#X connect 15 0 13 0;
+#X connect 16 0 1 0;
+#X connect 17 0 18 1;
+#X connect 17 1 16 1;
+#X connect 18 0 16 0;
+#X connect 19 0 2 0;
+#X connect 20 0 21 1;
+#X connect 20 1 19 1;
+#X connect 21 0 19 0;
+#X restore 55 205 pd sort_header;
+#N canvas 0 0 450 300 sort_header 0;
+#X obj 67 27 inlet;
+#X obj 67 318 outlet;
+#X obj 212 318 outlet;
+#X obj 67 79 t f l;
+#X obj 157 27 inlet;
+#X obj 157 79 t f l;
+#X obj 67 119 >;
+#X obj 67 149 select 0 1;
+#X obj 67 181 t b b;
+#X obj 227 175 t b b;
+#X obj 67 291 pack;
+#X obj 83 250 unpack;
+#X obj 67 271 f;
+#X obj 117 291 pack;
+#X obj 133 250 unpack;
+#X obj 117 271 f;
+#X obj 227 291 pack;
+#X obj 243 250 unpack;
+#X obj 227 271 f;
+#X obj 277 291 pack;
+#X obj 293 250 unpack;
+#X obj 277 271 f;
+#X connect 0 0 3 0;
+#X connect 3 0 6 0;
+#X connect 3 1 11 0;
+#X connect 3 1 20 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 1;
+#X connect 5 1 14 0;
+#X connect 5 1 17 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 7 1 9 0;
+#X connect 8 0 12 0;
+#X connect 8 1 15 0;
+#X connect 9 0 18 0;
+#X connect 9 1 21 0;
+#X connect 10 0 1 0;
+#X connect 11 0 12 1;
+#X connect 11 1 10 1;
+#X connect 12 0 10 0;
+#X connect 13 0 2 0;
+#X connect 14 0 15 1;
+#X connect 14 1 13 1;
+#X connect 15 0 13 0;
+#X connect 16 0 1 0;
+#X connect 17 0 18 1;
+#X connect 17 1 16 1;
+#X connect 18 0 16 0;
+#X connect 19 0 2 0;
+#X connect 20 0 21 1;
+#X connect 20 1 19 1;
+#X connect 21 0 19 0;
+#X restore 116 236 pd sort_header;
+#X connect 0 0 9 0;
+#X connect 3 0 10 0;
+#X connect 3 1 11 0;
+#X connect 4 0 10 1;
+#X connect 4 1 11 1;
+#X connect 5 0 10 2;
+#X connect 5 1 11 2;
+#X connect 6 0 13 0;
+#X connect 7 0 12 0;
+#X connect 8 0 12 1;
+#X connect 9 0 6 0;
+#X connect 9 1 7 0;
+#X connect 9 2 8 0;
+#X connect 10 0 1 0;
+#X connect 11 0 2 0;
+#X connect 12 0 13 1;
+#X connect 12 1 14 1;
+#X connect 13 0 3 0;
+#X connect 13 1 14 0;
+#X connect 14 0 4 0;
+#X connect 14 1 5 0;
+#X restore 186 77 pd sort3;
+#X msg 186 98 \$3 \$1;
+#X obj 186 121 unpack;
+#X msg 239 98 \$3;
+#X obj 196 398 -;
+#X obj 240 379 t f f f;
+#X obj 233 438 + 2;
+#X obj 233 398 -;
+#X obj 268 398 -;
+#X obj 268 418 /;
+#X obj 233 418 /;
+#X obj 196 418 /;
+#X obj 268 438 + 4;
+#N canvas 0 0 450 300 select3 0;
+#X obj 106 87 inlet;
+#X obj 234 85 inlet;
+#X obj 115 222 outlet;
+#X obj 232 107 unpack 0 0 0;
+#X obj 117 194 f;
+#X obj 180 192 f;
+#X obj 240 190 f;
+#X obj 110 137 select 0 1 2;
+#X obj 184 224 outlet;
+#X obj 236 222 outlet;
+#X connect 0 0 7 0;
+#X connect 1 0 3 0;
+#X connect 3 0 4 1;
+#X connect 3 1 5 1;
+#X connect 3 2 6 1;
+#X connect 4 0 2 0;
+#X connect 5 0 8 0;
+#X connect 6 0 9 0;
+#X connect 7 0 5 0;
+#X connect 7 1 6 0;
+#X connect 7 2 4 0;
+#X restore 196 329 pd select3;
+#X obj 196 287 b;
+#X obj 196 307 i;
+#X obj 186 55 t l l l;
+#X obj 196 480 moses 0;
+#X obj 196 459 / 6;
+#X obj 196 500 + 1;
+#X obj 179 9 inlet float_RGB;
+#X obj 187 682 outlet float_HSV;
+#X obj 381 109 unpack f f f;
+#X obj 380 144 / 255;
+#X obj 428 144 / 255;
+#X obj 484 142 / 255;
+#X obj 382 174 pack f f f;
+#X obj 267 57 zexy/demultiplex 0 1;
+#X obj 703 44 loadbang;
+#X obj 703 73 iemlib/dollarg;
+#X msg 773 133 1;
+#X obj 701 101 sel 8bit int integer;
+#X connect 0 0 17 1;
+#X connect 0 1 18 1;
+#X connect 0 2 14 1;
+#X connect 1 0 31 0;
+#X connect 2 0 3 0;
+#X connect 2 1 1 2;
+#X connect 3 0 4 0;
+#X connect 3 1 5 1;
+#X connect 4 0 9 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 6 1 1 1;
+#X connect 7 0 8 0;
+#X connect 7 1 24 0;
+#X connect 8 0 1 0;
+#X connect 9 0 5 0;
+#X connect 9 1 15 0;
+#X connect 10 0 11 0;
+#X connect 10 1 13 0;
+#X connect 11 0 12 0;
+#X connect 12 0 2 0;
+#X connect 12 1 4 1;
+#X connect 13 0 25 1;
+#X connect 14 0 21 0;
+#X connect 15 0 21 1;
+#X connect 15 1 20 1;
+#X connect 15 2 19 1;
+#X connect 16 0 28 0;
+#X connect 17 0 20 0;
+#X connect 18 0 19 0;
+#X connect 19 0 22 0;
+#X connect 20 0 16 0;
+#X connect 21 0 28 0;
+#X connect 22 0 28 0;
+#X connect 23 0 18 0;
+#X connect 23 1 14 0;
+#X connect 23 2 17 0;
+#X connect 24 0 25 0;
+#X connect 25 0 23 0;
+#X connect 26 0 10 0;
+#X connect 26 1 0 0;
+#X connect 26 2 23 1;
+#X connect 27 0 29 0;
+#X connect 27 1 1 0;
+#X connect 28 0 27 0;
+#X connect 29 0 1 0;
+#X connect 30 0 37 0;
+#X connect 32 0 33 0;
+#X connect 32 1 34 0;
+#X connect 32 2 35 0;
+#X connect 33 0 36 0;
+#X connect 34 0 36 1;
+#X connect 35 0 36 2;
+#X connect 36 0 26 0;
+#X connect 37 0 26 0;
+#X connect 37 1 32 0;
+#X connect 38 0 39 0;
+#X connect 39 0 41 0;
+#X connect 40 0 37 1;
+#X connect 41 0 40 0;
+#X connect 41 1 40 0;
+#X connect 41 2 40 0;
diff --git a/rgbToNum-help.pd b/rgbToNum-help.pd
new file mode 100644
index 0000000..9af6e39
--- /dev/null
+++ b/rgbToNum-help.pd
@@ -0,0 +1,51 @@
+#N canvas 475 74 478 331 10;
+#X obj 19 36 cnv 15 250 60 empty can45 empty 20 12 0 14 -1 -262144
+0;
+#X obj 261 137 nbx 5 14 0 255 0 0 empty empty empty 0 -6 0 10 -262144
+-1 -1 0 256;
+#X obj 320 137 nbx 5 14 0 255 0 0 empty empty empty 0 -6 0 10 -262144
+-1 -1 0 256;
+#X obj 378 137 nbx 5 14 0 255 0 0 empty empty empty 0 -6 0 10 -262144
+-1 -1 0 256;
+#X obj 320 157 t b f;
+#X obj 378 158 t b f;
+#X text 16 -5 Description: Converts an rgb value into a pd color value.
+;
+#X floatatom 78 232 10 0 0 0 - - -;
+#X obj 320 184 pack f f f;
+#X msg 78 253 \; can45 color \$1;
+#X text 258 117 8bit_RGB input;
+#X text 17 123 float_RGB input;
+#X obj 20 143 nbx 5 14 0 1 0 0 empty empty empty 0 -6 0 10 -262144
+-1 -1 0 256;
+#X obj 78 143 nbx 5 14 0 1 0 0 empty empty empty 0 -6 0 10 -262144
+-1 -1 0 256;
+#X obj 135 143 nbx 5 14 0 1 0 0 empty empty empty 0 -6 0 10 -262144
+-1 -1 0 256;
+#X obj 78 160 t b f;
+#X obj 135 161 t b f;
+#X obj 78 187 pack f f f;
+#X obj 78 209 mtl/rgbToNum;
+#X text 18 9 tags: conversion;
+#X obj 320 206 mtl/rgbToNum integer;
+#X obj 316 241 mtl/rgbToNum 8bit;
+#X obj 316 266 mtl/rgbToNum int;
+#X connect 1 0 8 0;
+#X connect 2 0 4 0;
+#X connect 3 0 5 0;
+#X connect 4 0 8 0;
+#X connect 4 1 8 1;
+#X connect 5 0 8 0;
+#X connect 5 1 8 2;
+#X connect 7 0 9 0;
+#X connect 8 0 20 0;
+#X connect 12 0 17 0;
+#X connect 13 0 15 0;
+#X connect 14 0 16 0;
+#X connect 15 0 17 0;
+#X connect 15 1 17 1;
+#X connect 16 0 17 0;
+#X connect 16 1 17 2;
+#X connect 17 0 18 0;
+#X connect 18 0 7 0;
+#X connect 20 0 7 0;
diff --git a/rgbToNum.pd b/rgbToNum.pd
new file mode 100644
index 0000000..b07ce59
--- /dev/null
+++ b/rgbToNum.pd
@@ -0,0 +1,55 @@
+#N canvas 522 154 616 538 10;
+#X obj 231 348 +;
+#X obj 167 420 +;
+#X obj 80 303 * -65536;
+#X obj 186 309 * -256;
+#X obj 300 317 * -1;
+#X obj 167 451 - 1;
+#X obj 248 502 outlet;
+#X obj 75 271 int 0;
+#X obj 186 260 int 0;
+#X obj 333 262 int 0;
+#X obj 156 116 unpack f f f;
+#X obj 8 23 inlet float_RGB;
+#X obj 17 103 unpack f f f;
+#X obj 7 144 * 255;
+#X obj 62 142 * 255;
+#X obj 109 140 * 255;
+#X obj 56 223 clip 0 255;
+#X obj 218 220 clip 0 255;
+#X obj 319 220 clip 0 255;
+#X obj 175 -44 loadbang;
+#X obj 175 -15 iemlib/dollarg;
+#X msg 245 45 1;
+#X obj 173 13 sel 8bit int integer;
+#X obj 21 61 zexy/demultiplex 0 1;
+#X connect 0 0 1 1;
+#X connect 1 0 5 0;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 1;
+#X connect 5 0 6 0;
+#X connect 7 0 2 0;
+#X connect 8 0 3 0;
+#X connect 9 0 4 0;
+#X connect 10 0 16 0;
+#X connect 10 1 17 0;
+#X connect 10 2 18 0;
+#X connect 11 0 23 0;
+#X connect 12 0 13 0;
+#X connect 12 1 14 0;
+#X connect 12 2 15 0;
+#X connect 13 0 16 0;
+#X connect 14 0 17 0;
+#X connect 15 0 18 0;
+#X connect 16 0 7 0;
+#X connect 17 0 8 0;
+#X connect 18 0 9 0;
+#X connect 19 0 20 0;
+#X connect 20 0 22 0;
+#X connect 21 0 23 1;
+#X connect 22 0 21 0;
+#X connect 22 1 21 0;
+#X connect 22 2 21 0;
+#X connect 23 0 12 0;
+#X connect 23 1 10 0;
diff --git a/round-help.pd b/round-help.pd
new file mode 100644
index 0000000..367ab3c
--- /dev/null
+++ b/round-help.pd
@@ -0,0 +1,13 @@
+#N canvas 312 314 374 240 10;
+#X floatatom 144 75 5 0 0 0 - - -;
+#X floatatom 144 121 5 0 0 0 - - -;
+#X floatatom 144 166 5 0 0 0 - - -;
+#X obj 144 98 / 10;
+#X text 21 13 Description: Rounds a float to it's closest integer.
+;
+#X obj 144 140 mtl/round;
+#X text 21 31 tags: math;
+#X connect 0 0 3 0;
+#X connect 1 0 5 0;
+#X connect 3 0 1 0;
+#X connect 5 0 2 0;
diff --git a/round.pd b/round.pd
new file mode 100644
index 0000000..de53b79
--- /dev/null
+++ b/round.pd
@@ -0,0 +1,6 @@
+#N canvas 46 221 689 376 12;
+#X obj 166 101 inlet;
+#X obj 166 233 outlet;
+#X obj 166 132 expr rint($f1);
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
diff --git a/roundUp-help.pd b/roundUp-help.pd
new file mode 100644
index 0000000..c80b2f7
--- /dev/null
+++ b/roundUp-help.pd
@@ -0,0 +1,8 @@
+#N canvas 272 173 233 166 10;
+#X floatatom 75 73 5 0 0 0 - - -;
+#X floatatom 75 117 5 0 0 0 - - -;
+#X text 17 8 Description: Rounds a float up.;
+#X obj 75 94 mtl/roundUp;
+#X text 19 26 tags: math;
+#X connect 0 0 3 0;
+#X connect 3 0 1 0;
diff --git a/roundUp.pd b/roundUp.pd
new file mode 100644
index 0000000..61e78e2
--- /dev/null
+++ b/roundUp.pd
@@ -0,0 +1,11 @@
+#N canvas 1230 214 728 446 10;
+#X obj 172 113 inlet;
+#X obj 175 338 outlet;
+#X obj 264 230 expr if ( modf($f1) \, int($f1) + 1 \, int($f1));
+#X obj 172 162 moses 0;
+#X obj -105 222 expr int($f1);
+#X connect 0 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 3 1 2 0;
+#X connect 4 0 1 0;
diff --git a/rumble~-help.pd b/rumble~-help.pd
new file mode 100644
index 0000000..0a0315e
--- /dev/null
+++ b/rumble~-help.pd
@@ -0,0 +1,8 @@
+#N canvas 1 57 287 208 10;
+#X text 16 29 Comment: Taken from Andy Farnell's work.;
+#X text 17 10 Description: Generates a distant rumble.;
+#X obj 21 85 mtl/rumble~;
+#X obj 21 123 mtl/out~;
+#X text 21 50 tags: synthesize~;
+#X connect 2 0 3 0;
+#X connect 2 0 3 1;
diff --git a/rumble~.pd b/rumble~.pd
new file mode 100644
index 0000000..1a1dde5
--- /dev/null
+++ b/rumble~.pd
@@ -0,0 +1,24 @@
+#N canvas 545 200 450 300 10;
+#N canvas 1 57 170 271 lapping 0;
+#X obj 21 129 hip~ 25;
+#X obj 21 86 hip~ 25;
+#X obj 21 65 *~ 100;
+#X obj 20 177 outlet~;
+#X obj 21 12 inlet~;
+#X floatatom 114 52 5 0 0 0 - - -;
+#X floatatom 123 21 5 0 0 0 - - -;
+#X obj 21 40 bp~ 30 14;
+#X obj 21 153 *~ 0.5;
+#X connect 0 0 8 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 4 0 7 0;
+#X connect 5 0 7 1;
+#X connect 6 0 7 2;
+#X connect 7 0 2 0;
+#X connect 8 0 3 0;
+#X restore 105 203 pd lapping;
+#X obj 113 183 noise~;
+#X obj 128 250 outlet~;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
diff --git a/sawor~-help.pd b/sawor~-help.pd
new file mode 100644
index 0000000..eb712ce
--- /dev/null
+++ b/sawor~-help.pd
@@ -0,0 +1,46 @@
+#N canvas 195 83 473 347 10;
+#X obj 42 181 notein;
+#X text 28 10 Description: Midi instrument using a simple phasor~;
+#X floatatom 128 184 5 0 0 0 - - -;
+#X floatatom 169 184 5 0 0 0 - - -;
+#X floatatom 210 184 5 0 0 0 - - -;
+#X floatatom 90 185 5 0 0 0 - - -;
+#X obj 33 57 mtl/piano 1;
+#X obj 32 266 mtl/out~;
+#X text 86 165 ADSR;
+#X obj 42 210 pack;
+#X text 28 24 tags: instrument~;
+#X obj 33 237 mtl/sawor~;
+#N canvas 1 57 450 300 adsr 0;
+#X obj 67 80 pack f f f f;
+#X obj 68 50 t b f;
+#X obj 109 50 t b f;
+#X obj 151 51 t b f;
+#X obj 70 114 outlet;
+#X obj 64 21 inlet;
+#X obj 104 21 inlet;
+#X obj 144 21 inlet;
+#X obj 184 21 inlet;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 1 1 0 1;
+#X connect 2 0 0 0;
+#X connect 2 1 0 2;
+#X connect 3 0 0 0;
+#X connect 3 1 0 3;
+#X connect 5 0 0 0;
+#X connect 6 0 1 0;
+#X connect 7 0 2 0;
+#X connect 8 0 3 0;
+#X restore 90 213 pd adsr;
+#X connect 0 0 9 0;
+#X connect 0 1 9 1;
+#X connect 2 0 12 1;
+#X connect 3 0 12 2;
+#X connect 4 0 12 3;
+#X connect 5 0 12 0;
+#X connect 6 0 11 0;
+#X connect 9 0 11 0;
+#X connect 11 0 7 0;
+#X connect 11 0 7 1;
+#X connect 12 0 11 1;
diff --git a/sawor~.pd b/sawor~.pd
new file mode 100644
index 0000000..89672e1
--- /dev/null
+++ b/sawor~.pd
@@ -0,0 +1,29 @@
+#N canvas 318 92 751 384 10;
+#X obj 114 5 inlet;
+#X obj 320 312 outlet~;
+#X obj 327 278 *~;
+#X obj 112 70 unpack f f;
+#X obj 110 185 phasor~ 0;
+#X obj 115 135 mtof;
+#X text 489 258 Todo: allow override adsr;
+#X obj 505 16 inlet;
+#X obj 509 72 unpack f f f f;
+#X obj 472 188 ./adsr~;
+#X obj 199 187 *~ 2;
+#X obj 249 204 -~ 1;
+#X obj 112 160 * -1;
+#X connect 0 0 3 0;
+#X connect 2 0 1 0;
+#X connect 3 0 5 0;
+#X connect 3 1 9 0;
+#X connect 4 0 10 0;
+#X connect 5 0 12 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 1;
+#X connect 8 1 9 2;
+#X connect 8 2 9 3;
+#X connect 8 3 9 4;
+#X connect 9 0 2 1;
+#X connect 10 0 11 0;
+#X connect 11 0 2 0;
+#X connect 12 0 4 0;
diff --git a/scaleSmart-help.pd b/scaleSmart-help.pd
new file mode 100644
index 0000000..a2742f3
--- /dev/null
+++ b/scaleSmart-help.pd
@@ -0,0 +1,36 @@
+#N canvas 649 57 790 563 12;
+#X floatatom 48 244 5 0 0 1 Input - -;
+#X floatatom 49 404 5 0 1 1 Normalized - -;
+#X floatatom 175 369 5 0 0 1 Min - -;
+#X floatatom 276 314 5 0 0 1 Max - -;
+#X obj 178 396 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -1
+-262144 -1 0 1;
+#X obj 279 340 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -1
+-262144 -1 0 1;
+#X obj 53 442 hsl 128 15 0 1 0 0 empty empty empty -2 -6 0 8 -1 -262144
+-1 0 1;
+#X text 14 31 released on : 2006/07/02;
+#X obj 335 269 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 16 -13 Description: smart scaling of a number stream;
+#X text 15 9 contact: mrtoftrash@gmail.com;
+#X text 399 217 Hold time : milliseconds before tightening;
+#X text 404 238 Tightening time : milliseconds it takes to tighten
+the scale's range.;
+#X text 13 67 Dynamically sets the scale range based on the minimum
+and maximum values of a number stream.;
+#X text 13 103 The problem with most auto-scalers is that they tend
+to lose sensitivity over time.;
+#X text 16 143 This smart scaler solves this problem by "tightening"
+the minimum and maximum values around the last input after a set holding
+time.;
+#X obj 48 278 mtl/scaleSmart 1000 10000;
+#X text 18 49 tags: math;
+#X connect 0 0 16 0;
+#X connect 1 0 6 0;
+#X connect 2 0 4 0;
+#X connect 3 0 5 0;
+#X connect 8 0 16 1;
+#X connect 16 0 1 0;
+#X connect 16 1 2 0;
+#X connect 16 2 3 0;
diff --git a/scaleSmart.pd b/scaleSmart.pd
new file mode 100644
index 0000000..88f91d8
--- /dev/null
+++ b/scaleSmart.pd
@@ -0,0 +1,128 @@
+#N canvas 0 0 1012 679 10;
+#X text 1070 618 max output;
+#X obj 39 13 inlet;
+#N canvas 240 80 585 580 scale_it 0;
+#X obj 154 23 inlet;
+#X text 194 22 value;
+#X obj 278 35 inlet;
+#X text 323 26 min;
+#X obj 391 30 inlet;
+#X text 430 30 max;
+#X obj 152 471 outlet;
+#X text 198 473 result;
+#X obj 156 280 sel 0;
+#X obj 156 232 -;
+#X obj 198 324 expr $f1/($f3-$f2);
+#X msg 132 326 0;
+#X connect 0 0 9 0;
+#X connect 2 0 9 1;
+#X connect 2 0 10 1;
+#X connect 4 0 10 2;
+#X connect 8 0 11 0;
+#X connect 8 1 10 0;
+#X connect 9 0 8 0;
+#X connect 10 0 6 0;
+#X connect 11 0 6 0;
+#X restore 46 521 pd scale_it;
+#X obj 241 369 line;
+#X obj 40 242 t f f f;
+#X obj 46 651 outlet;
+#X obj 303 635 outlet;
+#X obj 239 288 spigot;
+#X obj 168 56 t b b;
+#X msg 271 256 0;
+#X msg 222 206 1;
+#X obj 562 334 line;
+#X obj 562 263 spigot;
+#X obj 490 42 t b b;
+#X msg 554 52 0;
+#X obj 525 640 outlet;
+#X obj 234 248 f;
+#X obj 164 185 t b b;
+#X msg 455 192 1;
+#X obj 520 190 f;
+#X obj 521 156 t b b;
+#X obj 80 389 t f f b f;
+#X obj 430 400 t f f b f;
+#X msg 241 340 \$1 \$2;
+#X msg 561 312 \$1 \$2;
+#X text 568 639 maximum unscaled value;
+#X text 353 637 minimum unscaled value;
+#X text 78 15 unscaled values;
+#X obj 504 87 sel 0;
+#X obj 156 101 sel 0;
+#X obj 185 158 delay;
+#X obj 612 122 delay;
+#X obj 74 310 moses 1e+09;
+#X obj 323 338 moses -1e+09;
+#X obj 240 393 t f f;
+#X obj 518 445 t f f;
+#X msg 404 123 -1e+09;
+#X obj 390 16 inlet;
+#X msg 334 75 1e+09;
+#X msg 358 213 stop;
+#X text 88 649 normalized;
+#X obj 241 313 pack f \$2;
+#X obj 504 65 f \$1;
+#X obj 563 287 pack f \$2;
+#X obj 156 79 f \$1;
+#X connect 1 0 4 0;
+#X connect 2 0 5 0;
+#X connect 3 0 32 1;
+#X connect 3 0 34 0;
+#X connect 4 0 2 0;
+#X connect 4 1 32 0;
+#X connect 4 2 33 0;
+#X connect 7 0 41 0;
+#X connect 8 0 44 0;
+#X connect 8 1 9 0;
+#X connect 9 0 7 1;
+#X connect 10 0 7 1;
+#X connect 11 0 33 1;
+#X connect 11 0 35 0;
+#X connect 12 0 43 0;
+#X connect 13 0 42 0;
+#X connect 13 1 14 0;
+#X connect 14 0 12 1;
+#X connect 16 0 7 0;
+#X connect 17 0 16 0;
+#X connect 17 1 10 0;
+#X connect 18 0 12 1;
+#X connect 19 0 12 0;
+#X connect 20 0 19 0;
+#X connect 20 1 18 0;
+#X connect 21 0 2 1;
+#X connect 21 1 3 0;
+#X connect 21 2 8 0;
+#X connect 21 3 16 1;
+#X connect 22 0 2 2;
+#X connect 22 1 11 0;
+#X connect 22 2 13 0;
+#X connect 22 3 19 1;
+#X connect 23 0 3 0;
+#X connect 24 0 11 0;
+#X connect 28 1 31 0;
+#X connect 29 1 30 0;
+#X connect 30 0 17 0;
+#X connect 31 0 20 0;
+#X connect 32 0 21 0;
+#X connect 32 1 16 0;
+#X connect 33 0 19 0;
+#X connect 33 1 22 0;
+#X connect 34 0 2 1;
+#X connect 34 1 6 0;
+#X connect 35 0 2 2;
+#X connect 35 1 15 0;
+#X connect 36 0 33 1;
+#X connect 37 0 36 0;
+#X connect 37 0 38 0;
+#X connect 37 0 39 0;
+#X connect 38 0 32 1;
+#X connect 39 0 30 0;
+#X connect 39 0 3 0;
+#X connect 39 0 11 0;
+#X connect 39 0 31 0;
+#X connect 41 0 23 0;
+#X connect 42 0 28 0;
+#X connect 43 0 24 0;
+#X connect 44 0 29 0;
diff --git a/seq1x8-help.pd b/seq1x8-help.pd
new file mode 100644
index 0000000..1a2575b
--- /dev/null
+++ b/seq1x8-help.pd
@@ -0,0 +1,58 @@
+#N canvas 452 65 723 413 10;
+#X obj 100 261 line~;
+#X obj 23 240 noise~;
+#X obj 23 261 lop~ 12000;
+#X obj 23 283 *~;
+#X msg 100 242 1 \, 0 100;
+#X obj 327 257 line~;
+#X obj 237 293 *~;
+#X obj 402 62 loadbang;
+#X obj 238 239 phasor~ 4440;
+#X obj 237 260 lop~ 1660;
+#X msg 403 117 1 0 1 0 1 0 1 1;
+#X msg 327 238 1 \, 0 150;
+#X text 390 185 Right outlet outputs the current pattern on every modification
+;
+#X text 13 10 Description: An 8 step beat sequencer.;
+#X msg 408 255 1 0 1 0 1 0 1 1;
+#X obj 14 186 mtl/seq1x8;
+#X obj 92 329 mtl/out~;
+#X text 416 96 Right inlet sets pattern;
+#X floatatom 14 166 5 0 0 0 - - -;
+#X floatatom 220 165 5 0 0 0 - - -;
+#X obj 220 186 mtl/seq1x8;
+#X obj 407 229 cyclone/prepend set;
+#X text 15 23 tags: sequencing;
+#X obj 325 24 mtl/clkMaster 120;
+#X obj 13 136 mtl/clkSlave 4 8;
+#X obj 14 92 loadbang;
+#X obj 15 114 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 220 139 mtl/clkSlave 4 8;
+#X obj 221 95 loadbang;
+#X obj 222 117 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X connect 0 0 3 1;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 16 0;
+#X connect 4 0 0 0;
+#X connect 5 0 6 1;
+#X connect 6 0 16 1;
+#X connect 7 0 10 0;
+#X connect 8 0 9 0;
+#X connect 9 0 6 0;
+#X connect 10 0 20 1;
+#X connect 11 0 5 0;
+#X connect 15 0 4 0;
+#X connect 18 0 15 0;
+#X connect 19 0 20 0;
+#X connect 20 0 11 0;
+#X connect 20 1 21 0;
+#X connect 21 0 14 0;
+#X connect 24 0 18 0;
+#X connect 25 0 26 0;
+#X connect 26 0 24 0;
+#X connect 27 0 19 0;
+#X connect 28 0 29 0;
+#X connect 29 0 27 0;
diff --git a/seq1x8.pd b/seq1x8.pd
new file mode 100644
index 0000000..8ff17b9
--- /dev/null
+++ b/seq1x8.pd
@@ -0,0 +1,150 @@
+#N canvas 306 265 740 351 10;
+#X obj 18 159 spigot;
+#X obj 74 74 select 0 1 2 3 4 5 6 7;
+#X obj 45 177 spigot;
+#X obj 61 196 spigot;
+#X obj 88 214 spigot;
+#X obj 102 232 spigot;
+#X obj 129 250 spigot;
+#X obj 145 269 spigot;
+#X obj 172 287 spigot;
+#X obj 93 308 outlet;
+#X obj 73 46 % 8;
+#X obj 68 -12 inlet;
+#X obj 209 -19 inlet;
+#X obj 209 5 unpack f f f f f f f f;
+#X obj 104 117 tgl 15 0 empty empty empty 20 7 0 8 -33289 -262144 -1
+1 1;
+#X obj 122 117 tgl 15 0 empty empty empty 20 7 0 8 -33289 -262144 -1
+0 1;
+#X obj 140 117 tgl 15 0 empty empty empty 20 7 0 8 -33289 -262144 -1
+0 1;
+#X obj 158 117 tgl 15 0 empty empty empty 20 7 0 8 -33289 -262144 -1
+1 1;
+#X obj 176 117 tgl 15 0 empty empty empty 20 7 0 8 -33289 -262144 -1
+0 1;
+#X obj 194 117 tgl 15 0 empty empty empty 20 7 0 8 -33289 -262144 -1
+0 1;
+#X obj 212 117 tgl 15 0 empty empty empty 20 7 0 8 -33289 -262144 -1
+1 1;
+#X obj 230 117 tgl 15 0 empty empty empty 20 7 0 8 -33289 -262144 -1
+0 1;
+#X obj 241 199 t b f;
+#X obj 238 260 pack f f f f f f f f;
+#X obj 284 200 t b f;
+#X obj 325 200 t b f;
+#X obj 368 201 t b f;
+#X obj 410 201 t b f;
+#X obj 453 202 t b f;
+#X obj 494 202 t b f;
+#X obj 253 293 outlet;
+#X obj 49 11 route list;
+#X obj 315 50 t f f;
+#X msg 315 71 set \$1;
+#X obj 365 50 t f f;
+#X msg 364 71 set \$1;
+#X obj 416 50 t f f;
+#X msg 416 71 set \$1;
+#X obj 466 50 t f f;
+#X msg 466 71 set \$1;
+#X obj 518 47 t f f;
+#X msg 518 68 set \$1;
+#X obj 568 47 t f f;
+#X msg 568 68 set \$1;
+#X obj 619 47 t f f;
+#X msg 620 69 set \$1;
+#X obj 669 47 t f f;
+#X msg 669 68 set \$1;
+#X connect 0 0 9 0;
+#X connect 1 0 0 0;
+#X connect 1 1 2 0;
+#X connect 1 2 3 0;
+#X connect 1 3 4 0;
+#X connect 1 4 5 0;
+#X connect 1 5 6 0;
+#X connect 1 6 7 0;
+#X connect 1 7 8 0;
+#X connect 2 0 9 0;
+#X connect 3 0 9 0;
+#X connect 4 0 9 0;
+#X connect 5 0 9 0;
+#X connect 6 0 9 0;
+#X connect 7 0 9 0;
+#X connect 8 0 9 0;
+#X connect 10 0 1 0;
+#X connect 11 0 31 0;
+#X connect 12 0 13 0;
+#X connect 13 0 32 0;
+#X connect 13 1 34 0;
+#X connect 13 2 36 0;
+#X connect 13 3 38 0;
+#X connect 13 4 40 0;
+#X connect 13 5 42 0;
+#X connect 13 6 44 0;
+#X connect 13 7 46 0;
+#X connect 14 0 0 1;
+#X connect 14 0 23 0;
+#X connect 15 0 2 1;
+#X connect 15 0 22 0;
+#X connect 16 0 3 1;
+#X connect 16 0 24 0;
+#X connect 17 0 4 1;
+#X connect 17 0 25 0;
+#X connect 18 0 5 1;
+#X connect 18 0 26 0;
+#X connect 19 0 6 1;
+#X connect 19 0 27 0;
+#X connect 20 0 7 1;
+#X connect 20 0 28 0;
+#X connect 21 0 8 1;
+#X connect 21 0 29 0;
+#X connect 22 0 23 0;
+#X connect 22 1 23 1;
+#X connect 23 0 30 0;
+#X connect 24 0 23 0;
+#X connect 24 1 23 2;
+#X connect 25 0 23 0;
+#X connect 25 1 23 3;
+#X connect 26 0 23 0;
+#X connect 26 1 23 4;
+#X connect 27 0 23 0;
+#X connect 27 1 23 5;
+#X connect 28 0 23 0;
+#X connect 28 1 23 6;
+#X connect 29 0 23 0;
+#X connect 29 1 23 7;
+#X connect 31 0 13 0;
+#X connect 31 1 10 0;
+#X connect 32 0 33 0;
+#X connect 32 1 23 0;
+#X connect 32 1 0 1;
+#X connect 33 0 14 0;
+#X connect 34 0 35 0;
+#X connect 34 1 23 1;
+#X connect 34 1 2 1;
+#X connect 35 0 15 0;
+#X connect 36 0 37 0;
+#X connect 36 1 23 2;
+#X connect 36 1 3 1;
+#X connect 37 0 16 0;
+#X connect 38 0 39 0;
+#X connect 38 1 23 3;
+#X connect 38 1 4 1;
+#X connect 39 0 17 0;
+#X connect 40 0 41 0;
+#X connect 40 1 23 4;
+#X connect 40 1 5 1;
+#X connect 41 0 18 0;
+#X connect 42 0 43 0;
+#X connect 42 1 23 5;
+#X connect 42 1 6 1;
+#X connect 43 0 19 0;
+#X connect 44 0 45 0;
+#X connect 44 1 23 6;
+#X connect 44 1 7 1;
+#X connect 45 0 20 0;
+#X connect 46 0 47 0;
+#X connect 46 1 23 7;
+#X connect 46 1 8 1;
+#X connect 47 0 21 0;
+#X coords 0 -1 1 1 150 35 1 100 100;
diff --git a/seq8x8-help.pd b/seq8x8-help.pd
new file mode 100644
index 0000000..d4e82de
--- /dev/null
+++ b/seq8x8-help.pd
@@ -0,0 +1,206 @@
+#N canvas 1117 77 629 562 10;
+#X msg 225 224 6 1 0 0 1 0 0 1;
+#X floatatom 37 158 5 0 0 0 - - -;
+#X obj 36 88 loadbang;
+#X msg 37 448 0 0 0 0 0 1 0 0;
+#N canvas 1281 181 761 308 randomize 0;
+#X obj 136 23 inlet;
+#X obj 136 253 outlet;
+#X obj 135 84 tof/iterate;
+#X msg 135 49 8;
+#X obj 128 134 t f b b b b b b b b b;
+#X obj 134 224 pack f f f f f f f f f;
+#X obj 146 167 random 2;
+#X obj 204 169 random 2;
+#X obj 259 172 random 2;
+#X obj 317 174 random 2;
+#X obj 376 173 random 2;
+#X obj 434 175 random 2;
+#X obj 489 178 random 2;
+#X obj 547 180 random 2;
+#X obj 131 109 + 1;
+#X connect 0 0 3 0;
+#X connect 2 0 14 0;
+#X connect 3 0 2 0;
+#X connect 4 0 5 0;
+#X connect 4 1 6 0;
+#X connect 4 2 7 0;
+#X connect 4 3 8 0;
+#X connect 4 4 9 0;
+#X connect 4 5 10 0;
+#X connect 4 6 11 0;
+#X connect 4 7 12 0;
+#X connect 4 8 13 0;
+#X connect 5 0 1 0;
+#X connect 6 0 5 1;
+#X connect 7 0 5 2;
+#X connect 8 0 5 3;
+#X connect 9 0 5 4;
+#X connect 10 0 5 5;
+#X connect 11 0 5 6;
+#X connect 12 0 5 7;
+#X connect 13 0 5 8;
+#X connect 14 0 4 0;
+#X restore 268 157 pd randomize;
+#X obj 37 203 ./seq8x8;
+#X obj 37 423 cyclone/prepend set;
+#X obj 268 114 loadbang;
+#X obj 268 137 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 37 21 cnv 15 380 60 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X text 41 26 description: Eight 8 step step beat sequencers.;
+#X text 221 202 column number followed by the eigth values (toggles)
+;
+#X obj 182 487 mtl/out~;
+#N canvas 1024 0 1018 716 synth~ 0;
+#X obj 97 608 outlet~;
+#X obj 65 15 inlet;
+#X obj 336 600 outlet~;
+#X obj 42 327 mtof;
+#X obj 42 287 loadbang;
+#X obj 104 327 mtof;
+#X obj 104 287 loadbang;
+#X obj 166 327 mtof;
+#X obj 166 287 loadbang;
+#X obj 228 327 mtof;
+#X obj 228 287 loadbang;
+#X obj 241 469 +~;
+#X obj 292 325 mtof;
+#X obj 292 285 loadbang;
+#X obj 354 325 mtof;
+#X obj 354 285 loadbang;
+#X obj 416 325 mtof;
+#X obj 416 285 loadbang;
+#X obj 478 325 mtof;
+#X obj 478 285 loadbang;
+#X obj 187 105 unpack f f f f f f f f;
+#X msg 42 307 60;
+#X msg 104 307 62;
+#X msg 166 307 64;
+#X msg 228 307 65;
+#X msg 291 305 67;
+#X msg 354 305 69;
+#X msg 416 305 71;
+#X msg 478 305 72;
+#X obj 42 347 osc~;
+#X obj 104 347 osc~;
+#X obj 166 347 osc~;
+#X obj 228 347 osc~;
+#X obj 292 345 osc~;
+#X obj 354 345 osc~;
+#X obj 416 345 osc~;
+#X obj 478 345 osc~;
+#X obj 234 523 mtl/limit~;
+#X obj 138 214 line~;
+#X obj 41 368 *~;
+#X obj 104 368 *~;
+#X obj 166 368 *~;
+#X obj 228 368 *~;
+#X obj 292 366 *~;
+#X obj 353 366 *~;
+#X obj 416 366 *~;
+#X obj 478 366 *~;
+#X obj 190 215 line~;
+#X obj 236 215 line~;
+#X obj 284 213 line~;
+#X obj 326 211 line~;
+#X obj 370 212 line~;
+#X obj 417 211 line~;
+#X obj 473 207 line~;
+#X msg 137 186 \$1 10;
+#X msg 188 188 \$1 10;
+#X msg 235 187 \$1 10;
+#X msg 284 185 \$1 10;
+#X msg 326 183 \$1 10;
+#X msg 370 184 \$1 10;
+#X msg 417 183 \$1 10;
+#X msg 472 179 \$1 10;
+#X connect 1 0 20 0;
+#X connect 3 0 29 0;
+#X connect 4 0 21 0;
+#X connect 5 0 30 0;
+#X connect 6 0 22 0;
+#X connect 7 0 31 0;
+#X connect 8 0 23 0;
+#X connect 9 0 32 0;
+#X connect 10 0 24 0;
+#X connect 11 0 37 0;
+#X connect 11 0 37 1;
+#X connect 12 0 33 0;
+#X connect 13 0 25 0;
+#X connect 14 0 34 0;
+#X connect 15 0 26 0;
+#X connect 16 0 35 0;
+#X connect 17 0 27 0;
+#X connect 18 0 36 0;
+#X connect 19 0 28 0;
+#X connect 20 0 54 0;
+#X connect 20 1 55 0;
+#X connect 20 2 56 0;
+#X connect 20 3 57 0;
+#X connect 20 4 58 0;
+#X connect 20 5 59 0;
+#X connect 20 6 60 0;
+#X connect 20 7 61 0;
+#X connect 21 0 3 0;
+#X connect 22 0 5 0;
+#X connect 23 0 7 0;
+#X connect 24 0 9 0;
+#X connect 25 0 12 0;
+#X connect 26 0 14 0;
+#X connect 27 0 16 0;
+#X connect 28 0 18 0;
+#X connect 29 0 39 0;
+#X connect 30 0 40 0;
+#X connect 31 0 41 0;
+#X connect 32 0 42 0;
+#X connect 33 0 43 0;
+#X connect 34 0 44 0;
+#X connect 35 0 45 0;
+#X connect 36 0 46 0;
+#X connect 37 0 0 0;
+#X connect 37 1 2 0;
+#X connect 38 0 39 1;
+#X connect 39 0 11 0;
+#X connect 40 0 11 0;
+#X connect 41 0 11 1;
+#X connect 42 0 11 1;
+#X connect 43 0 11 0;
+#X connect 44 0 11 1;
+#X connect 45 0 11 1;
+#X connect 46 0 11 0;
+#X connect 47 0 40 1;
+#X connect 48 0 41 1;
+#X connect 49 0 42 1;
+#X connect 50 0 43 1;
+#X connect 51 0 44 1;
+#X connect 52 0 45 1;
+#X connect 53 0 46 1;
+#X connect 54 0 38 0;
+#X connect 55 0 47 0;
+#X connect 56 0 48 0;
+#X connect 57 0 49 0;
+#X connect 58 0 50 0;
+#X connect 59 0 51 0;
+#X connect 60 0 52 0;
+#X connect 61 0 53 0;
+#X restore 212 431 pd synth~;
+#X text 42 53 tags: sequencing;
+#X obj 382 101 mtl/clkMaster 120;
+#X obj 36 110 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 36 132 mtl/clkSlave 2 8;
+#X connect 0 0 5 1;
+#X connect 1 0 5 0;
+#X connect 2 0 16 0;
+#X connect 4 0 5 1;
+#X connect 5 0 6 0;
+#X connect 5 0 13 0;
+#X connect 6 0 3 0;
+#X connect 7 0 8 0;
+#X connect 8 0 4 0;
+#X connect 13 0 12 0;
+#X connect 13 1 12 1;
+#X connect 16 0 17 0;
+#X connect 17 0 1 0;
diff --git a/seq8x8.pd b/seq8x8.pd
new file mode 100644
index 0000000..3a3d1aa
--- /dev/null
+++ b/seq8x8.pd
@@ -0,0 +1,488 @@
+#N canvas 1024 0 1005 692 10;
+#X obj 266 182 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+1 1;
+#X obj 266 200 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X msg 67 362 1 \$1;
+#X obj 266 218 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 266 236 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 266 254 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 266 272 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 266 290 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 266 308 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X msg 67 382 2 \$1;
+#X msg 67 402 3 \$1;
+#X msg 67 422 4 \$1;
+#X msg 67 443 5 \$1;
+#X msg 67 503 8 \$1;
+#X msg 67 483 7 \$1;
+#X msg 67 463 6 \$1;
+#X msg 67 524 1 \$1 \$2;
+#X obj 554 23 inlet;
+#X obj 554 43 route 1 2 3 4 5 6 7 8;
+#X obj 111 26 inlet;
+#X obj 117 67 unpack f f f f f f f f;
+#X obj 284 182 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 284 200 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+1 1;
+#X msg 130 372 1 \$1;
+#X obj 284 218 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 284 236 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 284 254 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 284 272 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 284 290 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 284 308 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X msg 130 392 2 \$1;
+#X msg 130 412 3 \$1;
+#X msg 130 432 4 \$1;
+#X msg 130 453 5 \$1;
+#X msg 130 513 8 \$1;
+#X msg 130 493 7 \$1;
+#X msg 130 473 6 \$1;
+#X obj 135 86 unpack f f f f f f f f;
+#X obj 302 182 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 302 200 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X msg 192 373 1 \$1;
+#X obj 302 218 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+1 1;
+#X obj 302 236 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 302 254 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 302 272 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 302 290 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 302 308 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X msg 192 393 2 \$1;
+#X msg 192 413 3 \$1;
+#X msg 192 433 4 \$1;
+#X msg 192 454 5 \$1;
+#X msg 192 514 8 \$1;
+#X msg 192 494 7 \$1;
+#X msg 192 474 6 \$1;
+#X obj 153 105 unpack f f f f f f f f;
+#X obj 320 182 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 320 200 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X msg 256 364 1 \$1;
+#X obj 320 218 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 320 236 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+1 1;
+#X obj 320 254 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 320 272 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 320 290 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 320 308 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X msg 256 384 2 \$1;
+#X msg 256 404 3 \$1;
+#X msg 256 424 4 \$1;
+#X msg 256 445 5 \$1;
+#X msg 256 505 8 \$1;
+#X msg 256 485 7 \$1;
+#X msg 256 465 6 \$1;
+#X obj 171 124 unpack f f f f f f f f;
+#X msg 130 553 2 \$1 \$2;
+#X msg 192 573 3 \$1 \$2;
+#X msg 256 583 4 \$1 \$2;
+#X obj 338 182 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 338 200 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X msg 303 386 1 \$1;
+#X obj 338 218 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 338 236 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 338 254 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 338 272 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 338 290 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 338 308 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X msg 303 406 2 \$1;
+#X msg 303 426 3 \$1;
+#X msg 303 446 4 \$1;
+#X msg 303 467 5 \$1;
+#X msg 303 527 8 \$1;
+#X msg 303 507 7 \$1;
+#X msg 303 487 6 \$1;
+#X obj 335 67 unpack f f f f f f f f;
+#X obj 356 182 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 356 200 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X msg 376 376 1 \$1;
+#X obj 356 218 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 356 236 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 356 254 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 356 272 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+1 1;
+#X obj 356 290 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 356 308 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X msg 376 396 2 \$1;
+#X msg 376 416 3 \$1;
+#X msg 376 436 4 \$1;
+#X msg 376 457 5 \$1;
+#X msg 376 517 8 \$1;
+#X msg 376 497 7 \$1;
+#X msg 376 477 6 \$1;
+#X obj 353 86 unpack f f f f f f f f;
+#X obj 374 182 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 374 200 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X msg 452 371 1 \$1;
+#X obj 374 218 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 374 236 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 374 254 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 374 272 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 374 290 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+1 1;
+#X obj 374 308 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X msg 452 391 2 \$1;
+#X msg 452 411 3 \$1;
+#X msg 452 431 4 \$1;
+#X msg 452 452 5 \$1;
+#X msg 452 512 8 \$1;
+#X msg 452 492 7 \$1;
+#X msg 452 472 6 \$1;
+#X obj 371 105 unpack f f f f f f f f;
+#X obj 392 182 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 392 200 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X msg 611 338 1 \$1;
+#X obj 392 218 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 392 236 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 392 254 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 392 272 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 392 290 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+0 1;
+#X obj 392 308 tgl 15 0 empty empty empty 20 7 2 8 -33289 -262144 -1
+1 1;
+#X msg 608 366 2 \$1;
+#X msg 608 386 3 \$1;
+#X msg 608 406 4 \$1;
+#X msg 608 427 5 \$1;
+#X msg 608 487 8 \$1;
+#X msg 608 467 7 \$1;
+#X msg 608 447 6 \$1;
+#X obj 389 124 unpack f f f f f f f f;
+#X msg 303 548 5 \$1 \$2;
+#X msg 376 557 6 \$1 \$2;
+#X msg 452 571 7 \$1 \$2;
+#X msg 608 565 8 \$1 \$2;
+#X obj 224 844 outlet;
+#X obj 356 170 cnv 10 15 10 empty \$0current empty 20 12 0 14 -258113
+-66577 0;
+#X obj 16 288 s \$0current;
+#X obj -16 151 mod 8;
+#X obj 6 189 change;
+#X obj 9 219 * 18;
+#X obj 404 786 unpack f f f f f f f f;
+#X obj 345 824 sel 1;
+#X obj 385 824 sel 1;
+#X obj 424 823 sel 1;
+#X obj 463 822 sel 1;
+#X obj 502 823 sel 1;
+#X obj 571 817 sel 1;
+#X obj 609 817 sel 1;
+#X obj 646 817 sel 1;
+#X obj 278 805 t a a;
+#X obj 323 847 outlet;
+#X obj 374 849 outlet;
+#X obj 426 849 outlet;
+#X obj 474 850 outlet;
+#X obj 611 843 outlet;
+#X obj 566 855 outlet;
+#X obj 658 836 outlet;
+#X obj 517 847 outlet;
+#X obj -24 645 + 1;
+#X msg 265 665 element \$1 \$2 \$3;
+#X obj 221 762 iemmatrix/matrix;
+#X obj 357 703 loadbang;
+#X obj 357 729 iemmatrix/mtx_zeros 8 8;
+#X msg -35 688 row \$1;
+#X floatatom 2 59 5 0 0 0 - - -;
+#X msg 7 263 pos \$1 170;
+#X obj 9 242 + 266;
+#X connect 0 0 2 0;
+#X connect 1 0 9 0;
+#X connect 2 0 16 0;
+#X connect 3 0 10 0;
+#X connect 4 0 11 0;
+#X connect 5 0 12 0;
+#X connect 6 0 15 0;
+#X connect 7 0 14 0;
+#X connect 8 0 13 0;
+#X connect 9 0 16 0;
+#X connect 10 0 16 0;
+#X connect 11 0 16 0;
+#X connect 12 0 16 0;
+#X connect 13 0 16 0;
+#X connect 14 0 16 0;
+#X connect 15 0 16 0;
+#X connect 16 0 172 0;
+#X connect 17 0 18 0;
+#X connect 18 0 20 0;
+#X connect 18 1 37 0;
+#X connect 18 2 54 0;
+#X connect 18 3 71 0;
+#X connect 18 4 91 0;
+#X connect 18 5 108 0;
+#X connect 18 6 125 0;
+#X connect 18 7 142 0;
+#X connect 19 0 150 0;
+#X connect 20 0 0 0;
+#X connect 20 1 1 0;
+#X connect 20 2 3 0;
+#X connect 20 3 4 0;
+#X connect 20 4 5 0;
+#X connect 20 5 6 0;
+#X connect 20 6 7 0;
+#X connect 20 7 8 0;
+#X connect 21 0 23 0;
+#X connect 22 0 30 0;
+#X connect 23 0 72 0;
+#X connect 24 0 31 0;
+#X connect 25 0 32 0;
+#X connect 26 0 33 0;
+#X connect 27 0 36 0;
+#X connect 28 0 35 0;
+#X connect 29 0 34 0;
+#X connect 30 0 72 0;
+#X connect 31 0 72 0;
+#X connect 32 0 72 0;
+#X connect 33 0 72 0;
+#X connect 34 0 72 0;
+#X connect 35 0 72 0;
+#X connect 36 0 72 0;
+#X connect 37 0 21 0;
+#X connect 37 1 22 0;
+#X connect 37 2 24 0;
+#X connect 37 3 25 0;
+#X connect 37 4 26 0;
+#X connect 37 5 27 0;
+#X connect 37 6 28 0;
+#X connect 37 7 29 0;
+#X connect 38 0 40 0;
+#X connect 39 0 47 0;
+#X connect 40 0 73 0;
+#X connect 41 0 48 0;
+#X connect 42 0 49 0;
+#X connect 43 0 50 0;
+#X connect 44 0 53 0;
+#X connect 45 0 52 0;
+#X connect 46 0 51 0;
+#X connect 47 0 73 0;
+#X connect 48 0 73 0;
+#X connect 49 0 73 0;
+#X connect 50 0 73 0;
+#X connect 51 0 73 0;
+#X connect 52 0 73 0;
+#X connect 53 0 73 0;
+#X connect 54 0 38 0;
+#X connect 54 1 39 0;
+#X connect 54 2 41 0;
+#X connect 54 3 42 0;
+#X connect 54 4 43 0;
+#X connect 54 5 44 0;
+#X connect 54 6 45 0;
+#X connect 54 7 46 0;
+#X connect 55 0 57 0;
+#X connect 56 0 64 0;
+#X connect 57 0 74 0;
+#X connect 58 0 65 0;
+#X connect 59 0 66 0;
+#X connect 60 0 67 0;
+#X connect 61 0 70 0;
+#X connect 62 0 69 0;
+#X connect 63 0 68 0;
+#X connect 64 0 74 0;
+#X connect 65 0 74 0;
+#X connect 66 0 74 0;
+#X connect 67 0 74 0;
+#X connect 68 0 74 0;
+#X connect 69 0 74 0;
+#X connect 70 0 74 0;
+#X connect 71 0 55 0;
+#X connect 71 1 56 0;
+#X connect 71 2 58 0;
+#X connect 71 3 59 0;
+#X connect 71 4 60 0;
+#X connect 71 5 61 0;
+#X connect 71 6 62 0;
+#X connect 71 7 63 0;
+#X connect 72 0 172 0;
+#X connect 73 0 172 0;
+#X connect 74 0 172 0;
+#X connect 75 0 77 0;
+#X connect 76 0 84 0;
+#X connect 77 0 143 0;
+#X connect 78 0 85 0;
+#X connect 79 0 86 0;
+#X connect 80 0 87 0;
+#X connect 81 0 90 0;
+#X connect 82 0 89 0;
+#X connect 83 0 88 0;
+#X connect 84 0 143 0;
+#X connect 85 0 143 0;
+#X connect 86 0 143 0;
+#X connect 87 0 143 0;
+#X connect 88 0 143 0;
+#X connect 89 0 143 0;
+#X connect 90 0 143 0;
+#X connect 91 0 75 0;
+#X connect 91 1 76 0;
+#X connect 91 2 78 0;
+#X connect 91 3 79 0;
+#X connect 91 4 80 0;
+#X connect 91 5 81 0;
+#X connect 91 6 82 0;
+#X connect 91 7 83 0;
+#X connect 92 0 94 0;
+#X connect 93 0 101 0;
+#X connect 94 0 144 0;
+#X connect 95 0 102 0;
+#X connect 96 0 103 0;
+#X connect 97 0 104 0;
+#X connect 98 0 107 0;
+#X connect 99 0 106 0;
+#X connect 100 0 105 0;
+#X connect 101 0 144 0;
+#X connect 102 0 144 0;
+#X connect 103 0 144 0;
+#X connect 104 0 144 0;
+#X connect 105 0 144 0;
+#X connect 106 0 144 0;
+#X connect 107 0 144 0;
+#X connect 108 0 92 0;
+#X connect 108 1 93 0;
+#X connect 108 2 95 0;
+#X connect 108 3 96 0;
+#X connect 108 4 97 0;
+#X connect 108 5 98 0;
+#X connect 108 6 99 0;
+#X connect 108 7 100 0;
+#X connect 109 0 111 0;
+#X connect 110 0 118 0;
+#X connect 111 0 145 0;
+#X connect 112 0 119 0;
+#X connect 113 0 120 0;
+#X connect 114 0 121 0;
+#X connect 115 0 124 0;
+#X connect 116 0 123 0;
+#X connect 117 0 122 0;
+#X connect 118 0 145 0;
+#X connect 119 0 145 0;
+#X connect 120 0 145 0;
+#X connect 121 0 145 0;
+#X connect 122 0 145 0;
+#X connect 123 0 145 0;
+#X connect 124 0 145 0;
+#X connect 125 0 109 0;
+#X connect 125 1 110 0;
+#X connect 125 2 112 0;
+#X connect 125 3 113 0;
+#X connect 125 4 114 0;
+#X connect 125 5 115 0;
+#X connect 125 6 116 0;
+#X connect 125 7 117 0;
+#X connect 126 0 128 0;
+#X connect 127 0 135 0;
+#X connect 128 0 146 0;
+#X connect 129 0 136 0;
+#X connect 130 0 137 0;
+#X connect 131 0 138 0;
+#X connect 132 0 141 0;
+#X connect 133 0 140 0;
+#X connect 134 0 139 0;
+#X connect 135 0 146 0;
+#X connect 136 0 146 0;
+#X connect 137 0 146 0;
+#X connect 138 0 146 0;
+#X connect 139 0 146 0;
+#X connect 140 0 146 0;
+#X connect 141 0 146 0;
+#X connect 142 0 126 0;
+#X connect 142 1 127 0;
+#X connect 142 2 129 0;
+#X connect 142 3 130 0;
+#X connect 142 4 131 0;
+#X connect 142 5 132 0;
+#X connect 142 6 133 0;
+#X connect 142 7 134 0;
+#X connect 143 0 172 0;
+#X connect 144 0 172 0;
+#X connect 145 0 172 0;
+#X connect 146 0 172 0;
+#X connect 150 0 151 0;
+#X connect 150 0 171 0;
+#X connect 151 0 152 0;
+#X connect 152 0 179 0;
+#X connect 153 0 154 0;
+#X connect 153 1 155 0;
+#X connect 153 2 156 0;
+#X connect 153 3 157 0;
+#X connect 153 4 158 0;
+#X connect 153 5 159 0;
+#X connect 153 6 160 0;
+#X connect 153 7 161 0;
+#X connect 154 0 163 0;
+#X connect 155 0 164 0;
+#X connect 156 0 165 0;
+#X connect 157 0 166 0;
+#X connect 158 0 170 0;
+#X connect 159 0 168 0;
+#X connect 160 0 167 0;
+#X connect 161 0 169 0;
+#X connect 162 0 147 0;
+#X connect 162 1 153 0;
+#X connect 171 0 176 0;
+#X connect 172 0 173 0;
+#X connect 173 0 162 0;
+#X connect 174 0 175 0;
+#X connect 175 0 173 1;
+#X connect 176 0 173 0;
+#X connect 177 0 150 0;
+#X connect 178 0 149 0;
+#X connect 179 0 178 0;
+#X coords 0 -1 1 1 153 173 1 260 155;
diff --git a/sfIndexer-help.pd b/sfIndexer-help.pd
new file mode 100644
index 0000000..e9759ca
--- /dev/null
+++ b/sfIndexer-help.pd
@@ -0,0 +1,69 @@
+#N canvas 611 66 775 629 10;
+#X obj 14 134 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X text 12 12 description: Loads and stores soundfiles.;
+#X msg 14 503 set \$1 \, bang;
+#X obj 13 563 mtl/out~;
+#X msg 63 285 0;
+#X msg 96 285 1;
+#X msg 130 286 2;
+#X obj 61 253 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X text 84 252 bang: outputs the last loaded soundfile;
+#X text 166 282 float: outputs the previously loaded soundfile at that
+index;
+#X obj 90 401 cyclone/prepend set;
+#X obj 29 452 cyclone/prepend set;
+#X obj 203 326 cyclone/prepend set;
+#X text 185 419 Outlet 2: samplerate length channels;
+#X text 580 343 Outlet 3: index soundfile;
+#X text 202 471 Outlet 1: tables (one table per channel);
+#X text 13 28 tags: tables file~;
+#X obj 528 103 bng 15 250 50 0 empty empty save 17 7 0 10 -262144 -1
+-1;
+#X obj 603 120 bng 15 250 50 0 empty empty load 17 7 0 10 -262144 -1
+-1;
+#X obj 14 326 mtl/sfIndexer /id sfi-help;
+#X obj 14 156 openpanel;
+#X msg 14 181 add \$1;
+#X obj 41 209 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 41 228 openpanel;
+#X text 62 177 "add" soundfile: adds the indicated soundfile;
+#X text 67 205 "symbol": add the soundfile and output it's data.;
+#X text 12 82 sfIndexer will never reload the same soundfile twice.
+It will point to the previously filled tables instead.;
+#X text 13 48 sfIndexer can store and refer to an unlimited number
+of loaded soundfiles.;
+#X obj 14 527 mtl/player~;
+#X obj 409 7 cnv 15 350 80 empty empty empty 20 12 0 14 -232576 -66577
+0;
+#X text 545 9 PARAM ENABLED;
+#X obj 513 66 mtl/param-enabled-help;
+#X text 415 31 The list of loaded soundfiles can be saved and restored
+through the param system.;
+#X msg 90 420;
+#X msg 29 472;
+#X msg 203 346;
+#X obj 528 144 tof/param file;
+#X connect 0 0 20 0;
+#X connect 2 0 28 0;
+#X connect 4 0 19 0;
+#X connect 5 0 19 0;
+#X connect 6 0 19 0;
+#X connect 7 0 19 0;
+#X connect 10 0 33 0;
+#X connect 11 0 34 0;
+#X connect 12 0 35 0;
+#X connect 17 0 36 0;
+#X connect 18 0 36 1;
+#X connect 19 0 2 0;
+#X connect 19 0 11 0;
+#X connect 19 1 10 0;
+#X connect 19 2 12 0;
+#X connect 20 0 21 0;
+#X connect 21 0 19 0;
+#X connect 22 0 23 0;
+#X connect 23 0 19 0;
+#X connect 28 0 3 0;
+#X connect 28 0 3 1;
diff --git a/sfIndexer.pd b/sfIndexer.pd
new file mode 100644
index 0000000..9d4cc66
--- /dev/null
+++ b/sfIndexer.pd
@@ -0,0 +1,272 @@
+#N canvas 1067 100 981 616 10;
+#X obj 171 25 inlet;
+#N canvas 477 373 450 300 \$0tables 0;
+#X restore 437 56 pd \$0tables;
+#N canvas 199 153 767 523 check_if_loaded 0;
+#X obj 93 44 inlet check;
+#X obj 384 36 inlet remove;
+#X obj 86 434 outlet found;
+#X obj 226 426 outlet new;
+#X obj 99 298 ./indexer;
+#X obj 214 42 inlet test;
+#X obj 150 323 route bang;
+#X obj 369 107 t b b;
+#X msg 423 126 clear;
+#X obj 551 200 route clear;
+#X obj 492 438 outlet reset;
+#X obj 614 249 list split 1;
+#X obj 598 368 pack f s;
+#X obj 647 289 cyclone/tosymbol;
+#X obj 324 211 unpack f s;
+#X obj 381 237 tof/path relative;
+#X obj 327 255 pack f s;
+#X obj 643 334 tof/path absolute;
+#X obj 423 158 tof/param custom /samples /nps;
+#X connect 0 0 4 0;
+#X connect 1 0 4 1;
+#X connect 4 0 2 0;
+#X connect 4 1 3 0;
+#X connect 4 2 6 0;
+#X connect 4 3 14 0;
+#X connect 5 0 4 2;
+#X connect 6 1 2 0;
+#X connect 7 0 4 3;
+#X connect 7 1 8 0;
+#X connect 8 0 18 0;
+#X connect 9 0 10 0;
+#X connect 9 1 11 0;
+#X connect 11 0 12 0;
+#X connect 11 1 13 0;
+#X connect 12 0 4 0;
+#X connect 13 0 17 0;
+#X connect 14 0 16 0;
+#X connect 14 1 15 0;
+#X connect 15 0 16 1;
+#X connect 16 0 18 0;
+#X connect 17 0 12 1;
+#X connect 18 0 7 0;
+#X connect 18 1 9 0;
+#X restore 221 220 pd check_if_loaded;
+#N canvas 91 71 926 583 load_soundfile 0;
+#X obj 47 11 inlet;
+#X obj 46 366 soundfiler;
+#X obj 479 395 s pd-\$0tables;
+#X obj 284 145 tof/iterate;
+#X obj 286 193 t f f;
+#X obj 516 308 iemlib/iem_send;
+#X msg 596 279 set \$3/\$1/i;
+#X obj 676 252 t l l;
+#X msg 517 115 0 \$2 \$3 \$4;
+#X msg 673 307 obj 0 \$2 table \$3/\$1/i 3;
+#X obj 317 231 * 130;
+#X obj 317 256 + 130;
+#X text 339 195 Create data tables;
+#X text 575 196 Create and fill info table;
+#X msg 288 122 \$4;
+#X msg 687 61 \$1;
+#X obj 140 257 list prepend;
+#X obj 142 288 t l l;
+#X obj 48 113 zexy/packel 5;
+#X obj 46 298 list append;
+#X obj 48 160 list prepend read -resize;
+#X obj 46 340 list trim;
+#X obj 701 118 * 22;
+#X obj 48 137 t s s;
+#X obj 113 140 print READING;
+#X obj 46 387 t b f;
+#X obj 180 530 outlet index;
+#X obj 155 348 print READ;
+#X msg 155 323 \$1 samples;
+#X obj 684 88 t f f f;
+#X obj 836 20 inlet id;
+#X obj 294 287 pack f f f f s;
+#X obj 680 225 pack f f s;
+#X msg 296 326 obj \$2 \$4 table \$5/\$3/\$1;
+#X msg 161 202 symbol \$5/\$3/\$1;
+#X obj 179 500 pack f s;
+#X obj 179 461 f;
+#X obj 48 44 t l l l l b l;
+#X text 90 10 index rate length channels filename;
+#X connect 0 0 37 0;
+#X connect 1 0 25 0;
+#X connect 3 0 4 0;
+#X connect 4 0 31 0;
+#X connect 4 1 10 0;
+#X connect 6 0 5 1;
+#X connect 7 0 6 0;
+#X connect 7 1 9 0;
+#X connect 8 0 5 0;
+#X connect 9 0 2 0;
+#X connect 10 0 11 0;
+#X connect 11 0 31 1;
+#X connect 14 0 3 0;
+#X connect 15 0 29 0;
+#X connect 16 0 17 0;
+#X connect 17 0 19 1;
+#X connect 17 1 16 1;
+#X connect 18 0 23 0;
+#X connect 19 0 21 0;
+#X connect 20 0 19 0;
+#X connect 21 0 1 0;
+#X connect 22 0 31 3;
+#X connect 22 0 32 1;
+#X connect 23 0 20 0;
+#X connect 23 1 24 0;
+#X connect 23 1 35 1;
+#X connect 25 0 36 0;
+#X connect 25 1 28 0;
+#X connect 28 0 27 0;
+#X connect 29 0 31 2;
+#X connect 29 0 32 0;
+#X connect 29 1 22 0;
+#X connect 29 2 36 1;
+#X connect 30 0 32 2;
+#X connect 30 0 31 4;
+#X connect 31 0 33 0;
+#X connect 31 0 34 0;
+#X connect 32 0 7 0;
+#X connect 33 0 2 0;
+#X connect 34 0 16 0;
+#X connect 35 0 26 0;
+#X connect 36 0 35 0;
+#X connect 37 0 18 0;
+#X connect 37 1 14 0;
+#X connect 37 2 8 0;
+#X connect 37 3 15 0;
+#X connect 37 4 16 1;
+#X restore 326 327 pd load_soundfile;
+#N canvas 302 198 532 423 check_soundfile 0;
+#X obj 164 141 iemlib/soundfile_info;
+#X msg 163 115 read \$1;
+#X obj 52 -37 inlet;
+#X obj 72 69 unpack f s;
+#X obj 165 168 t l b;
+#X obj 367 326 outlet bad_load;
+#X obj 171 209 unpack f s f f f;
+#X obj 100 341 outlet create;
+#X obj 104 281 pack f f f f s;
+#X text 110 309 index rate length channels filename;
+#X obj 33 202 zexy/demultiplex 0 1;
+#X msg 114 170 0;
+#X obj 90 8 t l b;
+#X msg 157 38 1;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 12 0;
+#X connect 3 0 10 0;
+#X connect 3 1 1 0;
+#X connect 4 0 6 0;
+#X connect 4 1 11 0;
+#X connect 6 0 8 1;
+#X connect 6 1 8 4;
+#X connect 6 2 8 2;
+#X connect 6 4 8 3;
+#X connect 8 0 7 0;
+#X connect 10 0 8 0;
+#X connect 10 1 5 0;
+#X connect 11 0 10 1;
+#X connect 12 0 3 0;
+#X connect 12 1 13 0;
+#X connect 13 0 10 1;
+#X restore 326 264 pd check_soundfile;
+#X msg 521 205 clear;
+#X obj 522 228 s pd-\$0tables;
+#X obj 624 90 loadbang;
+#X obj 586 122 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 432 558 outlet index;
+#X obj 154 555 outlet tables;
+#X obj 308 557 outlet info;
+#N canvas 0 0 1018 692 output_data 0;
+#X obj 160 335 zexy/tabdump;
+#X msg 280 226 symbol \$2/\$1;
+#X obj 838 590 outlet index;
+#X obj 111 624 outlet tables;
+#X obj 672 597 outlet info;
+#X obj 218 16 inlet;
+#X msg 186 427 \$3;
+#X obj 186 456 tof/iterate;
+#X obj 187 478 pack f s;
+#X obj 280 251 t s s b;
+#X obj 187 529 list prepend;
+#X obj 184 556 t l l;
+#X obj 160 365 t b l l;
+#X obj 115 582 list;
+#X msg 160 309 set \$1/i \, bang;
+#X obj 254 85 t l l;
+#X obj 280 155 unpack f s;
+#X obj 280 201 pack f s;
+#X obj 789 91 inlet id;
+#X msg 187 504 \$2/\$1;
+#X connect 0 0 12 0;
+#X connect 1 0 9 0;
+#X connect 5 0 15 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 8 0 19 0;
+#X connect 9 0 14 0;
+#X connect 9 1 8 1;
+#X connect 9 2 10 1;
+#X connect 10 0 11 0;
+#X connect 11 0 13 1;
+#X connect 11 1 10 1;
+#X connect 12 0 13 0;
+#X connect 12 1 6 0;
+#X connect 12 2 4 0;
+#X connect 13 0 3 0;
+#X connect 14 0 0 0;
+#X connect 15 0 16 0;
+#X connect 15 1 2 0;
+#X connect 16 0 17 0;
+#X connect 17 0 1 0;
+#X connect 18 0 17 1;
+#X connect 19 0 10 0;
+#X restore 221 417 pd output_data;
+#X obj 221 159 cyclone/tosymbol;
+#X obj 625 149 t b b b b;
+#X obj 395 165 f 0;
+#X obj 326 292 t l l;
+#X msg 445 222 \$1;
+#X obj 171 76 route add float bang symbol;
+#X obj 646 116 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 162 120 t b a b;
+#X obj 221 367 spigot 1;
+#X msg 265 319 0;
+#X msg 165 308 1;
+#X obj 648 241 tof/param id;
+#X connect 0 0 18 0;
+#X connect 2 0 21 0;
+#X connect 2 1 4 0;
+#X connect 2 2 8 0;
+#X connect 3 0 21 0;
+#X connect 4 0 16 0;
+#X connect 4 1 2 2;
+#X connect 5 0 6 0;
+#X connect 7 0 14 0;
+#X connect 8 0 14 0;
+#X connect 12 0 10 0;
+#X connect 12 1 11 0;
+#X connect 12 2 9 0;
+#X connect 13 0 2 0;
+#X connect 14 0 2 2;
+#X connect 14 1 5 0;
+#X connect 14 2 24 0;
+#X connect 15 0 2 1;
+#X connect 16 0 3 0;
+#X connect 16 1 17 0;
+#X connect 17 0 15 1;
+#X connect 18 0 20 0;
+#X connect 18 1 2 1;
+#X connect 18 2 15 0;
+#X connect 18 3 2 0;
+#X connect 18 4 13 0;
+#X connect 19 0 14 0;
+#X connect 20 0 23 0;
+#X connect 20 1 13 0;
+#X connect 20 2 22 0;
+#X connect 21 0 12 0;
+#X connect 22 0 21 1;
+#X connect 23 0 21 1;
+#X connect 24 0 3 1;
+#X connect 24 0 12 1;
diff --git a/shrinkSymbol-help.pd b/shrinkSymbol-help.pd
new file mode 100644
index 0000000..9f5cfb3
--- /dev/null
+++ b/shrinkSymbol-help.pd
@@ -0,0 +1,31 @@
+#N canvas 450 128 525 385 10;
+#X msg 28 90 symbol abcdefghikl;
+#X obj 75 160 mtl/shrinkSymbol 3;
+#X msg 155 91 symbol ABCDEF;
+#X floatatom 196 130 5 0 0 0 - - -;
+#X text 63 46 tags: symbols;
+#X text 66 12 Description: Shrinks the length of a symbol to a specific
+size.;
+#X text 231 130 target size;
+#X msg 22 256 symbol abcdefghikl;
+#X msg 158 257 symbol ABCDEF;
+#X obj 75 197 print SHRUNK;
+#X obj 21 331 print SHRUNK;
+#X text 156 291 You can use a negative size in which case the shrinking
+starts from the end of the symbol.;
+#X obj 180 193 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X text 200 193 Outlet 2 outputs a 1 if the symbol has been shrunk.
+;
+#X obj 131 336 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 21 299 mtl/shrinkSymbol -3;
+#X connect 0 0 1 0;
+#X connect 1 0 9 0;
+#X connect 1 1 12 0;
+#X connect 2 0 1 0;
+#X connect 3 0 1 1;
+#X connect 7 0 15 0;
+#X connect 8 0 15 0;
+#X connect 15 0 10 0;
+#X connect 15 1 14 0;
diff --git a/shrinkSymbol.pd b/shrinkSymbol.pd
new file mode 100644
index 0000000..03c81e1
--- /dev/null
+++ b/shrinkSymbol.pd
@@ -0,0 +1,64 @@
+#N canvas 1200 39 637 654 10;
+#X obj 30 19 inlet;
+#X obj 104 621 outlet;
+#X obj 355 33 inlet;
+#X obj 228 259 list trim;
+#X obj 172 579 cyclone/tosymbol;
+#X obj 386 63 loadbang;
+#X obj 174 453 list split;
+#X obj 345 95 f \$1;
+#X obj 345 122 int;
+#X obj 338 405 zexy/length;
+#X obj 302 203 != 0;
+#X obj 111 237 zexy/demultiplex 0 1;
+#X obj 179 414 zexy/demultiplex 0 1;
+#X obj 364 250 < 0;
+#X obj 367 465 +;
+#X obj 212 315 moocow/any2string 0 -1;
+#X obj 174 543 moocow/string2any 0 -1;
+#X obj 314 498 list split;
+#X obj 503 399 f;
+#X obj 344 156 t f f f f f;
+#X obj 503 427 abs;
+#X obj 485 614 outlet 1_if_shrunk;
+#X obj 209 345 t l b l;
+#X obj 342 431 t f f;
+#X obj 507 472 <;
+#X obj 82 431 t s b;
+#X msg 116 465 0;
+#X connect 0 0 11 0;
+#X connect 2 0 7 0;
+#X connect 3 0 15 0;
+#X connect 4 0 1 0;
+#X connect 5 0 7 0;
+#X connect 6 0 16 0;
+#X connect 6 2 16 0;
+#X connect 7 0 8 0;
+#X connect 8 0 19 0;
+#X connect 9 0 23 0;
+#X connect 10 0 11 1;
+#X connect 11 0 25 0;
+#X connect 11 1 3 0;
+#X connect 12 0 6 0;
+#X connect 12 1 17 0;
+#X connect 13 0 12 1;
+#X connect 14 0 17 1;
+#X connect 15 0 22 0;
+#X connect 16 0 4 0;
+#X connect 17 1 16 0;
+#X connect 18 0 20 0;
+#X connect 19 0 10 0;
+#X connect 19 1 13 0;
+#X connect 19 2 6 1;
+#X connect 19 3 14 1;
+#X connect 19 4 18 1;
+#X connect 20 0 24 0;
+#X connect 22 0 12 0;
+#X connect 22 1 18 0;
+#X connect 22 2 9 0;
+#X connect 23 0 14 0;
+#X connect 23 1 24 1;
+#X connect 24 0 21 0;
+#X connect 25 0 1 0;
+#X connect 25 1 26 0;
+#X connect 26 0 21 0;
diff --git a/sigToFloat~-help.pd b/sigToFloat~-help.pd
new file mode 100644
index 0000000..f98f56a
--- /dev/null
+++ b/sigToFloat~-help.pd
@@ -0,0 +1,10 @@
+#N canvas 0 0 377 222 10;
+#X text 23 15 Description: converts a signal to floats.;
+#X msg 102 86 \; pd dsp 1;
+#X floatatom 29 174 5 0 0 0 - - -;
+#X obj 30 86 osc~ 0.01;
+#X text 42 119 Argument_1:update time (ms). Defaults to 100 ms.;
+#X obj 29 149 mtl/sigToFloat~;
+#X text 23 33 tags: conversion;
+#X connect 3 0 5 0;
+#X connect 5 0 2 0;
diff --git a/sigToFloat~.pd b/sigToFloat~.pd
new file mode 100644
index 0000000..24c5c16
--- /dev/null
+++ b/sigToFloat~.pd
@@ -0,0 +1,17 @@
+#N canvas 510 343 450 300 10;
+#X obj 54 50 inlet~;
+#X obj 54 229 outlet;
+#X obj 54 203 snapshot~;
+#X obj 82 79 loadbang;
+#X obj 82 104 t b b;
+#X obj 107 126 f \$1;
+#X obj 107 146 sel 0;
+#X obj 82 170 metro 100;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 7 0;
+#X connect 4 1 5 0;
+#X connect 5 0 6 0;
+#X connect 6 1 7 1;
+#X connect 7 0 2 0;
diff --git a/sign-help.pd b/sign-help.pd
new file mode 100644
index 0000000..d043da1
--- /dev/null
+++ b/sign-help.pd
@@ -0,0 +1,13 @@
+#N canvas 1 57 459 242 12;
+#X floatatom 78 73 5 0 0 0 - - -;
+#X floatatom 78 169 5 0 0 0 - - -;
+#X text 74 188 absolute value;
+#X floatatom 131 128 5 0 0 0 - - -;
+#X text 128 148 Sign (1 or -1);
+#X text 12 8 Description: Returns a float's absolute value and it's
+sign.;
+#X obj 78 100 mtl/sign;
+#X text 11 28 tags: math;
+#X connect 0 0 6 0;
+#X connect 6 0 1 0;
+#X connect 6 1 3 0;
diff --git a/sign.pd b/sign.pd
new file mode 100644
index 0000000..b3bcc42
--- /dev/null
+++ b/sign.pd
@@ -0,0 +1,17 @@
+#N canvas 0 0 454 304 12;
+#X obj 97 184 abs;
+#X obj 105 79 inlet;
+#X obj 105 143 t f f;
+#X obj 160 186 moses 0;
+#X msg 159 215 -1;
+#X msg 209 217 1;
+#X obj 101 249 outlet;
+#X obj 190 260 outlet;
+#X connect 0 0 6 0;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X connect 2 1 3 0;
+#X connect 3 0 4 0;
+#X connect 3 1 5 0;
+#X connect 4 0 7 0;
+#X connect 5 0 7 0;
diff --git a/sl8-help.pd b/sl8-help.pd
new file mode 100644
index 0000000..9e12d33
--- /dev/null
+++ b/sl8-help.pd
@@ -0,0 +1,48 @@
+#N canvas 223 142 622 517 10;
+#X obj 387 129 f;
+#X msg 365 108 bang;
+#X floatatom 403 107 4 55 440 0 - - -;
+#X floatatom 438 129 6 440 3520 0 - - -;
+#X obj 387 152 pack 0 0;
+#X text 440 108 bottom-range-bound;
+#X text 487 130 top-range-bound;
+#X obj 274 119 pack 0 0 0;
+#X obj 274 91 f;
+#X msg 251 43 bang;
+#X floatatom 290 41 3 0 29 0 - - -;
+#X floatatom 306 61 3 0 29 0 - - -;
+#X floatatom 339 77 3 0 29 0 - - -;
+#X text 318 41 background;
+#X text 333 61 front-color;
+#X text 367 78 label-color;
+#X text 261 15 preset-colors;
+#X msg 387 177 range \$1 \$2;
+#X msg 275 141 color \$1 \$2 \$3;
+#X msg 48 180 10 20 30 40 50 60 70 80;
+#X text 106 202 Inlet_1: Sets values;
+#X text 16 36 Description: Eight vertical sliders;
+#X msg 406 209 log;
+#X msg 403 230 linear;
+#X msg 142 474 10 20 30 78.6088 50 60 70 80;
+#X obj 140 442 cyclone/prepend set;
+#X text 303 287 Arguments: min max;
+#X obj 138 270 mtl/sl8 0 127;
+#X text 14 55 tags: ui;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 1;
+#X connect 3 0 4 1;
+#X connect 4 0 17 0;
+#X connect 7 0 18 0;
+#X connect 8 0 7 0;
+#X connect 9 0 8 0;
+#X connect 10 0 8 1;
+#X connect 11 0 7 1;
+#X connect 12 0 7 2;
+#X connect 17 0 27 1;
+#X connect 18 0 27 1;
+#X connect 19 0 27 0;
+#X connect 22 0 27 1;
+#X connect 23 0 27 1;
+#X connect 25 0 24 0;
+#X connect 27 0 25 0;
diff --git a/sl8.pd b/sl8.pd
new file mode 100644
index 0000000..19b6536
--- /dev/null
+++ b/sl8.pd
@@ -0,0 +1,115 @@
+#N canvas 1132 117 592 638 10;
+#X obj 205 172 vsl 15 128 0 127 0 0 empty empty empty 0 -9 0 10 -191407
+-1 -1 1000 1;
+#X obj 220 172 vsl 15 128 0 127 0 0 empty empty empty 0 -9 0 10 -191407
+-1 -1 2000 1;
+#X obj 235 172 vsl 15 128 0 127 0 0 empty empty empty 0 -9 0 10 -191407
+-1 -1 3000 1;
+#X obj 250 172 vsl 15 128 0 127 0 0 empty empty empty 0 -9 0 10 -191407
+-1 -1 4000 1;
+#X msg 281 -17 log;
+#X msg 327 -19 lin;
+#X msg 363 -20 color \$1 \$2 \$3;
+#X msg 220 9 range \$1 \$2;
+#X obj 366 30 t a;
+#X obj 265 172 vsl 15 128 0 127 0 0 empty empty empty 0 -9 0 10 -191407
+-1 -1 5000 1;
+#X obj 280 172 vsl 15 128 0 127 0 0 empty empty empty 0 -9 0 10 -191407
+-1 -1 6000 1;
+#X obj 295 172 vsl 15 128 0 127 0 0 empty empty empty 0 -9 0 10 -191407
+-1 -1 7000 1;
+#X obj 310 172 vsl 15 128 0 127 0 0 empty empty empty 0 -9 0 10 -191407
+-1 -1 8000 1;
+#X obj 47 -97 inlet;
+#X obj 104 67 unpack f f f f f f f f;
+#X obj 78 443 outlet;
+#X obj 398 -130 inlet;
+#X obj 160 -144 loadbang;
+#X obj 347 -73 route range log linear color enable;
+#X obj 154 -99 tof/argument 1 0;
+#X obj 267 -101 tof/argument 2 127;
+#X obj 173 -123 t b b;
+#X obj 162 -69 pack;
+#X obj 108 395 pack f f f f f f f f;
+#X obj 474 333 t b f;
+#X obj 426 334 t b f;
+#X obj 372 331 t b f;
+#X obj 320 330 t b f;
+#X obj 273 326 t b f;
+#X obj 234 323 t b f;
+#X obj 168 329 t b f;
+#X obj 47 55 t l l;
+#X msg 86 107 set \$1;
+#X msg 138 104 set \$1;
+#X msg 187 107 set \$1;
+#X msg 237 104 set \$1;
+#X msg 286 103 set \$1;
+#X msg 334 103 set \$1;
+#X msg 384 102 set \$1;
+#X msg 441 100 set \$1;
+#X connect 0 0 23 0;
+#X connect 1 0 30 0;
+#X connect 2 0 29 0;
+#X connect 3 0 28 0;
+#X connect 4 0 8 0;
+#X connect 5 0 8 0;
+#X connect 6 0 8 0;
+#X connect 7 0 8 0;
+#X connect 8 0 0 0;
+#X connect 8 0 1 0;
+#X connect 8 0 2 0;
+#X connect 8 0 3 0;
+#X connect 8 0 9 0;
+#X connect 8 0 10 0;
+#X connect 8 0 11 0;
+#X connect 8 0 12 0;
+#X connect 9 0 27 0;
+#X connect 10 0 26 0;
+#X connect 11 0 25 0;
+#X connect 12 0 24 0;
+#X connect 13 0 31 0;
+#X connect 14 0 32 0;
+#X connect 14 1 33 0;
+#X connect 14 2 34 0;
+#X connect 14 3 35 0;
+#X connect 14 4 36 0;
+#X connect 14 5 37 0;
+#X connect 14 6 38 0;
+#X connect 14 7 39 0;
+#X connect 16 0 18 0;
+#X connect 17 0 21 0;
+#X connect 18 0 7 0;
+#X connect 18 1 4 0;
+#X connect 18 2 5 0;
+#X connect 18 3 6 0;
+#X connect 19 0 22 0;
+#X connect 20 0 22 1;
+#X connect 21 0 19 0;
+#X connect 21 1 20 0;
+#X connect 22 0 7 0;
+#X connect 23 0 15 0;
+#X connect 24 0 23 0;
+#X connect 24 1 23 7;
+#X connect 25 0 23 0;
+#X connect 25 1 23 6;
+#X connect 26 0 23 0;
+#X connect 26 1 23 5;
+#X connect 27 0 23 0;
+#X connect 27 1 23 4;
+#X connect 28 0 23 0;
+#X connect 28 1 23 3;
+#X connect 29 0 23 0;
+#X connect 29 1 23 2;
+#X connect 30 0 23 0;
+#X connect 30 1 23 1;
+#X connect 31 0 23 0;
+#X connect 31 1 14 0;
+#X connect 32 0 0 0;
+#X connect 33 0 1 0;
+#X connect 34 0 2 0;
+#X connect 35 0 3 0;
+#X connect 36 0 9 0;
+#X connect 37 0 10 0;
+#X connect 38 0 11 0;
+#X connect 39 0 12 0;
+#X coords 0 -1 1 1 130 155 1 200 150;
diff --git a/smpToBpm-help.pd b/smpToBpm-help.pd
new file mode 100644
index 0000000..a7456f6
--- /dev/null
+++ b/smpToBpm-help.pd
@@ -0,0 +1,41 @@
+#N canvas 249 157 583 441 10;
+#X floatatom 147 269 5 0 0 0 - - -;
+#X floatatom 113 268 5 0 0 0 - - -;
+#X text 109 286 BPM;
+#X text 143 286 Number of beats;
+#X floatatom 182 268 10 0 0 0 - - -;
+#X obj 113 243 mtl/smpToBpm;
+#X text 249 269 Frames per beat;
+#X obj 22 10 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 22 180 nbx 10 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10
+-262144 -1 -1 105992 256;
+#X obj 22 44 openpanel;
+#X obj 22 99 iemlib/soundfile_info;
+#X msg 22 69 read \$1;
+#X text 19 -56 Description: Tries to guess the bpm and beat count of
+a loop.;
+#X text 41 7 <- Load a prepared loop.;
+#X text 17 -27 tags: conversion musical;
+#X msg 22 152 \$3;
+#X text 51 153 <- The number of samples;
+#X obj 22 125 t l l;
+#X text 262 140 <- samplerate (defaults to pd's samplerate);
+#X msg 230 142 \$1;
+#X obj 230 164 nbx 10 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0
+10 -262144 -1 -1 44100 256;
+#X text 54 309 Sometimes the outputed bpm and number of beats will
+be twice or half the real values.;
+#X connect 5 0 1 0;
+#X connect 5 1 0 0;
+#X connect 5 2 4 0;
+#X connect 7 0 9 0;
+#X connect 8 0 5 0;
+#X connect 9 0 11 0;
+#X connect 10 0 17 0;
+#X connect 11 0 10 0;
+#X connect 15 0 8 0;
+#X connect 17 0 15 0;
+#X connect 17 1 19 0;
+#X connect 19 0 20 0;
+#X connect 20 0 5 1;
diff --git a/smpToBpm.pd b/smpToBpm.pd
new file mode 100644
index 0000000..3abc229
--- /dev/null
+++ b/smpToBpm.pd
@@ -0,0 +1,128 @@
+#N canvas 261 41 715 668 10;
+#X obj 43 18 inlet smp;
+#X obj 268 8 inlet samplerate;
+#X obj 229 587 outlet beats;
+#X obj 78 288 * 120;
+#X obj 367 106 loadbang;
+#X obj 367 131 samplerate~;
+#X obj 56 541 outlet bpm;
+#N canvas 454 83 891 537 fit 0;
+#X obj 45 53 inlet;
+#X obj 378 50 inlet;
+#X obj 250 228 /;
+#X obj 222 379 *;
+#X obj 303 170 t f f;
+#X obj 375 417 /;
+#X obj 272 566 outlet;
+#X obj 196 255 t b f;
+#N canvas 289 98 991 658 closestmult2 0;
+#X msg 403 194 2;
+#X obj 407 228 float;
+#X obj 465 262 moses;
+#X obj 521 193 * 2;
+#X obj 506 374 -;
+#X obj 406 145 t b f f;
+#X obj 517 417 moses;
+#X obj 529 339 t f f;
+#X obj 564 361 * 0.25;
+#X obj 492 480 float;
+#X msg 490 448 bang;
+#X msg 575 445 bang;
+#X obj 581 476 float;
+#X obj 606 501 / 2;
+#X obj 513 286 t f f f;
+#X obj 149 40 inlet;
+#X obj 255 610 outlet;
+#X obj 190 75 moses 1;
+#X obj 66 81 /;
+#X msg 75 53 1.125 \$1;
+#X obj 301 82 t f b;
+#X msg 403 354 1;
+#X obj 226 124 t f b;
+#X msg 365 355 0;
+#X msg 408 578 1 \$1;
+#X obj 412 605 /;
+#X obj 327 534 zexy/demultiplex 0 1;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 14 0;
+#X connect 3 0 1 0;
+#X connect 4 0 6 0;
+#X connect 5 0 0 0;
+#X connect 5 1 2 1;
+#X connect 5 2 4 1;
+#X connect 6 0 10 0;
+#X connect 6 1 11 0;
+#X connect 7 0 4 0;
+#X connect 7 1 8 0;
+#X connect 8 0 6 1;
+#X connect 9 0 26 0;
+#X connect 10 0 9 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 13 0 26 0;
+#X connect 14 0 7 0;
+#X connect 14 1 9 1;
+#X connect 14 2 12 1;
+#X connect 15 0 17 0;
+#X connect 17 0 19 0;
+#X connect 17 1 20 0;
+#X connect 18 0 22 0;
+#X connect 19 0 18 0;
+#X connect 20 0 5 0;
+#X connect 20 1 21 0;
+#X connect 21 0 26 1;
+#X connect 22 0 5 0;
+#X connect 22 1 23 0;
+#X connect 23 0 26 1;
+#X connect 24 0 25 0;
+#X connect 25 0 16 0;
+#X connect 26 0 24 0;
+#X connect 26 1 16 0;
+#X restore 286 293 pd closestmult2;
+#X obj 281 319 t f f;
+#X obj 160 304 f;
+#X obj 245 96 t f b f f;
+#X connect 0 0 4 0;
+#X connect 1 0 11 0;
+#X connect 2 0 7 0;
+#X connect 3 0 5 0;
+#X connect 4 0 2 0;
+#X connect 4 1 5 1;
+#X connect 5 0 6 0;
+#X connect 7 0 10 0;
+#X connect 7 1 8 0;
+#X connect 8 0 9 0;
+#X connect 9 1 3 1;
+#X connect 10 0 3 0;
+#X connect 11 0 10 1;
+#X connect 11 2 2 1;
+#X restore 95 219 pd fit;
+#X obj 51 357 t f f;
+#X obj 249 460 expr $f2/$f1;
+#X obj 452 554 outlet smp_per_beat;
+#X obj 89 90 t f f f;
+#X obj 447 436 expr $f2/$f1;
+#X obj 278 520 t f f;
+#X obj 220 271 ./smpToMs;
+#X obj 134 419 ./bpmToMs;
+#X obj 251 484 ./round;
+#X connect 0 0 11 0;
+#X connect 1 0 7 1;
+#X connect 3 0 8 0;
+#X connect 4 0 5 0;
+#X connect 5 0 7 1;
+#X connect 7 0 3 0;
+#X connect 8 0 6 0;
+#X connect 8 1 15 0;
+#X connect 9 0 16 0;
+#X connect 11 0 7 0;
+#X connect 11 1 14 0;
+#X connect 11 2 12 1;
+#X connect 12 0 10 0;
+#X connect 13 0 2 0;
+#X connect 13 1 12 0;
+#X connect 14 0 9 1;
+#X connect 15 0 9 0;
+#X connect 16 0 13 0;
diff --git a/smpToFreq-help.pd b/smpToFreq-help.pd
new file mode 100644
index 0000000..2a96233
--- /dev/null
+++ b/smpToFreq-help.pd
@@ -0,0 +1,11 @@
+#N canvas 323 275 457 255 12;
+#X floatatom 51 92 5 0 0 0 - - -;
+#X floatatom 51 171 5 0 0 0 - - -;
+#X text 101 89 Number of samples;
+#X text 107 173 Frequency to play samples at normal speed;
+#X text 21 10 Description: Converts a number of samples to a frequency.
+;
+#X obj 51 127 mtl/smpToFreq;
+#X text 21 30 tags: conversion;
+#X connect 0 0 5 0;
+#X connect 5 0 1 0;
diff --git a/smpToFreq.pd b/smpToFreq.pd
new file mode 100644
index 0000000..ce0306e
--- /dev/null
+++ b/smpToFreq.pd
@@ -0,0 +1,15 @@
+#N canvas 396 47 546 392 10;
+#X text 282 77 samples to milliseconds conversion;
+#X obj 37 69 inlet;
+#X obj 129 81 loadbang;
+#X obj 132 110 samplerate~;
+#X obj 58 142 /;
+#X obj 53 266 outlet;
+#X obj 65 207 /;
+#X msg 56 171 1 \$1;
+#X connect 1 0 4 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 1;
+#X connect 4 0 7 0;
+#X connect 6 0 5 0;
+#X connect 7 0 6 0;
diff --git a/smpToMem-help.pd b/smpToMem-help.pd
new file mode 100644
index 0000000..1f9cdcb
--- /dev/null
+++ b/smpToMem-help.pd
@@ -0,0 +1,11 @@
+#N canvas 296 348 489 253 12;
+#X text 193 118 number of samples;
+#X floatatom 148 116 5 0 0 0 - - -;
+#X floatatom 148 194 10 0 0 0 - - -;
+#X text 234 195 size in Megabytes;
+#X text 40 8 Description: Converts a number of samples into it's memory
+size.;
+#X obj 148 154 mtl/smpToMem;
+#X text 39 48 tags: conversion;
+#X connect 1 0 5 0;
+#X connect 5 0 2 0;
diff --git a/smpToMem.pd b/smpToMem.pd
new file mode 100644
index 0000000..aec73b2
--- /dev/null
+++ b/smpToMem.pd
@@ -0,0 +1,8 @@
+#N canvas 199 187 452 302 10;
+#X obj 227 115 inlet;
+#X obj 227 157 * 4e-006;
+#X obj 227 201 outlet;
+#X text 271 202 size in Mb;
+#X text 266 112 number of samples;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
diff --git a/smpToMs-help.pd b/smpToMs-help.pd
new file mode 100644
index 0000000..718038b
--- /dev/null
+++ b/smpToMs-help.pd
@@ -0,0 +1,10 @@
+#N canvas 303 224 418 209 10;
+#X text 149 112 samples to milliseconds conversion;
+#X floatatom 104 113 5 0 0 0 - - -;
+#X floatatom 104 161 5 0 0 0 - - -;
+#X text 40 20 Description: Converts a number of samples to it's duration
+in milliseconds.;
+#X obj 104 134 mtl/smpToMs;
+#X text 41 57 tags: conversion;
+#X connect 1 0 4 0;
+#X connect 4 0 2 0;
diff --git a/smpToMs.pd b/smpToMs.pd
new file mode 100644
index 0000000..6193fc2
--- /dev/null
+++ b/smpToMs.pd
@@ -0,0 +1,18 @@
+#N canvas 339 55 544 390 10;
+#X text 282 77 samples to milliseconds conversion;
+#X obj 30 11 inlet;
+#X obj 152 96 samplerate~;
+#X obj 53 266 outlet;
+#X msg 144 141 1 \$1;
+#X obj 138 164 /;
+#X obj 56 148 *;
+#X obj 145 198 * 1000;
+#X obj 63 60 t f b;
+#X connect 1 0 8 0;
+#X connect 2 0 4 0;
+#X connect 4 0 5 0;
+#X connect 5 0 7 0;
+#X connect 6 0 3 0;
+#X connect 7 0 6 1;
+#X connect 8 0 6 0;
+#X connect 8 1 2 0;
diff --git a/smpToTime-help.pd b/smpToTime-help.pd
new file mode 100644
index 0000000..007bb2c
--- /dev/null
+++ b/smpToTime-help.pd
@@ -0,0 +1,13 @@
+#N canvas 551 388 378 243 10;
+#X floatatom 137 102 5 0 0 0 - - -;
+#X obj 137 190 print;
+#X obj 137 122 * 1000;
+#X floatatom 137 145 5 0 0 0 - - -;
+#X text 19 13 Description: Converts a number of samples into an easier
+representation of it's duration.;
+#X obj 137 166 mtl/smpToTime;
+#X text 21 49 tags: conversion;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 5 0;
+#X connect 5 0 1 0;
diff --git a/smpToTime.pd b/smpToTime.pd
new file mode 100644
index 0000000..17195e5
--- /dev/null
+++ b/smpToTime.pd
@@ -0,0 +1,49 @@
+#N canvas 86 384 472 497 10;
+#X obj 125 38 inlet;
+#X obj 129 74 t f b;
+#X obj 274 237 / 44100;
+#X text 332 240 <- seconds;
+#X obj 260 325 t f f;
+#X obj 119 468 outlet;
+#X obj 242 349 div 60;
+#X obj 328 356 mod 60;
+#X obj 262 390 pack f f;
+#X obj 72 134 moses;
+#X msg 52 378 symbol <1s;
+#X obj 127 215 moses;
+#X obj 161 180 * 60;
+#X obj 73 106 int;
+#X msg 140 314 symbol \$1s;
+#X obj 151 278 mod 60;
+#X obj 142 245 / 44100;
+#X obj 359 63 loadbang;
+#X obj 312 25 inlet samplerate;
+#X obj 356 89 samplerate~;
+#X obj 332 125 f;
+#X obj 317 417 zexy/makesymbol %sm%ss;
+#X connect 0 0 1 0;
+#X connect 1 0 13 0;
+#X connect 2 0 4 0;
+#X connect 4 0 6 0;
+#X connect 4 1 7 0;
+#X connect 6 0 8 0;
+#X connect 7 0 8 1;
+#X connect 8 0 21 0;
+#X connect 9 0 10 0;
+#X connect 9 1 11 0;
+#X connect 10 0 5 0;
+#X connect 11 0 16 0;
+#X connect 11 1 2 0;
+#X connect 12 0 11 1;
+#X connect 13 0 9 0;
+#X connect 14 0 5 0;
+#X connect 15 0 14 0;
+#X connect 16 0 15 0;
+#X connect 17 0 19 0;
+#X connect 18 0 20 0;
+#X connect 19 0 20 0;
+#X connect 20 0 2 1;
+#X connect 20 0 9 1;
+#X connect 20 0 12 0;
+#X connect 20 0 16 1;
+#X connect 21 0 5 0;
diff --git a/smpteToFrames-help.pd b/smpteToFrames-help.pd
new file mode 100644
index 0000000..596eed2
--- /dev/null
+++ b/smpteToFrames-help.pd
@@ -0,0 +1,33 @@
+#N canvas 319 202 772 321 10;
+#X floatatom 85 52 5 0 0 0 - - -;
+#X floatatom 322 57 5 0 0 0 framerate - -;
+#X floatatom 90 150 5 0 0 0 - - -;
+#X floatatom 129 151 5 0 0 0 - - -;
+#X floatatom 175 149 5 0 0 0 - - -;
+#X floatatom 220 148 5 0 0 0 - - -;
+#X floatatom 97 258 5 0 0 0 - - -;
+#X obj 382 23 cnv 15 300 250 empty empty empty 20 12 0 14 -24198 -66577
+0;
+#X text 390 150 Left outlet: duration in frames;
+#X text 390 73 Inlets from left to right: duration in hours:minutes:seconds:frames
+;
+#X text 390 35 Description: SMPTE to FRAMES time CONVERTER;
+#X text 387 243 Author: February 2006 by oli44 (Tulle). Modified by
+Tof.;
+#X text 387 206 Comments: Only works with integer frame rates.;
+#X text 389 112 Rightmost inlet: frame rate (defaults to 25).;
+#X obj 97 219 mtl/smpteToFrames;
+#X obj 84 99 mtl/framesToSmpte;
+#X text 390 52 tags: conversion;
+#X connect 0 0 15 0;
+#X connect 1 0 14 4;
+#X connect 1 0 15 1;
+#X connect 2 0 14 0;
+#X connect 3 0 14 1;
+#X connect 4 0 14 2;
+#X connect 5 0 14 3;
+#X connect 14 0 6 0;
+#X connect 15 0 2 0;
+#X connect 15 1 3 0;
+#X connect 15 2 4 0;
+#X connect 15 3 5 0;
diff --git a/smpteToFrames.pd b/smpteToFrames.pd
new file mode 100644
index 0000000..c42d312
--- /dev/null
+++ b/smpteToFrames.pd
@@ -0,0 +1,46 @@
+#N canvas 0 0 960 611 10;
+#X obj 36 -51 inlet;
+#X obj 176 20 inlet;
+#X obj 30 457 outlet;
+#X obj 387 20 inlet;
+#X obj 285 20 inlet;
+#X obj 507 15 inlet;
+#X obj 507 364 int;
+#X obj 387 69 * 40;
+#X obj 285 78 * 1000;
+#X obj 36 4 * 3.6e+06;
+#X obj 176 78 * 60000;
+#X obj 286 190 +;
+#X obj 176 226 +;
+#X obj 27 286 +;
+#X obj 507 338 / 40;
+#X obj 522 82 /;
+#X msg 519 51 1000 \$1;
+#X obj 55 46 t f b b b;
+#X obj 185 153 f;
+#X obj 268 152 f;
+#X obj 375 136 f;
+#X connect 0 0 9 0;
+#X connect 1 0 10 0;
+#X connect 3 0 7 0;
+#X connect 4 0 8 0;
+#X connect 5 0 16 0;
+#X connect 6 0 2 0;
+#X connect 7 0 20 1;
+#X connect 8 0 19 1;
+#X connect 9 0 17 0;
+#X connect 10 0 18 1;
+#X connect 11 0 12 1;
+#X connect 12 0 13 1;
+#X connect 13 0 14 0;
+#X connect 14 0 6 0;
+#X connect 15 0 7 1;
+#X connect 15 0 14 1;
+#X connect 16 0 15 0;
+#X connect 17 0 13 0;
+#X connect 17 1 18 0;
+#X connect 17 2 19 0;
+#X connect 17 3 20 0;
+#X connect 18 0 12 0;
+#X connect 19 0 11 0;
+#X connect 20 0 11 1;
diff --git a/sometimes-help.pd b/sometimes-help.pd
new file mode 100644
index 0000000..0e4c327
--- /dev/null
+++ b/sometimes-help.pd
@@ -0,0 +1,24 @@
+#N canvas 386 159 450 300 10;
+#X obj 79 194 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 265 133 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+-1 -1;
+#X obj 39 71 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1
+;
+#X obj 39 260 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 39 90 metro 500;
+#X obj 40 49 iemlib/init 1;
+#X text 11 10 Description: let a bang pass sometimes.;
+#X text 166 229 Bangs pass 20% of the time;
+#X text 205 166 Bangs pass 50% of the time;
+#X obj 79 165 mtl/sometimes 0.5;
+#X text 9 25 tags: random;
+#X obj 39 230 mtl/sometimes 0.2;
+#X connect 2 0 4 0;
+#X connect 4 0 1 0;
+#X connect 4 0 9 0;
+#X connect 4 0 11 0;
+#X connect 5 0 2 0;
+#X connect 9 0 0 0;
+#X connect 11 0 3 0;
diff --git a/sometimes.pd b/sometimes.pd
new file mode 100644
index 0000000..2a8f0d9
--- /dev/null
+++ b/sometimes.pd
@@ -0,0 +1,14 @@
+#N canvas 424 183 450 300 10;
+#X obj 70 77 inlet;
+#X obj 70 231 outlet;
+#X obj 207 85 inlet;
+#X obj 76 99 b;
+#X obj 79 129 markex/randomF 1;
+#X obj 80 187 sel 0;
+#X obj 79 163 >= \$1;
+#X connect 0 0 3 0;
+#X connect 2 0 6 1;
+#X connect 3 0 4 0;
+#X connect 4 0 6 0;
+#X connect 5 0 1 0;
+#X connect 6 0 5 0;
diff --git a/soundFreqToWave-help.pd b/soundFreqToWave-help.pd
new file mode 100644
index 0000000..e00866c
--- /dev/null
+++ b/soundFreqToWave-help.pd
@@ -0,0 +1,15 @@
+#N canvas 256 138 362 226 10;
+#X floatatom 137 107 5 0 0 0 - - -;
+#X text 178 105 Air temperature (celcius);
+#X text 179 122 Defaults to 18 celsius;
+#X floatatom 26 77 5 0 0 0 - - -;
+#X obj 26 99 mtof;
+#X floatatom 26 155 5 0 0 0 - - -;
+#X text 63 155 wave length (in meters);
+#X obj 26 130 mtl/soundFreqToWave;
+#X text 20 11 Description: Frequency (Hz) to wave length (m);
+#X text 20 28 tags: conversion;
+#X connect 0 0 7 1;
+#X connect 3 0 4 0;
+#X connect 4 0 7 0;
+#X connect 7 0 5 0;
diff --git a/soundFreqToWave.pd b/soundFreqToWave.pd
new file mode 100644
index 0000000..14b020f
--- /dev/null
+++ b/soundFreqToWave.pd
@@ -0,0 +1,25 @@
+#N canvas 259 242 501 438 10;
+#X obj 62 199 inlet;
+#X floatatom 120 340 15 0 0 0 - - -;
+#X obj 69 366 outlet;
+#X floatatom 137 202 5 0 0 0 - - -;
+#X obj 277 280 +;
+#X msg 277 240 331.4 \$1;
+#X text 279 118 Air temperature (celcius);
+#X obj 317 136 inlet;
+#X msg 318 184 0.6 \$1;
+#X obj 320 205 *;
+#X msg 136 180 440;
+#X obj 68 305 / 342.2;
+#X text 175 370 Defaults to 18 celsius;
+#X text 48 98 SOund: Frequency (Hz) to wave length (m);
+#X connect 0 0 11 0;
+#X connect 3 0 11 0;
+#X connect 4 0 11 1;
+#X connect 5 0 4 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 9 0 5 0;
+#X connect 10 0 3 0;
+#X connect 11 0 2 0;
+#X connect 11 0 1 0;
diff --git a/soundWaveToFreq-help.pd b/soundWaveToFreq-help.pd
new file mode 100644
index 0000000..229deeb
--- /dev/null
+++ b/soundWaveToFreq-help.pd
@@ -0,0 +1,8 @@
+#N canvas 0 0 348 205 10;
+#X floatatom 92 91 15 0 0 0 - - -;
+#X floatatom 92 140 15 0 0 0 - - -;
+#X obj 92 116 mtl/soundWaveToFreq;
+#X text 19 34 tags: conversion;
+#X text 17 13 Description: Wave length (m) to frequency (Hz);
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
diff --git a/soundWaveToFreq.pd b/soundWaveToFreq.pd
new file mode 100644
index 0000000..814994b
--- /dev/null
+++ b/soundWaveToFreq.pd
@@ -0,0 +1,9 @@
+#N canvas 0 0 399 349 10;
+#X obj 96 118 inlet;
+#X obj 102 224 /;
+#X obj 103 285 outlet;
+#X msg 103 175 344.21 \$1;
+#X text 54 74 Sound : Wave length (m) to frequency (Hz);
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 3 0 1 0;
diff --git a/spectrum~-help.pd b/spectrum~-help.pd
new file mode 100644
index 0000000..750481c
--- /dev/null
+++ b/spectrum~-help.pd
@@ -0,0 +1,31 @@
+#N canvas 616 230 357 453 10;
+#X obj 126 104 mtof;
+#X floatatom 126 83 5 33 110 0 - - -;
+#X obj 178 107 mtof;
+#X floatatom 178 89 5 0 0 0 - - -;
+#X obj 90 55 noise~;
+#X text 17 -55 Description: FFT spectral graphical analysis;
+#X obj 90 128 bp~ 2637 35;
+#X obj 89 151 *~ 5;
+#X obj 79 5 hradio 15 1 0 3 empty empty select_input 0 -6 0 10 -262144
+-1 -1 0;
+#X obj 259 128 osc~ 440;
+#X obj 79 182 zexy/multiplex~ 0 1 2;
+#X obj 259 106 mtof;
+#X floatatom 259 88 5 0 0 0 - - -;
+#X obj 178 128 phasor~ 220;
+#X text 17 -39 tags: info~;
+#X obj 79 214 mtl/spectrum~;
+#X connect 0 0 6 1;
+#X connect 1 0 0 0;
+#X connect 2 0 13 0;
+#X connect 3 0 2 0;
+#X connect 4 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 10 0;
+#X connect 8 0 10 0;
+#X connect 9 0 10 2;
+#X connect 10 0 15 0;
+#X connect 11 0 9 0;
+#X connect 12 0 11 0;
+#X connect 13 0 10 1;
diff --git a/spectrum~.pd b/spectrum~.pd
new file mode 100644
index 0000000..2a062a9
--- /dev/null
+++ b/spectrum~.pd
@@ -0,0 +1,62 @@
+#N canvas 137 67 990 636 10;
+#N canvas 402 150 435 334 fft 0;
+#X obj 46 64 inlet~;
+#X obj 46 94 rfft~;
+#X obj 46 127 *~;
+#X obj 77 127 *~;
+#X obj 46 157 sqrt~;
+#X obj 216 60 inlet;
+#X obj 278 96 block~ 1024 1;
+#X obj 53 204 clip~ 0 500;
+#X obj 144 265 tabwrite~ \$0-fft;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 0 2 1;
+#X connect 1 1 3 0;
+#X connect 1 1 3 1;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X connect 4 0 7 0;
+#X connect 5 0 8 0;
+#X connect 7 0 8 0;
+#X restore 563 459 pd fft;
+#X obj 121 104 inlet~;
+#X obj 604 269 metro 20;
+#X obj 463 395 hip~ 50;
+#X obj 463 415 *~ 1;
+#N canvas 0 22 450 300 (subpatch) 0;
+#X array \$0-fft 128 float 0;
+#X coords 0 500 127 0 128 100 1;
+#X restore 202 236 graph;
+#X obj 525 170 route hip enable;
+#X obj 544 270 switch~;
+#X obj 520 35 t b b;
+#X obj 521 9 loadbang;
+#X msg 547 55 enable 1;
+#X msg 557 77 enable 0;
+#X obj 412 275 f;
+#X obj 571 192 f;
+#X obj 571 215 t f f;
+#X msg 569 239 set \$1;
+#X obj 202 215 cnv 15 128 20 empty empty empty 20 12 0 14 -233017 -66577
+0;
+#X obj 316 220 tgl 11 0 \$0dummy \$0dummy empty 0 -6 0 8 -228856 -1
+-1 1 1;
+#X connect 1 0 3 0;
+#X connect 2 0 0 1;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 6 0 3 1;
+#X connect 6 1 13 0;
+#X connect 8 1 10 0;
+#X connect 9 0 8 0;
+#X connect 10 0 6 0;
+#X connect 11 0 6 0;
+#X connect 12 0 7 0;
+#X connect 12 0 2 0;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 14 1 12 0;
+#X connect 15 0 17 0;
+#X connect 17 0 12 0;
+#X coords 0 -1 1 1 132 138 1 200 200;
diff --git a/speedToM-help.pd b/speedToM-help.pd
new file mode 100644
index 0000000..877bf99
--- /dev/null
+++ b/speedToM-help.pd
@@ -0,0 +1,19 @@
+#N canvas 509 108 418 350 10;
+#X msg 194 163 60;
+#X floatatom 107 141 5 0 0 0 - - -;
+#X msg 226 163 72;
+#X floatatom 107 227 5 0 0 0 - - -;
+#X text 190 142 MIDI base note;
+#X text 25 52 Comments: The ratio is a fractionnal number on 1 The
+default MIDI base note is 60;
+#X text 25 11 Description: Converts the speed of a sample to a MIDI
+note.;
+#X text 24 80 Argument : the MIDI base note.;
+#X text 103 119 Speed;
+#X text 148 225 MIDI note at that speed;
+#X text 25 32 tags: conversion;
+#X obj 107 196 mtl/speedToM 60;
+#X connect 0 0 11 1;
+#X connect 1 0 11 0;
+#X connect 2 0 11 1;
+#X connect 11 0 3 0;
diff --git a/speedToM.pd b/speedToM.pd
new file mode 100644
index 0000000..b7fca04
--- /dev/null
+++ b/speedToM.pd
@@ -0,0 +1,18 @@
+#N canvas 35 267 430 376 10;
+#X obj 106 74 inlet;
+#X obj 220 73 inlet;
+#X obj 195 183 mtof;
+#X obj 290 71 loadbang;
+#X obj 127 272 outlet;
+#X obj 220 141 f;
+#X obj 116 181 *;
+#X obj 117 218 ftom;
+#X obj 290 100 tof/argument 1 60;
+#X connect 0 0 6 0;
+#X connect 1 0 5 0;
+#X connect 2 0 6 1;
+#X connect 3 0 8 0;
+#X connect 5 0 2 0;
+#X connect 6 0 7 0;
+#X connect 7 0 4 0;
+#X connect 8 0 5 0;
diff --git a/splitExtension-help.pd b/splitExtension-help.pd
new file mode 100644
index 0000000..aa42f43
--- /dev/null
+++ b/splitExtension-help.pd
@@ -0,0 +1,14 @@
+#N canvas 465 252 450 300 10;
+#X text 62 34 Description: splits the extension (whatever follows after
+the last ".") of a filename.;
+#X obj 124 135 mtl/splitExtension;
+#X obj 124 111 openpanel;
+#X obj 123 89 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 86 195 print without_extension;
+#X obj 262 194 print extension;
+#X text 65 62 tags: file;
+#X connect 1 0 4 0;
+#X connect 1 1 5 0;
+#X connect 2 0 1 0;
+#X connect 3 0 2 0;
diff --git a/splitExtension.pd b/splitExtension.pd
new file mode 100644
index 0000000..b9014c3
--- /dev/null
+++ b/splitExtension.pd
@@ -0,0 +1,8 @@
+#N canvas 1556 639 450 300 10;
+#X obj 91 36 inlet;
+#X obj 120 267 outlet;
+#X obj 109 130 iemlib/splitfilename .;
+#X obj 274 258 outlet;
+#X connect 0 0 2 0;
+#X connect 2 0 1 0;
+#X connect 2 1 3 0;
diff --git a/tabwriteAuto-help.pd b/tabwriteAuto-help.pd
new file mode 100644
index 0000000..77cd5f1
--- /dev/null
+++ b/tabwriteAuto-help.pd
@@ -0,0 +1,26 @@
+#N canvas 458 137 566 430 12;
+#X floatatom 56 57 5 0 100 0 - - -;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0table 200 float 2;
+#X coords 0 100 200 0 200 140 1;
+#X restore 55 236 graph;
+#X text 104 53 Write Y value. The X index automatically increments.
+;
+#X floatatom 249 127 5 0 0 0 - - -;
+#X obj 13 126 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X text 30 126 reset;
+#X floatatom 55 186 5 0 0 0 - - -;
+#X text 110 188 Current X index.;
+#X text 58 -7 Description: Automatically writes the incomming value
+at the next index in a table.;
+#X text 293 123 Force an X index.;
+#X msg 125 96 set table;
+#X text 200 95 You can change the table with a set message.;
+#X text 59 29 tags: tables;
+#X obj 56 156 mtl/tabwriteAuto \$0table;
+#X connect 0 0 13 0;
+#X connect 3 0 13 1;
+#X connect 4 0 13 0;
+#X connect 10 0 13 0;
+#X connect 13 0 6 0;
diff --git a/tabwriteAuto.pd b/tabwriteAuto.pd
new file mode 100644
index 0000000..1734a43
--- /dev/null
+++ b/tabwriteAuto.pd
@@ -0,0 +1,43 @@
+#N canvas 140 139 714 614 10;
+#X obj 346 309 f;
+#X obj 427 371 + 1;
+#X msg 472 204 0;
+#X obj 530 114 inlet;
+#X obj 119 59 inlet;
+#X obj 643 191 loadbang;
+#X obj 408 525 outlet;
+#X text 459 518 current index;
+#X obj 346 415 t f f f;
+#X obj 234 148 route float bang;
+#X obj 537 173 route bang;
+#X obj 233 248 t f b;
+#X obj 321 368 mod 100;
+#X obj 234 465 tabwrite;
+#X msg 608 268 set \$1;
+#X obj 469 277 t b a;
+#X obj 451 313 flatspace/arraysize;
+#X obj 643 220 iemlib/dollarg;
+#X connect 0 0 12 0;
+#X connect 1 0 0 1;
+#X connect 2 0 0 1;
+#X connect 3 0 10 0;
+#X connect 4 0 9 0;
+#X connect 5 0 17 0;
+#X connect 8 0 6 0;
+#X connect 8 1 13 1;
+#X connect 8 2 1 0;
+#X connect 9 0 11 0;
+#X connect 9 1 2 0;
+#X connect 9 2 13 0;
+#X connect 9 2 15 0;
+#X connect 10 0 2 0;
+#X connect 10 1 0 1;
+#X connect 11 0 13 0;
+#X connect 11 1 0 0;
+#X connect 12 0 8 0;
+#X connect 14 0 15 0;
+#X connect 14 0 13 0;
+#X connect 15 0 16 0;
+#X connect 15 1 16 0;
+#X connect 16 0 12 1;
+#X connect 17 0 14 0;
diff --git a/tempo-help.pd b/tempo-help.pd
new file mode 100644
index 0000000..2861bfd
--- /dev/null
+++ b/tempo-help.pd
@@ -0,0 +1,34 @@
+#N canvas 322 175 647 476 10;
+#X obj 63 142 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
+;
+#X floatatom 113 234 5 0 0 0 - - -;
+#X floatatom 269 153 5 0 0 0 - - -;
+#X floatatom 177 146 5 0 0 0 - - -;
+#X floatatom 126 104 5 0 0 0 - - -;
+#X text 43 123 Start/Stop;
+#X obj 112 321 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
+1;
+#X obj 114 392 hradio 15 1 0 8 empty empty empty 0 -6 0 8 -262144 -1
+-1 0;
+#X text 64 20 tags: timing;
+#X text 338 278 Argument 1: tempo;
+#X text 339 296 Argument 2: beat multiplier;
+#X text 338 313 Argument 3: divisions of a whole note;
+#X obj 112 189 mtl/tempo;
+#X text 339 331 Argument 4: shuffle (0 to 1);
+#X floatatom 360 180 5 0 0 0 - - -;
+#X text 395 184 Shuffle (0 to 1 Defaults to 0);
+#X text 306 150 Divisions of a whole note (default 16);
+#X text 170 126 Beat multiplier (default 1);
+#X text 125 83 Tempo in beats per minute (default 120);
+#X text 62 1 description: a tempo generator;
+#X text 62 37 An upgrade of the Max/Msp object;
+#X obj 114 344 mtl/tempo 60 1 8 0.1;
+#X connect 0 0 12 0;
+#X connect 2 0 12 3;
+#X connect 3 0 12 2;
+#X connect 4 0 12 1;
+#X connect 6 0 21 0;
+#X connect 12 0 1 0;
+#X connect 14 0 12 4;
+#X connect 21 0 7 0;
diff --git a/tempo.pd b/tempo.pd
new file mode 100644
index 0000000..fa27724
--- /dev/null
+++ b/tempo.pd
@@ -0,0 +1,197 @@
+#N canvas 1024 0 1018 716 10;
+#X obj 86 -57 inlet;
+#X obj 150 236 outlet;
+#X obj 103 127 tgl 14 0 empty empty on 0 -5 0 8 -262144 -1 -1 0 1;
+#X obj 123 127 nbx 5 14 0.001 1e+37 0 0 empty empty bpm 0 -5 0 8 -1
+-262144 -1 0.001 256;
+#X obj 228 -46 inlet;
+#X obj 157 -46 inlet;
+#X obj 280 -32 inlet;
+#X obj 172 127 nbx 5 14 1 1e+37 0 0 empty empty mult 0 -5 0 8 -1 -262144
+-1 1 256;
+#X obj 222 127 nbx 5 14 1 1e+37 0 0 empty empty div 0 -5 0 8 -1 -262144
+-1 1 256;
+#N canvas 1069 191 936 517 tempo 0;
+#X obj 223 97 inlet;
+#X obj 160 562 outlet;
+#N canvas 0 0 454 304 bpm2ms 0;
+#X obj 130 52 inlet;
+#X obj 130 112 /;
+#X obj 130 138 * 60;
+#X msg 130 89 1000 \$1;
+#X obj 129 191 outlet;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 1 0;
+#X restore 173 276 pd bpm2ms;
+#X obj 234 184 f \$1;
+#X obj 86 137 inlet;
+#N canvas 0 0 587 427 countmodulo 0;
+#X obj 62 164 float;
+#X obj 102 163 + 1;
+#X obj 63 9 inlet;
+#X msg 62 126 bang;
+#X obj 62 258 outlet;
+#X obj 61 208 mod;
+#X obj 133 10 inlet;
+#X msg 134 113 0;
+#X obj 360 9 inlet;
+#X text 168 9 reset or set;
+#X obj 133 51 route bang reset float;
+#X obj 181 124 mod;
+#X text 399 9 modulo value (max value);
+#X connect 0 0 5 0;
+#X connect 1 0 0 1;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X connect 5 0 1 0;
+#X connect 5 0 4 0;
+#X connect 6 0 10 0;
+#X connect 7 0 0 1;
+#X connect 8 0 5 1;
+#X connect 8 0 11 1;
+#X connect 10 0 7 0;
+#X connect 10 1 7 0;
+#X connect 10 2 11 0;
+#X connect 11 0 0 1;
+#X restore 166 522 pd countmodulo;
+#X msg 489 216 16;
+#X obj 517 165 f \$3;
+#X obj 196 398 / 4;
+#X msg 203 487 reset;
+#X obj 95 403 t b b;
+#X obj 123 371 sel 1;
+#X obj 608 97 inlet;
+#X obj 314 315 t b f;
+#X obj 391 26 inlet;
+#X obj 323 277 / 1;
+#X msg 169 246 120;
+#X obj 402 149 f \$2;
+#X msg 347 210 1;
+#X obj 385 182 moses 1;
+#X obj 499 189 moses 1;
+#X obj 181 220 moses 1;
+#X obj 419 213 / 4;
+#X obj 777 95 inlet shuffle;
+#N canvas 0 0 994 658 shuffle 0;
+#X obj 577 46 inlet;
+#X obj 118 53 inlet;
+#X obj 773 55 inlet;
+#X obj 743 315 * 1000;
+#X obj 234 457 delay;
+#X obj 110 613 outlet;
+#X obj 394 393 *;
+#X obj 405 280 delay;
+#X obj 440 256 / 2;
+#X obj 668 373 expr 0.5+($f1/1000)-($f2/2);
+#X text 573 23 Metro Time;
+#X text 775 24 Shuffle 0 to 1;
+#X msg 365 133 stop;
+#X obj 668 343 random 0;
+#X msg 267 160 stop;
+#X obj 164 151 t b b b;
+#X obj 604 301 metro;
+#X text 106 31 start/stop;
+#X obj 743 289 clip 0 1;
+#X obj 197 101 sel 1 0;
+#X obj 133 76 route bang;
+#X connect 0 0 6 1;
+#X connect 0 0 8 0;
+#X connect 0 0 16 1;
+#X connect 1 0 20 0;
+#X connect 2 0 9 1;
+#X connect 2 0 18 0;
+#X connect 3 0 13 1;
+#X connect 4 0 5 0;
+#X connect 6 0 4 0;
+#X connect 7 0 16 0;
+#X connect 8 0 7 1;
+#X connect 9 0 6 0;
+#X connect 12 0 7 0;
+#X connect 12 0 4 0;
+#X connect 12 0 16 0;
+#X connect 13 0 9 0;
+#X connect 14 0 7 0;
+#X connect 14 0 4 0;
+#X connect 14 0 16 0;
+#X connect 15 0 5 0;
+#X connect 15 1 14 0;
+#X connect 15 1 7 0;
+#X connect 16 0 13 0;
+#X connect 18 0 3 0;
+#X connect 19 0 15 0;
+#X connect 19 1 12 0;
+#X connect 20 0 15 0;
+#X connect 20 1 19 0;
+#X restore 106 480 pd shuffle;
+#X obj 109 324 != 0;
+#X obj 60 291 route bang float;
+#X connect 0 0 3 0;
+#X connect 2 0 8 0;
+#X connect 3 0 21 0;
+#X connect 4 0 26 0;
+#X connect 5 0 1 0;
+#X connect 6 0 5 2;
+#X connect 6 0 22 0;
+#X connect 7 0 20 0;
+#X connect 8 0 24 1;
+#X connect 9 0 5 1;
+#X connect 10 0 24 0;
+#X connect 10 1 9 0;
+#X connect 11 0 10 0;
+#X connect 11 1 24 0;
+#X connect 12 0 7 0;
+#X connect 13 0 3 0;
+#X connect 13 1 8 1;
+#X connect 14 0 17 0;
+#X connect 15 0 13 0;
+#X connect 16 0 2 0;
+#X connect 17 0 19 0;
+#X connect 18 0 15 1;
+#X connect 19 0 18 0;
+#X connect 19 1 15 1;
+#X connect 20 0 6 0;
+#X connect 20 1 5 2;
+#X connect 20 1 22 0;
+#X connect 21 0 16 0;
+#X connect 21 1 2 0;
+#X connect 22 0 15 0;
+#X connect 23 0 24 2;
+#X connect 24 0 5 0;
+#X connect 25 0 11 0;
+#X connect 26 0 10 0;
+#X connect 26 1 25 0;
+#X restore 147 176 pd tempo;
+#X obj 312 78 tof/argument 3 16;
+#X obj 234 47 tof/argument 2 1;
+#X obj 163 22 tof/argument 1 120;
+#X obj 275 130 hsl 40 10 0 1 0 0 empty empty shuffle -2 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 375 140 tof/argument 4 0;
+#X obj 509 -7 inlet;
+#X obj 509 40 clip 0 1;
+#X obj 361 -19 loadbang;
+#X obj 365 7 t b b b b;
+#X connect 0 0 2 0;
+#X connect 2 0 9 0;
+#X connect 3 0 9 1;
+#X connect 4 0 7 0;
+#X connect 5 0 3 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 2;
+#X connect 8 0 9 3;
+#X connect 9 0 1 0;
+#X connect 10 0 8 0;
+#X connect 11 0 7 0;
+#X connect 12 0 3 0;
+#X connect 13 0 9 4;
+#X connect 14 0 13 0;
+#X connect 15 0 16 0;
+#X connect 16 0 13 0;
+#X connect 17 0 18 0;
+#X connect 18 0 12 0;
+#X connect 18 1 11 0;
+#X connect 18 2 10 0;
+#X connect 18 3 14 0;
+#X coords 0 -1 1 1 220 43 1 100 100;
diff --git a/theMatrix-help.pd b/theMatrix-help.pd
new file mode 100644
index 0000000..7560bbd
--- /dev/null
+++ b/theMatrix-help.pd
@@ -0,0 +1,78 @@
+#N canvas 91 24 880 686 10;
+#X msg 182 186 dump;
+#X floatatom 142 535 5 0 0 0 - - -;
+#X floatatom 187 508 5 0 0 0 - - -;
+#X msg 107 101 create 10 10;
+#X msg 127 132 create 10 10 -1;
+#X msg 149 161 create 3 3 1;
+#X text 188 101 Creates a 10x10 matrix filled with zeros;
+#X text 228 161 Creates a 3x3 matrix filled with 1s;
+#X text 226 131 Creates a 10x10 matrix filled with -1s;
+#X text 224 183 Dumps the matrix out the 3rd outlet;
+#X text 318 249 Sets the matrix;
+#X msg 37 29 print;
+#X text 84 28 Prints the matrix;
+#X obj 110 561 print dump;
+#X msg 271 354 copy;
+#X msg 273 384 paste;
+#X msg 548 102 print;
+#X msg 691 97 print;
+#X text 276 218 Resizes a matrix to 5x3. Fills the NEW elements with
+zeros;
+#X text 308 353 Copies the whole matrix in a buffer;
+#X text 316 386 Pastes a buffered matrix into the start of the target
+matrix;
+#X text 343 405 Dumps the rows 4 through 6 out the second outlet;
+#X text 347 426 Dumps the columns 9 through 10 out the second outlet
+;
+#X msg 231 282 element 1 1 100;
+#X text 341 280 Sets element 1x1 to the value 100;
+#X msg 244 304 element 1 1;
+#X text 326 304 Gets the value of element 1x1;
+#X msg 250 325 row 3;
+#X msg 302 325 col 2;
+#X text 344 327 Gets the whole row or column;
+#X msg 196 248 matrix 2 2 1 2 3 4;
+#X obj 51 487 mtl/theMatrix 10 10;
+#X msg 196 217 resize 5 3;
+#X obj 49 621 print element/row/col;
+#X obj 75 592 print rows/cols;
+#X text 179 535 row size;
+#X text 220 508 col size;
+#X msg 276 406 rows 1 2;
+#X msg 275 428 cols 2 3;
+#X msg 70 65 random 10 10;
+#X text 154 66 Creates a 10x10 matrix fulled with random values;
+#X text 303 466 The copy and paste buffer is common to all mtl/theMatrix
+abstractions (you can copy and paste between the abstractions as long
+as the mtl/theMatrix from which you copied still exists).;
+#X text 156 -33 description: a do a lot matrix abstraction.;
+#X text 158 -13 tags: data math;
+#X obj 691 129 mtl/theMatrix 3 3 -2;
+#X obj 548 130 mtl/theMatrix 2 2;
+#X text 501 49 By default \, the matrix is of size 1 1 You can change
+it's initial size with creation arguments (rows cols initial_value).
+;
+#X connect 0 0 31 0;
+#X connect 3 0 31 0;
+#X connect 4 0 31 0;
+#X connect 5 0 31 0;
+#X connect 11 0 31 0;
+#X connect 14 0 31 0;
+#X connect 15 0 31 0;
+#X connect 16 0 45 0;
+#X connect 17 0 44 0;
+#X connect 23 0 31 0;
+#X connect 25 0 31 0;
+#X connect 27 0 31 0;
+#X connect 28 0 31 0;
+#X connect 30 0 31 0;
+#X connect 31 0 33 0;
+#X connect 31 1 34 0;
+#X connect 31 2 13 0;
+#X connect 31 3 1 0;
+#X connect 31 4 2 0;
+#X connect 32 0 31 0;
+#X connect 37 0 31 0;
+#X connect 38 0 31 0;
+#X connect 39 0 31 0;
diff --git a/theMatrix.pd b/theMatrix.pd
new file mode 100644
index 0000000..5ea4e1f
--- /dev/null
+++ b/theMatrix.pd
@@ -0,0 +1,248 @@
+#N canvas 1030 0 1018 692 10;
+#X obj 58 658 outlet;
+#X obj 203 660 outlet;
+#X obj 371 672 outlet;
+#X obj 515 670 outlet;
+#X obj 37 15 inlet;
+#X obj 289 654 outlet;
+#X obj 39 230 t a b;
+#N canvas 248 74 909 686 resize 0;
+#X obj 39 29 inlet;
+#X obj 501 26 r \$0resize;
+#X obj 288 628 s \$0resized_matrix;
+#X obj 289 358 iemmatrix/mtx_resize;
+#X connect 0 0 3 0;
+#X connect 1 0 3 1;
+#X connect 3 0 2 0;
+#X restore 384 494 pd resize;
+#N canvas 0 0 560 406 rows&cols 0;
+#X obj 45 35 inlet;
+#X obj 300 36 inlet;
+#X obj 27 141 expr $f2-$f1;
+#X obj 27 163 max 0;
+#X msg 178 180 row;
+#X msg 344 165 col;
+#X obj 45 61 t a b b;
+#X obj 300 69 t a b b;
+#X obj 33 112 t a a;
+#X obj 28 253 +;
+#X obj 96 179 unpack f f;
+#X obj 28 189 + 1;
+#X obj 146 277 cyclone/prepend;
+#X obj 29 216 tof/iterate;
+#X obj 190 357 s \$0matrix;
+#X obj 360 367 s \$0demux;
+#X msg 345 329 1;
+#X connect 0 0 6 0;
+#X connect 1 0 7 0;
+#X connect 2 0 3 0;
+#X connect 3 0 11 0;
+#X connect 4 0 12 1;
+#X connect 5 0 12 1;
+#X connect 6 0 8 0;
+#X connect 6 1 4 0;
+#X connect 6 2 16 0;
+#X connect 7 0 8 0;
+#X connect 7 1 5 0;
+#X connect 7 2 16 0;
+#X connect 8 0 2 0;
+#X connect 8 1 10 0;
+#X connect 9 0 12 0;
+#X connect 10 0 9 1;
+#X connect 11 0 13 0;
+#X connect 12 0 14 0;
+#X connect 13 0 9 0;
+#X connect 16 0 15 0;
+#X restore 579 253 pd rows&cols;
+#N canvas 0 0 741 461 create 0;
+#X obj 188 13 inlet;
+#X obj 292 76 route bang;
+#X msg 294 97 0;
+#X obj 187 58 list split 2;
+#X obj 201 278 t a b;
+#X obj 164 345 s \$0matrix;
+#X obj 258 348 s \$0demux;
+#X msg 243 303 3;
+#X obj 193 199 iemmatrix/mtx_ones;
+#X obj 195 230 iemmatrix/mtx_mul 1;
+#X connect 0 0 3 0;
+#X connect 1 0 2 0;
+#X connect 1 1 9 1;
+#X connect 2 0 9 1;
+#X connect 3 0 8 0;
+#X connect 3 1 1 0;
+#X connect 4 0 5 0;
+#X connect 4 1 7 0;
+#X connect 7 0 6 0;
+#X connect 8 0 9 0;
+#X connect 9 0 4 0;
+#X restore 379 222 pd create;
+#X obj 283 565 t a a;
+#X obj 486 244 t b b;
+#X msg 84 252 0;
+#N canvas 0 34 1018 686 do_resize 0;
+#X obj 57 35 inlet;
+#X obj 249 236 t b b;
+#X msg 279 259 4;
+#X obj 110 413 s \$0matrix;
+#X obj 297 408 s \$0demux;
+#X obj 77 85 t b b;
+#X obj 65 189 t b b;
+#X msg 115 227 3;
+#X connect 0 0 5 0;
+#X connect 1 0 3 0;
+#X connect 1 1 2 0;
+#X connect 2 0 4 0;
+#X connect 5 0 6 0;
+#X connect 5 1 1 0;
+#X connect 6 0 3 0;
+#X connect 6 1 7 0;
+#X connect 7 0 4 0;
+#X restore 205 126 pd do_resize;
+#X obj 725 253 t b b;
+#N canvas 202 104 546 411 do_copy 0;
+#X obj 66 36 inlet;
+#X obj 49 304 s \$0matrix;
+#X obj 160 238 s \$0demux;
+#X msg 157 212 5;
+#X obj 64 157 t b b;
+#X connect 0 0 4 0;
+#X connect 3 0 2 0;
+#X connect 4 0 1 0;
+#X connect 4 1 3 0;
+#X restore 240 97 pd do_copy;
+#N canvas 0 0 984 587 do_paste 0;
+#X obj 65 131 sel 0;
+#X obj 11 318 s \$0print;
+#X msg 11 208 Nothing to paste;
+#X obj 53 13 inlet;
+#X obj 72 60 b;
+#X msg 354 232 set \$1data \, bang;
+#X obj 360 321 cyclone/prepend matrix;
+#X obj 354 352 t a b;
+#X obj 427 410 s \$0demux;
+#X msg 427 381 3;
+#X obj 316 419 s \$0matrix;
+#X obj 65 107 value MTXCLIP;
+#X obj 352 288 zexy/tabdump \$0data;
+#X connect 0 0 2 0;
+#X connect 0 1 5 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 11 0;
+#X connect 5 0 12 0;
+#X connect 6 0 7 0;
+#X connect 7 0 10 0;
+#X connect 7 1 9 0;
+#X connect 9 0 8 0;
+#X connect 11 0 0 0;
+#X connect 12 0 6 0;
+#X restore 288 166 pd do_paste;
+#X obj 764 64 loadbang;
+#X obj 807 128 sel 0;
+#X msg 804 163 1 1;
+#X obj 489 434 iemmatrix/mtx_print;
+#X obj 379 604 iemmatrix/mtx_size;
+#X obj 765 104 iemlib/dollarg;
+#X obj 249 366 iemmatrix/matrix;
+#X obj 39 294 s \$0matrix;
+#X obj 84 271 s \$0demux;
+#X obj 249 340 r \$0matrix;
+#X obj 408 371 r \$0demux;
+#N canvas 161 60 985 686 copy 0;
+#X obj 71 124 t a b;
+#X obj 99 148 f \$0;
+#X obj 106 446 table \$0data 3;
+#X obj 70 220 route matrix;
+#X obj 70 255 t a a;
+#X obj 134 373 s \$0data;
+#X msg 134 324 resize \$1;
+#X obj 134 291 zexy/length;
+#X obj 42 38 inlet;
+#X obj 102 172 value MTXCLIP;
+#X obj 34 327 zexy/tabset \$0data;
+#X connect 0 0 3 0;
+#X connect 0 1 1 0;
+#X connect 1 0 9 0;
+#X connect 3 0 4 0;
+#X connect 4 0 10 0;
+#X connect 4 1 7 0;
+#X connect 6 0 5 0;
+#X connect 7 0 6 0;
+#X connect 8 0 0 0;
+#X restore 468 494 pd copy;
+#N canvas 0 0 450 300 set 0;
+#X obj 129 94 iemmatrix/mtx_check;
+#X obj 129 116 t a b;
+#X obj 145 156 s \$0demux;
+#X msg 145 137 3;
+#X obj 88 179 s \$0matrix;
+#X obj 128 10 inlet;
+#X connect 0 0 1 0;
+#X connect 1 0 4 0;
+#X connect 1 1 3 0;
+#X connect 3 0 2 0;
+#X connect 5 0 0 0;
+#X restore 143 90 pd set;
+#X obj 726 304 s \$0matrix;
+#X obj 798 303 s \$0demux;
+#X obj 448 295 s \$0matrix;
+#X obj 520 294 s \$0demux;
+#X msg 520 269 2;
+#X msg 800 278 6;
+#X obj 205 64 route resize copy paste set create dump rows cols print
+random;
+#X obj 605 47 t a b;
+#X obj 621 87 s \$0demux;
+#X msg 621 68 3;
+#X obj 606 115 s \$0matrix;
+#X obj 605 25 iemmatrix/mtx_rand;
+#X obj 39 40 zexy/relay element row col matrix;
+#X obj 248 397 zexy/demultiplex 0 1 2 3 4 5 6;
+#X connect 4 0 42 0;
+#X connect 6 0 24 0;
+#X connect 6 1 12 0;
+#X connect 10 0 5 0;
+#X connect 10 1 21 0;
+#X connect 11 0 32 0;
+#X connect 11 1 34 0;
+#X connect 12 0 25 0;
+#X connect 14 0 30 0;
+#X connect 14 1 35 0;
+#X connect 17 0 22 0;
+#X connect 18 0 19 0;
+#X connect 19 0 9 0;
+#X connect 21 0 2 0;
+#X connect 21 1 3 0;
+#X connect 22 0 9 0;
+#X connect 22 1 18 0;
+#X connect 23 0 43 0;
+#X connect 26 0 23 0;
+#X connect 27 0 43 1;
+#X connect 34 0 33 0;
+#X connect 35 0 31 0;
+#X connect 36 0 13 0;
+#X connect 36 1 15 0;
+#X connect 36 2 16 0;
+#X connect 36 4 9 0;
+#X connect 36 5 11 0;
+#X connect 36 6 8 0;
+#X connect 36 7 8 1;
+#X connect 36 8 14 0;
+#X connect 36 9 41 0;
+#X connect 37 0 40 0;
+#X connect 37 1 39 0;
+#X connect 39 0 38 0;
+#X connect 41 0 37 0;
+#X connect 42 0 6 0;
+#X connect 42 1 6 0;
+#X connect 42 2 6 0;
+#X connect 42 3 29 0;
+#X connect 42 4 36 0;
+#X connect 43 0 0 0;
+#X connect 43 1 1 0;
+#X connect 43 2 10 0;
+#X connect 43 3 21 0;
+#X connect 43 4 7 0;
+#X connect 43 5 28 0;
+#X connect 43 6 20 0;
diff --git a/timeToMs-help.pd b/timeToMs-help.pd
new file mode 100644
index 0000000..64ede27
--- /dev/null
+++ b/timeToMs-help.pd
@@ -0,0 +1,32 @@
+#N canvas 273 82 421 423 10;
+#X obj 83 145 timer;
+#X obj 110 98 loadbang;
+#X floatatom 83 172 10 0 0 0 - - -;
+#X obj 110 122 metro 50;
+#X floatatom 30 262 5 0 0 0 - - -;
+#X floatatom 118 262 5 0 0 0 - - -;
+#X floatatom 217 262 5 0 0 0 - - -;
+#X text 252 260 seconds;
+#X text 155 262 minutes;
+#X text 67 262 hours;
+#X floatatom 313 260 5 0 0 0 - - -;
+#X text 351 257 msec;
+#X floatatom 90 366 10 0 0 0 - - -;
+#X text 36 21 Description: Converts an easier to read format to a duration
+in milliseconds.;
+#X obj 83 204 mtl/msToTime;
+#X obj 90 330 mtl/timeToMs;
+#X text 38 59 tags: conversion;
+#X connect 0 0 2 0;
+#X connect 1 0 3 0;
+#X connect 2 0 14 0;
+#X connect 3 0 0 1;
+#X connect 4 0 15 0;
+#X connect 5 0 15 1;
+#X connect 6 0 15 2;
+#X connect 10 0 15 3;
+#X connect 14 0 4 0;
+#X connect 14 1 5 0;
+#X connect 14 2 6 0;
+#X connect 14 3 10 0;
+#X connect 15 0 12 0;
diff --git a/timeToMs.pd b/timeToMs.pd
new file mode 100644
index 0000000..37e0809
--- /dev/null
+++ b/timeToMs.pd
@@ -0,0 +1,28 @@
+#N canvas 0 0 790 389 10;
+#X obj 304 24 inlet;
+#X obj 367 327 outlet;
+#X obj 363 24 inlet;
+#X obj 418 22 inlet;
+#X obj 541 26 inlet;
+#X obj 271 84 * 3.6e+06;
+#X obj 359 80 * 60000;
+#X obj 445 80 * 1000;
+#X obj 369 160 t f b;
+#X obj 446 207 +;
+#X obj 288 185 +;
+#X obj 298 118 t f b;
+#X obj 365 251 +;
+#X connect 0 0 5 0;
+#X connect 2 0 6 0;
+#X connect 3 0 7 0;
+#X connect 4 0 9 1;
+#X connect 5 0 11 0;
+#X connect 6 0 8 0;
+#X connect 7 0 9 0;
+#X connect 8 0 10 1;
+#X connect 8 1 9 0;
+#X connect 9 0 12 1;
+#X connect 10 0 12 0;
+#X connect 11 0 10 0;
+#X connect 11 1 8 0;
+#X connect 12 0 1 0;
diff --git a/tom.txt b/tom.txt
new file mode 100644
index 0000000..cc72484
--- /dev/null
+++ b/tom.txt
@@ -0,0 +1,8 @@
+
+
+
+
+WARNING CYCLONE/COUNTER IS FUCKED
+
+
+flow.split -> malib/split
diff --git a/track.txt b/track.txt
new file mode 100644
index 0000000..c4f4026
--- /dev/null
+++ b/track.txt
@@ -0,0 +1,18 @@
+0, matrix 12 16 -1 -1 45 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
+-1 54 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 45 -1 -1 -1 -1 -1
+-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 45 -1 -1 -1 -1 -1 -1 -1 -1
+-1 -1 -1 -1 -1 -1 -1 45 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
+78 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
+-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
+-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
+-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
+-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
+1, matrix 12 16 999 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 888
+-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 777 -1 -1 -1 -1 -1 -1
+-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
+-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
+-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
+-1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 2 -1 -1 -1 -1
+-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 3 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
+-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
+-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1;
diff --git a/tracker4-help.pd b/tracker4-help.pd
new file mode 100644
index 0000000..01d8f5e
--- /dev/null
+++ b/tracker4-help.pd
@@ -0,0 +1,57 @@
+#N canvas 1105 122 866 496 10;
+#X obj 69 99 bng 15 250 50 0 empty empty empty 0 -6 0 10 -262144 -1
+-1;
+#X msg 161 257 pattern \$1;
+#X floatatom 161 239 5 0 0 0 - - -;
+#X floatatom 509 44 5 0 0 0 bpm - -;
+#X msg 179 278 play;
+#X msg 185 299 stop;
+#X obj 584 86 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X text 21 11 Description: A scrollable tracker with an unlimited number
+of patterns of any length.;
+#X text 87 100 Show editor;
+#X obj 509 64 mtl/clkMaster;
+#X text 24 47 tags: sequencing;
+#X obj 534 229 bng 15 250 50 0 empty empty save 17 7 0 10 -262144 -1
+-1;
+#X obj 613 228 bng 15 250 50 0 empty empty load 17 7 0 10 -262144 -1
+-1;
+#X obj 407 119 cnv 15 400 80 empty empty empty 20 12 0 14 -232576 -66577
+0;
+#X text 569 121 PARAM ENABLED;
+#X obj 545 178 mtl/param-enabled-help;
+#X obj 406 16 cnv 15 320 20 empty empty empty 20 12 0 14 -261682 -66577
+0;
+#X text 413 143 All patterns can be saved and restored through the
+param state saving system.;
+#X obj 103 206 mtl/clk-quantization-help;
+#X text 100 185 Open(click) to read about quantization:;
+#X text 410 16 mtl/tracker4 requires a clkMaster in the same patch
+;
+#X floatatom 147 406 5 0 0 1 pattern - -;
+#X obj 186 377 bng 15 250 50 0 empty empty loop 17 7 0 10 -262144 -1
+-1;
+#X obj 69 452 print notes;
+#X obj 108 430 print tracks;
+#X obj 534 252 tof/param file;
+#X obj 276 288 loadbang;
+#X msg 276 310 debug 1;
+#X obj 69 351 mtl/tracker4 /id tr4;
+#X text 329 309 Print debuging messages.;
+#X connect 0 0 28 0;
+#X connect 1 0 28 0;
+#X connect 2 0 1 0;
+#X connect 3 0 9 0;
+#X connect 4 0 28 0;
+#X connect 5 0 28 0;
+#X connect 9 2 6 0;
+#X connect 11 0 25 0;
+#X connect 12 0 25 1;
+#X connect 18 0 28 0;
+#X connect 26 0 27 0;
+#X connect 27 0 28 0;
+#X connect 28 0 23 0;
+#X connect 28 1 24 0;
+#X connect 28 2 21 0;
+#X connect 28 3 22 0;
diff --git a/tracker4.pd b/tracker4.pd
new file mode 100644
index 0000000..aa24aa7
--- /dev/null
+++ b/tracker4.pd
@@ -0,0 +1,2154 @@
+#N canvas 330 95 1005 683 10;
+#N canvas 0 66 993 659 maxtrix 0;
+#X obj 94 42 + 1;
+#X obj 31 3 inlet;
+#X msg 143 111 col \$1;
+#X obj 119 612 outlet;
+#N canvas 138 89 993 659 scroll 0;
+#X obj 409 112 - 16;
+#X obj 309 106 * 112;
+#X obj 328 345 +;
+#X obj 310 12 r \$0scroll;
+#X obj 308 136 int;
+#X obj 187 252 + 1;
+#X obj 152 275 t f f;
+#X obj 157 249 f;
+#X msg 191 210 0;
+#X obj 69 223 t a b;
+#X obj 111 333 pack f f;
+#X msg 28 343 set \$1;
+#X obj 309 75 expr 1-$f1;
+#X obj 365 250 s \$0offset;
+#X msg 307 245 16;
+#X obj 161 519 outlet;
+#X obj 70 36 inlet;
+#X obj 460 60 r \$0pattern_length;
+#X obj 421 4 r \$0update_gui;
+#X obj 307 183 change;
+#X obj 485 171 change;
+#X obj 485 135 != 16;
+#X obj 497 319 s \$0set_scroll;
+#X msg 504 298 color \$1 -1;
+#X obj 488 193 sel 0 1;
+#X msg 512 250 \$1 \$1 \$1;
+#X msg 528 224 1;
+#X msg 487 228 0;
+#X obj 310 37 f;
+#X obj 409 30 t b b;
+#X msg 391 170 set -1;
+#X obj 327 303 t f f;
+#X obj 243 368 pack;
+#X msg 240 419 cols \$1 \$2;
+#X obj 202 124 + 1;
+#X obj 167 147 t f f;
+#X obj 172 121 f;
+#X msg 222 69 0;
+#X obj 63 141 t a b b;
+#X obj 240 315 t f f b;
+#X obj 231 289 + 1;
+#X obj 259 340 + 15;
+#X msg 338 494 set \$1;
+#X obj 297 219 t f b f f;
+#X obj 26 281 sel -1;
+#X obj -8 244 symbol;
+#X msg -16 318 set \$1;
+#X obj 409 148 r \$0init;
+#X obj 553 465 mod 8;
+#X obj 338 423 t f f f;
+#X obj 512 513 +;
+#X obj 494 488 == 0;
+#X obj 554 487 == 0;
+#X obj 511 536 sel 0 1 2;
+#X msg 440 562 color 0 -1 3;
+#X msg 553 559 color -1 0 3;
+#X msg 521 598 color 11 0 3;
+#X obj 490 465 mod 16;
+#X obj 67 198 tof/listUnfold;
+#X obj 307 274 tof/iterate;
+#X obj 425 387 zexy/makesymbol \$0n%s;
+#X obj 335 602 iemlib/iem_send;
+#X obj -21 450 iemlib/iem_send;
+#X obj 59 393 zexy/makesymbol \$0<%s<%s;
+#N canvas 0 0 450 300 rgb2num 0;
+#X obj 241 358 +;
+#X obj 177 430 +;
+#X obj 90 313 * -65536;
+#X obj 196 319 * -256;
+#X obj 310 327 * -1;
+#X obj 177 461 - 1;
+#X obj 258 512 outlet;
+#X obj 85 281 int 0;
+#X obj 196 270 int 0;
+#X obj 343 272 int 0;
+#X obj 18 33 inlet float_RGB;
+#X obj 27 113 unpack f f f;
+#X obj 17 154 * 255;
+#X obj 72 152 * 255;
+#X obj 119 150 * 255;
+#X obj 66 233 clip 0 255;
+#X obj 228 230 clip 0 255;
+#X obj 329 230 clip 0 255;
+#X connect 0 0 1 1;
+#X connect 1 0 5 0;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 1;
+#X connect 5 0 6 0;
+#X connect 7 0 2 0;
+#X connect 8 0 3 0;
+#X connect 9 0 4 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 11 1 13 0;
+#X connect 11 2 14 0;
+#X connect 12 0 15 0;
+#X connect 13 0 16 0;
+#X connect 14 0 17 0;
+#X connect 15 0 7 0;
+#X connect 16 0 8 0;
+#X connect 17 0 9 0;
+#X restore 511 274 pd rgb2num;
+#X msg 66 422 set \$1;
+#X msg 403 487 set \$1;
+#X obj 60 309 cyclone/tosymbol;
+#X connect 0 0 1 1;
+#X connect 1 0 4 0;
+#X connect 2 0 49 0;
+#X connect 3 0 28 0;
+#X connect 4 0 19 0;
+#X connect 5 0 7 1;
+#X connect 6 0 10 0;
+#X connect 6 1 5 0;
+#X connect 7 0 6 0;
+#X connect 8 0 7 1;
+#X connect 9 0 44 0;
+#X connect 9 1 7 0;
+#X connect 10 0 63 0;
+#X connect 11 0 62 0;
+#X connect 12 0 1 0;
+#X connect 14 0 59 0;
+#X connect 16 0 38 0;
+#X connect 17 0 0 0;
+#X connect 17 0 21 0;
+#X connect 18 0 29 0;
+#X connect 19 0 43 0;
+#X connect 20 0 24 0;
+#X connect 21 0 20 0;
+#X connect 23 0 22 0;
+#X connect 24 0 27 0;
+#X connect 24 1 26 0;
+#X connect 25 0 64 0;
+#X connect 26 0 25 0;
+#X connect 27 0 25 0;
+#X connect 28 0 12 0;
+#X connect 29 0 28 0;
+#X connect 29 1 30 0;
+#X connect 30 0 19 0;
+#X connect 31 0 2 0;
+#X connect 31 1 60 0;
+#X connect 32 0 33 0;
+#X connect 33 0 15 0;
+#X connect 34 0 36 1;
+#X connect 35 0 10 1;
+#X connect 35 1 34 0;
+#X connect 36 0 35 0;
+#X connect 37 0 36 1;
+#X connect 38 0 58 0;
+#X connect 38 1 8 0;
+#X connect 38 2 36 0;
+#X connect 39 0 32 0;
+#X connect 39 1 41 0;
+#X connect 39 2 37 0;
+#X connect 40 0 39 0;
+#X connect 41 0 32 1;
+#X connect 42 0 61 0;
+#X connect 43 0 40 0;
+#X connect 43 1 14 0;
+#X connect 43 2 2 1;
+#X connect 43 3 13 0;
+#X connect 44 0 45 0;
+#X connect 44 1 67 0;
+#X connect 45 0 46 0;
+#X connect 46 0 62 0;
+#X connect 47 0 30 0;
+#X connect 48 0 52 0;
+#X connect 49 0 42 0;
+#X connect 49 1 57 0;
+#X connect 49 2 48 0;
+#X connect 50 0 53 0;
+#X connect 51 0 50 0;
+#X connect 52 0 50 1;
+#X connect 53 0 54 0;
+#X connect 53 1 56 0;
+#X connect 53 2 55 0;
+#X connect 54 0 61 0;
+#X connect 55 0 61 0;
+#X connect 56 0 61 0;
+#X connect 57 0 51 0;
+#X connect 58 0 9 0;
+#X connect 59 0 31 0;
+#X connect 60 0 66 0;
+#X connect 63 0 65 0;
+#X connect 64 0 23 0;
+#X connect 65 0 62 1;
+#X connect 66 0 61 1;
+#X connect 67 0 11 0;
+#X restore 274 352 pd scroll;
+#N canvas 973 164 466 316 nbx_input 0;
+#X obj 128 8 r \$0r;
+#X obj 109 138 + 1;
+#X obj 143 137 + 1;
+#X msg 108 238 element \$1 \$2 \$3;
+#X obj 290 55 r \$0offset;
+#X obj 141 169 +;
+#X obj 97 275 outlet;
+#X obj 146 34 t a b;
+#X obj 338 289 outlet;
+#X obj 103 69 list split 2;
+#X obj 121 104 unpack f f;
+#X msg 302 194 -1;
+#X obj 108 193 pack f f;
+#X obj 134 215 list append;
+#X obj 303 168 route symbol bang float;
+#X obj 307 112 zexy/symbol2list;
+#X connect 0 0 7 0;
+#X connect 1 0 12 0;
+#X connect 2 0 5 0;
+#X connect 3 0 6 0;
+#X connect 4 0 5 1;
+#X connect 5 0 12 1;
+#X connect 7 0 9 0;
+#X connect 7 1 8 0;
+#X connect 9 0 10 0;
+#X connect 9 1 15 0;
+#X connect 10 0 1 0;
+#X connect 10 1 2 0;
+#X connect 11 0 13 1;
+#X connect 12 0 13 0;
+#X connect 13 0 3 0;
+#X connect 14 0 11 0;
+#X connect 14 1 11 0;
+#X connect 14 2 13 1;
+#X connect 15 0 14 0;
+#X restore -20 118 pd nbx_input;
+#X obj 220 163 r \$0set_matrix;
+#N canvas 0 0 909 659 pattern_length 0;
+#X obj 352 37 max 16;
+#X obj 352 14 f;
+#X obj 42 -29 inlet;
+#X obj 359 314 outlet;
+#X obj 346 73 t b f;
+#X obj 181 192 s \$0update_gui;
+#X msg 358 224 resize 12 \$1 -1;
+#X connect 0 0 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 4 0 5 0;
+#X connect 4 1 6 0;
+#X connect 6 0 3 0;
+#X restore 205 519 pd pattern_length;
+#X obj 367 177 r \$0restore_matrix;
+#X obj 494 530 s \$0matrix_data;
+#N canvas 0 0 733 453 default_matrix 0;
+#X obj 275 215 s \$0nbx_length;
+#X obj 264 165 s \$0pattern_length;
+#X msg 268 133 16;
+#X msg 274 193 set 16;
+#X obj 189 27 inlet;
+#X obj 183 90 t b b b b;
+#X obj 77 199 s \$0update_gui;
+#X obj 217 314 outlet;
+#X msg 217 268 create 12 16 -1;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X connect 4 0 5 0;
+#X connect 5 0 6 0;
+#X connect 5 1 8 0;
+#X connect 5 2 3 0;
+#X connect 5 3 2 0;
+#X connect 8 0 7 0;
+#X restore 373 132 pd default_matrix;
+#X obj 326 36 r \$0make_default;
+#X obj 366 231 s \$0update_gui;
+#X msg 89 148 1;
+#X msg 467 221 0;
+#X obj 89 169 s \$0matrix_changed;
+#X obj 467 245 s \$0matrix_changed;
+#X obj 250 135 s \$0matrix_changed;
+#X msg 250 108 1;
+#X obj 539 450 r \$0matrix_changed;
+#X obj 494 467 spigot;
+#X obj 237 458 t a b;
+#X obj 295 477 s \$0matrix_changed;
+#X msg 295 453 1;
+#X obj -9 177 r \$0copy;
+#X obj 0 385 r \$0paste;
+#X obj 326 66 t b a;
+#X obj 369 205 t b a b;
+#X obj 405 272 s \$0pattern_length;
+#X obj 337 302 s \$0nbx_length;
+#X msg 336 282 set \$1;
+#X msg -9 199 copy;
+#X obj 222 420 r \$0change_length;
+#X msg 293 214 print;
+#X obj 161 198 r \$0matrix;
+#X obj 23 520 s \$0update_gui;
+#X obj 0 430 t b b b;
+#X obj -9 555 s \$0matrix_changed;
+#X msg -8 531 1;
+#X obj 213 255 ./theMatrix;
+#X msg 50 468 paste;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 2 0 39 0;
+#X connect 4 0 39 0;
+#X connect 5 0 39 0;
+#X connect 5 1 13 0;
+#X connect 6 0 39 0;
+#X connect 7 0 39 0;
+#X connect 8 0 27 0;
+#X connect 10 0 39 0;
+#X connect 11 0 26 0;
+#X connect 13 0 15 0;
+#X connect 14 0 16 0;
+#X connect 18 0 17 0;
+#X connect 19 0 20 1;
+#X connect 20 0 9 0;
+#X connect 21 0 7 0;
+#X connect 21 1 23 0;
+#X connect 23 0 22 0;
+#X connect 24 0 31 0;
+#X connect 25 0 36 0;
+#X connect 26 0 18 0;
+#X connect 26 1 10 0;
+#X connect 27 0 12 0;
+#X connect 27 1 39 0;
+#X connect 27 2 14 0;
+#X connect 30 0 29 0;
+#X connect 31 0 39 0;
+#X connect 32 0 21 0;
+#X connect 33 0 39 0;
+#X connect 34 0 39 0;
+#X connect 36 0 38 0;
+#X connect 36 1 35 0;
+#X connect 36 2 40 0;
+#X connect 38 0 37 0;
+#X connect 39 0 3 0;
+#X connect 39 1 4 0;
+#X connect 39 2 20 0;
+#X connect 39 4 30 0;
+#X connect 39 4 28 0;
+#X connect 40 0 39 0;
+#X restore 680 216 pd maxtrix;
+#N canvas 436 57 1003 670 coll 0;
+#X obj 703 14 inlet;
+#X msg 703 145 clear;
+#X obj 252 323 spigot;
+#X msg 225 253 1;
+#X obj 43 49 list prepend store 0;
+#X obj 10 88 list trim;
+#X obj 234 14 r \$0get_pattern;
+#X obj 43 5 r \$0matrix_data;
+#X obj 437 376 s \$0matrix;
+#X obj 283 503 s \$0make_default;
+#X obj 10 588 s \$0restore_matrix;
+#X obj 16 529 t a b;
+#X msg 99 536 0;
+#X obj 234 64 change;
+#X obj 702 44 t b b b;
+#X msg 691 73 0;
+#X obj 291 442 t b b;
+#X obj 482 -12 inlet write;
+#X obj 372 9 inlet read;
+#X msg 414 67 read \$1;
+#X msg 467 132 write \$1;
+#X msg 362 101 0;
+#X msg 275 89 set \$1;
+#X obj 210 166 t b f b f f f f;
+#X msg 568 465 No pattern found. Creating new default pattern.;
+#X msg 302 569 Memorizing pattern \$1.;
+#X obj 50 196 r \$0save_coll;
+#X obj 465 162 s \$0save_coll;
+#X obj 715 184 s \$0save_coll;
+#X obj 372 128 s \$0save_coll;
+#X obj 376 37 t b b a b;
+#X msg 828 287 Writing patterns and song to \$1.;
+#X obj 596 267 s \$0get_song;
+#X obj 47 28 t a b;
+#X obj 109 76 f 0;
+#X msg 593 409 Recalling pattern \$1.;
+#X msg 439 349 dump;
+#X obj 230 116 t f b;
+#X obj 432 319 t b;
+#X obj 289 35 r \$0init;
+#X msg 286 57 set -1;
+#X obj 484 13 t a a;
+#X obj 32 233 spigot 1;
+#X msg 183 342 clear;
+#X msg -37 296 open;
+#X msg -25 252 dump;
+#X obj -23 430 zexy/demultiplex;
+#X msg 182 370 1;
+#X msg 95 386 0;
+#X obj 151 479 cyclone/prepend;
+#X obj 2 300 cyclone/coll;
+#C restore;
+#X msg 140 355 dump;
+#X obj 108 438 zexy/demultiplex;
+#X msg 100 354 0;
+#X obj 259 220 s \$0current_pattern;
+#X obj 99 239 route float;
+#X obj 97 320 t b b b b b b;
+#X obj 580 214 t b b b;
+#X obj 591 168 t b a;
+#X obj 700 524 s \$0msg;
+#X obj 106 295 tof/param custom /patterns /nps;
+#X connect 0 0 14 0;
+#X connect 1 0 28 0;
+#X connect 2 0 16 0;
+#X connect 3 0 2 1;
+#X connect 4 0 5 0;
+#X connect 5 0 42 0;
+#X connect 6 0 13 0;
+#X connect 7 0 33 0;
+#X connect 11 0 10 0;
+#X connect 11 1 12 0;
+#X connect 12 0 2 1;
+#X connect 13 0 37 0;
+#X connect 14 0 15 0;
+#X connect 14 2 1 0;
+#X connect 16 0 9 0;
+#X connect 16 1 24 0;
+#X connect 17 0 41 0;
+#X connect 18 0 30 0;
+#X connect 19 0 29 0;
+#X connect 20 0 27 0;
+#X connect 21 0 23 0;
+#X connect 22 0 13 0;
+#X connect 23 0 2 0;
+#X connect 23 1 42 0;
+#X connect 23 2 3 0;
+#X connect 23 3 4 1;
+#X connect 23 3 34 1;
+#X connect 23 4 54 0;
+#X connect 23 5 22 0;
+#X connect 23 6 35 0;
+#X connect 24 0 59 0;
+#X connect 25 0 59 0;
+#X connect 26 0 42 0;
+#X connect 30 1 21 0;
+#X connect 30 2 19 0;
+#X connect 30 3 1 0;
+#X connect 31 0 59 0;
+#X connect 33 0 4 0;
+#X connect 33 1 34 0;
+#X connect 34 0 25 0;
+#X connect 35 0 59 0;
+#X connect 36 0 8 0;
+#X connect 37 0 23 0;
+#X connect 37 1 38 0;
+#X connect 38 0 36 0;
+#X connect 39 0 40 0;
+#X connect 40 0 13 0;
+#X connect 41 0 20 0;
+#X connect 41 1 58 0;
+#X connect 42 0 50 0;
+#X connect 43 0 60 0;
+#X connect 44 0 50 0;
+#X connect 45 0 50 0;
+#X connect 46 0 11 0;
+#X connect 46 1 49 0;
+#X connect 47 0 46 1;
+#X connect 47 0 52 1;
+#X connect 48 0 46 1;
+#X connect 48 0 52 1;
+#X connect 49 0 60 0;
+#X connect 50 0 46 0;
+#X connect 50 1 52 0;
+#X connect 51 0 50 0;
+#X connect 52 1 49 1;
+#X connect 53 0 60 0;
+#X connect 55 0 23 0;
+#X connect 55 1 50 0;
+#X connect 56 0 48 0;
+#X connect 56 1 53 0;
+#X connect 56 2 51 0;
+#X connect 56 3 47 0;
+#X connect 56 4 43 0;
+#X connect 56 5 57 0;
+#X connect 57 1 32 0;
+#X connect 57 2 38 0;
+#X connect 58 0 57 0;
+#X connect 58 1 31 0;
+#X connect 60 0 56 0;
+#X connect 60 1 55 0;
+#X restore 404 44 pd coll;
+#X obj 10 -128 inlet;
+#X msg 11 112 vis 1;
+#N canvas 11 162 811 408 parse 0;
+#X obj 229 23 inlet;
+#X obj 234 373 outlet;
+#X obj 115 98 unpack f f f f f f f f f f f f;
+#N canvas 146 163 872 605 trigs 0;
+#X obj 138 362 spigot;
+#X msg 459 354 -1;
+#X obj 506 167 t f f;
+#X obj 205 447 pack 0 0 127;
+#X obj 320 127 t f f;
+#X obj 444 191 != -1;
+#X obj 261 151 != -1;
+#X obj 271 186 ||;
+#X obj 339 168 sel -1;
+#X obj 523 205 sel -1;
+#X obj 361 244 t f f;
+#X obj 472 268 t f f;
+#X obj 290 298 f -1;
+#X obj 388 310 f -1;
+#X obj 287 328 != -1;
+#X obj 364 338 != -1;
+#X obj 300 371 &&;
+#X obj 260 232 sel 1;
+#X obj 507 333 r \$0looped;
+#X obj 231 206 ||;
+#X msg 189 264 0;
+#X obj 153 137 != -1;
+#X obj 259 266 t b b b;
+#X obj 179 406 f;
+#X obj 130 79 t b f f;
+#X obj 228 300 f -1;
+#X obj 225 330 != -1;
+#X obj 234 389 &&;
+#X obj 184 109 sel -1;
+#X obj 135 29 inlet;
+#X obj 313 30 inlet;
+#X obj 516 40 inlet;
+#X obj 191 534 outlet;
+#X connect 0 0 23 0;
+#X connect 1 0 12 1;
+#X connect 1 0 13 1;
+#X connect 1 0 25 1;
+#X connect 2 0 5 0;
+#X connect 2 1 9 0;
+#X connect 3 0 32 0;
+#X connect 4 0 6 0;
+#X connect 4 1 8 0;
+#X connect 5 0 7 1;
+#X connect 6 0 7 0;
+#X connect 7 0 19 1;
+#X connect 8 1 10 0;
+#X connect 9 1 11 0;
+#X connect 10 0 12 1;
+#X connect 10 1 3 1;
+#X connect 11 0 13 1;
+#X connect 11 1 3 2;
+#X connect 12 0 14 0;
+#X connect 13 0 15 0;
+#X connect 14 0 16 0;
+#X connect 15 0 16 1;
+#X connect 16 0 27 1;
+#X connect 17 0 22 0;
+#X connect 17 1 20 0;
+#X connect 18 0 1 0;
+#X connect 19 0 17 0;
+#X connect 20 0 0 1;
+#X connect 21 0 19 0;
+#X connect 22 0 25 0;
+#X connect 22 1 12 0;
+#X connect 22 2 13 0;
+#X connect 23 0 3 0;
+#X connect 24 0 0 0;
+#X connect 24 1 21 0;
+#X connect 24 2 28 0;
+#X connect 25 0 26 0;
+#X connect 26 0 27 0;
+#X connect 27 0 0 1;
+#X connect 28 1 25 1;
+#X connect 28 1 23 1;
+#X connect 29 0 24 0;
+#X connect 30 0 4 0;
+#X connect 31 0 2 0;
+#X restore 113 248 pd trigs;
+#N canvas 146 168 872 605 trigs 0;
+#X obj 138 362 spigot;
+#X msg 459 354 -1;
+#X obj 506 167 t f f;
+#X obj 205 447 pack 0 0 127;
+#X obj 320 127 t f f;
+#X obj 444 191 != -1;
+#X obj 261 151 != -1;
+#X obj 271 186 ||;
+#X obj 339 168 sel -1;
+#X obj 523 205 sel -1;
+#X obj 361 244 t f f;
+#X obj 472 268 t f f;
+#X obj 290 298 f -1;
+#X obj 388 310 f -1;
+#X obj 287 328 != -1;
+#X obj 364 338 != -1;
+#X obj 300 371 &&;
+#X obj 260 232 sel 1;
+#X obj 507 333 r \$0looped;
+#X obj 231 206 ||;
+#X msg 189 264 0;
+#X obj 153 137 != -1;
+#X obj 259 266 t b b b;
+#X obj 179 406 f;
+#X obj 130 79 t b f f;
+#X obj 228 300 f -1;
+#X obj 225 330 != -1;
+#X obj 234 389 &&;
+#X obj 184 109 sel -1;
+#X obj 135 29 inlet;
+#X obj 313 30 inlet;
+#X obj 516 40 inlet;
+#X obj 191 534 outlet;
+#X connect 0 0 23 0;
+#X connect 1 0 12 1;
+#X connect 1 0 13 1;
+#X connect 1 0 25 1;
+#X connect 2 0 5 0;
+#X connect 2 1 9 0;
+#X connect 3 0 32 0;
+#X connect 4 0 6 0;
+#X connect 4 1 8 0;
+#X connect 5 0 7 1;
+#X connect 6 0 7 0;
+#X connect 7 0 19 1;
+#X connect 8 1 10 0;
+#X connect 9 1 11 0;
+#X connect 10 0 12 1;
+#X connect 10 1 3 1;
+#X connect 11 0 13 1;
+#X connect 11 1 3 2;
+#X connect 12 0 14 0;
+#X connect 13 0 15 0;
+#X connect 14 0 16 0;
+#X connect 15 0 16 1;
+#X connect 16 0 27 1;
+#X connect 17 0 22 0;
+#X connect 17 1 20 0;
+#X connect 18 0 1 0;
+#X connect 19 0 17 0;
+#X connect 20 0 0 1;
+#X connect 21 0 19 0;
+#X connect 22 0 25 0;
+#X connect 22 1 12 0;
+#X connect 22 2 13 0;
+#X connect 23 0 3 0;
+#X connect 24 0 0 0;
+#X connect 24 1 21 0;
+#X connect 24 2 28 0;
+#X connect 25 0 26 0;
+#X connect 26 0 27 0;
+#X connect 27 0 0 1;
+#X connect 28 1 25 1;
+#X connect 28 1 23 1;
+#X connect 29 0 24 0;
+#X connect 30 0 4 0;
+#X connect 31 0 2 0;
+#X restore 207 248 pd trigs;
+#N canvas 146 168 872 605 trigs 0;
+#X obj 138 362 spigot;
+#X msg 459 354 -1;
+#X obj 506 167 t f f;
+#X obj 205 447 pack 0 0 127;
+#X obj 320 127 t f f;
+#X obj 444 191 != -1;
+#X obj 261 151 != -1;
+#X obj 271 186 ||;
+#X obj 339 168 sel -1;
+#X obj 523 205 sel -1;
+#X obj 361 244 t f f;
+#X obj 472 268 t f f;
+#X obj 290 298 f -1;
+#X obj 388 310 f -1;
+#X obj 287 328 != -1;
+#X obj 364 338 != -1;
+#X obj 300 371 &&;
+#X obj 260 232 sel 1;
+#X obj 507 333 r \$0looped;
+#X obj 231 206 ||;
+#X msg 189 264 0;
+#X obj 153 137 != -1;
+#X obj 259 266 t b b b;
+#X obj 179 406 f;
+#X obj 130 79 t b f f;
+#X obj 228 300 f -1;
+#X obj 225 330 != -1;
+#X obj 234 389 &&;
+#X obj 184 109 sel -1;
+#X obj 135 29 inlet;
+#X obj 313 30 inlet;
+#X obj 516 40 inlet;
+#X obj 191 534 outlet;
+#X connect 0 0 23 0;
+#X connect 1 0 12 1;
+#X connect 1 0 13 1;
+#X connect 1 0 25 1;
+#X connect 2 0 5 0;
+#X connect 2 1 9 0;
+#X connect 3 0 32 0;
+#X connect 4 0 6 0;
+#X connect 4 1 8 0;
+#X connect 5 0 7 1;
+#X connect 6 0 7 0;
+#X connect 7 0 19 1;
+#X connect 8 1 10 0;
+#X connect 9 1 11 0;
+#X connect 10 0 12 1;
+#X connect 10 1 3 1;
+#X connect 11 0 13 1;
+#X connect 11 1 3 2;
+#X connect 12 0 14 0;
+#X connect 13 0 15 0;
+#X connect 14 0 16 0;
+#X connect 15 0 16 1;
+#X connect 16 0 27 1;
+#X connect 17 0 22 0;
+#X connect 17 1 20 0;
+#X connect 18 0 1 0;
+#X connect 19 0 17 0;
+#X connect 20 0 0 1;
+#X connect 21 0 19 0;
+#X connect 22 0 25 0;
+#X connect 22 1 12 0;
+#X connect 22 2 13 0;
+#X connect 23 0 3 0;
+#X connect 24 0 0 0;
+#X connect 24 1 21 0;
+#X connect 24 2 28 0;
+#X connect 25 0 26 0;
+#X connect 26 0 27 0;
+#X connect 27 0 0 1;
+#X connect 28 1 25 1;
+#X connect 28 1 23 1;
+#X connect 29 0 24 0;
+#X connect 30 0 4 0;
+#X connect 31 0 2 0;
+#X restore 289 246 pd trigs;
+#N canvas 146 168 872 605 trigs 0;
+#X obj 138 362 spigot;
+#X msg 459 354 -1;
+#X obj 506 167 t f f;
+#X obj 205 447 pack 0 0 127;
+#X obj 320 127 t f f;
+#X obj 444 191 != -1;
+#X obj 261 151 != -1;
+#X obj 271 186 ||;
+#X obj 339 168 sel -1;
+#X obj 523 205 sel -1;
+#X obj 361 244 t f f;
+#X obj 472 268 t f f;
+#X obj 290 298 f -1;
+#X obj 388 310 f -1;
+#X obj 287 328 != -1;
+#X obj 364 338 != -1;
+#X obj 300 371 &&;
+#X obj 260 232 sel 1;
+#X obj 507 333 r \$0looped;
+#X obj 231 206 ||;
+#X msg 189 264 0;
+#X obj 153 137 != -1;
+#X obj 259 266 t b b b;
+#X obj 179 406 f;
+#X obj 130 79 t b f f;
+#X obj 228 300 f -1;
+#X obj 225 330 != -1;
+#X obj 234 389 &&;
+#X obj 184 109 sel -1;
+#X obj 135 29 inlet;
+#X obj 313 30 inlet;
+#X obj 516 40 inlet;
+#X obj 191 534 outlet;
+#X connect 0 0 23 0;
+#X connect 1 0 12 1;
+#X connect 1 0 13 1;
+#X connect 1 0 25 1;
+#X connect 2 0 5 0;
+#X connect 2 1 9 0;
+#X connect 3 0 32 0;
+#X connect 4 0 6 0;
+#X connect 4 1 8 0;
+#X connect 5 0 7 1;
+#X connect 6 0 7 0;
+#X connect 7 0 19 1;
+#X connect 8 1 10 0;
+#X connect 9 1 11 0;
+#X connect 10 0 12 1;
+#X connect 10 1 3 1;
+#X connect 11 0 13 1;
+#X connect 11 1 3 2;
+#X connect 12 0 14 0;
+#X connect 13 0 15 0;
+#X connect 14 0 16 0;
+#X connect 15 0 16 1;
+#X connect 16 0 27 1;
+#X connect 17 0 22 0;
+#X connect 17 1 20 0;
+#X connect 18 0 1 0;
+#X connect 19 0 17 0;
+#X connect 20 0 0 1;
+#X connect 21 0 19 0;
+#X connect 22 0 25 0;
+#X connect 22 1 12 0;
+#X connect 22 2 13 0;
+#X connect 23 0 3 0;
+#X connect 24 0 0 0;
+#X connect 24 1 21 0;
+#X connect 24 2 28 0;
+#X connect 25 0 26 0;
+#X connect 26 0 27 0;
+#X connect 27 0 0 1;
+#X connect 28 1 25 1;
+#X connect 28 1 23 1;
+#X connect 29 0 24 0;
+#X connect 30 0 4 0;
+#X connect 31 0 2 0;
+#X restore 383 246 pd trigs;
+#X obj 487 380 outlet;
+#X obj 123 278 t l b;
+#X obj 204 279 t l b;
+#X obj 301 286 t l b;
+#X obj 412 286 t l b;
+#X msg 329 349 0;
+#X msg 370 344 1;
+#X msg 416 330 2;
+#X msg 471 327 3;
+#X connect 0 0 2 0;
+#X connect 2 0 3 0;
+#X connect 2 1 3 1;
+#X connect 2 2 3 2;
+#X connect 2 3 4 0;
+#X connect 2 4 4 1;
+#X connect 2 5 4 2;
+#X connect 2 6 5 0;
+#X connect 2 7 5 1;
+#X connect 2 8 5 2;
+#X connect 2 9 6 0;
+#X connect 2 10 6 1;
+#X connect 2 11 6 2;
+#X connect 3 0 8 0;
+#X connect 4 0 9 0;
+#X connect 5 0 10 0;
+#X connect 6 0 11 0;
+#X connect 8 0 1 0;
+#X connect 8 1 12 0;
+#X connect 9 0 1 0;
+#X connect 9 1 13 0;
+#X connect 10 0 1 0;
+#X connect 10 1 14 0;
+#X connect 11 0 1 0;
+#X connect 11 1 15 0;
+#X connect 12 0 7 0;
+#X connect 13 0 7 0;
+#X connect 14 0 7 0;
+#X connect 15 0 7 0;
+#X restore 539 318 pd parse;
+#X obj 751 310 r \$0msg;
+#N canvas 498 119 513 649 progress 0;
+#X obj 82 20 inlet;
+#X obj 172 79 r \$0offset;
+#X obj 26 409 s \$0prog;
+#X obj 24 264 * 14;
+#X msg 25 358 pos 2 \$1;
+#X obj 114 90 -;
+#X obj 103 328 change;
+#X msg 100 362 color \$1 -1;
+#X obj 70 208 t f b;
+#X obj 122 246 t f b;
+#X msg 91 294 -1.67117e+07;
+#X obj 24 328 change;
+#X msg 125 222 0;
+#X msg 159 223 15;
+#X msg 189 300 -1;
+#X obj 21 114 loadbang;
+#X msg -6 202 0;
+#X obj 25 293 + 22;
+#X obj 136 163 moses 16;
+#X obj 96 137 moses -1;
+#X connect 0 0 5 0;
+#X connect 1 0 5 1;
+#X connect 3 0 17 0;
+#X connect 4 0 2 0;
+#X connect 5 0 19 0;
+#X connect 6 0 7 0;
+#X connect 7 0 2 0;
+#X connect 8 0 3 0;
+#X connect 8 1 10 0;
+#X connect 9 0 3 0;
+#X connect 9 1 14 0;
+#X connect 10 0 6 0;
+#X connect 11 0 4 0;
+#X connect 12 0 9 0;
+#X connect 13 0 9 0;
+#X connect 14 0 6 0;
+#X connect 15 0 16 0;
+#X connect 15 0 10 0;
+#X connect 16 0 3 0;
+#X connect 17 0 11 0;
+#X connect 18 0 8 0;
+#X connect 18 1 13 0;
+#X connect 19 0 12 0;
+#X connect 19 1 18 0;
+#X restore 600 215 pd progress;
+#X obj 663 157 t f f f;
+#X obj 853 167 s \$0looped;
+#X obj 853 121 t b b;
+#X obj 880 144 s \$0willloop;
+#N canvas 0 0 762 468 pattern_selector 0;
+#X obj 184 320 s \$0nbx_pattern;
+#X obj 53 15 r \$0p<;
+#X obj 121 13 r \$0p>;
+#X obj 355 -59 r \$0ask_pattern;
+#X obj 206 94 r \$0looped;
+#X obj 246 234 s \$0get_pattern;
+#X obj 103 150 +;
+#X msg 55 43 -1;
+#X msg 116 43 1;
+#X obj 297 144 f;
+#X msg 391 286 color -1 \$1 -1;
+#X obj 364 130 t f b;
+#X obj 390 219 change -1;
+#X msg 456 183 0.5;
+#X msg 390 242 \$1 \$1 \$1;
+#X msg 381 193 1;
+#X obj 71 211 moses 0;
+#X obj 197 -6 r \$0current_pattern;
+#X msg 201 174 set \$1;
+#X obj 193 19 t f f f;
+#X obj 334 58 demultiplex 0 1;
+#X obj 587 -11 r \$0playing;
+#X obj 375 85 t f f;
+#X obj 537 109 r \$0init;
+#X obj 357 16 int;
+#X obj 474 369 outlet;
+#X obj 296 169 t f f b;
+#X obj 584 67 sel 0;
+#X obj 580 13 t f f;
+#N canvas 0 0 450 300 rgb2num 0;
+#X obj 241 358 +;
+#X obj 177 430 +;
+#X obj 90 313 * -65536;
+#X obj 196 319 * -256;
+#X obj 310 327 * -1;
+#X obj 177 461 - 1;
+#X obj 258 512 outlet;
+#X obj 85 281 int 0;
+#X obj 196 270 int 0;
+#X obj 343 272 int 0;
+#X obj 18 33 inlet float_RGB;
+#X obj 27 113 unpack f f f;
+#X obj 17 154 * 255;
+#X obj 72 152 * 255;
+#X obj 119 150 * 255;
+#X obj 66 233 clip 0 255;
+#X obj 228 230 clip 0 255;
+#X obj 329 230 clip 0 255;
+#X connect 0 0 1 1;
+#X connect 1 0 5 0;
+#X connect 2 0 1 0;
+#X connect 3 0 0 0;
+#X connect 4 0 0 1;
+#X connect 5 0 6 0;
+#X connect 7 0 2 0;
+#X connect 8 0 3 0;
+#X connect 9 0 4 0;
+#X connect 10 0 11 0;
+#X connect 11 0 12 0;
+#X connect 11 1 13 0;
+#X connect 11 2 14 0;
+#X connect 12 0 15 0;
+#X connect 13 0 16 0;
+#X connect 14 0 17 0;
+#X connect 15 0 7 0;
+#X connect 16 0 8 0;
+#X connect 17 0 9 0;
+#X restore 395 261 pd rgb2num;
+#X connect 1 0 7 0;
+#X connect 2 0 8 0;
+#X connect 3 0 24 0;
+#X connect 4 0 9 0;
+#X connect 6 0 16 0;
+#X connect 7 0 6 0;
+#X connect 8 0 6 0;
+#X connect 9 0 26 0;
+#X connect 10 0 0 0;
+#X connect 11 0 9 1;
+#X connect 11 1 13 0;
+#X connect 12 0 14 0;
+#X connect 13 0 12 0;
+#X connect 14 0 29 0;
+#X connect 15 0 12 0;
+#X connect 16 1 0 0;
+#X connect 17 0 19 0;
+#X connect 18 0 0 0;
+#X connect 19 0 18 0;
+#X connect 19 1 6 1;
+#X connect 19 2 9 1;
+#X connect 20 0 9 0;
+#X connect 20 1 22 0;
+#X connect 21 0 28 0;
+#X connect 22 0 6 1;
+#X connect 22 1 11 0;
+#X connect 23 0 15 0;
+#X connect 24 0 20 0;
+#X connect 26 0 5 0;
+#X connect 26 1 25 0;
+#X connect 26 2 15 0;
+#X connect 27 0 9 0;
+#X connect 28 0 27 0;
+#X connect 28 1 20 1;
+#X connect 29 0 10 0;
+#X restore 706 271 pd pattern_selector;
+#X obj 825 41 r \$0pattern_length;
+#X obj 602 -47 s \$0nbx_pattern;
+#X obj 65 14 t a b;
+#X obj 126 119 s \$0playing;
+#X msg 127 79 1;
+#X obj 113 14 t a b;
+#X msg 161 78 0;
+#X obj 95 -219 r \$0play;
+#X obj 222 129 s \$0nbx_play;
+#X msg 267 74 set \$1;
+#X obj 104 -128 sel 1 0;
+#X msg 85 -103 play;
+#X msg 129 -99 stop;
+#X obj 784 211 s \$0nbx_event;
+#X msg 779 181 set \$1;
+#X obj 796 -227 loadbang;
+#X obj 194 -106 s \$0nbx_play;
+#X msg 141 -158 set \$1;
+#X obj 828 -179 s \$0init;
+#X obj 520 7 r \$0init;
+#X obj 793 -126 s \$0play;
+#X msg 798 -149 0;
+#X obj 705 407 outlet current_pattern;
+#X obj 907 383 outlet loops;
+#X obj 906 353 r \$0looped;
+#X obj 800 -203 t b b;
+#X obj 768 73 ./clkSlave;
+#X obj 768 -29 symbol;
+#N canvas 0 0 594 456 set_hradio 0;
+#X obj 43 13 inlet;
+#X obj 67 144 s \$0trigR;
+#X msg 41 91 set 0;
+#X msg 115 89 set 1;
+#X msg 157 94 set 2;
+#X msg 209 92 set 3;
+#X obj 78 182 r \$0trigS;
+#X obj 85 310 outlet;
+#X obj 44 54 route beat eventt loop match none;
+#X msg 255 91 set 4;
+#X obj 80 204 sel 0 1 2 3 4;
+#X msg 333 254 none;
+#X msg 271 255 match;
+#X msg 191 256 loop;
+#X msg 113 259 event;
+#X msg 43 254 beat;
+#X connect 0 0 8 0;
+#X connect 2 0 1 0;
+#X connect 3 0 1 0;
+#X connect 4 0 1 0;
+#X connect 5 0 1 0;
+#X connect 6 0 10 0;
+#X connect 8 0 2 0;
+#X connect 8 1 3 0;
+#X connect 8 2 4 0;
+#X connect 8 3 5 0;
+#X connect 8 4 9 0;
+#X connect 9 0 1 0;
+#X connect 10 0 15 0;
+#X connect 10 1 14 0;
+#X connect 10 2 13 0;
+#X connect 10 3 12 0;
+#X connect 10 4 11 0;
+#X connect 11 0 7 0;
+#X connect 12 0 7 0;
+#X connect 13 0 7 0;
+#X connect 14 0 7 0;
+#X connect 15 0 7 0;
+#X restore 649 0 pd set_hradio;
+#X obj 96 -191 t f f;
+#X obj 11 140 send pd-\$0tracker;
+#X obj 750 371 print pmdtl/tracker4;
+#N canvas 434 339 451 279 \$0tracker 0;
+#X symbolatom 388 22 4 0 0 0 - #0<11<0 #0>11>0;
+#X symbolatom 358 22 4 0 0 0 - #0<10<0 #0>10>0;
+#X symbolatom 328 22 4 0 0 0 - #0<9<0 #0>9>0;
+#X symbolatom 296 22 4 0 0 0 - #0<8<0 #0>8>0;
+#X symbolatom 266 22 4 0 0 0 - #0<7<0 #0>7>0;
+#X symbolatom 236 22 4 0 0 0 - #0<6<0 #0>6>0;
+#X symbolatom 203 22 4 0 0 0 - #0<5<0 #0>5>0;
+#X symbolatom 173 22 4 0 0 0 - #0<4<0 #0>4>0;
+#X symbolatom 143 22 4 0 0 0 - #0<3<0 #0>3>0;
+#X symbolatom 110 22 4 0 0 0 - #0<2<0 #0>2>0;
+#X symbolatom 80 22 4 0 0 0 - #0<1<0 #0>1>0;
+#X symbolatom 50 22 4 0 0 0 - #0<0<0 #0>0>0;
+#X symbolatom 388 36 4 0 0 0 - #0<11<1 #0>11>1;
+#X symbolatom 358 36 4 0 0 0 - #0<10<1 #0>10>1;
+#X symbolatom 328 36 4 0 0 0 - #0<9<1 #0>9>1;
+#X symbolatom 296 36 4 0 0 0 - #0<8<1 #0>8>1;
+#X symbolatom 266 36 4 0 0 0 - #0<7<1 #0>7>1;
+#X symbolatom 236 36 4 0 0 0 - #0<6<1 #0>6>1;
+#X symbolatom 203 36 4 0 0 0 - #0<5<1 #0>5>1;
+#X symbolatom 173 36 4 0 0 0 - #0<4<1 #0>4>1;
+#X symbolatom 143 36 4 0 0 0 - #0<3<1 #0>3>1;
+#X symbolatom 110 36 4 0 0 0 - #0<2<1 #0>2>1;
+#X symbolatom 80 36 4 0 0 0 - #0<1<1 #0>1>1;
+#X symbolatom 50 36 4 0 0 0 - #0<0<1 #0>0>1;
+#X symbolatom 388 50 4 0 0 0 - #0<11<2 #0>11>2;
+#X symbolatom 358 50 4 0 0 0 - #0<10<2 #0>10>2;
+#X symbolatom 328 50 4 0 0 0 - #0<9<2 #0>9>2;
+#X symbolatom 296 50 4 0 0 0 - #0<8<2 #0>8>2;
+#X symbolatom 266 50 4 0 0 0 - #0<7<2 #0>7>2;
+#X symbolatom 236 50 4 0 0 0 - #0<6<2 #0>6>2;
+#X symbolatom 203 50 4 0 0 0 - #0<5<2 #0>5>2;
+#X symbolatom 173 50 4 0 0 0 - #0<4<2 #0>4>2;
+#X symbolatom 143 50 4 0 0 0 - #0<3<2 #0>3>2;
+#X symbolatom 110 50 4 0 0 0 - #0<2<2 #0>2>2;
+#X symbolatom 80 50 4 0 0 0 - #0<1<2 #0>1>2;
+#X symbolatom 50 50 4 0 0 0 - #0<0<2 #0>0>2;
+#X symbolatom 388 64 4 0 0 0 - #0<11<3 #0>11>3;
+#X symbolatom 358 64 4 0 0 0 - #0<10<3 #0>10>3;
+#X symbolatom 328 64 4 0 0 0 - #0<9<3 #0>9>3;
+#X symbolatom 296 64 4 0 0 0 - #0<8<3 #0>8>3;
+#X symbolatom 266 64 4 0 0 0 - #0<7<3 #0>7>3;
+#X symbolatom 236 64 4 0 0 0 - #0<6<3 #0>6>3;
+#X symbolatom 203 64 4 0 0 0 - #0<5<3 #0>5>3;
+#X symbolatom 173 64 4 0 0 0 - #0<4<3 #0>4>3;
+#X symbolatom 143 64 4 0 0 0 - #0<3<3 #0>3>3;
+#X symbolatom 110 64 4 0 0 0 - #0<2<3 #0>2>3;
+#X symbolatom 80 64 4 0 0 0 - #0<1<3 #0>1>3;
+#X symbolatom 50 64 4 0 0 0 - #0<0<3 #0>0>3;
+#X symbolatom 388 78 4 0 0 0 - #0<11<4 #0>11>4;
+#X symbolatom 358 78 4 0 0 0 - #0<10<4 #0>10>4;
+#X symbolatom 328 78 4 0 0 0 - #0<9<4 #0>9>4;
+#X symbolatom 296 78 4 0 0 0 - #0<8<4 #0>8>4;
+#X symbolatom 266 78 4 0 0 0 - #0<7<4 #0>7>4;
+#X symbolatom 236 78 4 0 0 0 - #0<6<4 #0>6>4;
+#X symbolatom 203 78 4 0 0 0 - #0<5<4 #0>5>4;
+#X symbolatom 173 78 4 0 0 0 - #0<4<4 #0>4>4;
+#X symbolatom 143 78 4 0 0 0 - #0<3<4 #0>3>4;
+#X symbolatom 110 78 4 0 0 0 - #0<2<4 #0>2>4;
+#X symbolatom 80 78 4 0 0 0 - #0<1<4 #0>1>4;
+#X symbolatom 50 78 4 0 0 0 - #0<0<4 #0>0>4;
+#X symbolatom 388 92 4 0 0 0 - #0<11<5 #0>11>5;
+#X symbolatom 358 92 4 0 0 0 - #0<10<5 #0>10>5;
+#X symbolatom 328 92 4 0 0 0 - #0<9<5 #0>9>5;
+#X symbolatom 296 92 4 0 0 0 - #0<8<5 #0>8>5;
+#X symbolatom 266 92 4 0 0 0 - #0<7<5 #0>7>5;
+#X symbolatom 236 92 4 0 0 0 - #0<6<5 #0>6>5;
+#X symbolatom 203 92 4 0 0 0 - #0<5<5 #0>5>5;
+#X symbolatom 173 92 4 0 0 0 - #0<4<5 #0>4>5;
+#X symbolatom 143 92 4 0 0 0 - #0<3<5 #0>3>5;
+#X symbolatom 110 92 4 0 0 0 - #0<2<5 #0>2>5;
+#X symbolatom 80 92 4 0 0 0 - #0<1<5 #0>1>5;
+#X symbolatom 50 92 4 0 0 0 - #0<0<5 #0>0>5;
+#X symbolatom 388 106 4 0 0 0 - #0<11<6 #0>11>6;
+#X symbolatom 358 106 4 0 0 0 - #0<10<6 #0>10>6;
+#X symbolatom 328 106 4 0 0 0 - #0<9<6 #0>9>6;
+#X symbolatom 296 106 4 0 0 0 - #0<8<6 #0>8>6;
+#X symbolatom 266 106 4 0 0 0 - #0<7<6 #0>7>6;
+#X symbolatom 236 106 4 0 0 0 - #0<6<6 #0>6>6;
+#X symbolatom 203 106 4 0 0 0 - #0<5<6 #0>5>6;
+#X symbolatom 173 106 4 0 0 0 - #0<4<6 #0>4>6;
+#X symbolatom 143 106 4 0 0 0 - #0<3<6 #0>3>6;
+#X symbolatom 110 106 4 0 0 0 - #0<2<6 #0>2>6;
+#X symbolatom 80 106 4 0 0 0 - #0<1<6 #0>1>6;
+#X symbolatom 50 106 4 0 0 0 - #0<0<6 #0>0>6;
+#X symbolatom 388 120 4 0 0 0 - #0<11<7 #0>11>7;
+#X symbolatom 358 120 4 0 0 0 - #0<10<7 #0>10>7;
+#X symbolatom 328 120 4 0 0 0 - #0<9<7 #0>9>7;
+#X symbolatom 296 120 4 0 0 0 - #0<8<7 #0>8>7;
+#X symbolatom 266 120 4 0 0 0 - #0<7<7 #0>7>7;
+#X symbolatom 236 120 4 0 0 0 - #0<6<7 #0>6>7;
+#X symbolatom 203 120 4 0 0 0 - #0<5<7 #0>5>7;
+#X symbolatom 173 120 4 0 0 0 - #0<4<7 #0>4>7;
+#X symbolatom 143 120 4 0 0 0 - #0<3<7 #0>3>7;
+#X symbolatom 110 120 4 0 0 0 - #0<2<7 #0>2>7;
+#X symbolatom 80 120 4 0 0 0 - #0<1<7 #0>1>7;
+#X symbolatom 50 120 4 0 0 0 - #0<0<7 #0>0>7;
+#X symbolatom 388 134 4 0 0 0 - #0<11<8 #0>11>8;
+#X symbolatom 358 134 4 0 0 0 - #0<10<8 #0>10>8;
+#X symbolatom 328 134 4 0 0 0 - #0<9<8 #0>9>8;
+#X symbolatom 296 134 4 0 0 0 - #0<8<8 #0>8>8;
+#X symbolatom 266 134 4 0 0 0 - #0<7<8 #0>7>8;
+#X symbolatom 236 134 4 0 0 0 - #0<6<8 #0>6>8;
+#X symbolatom 203 134 4 0 0 0 - #0<5<8 #0>5>8;
+#X symbolatom 173 134 4 0 0 0 - #0<4<8 #0>4>8;
+#X symbolatom 143 134 4 0 0 0 - #0<3<8 #0>3>8;
+#X symbolatom 110 134 4 0 0 0 - #0<2<8 #0>2>8;
+#X symbolatom 80 134 4 0 0 0 - #0<1<8 #0>1>8;
+#X symbolatom 50 134 4 0 0 0 - #0<0<8 #0>0>8;
+#X symbolatom 388 148 4 0 0 0 - #0<11<9 #0>11>9;
+#X symbolatom 358 148 4 0 0 0 - #0<10<9 #0>10>9;
+#X symbolatom 328 148 4 0 0 0 - #0<9<9 #0>9>9;
+#X symbolatom 296 148 4 0 0 0 - #0<8<9 #0>8>9;
+#X symbolatom 266 148 4 0 0 0 - #0<7<9 #0>7>9;
+#X symbolatom 236 148 4 0 0 0 - #0<6<9 #0>6>9;
+#X symbolatom 203 148 4 0 0 0 - #0<5<9 #0>5>9;
+#X symbolatom 173 148 4 0 0 0 - #0<4<9 #0>4>9;
+#X symbolatom 143 148 4 0 0 0 - #0<3<9 #0>3>9;
+#X symbolatom 110 148 4 0 0 0 - #0<2<9 #0>2>9;
+#X symbolatom 80 148 4 0 0 0 - #0<1<9 #0>1>9;
+#X symbolatom 50 148 4 0 0 0 - #0<0<9 #0>0>9;
+#X symbolatom 388 162 4 0 0 0 - #0<11<10 #0>11>10;
+#X symbolatom 358 162 4 0 0 0 - #0<10<10 #0>10>10;
+#X symbolatom 328 162 4 0 0 0 - #0<9<10 #0>9>10;
+#X symbolatom 296 162 4 0 0 0 - #0<8<10 #0>8>10;
+#X symbolatom 266 162 4 0 0 0 - #0<7<10 #0>7>10;
+#X symbolatom 236 162 4 0 0 0 - #0<6<10 #0>6>10;
+#X symbolatom 203 162 4 0 0 0 - #0<5<10 #0>5>10;
+#X symbolatom 173 162 4 0 0 0 - #0<4<10 #0>4>10;
+#X symbolatom 143 162 4 0 0 0 - #0<3<10 #0>3>10;
+#X symbolatom 110 162 4 0 0 0 - #0<2<10 #0>2>10;
+#X symbolatom 80 162 4 0 0 0 - #0<1<10 #0>1>10;
+#X symbolatom 50 162 4 0 0 0 - #0<0<10 #0>0>10;
+#X symbolatom 388 176 4 0 0 0 - #0<11<11 #0>11>11;
+#X symbolatom 358 176 4 0 0 0 - #0<10<11 #0>10>11;
+#X symbolatom 328 176 4 0 0 0 - #0<9<11 #0>9>11;
+#X symbolatom 296 176 4 0 0 0 - #0<8<11 #0>8>11;
+#X symbolatom 266 176 4 0 0 0 - #0<7<11 #0>7>11;
+#X symbolatom 236 176 4 0 0 0 - #0<6<11 #0>6>11;
+#X symbolatom 203 176 4 0 0 0 - #0<5<11 #0>5>11;
+#X symbolatom 173 176 4 0 0 0 - #0<4<11 #0>4>11;
+#X symbolatom 143 176 4 0 0 0 - #0<3<11 #0>3>11;
+#X symbolatom 110 176 4 0 0 0 - #0<2<11 #0>2>11;
+#X symbolatom 80 176 4 0 0 0 - #0<1<11 #0>1>11;
+#X symbolatom 50 176 4 0 0 0 - #0<0<11 #0>0>11;
+#X symbolatom 388 190 4 0 0 0 - #0<11<12 #0>11>12;
+#X symbolatom 358 190 4 0 0 0 - #0<10<12 #0>10>12;
+#X symbolatom 328 190 4 0 0 0 - #0<9<12 #0>9>12;
+#X symbolatom 296 190 4 0 0 0 - #0<8<12 #0>8>12;
+#X symbolatom 266 190 4 0 0 0 - #0<7<12 #0>7>12;
+#X symbolatom 236 190 4 0 0 0 - #0<6<12 #0>6>12;
+#X symbolatom 203 190 4 0 0 0 - #0<5<12 #0>5>12;
+#X symbolatom 173 190 4 0 0 0 - #0<4<12 #0>4>12;
+#X symbolatom 143 190 4 0 0 0 - #0<3<12 #0>3>12;
+#X symbolatom 110 190 4 0 0 0 - #0<2<12 #0>2>12;
+#X symbolatom 80 190 4 0 0 0 - #0<1<12 #0>1>12;
+#X symbolatom 50 190 4 0 0 0 - #0<0<12 #0>0>12;
+#X symbolatom 388 204 4 0 0 0 - #0<11<13 #0>11>13;
+#X symbolatom 358 204 4 0 0 0 - #0<10<13 #0>10>13;
+#X symbolatom 328 204 4 0 0 0 - #0<9<13 #0>9>13;
+#X symbolatom 296 204 4 0 0 0 - #0<8<13 #0>8>13;
+#X symbolatom 266 204 4 0 0 0 - #0<7<13 #0>7>13;
+#X symbolatom 236 204 4 0 0 0 - #0<6<13 #0>6>13;
+#X symbolatom 203 204 4 0 0 0 - #0<5<13 #0>5>13;
+#X symbolatom 173 204 4 0 0 0 - #0<4<13 #0>4>13;
+#X symbolatom 143 204 4 0 0 0 - #0<3<13 #0>3>13;
+#X symbolatom 110 204 4 0 0 0 - #0<2<13 #0>2>13;
+#X symbolatom 80 204 4 0 0 0 - #0<1<13 #0>1>13;
+#X symbolatom 50 204 4 0 0 0 - #0<0<13 #0>0>13;
+#X symbolatom 388 218 4 0 0 0 - #0<11<14 #0>11>14;
+#X symbolatom 358 218 4 0 0 0 - #0<10<14 #0>10>14;
+#X symbolatom 328 218 4 0 0 0 - #0<9<14 #0>9>14;
+#X symbolatom 296 218 4 0 0 0 - #0<8<14 #0>8>14;
+#X symbolatom 266 218 4 0 0 0 - #0<7<14 #0>7>14;
+#X symbolatom 236 218 4 0 0 0 - #0<6<14 #0>6>14;
+#X symbolatom 203 218 4 0 0 0 - #0<5<14 #0>5>14;
+#X symbolatom 173 218 4 0 0 0 - #0<4<14 #0>4>14;
+#X symbolatom 143 218 4 0 0 0 - #0<3<14 #0>3>14;
+#X symbolatom 110 218 4 0 0 0 - #0<2<14 #0>2>14;
+#X symbolatom 80 218 4 0 0 0 - #0<1<14 #0>1>14;
+#X symbolatom 50 218 4 0 0 0 - #0<0<14 #0>0>14;
+#X symbolatom 388 232 4 0 0 0 - #0<11<15 #0>11>15;
+#X symbolatom 358 232 4 0 0 0 - #0<10<15 #0>10>15;
+#X symbolatom 328 232 4 0 0 0 - #0<9<15 #0>9>15;
+#X symbolatom 296 232 4 0 0 0 - #0<8<15 #0>8>15;
+#X symbolatom 266 232 4 0 0 0 - #0<7<15 #0>7>15;
+#X symbolatom 236 232 4 0 0 0 - #0<6<15 #0>6>15;
+#X symbolatom 203 232 4 0 0 0 - #0<5<15 #0>5>15;
+#X symbolatom 173 232 4 0 0 0 - #0<4<15 #0>4>15;
+#X symbolatom 143 232 4 0 0 0 - #0<3<15 #0>3>15;
+#X symbolatom 110 232 4 0 0 0 - #0<2<15 #0>2>15;
+#X symbolatom 80 232 4 0 0 0 - #0<1<15 #0>1>15;
+#X symbolatom 50 232 4 0 0 0 - #0<0<15 #0>0>15;
+#X obj 421 24 vsl 15 219 0 1 0 0 \$0scroll \$0set_scroll empty 0 -8
+0 10 -1 -1 -1 0 0;
+#X obj 2 22 cnv 7 7 14 empty \$0prog empty 20 12 0 14 -258053 -1 0
+;
+#X obj 40 250 nbx 3 15 0 999 0 0 \$0ask_pattern \$0nbx_pattern pattern
+38 7 0 10 -1 -262144 -1 0 256;
+#X obj 10 250 bng 15 250 50 0 \$0p< empty < 4 7 0 10 -1 -258113 -262144
+;
+#X obj 25 250 bng 15 250 50 0 \$0p> empty > 4 7 0 10 -1 -4034 -262144
+;
+#X obj 283 251 bng 15 250 50 0 \$0copy empty Copy 17 8 0 10 -24198
+-1 -1;
+#X obj 386 250 bng 15 250 50 0 \$0paste empty Paste 17 8 0 10 -258699
+-1 -1;
+#X obj 156 250 nbx 3 15 16 999 0 0 \$0change_length \$0nbx_length size
+38 7 0 10 -1 -262144 -1 16 256;
+#X obj 39 3 tgl 15 0 \$0play \$0nbx_play play 17 7 0 10 -1 -262144
+-1 0 1;
+#X floatatom 10 4 3 0 0 0 - #0nbx_event -;
+#X obj 35 22 cnv 3 3 14 empty empty empty 20 12 0 14 -258113 -66577
+0;
+#X obj 10 22 nbx 3 14 -1e+37 1e+37 0 0 empty \$0n0 empty 0 -8 0 10
+-1 -262144 -261689 0 256;
+#X obj 10 36 nbx 3 14 -1e+37 1e+37 0 0 empty \$0n1 empty 0 -8 0 10
+-262144 -1 -261689 1 256;
+#X obj 10 50 nbx 3 14 -1e+37 1e+37 0 0 empty \$0n2 empty 0 -8 0 10
+-262144 -1 -261689 2 256;
+#X obj 10 64 nbx 3 14 -1e+37 1e+37 0 0 empty \$0n3 empty 0 -8 0 10
+-262144 -1 -261689 3 256;
+#X obj 10 78 nbx 3 14 -1e+37 1e+37 0 0 empty \$0n4 empty 0 -8 0 10
+-262144 -1 -261689 4 256;
+#X obj 10 92 nbx 3 14 -1e+37 1e+37 0 0 empty \$0n5 empty 0 -8 0 10
+-262144 -1 -261689 5 256;
+#X obj 10 106 nbx 3 14 -1e+37 1e+37 0 0 empty \$0n6 empty 0 -8 0 10
+-262144 -1 -261689 6 256;
+#X obj 10 120 nbx 3 14 -1e+37 1e+37 0 0 empty \$0n7 empty 0 -8 0 10
+-262144 -1 -261689 7 256;
+#X obj 10 134 nbx 3 14 -1e+37 1e+37 0 0 empty \$0n8 empty 0 -8 0 10
+-128992 -262144 -261689 8 256;
+#X obj 10 148 nbx 3 14 -1e+37 1e+37 0 0 empty \$0n9 empty 0 -8 0 10
+-262144 -1 -261689 9 256;
+#X obj 10 162 nbx 3 14 -1e+37 1e+37 0 0 empty \$0n10 empty 0 -8 0 10
+-262144 -1 -261689 10 256;
+#X obj 10 176 nbx 3 14 -1e+37 1e+37 0 0 empty \$0n11 empty 0 -8 0 10
+-262144 -1 -261689 11 256;
+#X obj 10 190 nbx 3 14 -1e+37 1e+37 0 0 empty \$0n12 empty 0 -8 0 10
+-262144 -1 -261689 12 256;
+#X obj 10 204 nbx 3 14 -1e+37 1e+37 0 0 empty \$0n13 empty 0 -8 0 10
+-262144 -1 -261689 13 256;
+#X obj 10 218 nbx 3 14 -1e+37 1e+37 0 0 empty \$0n14 empty 0 -8 0 10
+-262144 -1 -261689 14 256;
+#X obj 10 232 nbx 3 14 -1e+37 1e+37 0 0 empty \$0n15 empty 0 -8 0 10
+-262144 -1 -261689 15 256;
+#X obj 107 3 hradio 15 1 0 5 \$0trigS \$0trigR (beat/event/loop/match/none)
+78 8 0 10 -262144 -1 -1 0;
+#X restore 56 353 pd \$0tracker;
+#N canvas 0 0 1028 714 \$0receives 0;
+#X obj 0 0 r \$0>0>0;
+#X obj 0 15 list prepend 0 0;
+#X obj 60 0 r \$0>1>0;
+#X obj 60 15 list prepend 1 0;
+#X obj 120 0 r \$0>2>0;
+#X obj 120 15 list prepend 2 0;
+#X obj 180 0 r \$0>3>0;
+#X obj 180 15 list prepend 3 0;
+#X obj 240 0 r \$0>4>0;
+#X obj 240 15 list prepend 4 0;
+#X obj 300 0 r \$0>5>0;
+#X obj 300 15 list prepend 5 0;
+#X obj 360 0 r \$0>6>0;
+#X obj 360 15 list prepend 6 0;
+#X obj 420 0 r \$0>7>0;
+#X obj 420 15 list prepend 7 0;
+#X obj 480 0 r \$0>8>0;
+#X obj 480 15 list prepend 8 0;
+#X obj 540 0 r \$0>9>0;
+#X obj 540 15 list prepend 9 0;
+#X obj 600 0 r \$0>10>0;
+#X obj 600 15 list prepend 10 0;
+#X obj 660 0 r \$0>11>0;
+#X obj 660 15 list prepend 11 0;
+#X obj 0 40 r \$0>0>1;
+#X obj 0 55 list prepend 0 1;
+#X obj 60 40 r \$0>1>1;
+#X obj 60 55 list prepend 1 1;
+#X obj 120 40 r \$0>2>1;
+#X obj 120 55 list prepend 2 1;
+#X obj 180 40 r \$0>3>1;
+#X obj 180 55 list prepend 3 1;
+#X obj 240 40 r \$0>4>1;
+#X obj 240 55 list prepend 4 1;
+#X obj 300 40 r \$0>5>1;
+#X obj 300 55 list prepend 5 1;
+#X obj 360 40 r \$0>6>1;
+#X obj 360 55 list prepend 6 1;
+#X obj 420 40 r \$0>7>1;
+#X obj 420 55 list prepend 7 1;
+#X obj 480 40 r \$0>8>1;
+#X obj 480 55 list prepend 8 1;
+#X obj 540 40 r \$0>9>1;
+#X obj 540 55 list prepend 9 1;
+#X obj 600 40 r \$0>10>1;
+#X obj 600 55 list prepend 10 1;
+#X obj 660 40 r \$0>11>1;
+#X obj 660 55 list prepend 11 1;
+#X obj 0 80 r \$0>0>2;
+#X obj 0 95 list prepend 0 2;
+#X obj 60 80 r \$0>1>2;
+#X obj 60 95 list prepend 1 2;
+#X obj 120 80 r \$0>2>2;
+#X obj 120 95 list prepend 2 2;
+#X obj 180 80 r \$0>3>2;
+#X obj 180 95 list prepend 3 2;
+#X obj 240 80 r \$0>4>2;
+#X obj 240 95 list prepend 4 2;
+#X obj 300 80 r \$0>5>2;
+#X obj 300 95 list prepend 5 2;
+#X obj 360 80 r \$0>6>2;
+#X obj 360 95 list prepend 6 2;
+#X obj 420 80 r \$0>7>2;
+#X obj 420 95 list prepend 7 2;
+#X obj 480 80 r \$0>8>2;
+#X obj 480 95 list prepend 8 2;
+#X obj 540 80 r \$0>9>2;
+#X obj 540 95 list prepend 9 2;
+#X obj 600 80 r \$0>10>2;
+#X obj 600 95 list prepend 10 2;
+#X obj 660 80 r \$0>11>2;
+#X obj 660 95 list prepend 11 2;
+#X obj 0 120 r \$0>0>3;
+#X obj 0 135 list prepend 0 3;
+#X obj 60 120 r \$0>1>3;
+#X obj 60 135 list prepend 1 3;
+#X obj 120 120 r \$0>2>3;
+#X obj 120 135 list prepend 2 3;
+#X obj 180 120 r \$0>3>3;
+#X obj 180 135 list prepend 3 3;
+#X obj 240 120 r \$0>4>3;
+#X obj 240 135 list prepend 4 3;
+#X obj 300 120 r \$0>5>3;
+#X obj 300 135 list prepend 5 3;
+#X obj 360 120 r \$0>6>3;
+#X obj 360 135 list prepend 6 3;
+#X obj 420 120 r \$0>7>3;
+#X obj 420 135 list prepend 7 3;
+#X obj 480 120 r \$0>8>3;
+#X obj 480 135 list prepend 8 3;
+#X obj 540 120 r \$0>9>3;
+#X obj 540 135 list prepend 9 3;
+#X obj 600 120 r \$0>10>3;
+#X obj 600 135 list prepend 10 3;
+#X obj 660 120 r \$0>11>3;
+#X obj 660 135 list prepend 11 3;
+#X obj 0 160 r \$0>0>4;
+#X obj 0 175 list prepend 0 4;
+#X obj 60 160 r \$0>1>4;
+#X obj 60 175 list prepend 1 4;
+#X obj 120 160 r \$0>2>4;
+#X obj 120 175 list prepend 2 4;
+#X obj 180 160 r \$0>3>4;
+#X obj 180 175 list prepend 3 4;
+#X obj 240 160 r \$0>4>4;
+#X obj 240 175 list prepend 4 4;
+#X obj 300 160 r \$0>5>4;
+#X obj 300 175 list prepend 5 4;
+#X obj 360 160 r \$0>6>4;
+#X obj 360 175 list prepend 6 4;
+#X obj 420 160 r \$0>7>4;
+#X obj 420 175 list prepend 7 4;
+#X obj 480 160 r \$0>8>4;
+#X obj 480 175 list prepend 8 4;
+#X obj 540 160 r \$0>9>4;
+#X obj 540 175 list prepend 9 4;
+#X obj 600 160 r \$0>10>4;
+#X obj 600 175 list prepend 10 4;
+#X obj 660 160 r \$0>11>4;
+#X obj 660 175 list prepend 11 4;
+#X obj 0 200 r \$0>0>5;
+#X obj 0 215 list prepend 0 5;
+#X obj 60 200 r \$0>1>5;
+#X obj 60 215 list prepend 1 5;
+#X obj 120 200 r \$0>2>5;
+#X obj 120 215 list prepend 2 5;
+#X obj 180 200 r \$0>3>5;
+#X obj 180 215 list prepend 3 5;
+#X obj 240 200 r \$0>4>5;
+#X obj 240 215 list prepend 4 5;
+#X obj 300 200 r \$0>5>5;
+#X obj 300 215 list prepend 5 5;
+#X obj 360 200 r \$0>6>5;
+#X obj 360 215 list prepend 6 5;
+#X obj 420 200 r \$0>7>5;
+#X obj 420 215 list prepend 7 5;
+#X obj 480 200 r \$0>8>5;
+#X obj 480 215 list prepend 8 5;
+#X obj 540 200 r \$0>9>5;
+#X obj 540 215 list prepend 9 5;
+#X obj 600 200 r \$0>10>5;
+#X obj 600 215 list prepend 10 5;
+#X obj 660 200 r \$0>11>5;
+#X obj 660 215 list prepend 11 5;
+#X obj 0 240 r \$0>0>6;
+#X obj 0 255 list prepend 0 6;
+#X obj 60 240 r \$0>1>6;
+#X obj 60 255 list prepend 1 6;
+#X obj 120 240 r \$0>2>6;
+#X obj 120 255 list prepend 2 6;
+#X obj 180 240 r \$0>3>6;
+#X obj 180 255 list prepend 3 6;
+#X obj 240 240 r \$0>4>6;
+#X obj 240 255 list prepend 4 6;
+#X obj 300 240 r \$0>5>6;
+#X obj 300 255 list prepend 5 6;
+#X obj 360 240 r \$0>6>6;
+#X obj 360 255 list prepend 6 6;
+#X obj 420 240 r \$0>7>6;
+#X obj 420 255 list prepend 7 6;
+#X obj 480 240 r \$0>8>6;
+#X obj 480 255 list prepend 8 6;
+#X obj 540 240 r \$0>9>6;
+#X obj 540 255 list prepend 9 6;
+#X obj 600 240 r \$0>10>6;
+#X obj 600 255 list prepend 10 6;
+#X obj 660 240 r \$0>11>6;
+#X obj 660 255 list prepend 11 6;
+#X obj 0 280 r \$0>0>7;
+#X obj 0 295 list prepend 0 7;
+#X obj 60 280 r \$0>1>7;
+#X obj 60 295 list prepend 1 7;
+#X obj 120 280 r \$0>2>7;
+#X obj 120 295 list prepend 2 7;
+#X obj 180 280 r \$0>3>7;
+#X obj 180 295 list prepend 3 7;
+#X obj 240 280 r \$0>4>7;
+#X obj 240 295 list prepend 4 7;
+#X obj 300 280 r \$0>5>7;
+#X obj 300 295 list prepend 5 7;
+#X obj 360 280 r \$0>6>7;
+#X obj 360 295 list prepend 6 7;
+#X obj 420 280 r \$0>7>7;
+#X obj 420 295 list prepend 7 7;
+#X obj 480 280 r \$0>8>7;
+#X obj 480 295 list prepend 8 7;
+#X obj 540 280 r \$0>9>7;
+#X obj 540 295 list prepend 9 7;
+#X obj 600 280 r \$0>10>7;
+#X obj 600 295 list prepend 10 7;
+#X obj 660 280 r \$0>11>7;
+#X obj 660 295 list prepend 11 7;
+#X obj 0 320 r \$0>0>8;
+#X obj 0 335 list prepend 0 8;
+#X obj 60 320 r \$0>1>8;
+#X obj 60 335 list prepend 1 8;
+#X obj 120 320 r \$0>2>8;
+#X obj 120 335 list prepend 2 8;
+#X obj 180 320 r \$0>3>8;
+#X obj 180 335 list prepend 3 8;
+#X obj 240 320 r \$0>4>8;
+#X obj 240 335 list prepend 4 8;
+#X obj 300 320 r \$0>5>8;
+#X obj 300 335 list prepend 5 8;
+#X obj 360 320 r \$0>6>8;
+#X obj 360 335 list prepend 6 8;
+#X obj 420 320 r \$0>7>8;
+#X obj 420 335 list prepend 7 8;
+#X obj 480 320 r \$0>8>8;
+#X obj 480 335 list prepend 8 8;
+#X obj 540 320 r \$0>9>8;
+#X obj 540 335 list prepend 9 8;
+#X obj 600 320 r \$0>10>8;
+#X obj 600 335 list prepend 10 8;
+#X obj 660 320 r \$0>11>8;
+#X obj 660 335 list prepend 11 8;
+#X obj 0 360 r \$0>0>9;
+#X obj 0 375 list prepend 0 9;
+#X obj 60 360 r \$0>1>9;
+#X obj 60 375 list prepend 1 9;
+#X obj 120 360 r \$0>2>9;
+#X obj 120 375 list prepend 2 9;
+#X obj 180 360 r \$0>3>9;
+#X obj 180 375 list prepend 3 9;
+#X obj 240 360 r \$0>4>9;
+#X obj 240 375 list prepend 4 9;
+#X obj 300 360 r \$0>5>9;
+#X obj 300 375 list prepend 5 9;
+#X obj 360 360 r \$0>6>9;
+#X obj 360 375 list prepend 6 9;
+#X obj 420 360 r \$0>7>9;
+#X obj 420 375 list prepend 7 9;
+#X obj 480 360 r \$0>8>9;
+#X obj 480 375 list prepend 8 9;
+#X obj 540 360 r \$0>9>9;
+#X obj 540 375 list prepend 9 9;
+#X obj 600 360 r \$0>10>9;
+#X obj 600 375 list prepend 10 9;
+#X obj 660 360 r \$0>11>9;
+#X obj 660 375 list prepend 11 9;
+#X obj 0 400 r \$0>0>10;
+#X obj 0 415 list prepend 0 10;
+#X obj 60 400 r \$0>1>10;
+#X obj 60 415 list prepend 1 10;
+#X obj 120 400 r \$0>2>10;
+#X obj 120 415 list prepend 2 10;
+#X obj 180 400 r \$0>3>10;
+#X obj 180 415 list prepend 3 10;
+#X obj 240 400 r \$0>4>10;
+#X obj 240 415 list prepend 4 10;
+#X obj 300 400 r \$0>5>10;
+#X obj 300 415 list prepend 5 10;
+#X obj 360 400 r \$0>6>10;
+#X obj 360 415 list prepend 6 10;
+#X obj 420 400 r \$0>7>10;
+#X obj 420 415 list prepend 7 10;
+#X obj 480 400 r \$0>8>10;
+#X obj 480 415 list prepend 8 10;
+#X obj 540 400 r \$0>9>10;
+#X obj 540 415 list prepend 9 10;
+#X obj 600 400 r \$0>10>10;
+#X obj 600 415 list prepend 10 10;
+#X obj 660 400 r \$0>11>10;
+#X obj 660 415 list prepend 11 10;
+#X obj 0 440 r \$0>0>11;
+#X obj 0 455 list prepend 0 11;
+#X obj 60 440 r \$0>1>11;
+#X obj 60 455 list prepend 1 11;
+#X obj 120 440 r \$0>2>11;
+#X obj 120 455 list prepend 2 11;
+#X obj 180 440 r \$0>3>11;
+#X obj 180 455 list prepend 3 11;
+#X obj 240 440 r \$0>4>11;
+#X obj 240 455 list prepend 4 11;
+#X obj 300 440 r \$0>5>11;
+#X obj 300 455 list prepend 5 11;
+#X obj 360 440 r \$0>6>11;
+#X obj 360 455 list prepend 6 11;
+#X obj 420 440 r \$0>7>11;
+#X obj 420 455 list prepend 7 11;
+#X obj 480 440 r \$0>8>11;
+#X obj 480 455 list prepend 8 11;
+#X obj 540 440 r \$0>9>11;
+#X obj 540 455 list prepend 9 11;
+#X obj 600 440 r \$0>10>11;
+#X obj 600 455 list prepend 10 11;
+#X obj 660 440 r \$0>11>11;
+#X obj 660 455 list prepend 11 11;
+#X obj 0 480 r \$0>0>12;
+#X obj 0 495 list prepend 0 12;
+#X obj 60 480 r \$0>1>12;
+#X obj 60 495 list prepend 1 12;
+#X obj 120 480 r \$0>2>12;
+#X obj 120 495 list prepend 2 12;
+#X obj 180 480 r \$0>3>12;
+#X obj 180 495 list prepend 3 12;
+#X obj 240 480 r \$0>4>12;
+#X obj 240 495 list prepend 4 12;
+#X obj 300 480 r \$0>5>12;
+#X obj 300 495 list prepend 5 12;
+#X obj 360 480 r \$0>6>12;
+#X obj 360 495 list prepend 6 12;
+#X obj 420 480 r \$0>7>12;
+#X obj 420 495 list prepend 7 12;
+#X obj 480 480 r \$0>8>12;
+#X obj 480 495 list prepend 8 12;
+#X obj 540 480 r \$0>9>12;
+#X obj 540 495 list prepend 9 12;
+#X obj 600 480 r \$0>10>12;
+#X obj 600 495 list prepend 10 12;
+#X obj 660 480 r \$0>11>12;
+#X obj 660 495 list prepend 11 12;
+#X obj 0 520 r \$0>0>13;
+#X obj 0 535 list prepend 0 13;
+#X obj 60 520 r \$0>1>13;
+#X obj 60 535 list prepend 1 13;
+#X obj 120 520 r \$0>2>13;
+#X obj 120 535 list prepend 2 13;
+#X obj 180 520 r \$0>3>13;
+#X obj 180 535 list prepend 3 13;
+#X obj 240 520 r \$0>4>13;
+#X obj 240 535 list prepend 4 13;
+#X obj 300 520 r \$0>5>13;
+#X obj 300 535 list prepend 5 13;
+#X obj 360 520 r \$0>6>13;
+#X obj 360 535 list prepend 6 13;
+#X obj 420 520 r \$0>7>13;
+#X obj 420 535 list prepend 7 13;
+#X obj 480 520 r \$0>8>13;
+#X obj 480 535 list prepend 8 13;
+#X obj 540 520 r \$0>9>13;
+#X obj 540 535 list prepend 9 13;
+#X obj 600 520 r \$0>10>13;
+#X obj 600 535 list prepend 10 13;
+#X obj 660 520 r \$0>11>13;
+#X obj 660 535 list prepend 11 13;
+#X obj 0 560 r \$0>0>14;
+#X obj 0 575 list prepend 0 14;
+#X obj 60 560 r \$0>1>14;
+#X obj 60 575 list prepend 1 14;
+#X obj 120 560 r \$0>2>14;
+#X obj 120 575 list prepend 2 14;
+#X obj 180 560 r \$0>3>14;
+#X obj 180 575 list prepend 3 14;
+#X obj 240 560 r \$0>4>14;
+#X obj 240 575 list prepend 4 14;
+#X obj 300 560 r \$0>5>14;
+#X obj 300 575 list prepend 5 14;
+#X obj 360 560 r \$0>6>14;
+#X obj 360 575 list prepend 6 14;
+#X obj 420 560 r \$0>7>14;
+#X obj 420 575 list prepend 7 14;
+#X obj 480 560 r \$0>8>14;
+#X obj 480 575 list prepend 8 14;
+#X obj 540 560 r \$0>9>14;
+#X obj 540 575 list prepend 9 14;
+#X obj 600 560 r \$0>10>14;
+#X obj 600 575 list prepend 10 14;
+#X obj 660 560 r \$0>11>14;
+#X obj 660 575 list prepend 11 14;
+#X obj 0 600 r \$0>0>15;
+#X obj 0 615 list prepend 0 15;
+#X obj 60 600 r \$0>1>15;
+#X obj 60 615 list prepend 1 15;
+#X obj 120 600 r \$0>2>15;
+#X obj 120 615 list prepend 2 15;
+#X obj 180 600 r \$0>3>15;
+#X obj 180 615 list prepend 3 15;
+#X obj 240 600 r \$0>4>15;
+#X obj 240 615 list prepend 4 15;
+#X obj 300 600 r \$0>5>15;
+#X obj 300 615 list prepend 5 15;
+#X obj 360 600 r \$0>6>15;
+#X obj 360 615 list prepend 6 15;
+#X obj 420 600 r \$0>7>15;
+#X obj 420 615 list prepend 7 15;
+#X obj 480 600 r \$0>8>15;
+#X obj 480 615 list prepend 8 15;
+#X obj 540 600 r \$0>9>15;
+#X obj 540 615 list prepend 9 15;
+#X obj 600 600 r \$0>10>15;
+#X obj 600 615 list prepend 10 15;
+#X obj 660 600 r \$0>11>15;
+#X obj 739 619 list prepend 11 15;
+#X obj 0 700 s \$0r;
+#X connect 0 0 1 0;
+#X connect 1 0 384 0;
+#X connect 2 0 3 0;
+#X connect 3 0 384 0;
+#X connect 4 0 5 0;
+#X connect 5 0 384 0;
+#X connect 6 0 7 0;
+#X connect 7 0 384 0;
+#X connect 8 0 9 0;
+#X connect 9 0 384 0;
+#X connect 10 0 11 0;
+#X connect 11 0 384 0;
+#X connect 12 0 13 0;
+#X connect 13 0 384 0;
+#X connect 14 0 15 0;
+#X connect 15 0 384 0;
+#X connect 16 0 17 0;
+#X connect 17 0 384 0;
+#X connect 18 0 19 0;
+#X connect 19 0 384 0;
+#X connect 20 0 21 0;
+#X connect 21 0 384 0;
+#X connect 22 0 23 0;
+#X connect 23 0 384 0;
+#X connect 24 0 25 0;
+#X connect 25 0 384 0;
+#X connect 26 0 27 0;
+#X connect 27 0 384 0;
+#X connect 28 0 29 0;
+#X connect 29 0 384 0;
+#X connect 30 0 31 0;
+#X connect 31 0 384 0;
+#X connect 32 0 33 0;
+#X connect 33 0 384 0;
+#X connect 34 0 35 0;
+#X connect 35 0 384 0;
+#X connect 36 0 37 0;
+#X connect 37 0 384 0;
+#X connect 38 0 39 0;
+#X connect 39 0 384 0;
+#X connect 40 0 41 0;
+#X connect 41 0 384 0;
+#X connect 42 0 43 0;
+#X connect 43 0 384 0;
+#X connect 44 0 45 0;
+#X connect 45 0 384 0;
+#X connect 46 0 47 0;
+#X connect 47 0 384 0;
+#X connect 48 0 49 0;
+#X connect 49 0 384 0;
+#X connect 50 0 51 0;
+#X connect 51 0 384 0;
+#X connect 52 0 53 0;
+#X connect 53 0 384 0;
+#X connect 54 0 55 0;
+#X connect 55 0 384 0;
+#X connect 56 0 57 0;
+#X connect 57 0 384 0;
+#X connect 58 0 59 0;
+#X connect 59 0 384 0;
+#X connect 60 0 61 0;
+#X connect 61 0 384 0;
+#X connect 62 0 63 0;
+#X connect 63 0 384 0;
+#X connect 64 0 65 0;
+#X connect 65 0 384 0;
+#X connect 66 0 67 0;
+#X connect 67 0 384 0;
+#X connect 68 0 69 0;
+#X connect 69 0 384 0;
+#X connect 70 0 71 0;
+#X connect 71 0 384 0;
+#X connect 72 0 73 0;
+#X connect 73 0 384 0;
+#X connect 74 0 75 0;
+#X connect 75 0 384 0;
+#X connect 76 0 77 0;
+#X connect 77 0 384 0;
+#X connect 78 0 79 0;
+#X connect 79 0 384 0;
+#X connect 80 0 81 0;
+#X connect 81 0 384 0;
+#X connect 82 0 83 0;
+#X connect 83 0 384 0;
+#X connect 84 0 85 0;
+#X connect 85 0 384 0;
+#X connect 86 0 87 0;
+#X connect 87 0 384 0;
+#X connect 88 0 89 0;
+#X connect 89 0 384 0;
+#X connect 90 0 91 0;
+#X connect 91 0 384 0;
+#X connect 92 0 93 0;
+#X connect 93 0 384 0;
+#X connect 94 0 95 0;
+#X connect 95 0 384 0;
+#X connect 96 0 97 0;
+#X connect 97 0 384 0;
+#X connect 98 0 99 0;
+#X connect 99 0 384 0;
+#X connect 100 0 101 0;
+#X connect 101 0 384 0;
+#X connect 102 0 103 0;
+#X connect 103 0 384 0;
+#X connect 104 0 105 0;
+#X connect 105 0 384 0;
+#X connect 106 0 107 0;
+#X connect 107 0 384 0;
+#X connect 108 0 109 0;
+#X connect 109 0 384 0;
+#X connect 110 0 111 0;
+#X connect 111 0 384 0;
+#X connect 112 0 113 0;
+#X connect 113 0 384 0;
+#X connect 114 0 115 0;
+#X connect 115 0 384 0;
+#X connect 116 0 117 0;
+#X connect 117 0 384 0;
+#X connect 118 0 119 0;
+#X connect 119 0 384 0;
+#X connect 120 0 121 0;
+#X connect 121 0 384 0;
+#X connect 122 0 123 0;
+#X connect 123 0 384 0;
+#X connect 124 0 125 0;
+#X connect 125 0 384 0;
+#X connect 126 0 127 0;
+#X connect 127 0 384 0;
+#X connect 128 0 129 0;
+#X connect 129 0 384 0;
+#X connect 130 0 131 0;
+#X connect 131 0 384 0;
+#X connect 132 0 133 0;
+#X connect 133 0 384 0;
+#X connect 134 0 135 0;
+#X connect 135 0 384 0;
+#X connect 136 0 137 0;
+#X connect 137 0 384 0;
+#X connect 138 0 139 0;
+#X connect 139 0 384 0;
+#X connect 140 0 141 0;
+#X connect 141 0 384 0;
+#X connect 142 0 143 0;
+#X connect 143 0 384 0;
+#X connect 144 0 145 0;
+#X connect 145 0 384 0;
+#X connect 146 0 147 0;
+#X connect 147 0 384 0;
+#X connect 148 0 149 0;
+#X connect 149 0 384 0;
+#X connect 150 0 151 0;
+#X connect 151 0 384 0;
+#X connect 152 0 153 0;
+#X connect 153 0 384 0;
+#X connect 154 0 155 0;
+#X connect 155 0 384 0;
+#X connect 156 0 157 0;
+#X connect 157 0 384 0;
+#X connect 158 0 159 0;
+#X connect 159 0 384 0;
+#X connect 160 0 161 0;
+#X connect 161 0 384 0;
+#X connect 162 0 163 0;
+#X connect 163 0 384 0;
+#X connect 164 0 165 0;
+#X connect 165 0 384 0;
+#X connect 166 0 167 0;
+#X connect 167 0 384 0;
+#X connect 168 0 169 0;
+#X connect 169 0 384 0;
+#X connect 170 0 171 0;
+#X connect 171 0 384 0;
+#X connect 172 0 173 0;
+#X connect 173 0 384 0;
+#X connect 174 0 175 0;
+#X connect 175 0 384 0;
+#X connect 176 0 177 0;
+#X connect 177 0 384 0;
+#X connect 178 0 179 0;
+#X connect 179 0 384 0;
+#X connect 180 0 181 0;
+#X connect 181 0 384 0;
+#X connect 182 0 183 0;
+#X connect 183 0 384 0;
+#X connect 184 0 185 0;
+#X connect 185 0 384 0;
+#X connect 186 0 187 0;
+#X connect 187 0 384 0;
+#X connect 188 0 189 0;
+#X connect 189 0 384 0;
+#X connect 190 0 191 0;
+#X connect 191 0 384 0;
+#X connect 192 0 193 0;
+#X connect 193 0 384 0;
+#X connect 194 0 195 0;
+#X connect 195 0 384 0;
+#X connect 196 0 197 0;
+#X connect 197 0 384 0;
+#X connect 198 0 199 0;
+#X connect 199 0 384 0;
+#X connect 200 0 201 0;
+#X connect 201 0 384 0;
+#X connect 202 0 203 0;
+#X connect 203 0 384 0;
+#X connect 204 0 205 0;
+#X connect 205 0 384 0;
+#X connect 206 0 207 0;
+#X connect 207 0 384 0;
+#X connect 208 0 209 0;
+#X connect 209 0 384 0;
+#X connect 210 0 211 0;
+#X connect 211 0 384 0;
+#X connect 212 0 213 0;
+#X connect 213 0 384 0;
+#X connect 214 0 215 0;
+#X connect 215 0 384 0;
+#X connect 216 0 217 0;
+#X connect 217 0 384 0;
+#X connect 218 0 219 0;
+#X connect 219 0 384 0;
+#X connect 220 0 221 0;
+#X connect 221 0 384 0;
+#X connect 222 0 223 0;
+#X connect 223 0 384 0;
+#X connect 224 0 225 0;
+#X connect 225 0 384 0;
+#X connect 226 0 227 0;
+#X connect 227 0 384 0;
+#X connect 228 0 229 0;
+#X connect 229 0 384 0;
+#X connect 230 0 231 0;
+#X connect 231 0 384 0;
+#X connect 232 0 233 0;
+#X connect 233 0 384 0;
+#X connect 234 0 235 0;
+#X connect 235 0 384 0;
+#X connect 236 0 237 0;
+#X connect 237 0 384 0;
+#X connect 238 0 239 0;
+#X connect 239 0 384 0;
+#X connect 240 0 241 0;
+#X connect 241 0 384 0;
+#X connect 242 0 243 0;
+#X connect 243 0 384 0;
+#X connect 244 0 245 0;
+#X connect 245 0 384 0;
+#X connect 246 0 247 0;
+#X connect 247 0 384 0;
+#X connect 248 0 249 0;
+#X connect 249 0 384 0;
+#X connect 250 0 251 0;
+#X connect 251 0 384 0;
+#X connect 252 0 253 0;
+#X connect 253 0 384 0;
+#X connect 254 0 255 0;
+#X connect 255 0 384 0;
+#X connect 256 0 257 0;
+#X connect 257 0 384 0;
+#X connect 258 0 259 0;
+#X connect 259 0 384 0;
+#X connect 260 0 261 0;
+#X connect 261 0 384 0;
+#X connect 262 0 263 0;
+#X connect 263 0 384 0;
+#X connect 264 0 265 0;
+#X connect 265 0 384 0;
+#X connect 266 0 267 0;
+#X connect 267 0 384 0;
+#X connect 268 0 269 0;
+#X connect 269 0 384 0;
+#X connect 270 0 271 0;
+#X connect 271 0 384 0;
+#X connect 272 0 273 0;
+#X connect 273 0 384 0;
+#X connect 274 0 275 0;
+#X connect 275 0 384 0;
+#X connect 276 0 277 0;
+#X connect 277 0 384 0;
+#X connect 278 0 279 0;
+#X connect 279 0 384 0;
+#X connect 280 0 281 0;
+#X connect 281 0 384 0;
+#X connect 282 0 283 0;
+#X connect 283 0 384 0;
+#X connect 284 0 285 0;
+#X connect 285 0 384 0;
+#X connect 286 0 287 0;
+#X connect 287 0 384 0;
+#X connect 288 0 289 0;
+#X connect 289 0 384 0;
+#X connect 290 0 291 0;
+#X connect 291 0 384 0;
+#X connect 292 0 293 0;
+#X connect 293 0 384 0;
+#X connect 294 0 295 0;
+#X connect 295 0 384 0;
+#X connect 296 0 297 0;
+#X connect 297 0 384 0;
+#X connect 298 0 299 0;
+#X connect 299 0 384 0;
+#X connect 300 0 301 0;
+#X connect 301 0 384 0;
+#X connect 302 0 303 0;
+#X connect 303 0 384 0;
+#X connect 304 0 305 0;
+#X connect 305 0 384 0;
+#X connect 306 0 307 0;
+#X connect 307 0 384 0;
+#X connect 308 0 309 0;
+#X connect 309 0 384 0;
+#X connect 310 0 311 0;
+#X connect 311 0 384 0;
+#X connect 312 0 313 0;
+#X connect 313 0 384 0;
+#X connect 314 0 315 0;
+#X connect 315 0 384 0;
+#X connect 316 0 317 0;
+#X connect 317 0 384 0;
+#X connect 318 0 319 0;
+#X connect 319 0 384 0;
+#X connect 320 0 321 0;
+#X connect 321 0 384 0;
+#X connect 322 0 323 0;
+#X connect 323 0 384 0;
+#X connect 324 0 325 0;
+#X connect 325 0 384 0;
+#X connect 326 0 327 0;
+#X connect 327 0 384 0;
+#X connect 328 0 329 0;
+#X connect 329 0 384 0;
+#X connect 330 0 331 0;
+#X connect 331 0 384 0;
+#X connect 332 0 333 0;
+#X connect 333 0 384 0;
+#X connect 334 0 335 0;
+#X connect 335 0 384 0;
+#X connect 336 0 337 0;
+#X connect 337 0 384 0;
+#X connect 338 0 339 0;
+#X connect 339 0 384 0;
+#X connect 340 0 341 0;
+#X connect 341 0 384 0;
+#X connect 342 0 343 0;
+#X connect 343 0 384 0;
+#X connect 344 0 345 0;
+#X connect 345 0 384 0;
+#X connect 346 0 347 0;
+#X connect 347 0 384 0;
+#X connect 348 0 349 0;
+#X connect 349 0 384 0;
+#X connect 350 0 351 0;
+#X connect 351 0 384 0;
+#X connect 352 0 353 0;
+#X connect 353 0 384 0;
+#X connect 354 0 355 0;
+#X connect 355 0 384 0;
+#X connect 356 0 357 0;
+#X connect 357 0 384 0;
+#X connect 358 0 359 0;
+#X connect 359 0 384 0;
+#X connect 360 0 361 0;
+#X connect 361 0 384 0;
+#X connect 362 0 363 0;
+#X connect 363 0 384 0;
+#X connect 364 0 365 0;
+#X connect 365 0 384 0;
+#X connect 366 0 367 0;
+#X connect 367 0 384 0;
+#X connect 368 0 369 0;
+#X connect 369 0 384 0;
+#X connect 370 0 371 0;
+#X connect 371 0 384 0;
+#X connect 372 0 373 0;
+#X connect 373 0 384 0;
+#X connect 374 0 375 0;
+#X connect 375 0 384 0;
+#X connect 376 0 377 0;
+#X connect 377 0 384 0;
+#X connect 378 0 379 0;
+#X connect 379 0 384 0;
+#X connect 380 0 381 0;
+#X connect 381 0 384 0;
+#X connect 382 0 383 0;
+#X connect 383 0 384 0;
+#X restore 157 355 pd \$0receives;
+#X obj 726 -56 t a a;
+#X obj 648 46 r \$0playing;
+#X obj 10 -31 zexy/relay bang play stop;
+#X obj 768 -5 tof/param /quantization symbol beat;
+#X msg 768 20 quantization \$1;
+#X obj 419 431 outlet note;
+#X obj 575 429 outlet track;
+#X obj 751 339 spigot;
+#X obj 543 -158 route pattern quantization debug;
+#X connect 0 0 4 0;
+#X connect 2 0 48 0;
+#X connect 3 0 42 0;
+#X connect 4 0 51 0;
+#X connect 4 1 52 0;
+#X connect 5 0 53 0;
+#X connect 7 0 6 0;
+#X connect 7 1 0 0;
+#X connect 7 2 26 0;
+#X connect 9 0 8 0;
+#X connect 9 1 10 0;
+#X connect 11 0 34 0;
+#X connect 12 0 38 2;
+#X connect 14 1 16 0;
+#X connect 16 0 15 0;
+#X connect 16 0 21 0;
+#X connect 17 1 18 0;
+#X connect 18 0 15 0;
+#X connect 18 0 21 0;
+#X connect 19 0 41 0;
+#X connect 21 0 20 0;
+#X connect 22 0 23 0;
+#X connect 22 1 24 0;
+#X connect 23 0 48 0;
+#X connect 24 0 48 0;
+#X connect 26 0 25 0;
+#X connect 27 0 37 0;
+#X connect 29 0 28 0;
+#X connect 31 0 1 2;
+#X connect 33 0 32 0;
+#X connect 36 0 35 0;
+#X connect 37 0 33 0;
+#X connect 37 1 30 0;
+#X connect 38 0 7 0;
+#X connect 38 3 9 0;
+#X connect 39 0 49 0;
+#X connect 40 0 39 0;
+#X connect 41 0 22 0;
+#X connect 41 1 29 0;
+#X connect 46 0 40 0;
+#X connect 46 1 39 0;
+#X connect 47 0 38 0;
+#X connect 48 0 3 0;
+#X connect 48 1 14 0;
+#X connect 48 2 17 0;
+#X connect 48 3 54 0;
+#X connect 49 0 50 0;
+#X connect 50 0 38 0;
+#X connect 53 0 43 0;
+#X connect 54 0 13 0;
+#X connect 54 1 46 0;
+#X connect 54 2 53 1;
diff --git a/transpose-help.pd b/transpose-help.pd
new file mode 100644
index 0000000..2efba9e
--- /dev/null
+++ b/transpose-help.pd
@@ -0,0 +1,13 @@
+#N canvas 647 326 270 211 10;
+#X msg 32 65 0 4 7;
+#X text 72 64 Major chord;
+#X floatatom 153 66 5 0 0 0 - - -;
+#X text 25 16 Description: Transposes a chord;
+#X obj 32 94 mtl/transpose;
+#X text 25 34 tags: musical;
+#X obj 32 118 cyclone/prepend set;
+#X msg 32 143;
+#X connect 0 0 4 0;
+#X connect 2 0 4 1;
+#X connect 4 0 6 0;
+#X connect 6 0 7 0;
diff --git a/transpose.pd b/transpose.pd
new file mode 100644
index 0000000..0d1b218
--- /dev/null
+++ b/transpose.pd
@@ -0,0 +1,38 @@
+#N canvas 0 0 541 553 10;
+#X obj 93 115 inlet;
+#X obj 69 476 outlet;
+#X obj 321 247 +;
+#X obj 355 158 inlet;
+#X obj 137 201 list append;
+#X obj 140 250 ./listOp;
+#N canvas 1182 86 615 497 fmod 0;
+#X obj 62 46 inlet;
+#X obj 62 265 outlet;
+#X obj 120 46 inlet;
+#X obj 92 132 int;
+#X obj 62 106 t f f;
+#X obj 62 158 -;
+#X obj 62 185 moses 0;
+#X obj 62 213 + 1;
+#X obj 62 74 / 12;
+#X obj 61 240 * 12;
+#X connect 0 0 8 0;
+#X connect 2 0 8 1;
+#X connect 2 0 9 1;
+#X connect 3 0 5 1;
+#X connect 4 0 5 0;
+#X connect 4 1 3 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 6 1 9 0;
+#X connect 7 0 9 0;
+#X connect 8 0 4 0;
+#X connect 9 0 1 0;
+#X restore 321 282 pd fmod;
+#X connect 0 0 4 0;
+#X connect 2 0 6 0;
+#X connect 3 0 2 1;
+#X connect 4 0 5 0;
+#X connect 5 0 1 0;
+#X connect 5 1 2 0;
+#X connect 6 0 5 1;
diff --git a/valueChange-help.pd b/valueChange-help.pd
new file mode 100644
index 0000000..4a8f0da
--- /dev/null
+++ b/valueChange-help.pd
@@ -0,0 +1,36 @@
+#N canvas 365 67 557 348 10;
+#X text 27 -173 Description: Eliminates redundancy in a shared float
+value.;
+#X obj 181 96 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 387 87 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 25 -152 tags: routing;
+#X text 26 -106 Outlet 1:;
+#X text 81 -91 float: outputs the value if value changed locally.;
+#X text 85 -75 bang: outputs the current value.;
+#X obj 36 67 mtl/valueChange \$0local;
+#X obj 240 71 mtl/valueChange \$0local;
+#X obj 80 45 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 292 43 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 35 40 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 36 95 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 240 45 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 241 102 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 26 -125 Argument 1: The name of the shared float.;
+#X text 23 -50 Outlet 2: float outputs 1 if the value changed \, 0
+if not.;
+#X connect 7 0 12 0;
+#X connect 7 1 1 0;
+#X connect 8 0 14 0;
+#X connect 8 1 2 0;
+#X connect 9 0 7 0;
+#X connect 10 0 8 0;
+#X connect 11 0 7 0;
+#X connect 13 0 8 0;
diff --git a/valueChange.pd b/valueChange.pd
new file mode 100644
index 0000000..2e13065
--- /dev/null
+++ b/valueChange.pd
@@ -0,0 +1,34 @@
+#N canvas 2 89 450 300 10;
+#X obj 165 136 !=;
+#X obj 142 96 t f f b;
+#X obj 164 41 inlet;
+#X obj 71 64 route bang;
+#X obj 312 300 outlet changed;
+#X obj 44 292 outlet value;
+#X msg 129 184 0;
+#X obj 191 248 t f b f;
+#X obj 63 208 t f b;
+#X msg 98 233 0;
+#X msg 216 286 1;
+#X obj 207 127 value \$1;
+#X obj 45 127 value \$1;
+#X obj 128 158 zexy/demultiplex;
+#X connect 0 0 13 1;
+#X connect 1 0 13 0;
+#X connect 1 1 0 0;
+#X connect 1 2 11 0;
+#X connect 2 0 3 0;
+#X connect 3 0 12 0;
+#X connect 3 1 1 0;
+#X connect 6 0 4 0;
+#X connect 7 0 5 0;
+#X connect 7 1 10 0;
+#X connect 7 2 11 0;
+#X connect 8 0 5 0;
+#X connect 8 1 9 0;
+#X connect 9 0 4 0;
+#X connect 10 0 4 0;
+#X connect 11 0 0 1;
+#X connect 12 0 8 0;
+#X connect 13 0 6 0;
+#X connect 13 1 7 0;
diff --git a/vdirac~-help.pd b/vdirac~-help.pd
new file mode 100644
index 0000000..b93c27a
--- /dev/null
+++ b/vdirac~-help.pd
@@ -0,0 +1,33 @@
+#N canvas 496 264 483 362 10;
+#X text 286 252 Author: Roman Haefeli;
+#X text 286 269 Version: 2007-11-18;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0.scope 200 float 0;
+#X coords 0 1.1 199 -0.1 200 100 1;
+#X restore 274 92 graph;
+#X obj 14 185 tabwrite~ \$0.scope;
+#X obj 14 69 t b b;
+#X obj 14 48 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 58 97 del 0.2342;
+#X obj 73 121 del 2;
+#X text 36 45 <- draw;
+#X obj 17 235 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X text 38 236 <- listen;
+#X text 12 4 Description: sample accurate dirac impulse generator;
+#X obj 44 152 mtl/vdirac~;
+#X obj 17 262 mtl/vdirac~;
+#X obj 18 286 mtl/out~;
+#X text 16 19 tags: synthesize~;
+#X connect 4 0 3 0;
+#X connect 4 1 6 0;
+#X connect 4 1 7 0;
+#X connect 4 1 12 0;
+#X connect 5 0 4 0;
+#X connect 6 0 12 0;
+#X connect 7 0 12 0;
+#X connect 9 0 13 0;
+#X connect 12 0 3 0;
+#X connect 13 0 14 0;
+#X connect 13 0 14 1;
diff --git a/vdirac~.pd b/vdirac~.pd
new file mode 100644
index 0000000..e861489
--- /dev/null
+++ b/vdirac~.pd
@@ -0,0 +1,23 @@
+#N canvas 193 184 320 267 10;
+#X obj 20 151 vline~;
+#X obj 64 40 samplerate~;
+#X msg 64 63 1000 \$1;
+#X obj 64 85 /;
+#X msg 20 129 1 \, 0 0 \$1;
+#X obj 20 107 f;
+#X text 104 86 1000 / sr = sampleperiod (ms);
+#X obj 20 78 b;
+#X obj 64 16 loadbang;
+#X obj 20 17 inlet;
+#X obj 21 215 outlet~;
+#X text 130 180 Author: Roman Haefeli;
+#X text 130 197 Version: 2007-11-18;
+#X connect 0 0 10 0;
+#X connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 5 1;
+#X connect 4 0 0 0;
+#X connect 5 0 4 0;
+#X connect 7 0 5 0;
+#X connect 8 0 1 0;
+#X connect 9 0 7 0;
diff --git a/vocoder~-help.pd b/vocoder~-help.pd
new file mode 100644
index 0000000..c17d242
--- /dev/null
+++ b/vocoder~-help.pd
@@ -0,0 +1,16 @@
+#N canvas 555 390 469 337 10;
+#X text 15 4 Description: Miller's vocoder;
+#X obj 21 275 mtl/out~;
+#X obj 21 248 mtl/punch~;
+#X obj 89 200 adc~ 1;
+#X text 15 19 tags: fx~;
+#X obj 19 157 mtl/sawor~;
+#X obj 19 51 mtl/piano 1;
+#X obj 20 223 mtl/vocoder~;
+#X connect 2 0 1 0;
+#X connect 2 1 1 1;
+#X connect 3 0 7 1;
+#X connect 5 0 7 0;
+#X connect 6 0 5 0;
+#X connect 7 0 2 0;
+#X connect 7 1 2 1;
diff --git a/vocoder~.pd b/vocoder~.pd
new file mode 100644
index 0000000..ef38861
--- /dev/null
+++ b/vocoder~.pd
@@ -0,0 +1,154 @@
+#N canvas 0 57 1440 788 10;
+#X obj 33 21 inlet~;
+#X obj 31 231 outlet~;
+#X obj 82 209 outlet~;
+#X obj 95 22 inlet~;
+#N canvas 380 223 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 107 398 clip~;
+#X obj 87 184 tabreceive~ \$0-hann;
+#X obj 599 53 loadbang;
+#X obj 148 346 r squelch;
+#X obj 147 369 expr 0.01*$f1*$f1;
+#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 104 584 outlet~;
+#X msg 599 76 \; window-size 1024 \; squelch 30 \;;
+#X obj 597 28 switch~ 1024 4;
+#X obj 461 53 loadbang;
+#X msg 469 86 1;
+#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 29 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 8 0 43 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 22 0;
+#X connect 16 0 23 0;
+#X connect 17 0 16 0;
+#X connect 18 0 5 1;
+#X connect 19 0 44 0;
+#X connect 20 0 21 0;
+#X connect 21 0 17 2;
+#X connect 22 0 28 0;
+#X connect 23 0 0 1;
+#X connect 23 0 1 1;
+#X connect 24 0 8 1;
+#X connect 25 0 10 0;
+#X connect 26 0 25 0;
+#X connect 27 0 25 1;
+#X connect 28 0 17 0;
+#X connect 29 0 16 1;
+#X connect 46 0 47 0;
+#X connect 47 0 45 0;
+#X restore 52 109 pd fft-analysis;
+#N canvas 1 142 565 454 hann-window 0;
+#N canvas 0 0 450 300 (subpatch) 0;
+#X array \$0-hann 1024 float 0;
+#X coords 0 1 1023 0 300 100 1;
+#X restore 82 311 graph;
+#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 37 88 r window-size;
+#X obj 38 173 /;
+#X obj 127 142 samplerate~;
+#X obj 38 251 s window-sec;
+#X obj 177 204 swap;
+#X obj 177 228 /;
+#X obj 177 252 s window-hz;
+#X obj 49 201 * 1000;
+#X obj 49 228 s window-msec;
+#X obj 38 115 t f b f;
+#X msg 173 92 resize \$1;
+#X obj 173 116 s \$0-hann;
+#X obj 330 105 r window-hz;
+#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 connect 1 0 2 0;
+#X connect 2 0 3 0;
+#X connect 3 0 4 0;
+#X connect 5 0 14 0;
+#X connect 6 0 8 0;
+#X connect 6 0 12 0;
+#X connect 7 0 6 1;
+#X connect 7 0 9 1;
+#X connect 9 0 10 0;
+#X connect 9 1 10 1;
+#X connect 10 0 11 0;
+#X connect 12 0 13 0;
+#X connect 14 0 6 0;
+#X connect 14 0 9 0;
+#X connect 14 1 7 0;
+#X connect 14 2 15 0;
+#X connect 15 0 16 0;
+#X connect 17 0 19 0;
+#X connect 18 0 1 1;
+#X connect 19 0 1 0;
+#X connect 19 1 4 0;
+#X connect 19 1 18 0;
+#X restore 171 106 pd hann-window;
+#X connect 0 0 4 0;
+#X connect 3 0 4 1;
+#X connect 4 0 1 0;
+#X connect 4 1 2 0;
diff --git a/vu~-help.pd b/vu~-help.pd
new file mode 100644
index 0000000..f3ec27b
--- /dev/null
+++ b/vu~-help.pd
@@ -0,0 +1,19 @@
+#N canvas 281 278 379 181 10;
+#X obj 276 78 loadbang;
+#X msg 276 105 \; pd dsp 1;
+#X obj 30 91 *~;
+#X obj 31 66 osc~ 90;
+#X obj 55 90 osc~ 0.1;
+#X obj 158 90 *~;
+#X obj 159 65 osc~ 70;
+#X obj 184 90 osc~ 0.06;
+#X obj 31 118 mtl/vu~;
+#X text 25 24 tags: info~;
+#X text 24 9 Description: Displays a minimal VU meter.;
+#X connect 0 0 1 0;
+#X connect 2 0 8 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 1;
+#X connect 5 0 8 1;
+#X connect 6 0 5 0;
+#X connect 7 0 5 1;
diff --git a/vu~.pd b/vu~.pd
new file mode 100644
index 0000000..58aede5
--- /dev/null
+++ b/vu~.pd
@@ -0,0 +1,110 @@
+#N canvas 583 163 719 520 10;
+#X obj 98 151 inlet~;
+#N canvas 634 341 730 549 size&color 0;
+#X obj 90 14 inlet;
+#X obj 39 469 s \$0left;
+#X obj 113 58 t f f;
+#X msg 157 213 0;
+#X msg 213 230 1;
+#X obj 195 285 sel 0 1 2;
+#X obj 193 257 change -1;
+#X msg 264 235 2;
+#X obj 98 34 clip 0 1;
+#X obj 162 187 moses 0.5;
+#X obj 213 208 moses 0.9;
+#X obj 72 84 * 131;
+#X obj 50 123 clip 6 131;
+#X msg 45 158 vis_size \$1 7;
+#X text 345 388 13;
+#X text 250 406 14;
+#X text 113 376 16;
+#X msg 301 355 color 11 -1;
+#X msg 99 347 color 10 -1;
+#X msg 209 350 color 1 -1;
+#X connect 0 0 8 0;
+#X connect 2 0 11 0;
+#X connect 2 1 9 0;
+#X connect 3 0 6 0;
+#X connect 4 0 6 0;
+#X connect 5 0 18 0;
+#X connect 5 1 19 0;
+#X connect 5 2 17 0;
+#X connect 6 0 5 0;
+#X connect 7 0 6 0;
+#X connect 8 0 2 0;
+#X connect 9 0 3 0;
+#X connect 9 1 10 0;
+#X connect 10 0 4 0;
+#X connect 10 1 7 0;
+#X connect 11 0 12 0;
+#X connect 12 0 13 0;
+#X connect 13 0 1 0;
+#X connect 17 0 1 0;
+#X connect 18 0 1 0;
+#X connect 19 0 1 0;
+#X restore 129 326 pd size&color;
+#X obj 129 274 snapshot~;
+#X obj 522 145 loadbang;
+#X obj 98 387 outlet~;
+#X obj 237 150 inlet~;
+#X obj 236 389 outlet~;
+#X obj 280 282 snapshot~;
+#N canvas 51 327 730 549 size&color 0;
+#X obj 90 14 inlet;
+#X obj 113 58 t f f;
+#X msg 157 213 0;
+#X msg 213 230 1;
+#X obj 195 285 sel 0 1 2;
+#X obj 193 257 change -1;
+#X msg 264 235 2;
+#X obj 98 34 clip 0 1;
+#X obj 162 187 moses 0.5;
+#X obj 213 208 moses 0.9;
+#X obj 72 84 * 131;
+#X obj 50 123 clip 6 131;
+#X obj 26 371 s \$0right;
+#X msg 45 158 vis_size \$1 7;
+#X msg 289 320 color 11 -1;
+#X msg 84 312 color 10 -1;
+#X msg 192 315 color 1 -1;
+#X connect 0 0 7 0;
+#X connect 1 0 10 0;
+#X connect 1 1 8 0;
+#X connect 2 0 5 0;
+#X connect 3 0 5 0;
+#X connect 4 0 15 0;
+#X connect 4 1 16 0;
+#X connect 4 2 14 0;
+#X connect 5 0 4 0;
+#X connect 6 0 5 0;
+#X connect 7 0 1 0;
+#X connect 8 0 2 0;
+#X connect 8 1 9 0;
+#X connect 9 0 3 0;
+#X connect 9 1 6 0;
+#X connect 10 0 11 0;
+#X connect 11 0 13 0;
+#X connect 13 0 12 0;
+#X connect 14 0 12 0;
+#X connect 15 0 12 0;
+#X connect 16 0 12 0;
+#X restore 292 337 pd size&color;
+#X obj 101 109 cnv 5 129 7 empty \$0right empty 2 8 0 10 -128992 -1
+0;
+#X obj 101 101 cnv 5 129 7 empty \$0left vu~ 2 8 0 10 -128992 -1 0
+;
+#X obj 128 216 iemlib/peakenv~ 1000;
+#X obj 271 207 iemlib/peakenv~ 1000;
+#X obj 519 179 metro 100;
+#X connect 0 0 4 0;
+#X connect 0 0 11 0;
+#X connect 2 0 1 0;
+#X connect 3 0 13 0;
+#X connect 5 0 6 0;
+#X connect 5 0 12 0;
+#X connect 7 0 8 0;
+#X connect 11 0 2 0;
+#X connect 12 0 7 0;
+#X connect 13 0 2 0;
+#X connect 13 0 7 0;
+#X coords 0 -1 1 1 133 17 2 100 100;
diff --git a/wind~-help.pd b/wind~-help.pd
new file mode 100644
index 0000000..8a124fc
--- /dev/null
+++ b/wind~-help.pd
@@ -0,0 +1,14 @@
+#N canvas 218 423 288 260 10;
+#X floatatom 40 115 5 0 0 0 - - -;
+#X obj 43 84 hsl 128 15 0 127 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X text 13 19 Comment: Taken from Andy Farnell's work.;
+#X text 14 4 Description: Generates a wind sound.;
+#X text 178 84 (0-127);
+#X obj 40 144 mtl/wind~;
+#X obj 39 182 mtl/out~;
+#X text 14 37 tags: synthesize~;
+#X connect 0 0 5 0;
+#X connect 1 0 0 0;
+#X connect 5 0 6 0;
+#X connect 5 0 6 1;
diff --git a/wind~.pd b/wind~.pd
new file mode 100644
index 0000000..6e9a29f
--- /dev/null
+++ b/wind~.pd
@@ -0,0 +1,74 @@
+#N canvas 0 0 719 522 10;
+#X obj 62 313 vcf~ 600 23;
+#X obj 161 314 vcf~ 600 23;
+#X obj 62 377 *~;
+#X obj 26 189 lop~ 1;
+#X obj 97 175 lop~ 0.1;
+#X obj 198 174 lop~ 0.19;
+#X obj 98 281 +~;
+#X obj 197 12 osc~ 0.03;
+#X obj 198 284 +~;
+#X obj 244 37 +~;
+#X obj 270 11 osc~ 0.3;
+#X obj 83 405 bp~ 1000 7;
+#X obj 63 473 outlet~;
+#X msg 233 290 20;
+#X obj 23 215 *~;
+#X text 339 1 control;
+#X obj 97 98 *~;
+#X obj 97 57 noise~;
+#X obj 256 311 loadbang;
+#X obj 61 346 *~ 0.15;
+#X msg 134 291 14;
+#X obj 244 83 *~ 300;
+#X obj 197 227 *~ 180000;
+#X obj 98 198 *~ 100000;
+#X obj 245 59 *~ 0.25;
+#X obj 23 241 *~ 1000;
+#X obj 23 269 +~ 0.65;
+#X obj 243 105 +~ 100;
+#X obj 197 252 clip~ 300 1000;
+#X obj 98 222 clip~ 250 1000;
+#X obj 59 433 *~ 44;
+#X obj 336 64 clip~ 0 1;
+#X obj 340 16 inlet~;
+#X obj 407 130 /~ 127;
+#X connect 0 0 19 0;
+#X connect 1 0 19 0;
+#X connect 2 0 11 0;
+#X connect 3 0 14 0;
+#X connect 3 0 14 1;
+#X connect 4 0 23 0;
+#X connect 5 0 22 0;
+#X connect 6 0 0 1;
+#X connect 7 0 9 0;
+#X connect 8 0 1 1;
+#X connect 9 0 24 0;
+#X connect 10 0 9 1;
+#X connect 11 0 30 0;
+#X connect 13 0 1 2;
+#X connect 14 0 25 0;
+#X connect 16 0 0 0;
+#X connect 16 0 1 0;
+#X connect 16 0 3 0;
+#X connect 16 0 4 0;
+#X connect 16 0 5 0;
+#X connect 17 0 16 0;
+#X connect 18 0 13 0;
+#X connect 18 0 20 0;
+#X connect 19 0 2 0;
+#X connect 20 0 0 2;
+#X connect 21 0 27 0;
+#X connect 22 0 28 0;
+#X connect 23 0 29 0;
+#X connect 24 0 21 0;
+#X connect 25 0 26 0;
+#X connect 26 0 2 1;
+#X connect 27 0 6 1;
+#X connect 27 0 8 1;
+#X connect 28 0 8 0;
+#X connect 29 0 6 0;
+#X connect 30 0 12 0;
+#X connect 31 0 16 1;
+#X connect 32 0 33 0;
+#X connect 33 0 31 0;